MainframeSupports
tip uge 21/2001:
Der er mange måder, man kan lave storage-tabeller i CICS på.
Hvis storage skal deles mellem flere uafhængige tasks i samme CICS, så
er der ikke så mange muligheder. En af de oplagte er at bruge en TS-kø, men
hvis det skal gå rigtig stærkt (hvad det oftest skal i CICS), så vil man
lave GETMAIN af et stykke storage og så på en eller anden måde formidle
adressen på storage-tabellen til de andre tasks. Her er der også flere
muligheder, men de kræver standarder og konventioner og hvad ved jeg.
Der findes et rigtig godt alternativ til GETMAIN, nemlig LOAD PROGRAM
med HOLD option. Det gode ved dette alternativ er, at man ved LOAD PROGRAM
får adressen på programmet (storage-tabellen) returneret som en del af
kaldet. Rent performance-mæssigt er det rigtig hurtigt har en tysk
CICS-ekspert engang hvisket mig i øret. For at benytte sig af dette
alternativ kræves der visse forberende øvelser, som jeg nu vil gennemgå.
- Du skal lave et uhyre simpelt ASSEMBLER-program, som fylder netop
så meget som din storage-tabel skal fylde. Følgende program
fylder eksempelvis 10000 bytes:
MYSTGTBL CSECT
DS CL10000
END
- Programmet skal sendes gennem en assemblering og LINK'es til
et LOAD-modul i et dataset på CICS'ens RPL-konkatenering. Hvis du
sender det gennem en CICS-prekompilering, så benyt de to options
NOPROLOG og NOEPILOG, ellers får du udvidet dit program med noget
CICS-kode, som du absolut ikke er interesseret i. På selve LINK'en
skal du benytte options NORENT og NCAL. NORENT er ekstemt vigtigt,
da programmet ellers vil blive LOAD'et af CICS'en i noget storage,
som ikke kan opdateres og dermed kan du ikke fylde noget i din
storage-tabel.
- Til sidst skal du lave en transaktion, der loader og
udfylder din storage-tabel, som jeg i det følgende har valgt at kalde
MYSTGTBL. Mit LOAD-modul hedder altså MYSTGTBL. Du danner nu
storage-tabellen med en EXEC CICS LOAD PROGRAM('MYSTGTBL')
SET(MYSTGTBL-ADDRESS) HOLD. Option HOLD gør, at CICS'en ikke frigiver
din storage-tabel, når din load-transaktion slutter eller for den
sags skyld på noget andet tidspunkt. Pointeren MYSTGTBL-ADDRESS
indeholder adressen på 10000-bytes programmet, som du så har
defineret en storage-tabel, der passer til. Så er det bare at udfylde
tabellen.
Herefter skal de programmer, der ønsker at læse storage-tabellen, udstede
en EXEC CICS LOAD PROGRAM('MYSTGTBL') SET(MYSTGTBL-ADDRESS), hvorefter pointeren
MYSTGTBL-ADDRESS indeholder adressen på storage-tabellen. Lettere kan det
næsten ikke være. Du er selvfølgelig velkommen til at skrive til mig, hvis
du har mod på at kaste dig ud i alt det her og derfor måske har et par uddybende
spørgsmål.
Forrige danske tip
Last tip in english
Tip oversigten