I uge 20/2003 beskrev jeg, hvordan det er muligt at eksekvere TSO kommandoer fra COBOL og PL/1. Det kræver dog i batch, at man kører under TSO, det vil sige program IKJEFT01. Tænk sig, hvis nu man rent faktisk kunne slippe af med IKJEFT01, så man i batch bare skrev EXEC PGM=MYPGM og dermed direkte eksekverede sit eget program, og stadigvæk kunne udstede TSO kommandoer.
Det kan rent faktisk godt lade sig gøre. Der findes et modul kaldet TSOENV, som starter en TSO kommando processor op i det program, man eksekverer. Når først TSOENV er kaldt een gang, så kan man udstede lige så mange TSO kommandoer vha. TSOLNK, som man ønsker, og det virker lige så godt som, hvis man havde startet sit program via IKJEFT01.
I COBOL kaldes TSOENV således:
I PL/1 er det lige så simpelt:
Hivs RETURN-CODE hhv. PLIRETV() er forskellig fra 0, så skyldes det højst sandsynligt, at TSO allerede er aktiveret, og så kan man alligevel benytte TSOLNK. Ja der er faktisk ikke andet i det end at udstede ovenstående kald inden man kalder TSOLNK, og så får man udført sine TSO-kommandoer uanset om ens program er kaldt fra TSO eller ej.
Der er visse begrænsninger for hvilke kommandoer, der virker, når TSO er aktiveret vha. TSOENV. Jeg har f.eks. ikke prøvet hverken RACF-kommandoer eller HSM-kommandoer, og det er ikke sikkert, at de virker. Jeg har indtil videre holdt mig til kommandoerne beskrevet i TSO command reference.