Franck Arbey -- code |
 |
|
09 Jun 2003 | Search400.com |
 |


|
Here's a screenshot produced by the program.
For every QRWTSRVR job (client/server job for DB2, TransparentGateway) you can see quickly the following information.
User : the USER which has been used to connect
NumÉro : number of the QRWRSRVR job
Adresse IP : IP address of the client station
Source / Module :
Status : status of the job, as in the WRKACTJOB command
Port : remote port used by this connection (the AS/400 port used is DRDA)
N° job / Nb Jobs : sequence and total of jobs
Options:
F2: WRKJOB the displayed job
F5: refresh
Page Up / Down: as usual
API used:
QUSLJOB - QUSRTVUS - QUSRJOBI - QGYOLJBL
Process:
- Lists the active QRWTSRVR jobs with QUSLJOB
- For each job, looks in the job log with QGYOLBJL to find the CPI9162
- Reads and displays the data of the CPI9162
WRKRWTJOB CLP source, with some English information :
/* ------------------------------------------------------------------*/
/* */
/* LISTE DES JOBS EN MSGW */
/* */
/* ------------------------------------------------------------------*/
/* */
/* ------------------------------------------------------------------*/
/* F. ARBEY */
/* ------------------------------------------------------------------*/
PGM
/* HEADER OF USER SPACE */
DCL VAR(&PHEADER) TYPE(*CHAR) LEN(140)
/* API : QUSLJOB */
/* HEX : DATAS OFFSET */
DCL VAR(&BOFFSET) TYPE(*CHAR) LEN(4)
/* HEX : NBR OF DATAS */
DCL VAR(&BNBENT) TYPE(*CHAR) LEN(4)
/* HEX : SIZE OF DATAS */
DCL VAR(&BSZENT) TYPE(*CHAR) LEN(4)
/* DEC : DATAS OFFSET */
DCL VAR(&DOFFSET) TYPE(*DEC) LEN(5 0)
/* DEC : NBR OF DATAS */
DCL VAR(&DNBENT) TYPE(*DEC) LEN(5 0)
/* DEC : SIZE OF DATAS */
DCL VAR(&DSZENT) TYPE(*DEC) LEN(5 0)
/* DEC : READING POSITION IN USER SPACE */
DCL VAR(&DPOS) TYPE(*DEC) LEN(5 0)
/* HEX : READING POSITION IN USER SPACE */
DCL VAR(&BPOS) TYPE(*CHAR) LEN(4)
/* DEC : READING COUNTER */
DCL VAR(&CPT) TYPE(*DEC) LEN(5 0)
/* API : QUSRTVUS */
/* USER SPACE CONTENT*/
DCL VAR(&CONTENU) TYPE(*CHAR) LEN(56)
/* INTERNAL JOB NAME */
DCL VAR(&INTJNAME) TYPE(*CHAR) LEN(16)
/* API : QUSRJOBI */
/* JOB DETAIL */
DCL VAR(&CARAC) TYPE(*CHAR) LEN(111)
/* CURRENT USER */
DCL VAR(&CURUSER) TYPE(*CHAR) LEN(10)
/* JOB NAME */
DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(10)
/* USER NAME */
DCL VAR(&USRNAME) TYPE(*CHAR) LEN(10)
/* JOB NUMBER */
DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6)
DCL VAR(&JOBNUM) TYPE(*DEC) LEN(6 0)
/* JOB STATUS */
DCL VAR(&JOBSTS) TYPE(*CHAR) LEN(4)
/* API : QGYOLJBL */
/* JOB MESSAGES */
DCL VAR(&JOBLOG) TYPE(*CHAR) LEN(3000)
/* INFORMATION LIST */
DCL VAR(&LSTINFO) TYPE(*CHAR) LEN(80)
/* MESSAGE SELECTION */
DCL VAR(&SELECT) TYPE(*CHAR) LEN(85) VALUE(*)
/* ERROR */
DCL VAR(&ERROR) TYPE(*CHAR) LEN(7)
/* CAR : NUMERIQUE */
DCL VAR(&CNUM5) TYPE(*CHAR) LEN(5)
/* READING COUNTER */
DCL VAR(&POS) TYPE(*DEC) LEN(5 0)
/* OFFSET TO NEXT ENTRY */
DCL VAR(&BOFFNXT) TYPE(*CHAR) LEN(4)
DCL VAR(&DOFFNXT) TYPE(*DEC) LEN(5 0)
/* MESSAGE IDENTIFIER */
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
/* OFFSET TO FIELDS */
DCL VAR(&BOFFFLD) TYPE(*CHAR) LEN(4)
DCL VAR(&DOFFFLD) TYPE(*DEC) LEN(5 0)
/* NUMBER OF FIELDS */
DCL VAR(&BNBRFLD) TYPE(*CHAR) LEN(4)
DCL VAR(&DNBRFLD) TYPE(*DEC) LEN(5 0)
/* LENGTH OF DATAS */
DCL VAR(&BLNGDTA) TYPE(*CHAR) LEN(4)
DCL VAR(&DLNGDTA) TYPE(*DEC) LEN(5 0)
/* DATAS DE CPI9162 */
DCL VAR(&DATAS) TYPE(*CHAR) LEN(80)
DCL VAR(&BPORT) TYPE(*CHAR) LEN(4)
DCL VAR(&DPORT) TYPE(*DEC) LEN(5 0)
DCL VAR(&BLNGSRC) TYPE(*CHAR) LEN(2)
DCL VAR(&DLNGSRC) TYPE(*DEC) LEN(5 0)
DCL VAR(&SOURCE) TYPE(*CHAR) LEN(10)
/* DECIMAL VALUE */
DCL VAR(&VALDEC) TYPE(*DEC) LEN(5 0)
/* HEXA VALUE */
DCL VAR(&VALHEX) TYPE(*CHAR) LEN(4)
DCL VAR(&VALHEX1) TYPE(*CHAR) LEN(4)
DCL VAR(&VALHEX2) TYPE(*CHAR) LEN(4)
/* MESSAGE */
DCL VAR(&MESSA) TYPE(*CHAR) LEN(10)
DCLF FILE(WRKRWTJOB)
ADDLIBLE LIB(QGY)
MONMSG MSGID(CPF2103)
/* DELETE THE USER SPACE */
DLTUSRSPC USRSPC(QTEMP/USRSPC)
MONMSG MSGID(CPF2105)
/* CREATE THE USER SPACE */
CALL PGM(CRTUSRSPC) PARM('USRSPC QTEMP ')
/* LISTE ACTIVE JOBS */
CALL PGM(QUSLJOB) PARM('USRSPC QTEMP ' +
'JOBL0100 ' 'QRWTSRVR *ALL +
*ALL ' '*ACTIVE ')
/* USERSPACE DETAILS */
CALL PGM(RTVUSRSPC) PARM('USRSPC QTEMP ' +
&PHEADER)
CHGVAR VAR(&BNBENT) VALUE(%SST(&PHEADER 133 4))
CHGVAR VAR(&DNBENT) VALUE(%BIN(&BNBENT))
/* TEST THE NUMBER OF JOBS */
IF COND(&DNBENT = 0) THEN(DO)
SNDPGMMSG MSG('No job to process.')
GOTO CMDLBL(FIN)
ENDDO
CHGVAR VAR(&CNUM5) VALUE(&DNBENT)
SNDPGMMSG MSG(&CNUM5 *CAT ' job(s) Client/Serveur sur +
la machine.')
CHGVAR VAR(&BOFFSET) VALUE(%SST(&PHEADER 125 4))
CHGVAR VAR(&DOFFSET) VALUE(%BIN(&BOFFSET))
CHGVAR VAR(&BSZENT) VALUE(%SST(&PHEADER 137 4))
CHGVAR VAR(&DSZENT) VALUE(%BIN(&BSZENT))
CHGVAR VAR(&DPOS) VALUE(&DOFFSET)
CHGVAR VAR(&DPOS) VALUE(&DPOS + 1)
CHGVAR VAR(&CPT) VALUE(1)
/* PROCESSS THE JOBS */
/* ------------------- */
LOOP: IF COND(&CPT <= &DNBENT) THEN(DO)
CHGVAR VAR(%BIN(&BPOS)) VALUE(&DPOS)
CALL PGM(QUSRTVUS) PARM('USRSPC QTEMP ' +
&BPOS &BSZENT &CONTENU)
CHGVAR VAR(&INTJNAME) VALUE(%SST(&CONTENU 27 16))
/* JOB DETAIL */
CALL PGM(QUSRJOBI) PARM(&CARAC X'00000085' +
'JOBI0200' '*INT ' +
&INTJNAME)
MONMSG MSGID(CPF3C52 CPF3C51) EXEC(GOTO CMDLBL(JUMP))
CHGVAR VAR(&JOBSTS) VALUE(%SST(&CARAC 108 4))
CALL PGM(QUSRJOBI) PARM(&CARAC X'00000065' +
'JOBI0600' '*INT ' +
&INTJNAME)
MONMSG MSGID(CPF3C52 CPF3C51) EXEC(GOTO CMDLBL(JUMP))
CHGVAR VAR(&CURUSER) VALUE(%SST(&CARAC 92 10))
CHGVAR VAR(&JOBNAME) VALUE(%SST(&CARAC 9 10))
CHGVAR VAR(&USRNAME) VALUE(%SST(&CARAC 19 10))
CHGVAR VAR(&JOBNBR) VALUE(%SST(&CARAC 29 6))
CHGVAR VAR(&JOBLOG) VALUE(' ')
CHGVAR VAR(&LSTINFO) VALUE(' ')
CHGVAR VAR(&SELECT) VALUE(' ')
/* LIST DIRECTION */
CHGVAR VAR(%SST(&SELECT 1 10)) VALUE('*NEXT')
/* QUALIFIED JOB NAME */
CHGVAR VAR(%SST(&SELECT 11 4)) VALUE('*INT')
/* INTERNAL JOB NAME */
CHGVAR VAR(%SST(&SELECT 37 16)) VALUE(&INTJNAME)
/* STARTING MESSAGE KEY */
CHGVAR VAR(&VALDEC) VALUE(0)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(%SST(&SELECT 53 4)) VALUE(&VALHEX)
/* MAXIMUM MESSAGE LENGTH */
CHGVAR VAR(&VALDEC) VALUE(500)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(%SST(&SELECT 57 4)) VALUE(&VALHEX)
/* MAXIMUM MESSAGE HELP LENGTH */
CHGVAR VAR(&VALDEC) VALUE(0)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(%SST(&SELECT 61 4)) VALUE(&VALHEX)
/* OFFSET OF INDENTIFIERS OF FIELDS TO RETURN */
CHGVAR VAR(&VALDEC) VALUE(80)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(%SST(&SELECT 65 4)) VALUE(&VALHEX)
/* NUMBER OF FIELDS TO RETURN */
CHGVAR VAR(&VALDEC) VALUE(1)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(%SST(&SELECT 69 4)) VALUE(&VALHEX)
/* OFFSET TO CALL MESSAGE QUEUE NAME */
CHGVAR VAR(&VALDEC) VALUE(84)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(%SST(&SELECT 73 4)) VALUE(&VALHEX)
/* SIZE OF CALL MESSAGE QUEUE NAME */
CHGVAR VAR(&VALDEC) VALUE(1)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(%SST(&SELECT 77 4)) VALUE(&VALHEX)
/* FILEDS TO RETURN */
CHGVAR VAR(&VALDEC) VALUE(201)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(%SST(&SELECT 81 4)) VALUE(&VALHEX)
/* CHGVAR VAR(&VALDEC) VALUE(301) */
/* CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC) */
/* CHGVAR VAR(%SST(&SELECT 85 4)) VALUE(&VALHEX) */
/* CALL MESSAGE QUEUE NAME */
CHGVAR VAR(%SST(&SELECT 85 1)) VALUE('*')
CHGVAR VAR(&VALDEC) VALUE(3000)
CHGVAR VAR(%BIN(&VALHEX)) VALUE(&VALDEC)
CHGVAR VAR(&VALDEC) VALUE(8)
CHGVAR VAR(%BIN(&VALHEX1)) VALUE(&VALDEC)
CHGVAR VAR(&VALDEC) VALUE(85)
CHGVAR VAR(%BIN(&VALHEX2)) VALUE(&VALDEC)
CALL PGM(QGYOLJBL) PARM(&JOBLOG &VALHEX &LSTINFO +
&VALHEX1 &SELECT &VALHEX2 &ERROR)
MONMSG MSGID(CPF0000)
/* MESSAGES PROCESS: LOKK FOR CPI9162 */
/* --------------------------------------------- */
CHGVAR VAR(&POS) VALUE(1)
LOOP2: CHGVAR VAR(&BOFFNXT) VALUE(%SST(&JOBLOG &POS 4))
CHGVAR VAR(&DOFFNXT) VALUE(%BIN(&BOFFNXT))
CHGVAR VAR(&POS) VALUE(&POS + 16)
CHGVAR VAR(&MSGID) VALUE(%SST(&JOBLOG &POS 7))
IF COND(&MSGID *NE 'CPI9162' *AND &DOFFNXT *NE +
0) THEN(DO)
CHGVAR VAR(&POS) VALUE(&DOFFNXT + 1)
GOTO CMDLBL(LOOP2)
ENDDO
IF COND(&MSGID *NE 'CPI9162') THEN(DO)
CHGVAR VAR(&DATAS) VALUE('Unassigned.')
CHGVAR VAR(&CURUSER) VALUE('QUSER')
CHGVAR VAR(&ADRIP) VALUE('Unassigned. ')
CHGVAR VAR(&SOURCE) VALUE('No source.')
CHGVAR VAR(&MODULE) VALUE('*')
CHGVAR VAR(&DPORT) VALUE(0)
GOTO CMDLBL(AFF)
ENDDO
/* PROCESS OF DATAS OF CPI9162 */
/* ------------------------------- */
/* OFFSET TO FIELDS RETURNED */
CHGVAR VAR(&POS) VALUE(&POS - 12)
CHGVAR VAR(&BOFFFLD) VALUE(%SST(&JOBLOG &POS 4))
CHGVAR VAR(&DOFFFLD) VALUE(%BIN(&BOFFFLD))
/* NUMBER OF FIELDS RETURNED */
CHGVAR VAR(&POS) VALUE(&POS + 4)
CHGVAR VAR(&BNBRFLD) VALUE(%SST(&JOBLOG &POS 4))
CHGVAR VAR(&DNBRFLD) VALUE(%BIN(&BNBRFLD))
CHGVAR VAR(&POS) VALUE(&DOFFFLD + 1)
CHGVAR VAR(&BOFFFLD) VALUE(%SST(&JOBLOG &POS 4))
CHGVAR VAR(&DOFFFLD) VALUE(%BIN(&BOFFFLD))
CHGVAR VAR(&POS) VALUE(&POS + 28)
CHGVAR VAR(&BLNGDTA) VALUE(%SST(&JOBLOG &POS 4))
CHGVAR VAR(&DLNGDTA) VALUE(%BIN(&BLNGDTA))
CHGVAR VAR(&POS) VALUE(&POS + 4)
CHGVAR VAR(&DATAS) VALUE(%SST(&JOBLOG &POS &DLNGDTA))
CHGVAR VAR(&BPORT) VALUE(%SST(&DATAS 1 4))
CHGVAR VAR(&DPORT) VALUE(%BIN(&BPORT))
CHGVAR VAR(&ADRIP) VALUE(%SST(&DATAS 5 15))
CHGVAR VAR(&BLNGSRC) VALUE(%SST(&DATAS 20 2))
CHGVAR VAR(&DLNGSRC) VALUE(%BIN(&BLNGSRC))
CHGVAR VAR(&SOURCE) VALUE(%SST(&DATAS 22 &DLNGSRC))
CHGVAR VAR(&POS) VALUE(22 + &DLNGSRC)
CHGVAR VAR(&BLNGSRC) VALUE(%SST(&DATAS &POS 2))
CHGVAR VAR(&DLNGSRC) VALUE(%BIN(&BLNGSRC))
CHGVAR VAR(&POS) VALUE(&POS + 2)
CHGVAR VAR(&MODULE) VALUE(%SST(&DATAS &POS &DLNGSRC))
CHGVAR VAR(&IN10) VALUE('0')
CHGVAR VAR(&IN11) VALUE('0')
AFF: CHGVAR VAR(&MESSA) VALUE('A suivre .')
IF COND(&CPT = 1) THEN(CHGVAR VAR(&MESSA) +
VALUE('DÉbut. '))
IF COND(&CPT = &DNBENT) THEN(DO)
CHGVAR VAR(&MESSA) VALUE('Fin. ')
ENDDO
SNDRCVF
JUMP:
/* CHGVAR VAR(&CPT) VALUE(&CPT + 1) */
/* CHGVAR VAR(&DPOS) VALUE(&DPOS + &DSZENT) */
IF COND(&IN03 = '1') THEN(GOTO CMDLBL(FIN))
IF COND(&IN05 = '1') THEN(GOTO CMDLBL(LOOP))
IF COND(&IN02 = '1') THEN(DO)
CHGVAR VAR(&JOBNUM) VALUE(&JOBNBR)
WRKJOB JOB(&JOBNBR/&USRNAME/&JOBNAME)
ENDDO
IF COND(&IN10 = '1' *AND &CPT < &DNBENT) THEN(DO)
CHGVAR VAR(&DPOS) VALUE(&DPOS + &DSZENT)
CHGVAR VAR(&CPT) VALUE(&CPT + 1)
ENDDO
IF COND(&IN11 = '1' *AND &CPT > 1) THEN(DO)
CHGVAR VAR(&DPOS) VALUE(&DPOS - &DSZENT)
CHGVAR VAR(&CPT) VALUE(&CPT - 1)
ENDDO
GOTO CMDLBL(LOOP)
ENDDO /* LOOP */
FIN:
DLTUSRSPC USRSPC(QTEMP/USRSPC)
MONMSG MSGID(CPF2105)
ENDPGM
WRKRWTJOB DDS source
A*%%TS SD 20020723 131123 SUP_ARBF REL-V4R4M0 5769-PW1
A*%%EC
A DSPSIZ(24 80 *DS3)
A R FMT01
A*%%TS SD 20020723 131123 SUP_ARBF REL-V4R4M0 5769-PW1
A ROLLUP(10)
A ROLLDOWN(11)
A CF02(02)
A CF03(03)
A CF05(05)
A 1 2TIME
A 1 21'Gestion des jobs Client/Serveur - -
A QRWTSRVR'
A COLOR(WHT)
A DSPATR(UL)
A 1 73DATE
A EDTCDE(Y)
A 2 2USER
A 8 1'User'
A COLOR(WHT)
A 8 14'NumÉro'
A COLOR(WHT)
A 8 23'Adresse IP'
A COLOR(WHT)
A 8 41'Source /Module '
A COLOR(WHT)
A 9 1'----------'
A COLOR(WHT)
A 9 14'------'
A COLOR(WHT)
A 9 23'---------------'
A COLOR(WHT)
A 9 41'-----------------------------------
A -----'
A COLOR(WHT)
A CURUSER 10A O 10 1
A JOBNBR 6A O 10 14
A ADRIP 15A O 10 23
A SOURCE 10A O 10 41
A MODULE 29A O 10 52
A 12 1'Status'
A COLOR(WHT)
A 12 10'Port'
A COLOR(WHT)
A 12 20'N°job /Nb jobs'
A COLOR(WHT)
A 13 1'------'
A COLOR(WHT)
A 13 10'-----'
A COLOR(WHT)
A 13 20'--------------'
A COLOR(WHT)
A 23 1'F2 : GÉrer le job'
A COLOR(BLU)
A JOBSTS 4A O 14 2
A DPORT 5S 0O 14 10
A CPT 5S 0O 14 20
A 14 26'/'
A DNBENT 5S 0O 14 28
A MESSA 10A O 14 38COLOR(WHT)
A 23 51'Page Up/Down : Job prÉc./suiv.'
A COLOR(BLU)
A 23 21'F3 : Exit'
A COLOR(BLU)
A 23 33'F5 : Rafraichir'
A COLOR(BLU)
CRTUSRSPC CLP source
PGM PARM(&PQUSRSPC)
DCL VAR(&PQUSRSPC) TYPE(*CHAR) LEN(20)
CALL PGM(QUSCRTUS) PARM(&PQUSRSPC ' ' +
X'00010000' X'00' '*CHANGE ' ' ')
ENDPGM
RTVUSRSPC CLP source
PGM PARM(&PQUSRSPC &PHEADER)
DCL VAR(&PQUSRSPC) TYPE(*CHAR) LEN(20)
DCL VAR(&PHEADER) TYPE(*CHAR) LEN(140)
CALL PGM(QUSRTVUS) PARM(&PQUSRSPC X'00000001' +
X'0000008C' &PHEADER)
ENDPGM
');
// -->
|
 |
|
 |