Et af mine allerførste tip omhandlede ISPF værktøjet ISRDDN, som jeg håber er en integreret del af din værktøjskasse i dag. ISRDDN viser som bekendt alle DD-navne med tilhørende dataset allokeringer for din TSO session. Hvor vil det dog være skønt at have et lignende værktøj til rådighed i batch. Det kan faktisk også lade sig gøre bare i ret begrænset omfang. Det er nemlig ganske let at få adgang fra et batch program til alle DD-navnene tilknyttet det step, som eksekverer batch programmet.
Følgende eksempel skrevet i COBOL viser hvordan du får adgang til DD-navnene. De af jer, som hellere vil benytte PL/1, C eller REXX må selv lave den tilsvarende kode. Jeg vil starte med de erklæringer, der skal til i data division:
Alle variablene erklæret i working storage er udelukkende hjælpevariable. De interessante oplysninger findes i linkage. PSA-arealet starter i adresse 0 og indeholder pointere til hvadsomhelst. Den interessante pointer er adressen på TCB arealet. I TCB arealet er der en pointer til TIOT (Task Input Output Table), som indeholder alle DD-navnene for det aktuelt eksekverende step. Arealet TIOE beskriver hvert enkelt DD-navn. Følgende stump kode udskriver samtlige DD-navne i TIOT:
TIOT er speciel, fordi de enkelte entries er af variabel længde. Det giver den lidt knudrede pointer gymnastik. Hvis en TIOT entry repræsenterer et konkateneret dataset, så er DD-navnet blankt (så vidt jeg husker). Feltet JFCBTOKEN er en nøgle til informationer om det, der er allokeret til DD-navnet. Desværre kan man kun oversætte JFCBTOKEN til en storage adresse ved at anvende assembler.
Hvad kan man så bruge ovenstående til. Jeg synes, at anvendelsesmulighederne er mange. At kigge i TIOT er eksmpelvis langt mere elegant end den metode, jeg anvender tilbage i uge 27/2001. Da TIOT er til stede direkte i storage er den langt hurtigere at slå op i i forhold til at eksekvere en OPEN FILE. Ved først at kigge efter i TIOT kan man undgå at udføre en OPEN FILE, der vil fejle, hvis DD-navnet ikke er til stede. i PL/1 kan man jo åbne filer med variabelt DD-navn, så her kan scanning af TIOT give mange nye spændende anvendelsesmuligheder.