MainframeSupports
tip uge 43/2003:

Du har måske prøvet at afvikle FTP på mainframen i batch. Så har du sikkert opdaget, hvor hjernedød (undskyld udtrykket) fejlhåndteringen er sat op som default. Hvis en kommando fejler, så fortsæt glad og fro med den næste og slut af med at give returkode 0 uanset hvad. Jeg kan har ikke fantasi til at forestille mig en mere tåbelig opsætning. Jeg tror, at de fleste driftsafdelinger har været eller bliver ramt af denne "uhensigtsmæssighed". Jeg håber, at dette tip kan forhindre de fremtidige ulykker.

Jeg vil indlede med at vise et eksempel på et FTP step, der giver returkode 8, hvis en FTP kommando fejler undervejs. Hvis alle FTP kommandoer gennemføres OK, så giver steppet returkode 0. FTP kommandoer efter den første FTP kommando, der fejler, bliver ikke udført.

//FTPSTEP EXEC PGM=FTP,PARM='1.2.3.4 (EXIT=8'
//OUTPUT  DD SYSOUT=*
//INPUT   DD *
myftpusr
myftpswd
cd invalid_directory
pwd
quit
/*

Det vigtige i ovenstående step er det, der står i PARM=. Første del af PARM er enten IP adressen (1.2.3.4) eller FTP server navnet og sidste del er parametrene efter en vensteparentes. Jeg har her angivet EXIT=8, som netop bevirker, at FTP steppet vil stoppe ved den første FTP kommando, der fejler, og få steppet til at give returkode 8. Man kan nøjes med at skrive EXIT, som vil bevirke, at FTP steppet stopper ved den første FTP kommando, der fejler, og få steppet til at give en returkode, der siger noget om fejlens art og FTP kommandoens art. Denne returkode strider langt hen ad vejen mod de normalt anvendte standarder for returkoder, så derfor vil jeg ikke anbefale kun at skrive EXIT.

Der kan angives forskellige andre parametre efter vensteparentesen. Her er det godt at vide, at EXIT altid skal være den første parameter efter vensteparentesen. Med hensyn til selve FTP kommandoerne, så skal de angives i DD-kort INPUT. Når IP-adressen angives i PARM, så skal den første linie i INPUT altid indeholde et user-id og anden linie et password, der passer til det angivne user-id. Herefter kommer så de egentlige FTP kommandoer. I eksemplet prøver jeg at skifte til et directory, der hedder invalid_directory. Dette directory findes højst sandsynligt ikke, så derfor vil kommandoen fejle og steppet slutte her med returkode 8. Findes det stik imod alle odds, så vil FTP kommandoen pwd udskrive den fulde sti til det directory, sessionen er havnet i. Den sidste kommando (quit) afslutter FTP sessionen. Hvis quit udelades til sidst, så udsteder FTP programmet selv en quit.

Jeg har fundet den mest friske udgave af den manual, hvor programmet FTP er beskrevet. Her er et link direkte til afsnittet om FTP i batch. I øvrigt har jeg i Uge 18 i år skrevet om, hvordan man benytter FTP direkte fra TSO.

Forrige danske tip        Last tip in english        Tip oversigten