TRAIL indicates to keep trailing blanks on fixed length records.
SBSENDEOL can be CRLF, CR, LF, or NONE
This SITE command sets the Single Byte end-of-line character sequence; if it is CRLF and you're not sending both then the lines would be truncated by a byte.
If you can ftp to the mainframe, QUOTE HELP SITE should give you the SITE parameters you can use. | [reply] |
Thanks for this info it was helpful. No I am not issuing a SITE command and I cannot find any info on the format of such command, other than that it exists as a method in Net::FTP as site(ARGS) but I cannot find what should be in ARGS. Could you give me the examples of your code that you mentioned? | [reply] |
What I've got is baed on a code snippet that I was given by someone working on the mainframe. I translated it to use in Perl. There are a few things I'm not quite sure about namely PRI and SEC (I think this has to do with disk allocation on the mainframe).
$ftp->site("PRI=<some number>","SEC=<some number>",
"TRacks",
"RECfm=<record format - either Fixed Block or Variable Bloc
+k",
"LRecl=<record length number>",
"BLocksize=<block size number>",
"Unit=<not sure about this one>") or die "Cannot set SITE c
+ommand. $!";
$ftp->site("trail") or die "Cannot issue SITE 'trail' command. $!";
$ftp->put("<file-name>","\'Data.Set.Name(+1)\'") or die "Cannot put <f
+ile-name> to Data.Set.Name. $!";
Note, the (+1) after the dataset name indicates that the data set is a plus one generation (the generation number is incremented by one each time a file is sent. Block size, record Length, Record Format and whether it is a generational dataset is determined by the mainframe and they would have to tell you (assuming it matters). Also, I have found that the transfer works when surrounded by the single quotes - even if I were doing this on the command-line FTP client.
This may not all be necessary for the mainframe Z/OS, but might get you going in the right direction. Good luck.
| [reply] [d/l] |
Thanks for your help. The PRI and SEC are Primary and Secondary space allocation parameters btw.
I am not creating a new dataset each time, but either creating or replacing a member in a mainframe library, so my parameters will be different, but your code is a starting point at least. Thanks for sharing.
| [reply] |