Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

SET-RECORD-MAPPING Festlegen des Ausgabesatzaufbaus

&pagelevel(4)&pagelevel

Diese Anweisung ist nur beim Kopieren von Dateien zulässig. Mit ihr kann der Aufbau des Ausgabesatzes gegenüber dem Eingabesatz verändert werden. Der Ausgabesatz kann aus Feldern des Eingabesatzes, aus Literalen und Kennwörtern zusammengestellt werden.

Überschreiben des Ausgabesatzes

Ein bereits existierender Ausgabesatz kann entweder mit dem Eingabesatz oder mit einem aus den Daten des Eingabesatzes, aus Kennwörtern und Literalen aufgebauten Satz überschrieben werden. Im zweiten Fall wird der Eingabesatz oder ein Füllzeichen zur Vorbelegung des Ausgabebereichs verwendet.

Aktualisieren des Ausgabesatzes

Einzelne Felder in einem bereits existierenden Ausgabesatz können aktualisiert werden (Schlüsselwort *OUTPUT des Operanden FILLER). Ein Satz der Ausgabedatei wird dazu zur Vorbelegung des Ausgabebereichs herangezogen. Folgende Randbedingungen sind dabei zu beachten:

  1. Zwischen Eingabesatz und zugehörigem Ausgabesatz muss sich eine Zuordnung herstellen lassen. Da an die Eingabedatei keine Bedingungen bezüglich des Sortierens gestellt werden, muss ein wahlfreier Zugriff auf die Ausgabedatei möglich sein. Deshalb wird als Ausgabedatei nur eine bereits existierende ISAM-Datei zugelassen. Über einen Schlüssel wird auf den Ausgabesatz zugegriffen. Dabei kann auch ein Sekundärschlüssel angegeben werden. Die Ausgabedatei wird mit dem OPEN-Modus INOUT eröffnet. Wird keine ISAM-Datei zur Ausgabe verwendet, bricht der Konvertierungsschritt mit der Meldung PER0053 ab.

  2. Die Eingabedatei kann von beliebigem Dateityp sein. Sie muss allerdings in jedem Satz ab gleicher Position ein Feld aufweisen, das den Schlüssel enthält, über den der Bezug zum Ausgabesatz hergestellt wird.

  3. Das Schlüsselfeld der Eingabedatei muss die gleiche Länge haben wie der verwendete Schlüssel der Ausgabedatei.

  4. Jeder Eingabesatz muss mindestens so lang sein, dass das Schlüsselfeld vollständig in ihm enthalten ist. Überragt das Schlüsselfeld das Ende des Eingabesatzes, wird der Konvertierungsschritt mit der Meldung PER0044 abgebrochen.

  5. Ist die Eingabedatei eine ISAM-Datei, so muss das Schlüsselfeld zur Zuordnung des Satzes der Ausgabedatei nicht notwendig ein ISAM-Schlüsselfeld sein.

  6. Enthält die Ausgabedatei mehrere Sätze mit gleichen Werten im angesprochenen Schlüssel, so wird der erste Satz zur Vorbelegung herangezogen.

  7. Die Satzlänge des neuen Ausgabesatzes kann geändert werden. Aber beim Rückschreiben eines verlängerten Satzes kann sich dessen Position innerhalb einer Folge von Sätzen mit gleichem Schlüssel ändern (Eigenschaft von ISAM). Damit ist nicht ausgeschlossen, dass bei einem weiteren Zugriff mit diesem Schlüssel ein anderer Satz bearbeitet wird.

  8. Die Operandenwerte in der Anweisung SET-RECORD-MAPPING müssen so festgelegt werden, dass das Schlüsselfeld des Primärschlüssels im Ausgabesatz nicht verändert wird (Forderung von ISAM). Wird diese Forderung nicht eingehalten, wird der Konvertierungsschritt mit der Meldung PER0085 abgebrochen.

  9. Wird ein Schlüssel in der Ausgabedatei nicht gefunden, wird die Warnung PER0054 ausgegeben, die den Schlüssel als Insert enthält. Die Verarbeitung wird mit dem nächsten Eingabesatz fortgesetzt. Diese Meldung wird höchstens zehnmal für jeden Dateikettungsnamen ausgegeben.

  10. Wenn der entsprechend der SET-RECORD-MAPPING-Anweisung aufgebaute Satz länger ist als der zur Vorbelegung gelesene Satz, so werden diejenigen Bereiche mit Leerzeichen aufgefüllt, die weder durch den Vorbelegungssatz noch durch den Operanden OUTPUT-FIELDS beschrieben werden.

