! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! ! file header characteristics xab definitions ! $xabfhcdef ! ! the fields of this xab cannot be rearranged since ! they correspond to an on-disk structure ! DECLARE LONG CONSTANT XAB$C_FHC = 29 ! xabfhc id code DECLARE LONG CONSTANT XAB$M_FTN = x'00000001' DECLARE LONG CONSTANT XAB$M_CR = x'00000002' DECLARE LONG CONSTANT XAB$M_PRN = x'00000004' DECLARE LONG CONSTANT XAB$M_BLK = x'00000008' DECLARE LONG CONSTANT XAB$M_GBC_PERCENT = x'00000001' DECLARE LONG CONSTANT XAB$M_GBC_DEFAULT = x'00000002' DECLARE LONG CONSTANT XAB$S_XABFHCDEF = 44 record XABFHCDEF BYTE XABFHCDEF$$_FILL_1 BYTE XABFHCDEF$$_FILL_2 WORD XABFHCDEF$$_FILL_3 LONG XABFHCDEF$$_FILL_4 ! 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 group XAB$R_FILL_9_ variant case BYTE XAB$B_ATR ! record attributes case group XAB$R_FILL_10_ ! fortran carriage-ctl ! lf-record-cr carriage ctl ! print-file carriage ctl ! records don't cross block boundaries BYTE FTN_bits ! COMMENT ADDED BY SDL - FTN_bits contains bits FTN through FILL_11_ end group XAB$R_FILL_10_ end variant end group XAB$R_FILL_9_ WORD XAB$W_LRL ! longest record's length group XAB$R_HBK_OVERLAY variant case LONG XAB$L_HBK ! hi vbn allocated ! (n.b. reversed on disk?) case group XAB$R_HBK_FIELDS WORD XAB$W_HBK0 WORD XAB$W_HBK2 end group XAB$R_HBK_FIELDS end variant end group XAB$R_HBK_OVERLAY group XAB$R_EBK_OVERLAY variant case LONG XAB$L_EBK ! eof vbn ! (n.b. reversed on disk) case group XAB$R_EBK_FIELDS WORD XAB$W_EBK0 WORD XAB$W_EBK2 end group XAB$R_EBK_FIELDS end variant end group XAB$R_EBK_OVERLAY WORD XAB$W_FFB ! first free byte in eof block BYTE XABFHCDEF$$_FILL_5 ! 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 WORD XAB$W_MRZ ! max record size WORD XAB$W_DXQ ! default extend quantity group XAB$R_GBC16_OVERLAY variant case WORD XAB$W_GBC ! global buffer count (original word) case WORD XAB$W_GBC16 ! Alias end variant end group XAB$R_GBC16_OVERLAY group XAB$R_RECATTR_FLAGS_OVERLAY variant case BYTE XAB$B_RECATTR_FLAGS ! flags for record attribute area case group XAB$R_RECATTR_FLAGS_BITS ! Interpret value in GBC32 as percent instead of count ! RMS should set default for GBC at runtime and ignore ! any values in GBC16 or GBC32 ! Reserved for future use BYTE GBC_PERCENT_bits ! COMMENT ADDED BY SDL - GBC_PERCENT_bits contains bits GBC_PERCENT through FILL_7 end group XAB$R_RECATTR_FLAGS_BITS end variant end group XAB$R_RECATTR_FLAGS_OVERLAY BYTE XABFHCDEF$$_FILL_8 ! reserved for future use (possible flags word union) LONG XAB$L_GBC32 ! longword implementation of global buffer count BYTE XABFHCDEF$$_FILL_6 ( 1 to 2 ) ! spare space documented as unused in I/O REF WORD XAB$W_VERLIMIT ! version limit for file. ! -----***** LONG XAB$L_SBN ! starting lbn if contiguous end record XABFHCDEF ! basealign on aggregate XABFHCDEF operates after aggregate end DECLARE LONG CONSTANT XAB$K_FHCLEN = 44 ! length of xabfhc DECLARE LONG CONSTANT XAB$C_FHCLEN = 44 ! length of xabfhc