DL/I datan kopiointi DB2 -alustalle



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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

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

Makrojen mystinen maailma lyhyt oppimäärä

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

Testidatan generointi

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

SELECT-lauseen perusmuoto

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

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

CSE-A1200 Tietokannat

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

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

Olio-ohjelmointi Javalla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

RADAR - RANDOM DATA GENERATOR

Tietokantakurssit / TKTL

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Relaatiomalli ja -tietokanta

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Tietueet. Tietueiden määrittely

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

2. Käsiteanalyysi ja relaatiomalli

Ruokahalu kasvaa syödessä lisää makrokielen herkkuja

ETL-DEMO. Esimerkki ETL-kuvauskielen käyttöstä

Virta_Latausraportti - Tarkistukset

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

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

HELIA 1 (12) Outi Virkki Tiedonhallinta

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

TIETOKANNAT JOHDANTO

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Tietokannat II -kurssin harjoitustyö

Ohjelmoinnin perusteet Y Python

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

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

Tietokantojen suunnittelu, relaatiokantojen perusteita

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

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

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

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

12. Javan toistorakenteet 12.1

Lisätään avainarvo 6, joka mahtuu lehtitasolle:

Jakso 4 Aliohjelmien toteutus

Opiskeluoikeuksien maaran tiedonkeruu

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

SQL - STRUCTURED QUERY LANGUAGE

MrSmart 8-kanavainen lämpötilamittaus ja loggaus, digitoija ja talletusohjelma

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

Sisältö. 2. Taulukot. Yleistä. Yleistä

Plagioinnin tunnistaminen lähdekielisistä ohjelmista

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Ohjelmoinnin perusteet Y Python

Asiakirjojen vertailu-kurssi

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

T Testiraportti TR-3. ETL-työkalu

Basware Supplier Portal

Ohjelmoinnin perusteet Y Python

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä

Esimerkki: Laskin (alkua) TIEA341 Funktio ohjelmointi 1 Syksy 2005

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO

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

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

Luento 4 Aliohjelmien toteutus

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Kyselyn yleisrakenne:

Tietotyypit ja operaattorit

Luento 2: Tiedostot ja tiedon varastointi

Dynaamista ja joustavaa ohjelmointia - maukasta makrokielellä

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Luento 5. Timo Savola. 28. huhtikuuta 2006

Transkriptio:

DL/I datan kopiointi DB2 -alustalle DB2 ytr 9.12.2005 Matti Ståhl presentation TietoEnator 2003 Page 1

MaStå Oy Tietokonepalvelu Ab:n, Octel Oy:n ja Ilmarisen kautta ulkoistunut Tietoilmariseen 1.1.2005 uraputki avautui 16.11.1970 Sovelluskehitystä, Systeemiohjelmointia ja Tietokantojen hoitoa Vahvimmat osaamisalueet DB2, IMS/DB (=DL/I) ja IMS/DC Yhteystiedot puh 010 416 4376 tai 050 367 6143 E-mail matti.stahl@tietoenator.com Jo Octelin kahvipöytäkeskusteluissa visioimme sitä, kuinka helppoa olisi viedä DL/I-dataa DB2-alustalle Ilmarisessa sain tilaisuuden tehdä se eräässä konversioprojektissa ja sen jälkeen kysyntää on ollut presentation TietoEnator 2003 Page 2

DL/I (nostalgiaa, nykypäivää vai NEVER HEARD) Historia alkaa -70 luvulta Tuki ei ole loppumassa HALDB julkistus viimeisin suuri kehitysaskel Tietomallina joukko toisilleen hierarkkisesti alistettuja segmenttejä muodostaa tietokantatietueen (mallissa looginen ja kannassa fyysinen) tietueen ydin on juurisegmentti isä lapsi riippuvuus saman isän alla samalla tasolla olevat segmenttityypit ovat sisaruksia saman isän alla olevan segmenttityypin eri ilmentymät ovat kaksosia presentation TietoEnator 2003 Page 3

DL/I kannan DBD:n määrittelemä rakenne Juuri A B E F J C D G I H presentation TietoEnator 2003 Page 4

DL/I kannan fyysinen tietokantatietue Juuri A B F J DD D GG H H presentation TietoEnator 2003 Page 5

