.TITLE SUPERVISORY SYSTEM REPORT DISTRIBUTION .SBTTL CONSOLIDATE REPORTS FOR RANDOM DORKS .IDENT /V01.1B/ ;21-MAY-79 FIX LOGIC ON NEXT FILE TO PRINT ; ; ; .MCALL FCSMC$,SPRSY$ .MCALL DIR$,QIOW$,QIOW$S,EXIT$S,MOUT$S .MCALL VSDR$,CSI$,CSI$1,CSI$2,PUT$R FCSMC$ SPRSY$ LUN1= 1 LUN2= 2 LUN3= 3 TILUN= 4 MOLUN= 5 DSB.SZ= 80. LSB.SZ= 132. BNB.SZ= 132. ; LINK FILE ;LINK/NOFLO/MAP:(DISTRIB/FUL/FIL)/OPT/DEBUG DISTRIB ;ACTFIL=3 ;UNITS=5 ;ASG=SY0:1:2:3,TI:4,MO:5 ;UIC=[50,1] ; .PAGE .SBTTL DATA AREA FSRSZ$ 3 DISFDB: FDBDF$ FDRC$A FD.PLC,DISBUF,DSB.SZ FDOP$A LUN1,DISDSD,,FO.RD BANFDB: FDBDF$ FDAT$A R.VAR,FD.CR FDRC$A ,BANBUF,BNB.SZ FDOP$A LUN2,BANDSD,,FO.WRT LSTFDB: FDBDF$ FDRC$A ,LSTBUF,LSB.SZ FDOP$A LUN3,CSIBLK+C.DSDS,,FO.RD DISDSD: .WORD DB1SIZ,DB1NAM .WORD DIRSIZ,DIR .WORD DNSIZ,DNAME BANDSD: .WORD DB0SIZ,DB0NAM .WORD DIRSIZ,DIR .WORD BNSIZ,BNAME .NLIST BEX DB0NAM: .ASCII /DB0:/ DB0SIZ=.-DB0NAM .EVEN DB1NAM: .ASCII /DB1:/ DB1SIZ=.-DB1NAM .EVEN DIR: .ASCII /[50,1]/ DIRSIZ=.-DIR .EVEN DNAME: .ASCII /LOTDAYRPT.DST/ DNSIZ=.-DNAME .EVEN BNAME: .ASCII /BANNER.LST/ BNSIZ=.-BNAME .EVEN CSI2ER: .ASCII /CSI$2 ERROR/ CS2.SZ=.-CSI2ER .EVEN NOFIL: .ASCII /NO SUCH FILE/ NF.SIZ=.-NOFIL .EVEN XQIO: .WORD XQLN,XQIOSM XQIOSM: .ASCII /SY0:[1,2]QIOSYM.MSG/ XQLN=.-XQIOSM .EVEN CSI$ CSIBLK: .BLKB C.SIZE .EVEN .LIST BEX .PAGE .SBTTL STORAGE AREA DISBUF: .BLKB DSB.SZ BANBUF: .BLKB BNB.SZ LSTBUF: .BLKB LSB.SZ STARBF: .REPT BNB.SZ .ASCII /*/ .ENDR HLFBUF: .ASCII /**/ .REPT BNB.SZ-4 .ASCII / / .ENDR .ASCII /**/ .BLKB 10 WLDFLG: .WORD 0 FOUND: .WORD 0 SNDBUF: .ASCII /LP/ .BYTE 0 ;UNIT .BYTE 110. ;PRIORITY .BYTE 1 ;COPIES, FORMS SNDFLG: .BYTE 0 ;FLAG SNDFID: .BLKW 10. ;FILE ID SNDATA: VSDR$ SPR...,,,,,SNDBUF,13.,,100. .PAGE .SBTTL MAIN ROUTINE START: FINIT$ ;INIT FSR OPEN$R #DISFDB ;OPEN DISTRIBUTION FILE BCC 10$ ;BR IF OK 5$: MOVB DISFDB+F.ERR,R5 ;GET ERROR CALL ERROR ;PRINT IT BR 53$ ; 10$: MOVB #QF.STC,SNDFLG ;START CONCATANATED OUTPUT DIR$ #SNDATA ;SEND DATA BLOCK 15$: CLR FOUND ;RESET FLAG CALL BANBLD ;BUILD & QUE BANNER BVC 30$ ;BR IF WE HAVE A '2' RECORD 20$: BR 50$ ;ELSE 30$: INC R1 ;POINT PAST '2' DEC R3 ;TAKE IT OFF CSI$1 #CSIBLK,R1,R3 ;COMPRESS & SYNTAX BCC 35$ ;BR IF OK QIOW$S #IO.WVB,#TILUN,#20.,,,, BR 50$ ; 35$: CSI$2 #CSIBLK,OUTPUT ;PARSE TO DATASET DESCRIPTOR MOV #LSTFDB,R0 ;+ MOV #LSTFDB+F.FNB,R1 ; SET UP MOV #CSIBLK+C.DSDS,R2 ; FOR CLR R3 ;- 36$: CALL .PARSE ;PARSE BCS 39$ ;BR IF ERROR CLR WLDFLG ;RESET FLAG BIT #NB.STP!NB.SNM!NB.SVR,LSTFDB+F.FNB+N.STAT BEQ 37$ ;NO WILD CARDS INC WLDFLG ;SHO 37$: CALL .FIND ;FIND ENTRY BCC 45$ ;BR IF OK TST WLDFLG ;REAL ERROR OR END OF WILD CARDS? BNE 46$ ;END OF WILD CARDS 39$: CMPB #IE.NSF,LSTFDB+F.ERR ;NO SUCH FILE ERROR? BEQ 46$ ;YES MOVB LSTFDB+F.ERR,R5 CALL ERROR ;PRINT ERROR BR 50$ ; 45$: INC FOUND ;SHO MOV #LSTFDB,R0 ;FILL IN DATA BLOCK CALL FIDFIL ;.... MOVB #QF.ND!QF.INS,SNDFLG ;INSERT NO DELETE DIR$ #SNDATA ; TST WLDFLG ;WILD CARDS? BNE 37$ ;YES 46$: BITB #CS.MOR,CSIBLK+C.STAT ;MORE TO DO? BEQ 48$ ;NOPE 47$: GET$ #DISFDB ;GET ANOTHER RECORD MOV DISFDB+F.NRBD+2,R1 ;... MOV DISFDB+F.NRBD,R3 ;... BR 30$ ; 48$: TST FOUND ;FIND ANYTHING? BNE 15$ ;YES CALL SORRY ;SAY WE'RE SORRY BR 15$ ; 50$: MOVB #QF.ENC,SNDFLG ;STOP CONCATANATED OUTPUT 51$: DIR$ #SNDATA ;... 52$: CLOSE$ #DISFDB ;CLOSE FILE 53$: EXIT$S ; .PAGE .SBTTL BUILD BANNER FILE & INSERT IN QUEUE BANBLD: OPEN$W #BANFDB ;OPEN BANNER FILE BCC 10$ ;BR IF OK MOVB BANFDB+F.ERR,R5 ;LOAD ERROR CALL ERROR ;PRINT IT BR 47$ ;RETURN 10$: MOV #STARBF,R4 ;+ MOV #4,R5 ; PRINT CALL STARS ;- 11$: MOV #HLFBUF,R4 ;+ MOV #4,R5 ; PRINT CALL STARS ;- GET$ #DISFDB ;GET A RECORD BCC 15$ ;BR IF OK CMPB #IE.EOF,DISFDB+F.ERR ;EOF? BEQ 47$ ;YES MOVB DISFDB+F.ERR,R5 ;LOAD ERROR CALL ERROR ;PRINT IT BR 47$ ; 15$: MOV DISFDB+F.NRBD+2,R1 ;ADDRESS MOV DISFDB+F.NRBD,R3 ;& SIZE OF RECORD MOV #HLFBUF,R2 ;OUTPUT RECORD CMPB #'1,(R1) ;GOTA '1' ? BEQ 20$ ;YUP CMPB #'2,(R1) ;GOTA '2' ? BEQ 40$ ;YUP BR 47$ ;NOPE -- WRONG FORMAT 20$: INC R1 ;POINT PAST '1' DEC R3 ;... MOV R3,R5 ;SAVE LENGTH ASL R5 ;+ MOV #128.,R4 ; FIND PLACE IN SUB R5,R4 ; OUTPUT RECORD ASR R4 ; ADD R4,R2 ;- 30$: MOVB (R1)+,(R2)+ ;+ MOVB #40,(R2)+ ; DOUBLE SPACE SOB R3,30$ ;- PUT$ #BANFDB,#HLFBUF,#BNB.SZ ;WRITE IT MOV #HLFBUF+2,R1 ;+ MOV #128./2,R2 ; CLEAR OUT 35$: MOV #" ,(R1)+ ; BUFFER SOB R2,35$ ;- BR 11$ ;DO IT AGAIN 40$: MOV #STARBF,R4 ;+ MOV #4,R5 ; PRINT CALL STARS ;- 45$: MOV #BANFDB,R0 ;FILL IN SEND DATA CALL FIDFIL ;... MOVB #QF.INS,SNDFLG ;INSERT IN QUEUE DIR$ #SNDATA ;... BR 49$ ; 47$: SEV 49$: CLOSE$ #BANFDB ; 50$: RETURN ; .PAGE .SBTTL SORRY FILE AND QUEUE SORRY: OPEN$W #BANFDB ;OPEN BANNER FILE BCC 5$ ; MOVB BANFDB+F.ERR,R5 ;LOAD ERROR CALL ERROR ;PRINT IT BR 10$ ; 5$: PUT$ #BANFDB,#NOFIL,#NF.SIZ PUT$ #BANFDB,DISFDB+F.NRBD+2,DISFDB+F.NRBD CALL FIDFIL MOVB #QF.INS,SNDFLG DIR$ #SNDATA CLOSE$ #BANFDB 10$: RETURN .PAGE .SBTTL FILL IN DATA BLOCK WITH FILE ID FIDFIL: MOV R1,-(SP) ; MOV #SNDBUF,R1 ; MOV F.FNB+N.DVNM(R0),Q.FDEV(R1) ; MOV F.FNB+N.UNIT(R0),Q.FUNI(R1) ; MOV F.FNB+N.DID(R0),Q.FDID(R1) ; MOV F.FNB+N.DID+2(R0),Q.FDID+2(R1) ; MOV F.FNB+N.DID+4(R0),Q.FDID+4(R1) ; MOV F.FNB+N.FNAM(R0),Q.FNAM(R1) ; MOV F.FNB+N.FNAM+2(R0),Q.FNAM+2(R1) ; MOV F.FNB+N.FNAM+4(R0),Q.FNAM+4(R1) ; MOV F.FNB+N.FTYP(R0),Q.FTYP(R1) ; MOV F.FNB+N.FVER(R0),Q.FVER(R1) ; MOV (SP)+,R1 ; RETURN .PAGE .SBTTL MISC ROUTINES STARS: PUT$ #BANFDB,R4,#BNB.SZ ; BCC 5$ ; MOVB BANFDB+F.ERR,R5 ; CALL ERROR ; BR 6$ ; 5$: SOB R5,STARS ; BR 7$ ; 6$: SEC ; 7$: RETURN ; ERROR: NEG R5 ; MOUT$S #XQIO,,R5 RETURN .END START