I do an FTP get against a production server. When I do it on our test box it creates a file of fixed block format...
with an LRECL of 128 bytes. When I run the exact same FTP against the same server on our production mainframe it creates a variable blocked file of 256 bytes. Very odd. Different data pools? Different defaults? What do I do to make the file produced in production be FB/128?
It sounds like the defaults are different on the "test box" (is this a different LPAR than the production mainframe you mention?) and the production mainframe. There are defaults that come with the system and they are customizable by the system programmer. There is a somewhat complicated search order for where these defaults can be specified or overridden by the user (see the manuals I quote below for details), but they are in a file called FTP.DATA or FTPSDATA. The default LRECL is 128 and the default RECFM is VB if the system programmer does not change any of the defaults. The file also controls things like the default space allocation size and type (trk vs.cyl) and whether the default FTP environment is z/OS MVS or z/OS Unix.
The best way to ensure you always get the file format you want is to use the SITE or LOCSITE commands prior to issuing a GET or PUT in your FTP process. If you are doing a GET from the mainframe you would use LOCSITE prior to the GET. If you were doing a PUT from another platform to the mainframe, you would use the SITE command - which you need to send via "QUOTE SITE".
Here is an example of doing a GET from an FTP batch job on the mainframe (assume the server is at 172.19.158.100):
//FTP JOB (ACCT),CLASS=A,...
//STEP1 EXEC PGM=FTP,REGION=4M,PARM='(EXIT'
//SYSPRINT DD SYSOUT=*
//OUTPUT DD SYSOUT=*
//INPUT DD *
locsite LRECL=80 BLKSIZE=27920 RECFM=FB
locsite CYL PRIMARY=100 SECONDARY=20
get /dir1/dir2/mydata.bin 'USERID.MY.DATA'
For more information on using FTP on z/OS see the IP User's Guide and Commands
For more information on customizing FTP on z/OS see the IP Configuration Reference
Read the full IP Configuration Guide
Dig Deeper on IBM system z and mainframe systems
Related Q&A from Mark Zelden
When initial program load stalls out on a mainframe logical partition, the culprit is often consoles. Connectivity is one of many potential causes. Continue Reading
Programming expert Mark Zelden offers some coding help to a user trying to FTP files from the mainframe to a Linux OS. Continue Reading
I want to write a COBOL program that will run in z/OS and create a sequential file that can then be FTP'd to a network drive and opened with MS-Word ... Continue Reading