Fyysisen DL/I hierarkian muunnelmat Voidaan muodostaa loogisia rakenteita määrittelemällä loogisia suhteita segmenttien välille segmentit voivat olla useammassa fyysisessä kannassa, jolloin nämä kannat yhdistyvät yhdeksi loogiseksi kannaksi jotta tällaiset rakenteet ovat mahdollisia, fyysisiin kantoihin tarvitaan toisiohakemistoja lisää pointtereita Muunnelmilla hyvin vähän analogiaa DB2:n view:n kanssa Ohjelmakohtainen näkemys kannasta / kannoista määritellään PSB - lohkolla presentation TietoEnator 2003 Page 6

Alustojen vertailua DL/I segmenttityyppi segmentti segmenttien kytkentä pointtereilla (=suhteellinen osoite VSAM -tiedoston sisällä) sekä fyysiset että loogiset yhteydet (= saantipolut ) päätetään kantaa implementoitaessa (DBD) työvälineitä varsin rajoitetusti olemassa tietojen tarkasteluun DB2 taulu rivi rivien välinen liitos tiedon sisällön perusteella SQL:n ilmaisuvoima (ulkoliitos, funktiot, valintaehdot, alikyselyt) kaikki saantipolut mahdollisia (kunhan tehokkuus huomioidaan indeksoinnilla) työvälineitä saatavilla riittävästi tietojen analysointiin ja raportointiin presentation TietoEnator 2003 Page 7

Miksi siirtää DL/I dataa DB2 alustalle? DB2 kopio helpottaa työtä sovelluksen uudistamisprojektissa erilaisten tietojen arvojoukkojen ja kardinaliteettien selvitys poikkeuksien ja anomalioiden etsiminen konversiosäännöt saadaan kattaviksi, eikä tarvitse varautua kaikkeen, mikä teoriassa on mahdollista virheelliset päivämäärät paljastuvat, jos ne viedään date- muotoon laskennallisten kenttien muodollinen oikeellisuus tulee tarkistettua kannan konversio-ohjelmisto voidaan tehdä käyttäen SQL:ää DL/Ikutsujen sijaan konversio-ohjelmiston testidatan muokkaaminen on helpompaa jos se on DB2-alustalla presentation TietoEnator 2003 Page 8

Miksi siirtää DL/I dataa DB2 alustalle?... Myös toistuva konversio tarjoaa mahdollisuuksia konversio voidaan automatisoida yöaikaan esim. viikoittain ajantasaisuusvaatimusten mukaan testitapausten etsiminen virhetilanteiden tutkiminen saattaa tyydyttää joitakin raportointitarpeita tietoja saa varsin yksinkertaisesti vaikka excel taulukkoon data saavutettavissa myös muilta alustoilta käsin on tuotteita, joilla on lisenssi erikseen DL/I alustaa varten presentation TietoEnator 2003 Page 9

Mitä DL/I -> DB2 -muunnossa tarvitaan? DB2 kannalle, taulutiloille, tauluille ja hakemistoille DDL primary keyt foreign keyt viite-eheydet välttämättömät hakemistot vapaa tila nollaksi kompressaus päälle päivämäärät date -muotoon LOAD:n ohjauslauseet LOAD:n syöttötiedostot kantakohtainen konvertteri, joka vähintäänkin poistaa segmenttien prefiksit ja jakaa syöttötiedoston taulu (=segmentti) -kohtaisiin tiedostoihin presentation TietoEnator 2003 Page 10

DDL:n tuottamisen vaihtoehtoja (riippuu ympäristöstä) Kannattaa pyrkiä generoimaan mahdollisimman hyvä pohja REXX:llä Jos segmenttien kaikki kentät määritelty DBD:ssä, lue IMS LMU:n mapperin listaa, (jos LMU käytössä) tai lue DBD:n source jos kenttiä ei ole DBD:ssä lue kirjastoituja segmenttipeitteitä huomioi mahdolliset kaksoismäärittelyt Pahimmassa tapauksessa sitten vain näpytellään Päivämääräkentät pitää tunnistaa, jos ne halutaan DATE muotoon hyväksy NULL, jos et ole varma pakollisuudesta Avainten ja viite-eheyksien viimeistelyä varten tarvitset DL/I kannan hierarkkisen segmenttikaavion. jos ei ole valmiina, niin tee se IMS LMU:n mapperilla tai piirrä itse DBD:n perusteella presentation TietoEnator 2003 Page 11

