1748198 Members
2620 Online
108759 Solutions
New Discussion юеВ

F$GETQUI

 
Edmundo T Rodriguez
Frequent Advisor

F$GETQUI

I am using the lexical F$GETQUI in many ways
but I haven't been able to obtain the correct
arrangement in the lexical, to obtain the queue "Job summary", like when you use ...
---------------------------------------------
$ Show queue/summary Alpha$batch

Batch queue ALPHA$BATCH, idle, on ALPHA3::

Job summary: 7 timed release

----------------------------------------------
I only want the value of the line "Job summary"

It is possible with F$GETQUI ?

Thank You!
9 REPLIES 9
Hoff
Honored Contributor

Re: F$GETQUI

Yes, this is possible, but I expect the solution is little more than a simple scan of all of the entries in the queue, counting the jobs as they are encountered.
John Gillings
Honored Contributor

Re: F$GETQUI

Edmundo,

The item you want is "TIMED_RELEASE_JOB_COUNT". Try:

$ t=F$GETQUI("DISPLAY_QUEUE","TIMED_RELEASE_JOB_COUNT","ALPHA$BATCH")

This should return the value you want.

For multiple queues, you need to establish a context. For example:

$ IF p1.EQS."" THEN INQUIRE p1 "Queue name"
$ TEMP = F$GETQUI("")
$ QLOOP:
$ QNAME = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME",p1,"WILDCARD")
$ IF QNAME .EQS. "" THEN EXIT
$ Timed=F$GETQUI("DISPLAY_QUEUE","TIMED_RELEASE_JOB_COUNT",QNAME,"FREEZE_CONTEXT")
$ WRITE SYS$OUTPUT "''QNAME' ''Timed' timed release"
$ GOTO QLOOP
A crucible of informative mistakes
Edmundo T Rodriguez
Frequent Advisor

Re: F$GETQUI

Thank's for the inputs!

The "Time_Release_Job_Count" seems to only work in the context of Batch-Queues.

Here is my procedure ...

$!---------------------------------------------------------------------------------------
$! Purpose: To get a summary of all jobs pending on PRINT QUEUES
$!---------------------------------------------------------------------------------------
$ QCNT = 0
$ WSO := WRITE SYS$OUTPUT
$ TEMP = F$GETQUI("")
$!---------------------------------------------------------------------------------------
$QLoop:
$ QNAME = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME","*")
$!QNAME = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME","*","WILDCARD") ! Same effect as previous
$ IF QNAME .EQS. "ALPHA3$BATCH" .OR. - ! \
QNAME .EQS. "IPA$BATCH" .OR. - ! \
QNAME .EQS. "MULTINET_SMTP" .OR. - ! \
QNAME .EQS. "SYS$BATCH" .OR. - ! \
QNAME .EQS. "SYS$BATCH_1" .OR. - ! remove all Batch-Queues
QNAME .EQS. "SYS$BATCH_2" .OR. - ! /
QNAME .EQS. "TCPIP$SMTP_ALPHA3_00" .OR. - ! /
QNAME .EQS. "TCPIP$SMTP_ALPHA3_01" - ! /
THEN GOTO QLOOP
$ IF QNAME .EQS. "" THEN GOTO FINISH
$ QTRJC = F$GETQUI("DISPLAY_QUEUE","TIMED_RELEASE_JOB_COUNT",QNAME,"FREEZE_CONTEXT")
$ WSO "''QNAME' ''QTRJC'"
$ QCNT = QCNT + 1
$ GOTO QLoop
$!---------------------------------------------------------------------------------------
$Finish:
$ WSO ""
$ WSO " ____________________ Total Queues: ''QCNT'"
$ WSO ""
$ EXIT

... So, I should possibly look for other alternative.
labadie_1
Honored Contributor

Re: F$GETQUI

A hack ?

$ gawk :== $ sys$common:[syshlp.examples.tcpip.snmp]gawk
$ cr a.awk
/Job summary:/ {print $(NF-1),$NF }
$ pipe sh que alpha$batch/summary | gawk/input=a.awk sys$pipe


Be cautious: it will stop working when the output of show queue/summary will change...
Ian Miller.
Honored Contributor