Bei der Verarbeitung eines Eingabesatzes laufen dann im Normalfall folgende Schritte ab:

  1. Lesen eines Eingabesatzes und Bestimmen des Schlüssels für den zugehörigen Ausgabesatz.

  2. Lesen des zugehörigen Ausgabesatzes über den Schlüssel und Vorbelegen des Ausgabebereiches mit diesem Satz.

  3. Aufbauen des vollständigen Ausgabesatzes entsprechend den Angaben in der Anweisung SET-RECORD-MAPPING.

  4. Rückschreiben des Ausgabesatzes in die Ausgabedatei.

Mindest-Satzlänge festlegen

Beim Aufbauen eines Ausgabesatzes wird dessen Länge, sofern keine feste Satzlänge vorliegt, von der höchsten Satzposition bestimmt, die im Operanden OUTPUT-FIELDS der Anweisung SET-RECORD- MAPPING angesprochen wird. Über den Operanden MIN-RECORD-LENGTH kann für die Daten eine Mindestlänge angegeben werden, die entweder fest sein kann oder von der Länge des jeweiligen Eingabesatzes abhängt. Ist der aufgebaute Satz kürzer als diese Mindestlänge, so wird er entweder mit dem Füllzeichen oder mit Leerzeichen bei einer Vorbelegung des Ausgabebereiches mit dem Ein- bzw. bereits existierenden Ausgabesatz auf diese Länge erweitert.

Die Anweisung SET-RECORD-MAPPING ist wahlweise. Fehlt sie, wird der Eingabesatz unverändert als Ausgabesatz übernommen.

Hinweis

Eine eventuelle Konvertierung in ein Ausgabe-CCS wird in diesem Sinne nicht als Veränderung aufgefasst.

Beziehen sich in einem Konvertierungsschritt mehrere SET-RECORD-MAPPING-Anweisungen auf den gleichen Dateikettungsnamen, wird für diesen Dateikettungsnamen nur die zuletzt gegebene Anweisung ausgeführt.

SET-RECORD-MAPPING

OUTPUT-LINK-NAME = *STD / list-poss(2000): <filename 1..8 without-gen>

,FILLER = C ’ ’ / <c-string 1..1 with-low> / <x-string 1..2> / *INPUT / *OUTPUT(...)


*OUTPUT(...)



|

KEY-NAME = *PRIMARY / <name 1..8>



|

,KEY-VALUE = *BY-INPUT-RECORD (...)



|


*BY-INPUT-RECORD(...)


|



|

KEY-POSITION = *STD / <integer 1..32768>

,OUTPUT-FIELDS = *COMPLETE-RECORD / list-poss(2000): *FIELD(...) / *GROUP-COUNTER(...) /




*RECORD-LENGTH(...) / *BYTE-COUNTER(...) / *RECORD-COUNTER(...) / *PAGE-COUNTER(...) /




*DATE(...) / *TIME(...) / <c-string 1..256 with-low>(...) / <x-string 1..512>(...) /




<long-integer -9223372036854775807..9223372036854775807>(...)


*FIELD(...)



|

INPUT-POSITION = <integer 1..32768>



|

,INPUT-LENGTH = 1 / <integer 1..32767> / *RECORD-LENGTH(...)



|


*RECORD-LENGTH(...)



|



|

REDUCTION = 0 / <integer 0..32767>



|

,INPUT-FORMAT = *CHARACTER / *ZONED-DECIMAL / *PACKED-DECIMAL



|

,OUTPUT-POSITION = <integer 1..32768>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767> / *RECORD-LENGTH(...)



|


*RECORD-LENGTH(...)


|



|

REDUCTION = 0 / <integer 0..32767>



|

,OUTPUT-FORMAT = *INPUT-FORMAT / *CHARACTER / *HEXADECIMAL / *BINARY /



|





*TRANSLATION / *NO-TRANSLATION / *ZONED-DECIMAL / *PACKED-DECIMAL /



|





<c-string 2..256 with-low> / *SIGNED-DECIMAL / *DECIMAL / *UNICODE-TRANSLATION


*GROUP-COUNTER(...)



|

LINK-NAME = <filename 1..8 without-gen>



|

,GROUP-LEVEL = <integer 1..8>



|

,OUTPUT-POSITION = <integer 1..32767>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767>



|

,OUTPUT-FORMAT = C ’ ZZZ’ / <c-string 2..256 with-low> / *ZONED-DECIMAL-LEFT


