Læs indhold af CD på OPT01 og overfør data til AS/400
Blev kontaktet af en kunde, som havde modtaget et sæt CD'er, som de umiddelbart ikke kunne læse.
CD'erne indeholdte hver en datafil, som skulle benyttes i en applikation på AS/400, og derfor
skulle overføres til en datafil på AS/400.
Læste de en CD på en PC, var der ikke nogle læsbare data, det hele var volapyk.
Læste de en CD på AS/400, var resultatet det samme.
De mente derfor at data var i EBCDIC, hvilket de også fik bekræftet af afsenderen.
Kunden bad mig herefter om at udvikle en lille applikation, som kunne læse CD'erne, og
aflevere dem i et bibliotek på AS/400.
Jeg startede herefter med en læsning af 'sti/filenavn' på OPT01:
DspOpt Vol(*Mounted) Dev(Opt01) Data(*FilAtr)
OutPut(*OutFile) Path(*All) OutFile(CdIndhold)
Nu havde jeg så de informationer, jeg skulle bruge for at kunne overføre CD'ens fil til AS/400.
Dette blev gjort med følgende kommando:
CpyFrmStmF FromStmF(&FmMbr) ToMbr(&ToMbr)
MbrOpt(*Replace) CvtDta(*None) EndLinFmt(*Fixed) TabExpn(*No)
Herefter kunne jeg via PDM gå ind og læse data. Dog var der et problem med ToMbr, idet
modtager filen skal være bygget, og da jeg ikke kendte recordlængden på CD-filen, stod
data forskudt. Herefter forsøgte jeg mig med forskellige recordlængder, indtil jeg havde
fundet den korrekte længde. Blot viste det sig, at den sidste CD-fil havde en anden længde,
så derfor måtte jeg igen prøve mig frem.
Da der altså var 2 forskellige recordlængder, måtte jeg desværre benytte mig af en ekstra
'hårdkodning', idet der skulle skelnes mellem disse længder.
Resultatet blev 3 CLLE programmer, samt en enkelt DDS:
Program_1: Driverprogram der holder styr på CD-nummerrækkefølgen,
og som overfører CD-filens data til AS/400.
Program_2: Windows-promt, hvor man bedes isætte CD nr. x af y.
Program_3: Læser 'sti/filnavn' på CD nr. x.
Afvikling af applikationen foregår derfor som følger:
Program_1: Diverse initieringer foretages.
Der testes om de benyttede filer findes, ellers bygges de.
Herefter loopes der y-antal gange (= antal CD'er).
Kald til Program_2, som beder om at få isat en CD.
Kald til Program_3, som læser 'sti/filnavn' på CD'en via DSPOPT.
CD filen overføres nu til QSYS/'bibliotek' via CPYFRMSTMF.
Der tælles +1 op i CD-tælleværket,
og der returneres til en label lige før næste kald til Program_2.
At Program_2 og Program_3 ikke kan slåes sammen til eet program, skyldes at de benytter
DCLF og SNDRCVF hhv. DCLF og RCVF
Applikationen tester iøvrigt på, om der er isat en CD, samt at samme CD ikke isættes igen.
|