Kantakohtainen konvertteri PL/I taipuu tähän helposti, mutta onnistuu kyllä cobolillakin Ensimmäisen tekemisen jälkeen muut syntyvät helposti Syöttönä DL/I kannan unload tiedosto Syöttö jaetaan segmenttityypeittäin eri tiedostoihin ja samalla poistetaan segmentin prefiksi, jotta tietue täsmää LOAD:n ohjauksen kanssa generoidaan primary keyt koko kannan sisällä juoksevana numerosarjana niille segmenttityypeille, joilla on lapsia talletetaan foreign keyt muihin paitsi juurisegmenttiin muunnetaan päivämäärät (+NULL indikaattorit) puretaan mahdolliset lohkorakenteiset segmentit lohkoittain useammaksi tietueeksi (-> riviksi) presentation TietoEnator 2003 Page 12

Kaksi segmenttikohtaista konversiorutiinia WHEN ('L') DO; /* TOSVIITE 02 */ KEY1=ISA(1); DO I=0 TO 5; IF SUBSTR(LALUE,I*18+4,18)^=' ' THEN DO; KALUE=SUBSTR(JONO,1,4)!!SUBSTR(LALUE,I*18+4,18); KALUE=SUBSTR(KALUE,1,4)!! D6V(SUBSTR(KALUE,5,6))!! SUBSTR(KALUE,11); WRITE FILE(I4EVIIT) FROM(KALUE); END; END; END; =================================================== WHEN ('Z') DO; /* TOSMTULP 04 */ ISA(0)=ISA(0)+1; ISA(4)=ISA(0); KEY1=ISA(4); KEY2=ISA(1); KALUE=SUBSTR(JONO,1,8)!! SUBSTR(LALUE,002,3)!! D8(SUBSTR(LALUE,005,8))!! SUBSTR(LALUE,013,21)!! D8N(SUBSTR(LALUE,034,8))!! SUBSTR(LALUE,042); WRITE FILE(I4EMTUL) FROM(KALUE); END; presentation TietoEnator 2003 Page 13

Esimerkissä esiintyvät päivämäärän muuntorutiinit D6V: PROC (P6) RETURNS(CHAR(10)); DCL P6 CHAR(6); IF SUBSTR(P6,1,2)<'20' THEN RETURN(SUBSTR(P6,5,2)!!'.'!! SUBSTR(P6,3,2)!!'.20'!!SUBSTR(P6,1,2)); ELSE RETURN(SUBSTR(P6,5,2)!!'.'!! SUBSTR(P6,3,2)!!'.19'!!SUBSTR(P6,1,2)); END; D8: PROC (P8) RETURNS(CHAR(10)); DCL P8 CHAR(8); IF P8='99999999' THEN P8='99991231'; RETURN(SUBSTR(P8,7,2)!!'.'!! SUBSTR(P8,5,2)!!'.'!!SUBSTR(P8,1,4)); END; D8N: PROC (P8N) RETURNS(CHAR(11)); DCL P8N CHAR(8); IF P8N=' ' THEN RETURN('?'); ELSE RETURN(SUBSTR(P8N,7,2)!!'.'!! SUBSTR(P8N,5,2)!!'.'!!SUBSTR(P8N,1,4)); END; presentation TietoEnator 2003 Page 14

Tietojen lataaminen Kun DB2-kanta on pystytetty, muodostetaan LOAD -lauseet DSNTIAUL:n avulla Lataaminen taulukohtaisista tiedostoista Yleensä tulee ilmi päivämäärä ja/tai desimaalitieto virheitä Aiheuttanee DL/I kannan korjaustarpeita ja iteraatiota Konvertteriin voi koodata segmenttikohtaisesti virheellisen tiedon käsittelylogiikkaa (pakattu kenttä on X 40 -> arvo on nolla, koska kyseessä lienee DL/I segmentin alustusvirhe) Jos esiintyy viite-eheys ongelmia, vaikka lataus muuten on OK, on konvertterissa virhe avainten generoinnissa tai talletuksessa. Tilanvaraukset voi tarkistaa ensimmäisen muunnon jälkeen ja luoda kannan uudelleen seuraavan muunnon yhteydessä. presentation TietoEnator 2003 Page 15

