MainframeSupports
tip uge 51/2004:

Jeg har ikke skrevet ret meget om FTP på mainframen, men jeg får en del spørgsmål, så nu er det vist på tide med lidt mere information. Links til selve FTP manualen kan du finde i de tidligere tips om FTP. I takt med at langt de fleste mainframe installationer er gået over til at anvende IP protokollen i stedet for SNA, så begynder man rundt omkring at benytte FTP til at sende data mellem mainframes. Det giver nogen sjove udfordringer, som jeg vil komme ind på her.

FTP overførsler opfattes traditionelt som overførsler mellem mainframen og ASCII baserede platforme. I disse overførsler spiller tegnkonvertering en stor rolle. Tegnkonvertering undgås her med FTP-kommandoen BINARY, da default er konvertering mellem EBCDIC og ASCII. En anden lettere overset tegnkonvertering er konverteringen af records til carriage return (cr) / line feed (lf) og omvendt. Alle filer på mainframen er opbygget i records og blocks, mens filer på ASCII baserede platforme er at opfatte som een lang tegnstreng.

Desværre har udviklingsfolkene bag FTP på mainframen fra starten overset den sidste detalje. Derfor vil du sikkert på et tidspunkt opleve, at den fil, du overførte fra mainframe site A til mainframe site B pludselig forandrer udseende, selv om den absolut ikke burde gøre det. Det skyldes, at FTP kommandoen opfatter bestemte EBCDIC tegn som cr/lf. Da disse tegn sjældent forekommer i vores datasets, så kan vi FTP'e i lang tid uden at have problemet for pludselig en dag at stå med håret i postkassen.

Det er typisk her jeg bliver kontaktet. Kuren består i at benytte een af FTP kommandoerne RECORD eller BLOCK. Selv om det ikke fremgår af manualen, så er jeg overbevist om, at uanset hvilken en af disse to kommandoer, du bruger, så er resultatet det samme. Jeg har ikke fundet nogen forskel. Når du har udstedt en af disse to kommandoer, så vil FTP ignorere eventuelle cr/lf tegn. RECORD og BLOCK er i øvrigt ret nye kommandoer. STRUCTURE RECORD kan benyttes i stedet for RECORD og MODE B kan benyttes i stedet for BLOCK. Herefter vil du være i stand til at overføre datasets fuldstændigt uforandrede. Det forudsætter dog, at EBCDIC tegnsættet på de to mainframe sites er ens eller, at du benytter BINARY kommandoen.

Forrige danske tip        Last tip in english        Tip oversigten