|
You can just use the API to ask the system. Here's a cmd, cl & dds that does it: **************************************************************************** ******** CMD PROMPT('Display Data Queue Information') PARM KWD(DATAQ) TYPE(QUAL1) MIN(1) + PROMPT('Data Queue' 1) QUAL1: QUAL TYPE(*NAME) LEN(10) MIN(1) QUAL TYPE(*NAME) LEN(10) MIN(1) PROMPT('Library') **************************************************************************** ******** PGM PARM(&DATAQUEUE) DCL VAR(&DATAQUEUE ) TYPE(*CHAR) LEN( 20) DCL VAR(&QNAME ) TYPE(*CHAR) LEN( 10) DCL VAR(&QLIBRARY ) TYPE(*CHAR) LEN( 10) DCL VAR(&RCVR ) TYPE(*CHAR) LEN( 108) DCL VAR(&RCVRLEN ) TYPE(*CHAR) LEN( 4) DCL VAR(&COUNT ) TYPE(*DEC ) LEN( 9 0) DCL VAR(&CURRENT ) TYPE(*DEC ) LEN( 9 0) DCL VAR(&MAXIMUM ) TYPE(*DEC ) LEN( 9 0) DCL VAR(&MINIMUM ) TYPE(*DEC ) LEN( 9 0) DCL VAR(&QLENGTH ) TYPE(*DEC ) LEN( 9 0) DCL VAR(&KLENGTH ) TYPE(*DEC ) LEN( 9 0) DCL VAR(&TYPE ) TYPE(*CHAR) LEN( 1) DCL VAR(&QTYPE ) TYPE(*CHAR) LEN( 4) DCL VAR(&RCL ) TYPE(*CHAR) LEN( 1) DCL VAR(&SEQ ) TYPE(*CHAR) LEN( 1) DCL VAR(&SEQUENCE ) TYPE(*CHAR) LEN( 6) DCL VAR(&SND ) TYPE(*CHAR) LEN( 1) DCL VAR(&MAXENTRIES) TYPE(*CHAR) LEN( 8) DCL VAR(&MSGTXT ) TYPE(*CHAR) LEN( 512) DCLF FILE(DSPDTAQINF) CHGVAR VAR(%BIN(&RCVRLEN 1 4)) VALUE(108) SNDF RCDFMT(FOOT) CHGVAR VAR(&QNAME ) VALUE(%SST(&DATAQUEUE 1 10)) CHGVAR VAR(&QLIBRARY ) VALUE(%SST(&DATAQUEUE 11 10)) TOP: CHGVAR VAR(&MSGTXT) VALUE('Retrieving data queue + information... Please be patient') SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSGTXT) + TOPGMQ(*EXT) MSGTYPE(*STATUS) MONMSG MSGID(CPF0000) CALL PGM(QMHQRDQD) PARM(&RCVR &RCVRLEN RDQD0100 + &DATAQUEUE) MONMSG MSGID(CPF0000) EXEC(CALL PGM(QMHRSNEM) + PARM(' ' X'00000000')) CHGVAR VAR(&QLENGTH) VALUE(%BIN(&RCVR 9 4)) CHGVAR VAR(&IN50) VALUE('1') IF COND(%SST(&RCVR 17 1) *EQ 'K') THEN(DO) CHGVAR VAR(&KLENGTH) VALUE(%BIN(&RCVR 13 4)) CHGVAR VAR(&SEQ) VALUE(*KEYED) CHGVAR VAR(&IN50) VALUE('0') ENDDO ELSE CMD(IF COND(%SST(&RCVR 17 1) *EQ 'L') + THEN(CHGVAR VAR(&SEQUENCE) VALUE(*LIFO))) ELSE CMD(CHGVAR VAR(&SEQUENCE) VALUE(*FIFO)) IF COND(%SST(&RCVR 18 1) *EQ 'N') THEN(CHGVAR + VAR(&SENDER) VALUE(*NO)) ELSE CMD(CHGVAR VAR(&SENDER) VALUE(*YES)) IF COND(%SST(&RCVR 19 1) *EQ 'N') THEN(CHGVAR + VAR(&FORCE) VALUE(*NO)) ELSE CMD(CHGVAR VAR(&FORCE) VALUE(*YES)) IF COND(%SST(&RCVR 70 1) *EQ '0') + THEN(CHGVAR VAR(&QTYPE) VALUE(*STD)) ELSE CMD(CHGVAR VAR(&QTYPE) VALUE(*DDM)) IF COND(%SST(&RCVR 71 1) *EQ '0') + THEN(CHGVAR VAR(&RECLAIM) VALUE(*NO )) ELSE CMD(CHGVAR VAR(&RECLAIM) VALUE(*YES)) CHGVAR VAR(&COUNT ) VALUE(%BIN(&RCVR 73 4)) CHGVAR VAR(&COUNT ) VALUE(%BIN(&RCVR 73 4)) CHGVAR VAR(&CURRENT) VALUE(%BIN(&RCVR 77 4)) CHGVAR VAR(&MAXIMUM) VALUE(%BIN(&RCVR 101 4)) CHGVAR VAR(&MINIMUM) VALUE(%BIN(&RCVR 105 4)) IF COND(&RECLAIM *EQ '*YES') THEN(CHGVAR + VAR(&MAXENTRIES) VALUE('*MAX2GB')) ELSE CMD(CHGVAR VAR(&MAXENTRIES) VALUE('*MAX16MB')) CHGVAR VAR(&TEXT) VALUE(%SST(&RCVR 20 50)) SNDRCVF RCDFMT(INFO) IF COND(&IN03 = '1') THEN(RETURN) IF COND(&IN05 = '1') THEN(GOTO CMDLBL(TOP)) IF COND(&IN12 = '1') THEN(RETURN) ENDPGM **************************************************************************** ******** A DSPSIZ(24 80 *DS3) A CHGINPDFT A MSGLOC(24) A PRINT A ERRSFL *------------------------------------------------------------------------- A R INFO A CLRL(*NO) A OVERLAY A CA03(03) A CA05(05) A CA12(12) A 1 2DATE A EDTCDE(Y) A 1 13TIME A 1 29' Data Queue Information ' A DSPATR(HI) A 1 59SYSNAME A 1 70USER A 4 2'Data Queue . . . . . . . . . . .' A QNAME 10A O 4 37 A 5 4'Library . . . . . . . . . . .' A QLIBRARY 10A O 5 39 A 6 2'Type . . . . . . . . . . . . . .' A QTYPE 4A O 6 37 A 7 2'Maximum entry length . . . . . .' A QLENGTH 9Y 0O 7 37EDTCDE(1) A 8 2'Force to auxiliary storage . . .' A FORCE 4A O 8 37 A 9 2'Sequence . . . . . . . . . . . .' A SEQUENCE 6A O 9 37 A 10 2'Key length . . . . . . . . . . .' A 50 DSPATR(ND) A KLENGTH 9Y 0O 10 37EDTCDE(3) A 50 DSPATR(ND) A 11 2'Include Sender ID . . . . . . .' A SENDER 4A O 11 37 A 12 2'Queue size:' A 13 4'Maximum number of entries . .' A MAXENTRIES 8A O 13 37 A 13 46'or' A MAXIMUM 9Y 0O 13 49EDTCDE(1) A 13 61'entries' A 14 4'Initial number of entries . .' A MINIMUM 9Y 0O 14 37EDTCDE(1) A 15 2'Automatic reclaim . . . . . . .' A RECLAIM 4A O 15 37 A 16 2'Text ''description'' . . . . . . .' A TEXT 50A O 16 37 A 18 2'Current allocation . . . . . . .' A CURRENT 9Y 0O 18 37EDTCDE(1) A 18 49'entries' A 20 2'Current entry count . . . . . .' A COUNT 9Y 0O 20 37EDTCDE(1) A 20 49'entries' *------------------------------------------------------------------------- A R FOOT A 22 3'F3=Exit F5=Refresh F12=Cancel' A COLOR(BLU) **************************************************************************** ******** -----Original Message----- From: watern@cbs.fiserv.com [mailto:watern@cbs.fiserv.com] Sent: Monday, November 27, 2000 11:59 PM To: MIDRANGE-L@midrange.com Subject: Is there a formula for calculating max entries on a dataqueue ? Dear all, Is there a formula that an be used to calculate the maximum no of messages that can be placed on a dataqueue ? I thought it may be something like: MaxEntries = MaxQueueSize divided by (x + y + z) where x=max entry length, y=some constant, if sender-id is *yes (36?) z=key-length Also, until recently I thought that the max size for a dataqueue was 16Mb, but when doing two tests for the above I got one queue which went to just under 20mb before it reached max capacity, and the other went to over 22mb. Is there another different formula for calculating what the max size (in bytes, not messages) that a queue will reach before it is at capacity ? I guess it will be a multiple of either 4k or 8k, but why did my tests produce different values before the queue max-ed out ? One test was for entry length 100, the second for entry len 300. Both were non-keyed, sender-id(*no) thanks Nigel. +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +--- +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.