*DECK ATLINE
USETEXT TENVIRN 
USETEXT TEXPRES 
USETEXT TOPTION 
USETEXT TREPORT 
USETEXT TRPTLST 
USETEXT TXSTD 
      PROC ATLINE;
  
#----------------------------------------------------------------------#
#                                                                      #
#  THE FOLLOWING PROCS ARE XDEF"D WITHIN THIS DECK:                    #
#                                                                      #
#     BEYOFF                       TURN OFF ASSUMED *BEYOND*           #
#     CKBYD                        CHECK FOR *BEYOND* WITH *TITLE*     #
#     LINENO                       SAVE LINE NUMBER                    #
#     SLINENO                                                          #
#                                                                      #
#----------------------------------------------------------------------#
  
  
      BEGIN 
  
           DEF COLUMN #XCOLUMN#;
          DEF CURTAB #XTAB#;
  
          BASED ARRAY A;
            ITEM AMRPT I(0,42,18),
                 ACLASS I(0,12,6),
              ADISPSIZ U(0,4,11), 
          ALLFG B(0,4,1), 
          UPBND I(0,30,12), 
          ADECPT  I(0,21,6),
                 AWPOS I(0,18,18),
         ABPOS  U(0,36,6),
                 ALG I(0,42,18),
                 AMURAL U(0,0,60),
         APICSZ I(0,27,15), 
                 AMLG I(0,0,3); 
      XREF ITEM CALLTYP      I;    # CALLTYPE OF THIS REPORT ENTRY     #
      XREF ITEM CTR          I; 
      ITEM ENDCOL       I;         # ENDING COLUMN POSITION            #
      ITEM J            I;         # SCRATCH TEMPORARY                 #
       DEF DFTRPWD #O"40000000000001000000"#;  #DEFAULT VALUE FOR 
                                                REPORTLIST WORD 1,
                                                BEYOND IS ON, 
                                                LINE NB IS 1# 
         DEF DFTRPWD2 #O"04010000000000000000"#;
  
      BASED ARRAY DTLARRAY;                                              QU3A344
        BEGIN                                                            QU3A344
        ITEM DTLFIRST1 I(0,24,12); # SAME AS DTLFIRST IN CREPORT       # QU3A344
        END                                                              QU3A344
      XREF ITEM HEADADDR I;        # ADDRESS OF DTLFIRST IN CREPORT    # QU3A344
      XREF ITEM SAMELINE     B; 
      XREF ITEM TLG          I; 
  
      XREF PROC DIAG;              # ISSUE DIAGNOSTIC MESSAGE TO USER  #
      XREF PROC SETPOS; 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
       XDEF PROC BEYOFF;               #PROC TO UNSET THE BEYOND FLAG#
       PROC BEYOFF; 
       BEGIN
          IF FULLSYNTX THEN 
          BEGIN 
          IF CALLTYP EQ 1 AND PSHORVER EQ 1 THEN
          BEGIN DIAG(162); STDNO; 
          END 
          IF LINENUMBER[REPORTINDEX] EQ 0 THEN
          BEGIN DIAG(171); STDNO; 
          END 
           BEYOND[REPORTINDEX] = FALSE; 
          END 
  
           STDYES;
       END
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
                          #PROC TO CATCH -BEYOND- OPTION IN TITLE,
                           WHICH IS INVALID SYNTAX# 
          XDEF PROC CKBYD;
          PROC CKBYD; 
          BEGIN                                                          QU3A344
          IF CALLTYP EQ 4          # IF TITLE                          # QU3A344
          THEN                                                           QU3A344
            BEGIN                                                        QU3A344
            DIAG (160);            # AT LINE BEYOND ILLEGAL WITH TITLE # QU3A344
            STDNO;                                                       QU3A344
            END                                                          QU3A344
          IF CALLTYP EQ 1          # IF DETAIL                         # QU3A344
            AND FULLSYNTX          # PREPARING REPORT                  # QU3A344
            AND PSHORVER EQ 1      # IF VERTICAL SECTIONS              # QU3A344
          THEN                                                           QU3A344
            BEGIN                                                        QU3A344
            P<DTLARRAY> = HEADADDR;  # POSITION TO DTLFIRST            # QU3A344
            J = DTLFIRST1[0];      # GET INDEX OF 1ST DETAIL REPORT    # QU3A344
                                   # LIST ENTRY                        # QU3A344
            IF J LS REPORTINDEX    # IF MULTIPLE DETAIL ENTRIES        # QU3A344
            THEN                                                         QU3A344
              BEGIN                                                      QU3A344
              FOR J = J + 1 STEP 1  # COMPARE LINE NUMBERS             # QU3A344
                UNTIL REPORTINDEX                                        QU3A344
              DO                                                         QU3A344
                BEGIN                                                    QU3A344
                IF LINENUMBER[REPORTINDEX] NQ LINENUMBER[J]              QU3A344
                  OR NOT CONTINUATN[J]  # IF NEW AT LINE CLAUSE        # QU3A344
                THEN                                                     QU3A344
                  BEGIN                                                  QU3A344
                  DIAG (618);      # MULT AT LINE ILLEGAL VERT SECTNS  # QU3A344
                  STDNO;                                                 QU3A344
                  END                                                    QU3A344
                END                                                      QU3A344
              END                                                        QU3A344
            END                                                          QU3A344
          STDYES;                                                        QU3A344
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
       XDEF PROC LINENO;               #PROC TO SET THE LINE NUMBER#
       PROC LINENO; 
       BEGIN
          IF NOT FULLSYNTX         # IF JUST SAVING DIRECTIVES         #
          THEN
            BEGIN 
            IF ICWI[5] GR MAXLINE  # IF LINE NUMBER TOO LARGE          #
                                   # (FOR ANY PAGE SIZE)               #
              OR ICWI[5] LS 0      # OR LINE NUMBER TOO SMALL          #
            THEN
              BEGIN 
              DIAG(106,ICW[0],MAXLINE);  # DIAG LINE NO. OUTSIDE LIMITS#
              STDNO;               # BAD RETURN                        #
              END 
  
            STDYES;                # GOOD RETURN                       #
            END 
  
          IF ICWI[5] GR PSLINE     # IF LINE NUMBER TOO LARGE          #
                                   # (FOR THIS PAGE SIZE)              #
          THEN
            BEGIN 
            DIAG(106,ICW[0],PSLINE);  # DIAG LINE NO. OUTSIDE LIMITS   #
            STDNO;                 # BAD RETURN                        #
            END 
  
           LINENUMBER[REPORTINDEX] = ICWI[5]; 
          IF CTR NQ 0 THEN
          BEGIN 
              REPORTINDEX = REPORTINDEX - 1;
          J = 1;
          IF TYPENTRY[REPORTINDEX] EQ 4 
          THEN
          BEGIN P<A> = STACKADD[REPORTINDEX]; 
                 IF ALLFG[0] THEN J = UPBND[0]; 
          END 
          TLG = TLG - CHARLENGTH[REPORTINDEX]* J; 
              CTR = CTR - 1;
              COLUMN = 1; 
          ENDCOL = NTABCOL(COLUMN - 1); 
              SETPOS; 
              CURTAB = 0; 
          END 
          ENDCOL = TABCOL(1); 
          SAMELINE = FALSE; 
          LINENUMBER[REPORTINDEX] = ICWI[5];                            000900
          COLUMN = 1; 
           STDYES;                         #BE ON SAME LINE AS LAST ONE#
       END
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
       XDEF PROC SLINENO; 
       PROC SLINENO;
          BEGIN                                                         000700
        IF FULLSYNTX THEN 
          BEGIN 
          IF CALLTYP NQ 2 AND CALLTYP NQ 3 THEN 
          BEGIN DIAG(155); STDNO; END 
          IF FIGLITDATA NQ 2 OR DATATYPE NQ 2 THEN
          BEGIN DIAG(143); STDNO; END 
          IF CTR NQ 0 THEN
          BEGIN 
              REPORTINDEX = REPORTINDEX - 1;
          J = 1;
          IF TYPENTRY[REPORTINDEX] EQ 4 
          THEN
          BEGIN P<A> = STACKADD[REPORTINDEX]; 
                 IF ALLFG[0] THEN J = UPBND[0]; 
          END 
          TLG = TLG - CHARLENGTH[REPORTINDEX]* J; 
              CTR = CTR - 1;
              COLUMN = 1; 
          ENDCOL = NTABCOL(COLUMN - 1); 
              SETPOS; 
              CURTAB = 0; 
          END 
          ENDCOL = TABCOL(1); 
          SAMELINE = FALSE; 
          COLUMN = 1; 
           LINEN[REPORTINDEX] = TRUE; 
           LINENBN[REPORTINDEX] = DATAWORDADDR; 
          BEYOND[REPORTINDEX] = FALSE;
          END 
           STDYES;
       END
  
  
  
  
#----------------------------------------------------------------------#
  
  
      END 
      TERM
