MainframeSupports
tip uge 48/1999:

I den forløbne uge opdagede vi lyksalighederne ved TSO kommandoerne ALTLIB og EXECUTIL. Derfor handler denne uges tip om disse to kommandoer, samspillet mellem dem og de problemer, man skal være opmærksom på. Konklusionen er, at man skal gemme sine REXX'er i biblioteker adskilt fra CLIST'er, allokere REXX-bibliotekerne til SYSEXEC og CLIST-bibliotekerne til SYSPROC, og derudover holde antallet af concatenerede biblioteker nede på et minimum. Læs videre for at forstå hvorfor.
TSO ALTLIB kan en masse ting, hvoraf det vigtigste er, at man kan tilføje yderligere REXX- eller CLIST-biblioteker til sin TSO concatenering på SYSEXEC og/eller SYSPROC og bagefter fjerne dem igen. F.eks. vil kommandoen TSO ALTLIB ACTIVATE APPLICATION(EXEC) DATASET('MINE.EGNE.REXXER') sørge for at alle efterfølgende kald af REXX'er inde for samme applikation først vil kigge i datasettet MINE.EGNE.REXXER efter de pågældende REXX'er, for derefter at kigge i SYSEXEC efterfulgt af SYSPROC. For at slå det fra, skal den REXX eller CLIST, hvorfra kommandoen blev udstedt, terminere eller også skal man selv udstede en TSO ALTLIB DEACTIVATE APPLICATION(EXEC). I parameteren DATASET kan man angive en hel række af dataset, der vil blive gennemsøgt i den angivne rækkefølge. Alt dette er der måske ikke meget nyt i bortset fra, at vi sjældent har set parameteren APPLICATION(EXEC) anvendt. Oftest anvendes APPLICATION(CLIST). Du kan læse mere om ALTLIB-kommandoen i manualen TSO Command Reference.

TSO EXECUTIL kan ikke ret meget i forhold til TSO ALTLIB, men den kan bestemme om SYSEXEC concateneringen skal gennemsøges uden at åbne og lukke hvert eneste dataset på concateneringen, hver gang en REXX skal hentes ind. Hvis den ansvarlige systemprogrammør for TSO ikke har gjort noget særligt, så er default, at SYSEXEC ikke åbnes og lukkes hele tiden, da det også er det mest effektive. Set i relation til SYSPROC-concateneringen er det langt hurtigere, da alle datasets allokeret til SYSPROC altid åbnes og lukkes for hver søgning efter en REXX eller CLIST. For at sikre sig selv de optimale betingelser, uden at kende til TSO systemprogrammørens valg af default, så skal man udstede en TSO EXECUTIL EXECDD(NOCLOSE). Du kan læse mere om EXECUTIL-kommandoen i TSO Command Reference.

Hele pointen og tippet i al denne indledende snak er, at man faktisk skal sørge for at have alle sine REXX-biblioteker concateneret på SYSEXEC i stedet for SYSPROC, da det med den rette opsætning går langt hurtigere at hente dem ind til eksekvering end via SYSPROC. Problemet er bare, at man ikke kan eksekvere en CLIST, der bliver fundet på SYSEXEC. Netop dette forhold gør, at de fleste bibeholder REXX'er og CLIST'er i en skøn forvirring i de samme datasets, som så allokeres til SYSPROC. Det er også derfor, at ALTLIB APPLICATION(CLIST) er så udbredt, for så løber man ikke ind i problemet med CLIST'er, der ikke kan eksekveres.

Vi har oplevet at få halveret hele ressource-forbruget målt i service units på en udvalgt applikation ved at placere REXX'erne i sit eget bibliotek, køre med ALTLIB ACTIVATE APPLICATION(EXEC) på dette bibliotek og anvende EXECUTIL EXECDD(NOCLOSE). Før denne ændring lå de eksekverede REXX'er sidst på SYSPROC-concateneringen.

Et sidste og væsentligt problem ved at anvende EXECDD(NOCLOSE) er, at når et af datasettene på concateneringen går i extent, så bliver det ikke registreret, da det pågældende dataset står åbent. Konsekvensen er, at man får nogle sjove abends. Man skal altså sørge for at minimere antallet af opdateringer på de datasets, der er concateneret til SYSEXEC eller bliver det med ALTLIB. Derudover skal man sørge for godt med plads, så disse datasets sjældent går i extents.

Sidste uges tip        Tip oversigten