IEFBR14
IEFBR14 ist ein Hilfsprogramm, welches in IBM-Großrechnerbetriebssystemen seit OS/360 verwendet wird, wenn mittels JCL Dateioperationen vorgenommen werden sollen. Es handelt sich dabei um ein Programm, welches die Kontrolle sofort wieder an den Aufrufer zurückgibt (RETURN, in IBM-Assemblersprache BR 14 für Branch Register), ohne selbst irgendwelche Aktionen zu treffen.[1]
Der Sinn von IEFBR14 ist, den syntaktischen Anforderungen von JCL gerecht zu werden. Jeder Job muss aus mindestens einem Step bestehen, und jeder Step muss mindestens ein EXEC-Statement enthalten.
Praktische Anwendung
[Bearbeiten | Quelltext bearbeiten ]Eine beliebte Anwendung ist, per JCL Dateien zu löschen oder anzulegen:
//LOESCHEXECPGM=IEFBR14 //DUMMY1 DD DSN=FILE.TO.DELETE, //DISP=(MOD,DELETE), //SPACE=(TRK,(1,1)) //DUMMY2 DD DSN=EINE.NEUE.DATEI,DISP=(NEW,CATLG), //AVGREC=M,SPACE=(100,(10,10))
In der ersten DD-Anweisung weist man JES an, ein Data Set FILE.TO.DELETE anzulegen, falls es noch nicht existiert, und nach dem Aufruf von IEFBR14 gleich wieder zu löschen. In der zweiten DD wird eine neue Datei permanent angelegt.
Das Programm besteht aus zwei Maschineninstruktionen (1. setze ReturnCode 0; 2. springe zurück).
Implementierung
[Bearbeiten | Quelltext bearbeiten ]IEFBR14 gilt als Schulbeispiel für die Tatsache, dass selbst scheinbar triviale Programme Fehler enthalten können.[2] Die ersten Auslieferungen des Programms setzten den Rückgabewert nicht auf 0, was Abfragen des Condition Code in Folgesteps behinderte:
IEFBR14START BR14;Return addr in R14 -- branch at it END
Dieser Fehler wurde durch Einbauen der Instruktion SR 15,15 behoben (SR steht hierbei für Subtract Registers):
IEFBR14START SR15,15;Zero out register 15 BR14;Return addr in R14 -- branch at it END
Allerdings hatte auch diese Version noch ein Problem, da die END-Anweisung nicht auf den Einsprungpunkt Bezug nahm. Dies wurde mit der dritten Version des Programms behoben:
IEFBR14START SR15,15;Zero out register 15 BR14;Return addr in R14 -- branch at it ENDIEFBR14
Um die Analyse von Dumps zu vereinfachen, wurden weitere Modifikationen vorgenommen:
IEFBR14START USINGIEFBR14,15;Establish addressability BGO;Skip over our name DCAL1(L'ID);Length of name IDDCC'IEFBR14';Name itself DS0H;Force alignment GOSR15,15;Zero out register 15 BR14;Return addr in R14 -- branch at it ENDIEFBR14
Siehe auch
[Bearbeiten | Quelltext bearbeiten ]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten ]- ↑ The IEFBR14 utility: Do (almost) nothing. In: Data and storage management on z/OS. IBM Corporation, 1990, abgerufen am 3. August 2018 (englisch).
- ↑ John Pershing: Safe programming languages. In: The Risks Digest, Volume 6, Issue 14. 25. Januar 1988, abgerufen am 3. August 2018 (englisch).