Re: F$GETQUI

search for F$GETQUI at http://dcl.openvms.org

where you will find various examples.
____________________
Purely Personal Opinion
Dean McGorrill
Valued Contributor

Re: F$GETQUI

Hi Edmundo,
if its pending jobs you want this might
do it..

$ show que/sum foo
Batch queue FOO, stopped

Job summary: 3 pending

$ write sys$output F$GETQUI("DISPLAY_QUEUE","PENDING_JOB_COUNT","FOO")
3
$

This matchs the sho que/sum - Dean
Edmundo T Rodriguez
Frequent Advisor

Re: F$GETQUI

Thank's again!

I was able to recreate the procedure
in a different way to produce a similar
result ...

=============================================

$!------------------------------------------------------------------------------
$! Purpose: To get a summary of all jobs pending on PRINT QUEUES
$!------------------------------------------------------------------------------
$ V = 'f$verify(0)
$ if V .eq. 1 then set verify
$ QCNT = 0
$ QWPJ = 0
$ WSO := WRITE SYS$OUTPUT
$ TEMP = F$GETQUI("")
$!------------------------------------------------------------------------------
$ SHOW SYSTEM/NOPROCES/FULL
$ WSO ""
$QLoop:
$ QNAME = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME","*")
$!QNAME = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME","*","WILDCARD")
$ IF QNAME .EQS. "ALPHA3$BATCH" .OR. -
QNAME .EQS. "IPA$BATCH" .OR. -
QNAME .EQS. "MULTINET_SMTP" .OR. -
QNAME .EQS. "SMTP_ALPHA3" .OR. -
QNAME .EQS. "SYS$BATCH" .OR. -
QNAME .EQS. "SYS$BATCH_1" .OR. -
QNAME .EQS. "SYS$BATCH_2" .OR. -
QNAME .EQS. "TCPIP$SMTP_ALPHA3_00" .OR. -
QNAME .EQS. "TCPIP$SMTP_ALPHA3_01" -
THEN GOTO QLOOP
$ IF QNAME .EQS. "" THEN GOTO FINISH
$!QTRJC = F$GETQUI("DISPLAY_QUEUE","TIMED_RELEASE_JOB_COUNT","''QNAME'","FREEZE_CONTEXT")
$!HJC = F$GETQUI("DISPLAY_QUEUE","HOLDING_JOB_COUNT","''QNAME'","FREEZE_CONTEXT")
$ PJC = F$GETQUI("DISPLAY_QUEUE","PENDING_JOB_COUNT","''QNAME'","FREEZE_CONTEXT")
$ QNAML = F$LENGTH(QNAME)
$!
$ IF F$LENGTH(F$STRING(PJC)) .GT. 1
$ THEN
$ SP1 = F$INTEGER(20-QNAML)
$ ELSE
$ SP1 = F$INTEGER(20-QNAML)+1
$ ENDIF
$ BUF = F$FAO("!''SP1'* ")
$ IF PJC .EQ. 0
$ THEN
$ WSO "''QNAME' ''BUF'''PJC'"
$ ELSE
$ WSO "''QNAME' ''BUF'''PJC'"
$ QWPJ = QWPJ + 1
$ ENDIF
$ QCNT = QCNT + 1
$ GOTO QLoop
$!------------------------------------------------------------------------------
$Finish:
$ WSO ""
$ WSO " ---------------------- Total Queues: ''QCNT'"
$ WSO " ---------- Queues with Pending Jobs: ''QWPJ'"
$ WSO ""
$ EXIT

=============================================
It doesn't seems to be a lexical "ITEM" which
can be can be combine in a funtion to produce
what I want in one line!

Enjoy!
Dean McGorrill
Valued Contributor

Re: F$GETQUI

Edmundo,
even the sho que/sum doesn't do a total
of all pending jobs :), looks like you've
got what you want?
Manny DeAssis
Frequent Advisor

Re: F$GETQUI

Ed,

I do not see any JOB_SUMMARY or QUEUE_SUMMARY (or any summary) mentioned in the HELP library. However here is one simple way to get that information:

$ pipe show queue sys$batch /summary | search sys$input summary

Give it a try.

-Manny