„IEFBR14" – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Versionsgeschichte interaktiv durchsuchen
[gesichtete Version] [gesichtete Version]
← Zum vorherigen Versionsunterschied
Inhalt gelöscht Inhalt hinzugefügt
(10 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''IEFBR14''' ist ein Hilfsprogramm, welches in [[IBM]]-[[Großrechner]]betriebssystemen seit [[OS/360]] verwendet wird, wenn mittels [[Job Control Language |JCL]] Dateioperationen vorgenommen werden sollen. Es handelt sich dabei um ein Programm, welches die Kontrolle sofort wieder an den Aufrufer zurückgibt (RETURN, in Assemblersprache BR 14 für ''Branch Register''), ohne selbst irgendwelche Aktionen zu treffen.
'''IEFBR14''' ist ein Hilfsprogramm, welches in [[IBM]]-[[Großrechner]]betriebssystemen seit [[OS/360]] verwendet wird, wenn mittels [[Job Control Language |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.(追記) <ref>{{internetquelle (追記ここまで)
| url=https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zdatamgmt/zsysprogc_utilities_IEFBR14.htm
| titel=The IEFBR14 utility: Do (almost) nothing
| werk=Data and storage management on z/OS
| hrsg=[[IBM Corporation]]
| datum=1990
| sprache=Englisch
| zugriff=2018年08月03日}}</ref>


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.
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 ==
Eine beliebte Anwendung ist, per JCL Dateien zu löschen oder anzulegen:
Eine beliebte Anwendung ist, per JCL Dateien zu löschen oder anzulegen:(追記) <syntaxhighlight lang="jcl"> (追記ここまで)
(削除) (削除ここまで)//LOESCH EXEC PGM=IEFBR14
//LOESCH EXEC PGM=IEFBR14
//DUMMY1 DD DSN=FILE.TO.DELETE,
(削除) (削除ここまで)// (削除) DISP (削除ここまで)=(削除) (MOD, (削除ここまで)DELETE(削除) ) (削除ここまで),
//(追記) DUMMY1 (追記ここまで) (追記) DD (追記ここまで) (追記) DSN (追記ここまで)=(追記) FILE.TO. (追記ここまで)DELETE,
(削除) (削除ここまで)// (削除) SPACE (削除ここまで)=((削除) TRK (削除ここまで),(削除) (1 (削除ここまで),(削除) 1)) (削除ここまで)
// (追記) DISP (追記ここまで)=((追記) MOD (追記ここまで),(追記) DELETE) (追記ここまで),
(削除) (削除ここまで)//DUMMY2 DD DSN=EINE.NEUE.DATEI,DISP=(NEW,CATLG),
(追記) // SPACE=(TRK,(1,1)) (追記ここまで)
//DUMMY2 DD DSN=EINE.NEUE.DATEI,DISP=(NEW,CATLG),
(削除) (削除ここまで)// AVGREC=M,SPACE=(100,(10,10))
// AVGREC=M,SPACE=(100,(10,10))
(追記) </syntaxhighlight> (追記ここまで)In der ersten DD-Anweisung weist man [[Job Entry Subsystem|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 (追記) [[Return Code| (追記ここまで)ReturnCode(追記) ]] (追記ここまで) 0; 2. springe zurück).
In der ersten DD-Anweisung weist man [[Job Entry Subsystem|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 ==
== Implementierung ==
IEFBR14 gilt als Schulbeispiel für die Tatsache, dass selbst scheinbar triviale Programme Fehler enthalten können.<ref>{{Internetquelle |url=http://catless.ncl.ac.uk/Risks/6.14.html |titel=Safe programming languages |werk=The Risks Digest, Volume 6, Issue 14 | autor=John Pershing| datum=1988年01月25日 |zugriff=(削除) 2013 (削除ここまで)-(削除) 02 (削除ここまで)-(削除) 25 (削除ここまで) |sprache=Englisch }}</ref> Die ersten Auslieferungen des Programms setzten den Rückgabewert nicht auf 0, was Abfragen des Condition Code in Folgesteps behinderte:
IEFBR14 gilt als Schulbeispiel für die Tatsache, dass selbst scheinbar triviale Programme Fehler enthalten können.<ref>{{Internetquelle |url=http://catless.ncl.ac.uk/Risks/6.14.html |titel=Safe programming languages |werk=The Risks Digest, Volume 6, Issue 14 | autor=John Pershing| datum=1988年01月25日 |zugriff=(追記) 2018 (追記ここまで)-(追記) 08 (追記ここまで)-(追記) 03 (追記ここまで) |sprache=Englisch }}</ref> Die ersten Auslieferungen des Programms setzten den Rückgabewert nicht auf 0, was Abfragen des Condition Code in Folgesteps behinderte:
<syntaxhighlight lang="asm">
<syntaxhighlight lang="asm">
IEFBR14 START
IEFBR14 START
Zeile 32: Zeile 38:
</syntaxhighlight>
</syntaxhighlight>


Allerdings hatte auch diese Version noch ein Problem, da die END-Anweisung nicht auf den [[(削除) Einsprungspunkt (削除ここまで)]] Bezug nahm. Dies wurde mit der dritten Version des Programms behoben:
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:
<syntaxhighlight lang="asm">
<syntaxhighlight lang="asm">
IEFBR14 START
IEFBR14 START
Zeile 42: Zeile 48:
Um die Analyse von [[Dump]]s zu vereinfachen, wurden weitere Modifikationen vorgenommen:
Um die Analyse von [[Dump]]s zu vereinfachen, wurden weitere Modifikationen vorgenommen:


<syntaxhighlight lang="asm">
<code>
IEFBR14 START
IEFBR14 START
USING IEFBR14,15 ;Establish addressability
USING IEFBR14,15 ;Establish addressability
(削除) BR (削除ここまで) GO ;Skip over our name
(追記) B (追記ここまで) GO ;Skip over our name
DC AL1(L'ID) ;Length of name
DC AL1(L'ID) ;Length of name
ID DC C'IEFBR14' ;Name itself
ID DC C'IEFBR14' ;Name itself
Zeile 52: Zeile 58:
BR 14 ;Return addr in R14 -- branch at it
BR 14 ;Return addr in R14 -- branch at it
END IEFBR14
END IEFBR14
</syntaxhighlight>
</code>


== Siehe auch ==
== Siehe auch ==

Aktuelle Version vom 2. April 2023, 10:36 Uhr

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

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten ]
  1. The IEFBR14 utility: Do (almost) nothing. In: Data and storage management on z/OS. IBM Corporation, 1990, abgerufen am 3. August 2018 (englisch). 
  2. John Pershing: Safe programming languages. In: The Risks Digest, Volume 6, Issue 14. 25. Januar 1988, abgerufen am 3. August 2018 (englisch). 
Abgerufen von „https://de.wikipedia.org/w/index.php?title=IEFBR14&oldid=232407801"