Return to the Printing Tips
Generic Out Queue Monitor
Attach a data queue to the out queue. Every time a spool file goes to the ready status, an entry that contains the data you are looking for, is written to the data queue. Here is an Example:
/******************************************************************************/ /*'GENERIC OUT QUEUE MONITOR */ /* */ /* By Chris Bipes 06/10/96 */ /*'CrossCheck, Inc., 6119 State Farm Drive, Rohnert Park, CA 94928 */ /******************************************************************************/ PGM DCL VAR(&JOBTYPE) TYPE(*CHAR) LEN(1) DCL VAR(&DTAQ ) TYPE(*CHAR) LEN(10) VALUE('OTQMONITOR') DCL VAR(&QLIB ) TYPE(*CHAR) LEN(10) VALUE('QUSRSYS') DCL VAR(&QLEN ) TYPE(*DEC ) LEN(5 0) VALUE(128) /*' DETERMINE IF BATCH OR INTERACTIVE JOB */ RTVJOBA TYPE(&JOBTYPE) IF COND(&JOBTYPE = '0') THEN(GOTO BATCH) SBMJOB CMD(CALL PGM(GBCOTQM)) JOB(OTQMONITOR) + JOBQ(SERVER) USER(QPGMR) PRTTXT(*BLANK) + SYSLIBL(*SYSVAL) CURLIB(*USRPRF) + INLLIBL(*JOBD) DSPSBMJOB(*NO) + MSGQ(*LIBL/QSYSOPR) GOTO CMDLBL(ENDPGM) BATCH: /*'BUILD DATA QUEUE IF DOES NOT EXIST */ CHKOBJ OBJ(&DTAQ) OBJTYPE(*DTAQ) MONMSG MSGID(CPF9801) EXEC(DO) CRTDTAQ DTAQ(&QLIB/&DTAQ) MAXLEN(&QLEN) + TEXT('Out Queue Monitoring Data Queue') ENDDO /*'ALOCATE DATA QUEUE SO CANNOT BE DELETED */ ALCOBJ OBJ((&QLIB/&DTAQ *DTAQ *SHRUPD)) /*'RECEIVE DATA QUEUE ENTRY */ OVRDBF FILE(GBPOTQM) FRCRATIO(1) CALL PGM(GBROTQM) + PARM(&DTAQ + &QLIB + &QLEN) ENDPGM: RCLRSC ENDPGM ************************************************************************** * MONITOR OUT QUEUES * * By Chris Bipes 06/06/96 *'CrossCheck, Inc., 6119 State Farm Drive, Rohnert Park, CA 94928 ************************************************************************** FGBPOTQM O E DISK UC * PROGRAM STATUS DATA I SDS I 1 10 PGMID I 254 263 USERID * DATA QUEUE LAYOUT IQDATA IDS 128 I 1 10 RCDID I* 11 12 ?? I 13 38 JOBID I 13 22 JOBNM I 23 32 JOBUSR I 33 38 JOBNBR I 39 48 SPLF I B 49 520BSPLF# I 53 62 OUTQ I 63 72 OTQLIB I* 73 128 ?? * QUSRSPLA - LIST SPOOL FILE ATRIBUTES API IRCVVAR IDS I B 1 40BYTRTN I B 5 80BYTVAL I 25 40 SPLFID I 41 50 JOBNAM I 51 60 USRNAM I 61 66 JOBNUM I 67 76 FILNAM I B 77 800FILNUM I 81 90 FRMTYP I 91 100 USRDTA * FUTURE EXPANSION * I* 101 110 STATUS I* 111 120 FILAVL I* 121 130 HLDF I* 131 140 SAVF I* B 141 1440TOTPAG I* B 145 1480PAGWRT I* B 149 1520STRPAG I* B 153 1560ENDPAG I* B 157 1600LASPAG I* B 161 1640RESPRT I* B 165 1680TOTCPY I* B 169 1720CPYLFT I* B 173 1760LPI I* B 177 1800CPI I* 181 182 OUTPRI I* 183 192 OUTQNM I* 193 202 OUTQLB I* 203 209 DATFOP I* 210 215 TIMFOP I* 216 225 DEVFNA I* 226 235 DEVFLB I* 236 245 PGMOPF I* 246 255 PGMOPL I* 256 270 ACCCOD I* 271 300 PRTTXT I* B 301 3040RCDLEN I* B 305 3080MAXRCD I* 309 318 DEVCLS I* 319 328 PRTTYP I* 329 340 DOCNAM I* 341 404 FLDNAM I* 405 412 S36PRC I* 413 422 PRTFID I* 423 423 RPLUN I* 424 424 RPLCHR I* B 425 4280PAGLEN I* B 429 4320PAGWID I* B 433 4360NUMSEP I* B 437 4400OVRLIN I* 441 450 DBCSDA I* 451 460 DBCSEC I* 461 470 DBCSSO I* 471 480 DBCSCR I* B 481 4840DBCSCI I* 485 494 GRAPHI I* 495 504 CODPAG I* 505 514 FORNAM I* 515 524 FORLIB I* B 525 5280SRCDRW I* 529 538 PRTFON I* 539 544 S36SPL I* B 545 5480PAGROT I* B 549 5520JUSTIF I* 553 562 PRTBOT I* 563 572 FLDRCD I* 573 582 CTLCHR I* 583 592 ALGFRM I* 593 602 PRTQUA I* 603 612 FRMFED I* 613 683 VOLUME I* 684 700 FLABID I* 701 710 EXCTYP I* 711 720 CHRCOD I* B 721 7240TOTRCD I* B 725 7280PGPSID I* 729 738 FOVNAM I* 739 748 FOVLIB I* P 749 7565FOVOFD I* P 757 7645FOVOFA I* 765 774 BOVNAM I* 775 784 BOVLIB I* P 785 7925BOVOFD I* P 793 8005BOVOFA I* 801 810 UOM I* 811 820 PAGNAM I* 821 830 PAGLIB I* 831 840 LINSPC I* P 841 8485PNTSIZ I* P 849 8565FMRFOD I* P 857 8645FMRFOA I* P 865 8725BMRFOD I* P 873 8805BMRFOA I* P 881 8885MPGLEN I* P 889 8965MPGWID I* 897 906 MEAMTH I* 907 907 AFPRES I* 908 917 FCHSNM I* 918 927 FCHSLB I* 928 937 CDPGNM I* 938 947 CDPGLB I* 948 957 CFNTNM I* 958 967 CFNTLB I* 968 977 DCFTNM I* 978 987 DCFTLB I* 988 997 USRFIL * DEFINE BINANRY NUMBERS I DS I B 1 40RCVLEN * DEFINE CONSTANTS I 'FAXCOPIES' C FXCOPY ************************************************************************** * MAIN LINE - RTV DATA QUEUE ************************************************************************** * * RECEIVE DATA QUEUE - WAIT 60 SECONDS C CALL 'QRCVDTAQ'PRCVQ * * TEST FOR EXTERNAL END REQUEST C SHTDN LR * * TEST FOR TIMEOUT B1 C QLEN IFEQ *ZERO B2 C FOPEN IFEQ 'Y' C ADD 1 TCOUNT 30 B3 C TCOUNT IFGT 10 C CLOSEGBPOTQM C CLEARFOPEN C CLEARTCOUNT E3 C ENDIF E2 C ENDIF C GOTO ENDPGM E1 C ENDIF * * PROCESS RECEIVED DATA * C SELEC * SPOOL ENTRY C RCDID WHEQ '*SPOOL' C EXSR $RTVA RTV ATTRIBUTES * END REQUEST C RCDID WHEQ '*END' C MOVE *ON *INLR C ENDSL * * END OF JOB C ENDPGM TAG ************************************************************************** * SUBROUTINES: ************************************************************************** * RETRIVE SPOOL FILE ATTRIBUTES ************************************************************************** C $RTVA BEGSR * FOR NOW ONLY NEED FAXCOPIES OUT QUEUE ENTRIES C OUTQ CABNEFXCOPY #RTVA * CALL SYSTEM API C CALL 'QUSRSPLA' C PARM RCVVAR C PARM 100 RCVLEN C PARM 'SPLA0100'FMTNM 8 C PARM JOBID 26 C PARM *BLANK INTJOB 16 C PARM *BLANK INTSPL 16 C PARM SPLF C PARM BSPLF# * SAVE RETRIEVED DATA C Z-ADDBSPLF# SPLF# C FOPEN IFNE 'Y' C OPEN GBPOTQM C MOVE 'Y' FOPEN 1 C ENDIF C WRITEGBROTQM * C #RTVA ENDSR * ************************************************************************** * FIRST PASS CALCS ************************************************************************** C *INZSR BEGSR * ENTRY PARMS C *ENTRY PLIST C PARM @DTAQ 10 C PARM @QLIB 10 C PARM @QLEN 50 * RECEIVE DATA QUEUE PARMS C PRCVQ PLIST C PARM @DTAQ DTAQ C PARM @QLIB QLIB C PARM 0 QLEN C PARM *BLANK QDATA C PARM 60 QWAIT 50 * DEFINE VARIABLES C *LIKE DEFN @DTAQ DTAQ C *LIKE DEFN @QLIB QLIB C *LIKE DEFN @QLEN QLEN * DEFINE KEY LISTS * FIRST PASS CALCS C #INZSR ENDSRThis actually write to a file for later processing. But it shows you the data queue layout and the list spool file attributes api that is needed to get the user data.
[report a broken link by clicking here]