DS2-proseduuri / ohjelmointisyntaksi. Tapio Kalmi Team Leader, Data Management Consulting SAS Institute Oy



Samankaltaiset tiedostot
Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Makrojen mystinen maailma lyhyt oppimäärä

Aureolis Oy Itsemääritellyt funktiot SAS ohjelmoinnissa

Uutta Remote Support Platform 3.1 -versiossa

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

SAS sovellusten hallinnointi helpoksi Turbo Charge -menetelmällä Tapio Kalmi, SAS Institute Oy

Täysautomatisoitu raportointiympäristö. Joni-Petteri Paavilainen Jani Alatalo

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

DI Studion käyttökokemuksia. Kaisu Ikonen, Tilastokeskus

HELIA 1 (14) Outi Virkki Tiedonhallinta

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

RDBMS - Yhteyskäytännöt

DATA-vaiheen ohjelmoijan yleissivistys helposti unohtuvia asioita

Dynaamista ja joustavaa ohjelmointia - maukasta makrokielellä

TERADATAN JA SAS DI STUDION YHTEISELO CASE LÄHITAPIOLA

Ohjelmoinnin peruskurssien laaja oppimäärä

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Olio-ohjelmointi Javalla

Ohjelmoinnin peruskurssien laaja oppimäärä

LINUX-HARJOITUS, MYSQL

SQL - STRUCTURED QUERY LANGUAGE

Maiju Mykkänen Susanna Sällinen

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

XML -muotoisen raportin luonti

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

Aditro Tikon ostolaskujen käsittely versio 6.2.0

11/20: Konepelti auki

Ohjelmointiharjoituksia Arduino-ympäristössä

Mathematica Sekalaista asiaa

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Uutta Remote Support Platform 3.0 -versiossa

Ruokahalu kasvaa syödessä lisää makrokielen herkkuja

Web Services tietokantaohjelmoinnin perusteet

Zeon PDF Driver Trial

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Sovellusarkkitehtuurit

EXEC SQL BEGIN DECLARE SECTION

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

CUDA. Moniydinohjelmointi Mikko Honkonen

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Automaster tai MBS. 2. ODBC - ajurin asennus (jos ei ole jo asennettu)

Ohjelmoinnin peruskurssien laaja oppimäärä

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

TIETOKANNAT JOHDANTO

SAS ja Sharepoint. Yhteiselon ihanuus ja kurjuus

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Kielioppia: toisin kuin Javassa

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

Taustaa. CGI-ohjelmointi

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

Ohjelmoinnin peruskurssien laaja oppimäärä

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Kääntäjän virheilmoituksia

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Mammutti vai elefantti?

Pikaohje formaatin valmistamiseen

Aditro Tikon ostolaskujen käsittely versio SP1

Ohjeita Siemens Step7, Omron CX Programmer käyttöön

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

3. Taulujen määrittely ja muuttaminen

TIE Principles of Programming Languages. Seminaariesityksen essee. Ryhmä 18: Heidi Vulli, Joni Heikkilä

Selvitysraportti. MySQL serverin asennus Windows ympäristöön

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Automatisoitu sähköpostin vastaanotto Linux ympäristössä. SUGIF SAS Technical Club Tapio Kalmi, SAS Institute

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Ohjelmoinnin peruskurssien laaja oppimäärä

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Java-kielen perusteet

Tikon Ostolaskujenkäsittely versio SP1

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Action Request System

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Rajapinta (interface)

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Visma Software Oy

Transkriptio:

DS2-proseduuri / ohjelmointisyntaksi Tapio Kalmi Team Leader, Data Management Consulting SAS Institute Oy

Sisältö DS2 konsepti DS2, HPDS2 ja FedSQL proseduurit Yleistä DS2 ja FedSQL kielistä DS2 kielen pääkohdat Yhteenveto Linkkejä tietolähteisiin

