MainframeSupports
tip uge 12/2018:

I 2010 påstod jeg i et tip om DDLIST, at man kun ved hjælp af assembler kunne forspørge på enqueues. Sådan er det ikke længere. Det har i et stykke tid været muligt at forespørge på enqueues med en ISPF service. Og ISPF services kan kaldes fra REXX, og så er jeg i hvert fald en glad mand. Interfacet til servicen viste sig dog at være en smule anderledes end til andre ISPF services, der kan returnere nul til mange records. Det er i hvert fald den første ISPF service, jeg kender, der returnerer resultatet i en ISPF tabel.

Servicen hedder QUERYENQ og kan returnere de samme data, som ENQ kommandoen i DDLIST. Desværre er det svært gennemskueligt, hvilke input-parametre på ENQ panelet, der svarer til hvilke parametre på QUERYENQ. Jeg har lavet en simpel REXX, som jeg håber kan hjælpe:

/* REXX: ENQEXMPL */
ARG MAJORNAMEPREFIX MINORNAMEPREFIX ADDRESSIDPREFIX
QNAME = MAJORNAMEPREFIX
RNAME = MINORNAMEPREFIX
REQ = ADDRESSIDPREFIX
ENQS = 0
ADDRESS ISPEXEC
'CONTROL ERRORS RETURN'
'QUERYENQ TABLE(ENQEXMPL) QNAME(QNAME) REQ('REQ') RNAME(RNAME)'
'TBTOP ENQEXMPL'
'TBSKIP ENQEXMPL'
DO WHILE RC = 0
  ENQS = ENQS + 1
  IF ENQS = 1
  THEN
    SAY LEFT('MAJOR', 9)''LEFT('MINOR',55)'JOB NAME'
  SAY LEFT(ZENQNAME, 9)''LEFT(ZENRNAME,55)''ZENJOB
  'TBSKIP ENQEXMPL'
END
'TBEND ENQEXMPL'
IF ENQS = 0
THEN
  SAY 'NO ENQUEUES FOUND'
EXIT

QUERYENQ servicen opretter selv ISPF tabellen med det angivne navn (ENQEXMPL), men du skal huske at fjerne tabellen igen ved at bruge TBEND. REQ parameteren kan være blank og vil matche alle address space navne (jobnavne). Du kan også benytte % for netop et tegn og * for nul til flere tegn. Både QNAME og RNAME kan afsluttes med *. Prøv for eksempel at kalde REXX'en ENQEXMPL og kald den med TSO %ENQEXMPL * * dinuser for at udskrive alle de enqueues, som din TSO user holder.

Bemærk den rodede blanding af variabelnavne og konstanter/værdier på de forskellige parametre til QUERYENQ. Her gælder det om at holde tungen lige i munden. Den oprettede ISPF tabel indeholder flere variable end de angivne, så der er mere at komme efter. Følg link'et til QUERYENQ. En sidste detalje er, at ISPF tabellen ikke oprettes, hvis der ikke er nogen enqueues, der hitter dine kriterier. Det er derfor jeg benytter CONTROL ERRORS RETURN. Det er selvfølgelig pænere at kontrollere RC efter kaldet til QUERYENQ.

Forrige danske tip        Last tip in english        Tip oversigten