Funktion
Die RETURN-Anweisung übernimmt einzelne Datensätze in sortierter Reihenfolge von der Sortierdatei.
Format
RETURN sortierdateiname RECORD [INTO bezeichner]
AT END unbedingte-anweisung-1
[NOT AT END unbedingte-anweisung-2]
[END-RETURN]
Syntaxregeln
sortierdateiname muss in einer Sortierdateierklärung definiert sein.
Der zu bezeichner gehörige Internspeicherbereich und der zu sortierdateiname gehörige Datensatzbereich dürfen nicht den gleichen Internspeicherbereich belegen.
Allgemeine Regeln
Die Ausführung einer RETURN-Anweisung bewirkt, dass der nächste Datensatz gemäß der in der SORT-/MERGE-Anweisung durch die Schlüssel festgelegten Reihenfolge verfügbar gemacht wird. Danach kann er in den Datensatzbereichen der Sortierdatei verarbeitet werden.
Wenn für den logischen Datensatz einer Datei mehr als eine Datensatzbeschreibung angegeben ist, benutzen diese Datensätze automatisch den gleichen Internspeicherbereich; dies entspricht einer impliziten Redefinierung des Bereichs. Der Inhalt eines jeden Datenelementes, das außerhalb des Bereichs des aktuellen Datensatzes liegt, ist nach Ausführung einer RETURN-Anweisung undefiniert.
Die INTO-Angabe kann in zwei Fällen gemacht werden:
wenn der Sortier-/Misch-Dateierklärung nur eine Datensatzbeschreibung untergeordnet ist,
wenn alle Datensatznamen, die dateiname zugeordnet sind, und das durch bezeichner repräsentierte Datenfeld eine Datengruppe oder ein alphanumerisches Datenfeld beschreiben.
Ist bezeichner eine stark typisierte Datengruppe, so darf der Sortier-/Misch-Dateierklärung nur eine Datensatzbeschreibung untergeordnet sein. Diese Datensatzbeschreibung muss eine stark typisierte Datengruppe vom gleichen Typ wie bezeichner sein.
Durch die INTO-Angabe entspricht die RETURN-Anweisung einer RETURN-Anweisung, die von einer MOVE-Anweisung gefolgt wird.
Wurde diese Angabe gemacht, so werden die Datensätze aus der Sortierdatei übernommen und dann in den durch bezeichner angegebenen Bereich übertragen;
bezeichner darf nicht ein Datenfeld innerhalb des Datensatzes dieser Sortierdatei beschreiben. Die Übertragung erfolgt entsprechend den Regeln für eine MOVE-Anweisung ohne die CORRESPONDING-Angabe. Die Größe des aktuellen Datensatzes wird gemäß den Regeln der RECORD-Klausel bestimmt (siehe „RECORD-Klausel").
Enthält die Sortierdateierklärung eine RECORD IS VARYING-Klausel, ist der implizite MOVE eine Gruppenübertragung.Die anschließende MOVE-Anweisung wird nicht ausgeführt, wenn eine AT END-Bedingung auftritt.
Eine angegebene Subskribierung oder Indizierung für bezeichner wird berechnet, nachdem der Datensatz übernommen wurde und unmittelbar bevor er in den Datenbereich übertragen wird.
Wurde die INTO-Angabe benutzt, stehen die Daten sowohl im Datensatzeingabebereich als auch im durch bezeichner angegebenen Datenbereich zur Verfügung.
Die Ausführung der RETURN-Anweisung bewirkt, dass der nächste vorhandene Satz aus der durch sortierdateiname repräsentierten Datei so, wie er durch die Schlüssel in der SORT- oder MERGE-Anweisung bezeichnet ist, im Satzbereich zur Verfügung steht.
Wenn zur Ausführungszeit einer RETURN-Anweisung kein nächster logischer Datensatz mehr existiert, tritt die Ende-Bedingung ein. Die Ausführung wird fortgesetzt entsprechend den Regeln für jede in unbedingte-anweisung-1 angegebene Anweisung. Wird dabei ein Prozedursprung oder eine Bedingungsanweisung ausgeführt, die einen expliziten Übergang der Steuerung bewirkt, erfolgt dieser Übergang entsprechend den Regeln für diese Anweisung; im anderen Fall geht nach Ende der Ausführung von unbedingte-anweisung-1 die Steuerung zum Ende der RETURN-Anweisung über, und die NOT AT END-Angabe wird, falls vorhanden, ignoriert. Tritt die Ende-Bedingung auf, ist die Ausführung der RETURN-Anweisung erfolglos, und der Inhalt des Satzbereichs von sortierdateiname ist unbestimmt. Nach der Ausführung von unbedingte-anweisung-1 kann keine RETURN-Anweisung als Teil der laufenden Ausgabe-Prozedur ausgeführt werden.Tritt während der Ausführung einer RETURN-Anweisung keine Ende-Bedingung auf, geht die Steuerung, nachdem der Satz verfügbar gemacht wurde und jede in Verbindung mit einer INTO-Angabe erforderliche implizite Übertragung ausgeführt wurde, zu unbedingte-anweisung-2 über, falls NOT AT END angegeben wurde; anderenfalls geht die Steuerung zum Ende der RETURN-Anweisung über.
Eine RETURN-Anweisung darf nur innerhalb der Ausgabeprozedur angegeben werden, die zu einer SORT-/MERGE-Anweisung für sortierdateiname gehört.