%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$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_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX HFLOAT REAL_PART HFLOAT IMAGINARY_PART END RECORD %LET %BASIC$H_FLOATING_COMPLEX_DECL = 1 %END %IF ! ! record access block (rab) definitions ! ! there is one rab per connected stream ! it is used for all communications between the user ! and rms concerning operations on the stream ! ! +++++***** ! the fields thru ctx cannot be changed due to commonality ! with the fab ! DECLARE LONG CONSTANT RAB$C_BID = 1 ! code for rab DECLARE LONG CONSTANT RAB$M_PPF_RAT = x'00003FC0' DECLARE LONG CONSTANT RAB$M_PPF_IND = x'00004000' DECLARE LONG CONSTANT RAB$M_PPISI = x'00008000' DECLARE LONG CONSTANT RAB$M_ASY = x'00000001' DECLARE LONG CONSTANT RAB$M_TPT = x'00000002' DECLARE LONG CONSTANT RAB$M_REA = x'00000004' DECLARE LONG CONSTANT RAB$M_RRL = x'00000008' DECLARE LONG CONSTANT RAB$M_UIF = x'00000010' DECLARE LONG CONSTANT RAB$M_MAS = x'00000020' DECLARE LONG CONSTANT RAB$M_FDL = x'00000040' DECLARE LONG CONSTANT RAB$M_REV = x'00000080' DECLARE LONG CONSTANT RAB$M_EOF = x'00000100' DECLARE LONG CONSTANT RAB$M_RAH = x'00000200' DECLARE LONG CONSTANT RAB$M_WBH = x'00000400' DECLARE LONG CONSTANT RAB$M_BIO = x'00000800' DECLARE LONG CONSTANT RAB$M_CDK = x'00001000' DECLARE LONG CONSTANT RAB$M_LOA = x'00002000' DECLARE LONG CONSTANT RAB$M_LIM = x'00004000' DECLARE LONG CONSTANT RAB$M_SYNCSTS = x'00008000' DECLARE LONG CONSTANT RAB$M_LOC = x'00010000' DECLARE LONG CONSTANT RAB$M_WAT = x'00020000' DECLARE LONG CONSTANT RAB$M_ULK = x'00040000' DECLARE LONG CONSTANT RAB$M_RLK = x'00080000' DECLARE LONG CONSTANT RAB$M_NLK = x'00100000' DECLARE LONG CONSTANT RAB$M_KGE = x'00200000' DECLARE LONG CONSTANT RAB$M_KGT = x'00400000' DECLARE LONG CONSTANT RAB$M_NXR = x'00800000' DECLARE LONG CONSTANT RAB$M_RNE = x'01000000' DECLARE LONG CONSTANT RAB$M_TMO = x'02000000' DECLARE LONG CONSTANT RAB$M_CVT = x'04000000' DECLARE LONG CONSTANT RAB$M_RNF = x'08000000' DECLARE LONG CONSTANT RAB$M_ETO = x'10000000' DECLARE LONG CONSTANT RAB$M_PTA = x'20000000' DECLARE LONG CONSTANT RAB$M_PMT = x'40000000' DECLARE LONG CONSTANT RAB$M_CCO = x'80000000' DECLARE LONG CONSTANT RAB$M_EQNXT = x'00200000' DECLARE LONG CONSTANT RAB$M_NXT = x'00400000' DECLARE LONG CONSTANT RAB$M_NQL = x'00000001' DECLARE LONG CONSTANT RAB$M_NODLCKWT = x'00000002' DECLARE LONG CONSTANT RAB$M_NODLCKBLK = x'00000004' DECLARE LONG CONSTANT RAB$C_SEQ = 0 ! sequential access DECLARE LONG CONSTANT RAB$C_KEY = 1 ! keyed access DECLARE LONG CONSTANT RAB$C_RFA = 2 ! rfa access DECLARE LONG CONSTANT RAB$C_STM = 3 ! stream access ( valid only for sequential org ) DECLARE LONG CONSTANT RAB$C_MAXRAC = 2 ! Maximum RAC value currently supported by RMS DECLARE LONG CONSTANT RAB$K_BLN = 68 ! length of rab DECLARE LONG CONSTANT RAB$C_BLN = 68 ! length of rab DECLARE LONG CONSTANT RAB$S_RABDEF = 68 record RABDEF BYTE RAB$B_BID ! block id BYTE RAB$B_BLN ! block length group RAB$R_ISI_OVERLAY variant case WORD RAB$W_ISI ! internal stream index ! (ifi in fab) case group RAB$R_ISI_BITS ! move to bit 6 ! rat value for process-permanent files ! indirect access to process-permanent file ! (i.e., restricted operations) ! indicates that this is process-permanent stream WORD FILL_1_bits ! COMMENT ADDED BY SDL - FILL_1_bits contains bits FILL_1 through PPISI end group RAB$R_ISI_BITS end variant end group RAB$R_ISI_OVERLAY group RAB$R_ROP_OVERLAY variant case LONG RAB$L_ROP ! record options case group RAB$R_ROP_BITS0 ! asynchronous operations ! truncate put - allow sequential put not at ! eof, thus truncating file (seq. org only) ! ! these next two should be in the byte for bits ! input to $find or $get, but there is no room there ! ! lock record for read only, allow other readers ! read record regardless of lock ! ! update if existent ! mass-insert mode ! fast record deletion ! reverse-search - can only be set with NXT or EQNXT ! ! connect to eof ! read ahead ! write behind ! connect for bio only ! check for duplicate keys on $GET ! use bucket fill percentage ! compare for key limit reached on $get/$find seq. (idx only) ! Synchronous status notification for asynchronous routines. ! ! the following bits are input to ! $find or $get, (see above also REA and RRL) ! (separate byte) ! ! use locate mode ! wait if record not available ! manual unlocking ! allow readers for this locked record ! do not lock record ! key > or = ! key greater than ! get non-existent record ! ! the following bits are terminal qualifiers only ! (separate byte) ! ! read no echo ! use time-out period ! convert to upper case ! read no filter ! extended terminal operation ! purge type ahead ! use prompt buffer ! cancel control o on output LONG ASY_bits ! COMMENT ADDED BY SDL - ASY_bits contains bits ASY through CCO end group RAB$R_ROP_BITS0 case group RAB$R_ROP_BITS1 ! Synonyms for KGE and ! KGT LONG FILL_6_bits ! COMMENT ADDED BY SDL - FILL_6_bits contains bits FILL_6 through fill_3 end group RAB$R_ROP_BITS1 ! ! the following bits may be ! input to various rab-related ! operations ! case group RAB$R_ROP_FIELDS BYTE RABDEF$$_FILL_3 BYTE RAB$B_ROP1 ! various options BYTE RAB$B_ROP2 ! get/find options (use of this field discouraged ! due to REA and RRL being in a different byte) BYTE RAB$B_ROP3 ! terminal read options ! end group RAB$R_ROP_FIELDS end variant end group RAB$R_ROP_OVERLAY LONG RAB$L_STS ! status group RAB$R_STV_OVERLAY variant case LONG RAB$L_STV ! status value case group RAB$R_STV_FIELDS WORD RAB$W_STV0 ! low word of stv WORD RAB$W_STV2 ! high word of stv end group RAB$R_STV_FIELDS end variant end group RAB$R_STV_OVERLAY group RAB$R_RFA_OVERLAY variant case WORD RAB$W_RFA ( 1 to 3 ) ! record's file address case group RAB$R_RFA_FIELDS LONG RAB$L_RFA0 WORD RAB$W_RFA4 end group RAB$R_RFA_FIELDS end variant end group RAB$R_RFA_OVERLAY WORD RABDEF$$_FILL_4 ! (reserved - rms release 1 optimizes stores ! to the rfa field to be a move quad, overwriting ! this reserved word) LONG RAB$L_CTX ! user context ! -----***** group RAB$R_ROP_2_OVERLAY ! variant case WORD RAB$W_ROP_2 ! extension to record options in traditional RAB case group RAB$R_ROP_2_BITS0 ! no query locking (record level) ! *** "noop" - NQL not implemented on VAX (see X-16) *** ! no deadlock wait ! no deadlock blocking ! reserved for future development WORD NQL_bits ! COMMENT ADDED BY SDL - NQL_bits contains bits NQL through FILL_5 end group RAB$R_ROP_2_BITS0 end variant end group RAB$R_ROP_2_OVERLAY BYTE RAB$B_RAC ! record access BYTE RAB$B_TMO ! time-out period WORD RAB$W_USZ ! user buffer size WORD RAB$W_RSZ ! record buffer size LONG RAB$L_UBF ! user buffer address LONG RAB$L_RBF ! record buffer address LONG RAB$L_RHB ! record header buffer addr group RAB$R_KBF_OVERLAY variant case LONG RAB$L_KBF ! key buffer address case LONG RAB$L_PBF ! prompt buffer addr end variant end group RAB$R_KBF_OVERLAY group RAB$R_KSZ_OVERLAY variant case BYTE RAB$B_KSZ ! key buffer size case BYTE RAB$B_PSZ ! prompt buffer size end variant end group RAB$R_KSZ_OVERLAY BYTE RAB$B_KRF ! key of reference BYTE RAB$B_MBF ! multi-buffer count BYTE RAB$B_MBC ! multi-block count group RAB$R_BKT_OVERLAY variant case LONG RAB$L_BKT ! bucket hash code, vbn, or rrn case LONG RAB$L_DCT ! duplicates count on key accessed on alternate key end variant end group RAB$R_BKT_OVERLAY LONG RAB$L_FAB ! related fab for connect LONG RAB$L_XAB ! XAB address end record RABDEF