*RECORD-LENGTH(...)



|

LINK-NAME = <filename 1..8 without-gen>



|

,OUTPUT-POSITION = <integer 1..32767>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767>



|

,OUTPUT-FORMAT = *ZONED-DECIMAL-LEFT / <c-string 2..256 with-low> / *PACKED-DECIMAL /



|





*ZONED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL


*BYTE-COUNTER(...)



|

LINK-NAME = <filename 1..8 without-gen>



|

,OUTPUT-POSITION = <integer 1..32767>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767>



|

,OUTPUT-FORMAT = *ZONED-DECIMAL-LEFT / <c-string 2..256 with-low> / *PACKED-DECIMAL /



|





*ZONED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL


*RECORD-COUNTER(...)



|

LINK-NAME = <filename 1..8 without-gen>



|

,OUTPUT-POSITION = <integer 1..32767>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767>



|

OUTPUT-FORMAT = *ZONED-DECIMAL-LEFT / <c-string 2..256 with-low> / *PACKED-DECIMAL /



|





*ZONED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL


*PAGE-COUNTER(...)



|

LINK-NAME = <filename 1..8 without-gen>



|

,OUTPUT-POSITION = <integer 1..32767>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767>



|

OUTPUT-FORMAT = *ZONED-DECIMAL-LEFT / <c-string 2..256 with-low> / *PACKED-DECIMAL /



|





*ZONED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL


*DATE(...)



|

OUTPUT-POSITION = <integer 1..32761>



|

,OUTPUT-LENGTH = *STD / <integer 8..32767>



|

,OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY



|

,CENTURY = *NO / *YES


*TIME(...)



|

OUTPUT-POSITION = <integer 1..32761>



|

,OUTPUT-LENGTH = *STD / <integer 8..32767>



|

,OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY


<c-string>(...)



|

OUTPUT-POSITION = <integer 1..32768>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767>



|

,OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY


<x-string>(...)



|

OUTPUT-POSITION = <integer 1..32768>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767>



|

,OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY


<long-integer -9223372036854775807..9223372036854775807>(...)



|

OUTPUT-POSITION = <integer 1..32768>



|

,OUTPUT-LENGTH = *STD / <integer 1..32767>



|

,OUTPUT-FORMAT = *ZONED-DECIMAL / <c-string 2..256 with-low> / *PACKED-DECIMAL /



|





*SIGNED-DECIMAL / *DECIMAL

,CODE-TRANSLATION = *NONE / *TABLE(...) / list-poss(2000): *REPLACE-CHARACTER(...)


*TABLE(...)



|

FILE-NAME = <filename 1..54>


*REPLACE-CHARACTER(...)



|

INPUT-CHARACTER = <c-string 1..1 with-low> / <x-string 1..2>



|

,OUTPUT-CHARACTER = <c-string 1..1 with-low> / <x-string 1..2>

,MIN-RECORD-LENGTH = *NONE / *BY-INPUT-RECORD(...) / <integer 1..32768>


*BY-INPUT-RECORD(...)



|

ADDITION = 0 / <integer -32767..32767>

OUTPUT-LINK-NAME =

Dateikettungsnamen der Ausgabedateien, auf die sich diese Anweisung beziehen soll.

OUTPUT-LINK-NAME = *STD
Diese Anweisung bezieht sich auf alle bisher angegebenen Ausgabedateien.

OUTPUT-LINK-NAME = list-poss(2000): <filename 1..8 without-gen>
Soll sich die Anweisung nur auf einige Ausgabedateien beziehen, müssen die Dateikettungsnamen dieser Dateien angegeben werden.

FILLER =
Füllzeichen für die nicht über den Operand OUTPUT-FIELDS beschriebenen Bereiche des Ausgabesatzes.

FILLER = C' '
Das Füllzeichen ist ein Leerzeichen.

FILLER = <c-string 1..1 with-low>
Füllzeichen im CHARACTER-Format.

FILLER = <x-string 1..2>
Füllzeichen im HEXADECIMAL-Format.

FILLER = *INPUT
Der Ausgabesatz wird mit dem Eingabesatz vorbesetzt. Ist der Ausgabesatz länger als der Eingabesatz, wird der Rest des Ausgabesatzes mit Leerzeichen aufgefüllt.

FILLER = *OUTPUT (...)
Legt fest, dass ein Satz der Ausgabedatei zur Vorbelegung des Ausgabebereichs verwendet werden soll.

