! *** 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 ! ! TPARSE CONTROL BLOCK. THIS BLOCK IS ONE OF THE ARGUMENTS USED TO CALL TPARSE, ! AND BECOMES THE ARGUMENT LIST TO ACTION ROUTINES. ! DECLARE LONG CONSTANT TPA$K_COUNT0 = 8 ! ZERO LEVEL VALUE IS 8 DECLARE LONG CONSTANT TPA$M_BLANKS = x'00000001' DECLARE LONG CONSTANT TPA$M_ABBREV = x'00000002' DECLARE LONG CONSTANT TPA$M_ABBRFM = x'00000004' DECLARE LONG CONSTANT TPA$M_AMBIG = x'00010000' DECLARE LONG CONSTANT TPA$K_LENGTH0 = 36 ! LENGTH OF ZERO LEVEL PARAMETER BLOCK DECLARE LONG CONSTANT TPA$C_LENGTH0 = 36 ! LENGTH OF ZERO LEVEL PARAMETER BLOCK DECLARE LONG CONSTANT TPA$S_TPADEF = 36 record TPADEF LONG TPA$L_COUNT ! ARGUMENT COUNT (NUMBER OF LONGWORDS) group TPA$R_OPTIONS_OVERLAY variant case LONG TPA$L_OPTIONS ! OPTIONS LONGWORD case group TPA$R_OPTIONS_BITS ! PROCESS BLANKS AND TABS EXPLICITLY ! ALLOW MINIMAL ABBREVIATION ! ALLOW FIRST MATCH ABBREVIATION ! AMBIGUOUS KEYWORD AT THIS STATE LONG BLANKS_bits ! COMMENT ADDED BY SDL - BLANKS_bits contains bits BLANKS through FILL_30_ end group TPA$R_OPTIONS_BITS case group TPA$R_OPTIONS_FIELDS BYTE TPADEF$$_FILL_2 ( 1 to 3 ) BYTE TPA$B_MCOUNT ! MINIMUM ABBREVIATION ON KEYWORDS end group TPA$R_OPTIONS_FIELDS end variant end group TPA$R_OPTIONS_OVERLAY LONG TPA$L_STRINGCNT ! BYTE COUNT OF STRING BEING PARSED LONG TPA$L_STRINGPTR ! ADDRESS OF STRING BEING PARSED LONG TPA$L_TOKENCNT ! BYTE COUNT OF CURRENT MATCHING TOKEN LONG TPA$L_TOKENPTR ! ADDRESS OF MATCHING TOKEN group TPA$R_NUMBER_OVERLAY variant case group TPA$R_NUMBER_STRUCT group TPA$R_CHAR_OVERLAY variant case LONG TPA$L_CHAR ! ASCII CODE OF SINGLE CHARACTER TOKEN case BYTE TPA$B_CHAR ! BYTE FORM OF SINGLE CHAR CELL end variant end group TPA$R_CHAR_OVERLAY LONG TPA$L_NUMBER ! NUMERIC VALUE OF NUMERIC TOKEN end group TPA$R_NUMBER_STRUCT case BASIC$QUADWORD TPA$Q_NUMBER ! 64-bit NUMERIC VALUE OF NUMERIC TOKEN end variant end group TPA$R_NUMBER_OVERLAY LONG TPA$L_PARAM ! PARAMETER LONGWORD FROM STATE TABLE end record TPADEF ! ! TPARSE CONTROL BLOCK. THIS BLOCK IS ONE OF THE ARGUMENTS USED TO CALL TPARSE, ! AND BECOMES THE ARGUMENT LIST TO ACTION ROUTINES. ! DECLARE LONG CONSTANT TPA64$K_COUNT0 = -1 ! ZERO LEVEL VALUE IS -1 DECLARE LONG CONSTANT TPA64$M_BLANKS = x'00000001' DECLARE LONG CONSTANT TPA64$M_ABBREV = x'00000002' DECLARE LONG CONSTANT TPA64$M_ABBRFM = x'00000004' DECLARE LONG CONSTANT TPA64$M_AMBIG = x'00010000' DECLARE LONG CONSTANT TPA64$K_LENGTH0 = 80 ! LENGTH OF ZERO LEVEL PARAMETER BLOCK DECLARE LONG CONSTANT TPA64$C_LENGTH0 = 80 ! LENGTH OF ZERO LEVEL PARAMETER BLOCK DECLARE LONG CONSTANT TPA64$S_TPA64DEF = 80 record TPA64DEF LONG TPA64$L_COUNT ! ARGUMENT COUNT (NUMBER OF LONGWORDS) group TPA64$R_OPTIONS_OVERLAY variant case LONG TPA64$L_OPTIONS ! OPTIONS LONGWORD case group TPA64$R_OPTIONS_BITS ! PROCESS BLANKS AND TABS EXPLICITLY ! ALLOW MINIMAL ABBREVIATION ! ALLOW FIRST MATCH ABBREVIATION ! AMBIGUOUS KEYWORD AT THIS STATE LONG BLANKS_bits ! COMMENT ADDED BY SDL - BLANKS_bits contains bits BLANKS through FILL_31_ end group TPA64$R_OPTIONS_BITS case group TPA64$R_OPTIONS_FIELDS BYTE TPA64DEF$$_FILL_2 ( 1 to 3 ) BYTE TPA64$B_MCOUNT ! MINIMUM ABBREVIATION ON KEYWORDS end group TPA64$R_OPTIONS_FIELDS end variant end group TPA64$R_OPTIONS_OVERLAY BASIC$QUADWORD TPA64$Q_STRINGDESC ! DSC64 first quadword of string being parsed BASIC$QUADWORD TPA64$Q_STRINGCNT ! BYTE COUNT OF STRING BEING PARSED BASIC$QUADWORD TPA64$Q_STRINGPTR ! ADDRESS OF STRING BEING PARSED BASIC$QUADWORD TPA64$Q_TOKENDESC ! DSC64 first quadword OF CURRENT MATCHING TOKEN BASIC$QUADWORD TPA64$Q_TOKENCNT ! BYTE COUNT OF CURRENT MATCHING TOKEN BASIC$QUADWORD TPA64$Q_TOKENPTR ! ADDRESS OF MATCHING TOKEN group TPA64$R_CHAR_OVERLAY variant case BASIC$QUADWORD TPA64$Q_CHAR ! ASCII CODE OF SINGLE CHARACTER TOKEN case BYTE TPA64$B_CHAR ! BYTE FORM OF SINGLE CHAR CELL end variant end group TPA64$R_CHAR_OVERLAY BASIC$QUADWORD TPA64$Q_NUMBER ! NUMERIC VALUE OF NUMERIC TOKEN BASIC$QUADWORD TPA64$Q_PARAM ! PARAMETER LONGWORD FROM STATE TABLE end record TPA64DEF