DS2 konsepti Uusi SAS teknologia ja ohjelmointikieli tiedonhallintaan Osa Base SAS asennusta, joten kaikkien käytettävissä Toimii Base SASin alustalla ja sen ulkopuolella Käyttää Base SASissa LIBNAME yhteyksiä eri tietokantoihin Jos kanta muu kuin SAS, tarvitaan kannan SAS/ACCESS, jotta toimisi Tukee säikeistettyjen SAS palvelujen ajamista niitä tukevilla alustoilla Erilaisilla SAS palvelimilla ja työasemilla Tietokantapalvelimilla

DS2 ajoympäristöt Base SAS palvelimet ja työasemat (PROC DS2 ja PROC FEDSQL) SAS Enterprise Miner ympäristö SAS Federation palvelin SAS High Performance Grid ympäristö SAS High Performance Analytics ympäristö (PROC HPDS2) SAS In Memory Analytics ympäristöt Tietokantapalvelimet, joissa SAS Code Accelerator on asennettuna Greenplum Teradata

BASE SAS teknologia SAS 6: MVA Multi Vendor Architecture (MVA) teknologia mahdollistaa sen, että samaa SAS ohjelmaa voidaan ajaa sellaisenaan eri ympäristöissä. SAS ajo ajetaan lähes aina palvelimella tai työasemalla, jossa SAS asennus. Poikkeus on ollut SAS/Access tuotteilla mahdollinen SQL Pass Through, jolla on voitu lähettää SAS sovelluksen ohjelmakoodia tietokantapalvelimelle ajoon. Application Layer (Proc Layer) Portable Supervisor Code (X Layer) Host Supervisor Code (W Layer)

BASE SAS + DS2 teknologia SAS 9.4: MVA + TKTS Threaded Kernel (TK) Threaded Kernel Table Services (TKTS) Embedded Process (EP) Uutuutena DS2, joka on Base SASin rinnalle tehty ympäristö. DS2 käynnistää oman prosessin (tai prosesseja, jos säikeistetty ajo). Base SASissa laajennuksia, joilla se liitetään DS2een. SAS Code Accelerator asennus sisältää TKTS:n tietokantapalvelimella tarvittavat osat. Application Layer (Proc Layer) Portable Supervisor Code (X Layer) Host Supervisor Code (W Layer) Threaded Kernel

SAS DS2 konsepti MVA (character, double, missing) TKTS (char, nchar, double, int, varchar, missing, null, etc) BASE PROCs DATA STEP MVA Engine APIs SPDS BASD SPD ACCESS DRIVERS ODS OUTPUT PROC FEDSQL PROC DS2 FEDSQL DS2 MVA TASKS TK THREADS

DS2 rajapinnat tietokantoihin DS2 ajurit on saatavissa kaikille alla mainituille ja TKTS tuki vain lihavoiduille Aster DB2 (vain UNIX ja PC ympäristöt) Greenplum MySQL Netezza ODBC yhteensopivat kannat Oracle SAP SAS SAS SPD Engine Sybase IQ Teradata Huomaa: DS2 ei tue SAS SPD Server taulujen käyttöä ilman SPD Engine osaa.

DS2, HPDS2 ja FEDSQL proseduurit Base SAS kutsuu TKTS ympäristön DS2 ja FedSQL ohjelmia niitä vastaavilla DS2, HPDS2 ja FEDSQL proseduureilla Ohjelmalogiikka kirjoitetaan DS2 ja FedSQL määrityksin ja komennoin PROC DS2 <option(s)>;...ds2 language statements RUN; RUN CANCEL; QUIT; PROC FEDSQL <option(s)>;...fedsql statements QUIT;

Yleistä DS2 ohjelmointikielestä Täydentää SAS DATA vaihetta, mutta ei korvaa sitä Olio ohjelmoinnin rakenteita, mutta ei kaikkia varsinaisen olioohjelmoinnin ominaisuuksia kuten esimerkiksi periytyvyys Sisältää Uusia tietomuotoja, kuten ANSI SQL tietomuodot Uusia ohjelmointirakenteita Valmiita metodeja Mahdollisuuden upottaa FEDSQL ohjelmakoodia DS2 koodin sisään Lisäksi voidaan tehdä käyttäjän määrittelemiä metodeja ja paketteja

