MainframeSupports
tip uge 19/2001:

MQS har et online-interface til at manipulere MQS-definitioner med. Man kan sige meget om dette interface, blandt andet at det normalt kan startes med en TSO MQM, med mindre de kreative folk med ansvar for produktet har fundet på noget andet.

Nu er der stadig enkelte forstokkede tilhængere af batch-interfaces, såsom forfatteren af dette tip. Jeg synes faktisk, at det er et rigtig godt interface. Prøv for eksempel lige nedenstående stykke JCL:

//MSQUTIL  EXEC PGM=CSQUTIL,PARM='MYMQ'
//SYSPRINT DD SYSOUT=*
//MYOUTPUT DD SYSOUT=*,LRECL=80,RECFM=FB
//SYSIN   DD *
  COMMAND MAKEDEF(MYOUTPUT)
/*
//CSQUCMD  DD *
  DISPLAY QUEUE(MY.EXISTING.QUEUE) ALL
/*

Dette step producerer en fuld færdig og direkte brugbar MQS-definition på DD-navn MYOUTPUT under forudsætning af, at MY.EXISTING.QUEUE er et eksisterende kø-navn på MQS-systemet MYMQ. I stedet for fantasiløst at hælde den ud på SYSOUT=*, kan man jo lige så godt gemme den i et dataset eller member. Her kunne man jo så rette den lidt til, eksempelvis rette navnet på køen for at lave en ny. Hvis man vil overskrive en eksisterende definition (hvis en sådan findes) så kan man rette parameteren NOREPLACE til REPLACE. For at få defineret sin nye kø, skal man køre følgende step:

//MSQUTIL  EXEC PGM=CSQUTIL,PARM='MYMQ'
//SYSPRINT DD SYSOUT=*
//SYSIN   DD *
  COMMAND
/*
//CSQUCMD  DD DISP=SHR,DSN=MY.MQS.DEF(INITION)

Hold da op det er da nemt. Jeg klappede i mine små hænder, da jeg fandt ud af, hvor let det egentlig var. Men, men, men det sidste step giver altid returkode 0, uanset om definitionen er OK eller ej. Man skal derfor huske at kontrollere sit SYSPRINT. Jeg er blevet hvisket i øret, at man kan få CSQUTIL til at give nogle fornuftige returkoder, men ikke lige hvordan. En god ting er, at ens definitioner bliver syntaks-valideret før der bliver foretaget autorisations-kontrol. Det er en stor fordel, hvis man ikke selv har autorisation til at definere køerne, da man så kan slippe for hånlige kommentarer fra de folk, man skal lokke til at udføre sit job.

Forrige danske tip        Last tip in english        Tip oversigten