<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=IEFBR14</id>
	<title>IEFBR14 - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=IEFBR14"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=IEFBR14&amp;action=history"/>
	<updated>2026-06-11T05:26:54Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=IEFBR14&amp;diff=35413&amp;oldid=prev</id>
		<title>imported&gt;Jbergner: /* Implementierung */ lf</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=IEFBR14&amp;diff=35413&amp;oldid=prev"/>
		<updated>2023-04-02T09:36:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Implementierung: &lt;/span&gt; lf&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;IEFBR14&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;Branch Register&amp;#039;&amp;#039;), ohne selbst irgendwelche Aktionen zu treffen.&amp;lt;ref&amp;gt;{{internetquelle&lt;br /&gt;
| url=https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zdatamgmt/zsysprogc_utilities_IEFBR14.htm&lt;br /&gt;
| titel=The IEFBR14 utility: Do (almost) nothing&lt;br /&gt;
| werk=Data and storage management on z/OS&lt;br /&gt;
| hrsg=[[IBM Corporation]]&lt;br /&gt;
| datum=1990&lt;br /&gt;
| sprache=Englisch&lt;br /&gt;
| zugriff=2018-08-03}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Praktische Anwendung ==&lt;br /&gt;
Eine beliebte Anwendung ist, per JCL Dateien zu löschen oder anzulegen:&amp;lt;syntaxhighlight lang=&amp;quot;jcl&amp;quot;&amp;gt;&lt;br /&gt;
//LOESCH EXEC PGM=IEFBR14&lt;br /&gt;
//DUMMY1   DD DSN=FILE.TO.DELETE,&lt;br /&gt;
//            DISP=(MOD,DELETE),&lt;br /&gt;
//            SPACE=(TRK,(1,1))&lt;br /&gt;
//DUMMY2   DD DSN=EINE.NEUE.DATEI,DISP=(NEW,CATLG),&lt;br /&gt;
//            AVGREC=M,SPACE=(100,(10,10))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In der ersten DD-Anweisung weist man [[Job Entry Subsystem|JES]] an, ein Data Set &amp;#039;&amp;#039;FILE.TO.DELETE&amp;#039;&amp;#039; 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.&lt;br /&gt;
&lt;br /&gt;
Das Programm besteht aus zwei Maschineninstruktionen (1. setze [[Return Code|ReturnCode]] 0; 2. springe zurück).&lt;br /&gt;
&lt;br /&gt;
== Implementierung ==&lt;br /&gt;
IEFBR14 gilt als Schulbeispiel für die Tatsache, dass selbst scheinbar triviale Programme Fehler enthalten können.&amp;lt;ref&amp;gt;{{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 }}&amp;lt;/ref&amp;gt; Die ersten Auslieferungen des Programms setzten den Rückgabewert nicht auf 0, was Abfragen des Condition Code in Folgesteps behinderte:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
IEFBR14 START&lt;br /&gt;
        BR 14 ;Return addr in R14 -- branch at it&lt;br /&gt;
        END&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Fehler wurde durch Einbauen der Instruktion &amp;#039;&amp;#039;SR 15,15&amp;#039;&amp;#039; behoben (&amp;#039;&amp;#039;SR&amp;#039;&amp;#039; steht hierbei für &amp;#039;&amp;#039;Subtract Registers&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
IEFBR14 START&lt;br /&gt;
        SR 15,15 ;Zero out register 15&lt;br /&gt;
        BR 14    ;Return addr in R14 -- branch at it&lt;br /&gt;
        END&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
IEFBR14 START&lt;br /&gt;
        SR 15,15    ;Zero out register 15&lt;br /&gt;
        BR 14       ;Return addr in R14 -- branch at it&lt;br /&gt;
        END IEFBR14&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Analyse von [[Dump]]s zu vereinfachen, wurden weitere Modifikationen vorgenommen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
 IEFBR14 START&lt;br /&gt;
         USING IEFBR14,15 ;Establish addressability&lt;br /&gt;
         B  GO            ;Skip over our name&lt;br /&gt;
         DC AL1(L&amp;#039;ID)     ;Length of name&lt;br /&gt;
 ID      DC C&amp;#039;IEFBR14&amp;#039;    ;Name itself&lt;br /&gt;
         DS 0H            ;Force alignment&lt;br /&gt;
 GO      SR 15,15         ;Zero out register 15&lt;br /&gt;
         BR 14            ;Return addr in R14 -- branch at it&lt;br /&gt;
         END IEFBR14&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
*[[IEFBR15]]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Iefbr14}}&lt;br /&gt;
[[Kategorie:Systemsoftware]]&lt;br /&gt;
[[Kategorie:IBM-Software]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Jbergner</name></author>
	</entry>
</feed>