*DECK HEAD
USETEXT CCTTEXT 
USETEXT DNTEXT
USETEXT RPTEXT
PROC HEAD;
          BEGIN 
*CALL RGCOMM1 
*CALL RGCOMM2 
*CALL GETSET
*CALL TABLNAMES 
  
ENTRY PROC G$RHEAD; 
          BEGIN 
          #THIS ROUTINE#
          #- GENERATES A COBOL REPORT HEADING ROUTINE IN# 
          #CTEXT FORM.# 
  
  
          #GENRHUBR#
  
          #GEN. CTEXT FOR ROUTINE NAME  AND THE STATEMENT FOR#
          #USE BEFORE REPORTING AND SUPPRESS# 
          #REPORT-HEADING.# 
          #NEWVERB  REPORT-GROUP-NAME R-H-ROUTINE-EXIT# 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EPTRACE("G$RHEAD")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
  
          PNATPTR = RWGET1(RGPARANAME1  #CURRRPTGRPTR#);
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          GENRWVERB;
          CURRRHRGPTR   = RWGET1(RGBASERGTABL  #CURRRPTGRPTR#); 
          DNATPTR =  RWGET1(RHRG$NAME  #CURRRHRGPTR#);
          GENDNREF #DNATPTR# ;
          PNATPTR = RWGET1(RGPARANAME2  #CURRRPTGRPTR#);
          GENPNREF #PNATPTR# ;
  
          #PART1B#
  
          #IS RH REPORT GROUP PRINTABLE& IF THERE WERE NO LINE# 
          #NUMBERS SPECIFIED,  GENERATE#
          #MOVE 0 TO RH-ON-PAGE#
          #AND GO TO GRH1#
          #ELSE GENERATE# 
          #MOVE 1 TO RH-ON-PAGE#
  
          IF  RWGET1(RHLN$BASE  #CURRRHRGPTR#)  EQ 0
          THEN
              BEGIN 
              GENMOVE;
              PLTPNTR =  RWGET1(IRTINTZERO  #CURRIRTPTR#);
              GENLIT0 #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(RH$ON$PAGE  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GOTO GRH1;
              END 
  
          #ELSE, IF PRINTABLE#
  
          GENMOVE;
          PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
          GENLIT1 #PLTPNTR# ; 
          GENTO;
          DNATPTR =  RWGET1(RH$ON$PAGE  #CURRIRTPTR#);
          GENDNREF #DNATPTR# ;
  
          #GENRHLINES#
  
  
          #GEN. THE INDICATED CODE THAT WILL PRINT ALL LINES OF#
          #REPORT HEADING#
          #MOVE LINE-INTEGER-ABS  TO  S-L-N#
          #PERFORM SPACING# 
          #MOVE DATA-NAME-N  TO  DATA-NAME-M# 
          #.# 
          #.# 
          #WRITE RECORD-NAME-1# 
          #(ETC. - REPEATED FOR EACH PRINT LINE)# 
  
          RHPLFLAG = 1; 
          CURRRHLNPTR =  RWGET1(RHLN$BASE  #CURRRHRGPTR#);
          CURRRHPLPTR =  RWGET1(RHPL$BASE  #CURRRHRGPTR#);
GRL1: 
  
          #GENPOSITION# 
  
          #GEN. MOVE AND PERFORM TO SPACE TO LINE NUMBER# 
          #(THIS SECTION USES TABLE OF LINE NUMBERS THAT HAVE#
          #BEEN CONVERTED TO ABSOLUTE BY THE R-PARSER.)#
  
          GENMOVE;
          PLTPNTR =  RWGET1(ABSOLUT$LNRH  #CURRRHLNPTR#); 
          GENILIT #PLTPNTR# ; 
          GENTO;
          DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
          GENDNREF #DNATPTR# ;
          GENPERFORM; 
          PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
          GENPNREF #PNATPTR# ;
          CURRRHLNPTR =  RWGET1(RHLNLINK  #CURRRHLNPTR#); 
  
          #GENMOVE2#
  
          #TEST IF THIS IS A CASE WHERE NO ITEMS IN THE PRINT#
          #LINE WERE PRINTABLE# 
  
          IF  RWGET1(PL$DNATRH  #CURRRHPLPTR#) EQ 0 
          THEN
              GOTO RHGM2; 
          #ELSE GENERATE A MOVE STATEMENT THAT WILL FORMAT ONE# 
          #ITEM INTO THE PRINT LINE#
RHITEMLOOP: 
          DNATPTR = RWGET1(PL$DNATRH  #CURRRHPLPTR#); 
          LINENUM = GETQUICK(DN$LINE,DNAT$,DNATPTR);
          GENEOC #LINENUM# ;
          GENMOVE;
          IF  RWGET1(ITEMTYPERH  #CURRRHPLPTR#) EQ 0
              #VALUE# 
          THEN
              BEGIN 
              IF  RWGET1(ALLVALUE$RH  #CURRRHPLPTR#) EQ 1 
              THEN
                  BEGIN 
                  GENALL; 
                  END 
              PLTPNTR = RWGET1(PI$SOURCERH  #CURRRHPLPTR#); 
              GENVLIT #PLTPNTR# ; 
              GOTO RHGENTO; 
              END 
          IF  RWGET1(ITEMTYPERH  #CURRRHPLPTR#) EQ 1
              #SOURCE#
          THEN
              BEGIN 
              IF  RWGET1(SISOURCE$RH  #CURRRHPLPTR#) EQ 1 
              THEN
                  BEGIN 
                  SAUXINDEX = RWGET1(PI$SOURCERH  #CURRRHPLPTR#); 
                  #GET DATA OUT OF RP-AUX-TABLE#
                  DNATPTR = RWGET(RASRCEIDNAT,SAUXINDEX); 
                  GENDNREF #DNATPTR# ;
RHSILOOP1:  
                  SAUXINDEX = SAUXINDEX + 1;
                  PSICTEXTATOM = RWGET(RASICTEXT,SAUXINDEX);
                  GENSUBINDX #PSICTEXTATOM# ; 
                  IF RWGET(RALASTSINTRY,SAUXINDEX) EQ 1 
                  THEN
                      GOTO RHGENTO; 
                  GOTO RHSILOOP1; 
                  END 
              #ELSE#
  
              DNATPTR =  RWGET1(PI$SOURCERH  #CURRRHPLPTR#);
              GENDNREF #DNATPTR# ;
              GOTO RHGENTO; 
              END 
RHGENTO:  
          GENTO;
          DNATPTR =  RWGET1(PL$DNATRH  #CURRRHPLPTR#);
          GENDNREF #DNATPTR# ;
  
          #DOES CURRENT ENTRY HAVE A PRINT LINE DELIMITER#
          #ASSOCIATED WITH IT&# 
  
          IF  RWGET1(PL$RH$DELIM  #CURRRHPLPTR#) EQ 1 
          THEN
              GOTO RHGM4; 
  
          #A REPORT GROUP DELIMITER&# 
  
          IF  RWGET1(PL$RH$DELIM  #CURRRHPLPTR#) EQ 2 
          THEN
              GOTO RHGM3; 
          CURRRHPLPTR = RWGET1(RHPLLINK  #CURRRHPLPTR#);
          GOTO RHITEMLOOP;
RHGM2:  
          #RG DELIMITER ASS. WITH THIS ENTRY&#
  
          IF  RWGET1(PL$RH$DELIM  #CURRRHPLPTR#) EQ 2 
          THEN
              BEGIN 
RHGM3:  
              RHPLFLAG = 0; 
              GOTO GENRHWRITE;
              END 
RHGM4:  
          CURRRHPLPTR =  RWGET1(RHPLLINK  #CURRRHPLPTR#); 
  
GENRHWRITE: 
          GENWRITE; 
          DNATPTR =  RWGET1(RECORD$NAME1  #CURRIRTPTR#);
          GENDNREF #DNATPTR# ;
          IF RHPLFLAG   NQ  0 
          THEN
              GOTO  GRL1; 
  
          #ELSE  THE PRINT-LINE-TABLE (RHPLLINK) HAS  BEEN# 
          #EXHAUSTED# 
  
  
          #END OF  GENRHLINES#
  
  
          #WAS THERE A NEXT GROUP PHRASE IN THIS REPORT GROUP&# 
  
          IF  RWGET1(RHNGFRASEIND  #CURRRHRGPTR#) EQ 0
          THEN
              GOTO GRH1;
          #WAS NO NEXT GROUP PHRASE#
  
          #GENRHNG# 
  
          #GENERATE CODE FOR DOING ANY NEXT GROUP SPACING#
          #ADD 1, N-G-INT(ABS) GIVING S-L-N#
          #PERFORM SPACING# 
          #SUBTRACT 1 FROM LINE-COUNTER#
          #(IF N.G. INTEGER WAS ABSOLUTE OR RELATIVE)#
          #OR#
          #WRITE RECORD-NAME-1 FROM SPACING-AREA AFTER ADVANCING PAGE#
          #MOVE 0 TO LINE-COUNTER#
          #ADD 1 TO PAGE-COUNTER# 
          #MOVE 0 TO RH-ON-PAGE#
          #(IF N.G. SPECIFICATION WAS NEXT GROUP NEXT PAGE)#
  
          IF  RWGET1(RHNGFRASEIND  #CURRRHRGPTR#) EQ 1
          THEN
              BEGIN 
              #ORIGINAL SPEC. WAS ABSOLUTE OR RELATIVE# 
  
              #GENNGAR# 
  
  
              #WHETHER USER SPECIFIED ABSOLUTE OR RELATIVE, R-PARSER# 
              #STORED IT AS AN ABSOLUTE#
  
              GENADD; 
              PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
              GENLIT1 #PLTPNTR# ; 
              PLTPNTR =  RWGET1(NGINTPLTRH  #CURRRHRGPTR#); 
              GENILIT #PLTPNTR# ; 
          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#);
              GENDNREF #DNATPTR# ;
              GOTO GRH1;
              END 
          #GEN-NG-NP# 
  
          IF  RWGET1(RHNGFRASEIND  #CURRRHRGPTR#) EQ 3
          THEN
              BEGIN 
              #NEXT GROUP NEXT PAGE#
              GENWRITE; 
              DNATPTR =  RWGET1(RECORD$NAME1  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENFROM;
              DNATPTR =  RWGET1(SPACING$AREA  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENAFTER; 
              GENADVANCING; 
              GENPAGE;
              GENMOVE;
              PLTPNTR =  RWGET1(IRTINTZERO  #CURRIRTPTR#);
              GENLIT0 #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENADD; 
              PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
              GENLIT1 #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(IRTPCINDEX  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENMOVE;
              PLTPNTR =  RWGET1(IRTINTZERO  #CURRIRTPTR#);
              GENLIT0 #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(RH$ON$PAGE  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              END 
GRH1: 
  
          #GENRHEXIT# 
  
          #.# 
          #REPORT-HEADING-EXIT.#
          #EXIT.# 
  
          GENPERIOD;
          PNATPTR = RWGET1(RGPARANAME2  #CURRRPTGRPTR#);
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          GENEXIT;
          GENPERIOD;
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("G$RHEAD")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          RETURN; 
          END #G$RHEAD# 
          CONTROL EJECT;
ENTRY PROC G$PHEAD; 
          BEGIN 
  
          #THIS ROUTINE#
          #- GENERATE A COBOL PAGE HEADING ROUTINE IN#
          #CTEXT FORM#
  
  
          #GENPHUBR#
  
          #GEN. CTEXT FOR ROUTINE NAME AND THE STATEMENT FOR# 
          #USE BEFORE REPORTING AND SUPPRESS# 
          #PAGE-HEADING#
          #NEWVERB  REPORT-GROUP-NAME  PH-ROUTINE-EXIT# 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EPTRACE("G$PHEAD")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
  
          PNATPTR = RWGET1(RGPARANAME1  #CURRRPTGRPTR#);
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          GENRWVERB;
          CURRPHRGPTR = RWGET1(RGBASERGTABL  #CURRRPTGRPTR#); 
          DNATPTR =  RWGET1(RG$NAMEPH  #CURRPHRGPTR#);
          GENDNREF #DNATPTR# ;
          PNATPTR = RWGET1(RGPARANAME2  #CURRRPTGRPTR#);
          GENPNREF #PNATPTR# ;
          PHPLFLAG = 1; 
          CURRPHLNPTR   =  RWGET1(PHLN$BASE  #CURRPHRGPTR#);
          CURRPHPLPTR =  RWGET1(PHPL$BASE  #CURRPHRGPTR#);
  
          #GENPHLINES#
  
          #GENERATE THE CODE THAT WILL PRINT ALL LINES OF#
          #PAGE HEADING#
  
  
          #GENPHPOSITION# 
  
          #FIRST GEN. THE CODE TO SPACE TO THE FIRST PRINT LINE#
          #POSITION#
          #IF THE FIRST LINE NUMBER WAS ABSOLUTE THEN GENERATE# 
          #MOVE ABSOLUTE-LN  TO S-L-N#
          #MOVE 1 TO PH-PRESENTED#
          #PERFORM SPACING# 
          #SOMETIMES INSERT#
          #IF S-L-N -1  - LINE-COUNTER IS LESS THAN 0#
          #ENTER C.RWMSG USING RWVRBLINE RWERR5#
          #GO TO P-H-EXIT.# 
  
          IF  RWGET1(KIND$LNINTPH  #CURRPHLNPTR#) EQ 1
              #ABSOLUTE#
          THEN
              BEGIN 
              GENMOVE;
              PLTPNTR =  RWGET1(LNINT$PLTPH  #CURRPHLNPTR#);
              GENILIT #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              IF   RWGET1(RHPH$OVERLAP  #CURRPHRGPTR#) EQ 1 
              THEN
                  BEGIN 
                  GENIF;
                  DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
                  GENDNREF #DNATPTR# ;
                  GENMINUS; 
                  PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
                  GENLIT1 #PLTPNTR# ; 
                  GENMINUS; 
                  DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
                  GENDNREF #DNATPTR# ;
                  GENLESSTHAN;
                  PLTPNTR =  RWGET1(IRTINTZERO  #CURRIRTPTR#);
                  GENLIT0 #PLTPNTR# ; 
                  GENENTER; 
                  PLTPNTR = RWGET1(OSINCIDENCE #CURRIRTPTR#); 
                  GENLIT #PLTPNTR#; 
                  GENUSING; 
                  DNATPTR = CCTRWVRBLINE; 
                  GENDNREF #DNATPTR#; 
                  PLTPNTR = RWGET1(PLT$ERRORMES #CURRPHRGPTR#); 
                  GENLIT #PLTPNTR#; 
                  GENGO;
                  GENTO;
                  PNATPTR = RWGET1(RGPARANAME2  #CURRRPTGRPTR#);
                  GENPNREF #PNATPTR# ;
                  GENPERIOD;
                  END 
              GENMOVE;
              PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
              GENLIT1 #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(PH$PRESENTED  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              END 
  
          #IF THE FIRST LINE NUMBER WAS RELATIVE THEN GENERATE# 
          #IF RH-ON-PAGE = 1# 
          #ADD LINE-COUNTER, RELATIVE-LN,  GIVING S-L-N#
          #MOVE 0 TO RH-ON-PAGE#
          #(SOMETIMES ADD )#
          #IF S-L-N IS GREATER THAN FIRST-DETAIL - 1 GO TO# 
          #P-H-EXIT#
          #ELSE NEXT SENTENCE#
          #ELSE#
          #ADD HEADING  -1   RELATIVE-LN GIVING S-L-N.# 
          #MOVE 1 TO PH-PRESENTED#
          #PERFORM SPACING# 
  
          IF  RWGET1(KIND$LNINTPH  #CURRPHLNPTR#) EQ 2
              #RELATIVE#
          THEN
              BEGIN 
              GENIF;
              DNATPTR =  RWGET1(RH$ON$PAGE  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENEQUAL; 
              PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
              GENLIT1 #PLTPNTR# ; 
              GENADD; 
              DNATPTR =  RWGET1(IRTLCINDEX  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              PLTPNTR =  RWGET1(LNINT$PLTPH  #CURRPHLNPTR#);
              GENILIT #PLTPNTR# ; 
              GENGIVING;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              GENMOVE;
              PLTPNTR =  RWGET1(IRTINTZERO  #CURRIRTPTR#);
              GENLIT0 #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(RH$ON$PAGE  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              IF  RWGET1(RHPHOVERLIMT  #CURRPHRGPTR#) EQ 1
              THEN
                  BEGIN 
                  GENIF;
                  DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
                  GENDNREF #DNATPTR# ;
                  GENGREATTHAN; 
                  PLTPNTR =  RWGET1(IRTFIRSTDETL  #CURRIRTPTR#);
                  GENILIT #PLTPNTR# ; 
                  GENMINUS; 
                  PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
                  GENLIT1 #PLTPNTR# ; 
                  GENGO;
                  GENTO;
                  PNATPTR = RWGET1(RGPARANAME2  #CURRRPTGRPTR#);
                  GENPNREF #PNATPTR# ;
                  GENELSE;
                  GENNEXT;
                  GENSENTENCE;
                  END 
              GENELSE;
              GENADD; 
              PLTPNTR =  RWGET1(HEADING  #CURRIRTPTR#); 
              GENILIT #PLTPNTR# ; 
              PLTPNTR =  RWGET1(IRTINTNEGONE  #CURRIRTPTR#);
              GENLITN1 #PLTPNTR# ;
              PLTPNTR =  RWGET1(LNINT$PLTPH  #CURRPHLNPTR#);
              GENILIT #PLTPNTR# ; 
              GENGIVING;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              GENPERIOD;
              GENMOVE;
              PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
              GENLIT1 #PLTPNTR# ; 
              GENTO;
              DNATPTR =  RWGET1(PH$PRESENTED  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              END 
          CURRPHLNPTR = RWGET1(PHLNLINK  #CURRPHLNPTR#);
          GOTO  GENMOVE3; 
          #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# 
  
GPLPH$1:  
          #GENERATE#
          #MOVE ABSOLUTE-LN TO  S-L-N#
          #PERFORM SPACING# 
          #OR#
          #ADD LINE-COUNTER, RELATIVE-LN  GIVING S-L-N# 
          #(SOMETIMES) IF S-L-N IS GREATER THAN FIRST-DETAIL - 1# 
          #GO TO P-H-EXIT#
          #PERFORM SPACING# 
  
          IF  RWGET1(KIND$LNINTPH  #CURRPHLNPTR#) EQ 1
          THEN
              BEGIN 
              GENMOVE;
              PLTPNTR = RWGET1(LNINT$PLTPH #CURRPHLNPTR#);
              GENILIT #PLTPNTR#;
              GENTO;
              DNATPTR =   RWGET1(SLN  #CURRIRTPTR#);
              GENDNREF #DNATPTR# ;
              GENPERFORM; 
              PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              END 
          IF  RWGET1(KIND$LNINTPH  #CURRPHLNPTR#) EQ 2
          THEN
              #RELATIVE#
          BEGIN 
              GENADD; 
              DNATPTR =   RWGET1(IRTLCINDEX  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              PLTPNTR = RWGET1(LNINT$PLTPH  #CURRPHLNPTR#); 
              GENLIT #PLTPNTR# ;
              GENGIVING;
              DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
              GENDNREF #DNATPTR# ;
              IF  RWGET1(RHPHOVERLIMT  #CURRPHRGPTR#) EQ 1
              THEN
                  BEGIN 
                  GENIF;
                  DNATPTR =  RWGET1(SLN  #CURRIRTPTR#); 
                  GENDNREF #DNATPTR# ;
                  GENGREATTHAN; 
                  PLTPNTR =  RWGET1(IRTFIRSTDETL  #CURRIRTPTR#);
                  GENILIT #PLTPNTR# ; 
                  GENMINUS; 
                  PLTPNTR =  RWGET1(IRTINTONE  #CURRIRTPTR#); 
                  GENLIT1 #PLTPNTR# ; 
                  GENGO;
                  GENTO;
                  PNATPTR = RWGET1(RGPARANAME2  #CURRRPTGRPTR#);
                  GENPNREF #PNATPTR# ;
                  END 
              GENPERFORM; 
              PNATPTR =  RWGET1(SPACING  #CURRIRTPTR#); 
              GENPNREF #PNATPTR# ;
              END 
          CURRPHLNPTR = RWGET1(PHLNLINK  #CURRPHLNPTR#);
  
GENMOVE3: 
          #TEST IF THIS IS A CASE WHERE NO ITEMS IN THE PRINT#
          #LINE WERE PRINTABLE# 
  
          IF  RWGET1(PL$DNATPH  #CURRPHPLPTR#) EQ 0 
          THEN
              GOTO PHGM2; 
PHITEMLOOP: 
          #GENERATE A MOVE STATEMENT THAT WILL FORMAT ONE#
          #ITEM INTO THE PRINT LINE#
  
          DNATPTR = RWGET1(PL$DNATPH  #CURRPHPLPTR#); 
          IF DNATPTR EQ 0 THEN
             GOTO PHGM1;     #   ITEM NOT PRINTABLE     # 
          LINENUM = GETQUICK(DN$LINE,DNAT$,DNATPTR);
          GENEOC #LINENUM# ;
          GENMOVE;
          IF  RWGET1(ITEMTYPEPH  #CURRPHPLPTR#) EQ 0
              #VALUE# 
          THEN
              BEGIN 
              IF  RWGET1(ALLVALUE$PH  #CURRPHPLPTR#) EQ 1 
              THEN
                  BEGIN 
                  GENALL; 
                  END 
              PLTPNTR = RWGET1(PI$SOURCEPH  #CURRPHPLPTR#); 
              GENVLIT #PLTPNTR# ; 
              GOTO PHGENTO; 
              END 
          IF  RWGET1(ITEMTYPEPH  #CURRPHPLPTR#) EQ 1
              #SOURCE#
          THEN
              BEGIN 
              IF  RWGET1(SISOURCE$PH  #CURRPHPLPTR#) EQ 1 
              THEN
                  BEGIN 
                  SAUXINDEX = RWGET1(PI$SOURCEPH  #CURRPHPLPTR#); 
                  #GET DATA OUT OF RP-AUX-TABLE#
                  DNATPTR = RWGET(RASRCEIDNAT,SAUXINDEX); 
                  GENDNREF #DNATPTR# ;
PHSILOOP1:  
                  SAUXINDEX = SAUXINDEX + 1;
                  PSICTEXTATOM = RWGET(RASICTEXT,SAUXINDEX);
                  GENSUBINDX #PSICTEXTATOM# ; 
                  IF RWGET(RALASTSINTRY,SAUXINDEX) EQ 1 
                  THEN
                      GOTO PHGENTO; 
                  GOTO PHSILOOP1; 
                  END 
              #ELSE#
  
              DNATPTR =  RWGET1(PI$SOURCEPH  #CURRPHPLPTR#);
              GENDNREF #DNATPTR# ;
              GOTO PHGENTO; 
              END 
PHGENTO:  
          GENTO;
          DNATPTR =  RWGET1(PL$DNATPH  #CURRPHPLPTR#);
          GENDNREF #DNATPTR# ;
  
PHGM1:  
          #DOES CURRENT ENTRY HAVE A PRINT LINE DELIMITER#
          #ASSOCIATED WITH IT&# 
  
          IF  RWGET1(PL$PH$DELIM  #CURRPHPLPTR#) EQ 1 
          THEN
              GOTO PHGM4; 
  
          #A REPORT GROUP DELIMITER&# 
  
          IF  RWGET1(PL$PH$DELIM  #CURRPHPLPTR#) EQ 2 
          THEN
              GOTO PHGM3; 
          CURRPHPLPTR =  RWGET1(PHPLLINK  #CURRPHPLPTR#); 
          GOTO PHITEMLOOP;
PHGM2:  
          #RG DELIMITER ASS. WITH THIS ENTRY&#
  
          IF  RWGET1(PL$PH$DELIM  #CURRPHPLPTR#) EQ 2 
          THEN
              BEGIN 
PHGM3:  
              PHPLFLAG = 0; 
              GOTO GENPHWRITE;
              END 
PHGM4:  
          CURRPHPLPTR  =  RWGET1(PHPLLINK  #CURRPHPLPTR#);
  
GENPHWRITE: 
          #GEN  WRITE RECORD-NAME-1#
          GENWRITE; 
          DNATPTR =  RWGET1(RECORD$NAME1  #CURRIRTPTR#);
          GENDNREF #DNATPTR# ;
          IF PHPLFLAG  NQ  0
          THEN
              GOTO GPLPH$1; 
  
          #ELSE THE PRINT-LINE-TABLE (PHPLLINK) HAS BEEN EXHAUSTED.#
  
  
          #END OF GENPHLINES# 
  
GPH1: 
  
          #GENPHEXIT# 
  
          #GENERATE THE PAGE HEADING EXIT PARAGRAPH#
          #(AND A PRECEDING PERIOD)#
          #.# 
          #P-H-EXIT.# 
          #EXIT.# 
  
          GENPERIOD;
          PNATPTR = RWGET1(RGPARANAME2  #CURRRPTGRPTR#);
          GENPNDEF #PNATPTR# ;
          GENPERIOD;
          GENEXIT;
          GENPERIOD;
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("G$PHEAD")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          RETURN; 
          END #G$PHEAD# 
          END #HEADING# 
          TERM
