!*** MODULE $XABFHCDEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! ! file header characteristics xab definitions ! $xabfhcdef ! ! the fields of this xab cannot be rearranged since ! they correspond to an on-disk structure ! PARAMETER XAB$C_FHC = '0000001D'X ! xabfhc id code PARAMETER XAB$M_FTN = '00000001'X PARAMETER XAB$M_CR = '00000002'X PARAMETER XAB$M_PRN = '00000004'X PARAMETER XAB$M_BLK = '00000008'X PARAMETER XAB$M_GBC_PERCENT = '00000001'X PARAMETER XAB$M_GBC_DEFAULT = '00000002'X STRUCTURE /XABFHCDEF/ BYTE %FILL BYTE %FILL INTEGER*2 %FILL INTEGER*4 %FILL ! HAS SAME COD, BLN, SPARE AND NXT FIELD ! THESE 4 FIELDS ARE COMMON TO ALL XABS AND ! HAVE BEEN DEFINED BY $XABDEF BYTE XAB$B_RFO ! record format and file org UNION MAP BYTE XAB$B_ATR ! record attributes END MAP MAP PARAMETER XAB$S_FTN = 1 PARAMETER XAB$V_FTN = 0 ! fortran carriage-ctl PARAMETER XAB$S_CR = 1 PARAMETER XAB$V_CR = 1 ! lf-record-cr carriage ctl PARAMETER XAB$S_PRN = 1 PARAMETER XAB$V_PRN = 2 ! print-file carriage ctl PARAMETER XAB$S_BLK = 1 PARAMETER XAB$V_BLK = 3 ! records don't cross block boundaries BYTE %FILL (1) END MAP END UNION INTEGER*2 XAB$W_LRL ! longest record's length UNION MAP INTEGER*4 XAB$L_HBK ! hi vbn allocated END MAP ! (n.b. reversed on disk!) MAP INTEGER*2 XAB$W_HBK0 INTEGER*2 XAB$W_HBK2 END MAP END UNION UNION MAP INTEGER*4 XAB$L_EBK ! eof vbn END MAP ! (n.b. reversed on disk) MAP INTEGER*2 XAB$W_EBK0 INTEGER*2 XAB$W_EBK2 END MAP END UNION INTEGER*2 XAB$W_FFB ! first free byte in eof block BYTE %FILL ! bucket size for fhc ( note: field name is bkz, ! defined above in $xabdef,since it is shared by the fhc ! xab and has the same offset, of course) ! -----***** ! HAVE BEEN DEFINED BY $XABDEF ! defined above in $xabdef, since it is shared ! by the all xab) BYTE XAB$B_HSZ ! header size for vfc INTEGER*2 XAB$W_MRZ ! max record size INTEGER*2 XAB$W_DXQ ! default extend quantity UNION MAP INTEGER*2 XAB$W_GBC ! global buffer count (original word) END MAP MAP INTEGER*2 XAB$W_GBC16 ! Alias END MAP END UNION UNION MAP BYTE XAB$B_RECATTR_FLAGS ! flags for record attribute area END MAP MAP PARAMETER XAB$S_GBC_PERCENT = 1 PARAMETER XAB$V_GBC_PERCENT = 0 ! Interpret value in GBC32 as percent instead of count PARAMETER XAB$S_GBC_DEFAULT = 1 PARAMETER XAB$V_GBC_DEFAULT = 1 ! RMS should set default for GBC at runtime and ignore ! any values in GBC16 or GBC32 BYTE %FILL (1) END MAP END UNION BYTE %FILL ! reserved for future use (possible flags word union) INTEGER*4 XAB$L_GBC32 ! longword implementation of global buffer count BYTE %FILL(1:2) ! spare space documented as unused in I/O REF INTEGER*2 XAB$W_VERLIMIT ! version limit for file. ! -----***** INTEGER*4 XAB$L_SBN ! starting lbn if contiguous END STRUCTURE ! XABFHCDEF ! basealign on aggregate XABFHCDEF operates after aggregate end PARAMETER XAB$K_FHCLEN = '0000002C'X ! length of xabfhc PARAMETER XAB$C_FHCLEN = '0000002C'X ! length of xabfhc !DEC$ END OPTIONS