KEY-NAME =
Nennt den Schlüssel der Ausgabedatei, der beim Beschaffen des Ausgabesatzes benutzt werden soll.

KEY-NAME = *PRIMARY
Der Primärschlüssel ist zu verwenden.

KEY-NAME = <name 1..8>
Der Name des zu verwendenden Sekundärschlüssels ist anzugeben.
Existiert der angegebene Sekundärschlüssel nicht, wird der Konvertierungsschritt mit einer Meldung abgebrochen.

KEY-VALUE = *BY-INPUT-RECORD (...)
Gibt an, dass sich der Schlüssel für den Zugriff auf die Ausgabedatei im Eingabesatz befindet. Als Schlüssellänge wird die Länge des unter KEY-NAME angegebenen Schlüssels der Ausgabedatei verwendet.

KEY-POSITION = *STD

Besitzt die Eingabedatei variables Satzformat, so gilt KEY-POSITION=5, ansonsten KEY-POSITION=1.

KEY-POSITION = <integer 1.. 32768>
Gibt die Position an, ab der im Eingabesatz das Schlüsselfeld beginnt.

Wird in der Anweisung SET-RECORD-MAPPING für eine Ausgabedatei der Operand FILLER=*OUTPUT angegeben, so sind für diese Ausgabedatei die Anweisungen SET-GROUP-ATTRIBUTES und SET-PAGE-LAYOUT nicht zugelassen. Falls sie dennoch angegeben werden, wird der Anwender durch die Meldung PER0056 darauf hingewiesen.

Wenn in der Anweisung ASSIGN-OUTPUT-FILE der Operand OVERWRITE=*NO angegeben ist und für eine Ausgabedatei der Operand FILLER=*OUTPUT vereinbart ist, wird dies als Widerspruch erkannt und mit der Meldung PER0056 als Fehler abgelehnt.

In der Anweisung SET-RECORD-MAPPING ist die Angabe von FILLER=*OUTPUT mit der Angabe von OUTPUT-FIELDS=*COMPLETE-RECORD unverträglich und wird mit der Meldung PER0087 als Fehler abgelehnt.

OUTPUT-FIELDS =
Baut den Ausgabesatz aus Teilen des Eingabesatzes, Kennwörtern und Literalen auf. Bei unterschiedlichen Angaben zu Länge und Format von Ein- und Ausgabefeld ist zu beachten, dass PERCON Umwandlungen vornimmt.

Bei Ausgabedateien mit RECORD-FORMAT=*VARIABLE ist zu beachten:

  • In der SET-RECORD-MAPPING-Anweisung dürfen beim Übertragen von Daten die ersten 4 Zeichen des Ausgabesatzes nicht angesprochen werden, da diese das Satzlängenfeld belegt (wird von PERCON versorgt).

  • Die Ausgabesatzlänge wird bestimmt durch das letzte Feld im Ausgabesatz, das im Operand OUTPUT-FIELDS angegeben wurde, oder durch den Operanden MIN-RECORD-LENGTH. Ohne Operand OUTPUT-FIELDS wird die Eingabesatzlänge bzw. die Angabe im Operanden MIN-RECORD-LENGTH übernommen.

OUTPUT-FIELDS = *COMPLETE-RECORD
Der Eingabesatz wird in die Ausgabedatei übernommen. Ist der Operand FILLER ungleich INPUT, werden alle Zeichen des Eingabesatzes durch das Füllzeichen ersetzt.

OUTPUT-FIELDS = *FIELD (...)
Übernimmt ein Feld des Eingabesatzes (Eingabefeld) in ein Feld des Ausgabesatzes (Ausgabefeld). Das angegebene Satzfeld muss innerhalb des Eingabesatzes liegen.

INPUT-POSITION = <integer 1..32768>
Anfangsposition des Eingabefeldes bezogen auf den Anfang des Eingabesatzes.

INPUT-LENGTH = 1 / <integer 1..32767> / *RECORD-LENGTH (...)

Länge des Eingabefeldes.

INPUT-LENGTH = *RECORD-LENGTH (...)
Die Satzlänge des aktuellen Eingabesatzes wird verwendet; bei variablem Satzformat ohne Satzlängenfeld. Dieser Operand darf nur bei INPUT-FORMAT=*CHARACTER angegeben werden.

REDUCTION = 0 / <integer 0..32767>
Gibt an, um wie viele Zeichen die aktuelle Eingabesatzlänge verkürzt werden soll.