Yleistä FedSQL ohjelmointikielestä ANSI SQL:1999 standardin mukainen Yhteinen SQL syntaksi riippumatta tietokannasta Mukana ANSI SQL tietomuodot (INT, FLOAT, DECIMAL, ) Tukee säikeistystä Voidaan käyttää DS2:n kautta tai suoraan

DS2 vs DATA vaihe, eroavuuksia Taulua ei oletusarvoisesti kirjoiteta uudelleen Kaikki uudet muuttujat tulee määritellä PUT komennon sarake ja rivi parametrit eivät ole käytettävissä Lainausmerkkien käyttö erilaista määrittää muuttujan nimen määrittää literaalin %TSLIT() funktio makromuuttujaviittauksia varten ABORT, DISPLAY, ENDSAS, ERROR, FILE, INFILE, INPUT, MERGE, MODIFY, UPDATE ja monta muuta komentoa/funktiota puuttuu Formaattivalikoima on omansa

DS2, uusia komentoja IF lauseke sijoituslauseessa x = if y<>0 then x/y else.; Tämä ei anna ERRORia, kuten x=ifn(y,x/y,.); DATA vaiheessa SELECT lauseke sijoituslauseessa samaan tyyliin kuin IF Esimerkkejä uusista funktioista INTDT lisää päiviä DATE arvoon tai vähentää niitä INTTS lisää sekunteja TIMESTAMP arvoon tai vähentää niitä NULL tarkistaa, onko kentän arvo NULL POWER korottaa luvun haluttuun potenssiin SQLEXEC suorittaa FedSQL komentoja DS2 ohjelmassa

DS2 ohjelmalohkot ohjelmalohkojen alku ja loppukomennot DATA...ENDDATA PACKAGE...ENDPACKAGE THREAD...ENDTHREAD DO...END METHOD...END Ohjelmalohkoja voi olla sisäkkäin ja peräkkäin DATA ohjelmalohkoja voi olla vain yksi ja sen on oltava viimeisenä Sen sisällä on aina metodeja ja tarvittaessa myös DO rakenteita

DS2 metodit Metodi on ohjelmalohko, jota voidaan kutsua nimellä METHOD komento antaa metodille nimen ja aloittaa ohjelmalohkon END komento päättää ohjelmalohkon Metodin nimi on globaali Metodin muuttujat voivat olla globaaleja tai paikallisia Systeemimetodit (INIT, RUN, SETPARMS ja TERM) sekä joukko valmiiksi tehtyjä metodeja tulevat asennuksen mukana Lisäksi käyttäjä voi määritellä omia metodeja ja tallettaa niitä paketteihin

DS2 muuttujien määritykset ja scope Muuttujat tulee aina alustaa DECLARE (DCL) komennolla Ohjelmalohkojen ulkopuolella määritellyt muuttujat ovat globaaleja Ohjelmalohkoissa voidaan määritellä lokaaleja muuttujia THIS.muuttujanimi viittauksella viitataan globaaliin muuttujanimeen Muuten muuttujaa etsitään eri ohjelmalohkoista viittauksen tehneestä ohjelmalohkosta alkaen uloimpaa ohjelmalohkoa kohti ja käytetään sitä määritystä, joka ensimmäisenä löytyy Jos muuttujalle ei löydy määritystä, luodaan uusi local DOUBLE muuttuja Vain DATA ohjelmalohkossa määritellyt muuttujat menevät output tauluun

Esimerkki 1 Alustuskomennot Muuttujien alustaminen DECLARE ja RETAIN komennoin INIT, RUN ja TERM metodit Systeemimetodit, jotka ovat aina olemassa ja helposti käytettävissä SET komento INIT metodissa Suoritetaan vain kerran, ei automaattista loop rakennetta SET komento RUN metodissa Suoritetaan kuten DATA vaiheessa, automaattinen loop rakenne SET komennoissa esimerkki FedSQL koodista upotettuna DS2 koodiin

