*DECK CONTRL
USETEXT DNTEXT
USETEXT RPTEXT
PROC CONTRL;
          BEGIN 
*CALL RGCOMM1 
*CALL RGCOMM2 
*CALL GETSET
*CALL TABLNAMES 
  
ENTRY PROC G$CHEAD; 
          BEGIN 
  
          #THIS ROUTINE#
          #- GENERATES A COBOL CONTROL HEADING ROUTINE IN  CTEXT# 
          #FORM. (IT IS ASSOCIATED WITH A PARTICULAR CONTROL# 
          #DATA ITEM)#
  
  
          #FIND CONTROLS-TABLE-ENTRY# 
  
  
          #PICK NAME OF CONTROL IDENTIFIER ASS. WITH THE REPORT#
          #GROUP OUT OF RGTLINK  AND SEARCH FOR A#
          #MATCHING DATA-NAME IN THE CONTROLSLINK, LEAVING# 
          #CURRCNTRLPTR POINTING TO THE ENTRY#
          #CONTAINING THE MATCHING DATA-NAME# 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EPTRACE("G$CHEAD")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
  
          CURRCNTRLPTR = RWGET1(BASE$CNTROLS  #CURRIRTPTR#);
CHSERCHCT:  
          IF  RWGET1(CID$DNAT  #CURRCNTRLPTR#) EQ 
              RWGET1(RGPARANAME1  #CURRRPTGRPTR#) 
              #DNAT INDEX OF CONTROL IDENT.#
          THEN
              GOTO GENCHNUBR; 
          IF  RWGET1(EOCDELIMITER  #CURRCNTRLPTR#)    EQ 1
          THEN
              GOTO ENDCHN;
          CURRCNTRLPTR = RWGET1(CONTROLSLINK  #CURRCNTRLPTR#);
          GOTO  CHSERCHCT;
GENCHNUBR:  
          #GEN. CTEXT FOR ROUTINE NAME AND THE STATEMENT FOR# 
          #USE BEFORE REPORTING AND SUPPRESS# 
          #CONTROL-HEADING-N.#
          #NEWVERB REPORT-GROUP-NAME  CH-N-EXIT#
  
          PNATPTR =  RWGET1(CH$PNAT  #CURRCNTRLPTR#); 
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          GENRWVERB;
          CURRCHRGPTR=  RWGET1(RGBASERGTABL  #CURRRPTGRPTR#); 
          DNATPTR =  RWGET1(RG$NAMECH  #CURRCHRGPTR#);
          GENDNREF #DNATPTR# ;
          PNATPTR =  RWGET1(CH$EXIT$PNAT  #CURRCNTRLPTR#);
          GENPNREF #PNATPTR# ;
  
          #IS CH REPORT GROUP PRINTABLE&# 
  
          IF  RWGET1(CHLN$BASE  #CURRCHRGPTR#) EQ 0 
          THEN
              GOTO GCH; 
          #NO LINE NUMBERS  CH NOT PRINTABLE# 
  
          #ELSE, IF PRINTABLE#
  
          CHPLFLAG = 1; 
          CURRCHLNPTR =  RWGET1(CHLN$BASE  #CURRCHRGPTR#);
          CURRCHPLPTR =  RWGET1(CHPL$BASE  #CURRCHRGPTR#);
  
          #GENCHFPLP# 
  
          #GEN. CODE  FOR SPACING TO FIRST PRINT LINE POSITION# 
          #MOVE CH-N-TABLE TO BP-TABLE# 
          #PERFORM BODY-PAGING THRU  BP-EXIT# 
          #OR#
          #ADD RELATIVE-LN, LINE-COUNTER GIVING S-L-N#
          #PERFORM SPACING# 
  
  
          #DID CONDITION 4D OCCUR& (REF. PRESENTATION RULES)# 
  
          IF RWGET1(COND4DCH  #CURRCHRGPTR#) EQ 1 
          THEN
              BEGIN 
              GENADD; 
              PLTPNTR =  RWGET1(LNINT$PLTCH  #CURRCHLNPTR#);
              GENILIT #PLTPNTR# ; 
              DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENGIVING;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              END 
          IF RWGET1(COND4DCH  #CURRCHRGPTR#) EQ 0 
          THEN
              BEGIN 
              GENMOVE;
              DNATPTR =  RWGET1(BPTBL$DNATCH  #CURRCHRGPTR#); 
              GENDNREF #DNATPTR# ;
              GENTO;
              DNATPTR =  RWGET1(BP$TABLE  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(BODYPAGING  #CURRIRTPTR#);
              GENPNREF #PNATPTR# ;
              GENTHRU;
              PNATPTR =  RWGET1(BP$EXIT  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              END 
          CURRCHLNPTR  = RWGET1(CHLNLINK  #CURRCHLNPTR#); 
  
          #GENMOVE6A# 
  
          GOTO GENMOVE6;
          #GO TO  SET UP FIRST PRINT LINE#
  
          #END OF CODE FOR SPACING TO FIRST PRINT LINE POSITION#
          #**********************************************************#
  
          #THE FOLLOWING GENERATES CODE FOR SPACING TO ANY PRINT# 
          #LINE POSITION AFTER THE FIRST# 
  
GPLCH1: 
          #GENERATE#
          #MOVE ABSOLUTE-LN TO S-L-N# 
          #PERFORM SPACING# 
          #OR#
          #ADD RELATIVE-LN  LINE-COUNTER GIVING S-L-N#
          #PERFORM SPACING# 
  
          IF  RWGET1(KIND$LNINTCH  #CURRCHLNPTR#) EQ 1
          THEN
              #ABSOLUTE#
          BEGIN 
              GENMOVE;
              PLTPNTR =  RWGET1(LNINT$PLTCH  #CURRCHLNPTR#);
              GENILIT #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              END 
          IF  RWGET1(KIND$LNINTCH  #CURRCHLNPTR#) EQ 2
          THEN
              #RELATIVE#
          BEGIN 
              GENADD; 
              PLTPNTR =  RWGET1(LNINT$PLTCH  #CURRCHLNPTR#);
              GENILIT #PLTPNTR# ; 
              DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENGIVING;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              END 
          GENPERFORM; 
          PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
          GENPNREF #PNATPTR# ;
          CURRCHLNPTR = RWGET1(CHLNLINK  #CURRCHLNPTR#);
  
GENMOVE6: 
          #TEST IF THIS IS A CASE WHERE NO ITEMS IN THE PRINT#
          #LINE WERE PRINTABLE# 
  
          IF  RWGET1(PL$DNATCH  #CURRCHPLPTR#) EQ 0 
          THEN
              GOTO CHGM2; 
CHITEMLOOP: 
          #GENERATE A MOVE STATEMENT THAT WILL FORMAT ONE#
          #ITEM INTO THE PRINT LINE#
  
          DNATPTR = RWGET1(PL$DNATCH  #CURRCHPLPTR#); 
          LINENUM = GETQUICK(DN$LINE,DNAT$,DNATPTR);
          GENEOC #LINENUM# ;
          GENMOVE;
          IF  RWGET1(ITEMTYPECH  #CURRCHPLPTR#) EQ 0
              #VALUE# 
          THEN
              BEGIN 
              IF  RWGET1(ALLVALUE$CH  #CURRCHPLPTR#) EQ 1 
              THEN
                  BEGIN 
                  GENALL; 
                  END 
              PLTPNTR = RWGET1(PI$SOURCECH  #CURRCHPLPTR#); 
              GENVLIT #PLTPNTR# ; 
              GOTO CHGENTO; 
              END 
          IF  RWGET1(ITEMTYPECH  #CURRCHPLPTR#) EQ 1
              #SOURCE#
          THEN
              BEGIN 
              IF  RWGET1(SISOURCE$CH  #CURRCHPLPTR#) EQ 1 
              THEN
                  BEGIN 
                  SAUXINDEX = RWGET1(PI$SOURCECH  #CURRCHPLPTR#); 
                  #GET DATA OUT OF RP-AUX-TABLE#
                  DNATPTR = RWGET(RASRCEIDNAT,SAUXINDEX); 
                  GENDNREF #DNATPTR# ;
CHSILOOP1:  
                  SAUXINDEX = SAUXINDEX + 1;
                  PSICTEXTATOM = RWGET(RASICTEXT,SAUXINDEX);
                  GENSUBINDX #PSICTEXTATOM# ; 
                  IF RWGET(RALASTSINTRY,SAUXINDEX) EQ 1 
                  THEN
                      GOTO CHGENTO; 
                  GOTO CHSILOOP1; 
                  END 
              #ELSE#
  
              DNATPTR =  RWGET1(PI$SOURCECH  #CURRCHPLPTR#);
              GENDNREF #DNATPTR# ;
              GOTO CHGENTO; 
              END 
CHGENTO:  
          GENTO;
          DNATPTR =  RWGET1(PL$DNATCH  #CURRCHPLPTR#);
          GENDNREF #DNATPTR# ;
  
          #DOES CURRENT ENTRY HAVE A PRINT LINE DELIMITER#
          #ASSOCIATED WITH IT&# 
  
          IF  RWGET1(PL$CH$DELIM  #CURRCHPLPTR#) EQ 1 
          THEN
              GOTO CHGM4; 
  
          #A REPORT GROUP DELIMITER&# 
  
          IF  RWGET1(PL$CH$DELIM  #CURRCHPLPTR#) EQ 2 
          THEN
              GOTO CHGM3; 
          CURRCHPLPTR =  RWGET1(CHPLLINK  #CURRCHPLPTR#); 
          GOTO CHITEMLOOP;
CHGM2:  
          #RG DELIMITER ASS. WITH THIS ENTRY&#
  
          IF  RWGET1(PL$CH$DELIM  #CURRCHPLPTR#) EQ 2 
          THEN
              BEGIN 
CHGM3:  
              CHPLFLAG = 0; 
              GOTO GENCHWRITE;
              END 
CHGM4:  
          CURRCHPLPTR =  RWGET1(CHPLLINK  #CURRCHPLPTR#); 
  
GENCHWRITE: 
  
          #GEN   WRITE  RECORD-NAME-1#
          GENWRITE; 
          DNATPTR =  RWGET1(RECORD$NAME1  #CURRIRTPTR#);
          GENDNREF #DNATPTR# ;
          IF CHPLFLAG  NQ  0
          THEN
              GOTO  GPLCH1; 
  
          #ELSE THE PRINT-LINE-TABLE (CHPLLINK) HAS BEEN EXHAUSTED# 
  
  
          #END  OF  GEN-CH-LINES# 
  
  
          #WAS THERE A NEXT GROUP PHRASE&#
  
          IF  RWGET1(NG$INFOCH  #CURRCHRGPTR#)    EQ 0
          THEN
              GOTO  GENSETSWITCH; 
  
          #GENCHNGCODE# 
  
          #ELSE,# 
          #GENERATE FOLLOWING CODE FOR DOING NEXT GROUP SPACING#
          #MOVE NG-CH-N-TABLE TO NG-TABLE#
          #PERFORM BODY-NEXT-GROUP THRU B-N-G-EXIT# 
          #OR#
          #ADD 1, RELATIVE-NG-INT, LINE-COUNTER GIVING S-L-N# 
          #PERFORM SPACING# 
          #SUBTRACT 1 FROM LINE-COUNTER#
  
          IF RWGET1(COND6FCH  #CURRCHRGPTR#) EQ 1 
          THEN
              BEGIN 
              GENADD; 
              PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
              GENLIT1 #PLTPNTR# ; 
              PLTPNTR =  RWGET1(NG$INFOCH  #CURRCHRGPTR#);
              GENILIT #PLTPNTR# ; 
              DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENGIVING;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              GENSUBTRACT;
              PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
              GENLIT1 #PLTPNTR# ; 
              GENFROM;
              DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
              END 
          IF  RWGET1(COND6FCH  #CURRCHRGPTR#) EQ 0
          THEN
              BEGIN 
              GENMOVE;
              DNATPTR = RWGET1(NG$INFOCH  #CURRCHRGPTR#); 
              GENDNREF #DNATPTR# ;
              GENTO;
              DNATPTR =  RWGET1(NG$TABLE  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(BODYNEXTGRUP  #CURRIRTPTR#);
              GENPNREF #PNATPTR# ;
              GENTHRU;
              PNATPTR =  RWGET1(BNG$EXIT  #CURRIRTPTR#);
              GENPNREF #PNATPTR# ;
              END 
GENSETSWITCH: 
  
          #GENERATE#
          #MOVE 1 TO PRESENTED-ON-THIS-PAGE-SWITCH# 
  
          GENMOVE;
          PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
          GENLIT1 #PLTPNTR# ; 
          GENTO;
          DNATPTR =  RWGET1(POTP$SWITCH  #CURRIRTPTR#); 
          GENDNREF #DNATPTR# ;
GCH:  
  
          #GENCHNEXIT#
  
  
          #GENERATE#
          #(INCLUDING PRECEDING PERIOD)#
          #.# 
          #CH-N-EXIT.#
          #EXIT.# 
  
          GENPERIOD;
          PNATPTR =  RWGET1(CH$EXIT$PNAT  #CURRCNTRLPTR#);
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          GENEXIT;
          GENPERIOD;
ENDCHN: 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("G$CHEAD")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          RETURN; 
          END #G$CHEAD# 
          CONTROL EJECT;
  
ENTRY PROC G$CFOOT; 
          BEGIN 
  
          #THIS ROUTINE#
          #- GENERATES A COBOL CONTROL FOOTING ROUTINE IN CTEXT FORM.#
          #(IT IS ASSOCIATED WITH A PARTICULAR CONTROL DATA ITEM)#
  
  
          #FIND CONTROLS-TABLE-ENTRY# 
  
  
          #PICK NAME OF CONTROL IDENTIFIER ASS. WITH THE REPORT#
          #GROUP OUT OF RGTLINK  AND SEARCH FOR A#
          #MATCHING DATA-NAME IN THE CONTROLSLINK, LEAVING# 
          #CURRCNTRLPTR POINTING TO THE ENTRY#
          #CONTAINING THE MATCHING DATA-NAME# 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EPTRACE("G$CFOOT")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
  
          CURRCNTRLPTR = RWGET1(BASE$CNTROLS  #CURRIRTPTR#);
CFSERCHCT:  
          IF  RWGET1(CID$DNAT  #CURRCNTRLPTR#) EQ 
              RWGET1(RGPARANAME1  #CURRRPTGRPTR#) 
              #DNAT INDEX OF CONTROL IDENT.#
          THEN
              GOTO GENCFN;
          IF  RWGET1(EOCDELIMITER  #CURRCNTRLPTR#)    EQ  1 
          THEN
              GOTO ENDCFN;
          CURRCNTRLPTR = RWGET1(CONTROLSLINK  #CURRCNTRLPTR#);
          GOTO  CFSERCHCT;
GENCFN: 
          #GEN. CTEXT FOR ROUTINE NAME# 
          #CONTROL-FOOTING-N.#
  
          PNATPTR =  RWGET1(CF$PNAT  #CURRCNTRLPTR#); 
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
  
          #IS THERE ANY CROSSFOOTING TO BE GENERATED&#
  
          CURRCFRGPTR = RWGET1(RGBASERGTABL  #CURRRPTGRPTR#); 
          IF  RWGET1(CROSFOOTBASE  #CURRCFRGPTR#) NQ 0
          THEN
              BEGIN 
              CURRCROSFPTR = RWGET1(CROSFOOTBASE  #CURRCFRGPTR#); 
  
              #GENCROSSFOOT#
  
CFADDLOOP:  
              GENADD; 
CFADDENLOOP:  
              DNATPTR = RWGET1(CROSFOOTSUMC  #CURRCROSFPTR#); 
              GENDNREF #DNATPTR# ;
              CURRCROSFPTR = RWGET1(CROSFOOTLINK  #CURRCROSFPTR#);
              IF  RWGET1(CROSFOOT012  #CURRCROSFPTR#)  EQ 0 
              THEN
                  GOTO CFADDENLOOP; 
              IF  RWGET1(CROSFOOT012  #CURRCROSFPTR#) EQ 1
              THEN
                  BEGIN 
                  GENTO;
                  DNATPTR = RWGET1(CROSFOOTSUMC  #CURRCROSFPTR#); 
                  GENDNREF #DNATPTR# ;
                  CURRCROSFPTR = RWGET1(CROSFOOTLINK  #CURRCROSFPTR#);
                  IF  RWGET1(CROSFOOT012  #CURRCROSFPTR#)  NQ 2 
                  THEN
                      GOTO CFADDLOOP; 
  
                  #ELSE - IS END OF CROSSFOOT-TABLE-ENTRIES.# 
  
                  END 
              END 
  
          #IS THERE ANY ROLLING FORWARD TO BE GENERATED&# 
  
          IF  RWGET1(ROLLFRWDBASE  #CURRCFRGPTR#) NQ 0
          THEN
              BEGIN 
              CURRROLLFPTR = RWGET1(ROLLFRWDBASE  #CURRCFRGPTR#); 
  
              #GENROLINGFWD#
  
RLFADDLOOP: 
              GENADD; 
RLFADDLOOP1:  
              DNATPTR = RWGET1(ROLFRWDSUMCR  #CURRROLLFPTR#); 
              GENDNREF #DNATPTR# ;
              CURRROLLFPTR = RWGET1(ROLFRWDLINK  #CURRROLLFPTR#); 
              IF  RWGET1(ROLFRWDDELIM  #CURRROLLFPTR#) EQ 0 
              THEN
                  GOTO RLFADDLOOP1; 
              IF  RWGET1(ROLFRWDDELIM  #CURRROLLFPTR#) EQ 1 
              THEN
                  BEGIN 
                  GENTO;
                  DNATPTR = RWGET1(ROLFRWDSUMCR  #CURRROLLFPTR#); 
                  GENDNREF #DNATPTR# ;
                  CURRROLLFPTR = RWGET1(ROLFRWDLINK  #CURRROLLFPTR#); 
                  IF     RWGET1(ROLFRWDDELIM  #CURRROLLFPTR#)  NQ 2 
                  THEN
                      GOTO RLFADDLOOP;
  
                  #ELSE -  IS END OF  ROLLFRWDLINK ENTRIES.#
  
                  END 
              END 
  
          #GENCFNUBR# 
  
  
          #GEN. CODE FOR  HANDLING POSSIBLE USE BEFORE REPORTING# 
          #AND SUPPRESS STATEMENTS# 
          #NEWVERB REPORT-GROUP-NAME CONTROL-FOOTING-N-CF2# 
  
          GENRWVERB;
          CURRCFRGPTR = RWGET1(RGBASERGTABL  #CURRRPTGRPTR#); 
          DNATPTR =  RWGET1(RG$NAMECF  #CURRCFRGPTR#);
          GENDNREF #DNATPTR# ;
          PNATPTR =  RWGET1(CF$CF2$PNAT  #CURRCNTRLPTR#); 
          GENPNREF #PNATPTR# ;
  
          #IS CF REPORT GROUP PRINTABLE&# 
  
          IF  RWGET1(CFLN$BASE  #CURRCFRGPTR#) EQ 0 
          THEN
              GOTO CF2; 
          #NO LINE NUMBERS  CF NOT PRINTABLE# 
  
          #ELSE, IF PRINTABLE#
  
          CFPLFLAG = 1; 
          CURRCFLNPTR =  RWGET1(CFLN$BASE  #CURRCFRGPTR#);
          CURRCFPLPTR =  RWGET1(CFPL$BASE  #CURRCFRGPTR#);
  
          #GENCFFPLP# 
  
          #GEN. CODE  FOR SPACING TO FIRST PRINT LINE POSITION# 
          #MOVE CF-N-TABLE TO BP-TABLE# 
          #PERFORM BODY-PAGING THRU  BP-EXIT# 
          #OR#
          #ADD RELATIVE-LN, LINE-COUNTER GIVING S-L-N#
          #PERFORM SPACING# 
  
  
          #DID CONDITION 4D OCCUR& (REF. PRESENTATION RULES)# 
  
          IF  RWGET1(COND4DCF  #CURRCFRGPTR#)  EQ 1 
          THEN
              BEGIN 
              GENADD; 
              PLTPNTR =  RWGET1(LNINT$PLTCF  #CURRCFLNPTR#);
              GENILIT #PLTPNTR# ; 
              DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENGIVING;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              END 
          IF  RWGET1(COND4DCF  #CURRCFRGPTR#)  EQ 0 
          THEN
              BEGIN 
              GENMOVE;
              DNATPTR =  RWGET1(BPTBL$DNATCF  #CURRCFRGPTR#); 
              GENDNREF #DNATPTR# ;
              GENTO;
              DNATPTR =  RWGET1(BP$TABLE  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(BODYPAGING  #CURRIRTPTR#);
              GENPNREF #PNATPTR# ;
              GENTHRU;
              PNATPTR =  RWGET1(BP$EXIT  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              END 
          CURRCFLNPTR = RWGET1(CFLNLINK  #CURRCFLNPTR#);
  
          #GENMOVE7A# 
  
          GOTO GENMOVE7;
          #GO TO  SET UP FIRST PRINT LINE#
  
          #END OF CODE FOR SPACING TO FIRST PRINT LINE POSITION#
          #**********************************************************#
  
          #THE FOLLOWING GENERATES CODE FOR SPACING TO ANY PRINT# 
          #LINE POSITION AFTER THE FIRST# 
  
          #GEN-CF-LINES#
GPLCF1: 
          #GEN-CF-POSITION# 
          #GENERATE#
          #MOVE ABSOLUTE-LN TO S-L-N# 
          #PERFORM SPACING# 
          #OR#
          #ADD RELATIVE-LN  LINE-COUNTER GIVING S-L-N#
          #PERFORM SPACING# 
  
          IF  RWGET1(KIND$LNINTCF  #CURRCFLNPTR#) EQ 1
          THEN
              #ABSOLUTE#
          BEGIN 
              GENMOVE;
              PLTPNTR =  RWGET1(LNINT$PLTCF  #CURRCFLNPTR#);
              GENILIT #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              END 
          IF  RWGET1(KIND$LNINTCF  #CURRCFLNPTR#) EQ 2
          THEN
              #RELATIVE#
          BEGIN 
              GENADD; 
              PLTPNTR =  RWGET1(LNINT$PLTCF  #CURRCFLNPTR#);
              GENILIT #PLTPNTR# ; 
              DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENGIVING;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              END 
          GENPERFORM; 
          PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
          GENPNREF #PNATPTR# ;
          CURRCFLNPTR = RWGET1(CFLNLINK  #CURRCFLNPTR#);
  
GENMOVE7: 
          #TEST IF THIS IS A CASE WHERE NO ITEMS IN THE PRINT#
          #LINE WERE PRINTABLE# 
  
          IF  RWGET1(PL$DNATCF  #CURRCFPLPTR#) EQ 0 
          THEN
              GOTO CFGM2; 
CFITEMLOOP: 
          #GENERATE A MOVE STATEMENT THAT WILL FORMAT ONE#
          #ITEM INTO THE PRINT LINE#
  
          IF RWGET1(ITEMTYPECF  #CURRCFPLPTR#) EQ 2 
             #SUM#
          THEN
              DNATPTR = RWGET1(PI$SOURCECF  #CURRCFPLPTR#); 
          ELSE
              DNATPTR = RWGET1(PL$DNATCF  #CURRCFPLPTR#); 
          IF DNATPTR EQ 0 THEN #ITEM IS NOT PRINTABLE#
              GOTO CFGM1; 
          LINENUM = GETQUICK(DN$LINE,DNAT$,DNATPTR);
          GENEOC #LINENUM# ;
          GENMOVE;
          IF  RWGET1(ITEMTYPECF  #CURRCFPLPTR#) EQ 0
              #VALUE# 
          THEN
              BEGIN 
              IF  RWGET1(ALLVALUE$CF  #CURRCFPLPTR#) EQ 1 
              THEN
                  BEGIN 
                  GENALL; 
                  END 
              PLTPNTR = RWGET1(PI$SOURCECF  #CURRCFPLPTR#); 
              GENVLIT #PLTPNTR# ; 
              GOTO CFGENTO; 
              END 
          IF  RWGET1(ITEMTYPECF  #CURRCFPLPTR#) EQ 1
              #SOURCE#
          THEN
              BEGIN 
              IF  RWGET1(SISOURCE$CF  #CURRCFPLPTR#) EQ 1 
              THEN
                  BEGIN 
                  SAUXINDEX = RWGET1(PI$SOURCECF  #CURRCFPLPTR#); 
                  #GET DATA OUT OF RP-AUX-TABLE#
                  DNATPTR = RWGET(RASRCEIDNAT,SAUXINDEX); 
                  GENDNREF #DNATPTR# ;
CFSILOOP1:  
                  SAUXINDEX = SAUXINDEX + 1;
                  PSICTEXTATOM = RWGET(RASICTEXT,SAUXINDEX);
                  GENSUBINDX #PSICTEXTATOM# ; 
                  IF RWGET(RALASTSINTRY,SAUXINDEX) EQ 1 
                  THEN
                      GOTO CFGENTO; 
                  GOTO CFSILOOP1; 
                  END 
              #ELSE#
  
              DNATPTR =  RWGET1(PI$SOURCECF  #CURRCFPLPTR#);
              GENDNREF #DNATPTR# ;
              GOTO CFGENTO; 
              END 
          IF  RWGET1(ITEMTYPECF  #CURRCFPLPTR#) EQ 2
              #SUM# 
          THEN
              BEGIN 
              DNATPTR =  RWGET1(PI$SOURCECF  #CURRCFPLPTR#);
              GENDNREF #DNATPTR# ;
              END 
CFGENTO:  
          GENTO;
          DNATPTR =   RWGET1(PL$DNATCF  #CURRCFPLPTR#); 
          GENDNREF #DNATPTR# ;
  
CFGM1:  
  
          #DOES CURRENT ENTRY HAVE A PRINT LINE DELIMITER#
          #ASSOCIATED WITH IT&# 
  
          IF  RWGET1(PL$CF$DELIM  #CURRCFPLPTR#) EQ 1 
          THEN
              GOTO CFGM4; 
  
          #A REPORT GROUP DELIMITER&# 
  
          IF  RWGET1(PL$CF$DELIM  #CURRCFPLPTR#) EQ 2 
          THEN
              GOTO CFGM3; 
          CURRCFPLPTR =  RWGET1(CFPLLINK  #CURRCFPLPTR#); 
          GOTO CFITEMLOOP;
CFGM2:  
          #RG DELIMITER ASS. WITH THIS ENTRY&#
  
          IF  RWGET1(PL$CF$DELIM  #CURRCFPLPTR#) EQ 2 
          THEN
              BEGIN 
CFGM3:  
              CFPLFLAG = 0; 
              GOTO GENCFWRITE;
              END 
CFGM4:  
          CURRCFPLPTR =  RWGET1(CFPLLINK  #CURRCFPLPTR#); 
  
GENCFWRITE: 
  
          #GEN   WRITE  RECORD-NAME-1#
          GENWRITE; 
          DNATPTR =  RWGET1(RECORD$NAME1  #CURRIRTPTR#);
          GENDNREF #DNATPTR# ;
          IF CFPLFLAG  NQ  0
          THEN
              GOTO  GPLCF1; 
  
          #ELSE THE PRINT-LINE-TABLE (CFPLLINK) HAS BEEN EXHAUSTED# 
  
          #END OF GEN-CF-LINES# 
  
          #GENSETSWITCH#
  
  
          #GENERATE#
          #MOVE 1 TO PRESENTED-ON-THIS-PAGE-SWITCH# 
  
          GENMOVE;
          PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
          GENLIT1 #PLTPNTR# ; 
          GENTO;
          DNATPTR =  RWGET1(POTP$SWITCH  #CURRIRTPTR#); 
          GENDNREF #DNATPTR# ;
CF2:  
  
          #GENPARANAME# 
  
          #GEN. PARAGRAPH NAME  (EVEN THO  THERE MAY NOT BE ANY#
          #RESETTING DONE)# 
          #(ALSO GEN. A "PRECEDING" PERIOD)#
          #.# 
          #CONTROL-FOOTING-N-CF2.#
  
          GENPERIOD;
          PNATPTR =  RWGET1(CF$CF2$PNAT  #CURRCNTRLPTR#); 
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
  
          #ARE THERE ANY SUM COUNTERS DEFINED AT THIS CONTROL LEVEL#
          #THAT ARE TO BE RESET&# 
  
          IF  RWGET1(RESETABASE  #CURRCFRGPTR#) NQ 0
          THEN
              BEGIN 
              CURRARSETPTR = RWGET1(RESETABASE  #CURRCFRGPTR#); 
  
              #GENRESETA# 
  
              GENMOVE;
              PLTPNTR =  RWGET1(IRTINTZERO  #CURRIRTPTR#);
              GENLIT0 #PLTPNTR# ; 
              GENTO;
ARESETLOOP: 
              DNATPTR =  RWGET1(ARESET$SUMCR  #CURRARSETPTR#);
              GENDNREF #DNATPTR# ;
              IF  RWGET1(ARESET$DELIM  #CURRARSETPTR#) EQ 1 
              THEN
                  GOTO ENDARESET; 
              CURRARSETPTR   = RWGET1(ARESETLINK  #CURRARSETPTR#);
              GOTO ARESETLOOP;
ENDARESET:  
              END 
  
          #ARE THERE ANY LOWER LEVEL SUM COUNTERS TO BE RESET AT# 
          #THIS LEVEL&# 
  
          IF  RWGET1(RESETBBASE  #CURRCFRGPTR#) NQ 0
          THEN
              BEGIN 
  
              #GENRESETB# 
  
              CURRBRSETPTR = RWGET1(RESETBBASE  #CURRCFRGPTR#); 
              GENMOVE;
              PLTPNTR =  RWGET1(IRTINTZERO  #CURRIRTPTR#);
              GENLIT0 #PLTPNTR# ; 
              GENTO;
RESETBLOOP: 
              DNATPTR =  RWGET1(RESETB$SUMCR  #CURRBRSETPTR#);
              GENDNREF #DNATPTR# ;
              IF  RWGET1(RESETB$DELIM  #CURRBRSETPTR#) EQ 1 
              THEN
                  GOTO ENDRESETB; 
              CURRBRSETPTR = RWGET1(RESETBLINK  #CURRBRSETPTR#);
              GOTO RESETBLOOP;
ENDRESETB:  
              END 
  
          #GENERATE#
          #CF-N-EXIT.#
          #EXIT.# 
  
          PNATPTR =  RWGET1(CF$EXIT$PNAT  #CURRCNTRLPTR#);
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          GENEXIT;
          GENPERIOD;
ENDCFN: 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("G$CFOOT")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          RETURN; 
          END #G$CFOOT# 
          CONTROL EJECT;
ENTRY PROC G$DUMMY; 
          BEGIN 
  
          #THIS ROUTINE#
          #- GENERATES A COBOL ROUTINE IN CTEXT FORM  TO HANDLE#
          #THE SITUATION IN WHICH RESETTING OF SUM-COUNTERS#
          #NEEDS TO BE DONE AT CONTROL LEVEL N  WHERE THERE#
          #WAS NO CONTROL FOOTING REPORT GROUP DEFINED FOR# 
          #CONTROL LEVEL N.#
  
  
          #GENDUMCFNAME#
  
          #GENERATE#
          #DUMMY-CONTROL-F-N.#
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EPTRACE("G$DUMMY")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
  
          PNATPTR =  RWGET1(PNAT1$DUMCF  #CURRCNTRLPTR#); 
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          CURRBRSETPTR = RWGET1(RESETB$DUMCF  #CURRCNTRLPTR#);
          GENMOVE;
          PLTPNTR =   RWGET1(IRTINTZERO  #CURRIRTPTR#); 
          GENLIT0 #PLTPNTR# ; 
          GENTO;
DRESETBLOOP:  
          DNATPTR =   RWGET1(RESETB$SUMCR  #CURRBRSETPTR#); 
          GENDNREF #DNATPTR# ;
          IF  RWGET1(RESETB$DELIM  #CURRBRSETPTR#)  EQ 1
          THEN
              GOTO ENDDRESETB;
          CURRBRSETPTR = RWGET1(RESETBLINK  #CURRBRSETPTR#);
          GOTO DRESETBLOOP; 
ENDDRESETB: 
  
          #GENDUMMYEXIT#
  
          #GENERATE#
          #D-CF-N-EXIT.#
          #EXIT.# 
  
          PNATPTR =  RWGET1(PNATL$DUMCF  #CURRCNTRLPTR#); 
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          GENEXIT;
          GENPERIOD;
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("G$DUMMY")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          RETURN; 
          END #G$DUMMY# 
          END #CONTRL#
          TERM