INPUT-FORMAT = *CHARACTER / *ZONED-DECIMAL / *PACKED-DECIMAL Format des Eingabefeldes (siehe "Formate" ff).
Das Feld des Eingabesatzes, welches mittels Maske aufbereitet werden soll, darf bei INPUT-FORMAT=*ZONED-DECIMAL nicht länger als 255, bei INPUT-FORMAT= *PACKED-DECIMAL nicht länger als 128 Byte sein.

OUTPUT-POSITION = <integer 1..32768>
Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767> / *RECORD-LENGTH (...) Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD
Als Standardwert wird die INPUT-LENGTH genommen.
Ausnahmen bei folgenden Kombinationen:

OUTPUT-FORMAT

INPUT-FORMAT

CHARACTER
INPUT-LENGTH î
*RECORD-LENGTH

ZONED-DECIMAL

PACKED-DECIMAL

HEXADECIMAL

2 * INPUT-LENGTH



BINARY

8 * INPUT-LENGTH



SIGNED-DECIMAL


INPUT-LENGTH + 1

2 * INPUT-LENGTH

DECIMAL


INPUT-LENGTH + 1

2 * INPUT-LENGTH

ZONED-DECIMAL


INPUT-LENGTH

2 * INPUT-LENGTH -1

PACKED-DECIMAL


INPUT-LENGTH/2+1


<c-string> (Maske)


Maskenlänge

Maskenlänge

Ist der Eingabedatei und/oder der Ausgabedatei ein Unicode-Format zugeordnet und dem Operanden OUTPUT-FORMAT der Wert *UNICODE-TRANSLATION zugewiesen, wird bei einer Konvertierung und/oder Normalisierung der Standardwert für die Ausgabelänge folgendermaßen ermittelt.

Eingabe-Format

Ausgabe-Format

Ausgabelänge

Nicht Unicode

Unicode gleich UTF-16

INPUT-LENGTH*2

Nicht Unicode

Unicode ungleich UTF-16

INPUT-LENGTH*3

Unicode gleich UTF-16

Unicode gleich UTF-16

INPUT-LENGTH*1

Unicode gleich UTF-16

Unicode ungleich UTF-16

INPUT-LENGTH*2

Unicode gleich UTF-16

Nicht Unicode

INPUT-LENGTH:2
(aufgerundet)

Unicode ungleich UTF-16

Unicode gleich UTF-16

INPUT-LENGTH*2

Unicode ungleich UTF-16

Unicode ungleich UTF-16
(CCSN nicht identisch)

INPUT-LENGTH*2

Unicode ungleich UTF-16

Unicode ungleich UTF-16
(CCSN identisch)

INPUT-LENGTH*1

Unicode ungleich UTF-16

Nicht Unicode

INPUT-LENGTH*1

Hinweis

Bei einer Ausgabe in das Unicode-Format UTF-16 kann der Wert für die Länge des Ausgabefeldes maximal 32766 werden. Bei einer Ausgabe in ein Unicode-Format ungleich UTF-16 kann der Wert für die Länge des Ausgabefeldes maximal 32767 werden.

OUTPUT-LENGTH = *RECORD-LENGTH (...)
Die Satzlänge wird festgelegt. Dieser Operand darf nur bei INPUT-FORMAT= *CHARACTER angegeben werden.

REDUCTION = 0 / <integer 0..32767>
Gibt an, um wie viele Zeichen die aktuelle Eingabesatzlänge verkürzt werden soll.

