26. oktober 2004 - 15:02Der er
4 kommentarer og 2 løsninger
et hurtigt lille CL program på AS400
Hej 'alle' (Ja her er jo hele 12 spørgsmål oprettet)
Jeg sidder og arbejder på AS400 8 timer dagligt med god rutine i WRKQRY, WRKJOBSCDE, CRTLIB osv. Alle de 'nemme' kommandoer.
Nu skal vi så til at have overført nogle filer via FTP på daglig basis... Fra vores software programmører i UK har jeg fået en mail med at det da 'bare' er at lave et lille CL program:
Jeg har forsøgt med CRTPGM, CRTCLPGM osv. De sidste 6 timer er gået med at læse artikler på nettet.
Findes der en venlig sjæl der gider gennemgå det med mig, step by step... Ovenstående eksempel går igen i mange artikler, men jeg er tilsyneladende for dum til at finde en der viser mig, hvor jeg skal starte...
Okay, hvis de tre linier er det eneste du har fået at gå efter, og du ikke har nogen som helst programmeringserfaring, ka' jeg sådan set godt se, at du må ha' problemer.
Først og fremmest, så skal et CL program begynde med en PGM instruktion og slutte med en ENDPGM. Linierne indeholder desuden en variabel, &CUSTLIB. En variabel vil altid begynde med &. Denne variabel skal defineres i programmet. Dette gøres med en DCL instruktion. Sandsynligvis er det ment som en variabel, som skal sendes med ved opkaldet. Så skal den defineres sammen med PGM instruktionen. Et bibliotek kan maks være på 10 positioner, så den den viste variabel type defineres normalt som 10 karakterer. Desuden er der brugt en anden variabel (&INTNETADR), som indeholder IP-adressen. Den vil sikker være 15 positioner lang (den skal kunne indeholde en normal IP adresse på formatet xxx.xxx.xxx.xxx
Programmet skulle i sin helhed derfor nok se sådan her ud:
Se, nu ville programmet sådan set virke. Det kompileres med kommandoen CRTCLPGM (eller CRTBNDCL, hvis du bedre kan lide et ILE program end et OPM program)
Det kaldes med: CALL pgmnavn PARM('QGPL ' '192.123.162.032')
Jeg giver lige en lille gennemgang af hvad det foretager sig:
Hvis man kalder FTP direkte fra skærmen, vil man normalt blive spurgt om brugernavn og password, efterfulgt af en kommandoprompt, hvor man kan indtaste sine FTP kommandoer, som f.eks.:
ASCII GET test.txt QGPL/TEST (REPLACE QUIT
Svarene man modtager, når man indtaster en FTP kommando sendes ligeledes tilbage til skærmen. Men hvis man ønsker at automatisere en forsendelse eller modtagelse, er det ikke smart at skulle sidde og indtaste kommandoerne på skærmen. Man kan derfor omdirigere input og output til filer. Input filen skal indeholde FTP kommandoerne, mens output filen vil modtage svarene fra serveren, efterhånden som de indløber.
Det viste program starter FTP op mod den server der har IP adressen i den anden parameter i programkaldet. Når den har fået forbindelse til FTP serveren, vil den kigge i filen QCLSRC i biblioteket der er angivet i kaldets 1. parameter (i det viste eksempel QGPL) - member FTPCMDD. Efterhånden som de kommandoer der er i dette member bliver udført, sendes svarene til member OUTPD i samme fil.
Som du måske kan forstå, så er selve programmet ikke nok til at få noget udført på FTP. FTP instruktionerne skal ført lægges i FTPCMDD memberet. Efter at programmet er kørt, bør man kigge i memberet OUTPD, for at se om alt blev gennemført korrekt (hvis der sker en fejl undervejs, f.eks. en fil som ikke kunne overføres, stopper FTP programmet ikke, men går bare videre til næste instruktion). Sandsynligvis vil det i 99,9% af tiden gå godt, men hvis det skal køre fuldstændigt automatisk, bør du også få lavet et program, som efterfølgende gennemlæser OUTPD memberet, for at tjekke at der ikke skete noget uforudset undervejs.
Jeg havde helt glemt at jeg havde oprettet dette spørgsmål.. Jeg beklager naturligvis den laaange svartid.
Kjulius>> Tusind tak for den meget detaljerede gennemgang. Super!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.