I'm currently working on invoking IGGCSI00 to retrieve various info from VS and Non-VS file.
I started from the SYS1.SAMPLIB(IGG*) sample and it works fine ... until i find my first multi-volume file.
I retrieve the following fields
CSIFLDNM DC CL8'CATTR ' FIELD NAME
DC CL8'HARBADS ' HI-RBA
DC CL8'PHYBLKSZ' BLOCKSIZE
DC CL8'VOLSER ' VOLSER
DC CL8'HARBADS ' HI-RBA
DC CL8'PHYBLKSZ' BLOCKSIZE
DC CL8'VOLSER ' VOLSER
Through the following DSECTs statement
........
EDATALN DS XL2
EFLD1LN DS XL2 Lenght of field CATTR
EFLD2LN DS XL2 Length of field HA-RBA
EFLD3LN DS XL2 Length of field PHYBLK
EFLD4LN DS XL2 Length of field VOLSER
ECATTR DS XL1
EHARBA DS XL4
EPHYBLK DS XL4
EVOLSER DS XL6
...........
EDATALN DS XL2
EFLD1LN DS XL2 Lenght of field CATTR
EFLD2LN DS XL2 Length of field HA-RBA
EFLD3LN DS XL2 Length of field PHYBLK
EFLD4LN DS XL2 Length of field VOLSER
ECATTR DS XL1
EHARBA DS XL4
EPHYBLK DS XL4
EVOLSER DS XL6
...........
But for some reason VOLSER is empty on multi-volume file
I found a way to retrieve the info by performing the following address calculation
L R11,LN_TOT
A R11,EFLD1LN compute LENGTH of FIELD 1 +
A R11,EFLD2LN LENGTH of FIELD 2 +
A R11,EFLD3LN LENGTH of FIELD 3 +
A R11,EFLD4LN LENGTH of FIELD 4
ST R11,LN_TOT
MVC ADDR+2(2),LN_TOT
LA R11,ECATTR Then Add id to the address of the first field CATTR
L R10,ADDR
AR R11,R10
LA R10,VOLSER
MVC 0(6,R10),0.(R11) To get the first volume of the file
A R11,EFLD1LN compute LENGTH of FIELD 1 +
A R11,EFLD2LN LENGTH of FIELD 2 +
A R11,EFLD3LN LENGTH of FIELD 3 +
A R11,EFLD4LN LENGTH of FIELD 4
ST R11,LN_TOT
MVC ADDR+2(2),LN_TOT
LA R11,ECATTR Then Add id to the address of the first field CATTR
L R10,ADDR
AR R11,R10
LA R10,VOLSER
MVC 0(6,R10),0.(R11) To get the first volume of the file
I iterate the last MVC until i retrieve all the volume occupied by the file.
It works fine but I didn't find in CSI documentation (managing catalog) the proper way to retrieve this field, I mean without performing address calculation ?
It's kind of an issue to me since my source tends to reach the limit of adressability of m two bases registers.