Yhteinen vai taulukohtainen taulutila Yhteinen yksi LOAD -lause ja yksi syöttötiedosto, mutta PUNCH:a täytyy muokata tietueille jätettävä segmentin tunniste tiivistysaste ehkä huonompi ei kannata segmentoida koko tietokantatietue luetaan parilla I/O:lla yhden segmenttityypin käsittely hitaampaa yksittäisen LOAD:n uusiminen hankalampaa ja tulos sen jälkeen sekä tilankäytön että tehokkuuden suhteen huonompi (SQL DELETE + RESUME) Taulukohtainen PUNCH:a ei tarvitse muokata (ainakaan merkittävästi) monta LOAD:a ja tiedostoa kuluu ehkä enemmän kokonaistilaa segmentoinnilla ei merkitystä yksittäisen LOAD:n uusiminen helppoa parempi tiivistysaste tietokantatietueen lukeminen vaatii monta I/O:ta yhden segmenttityypin käsittely nopeampaa presentation TietoEnator 2003 Page 16

Omia kokemuksiani Meillä oli: kaikki kentät määritelty DBD:ssä käytössä IMS LMU päivämääräkentät tunnistettuina Y2K projektin jäljiltä loogisia suhteita lohkorakenteisia segmenttejä useassa kannassa virheellistä tietoa ja virheellisiä ohjelmia paljastui Levytilan tarve on samaa luokkaa, kuin DL/l muodossa Loogiset suhteet eivät vaikuta itse muuntamiseen, mutta tehokkuuden kannalta täytyy luoda liitostiedolle yksi tai kaksi hakemistoa riippuen siitä, halutaanko looginen suhde nähdä yksi tai kaksisuuntaisena presentation TietoEnator 2003 Page 17

Paljonko on konvertoitu? Prosesseja tehty runsaat kymmenen Viisi kantaa muunnettu konversioprojekteille Yksi pieni operatiivinen kanta konvertoituu päivittäin, jotta raportointiväline saa datan helposti käyttöön Yksi DL/I kanta korvattu DB2-versiolla ja sitä käyttävä ohjelma konvertoitu Yksi prosessi tilattuna Uuden muuntoprosessin luominen kestää n. kaksi tehollista työpäivää Vain yksi merkittävä sovellus, jolla on neljä DL/I kantaa on vailla muuntoprosesseja presentation TietoEnator 2003 Page 18

Erään muunnetun kannan hierarkia RT:n INDENT komennolla katsottuna Table Name Relation Type ------------------------------------- -------- ---- 1. I4EMYLE START TABLE 2. C:I4EMLEMP I4WMLEMP DB2 3. C:I4EMPALA I4WMPALA DB2 4. C:I4EMPKIR I4WMPKIR DB2 5. C:I4EMPEMP I4WMPEMP DB2 6. C:I4EMSAL I4WMSAL DB2 7. C:I4EMKÄYT I4WMKÄYT DB2 8. C:I4EMKKIR I4WMKKIR DB2 9. C:I4EMSKIR I4WMSKIR DB2 10. C:I4EMTAPA I4WMTAPA DB2 11. C:I4EMVELO I4WMVELO DB2 12. C:I4EMEMER I4WMEMER DB2 13. C:I4EMLTE I4WMLTE DB2 14. C:I4EMLTEK I4WMLTEK DB2 15. C:I4EMTIL I4WMTIL DB2 16. C:I4EMTKIR I4WMTKIR DB2 17. C:I4EMUOTI I4WMUOTI DB2 18. C:I4EMVKIR I4WMVKIR DB2 19. C:I4EMVII I4WMVII DB2 20. C:I4EMVLKO I4WMVLKO DB2 21. C:I4EMIKIR I4WMIKIR DB2 presentation TietoEnator 2003 Page 19

Näkymä muunnetun kannan dataan RT:llä Command ===> Scroll ===> PAGE SUBSYS: DB2A Cmd F == Table: Z4TDA.I4EMYLE(T1) =========================== 1 OF 1 === MORE>> MYLEPK YVAKNO YOSAKAS YPVAKOS YPVAKNO YPERUPV YVAKLAJ ----------- ---------- ------- ------- ---------- ---------- ------- 863385 460******* 46 07.02.1995 1 Cmd F == Table: Z4TDA.I4EMVELO(T2) ======================== 73 OF 73 === MORE>> MVELOPK MVELOFK VELNRO VETURLA VELAJI VELTAPA VEERÄPV ----------- ----------- ------ ------- ------ ------- ---------- 863535 863385 126 1 13 0 21.02.2005 Cmd F == Table: Z4TDA.I4EMTIL(T3) =========================== 1 OF 2 === MORE>> MTILPK MTILFK SUORNRO SUORLAJI SUORPV NIPKIRPV NIPNRO ----------- ----------- ------- -------- ---------- ---------- ------ 863536 863535 78 50 21.06.2004 21.06.2004 0 Cmd F == Table: Z4TDA.I4EMTKIR(T4) ========================== 1 OF 4 ========== MTKIRFK TKIRPVM TKIRTOS TKIRPER TKIRAN TKIRMK ----------- ---------- ------- ------- ------ ---------------- *** *********************************** TOP *********************************** 863536 21.02.2005 518 3S11 4M110 125952 863536 21.02.2005 218 3K1 4M110 4104 863536 21.02.2005 518 4M110 3S1 125952 863536 21.02.2005 218 4M110 3K1 4104 *** ********************************* BOTTOM ********************************** presentation TietoEnator 2003 Page 20