proc ds2; data AllHouses (overwrite=yes drop=(stylemax MaxSize)) StyleMax (overwrite=yes keep=(stylemax)) td.biggesthouse (overwrite=yes keep=(maxsize)); declare doublesizedif StyleMax MaxSize; retain StyleMaxMaxSize 0; method init(); set {select mean(sqfeet) as avgsize from INIT metodi suoritetaan vain yhden kerran ohjelman alussa. h.houses {option locktable=share}}; end; Sinisellä korostettuna FEDSQL ohjelmointikielinen osuus.

method run(); set {select *from h.houses {option locktable=share} order by style}; by style; StyleMax =max(stylemax, sqfeet); SizeDif=sqfeet avgsize; output allhouses; Jos SET komento puuttuu, if last.style then do; RUN metodi suoritetaan vain yhden kerran. output stylemax; Jos SET komento mukana, MaxSize=max(MaxSize,StyleMax); suoritetaan kerran per rivi. StyleMax =0; end; Sinisellä korostettuna FEDSQL ohjelmointikielinen osuus. end;

method term(); output td.biggesthouse; end; enddata; run; quit; TERM metodi suoritetaan vain yhden kerran ohjelman lopussa.

Valmiiksi tehdyt DS2 metodit FCMP PROC FCMP:llä määriteltyjen funktioiden käyttö HASH ja HASH Iterator HASH toiminnallisuus kuten DATA vaiheessa, mutta eri syntaksi LOGGER Rajapinta SAS Logging palveluihin MATRIX DS2:n sisään rakennettu matriisilaskenta (kevyempi kuin IML) SQLSTMT Tietokantataulujen luontiin, ylläpitoon ja poistamiseen

PACKAGE ohjelmalohko Muuttujamääritysten ja metodien tallettaminen DS2 paketiksi Logiikka talletetaan kryptattuna tauluun Talletettuihin paketteihin voidaan viitata DS2 ja FedSQL ohjelmissa Taulut voivat olla missä tahansa kirjastossa/tietokannassa

Esimerkki 2: Oma metodi ja paketti package zoo.animal / overwrite=yes; declare varchar(100) s; method animal(varchar(100) s); this.s = s; end; method speak(); put s; end; endpackage; run;

data _null_; method init(); declare package zoo.animal a1; declare package zoo.animal a2( lion'); a1 = a2; a1.speak(); a2.speak(); a1 = _new_ zoo.animal( giraffe'); a1.speak(); a2.speak(); end; enddata; run;

Method Overload Tarkoittaa tilannetta, jossa kaksi tai useampi metodi ovat saman nimisiä, mutta joilla on erilaiset kutsuparametrit Näissä tilanteissa DS2 käyttää sitä metodia, jonka parametrit vastaavat kutsuparametreja Tämä tekniikka mahdollistaa sen, että saman nimistä metodia voidaan kutsua kutsuparametrina käytetyn sarakkeen tietomuodosta riippumatta Metodit hoitavat tarvittavan logiikan taustalla Kutsuvan ohjelman tekeminen helpottuu

DS2 säikeistys Koodaus tehty ohjelmoijalle hyvin helpoksi Säikeistettävä ohjelmalogiikka kirjoitetaan THREAD ohjelmalohkoon Ohjelma koodataan aivan samalla tavalla kuin muut DS2 ohjelmat DATA ohjelmalohkosta kutsutaan THREAD ohjelmalohkoa ja kerrotaan käytettävien säikeitten määrä Olennaisinta on käyttää säikeistystä oikein eli vain niissä tapauksissa, joissa saadaan oikea lopputulos myös säikeistetyllä ajolla Rivikohtaisen käsittelyn tulee olla toisista riveistä riippumatonta Tarvittaessa yhdistely tehdään pääohjelmassa, joka kutsui säikeitä

DS2 In-Database Lisenssoituna tulee olla Base SAS SAS In Database Code Accelerator SAS Access Interface tietokannalle (Greenplum tai Teradata) SAS Embedded Process tulee olla asennettuna tietokantaan Ohjelmassa tulee olla THREAD ohjelmalohko ja DATA ohjelmalohko Käytetyn taulun tulee sijaita ko tietokannassa

