PROGRAM SYRTOP,1.0(001)                                                 !
!       SYRTOP.BV - Report Mainline Program for REPORT MODULE: SYRTOP
!

       SIGNIFICANCE 11

       COPYF   "TOPFIL"        ! Data File
       COPYF   "TOPKEY"        ! Key File

       COPY    "RPTMAD"        ! RPT work area
       COPY    "ABSELL"
       COPY    "FORMAD"
       COPY    "PRTREC"
       COPYF   "DBMFIL[SY]"            ! Data Base dictionary
       COPYF   "DBMKEY[SY]"
       COPYF   "PRTFIL[SY]"            ! Printer Control file
       COPYF   "PRTKEY[SY]"
       COPY    "USRBUF"
       COPYF   "PQUFIL[SY]"            ! Print Queue file
       COPYF   "PQUKEY[SY]"
       COPYF   "PQDFIL[SY]"            ! Special Data File

       MAP1    FORMID,S,6
       MAP1    H'QUE,B,1,60            ! Standard Hold Que
       MAP1    P'QUE,B,1,20            ! Standard Process Que
       MAP1    NOSEL,B,1               ! Set = to 1 to bypass Selection Sys
       MAP1    NOSUM,B,1               ! Set = to 1 to bypass Summary


       MAP1    DSK                     ! USR Params for RPT Stack
               MAP2    DEV,S,3
               MAP2    DRV,S,2
       MAP1    PPN,S,7

               ON ERROR GOTO ERTRAP

       RPT'PT1:
               PQD'DATA = "Topics File"

       BEGIN'PT1:

               PQU'PROG = "SYRTOP"

       COPY    "SELRP1"

               PS'CDEE = "%SEL"
               PS'PRE = "SYTOP"
               PS'DRNM = "TOPFIL"
               PS'PROG = "SYRTOP"
               PS'CMP = "N"
               PS'RPT = "Y"
               IF PRW'SEL # "Y" GOTO CHN'SEL    ![3.5]
               PS'KPRE = "SYTOP"
       CHN'SEL:
               XCALL GIN,0,PASS'SEL'AR
               IF PRW'STK # "N" THEN
                       CHAIN "DSK0:ABSELQ.CMD[2,2]"
               ENDIF
               CHAIN "DSK0:ABSEL.CMD[2,2]"


START'RPT:
       GOSUB IRPT'SYRTOP               ! Initialize report module
       ACTVSW = 1

START'RPT2:                             ! Multiple Report Entry Point
       IF SEL1 # 9
               use TOP into TOP'rec key TOP'key
       ENDIF
       do
               IF SEL1 = 9
                       IF PSKY = PS'NOSL EXIT
                       READ #1000,PASS'REC
                       use TOP ps'rcn into TOP'rec
                       PSKY = PSKY + 1
               ELSE
                       getnxt TOP
                       IF TOP'CTL = 3  EXIT
               ENDIF
               GOSUB RPT'DETAIL                ! Produce the report

       loop


END'RPT:

NORM'END:
               GOSUB RPT'END
               IF PRTCOD = 1 OR PRTCOD > 3 GOTO END'JOB
               IF PRT'EXSPL = "N" GOTO END'JOB
               RR1 = rdvf : RR2 = PGECNT
               IF RR2 = 0 RR2 = 1
               XCALL SPOOL,r,PRT'DEVCD,RR1,RR2,FORMID

END'JOB:
               IF SEL1 # 9 GOTO FINAL'END
               rdlock dbf ps'wkno
               DBF'INUSE = "N"
               write dbf

FINAL'END:
               IF PRT'CRT = "Y" AND ACTVSW = 1 THEN
                       CHAIN "DSK0:EXP.CMD[2,2]"
               ENDIF
               END
ABORT:
ABORT'JOB:
               IF ACTVSW # 1 GOTO END'JOB
               ? TAB(-1,14)
               ? "Report has been Aborted"

               rtnadr = 0
               GOSUB RPT'END                   ! CLOSE OUT
               IF PRTCOD = 2 OR PRTCOD = 3 THEN
                       KILL R'FILENME
               ENDIF
               GOTO END'JOB

PUT'USR'DATA:
               RETURN
SET'USR'DATA:
               RETURN

       COPYR   "SYRTOP"                ! Report Copy Module
       COPY    "RPTMAT"
       COPY    "FORMAT"
       COPY    "DSK0:RPTSEL[11,10]"
       COPY    "PRTSTK"
       COPY    "BASERR"

\\TSTFUNC