Muunnetun kannan operatiivinen käyttö Teknisesti mahdollista, mutta asialla on monta puolta niin kauan, kun molempia käytetään, vain DL/I versio on ajantasainen ja vain sitä voi päivittää ohjelmien muuntaminen ei ole aivan ongelmatonta Ohjelman muuntoa on kokeiltu TietoIlmarisessa tilanteessa, jossa kantaa ei enää päivitetty ja vain yksi ohjelma käytti kannasta kahta segmenttityyppiä. ohjelman logiikka on ymmärrettävä täysin koska ohjelmakoodissa vertailtiin päivämääriä, tehtiin ohjelmalle VIEW, joka esittää päivämäärät CHAR(8) muodossa samalla tavalla, kuin ne olivat DL/I-kannassa. (Tästä tempusta seuraisi tehokkuusongelmia, jos kanta olisi suuri, koska päivämäärä on hakuehdossa) presentation TietoEnator 2003 Page 21

Vanha koodi, joka toteuttaa DL/I -kutsun LUE_VIITE: PROC; /* */ /*L 1 SSA4 STATIC, */ /* 2 SEG CHAR(8) INIT('GSSVANSV'), */ /* 2 TÄHTI CHAR(1) INIT('*'), */ /* 2 KKOODI CHAR(1) INIT('F'), */ /* 2 SUL1 CHAR(1) INIT('('), */ /* 2 KEN1 CHAR(8) INIT('VOVIPVM'), */ /* 2 OPER1 CHAR(2) INIT('> '), */ /* 2 VERT1 CHAR(8), */ /* 2 BOOL CHAR(1) INIT('&'), */ /* 2 KEN2 CHAR(8) INIT('VOVIPVM'), */ /* 2 OPER2 CHAR(2) INIT('<='), */ /* 2 VERT2 CHAR(8), */ /* 2 SUL2 CHAR(1) INIT(')'); */ /* CALL PLITDLI (NELJÄ,GNP,XPCBV,IOVO,SSA4); */ /* SELECT (PCBV.STATUS); */ /* WHEN(' ') */ /* WVO = '1'B; */ /* WHEN('GE') */ /* WVO = '0'B; */ /* OTHERWISE */ /* DO; */ /* VIRHEMESSU = 'TS115RU-VIRHE GSSVANSV GNP:SSA '!! */ /* 'STATUS '!! PCBV.STATUS; */ /* SIGNAL ERROR; */ /* END; */ /* END; */ presentation TietoEnator 2003 Page 22

Uusi koodi, joka toteuttaa vastaavan SQL -kutsun EXEC SQL SELECT VANSVPK, VANSVFK, VOVIPVM, VOJNO, VOVIITE INTO :TTNVANS.VANSVPK, :TTNVANS.VANSVFK, :TTNVANS.VOVIPVM, :TTNVANS.VOJNO, :TTNVANS.VOVIITE FROM TTNVANS U WHERE U.VANSVFK = :VYLEPK AND U.VANSVPK = (SELECT MIN(S.VANSVPK) FROM TTNVANS S WHERE U.VANSVFK=S.VANSVFK AND S.VOVIPVM > :SSA4.VERT1 AND S.VOVIPVM <=:SSA4.VERT2 ) ; SELECT( SQLCODE ); WHEN( 0 ) WVO = '1'B ; WHEN( 100 ) WVO = '0'B ; OTHERWISE DO; VIRHEMESSU = 'VIRHE VIITTEEN LUVUSSA'; SIGNAL ERROR; END; END; END LUE_VIITE; presentation TietoEnator 2003 Page 23