OUTPUT-FORMAT = *INPUT-FORMAT / *CHARACTER / *HEXADECIMAL / *BINARY / *TRANSLATION / *NO-TRANSLATION / *ZONED-DECIMAL / *PACKED-DECIMAL / <c-string 2..256 with-low> / *SIGNED-DECIMAL / *DECIMAL/*UNICODE-TRANSLATION

*NO-TRANSLATION ist zu verwenden, wenn keine Umsetzung des Eingabefeldes in den Ausgabezeichensatz erfolgen soll (z.B. bei gepackten Zahlen).
Format des übrigen Ausgabefeldes (siehe "Formate" ff).

Erlaubt sind nur die Kombinationen:

OUTPUT-FORMAT

INPUT-FORMAT

CHARACTER

ZONED-DECIMAL

PACKED-DECIMAL

INPUT-FORMAT

+

+

+

CHARACTER

+



HEXADECIMAL

+



BINARY

+



TRANSLATION

+



NO-TRANSLATION

+

+

+

ZONED-DECIMAL

+

+

+

PACKED-DECIMAL


+

+

<c-string>


+

+

SIGNED-DECIMAL


+

+

DECIMAL


+

+

UNICODE-TRANSLATION

+



Dezimale Aufbereitung von Feldern

Die Umwandlung des binären Wertes eines Feldes in die dezimale Form ist durch die Kombination der Operanden INPUT-FORMAT=*CHARACTER und OUTPUT-FORMAT=*ZONED-DECIMAL möglich.

Wenn binäre Werte eines Eingabefeldes in dezimale Werte im Ausgabefeld konvertiert werden sollen, sind folgende Festlegungen zu beachten:

    1. Das Eingabefeld darf maximal vier Zeichen lang sein (Operand INPUT-LENGTH). Wird ein größerer Wert angegeben, wird die Anweisung als syntaktisch falsch mit der Meldung PER0005 zurückgewiesen.

    2. Das Eingabefeld wird als nicht vorzeichenbehaftet angenommen.

    3. Die Länge des Ausgabefeldes (Operand OUTPUT-LENGTH) muss so gewählt werden, dass alle gültigen Stellen in das Feld passen. Ansonsten wird der Konvertierungsschritt mit der Meldung PER0042 abgebrochen.

    4. Bei OUTPUT-LENGTH=*STD wird der Wert 10 als Standard angenommen.

    5. Bei INPUT-LENGTH=*RECORD-LENGTH kann die Einhaltung der maximalen Eingabelänge von vier Byte erst bei der Verarbeitung geprüft werden. Eine Verletzung dieser Bedingung führt zum Abbruch des Konvertierungsschritts mit der Meldung PER0042.

Beispiel:

In einer Datei befindet sich ab Position 12 ein Feld mit der Länge 2. Der binäre Wert dieses Feldes soll im Ausgabesatz ab Position 8 in der Länge 6 in dezimaler Form erscheinen.

Inhalt des Eingabefeldes: X'02C3'

Operanden der SET-RECORD-MAPPING-Anweisung:


OUTPUT-FIELDS=FIELD( - 
              INPUT-POSITION =12,INPUT-LENGTH =2, - 
              OUTPUT-POSITION= 8,OUTPUT-LENGTH=6, - 
              INPUT-FORMAT =*CHARACTER, - 
              OUTPUT-FORMAT=*ZONED-DECIMAL) 


Inhalt des Feldes im Ausgabesatz ab Position 8: 000707

OUTPUT-FIELDS = *GROUP-COUNTER(...)
Zähler je Gruppe. GROUP-COUNTER ist für die Gruppenstufe 1 bis 8 jeder Ausgabeeinheit verfügbar. Jeder Zähler ist durch seinen Dateikettungsnamen und durch eine Gruppenstufe eindeutig bestimmt.

LINK-NAME = <filename 1..8 without-gen>
Dateikettungsname der Ein-/Ausgabedatei, von der man einen Gruppenzähler in der Benutzerzeile verwenden will.

GROUP-LEVEL = <integer 1..8>
Angabe, welcher Gruppenzähler der mit LINK-NAME bezeichneten Ein-/Ausgabedatei verwendet werden soll.

OUTPUT-POSITION = <integer 1..32767>
Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Länge des Ausgabefeldes. Standardwert ist entweder 4 bei OUTPUT-FORMAT= *ZONED-DECIMAL oder die Maskenlänge.

OUTPUT-FORMAT = C ' ZZZ' / <c-string 2..256 with-low> / *ZONE-DECIMAL-LEFT
Format des Ausgabefeldes (siehe "Formate" ff).

OUTPUT-FIELDS = *RECORD-LENGTH(...)

LINK-NAME = <filename 1..8 without-gen>

Dateikettungsname der Ein-/Ausgabedatei, deren aktuelle Satzlänge man im Ausgabesatz verwenden will.

OUTPUT-POSITION = <integer 1..32767>
Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767>

Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

ZONED-DECIMAL-LEFT

8 Zeichen

ZONED-DECIMAL

8 Zeichen

SIGNED-DECIMAL

9 Zeichen

DECIMAL

9 Zeichen

PACKED-DECIMAL

5 Zeichen

<c-string> (Maske)

Maskenlänge


OUTPUT-FORMAT = *ZONED-DECIMAL-LEFT / <c-string 2..256 with-low> /*PACKED-DECIMAL / *ZONED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL

Format des Ausgabefeldes (siehe "Formate" ff).

OUTPUT-FIELDS = *BYTE-COUNTER(...)

LINK-NAME = <filename 1..8 without-gen>

Dateikettungsname der Ein-/Ausgabedatei, deren aktuellen Bytezählerwert man im Ausgabesatz verwenden will.

OUTPUT-POSITION = <integer 1..32767>
Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

ZONED-DECIMAL-LEFT

10 Zeichen

ZONED-DECIMAL

10 Zeichen

SIGNED-DECIMAL

11 Zeichen

DECIMAL

11 Zeichen

PACKED-DECIMAL

6 Zeichen

<c-string> (Maske)

Maskenlänge


OUTPUT-FORMAT = *ZONED-DECIMAL-LEFT / <c-string 2..256 with-low> / *PACKED-DECIMAL / *ZONED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL
Format des Ausgabefeldes (siehe "Formate" ff).

OUTPUT-FIELDS = *RECORD-COUNTER(...)

LINK-NAME = <filename 1..8 without-gen>

Dateikettungsname der Ein-/Ausgabedatei, deren aktuellen Satzzählerwert man im Ausgabesatz verwenden will.

OUTPUT-POSITION = <integer 1..32767>
Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

ZONED-DECIMAL-LEFT

8 Zeichen

ZONED-DECIMAL

8 Zeichen

SIGNED-DECIMAL

9 Zeichen

DECIMAL

9 Zeichen

PACKED-DECIMAL

5 Zeichen

<c-string> (Maske)

Maskenlänge


OUTPUT-FORMAT = *ZONED-DECIMAL-LEFT / <c-string 2..256 with-low> / *PACKED-DECIMAL / *ZONED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL
Format des Ausgabefeldes (siehe "Formate" ff).

OUTPUT-FIELDS = *PAGE-COUNTER(...)

LINK-NAME = <filename 1..8 without-gen>

Dateikettungsname der Ausgabedatei, deren aktuellen Seitenzählerwert man im Ausgabesatz verwenden will.

OUTPUT-POSITION = <integer 1..32767>
Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

ZONED-DECIMAL-LEFT

6 Zeichen

ZONED-DECIMAL

6 Zeichen

SIGNED-DECIMAL

7 Zeichen

DECIMAL

7 Zeichen

PACKED-DECIMAL

4 Zeichen

<c-string> (Maske)

Maskenlänge


OUTPUT-FORMAT = *ZONED-DECIMAL-LEFT / <c-string 2..256 with-low> /*PACKED-DECIMAL / *ZONED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL
Format des Ausgabefeldes (siehe "Formate" ff).

OUTPUT-FIELDS = *DATE(...)
Datum des Startes des PERCON-Konvertierungsschrittes als 8-stellige Zeichenfolge im Format jj-mm-tt.

OUTPUT-POSITION = <integer 1..32761>
Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 8..32767>
Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD



CENTURY = *NO

CENTURY = *YES

OUTPUT-FORMAT

OUTPUT-LENGTH

OUTPUT-LENGTH

CHARACTER

8 Zeichen

10 Zeichen

HEXADECIMAL

16 Zeichen

20 Zeichen

BINARY

64 Zeichen

80 Zeichen


OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY
Format des Ausgabefeldes (siehe "Formate" ff).

CENTURY = *NO / *YES
Bei der Angabe von CENTURY=*YES wird das Datum als 10-stellige Zeichenfolge mit der Angabe des Jahrhunderts im Format jjjj-mm-tt ausgegeben. Damit verringert sich der Maximalwert für OUTPUT-POSITION um 2 auf 32759 und der Minimalwert für OUTPUT-LENGTH erhöht sich um 2 auf 10.

OUTPUT-FIELDS = *TIME(...)

Uhrzeit des Startes des PERCON-Konvertierungsschrittes als 8-stellige Zeichenfolge im Format hh:mm:ss.

OUTPUT-POSITION = <integer 1..32761>
Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 8..32767>
Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

CHARACTER

8 Zeichen

HEXADECIMAL

16 Zeichen

BINARY

64 Zeichen


OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY
Format des Ausgabefeldes (siehe "Formate" ff).

OUTPUT-FIELDS =<c-string 1..256 with-low>(...)

OUTPUT-POSITION = <integer 1..32768>

Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

CHARACTER

Länge des c-string

HEXADECIMAL

2 * Länge des c-string

BINARY

8 * Länge des c-string


OUTPUT-FORMAT = *CHARACTER / *HEAXADECIMAL / *BINARY
Format des Ausgabefeldes (siehe "Formate" ff).

OUTPUT-FIELDS =<x-string 1..512>(...)

OUTPUT-POSITION = <integer 1..32768>

Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

CHARACTER

0,6 * Länge des x-string

HEXADECIMAL

Länge des x-string

BINARY

4 * Länge des x-string


OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY
Format des Ausgabefeldes (siehe "Formate" ff).

OUTPUT-FIELDS =<long-integer -9223372036854775807..9223372036854775807>(...)

OUTPUT-POSITION = <integer 1..32768>

Anfangsposition des Ausgabefeldes bezogen auf den Anfang des Ausgabesatzes.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Länge des Ausgabefeldes.

OUTPUT-LENGTH = *STD
Standardwert ist die Mindestlänge, die erforderlich ist, um die auszugebende Zahl im angegebenen Format darzustellen, bei <c-string> die Maskenlänge.

OUTPUT-FORMAT = *ZONED-DECIMAL / <c-string 2..256 with-low> / *PACKED-DECIMAL / *SIGNED-DECIMAL / *DECIMAL
Format des Ausgabefeldes (siehe "Formate" ff).

CODE-TRANSLATION =
Ist anzugeben, wenn im Operanden OUTPUT-FIELDS=*FIELD der Strukturoperand OUTPUT-FORMAT=*TRANSLATION verwendet wurde.

CODE-TRANSLATION = *NONE
Es erfolgt keine Code-Umsetzung, auch wenn OUTPUT-FORMAT=*TRANSLATION angegeben wurde.

CODE-TRANSLATION = *TABLE(...)
Datei mit der Code-Umsetztabelle.

FILE-NAME = <filename 1..54>
Diese Datei enthält 16 Sätze, die die sedezimale Verschlüsselung von jeweils 16 Zeichen enthalten. In diese Zeichen werden die entsprechenden Zeichen des Eingabefeldes umgewandelt und in das Ausgabefeld übertragen. Die Zuordnung erfolgt über den sedezimalen Wert innerhalb der Code-Umsetztabelle.
Die Datei kann eine SAM- oder ISAM-Datei sein. Bei ISAM-Dateien muss der ISAM-Satzschlüssel am Anfang des Satzes stehen und 8 Byte lang sein (bei fester Satzlänge Position 1, bei variabler Satzlänge Position 5).

CODE-TRANSLATION = *REPLACE-CHARACTER(...)

Ersetzt zeichenweise.

INPUT-CHARACTER = <c-string 1..1> / <x-string 1..2>
Umzucodierendes Zeichen.

OUTPUT-CHARACTER = <c-string 1..1> / <x-string 1..2>
Ersetzungszeichen für das umzucodierende Zeichen.

MIN-RECORD-LENGTH =
Festlegen der minimalen Satzlänge für den Ausgabesatz.
Bei variablem Satzformat der Ausgabedatei berücksichtigt PERCON zusätzlich das Satzlängenfeld.

MIN-RECORD-LENGTH = *NONE
Es wird keine minimale Ausgabesatzlänge gefordert.

MIN-RECORD-LENGTH = <integer 1..32768>
Es wird eine feste minimale Ausgabesatzlänge gefordert.

MIN-RECORD-LENGTH = *BY-INPUT-RECORD(...)
Die Satzlänge des aktuellen Eingabesatzes wird verwendet; bei variablem Satzformat der Eingabedatei ohne Satzlängenfeld.

ADDITION = <integer -32767..32767>
Gibt an, um wie viele Zeichen die aktuelle Eingabesatzlänge verändert werden soll.

Hinweis

  • Ist die geforderte Minimallänge größer als die maximal mögliche Länge eines Ausgabesatzes, so wird die Minimallänge auf diesen Wert gesetzt. Bei negativem Ergebnis oder Null wird für den betreffenden Satz keine Minimallänge berücksichtigt.

  • Bei fester Länge der Ausgabesätze hat der Operand MIN-RECORD-LENGTH keine Bedeutung. Er wird im Rahmen der Syntaxprüfung zwar ausgewertet, bei der Verarbeitung dann aber ignoriert.

  • Beim Aufbereiten von Sätzen mit der Anweisung SET-PAGE-LAYOUT oder bei einer Standard-Aufbereitung bewirkt die Angabe einer Mindestlänge, dass rechts vor dem Satz-Ende stehende Leerzeichen nicht unterdrückt werden. D.h. in diesem Fall werden Sätze beim Aufbereiten nicht gekürzt.