Esimerkki 3: Säikeistys In-Database thread th_pgm / overwrite=yes; retain isum irows 0; keep isum irows; method run(); set teralib.indata; irows=irows+1; isum=isum+i; end; method term(); output; end; endthread; run;

Esimerkki 3: Säikeistys In-Database data out(overwrite=yes); retain fsum 0; retain nrows 0; keep fsum nrows; dcl thread th_pgm m; method run(); set from m threads=1; fsum =fsum + isum; nrows = nrows + irows; end; method term(); output; end; THREADS= parametrilla ei ole merkitystä In Database enddata; tapauksessa, koska tietokanta run; jakaa ajon säikeisiin omalla logiikallaan. Sen vuoksi tässä voi olla arvona vaikka 1 ja silti ajo toimii säikeistettynä. THREADS parametrin voi tässä tapauksessa vaikka jättää kokonaan pois.

Milloin DS2 koodaus kannattaa? DATA vaiheen ohjelmia kannattaa muuttaa DS2 ohjelmiksi vain silloin kun siitä on todellista hyötyä. Esimerkiksi: Jos laskennan tarkkuus edellyttää uusien tietomuotojen käyttöä Jos tarvitaan SAS FedSQL ohjelmalogiikkaa Jos tarvitaan matriisilaskennan ja DATA vaiheen yhdistämistä Jos optimiratkaisu vaatii säikeistettyä moniajoa (Threaded Kernel, TK) tietokantapalvelimella, High Performance Analytics palvelimella tai SAS Federation palvelimella Jos tarvitaan uusia komentoja, metodeja, paketointia tai integraatio muihin ympäristöihin (SAS ympäristöt,teragram,r, C/C++, IML)

Miten DATA vaiheesta DS2? Muutamien SAS ratkaisujen scoring lähdekoodien muuntamista varten on tehty PROC DSTRANS, mutta se Muuntaa vain osan DATA vaiheen komennoista Käsittelee vain yhden ohjelmakoodin kerrallaan Tekee hyvin vain alkuperäisen tehtävänsä, ei muuta muuntaa vain varsin yksinkertaiset DATA vaiheen ohjelmat onnistuneesti Näin ollen on suositeltavaa tehdä muunnos manuaalisesti koodaamalla

DS2 yhteenveto Mitä? Uusi DATA vaiheen kaltainen ohjelmointikieli, joka tukee säikeistystä Miksi? Voidaan ajaa SAS logiikkaa uusissa paikoissa Uudet tietotyypit antavat lisämahdollisuuksia Optimointia moderneilla ohjelmointitekniikoilla Kenelle? Kokeilumielessä SAS 9.3 käyttäjille, täysi tuki SAS 9.4:n mukana Milloin? Heti, kun tarvitaan uusia ominaisuuksia. Koodaaminen on työläämpää kuin Base SAS ympäristössä, mutta ajot voivat nopeutua kertaluokkaa.

DS2 ja FedSQL dokumentaatio Base SAS 9.4 Procedures Guide http://support.sas.com/documentation/cdl/en/proc/64787/pdf/default/p roc.pdf SAS 9.4 DS2 Language Reference http://support.sas.com/documentation/cdl/en/ds2ref/66009/pdf/default /ds2ref.pdf SAS 9.4 FedSQL Language Reference http://support.sas.com/documentation/cdl/en/fedsqlref/66010/pdf/defa ult/fedsqlref.pdf

DS2 lisäinformaatiota SAS Aamutori 18.10 klo 8:30 10:30, Innopoli 2, Tekniikantie 14, Espoo Data Step 2, DS2 lisätarkkuutta laskentaan, uusia tietomuotoja ja paljon muuta sas.com sivuston päivitykset www.support.sas.com The SAS Training Post ohjelmointivinkit http://blogs.sas.com/content/sastraining/

KIITOS, KYSYMYKSIÄ?