A customer needs the field layout for a VB log file. The best I could do was a PL/I layout for a downstream, filtered, column-shifted and VTOF'd version of the same file. I'm not a PL/I programmer but it was easy enough to decipher and reverse engineer the DCL to align with the VB raw file.
However, since the raw file is RECFM=VB, do I need to include a definition for the RDW for the input DCL? The programming guide seems to have hidden the answer somewhere I could not find.
I've seen other PL/I programs account for the RDW in output DCLs using FIXED BIN(15), which looks too short for a 4 byte RDW. I'm confused.
How does PL/I deal with the RDW for input and output?
The DCL in PL/S defines the RDW. But the DCL in the PL/I version does not because it's handled automatically by populating SMF0LEN and SMF0SEG. However, he doesn't elaborate on how that happens or how the SMF-specific variable names get defined.
Meanwhile, where I've seen it accounted for at my shop, only 2 bytes are defined, presumably the least significant half-word which is zero for unspanned records. Where did the other 2 bytes go?
The first filler in liftrec (which I could also have declared as "fixed bin (15)" contains the length of the VB record. The flag bytes are never returned to PL/I for VB files, but, never tried this, you might be able to read them by declaring the file as "env(u..."
And yes there are two visible "filler" fields in liftrec, I've got a macro that translates them to either "*" (for Enterprise PL/I), or "znnnnn" (for OS PL/I):