Avatar billede mikker Nybegynder
26. oktober 2004 - 15:02 Der 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:

OVRDBF    FILE(INPUT) TOFILE(&CUSTLIB/QCLSRC) +         
            MBR(FTPCMDD)                                 
OVRDBF    FILE(OUTPUT) TOFILE(&CUSTLIB/QCLSRC) MBR(OUTPD)
FTP        RMTSYS(*INTNETADR) INTNETADR(&INTNETADR)


Jaja, det er altsammen meget godt.

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...

- Mikker
Avatar billede mandrake666 Nybegynder
26. oktober 2004 - 15:23 #1
strpdm
Avatar billede mikker Nybegynder
26. oktober 2004 - 18:55 #2
Takker. :o)

Kigger på det imorgen.

- Mikker
Avatar billede mikker Nybegynder
01. november 2004 - 15:17 #3
Det ser rigtigt ud.
Mange tak.

Nu mangler jeg så bare at finde en bog der forklarer mig resten :o)

Smider du lige et svar?

- Mikker
Avatar billede mandrake666 Nybegynder
02. november 2004 - 08:33 #4
Svar

P.S. hvis du finder noget godt materiale omkring Cl, så vil jeg gerne høre om det.
Avatar billede kjulius Novice
08. januar 2005 - 01:10 #5
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:

PGM PARM(&CUSTLIB &INTNETADR)
DCL VAR(&CUSTLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&INTNETADR) TYPE(*CHAR) LEN(15)
OVRDBF    FILE(INPUT) TOFILE(&CUSTLIB/QCLSRC) +       
            MBR(FTPCMDD)                               
OVRDBF    FILE(OUTPUT) TOFILE(&CUSTLIB/QCLSRC) MBR(OUTPD)
FTP        RMTSYS(*INTNETADR) INTNETADR(&INTNETADR)
DLTOVR FILE(INPUT)
DLTOVR FILE(OUTPUT)
ENDPGM

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.
Avatar billede mikker Nybegynder
16. januar 2005 - 11:41 #6
UPS!

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!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester