!*** MODULE $DSCDEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! Define Procedure argument data types ! The following encoding is used for atomic data elements: ! Mnemonic Code Description PARAMETER DSC$K_DTYPE_Z = '00000000'X ! Unspecified. The calling program has PARAMETER DSC64$K_DTYPE_Z = '00000000'X ! specified no data type/* the called ! procedure should assume the argument is of ! the correct type. PARAMETER DSC$K_DTYPE_BU = '00000002'X ! Byte Logical. 8-bit unsigned quantity. PARAMETER DSC64$K_DTYPE_BU = '00000002'X PARAMETER DSC$K_DTYPE_WU = '00000003'X ! Word Logical. 16-bit unsigned quantity. PARAMETER DSC64$K_DTYPE_WU = '00000003'X PARAMETER DSC$K_DTYPE_LU = '00000004'X ! Longword Logical. 32-bit unsigned PARAMETER DSC64$K_DTYPE_LU = '00000004'X ! quantity. PARAMETER DSC$K_DTYPE_QU = '00000005'X ! Quadword Logical. 64-bit unsigned PARAMETER DSC64$K_DTYPE_QU = '00000005'X ! quantity. PARAMETER DSC$K_DTYPE_OU = '00000019'X ! Octaword Logical. 128-bit unsigned PARAMETER DSC64$K_DTYPE_OU = '00000019'X ! quantity. PARAMETER DSC$K_DTYPE_B = '00000006'X ! Byte Integer. 8-bit signed 2's-complement PARAMETER DSC64$K_DTYPE_B = '00000006'X ! integer. PARAMETER DSC$K_DTYPE_W = '00000007'X ! Word Integer. 16-bit signed 2's-complement PARAMETER DSC64$K_DTYPE_W = '00000007'X ! integer. PARAMETER DSC$K_DTYPE_L = '00000008'X ! Longword Integer. 32-bit signed PARAMETER DSC64$K_DTYPE_L = '00000008'X ! 2's-complement integer. PARAMETER DSC$K_DTYPE_Q = '00000009'X ! Quadword Integer. 64-bit signed PARAMETER DSC64$K_DTYPE_Q = '00000009'X ! 2's-complement integer. PARAMETER DSC$K_DTYPE_O = '0000001A'X ! Octaword Integer. 128-bit signed PARAMETER DSC64$K_DTYPE_O = '0000001A'X ! 2's-complement integer. PARAMETER DSC$K_DTYPE_F = '0000000A'X ! F_floating. 32-bit F_floating quantity representing PARAMETER DSC64$K_DTYPE_F = '0000000A'X ! a single-precision number. PARAMETER DSC$K_DTYPE_D = '0000000B'X ! D_floating. 64-bit D_floating quantity representing PARAMETER DSC64$K_DTYPE_D = '0000000B'X ! a double-precision number. PARAMETER DSC$K_DTYPE_G = '0000001B'X ! G_floating. 64-bit G_floating quantity representing PARAMETER DSC64$K_DTYPE_G = '0000001B'X ! a double-precision number. PARAMETER DSC$K_DTYPE_H = '0000001C'X ! H_floating. 128-bit H_floating quantity representing PARAMETER DSC64$K_DTYPE_H = '0000001C'X ! a quadruple-precision number. PARAMETER DSC$K_DTYPE_FC = '0000000C'X ! F_floating complex. Ordered pair of F_floating PARAMETER DSC64$K_DTYPE_FC = '0000000C'X ! quantities representing a single-precision complex ! number. The lower addressed quantity is the ! real part, the higher addressed quantity is the ! imaginary part. PARAMETER DSC$K_DTYPE_DC = '0000000D'X ! D_floating complex. Ordered pair of D_floating PARAMETER DSC64$K_DTYPE_DC = '0000000D'X ! quantities representing a double-precision complex ! number. The lower addressed quantity is the ! real part, the higher addressed quantity is the ! imaginary part. PARAMETER DSC$K_DTYPE_GC = '0000001D'X ! G_floating complex. Ordered pair of G_floating PARAMETER DSC64$K_DTYPE_GC = '0000001D'X ! quantities representing a double-precision complex ! number. The lower addressed quantity is the ! real part, the higher addressed quantity is the ! imaginary part. PARAMETER DSC$K_DTYPE_HC = '0000001E'X ! H_floating complex. Ordered pair of H_floating PARAMETER DSC64$K_DTYPE_HC = '0000001E'X ! quantities representing a quadruple-precision complex ! number. The lower addressed quantity is the ! real part, the higher addressed quantity is the ! imaginary part. PARAMETER DSC$K_DTYPE_FS = '00000034'X ! IEEE floating basic single S. 32-bit quantity representi PARAMETER DSC64$K_DTYPE_FS = '00000034'X ! a single-precision number. PARAMETER DSC$K_DTYPE_FT = '00000035'X ! IEEE floating basic double T. 64-bit quantity representi PARAMETER DSC64$K_DTYPE_FT = '00000035'X ! a double-precision number. PARAMETER DSC$K_DTYPE_FSC = '00000036'X ! IEEE floating basic single S complex. Ordered pair of S ! IEEE floating basic single S complex. Ordered pair of S_flo PARAMETER DSC64$K_DTYPE_FSC = '00000036'X ! quantities representing a single-precision complex ! number. The lower addressed quantity is the ! real part, the higher addressed quantity is the ! imaginary part. PARAMETER DSC$K_DTYPE_FTC = '00000037'X ! IEEE floating basic double T complex. Ordered pair of T ! IEEE floating basic double T complex. Ordered pair of T_flo PARAMETER DSC64$K_DTYPE_FTC = '00000037'X ! quantities representing a double-precision complex ! number. The lower addressed quantity is the ! real part, the higher addressed quantity is the ! imaginary part. PARAMETER DSC$K_DTYPE_FX = '00000039'X ! IEEE floating basic quadruple X. 128-bit quantity repres ! IEEE floating basic quadruple X. 128-bit quantity represent PARAMETER DSC64$K_DTYPE_FX = '00000039'X ! an extended-precision number. PARAMETER DSC$K_DTYPE_FXC = '0000003A'X ! IEEE floating basic quadruple X complex. Ordered pair o ! IEEE floating basic quadruple X complex. Ordered pair of X_ PARAMETER DSC64$K_DTYPE_FXC = '0000003A'X ! quantities representing an extended-precision complex ! number. The lower addressed quantity is the ! real part, the higher addressed quantity is the ! imaginary part. PARAMETER DSC$K_DTYPE_CIT = '0000001F'X ! COBOL Intermediate Temporary. Floating point PARAMETER DSC64$K_DTYPE_CIT = '0000001F'X ! datum with an 18 digit normalized decimal ! fraction and a 2 digit decimal exponent. The ! fraction is represented as a packed decimal ! number. The exponent is represented as a ! 16-bit 2's complement integer. ! The following string types are ordinarily described by a string ! descriptor. The data type codes below occur in those descriptors: PARAMETER DSC$K_DTYPE_T = '0000000E'X ! Character-coded text. A single 8-bit character PARAMETER DSC64$K_DTYPE_T = '0000000E'X ! (atomic data type) or a sequence of 0 to ! 2**16-1 8-bit characters (string data type). PARAMETER DSC$K_DTYPE_VT = '00000025'X ! Varying Character-coded Text Data Type. PARAMETER DSC64$K_DTYPE_VT = '00000025'X PARAMETER DSC$K_DTYPE_T2 = '00000026'X ! 16-bit Text (Asian workstations) PARAMETER DSC64$K_DTYPE_T2 = '00000026'X PARAMETER DSC$K_DTYPE_NU = '0000000F'X ! Numeric string, unsigned. PARAMETER DSC64$K_DTYPE_NU = '0000000F'X PARAMETER DSC$K_DTYPE_NL = '00000010'X ! Numeric string, left separate sign. PARAMETER DSC64$K_DTYPE_NL = '00000010'X PARAMETER DSC$K_DTYPE_NLO = '00000011'X ! Numeric string, left overpunched sign. PARAMETER DSC64$K_DTYPE_NLO = '00000011'X PARAMETER DSC$K_DTYPE_NR = '00000012'X ! Numeric string, right separate sign. PARAMETER DSC64$K_DTYPE_NR = '00000012'X PARAMETER DSC$K_DTYPE_NRO = '00000013'X ! Numeric string, right overpunched sign. PARAMETER DSC64$K_DTYPE_NRO = '00000013'X PARAMETER DSC$K_DTYPE_NZ = '00000014'X ! Numeric string, zoned sign. PARAMETER DSC64$K_DTYPE_NZ = '00000014'X PARAMETER DSC$K_DTYPE_P = '00000015'X ! Packed decimal string. PARAMETER DSC64$K_DTYPE_P = '00000015'X PARAMETER DSC$K_DTYPE_V = '00000001'X ! Bit. An aligned bit string. PARAMETER DSC64$K_DTYPE_V = '00000001'X PARAMETER DSC$K_DTYPE_VU = '00000022'X ! Bit Unaligned. PARAMETER DSC64$K_DTYPE_VU = '00000022'X ! The following encodings are used for miscellaneous data types: PARAMETER DSC$K_DTYPE_ZI = '00000016'X ! Sequence of instructions. PARAMETER DSC64$K_DTYPE_ZI = '00000016'X PARAMETER DSC$K_DTYPE_ZEM = '00000017'X ! Procedure entry mask. PARAMETER DSC64$K_DTYPE_ZEM = '00000017'X PARAMETER DSC$K_DTYPE_DSC = '00000018'X ! Descriptor. This data type allows a descriptor PARAMETER DSC64$K_DTYPE_DSC = '00000018'X ! to be an argument data type, thereby allowing ! the use of levels of descriptors. PARAMETER DSC$K_DTYPE_BPV = '00000020'X ! Bound Procedure Value. A two longword entity PARAMETER DSC64$K_DTYPE_BPV = '00000020'X ! in which the first longword contains the address ! of a procedure entry mask and the second longword ! contains the environment value. The environmeent ! value is determined in a language specific ! fashion when the original Bound Procedure Value ! is generated. When the bound procedure is ! invoked, the calling program loads the second ! longword into R1. This data type can be passed ! using the immediate value mechanism when the ! environment value is not needed. In this case ! the argument list entry contains the address of ! the procedure entry mask and the second longword ! is omitted. PARAMETER DSC$K_DTYPE_BLV = '00000021'X ! Bound label value. PARAMETER DSC64$K_DTYPE_BLV = '00000021'X PARAMETER DSC$K_DTYPE_ADT = '00000023'X ! Absolute Date and Time PARAMETER DSC64$K_DTYPE_ADT = '00000023'X ! K DTYPE_???,36 /* DTYPE code 36 is reserved for future definition ! The following types are used by the VAX/VMS Debug Facility: \FOR ! INTERNAL DOCUMENTATION ONLY. For details, see VAX/VMS Debug Facility ! Documentation.\ PARAMETER DSC$K_DTYPE_CAD = '000000B2'X ! Address calculation command PARAMETER DSC64$K_DTYPE_CAD = '000000B2'X PARAMETER DSC$K_DTYPE_ENT = '000000B3'X ! Entry global definition PARAMETER DSC64$K_DTYPE_ENT = '000000B3'X PARAMETER DSC$K_DTYPE_GBL = '000000B4'X ! Global symbol definition PARAMETER DSC64$K_DTYPE_GBL = '000000B4'X PARAMETER DSC$K_DTYPE_EPT = '000000B5'X ! Entry point to routine. PARAMETER DSC64$K_DTYPE_EPT = '000000B5'X PARAMETER DSC$K_DTYPE_R11 = '000000B6'X ! Line number relative to R11 correlation PARAMETER DSC64$K_DTYPE_R11 = '000000B6'X ! table. PARAMETER DSC$K_DTYPE_FLD = '000000B7'X ! BLISS FIELD name. PARAMETER DSC64$K_DTYPE_FLD = '000000B7'X PARAMETER DSC$K_DTYPE_PCT = '000000B8'X ! PSECT information. PARAMETER DSC64$K_DTYPE_PCT = '000000B8'X PARAMETER DSC$K_DTYPE_DPC = '000000B9'X ! PC correlation table for FORTRAN IV+ PARAMETER DSC64$K_DTYPE_DPC = '000000B9'X PARAMETER DSC$K_DTYPE_LBL = '000000BA'X ! LITERAL or LABEL PARAMETER DSC64$K_DTYPE_LBL = '000000BA'X PARAMETER DSC$K_DTYPE_SLB = '000000BB'X ! Label in non-assembly language modules PARAMETER DSC64$K_DTYPE_SLB = '000000BB'X PARAMETER DSC$K_DTYPE_MOD = '000000BC'X ! Beginning of new module PARAMETER DSC64$K_DTYPE_MOD = '000000BC'X PARAMETER DSC$K_DTYPE_EOM = '000000BD'X ! End of module PARAMETER DSC64$K_DTYPE_EOM = '000000BD'X PARAMETER DSC$K_DTYPE_RTN = '000000BE'X ! Beginning of new routine PARAMETER DSC64$K_DTYPE_RTN = '000000BE'X PARAMETER DSC$K_DTYPE_EOR = '000000BF'X ! End of routine PARAMETER DSC64$K_DTYPE_EOR = '000000BF'X ! The following type codes are RESERVED for future use: ! 37-177 RESERVED to DEC ! 192-255 RESERVED to CSS and customers ! ! A uniform descriptor mechanism is defined for use by all procedures ! which conform to this standard. Descriptors are uniformly typed and ! the mechanism is extensible. As new varieties of descriptor become ! necessary, they will be added to this catalogue. ! Note: ! ! All fields represent unsigned quantities unless explicitly stated ! otherwise. ! ! 32-bit Descriptor Prototype ! ! Each class of 32-bit descriptor consists of at least 2 longwords in ! the following format: ! ! +-------+-------+---------------+ ! | CLASS | DTYPE | LENGTH | :Descriptor ! +-------+-------+---------------+ ! | POINTER | ! +-------------------------------+ ! ! DSC$W_LENGTH A one-word field specific to the descriptor ! <0,15:0> class/* typically a 16-bit (unsigned) length. ! ! DSC$B_DTYPE A one-byte atomic data type code ! <0,23:16> ! ! DSC$B_CLASS A one-byte descriptor class code (see below) ! <0,31:24> ! ! DSC$A_POINTER A longword pointing to the first byte of the ! <1,31:0> data element described. ! ! 64-bit Descriptor Prototype ! ! Each class of 64-bit descriptor consists of at least 3 aligned ! quadwords in the following format: ! ! +-------+-------+---------------+ ! | CLASS | DTYPE | MBO (=1) | :Descriptor ! +-------+-------+---------------+ ! | MBMO (=-1) | ! +-------------------------------+ ! | | : 8 ! +- LENGTH -+ ! | | ! +-------------------------------+ ! | | : 16 ! +- POINTER -+ ! | | ! +-------------------------------+ ! ! DSC64$W_MBO A one-word field which must contain the value 1. ! <0,15:0> ! ! DSC64$B_DTYPE A one-byte atomic data type code ! <0,23:16> ! ! DSC64$B_CLASS A one-byte descriptor class code (see below) ! <0,31:24> ! ! DSC$L_MBMO A longword field which must contain the value -1. ! <1,31:0> ! ! DSC64$Q_LENGTH A quadword containing the length of the ! <2,63:0> data element described. ! ! DSC64$PQ_POINTER A quadword pointing to the first byte of the ! <4,63:0> data element described. ! ! Define the descriptor class codes ! PARAMETER DSC$K_CLASS_Z = '00000000'X ! Unspecified PARAMETER DSC64$K_CLASS_Z = '00000000'X ! Unspecified PARAMETER DSC$K_CLASS_S = '00000001'X ! Scalar, String Descriptor PARAMETER DSC64$K_CLASS_S = '00000001'X ! Scalar, String Descriptor PARAMETER DSC$K_CLASS_D = '00000002'X ! Dynamic String Descriptor PARAMETER DSC64$K_CLASS_D = '00000002'X ! Dynamic String Descriptor PARAMETER DSC$K_CLASS_V = '00000003'X ! Reserved for use by Digital PARAMETER DSC64$K_CLASS_V = '00000003'X ! Reserved for use by Digital PARAMETER DSC$K_CLASS_A = '00000004'X ! Array Descriptor PARAMETER DSC64$K_CLASS_A = '00000004'X ! Array Descriptor PARAMETER DSC$K_CLASS_P = '00000005'X ! Procedure Descriptor PARAMETER DSC64$K_CLASS_P = '00000005'X ! Procedure Descriptor PARAMETER DSC$K_CLASS_PI = '00000006'X ! Procedure Incarnation Descriptor PARAMETER DSC64$K_CLASS_PI = '00000006'X ! Procedure Incarnation Descriptor PARAMETER DSC$K_CLASS_J = '00000007'X ! Reserved for use by Digital PARAMETER DSC64$K_CLASS_J = '00000007'X ! Reserved for use by Digital PARAMETER DSC$K_CLASS_JI = '00000008'X ! Obsolete PARAMETER DSC$K_CLASS_SD = '00000009'X ! Decimal Scalar String Descriptor PARAMETER DSC64$K_CLASS_SD = '00000009'X ! Decimal Scalar String Descriptor PARAMETER DSC$K_CLASS_NCA = '0000000A'X ! Non-contiguous Array Descriptor PARAMETER DSC64$K_CLASS_NCA = '0000000A'X ! Non-contiguous Array Descriptor PARAMETER DSC$K_CLASS_VS = '0000000B'X ! Varying String Descriptor PARAMETER DSC64$K_CLASS_VS = '0000000B'X ! Varying String Descriptor PARAMETER DSC$K_CLASS_VSA = '0000000C'X ! Varying String Array Descriptor PARAMETER DSC64$K_CLASS_VSA = '0000000C'X ! Varying String Array Descriptor PARAMETER DSC$K_CLASS_UBS = '0000000D'X ! Unaligned Bit String Descriptor PARAMETER DSC64$K_CLASS_UBS = '0000000D'X ! Unaligned Bit String Descriptor PARAMETER DSC$K_CLASS_UBA = '0000000E'X ! Unaligned Bit Array Descriptor PARAMETER DSC64$K_CLASS_UBA = '0000000E'X ! Unaligned Bit Array Descriptor PARAMETER DSC$K_CLASS_SB = '0000000F'X ! String with Bounds Descriptor PARAMETER DSC64$K_CLASS_SB = '0000000F'X ! String with Bounds Descriptor PARAMETER DSC$K_CLASS_UBSB = '00000010'X ! Unaligned Bit String with Bounds Descriptor PARAMETER DSC64$K_CLASS_UBSB = '00000010'X ! Unaligned Bit String with Bounds Descriptor ! ! The following descriptor class is FOR INTERNAL USE ONLY by the VAX ! Common Run-Time Library and Debugger. This descriptor is not passed ! between separately compiled modules. For further information, see ! VAX-11 BASIC Description of Generated Code, Software Document ! Retrieval Number JBS-79-004. PARAMETER DSC$K_CLASS_BFA = '000000BF'X ! BASIC File Array Descriptor ! Descriptor classes 17-190 are RESERVED to DEC. Classes ! 192 through 255 are RESERVED to CSS and customers. ! ! Array Descriptor (DSC$K_CLASS_A) ! ! An array descriptor consists of 3 contiguous blocks. The first block ! contains the descriptor prototype information and is part of every ! array descriptor. The second and third blocks are optional. If the ! third block is present then so is the second. ! ! A complete 32-bit array descriptor has the form: ! ! +-------+-------+---------------+ ! | 4 | DTYPE | LENGTH | :Descriptor ! +-------+-------+---------------+ ! | POINTER | ! +-------+-------+---------------+ ! | DIMCT | AFLAGS|DIGITS | SCALE | Block 1 - Prototype ! +-------+-------+---------------+ ! | ARSIZE | ! +-------------------------------+ ! ! +-------------------------------+ ! | A0 | ! +-------------------------------+ ! | M1 | ! +-------------------------------+ ! | ... | Block 2 - Multipliers ! +-------------------------------+ ! | M(n-1) | ! +-------------------------------+ ! | Mn | ! +-------------------------------+ ! ! +-------------------------------+ ! | L1 | ! +-------------------------------+ ! | U1 | ! +-------------------------------+ ! | ... | Block 3 - Bounds ! +-------------------------------+ ! | Ln | ! +-------------------------------+ ! | Un | ! +-------------------------------+ ! ! Block 1 of a 64-bit array descriptor has the following ! form. Blocks 2 and 3 have the same form as above, ! EXCEPT that the entries are QUADWORDS rather than ! longwords. ! ! +-------+-------+---------------+ ! | 4 | DTYPE | MBO | :Descriptor ! +-------+-------+---------------+ ! | MBMO | ! +-------+-------+---------------+ ! | | : 8 ! +- LENGTH -+ ! | | ! +-------------------------------+ ! | | : 16 ! +- POINTER -+ ! | | ! +-------------------------------+ ! | DIMCT | AFLAGS|DIGITS | SCALE | : 24 ! +-------+-------+---------------+ ! | MBZ | ! +-------+-------+---------------+ ! | | : 32 ! +- ARSIZE -+ ! | | ! +-------------------------------+ ! ! ! Define descriptor fields. 32-bit versions are defined first, followed ! by the 64-bit equivalents. ! ! \The following three fields are only valid for descriptor ! class DSC$K_CLASS_BFA (see above). \ STRUCTURE /DSCDEF/ INTEGER*4 DSC$A_HANDLE ! The address of a vector of data concerning the ! current state of processing of the array. This ! is set to zero by the creator of the ! descriptor, and maintained thereafter by the ! BASIC file array processing functions. INTEGER*4 DSC$L_BYTEOFF ! Byte offset in the file of element 0,0,...,0 ! of the array. This need not be within the ! array, or even within the file if the array ! does not have zero origin. INTEGER*4 DSC$L_LOGUNIT ! The logical unit number (BASIC channel) on ! which the file containing the array has ! been opened. This is set by the creator of the ! descriptor before first referencing the array. ! ! End of BASIC File Array specific descriptor fields. The remaining ! fields are common to all array descriptors. ! ! INTEGER*2 DSC$W_LENGTH ! A one-word field specifiec to the descriptor class; ! typically a 16-bit (unsigned) length. END STRUCTURE ! DSCDEF STRUCTURE /DSCDEF1/ INTEGER*2 DSC$W_MAXSTRLEN ! Max length of the BODY field of the varying string ! in bytes in the range 0 to 2**16-1. ! (Classes VS, VSA) BYTE DSC$B_DTYPE ! A one-byte atomic data type code ! Symbols used in this filed have form: DSC$K_DTYPE_t ! where t is the data type mnemonic from above ! and agrees with methodology manual. BYTE DSC$B_CLASS ! A one-byte descriptor class code (see above). ! Symbols used in this field have form: DSC$K_CLASS_f ! where f is the argument form mnemonic from above ! and agrees with the methodology manual. INTEGER*4 DSC$A_POINTER ! An address pointing to the first byte of the data ! element described. END STRUCTURE ! DSCDEF1 PARAMETER DSC$K_Z_BLN = '00000008'X ! Block length in bytes for Z class descr. PARAMETER DSC$C_Z_BLN = '00000008'X ! Block length in bytes for Z class descr. PARAMETER DSC$K_S_BLN = '00000008'X ! Block length in bytes for S class descr. PARAMETER DSC$C_S_BLN = '00000008'X ! Block length in bytes for S class descr. PARAMETER DSC$K_D_BLN = '00000008'X ! Block length in bytes for D class descr. PARAMETER DSC$C_D_BLN = '00000008'X ! Block length in bytes for D class descr. PARAMETER DSC$K_P_BLN = '00000008'X ! Block length in bytes for P class descr. PARAMETER DSC$C_P_BLN = '00000008'X ! Block length in bytes for P class descr. PARAMETER DSC$K_J_BLN = '00000008'X ! Block length in bytes for J class descr. PARAMETER DSC$C_J_BLN = '00000008'X ! Block length in bytes for J class descr. PARAMETER DSC$K_VS_BLN = '00000008'X ! Block length in bytes for VS class descr. PARAMETER DSC$C_VS_BLN = '00000008'X ! Block length in bytes for VS class descr. STRUCTURE /DSCDEF2/ BYTE %FILL(1:4) INTEGER*4 DSC$A_BASE ! Base of address relative to which the signed relative ! bit position, POS, is used to locate the bit string. ! (Classes UBS, UBA and UBSB) END STRUCTURE ! DSCDEF2 ! + ! End of common definitions for all descriptors. ! - PARAMETER DSC$K_UBS_BLN = '0000000C'X ! Block length in bytes for UBS class descr. PARAMETER DSC$C_UBS_BLN = '0000000C'X ! Block length in bytes for UBS class descr. STRUCTURE /DSCDEF3/ BYTE %FILL(1:8) INTEGER*4 DSC$L_POS ! Signed longword relative bit position ! with respect to BASE of the first bit ! of unaligned bit string ! WARNING!! Do not use this symbol to reference ! class UBA descriptors! The DSC$L_POS in that ! descriptor is at a variable location after the ! bounds and multiplier blocks. END STRUCTURE ! DSCDEF3 ! + ! *Obsolete* Varying type descriptor definition ! This form should not be used. ! - STRUCTURE /DSCDEF4/ BYTE %FILL(1:8) INTEGER*2 DSC$W_MAXLEN ! An unsigned word specifying the ! maximum length of the data item ! (i.e., the space allocated) INTEGER*2 %FILL ! reserved word END STRUCTURE ! DSCDEF4 ! + ! Array Descriptor definitions ! - PARAMETER DSC$K_SD_BLN = '0000000C'X ! Block length in bytes for SD class descr. PARAMETER DSC$C_SD_BLN = '0000000C'X ! Block length in bytes for SD class descr. STRUCTURE /DSCDEF5/ BYTE %FILL(1:8) BYTE DSC$B_SCALE ! Signed power of ten multiplier to convert the ! internal form to external form. For example, ! if internal number is 123 and scale is +1, ! then the represented external number is 1230. BYTE DSC$B_DIGITS ! If non-zero, unsigned number of decimal ! digits in the external representation. If ! zero, the number of digits can be computed ! based on DSC$W_LENGTH. UNION MAP BYTE DSC$B_AFLAGS ! Array flag bits. END MAP MAP PARAMETER DSC$S_FL_REDIM = 1 PARAMETER DSC$V_FL_REDIM = 4 ! If set, the array can be redimensioned; ! i.e., DSC$A_A0, DSC$L_Mi, DSC$L_Li, and ! DSC$L_Ui may be changed. The redimensioned ! array cannot exceed the size allocated to ! the array (i.e. DSC$L_ARSIZE). PARAMETER DSC$S_FL_COLUMN = 1 PARAMETER DSC$V_FL_COLUMN = 5 ! If set, the elements of the array are ! stored by columns (FORTRAN)> Otherwise ! the elements are stored by rows. PARAMETER DSC$S_FL_COEFF = 1 PARAMETER DSC$V_FL_COEFF = 6 ! If set, the multiplicative coefficients in ! Block 2 are present. PARAMETER DSC$S_FL_BOUNDS = 1 PARAMETER DSC$V_FL_BOUNDS = 7 ! If set, the bounds information in Block 3 ! is present. BYTE %FILL (1) END MAP END UNION BYTE DSC$B_DIMCT ! Number of dimensions INTEGER*4 DSC$L_ARSIZE ! Total size of array (in bytes unless DTYPE is ! EQUL DSC$K_DTYPE_V or DSC$K_DTYPE_P). INTEGER*4 DSC$A_A0 ! Address of element A(0,0,...,0). This ! need not be within the actual array/* it ! is the same as DSC$A_POINTER for 0-origin ! arrays. END STRUCTURE ! DSCDEF5 STRUCTURE /DSCDEF6/ BYTE %FILL(1:16) INTEGER*4 DSC$L_V0 ! Signed bit offset of element A(0,0,...0) with ! respect to BASE. (Class UBA) ! The following two fields have meaning only if the array is of ! class DSC$K_CLASS_NCA (Non-contiguous array). INTEGER*4 DSC$L_S1 ! Stride of the first dimension, i.e. the ! difference between the addresses of ! successive elements of the first dimension. INTEGER*4 DSC$L_S2 ! Stride of the second dimension. END STRUCTURE ! DSCDEF6 STRUCTURE /DSCDEF7/ BYTE %FILL(1:20) INTEGER*4 DSC$L_M1 ! Addressing coefficient M1 = U1-L1+1 INTEGER*4 DSC$L_M2 ! Addressing coefficient M2 = U2-L2+1 END STRUCTURE ! DSCDEF7 ! + ! Procedure Incarnation descriptor (DSC$K_CLASS_PI) and ! Label Incarnation descriptor (DSC$K_CLASS_JI). ! - PARAMETER DSC$K_PI_BLN = '0000000C'X ! Block length in bytes for PI class descr. PARAMETER DSC$C_PI_BLN = '0000000C'X ! Block length in bytes for PI class descr. PARAMETER DSC$K_JI_BLN = '0000000C'X ! block length in bytes for JI class descr. PARAMETER DSC$C_JI_BLN = '0000000C'X ! block length in bytes for JI class descr. STRUCTURE /DSCDEF8/ BYTE %FILL(1:8) INTEGER*4 DSC$A_FRAME ! Address of frame END STRUCTURE ! DSCDEF8 ! + ! String with Bounds descriptor (DSC$K_CLASS_SB). ! - STRUCTURE /DSCDEF9/ BYTE %FILL(1:8) INTEGER*4 DSC$L_SB_L1 ! Signed lower bound of first dimension INTEGER*4 DSC$L_SB_U1 ! Signed upper bound of first dimension END STRUCTURE ! DSCDEF9 ! + ! Unaligned Bit String with Bounds descriptor (DSC$K_CLASS_UBSB). ! - STRUCTURE /DSCDEF10/ BYTE %FILL(1:12) INTEGER*4 DSC$L_UBSB_L1 ! Signed lower bound of first dimension INTEGER*4 DSC$L_UBSB_U1 ! Signed upper bound of first dimension END STRUCTURE ! DSCDEF10 ! ! 64-bit versions of the descriptors defined above. These are expected ! to be quadword aligned. ! - STRUCTURE /DSCDEF64/ BYTE %FILL(1:8) ! No 64-bit versions of handle/byteoff/logunit INTEGER*4 DSC64$Q_LENGTH(2) ! 64-bit LENGTH field END STRUCTURE ! DSCDEF64 STRUCTURE /DSCDEF1_64/ INTEGER*2 DSC64$W_MBO ! 32-bit LENGTH field is MBO in 64-bit descs BYTE DSC64$B_DTYPE ! Identical to 32-bit form BYTE DSC64$B_CLASS ! Identical to 32-bit form INTEGER*4 DSC64$L_MBMO ! 32-bit POINTER field is MBMO in 64-bit descs INTEGER*4 DSC64$Q_MAXSTRLEN(2) ! 64-bit MAXSTRLEN field INTEGER*8 DSC64$PQ_POINTER ! 64-bit pointer field END STRUCTURE ! DSCDEF1_64 PARAMETER DSC64$K_Z_BLN = '00000018'X ! Block length in bytes for 64-bit Z class descr. PARAMETER DSC64$C_Z_BLN = '00000018'X ! Block length in bytes for 64-bit Z class descr. PARAMETER DSC64$K_S_BLN = '00000018'X ! Block length in bytes for 64-bit S class descr. PARAMETER DSC64$C_S_BLN = '00000018'X ! Block length in bytes for 64-bit S class descr. PARAMETER DSC64$K_D_BLN = '00000018'X ! Block length in bytes for 64-bit D class descr. PARAMETER DSC64$C_D_BLN = '00000018'X ! Block length in bytes for 64-bit D class descr. PARAMETER DSC64$K_P_BLN = '00000018'X ! Block length in bytes for 64-bit P class descr. PARAMETER DSC64$C_P_BLN = '00000018'X ! Block length in bytes for 64-bit P class descr. PARAMETER DSC64$K_J_BLN = '00000018'X ! Block length in bytes for 64-bit J class descr. PARAMETER DSC64$C_J_BLN = '00000018'X ! Block length in bytes for 64-bit J class descr. PARAMETER DSC64$K_VS_BLN = '00000018'X ! Block length in bytes for 64-bit VS class descr. PARAMETER DSC64$C_VS_BLN = '00000018'X ! Block length in bytes for 64-bit VS class descr. STRUCTURE /DSCDEF2_64/ BYTE %FILL(1:16) INTEGER*8 DSC64$PQ_BASE ! 64-bit BASE field END STRUCTURE ! DSCDEF2_64 ! + ! End of common definitions for all descriptors. ! - PARAMETER DSC64$K_UBS_BLN = '00000020'X ! Block length in bytes for 64-bit UBS class descr. PARAMETER DSC64$C_UBS_BLN = '00000020'X ! Block length in bytes for 64-bit UBS class descr. STRUCTURE /DSCDEF3_64/ BYTE %FILL(1:24) INTEGER*4 DSC64$Q_POS(2) ! 64-bit POS field END STRUCTURE ! DSCDEF3_64 ! ! 64-bit version of the array descriptor ! PARAMETER DSC64$K_SD_BLN = '00000020'X ! Block length in bytes for 64-bit SD class descr. PARAMETER DSC64$C_SD_BLN = '00000020'X ! Block length in bytes for 64-bit SD class descr. STRUCTURE /DSCDEF5_64/ BYTE %FILL(1:24) BYTE DSC64$B_SCALE ! 64-bit descriptor SCALE BYTE DSC64$B_DIGITS ! 64-bit descriptor DIGITS UNION MAP BYTE DSC64$B_AFLAGS ! 64-bit descriptor AFLAGS END MAP MAP PARAMETER DSC64$S_FL_REDIM = 1 PARAMETER DSC64$V_FL_REDIM = 4 PARAMETER DSC64$S_FL_COLUMN = 1 PARAMETER DSC64$V_FL_COLUMN = 5 PARAMETER DSC64$S_FL_COEFF = 1 PARAMETER DSC64$V_FL_COEFF = 6 PARAMETER DSC64$S_FL_BOUNDS = 1 PARAMETER DSC64$V_FL_BOUNDS = 7 BYTE %FILL (1) END MAP END UNION BYTE DSC64$B_DIMCT ! 64-bit descriptor DIMCT INTEGER*4 DSC64$L_MBZ ! MBZ field for quad alignment. INTEGER*4 DSC64$Q_ARSIZE(2) ! 64-bit descriptor ARSIZE INTEGER*8 DSC64$PQ_A0 ! 64-bit descriptor A0 END STRUCTURE ! DSCDEF5_64 STRUCTURE /DSCDEF6_64/ BYTE %FILL(1:40) INTEGER*4 DSC64$Q_V0(2) ! 64-bit descriptor V0 INTEGER*4 DSC64$Q_S1(2) ! Stride of the first dimension INTEGER*4 DSC64$Q_S2(2) ! Stride of the second dimension. END STRUCTURE ! DSCDEF6_64 STRUCTURE /DSCDEF7_64/ BYTE %FILL(1:48) INTEGER*4 DSC64$Q_M1(2) ! Addressing coefficient M1 = U1-L1+1 INTEGER*4 DSC64$Q_M2(2) ! Addressing coefficient M2 = U2-L2+1 END STRUCTURE ! DSCDEF7_64 PARAMETER DSC64$K_PI_BLN = '00000020'X ! Block length in bytes for 64-bit PI class descr. PARAMETER DSC64$C_PI_BLN = '00000020'X ! Block length in bytes for 64-bit PI class descr. PARAMETER DSC64$K_JI_BLN = '00000020'X ! block length in bytes for 64-bit JI class descr. PARAMETER DSC64$C_JI_BLN = '00000020'X ! block length in bytes for 64-bit JI class descr. STRUCTURE /DSCDEF8_64/ BYTE %FILL(1:24) INTEGER*8 DSC64$PQ_FRAME ! Address of frame END STRUCTURE ! DSCDEF8_64 STRUCTURE /DSCDEF9_64/ BYTE %FILL(1:24) INTEGER*4 DSC64$Q_SB_L1(2) ! Signed lower bound of first dimension INTEGER*4 DSC64$Q_SB_U1(2) ! Signed upper bound of first dimension END STRUCTURE ! DSCDEF9_64 STRUCTURE /DSCDEF10_64/ BYTE %FILL(1:32) INTEGER*4 DSC64$Q_UBSB_L1(2) ! Signed lower bound of first dimension INTEGER*4 DSC64$Q_UBSB_U1(2) ! Signed upper bound of first dimension END STRUCTURE ! DSCDEF10_64 !DEC$ END OPTIONS