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

&pagelevel(4)&pagelevel

This statement is only permissible in conjunction with file copying. It can be used to format the output record relative to the input record. The output record can be made up of input record fields, literals and keywords.

Overwriting the output record

An existing output record can be overwritten either with the input record or with a record made up of the input record data, literals and keywords. With the second option, the output area is prefilled with either the input record or a fill character.

Updating the output record

It is possible to update individual fields in an existing output record (keyword *OUTPUT of the FILLER operand). The output area is prefilled with an output file record in this case. The following limiting conditions have to be observed:

  1. The input record must be unequivocally associated with the corresponding output record. Since no sorting conditions apply to the input file, random access to the output file must be possible. This is why only existing ISAM files may be used as output files. Output records are accessed via a key, which may be a secondary key. The output file is opened in INOUT mode. If the output file is not an ISAM file, the conversion step is aborted and message PER0053 is output.

  2. There are no restrictions as to the file type of the input file. However, each input record must have a field at identical position containing the key that is used to establish the corresponding output record.

  3. The key field in the input file must have the same length as the key in the output file.

  4. The minimum length of each input record must be sufficient to accommodate the complete key field. If the key field is longer than the input record, the conversion step is aborted and message PER0044 is output.

  5. If the input file is an ISAM file, the key field used to determine the appropriate output record need not be an ISAM-key field.

  6. If the output file contains more than one record with identical value in the referenced key, the first of these records is used for prefilling the output area.

  7. The record length of the new output record may be modified. Note, however, that when writing back a record whose length has been increased, the position of the record within a sequence of records with identical key may change (ISAM feature). It can therefore not be excluded that a different record will be processed by a subsequent access using this key.

  8. The operand values specified in the SET-RECORD-MAPPING statement must prevent all modification of the key field of the primary key in the output record (ISAM requirement). If this requirement is not met, the conversion step is aborted an message PER0085 is output.

  9. Warning PER0054 is output if an output file key cannot be found; the message contains an insert that indicates the key. Processing is continued with the next input record. A maximum of ten occurrences of this message is possible per link name.

  10. If the length of the record formatted in accordance with the SET-RECORD-MAPPING statement exceeds the length of the record used for prefilling the output area, any areas not occupied by either the prefilling record or described by the OUTPUT-FIELDS operand will be filled with blanks.

The following steps are normally executed when processing an input record:

  1. An input record is read and the key for the corresponding output record is determined.

  2. The corresponding output record is read using the key, and the output area is prefilled with this record.

  3. The complete output record is formatted in accordance with the specifications in the SET-RECORD-MAPPING statement.

  4. The output record is written back to the output file.

Defining the minimum record length

When formatting an output record, its length is determined by the highest record position specified in the OUTPUT-FIELDS operand of the SET-RECORD- MAPPING statement unless a fixed record length has been specified. The MIN-RECORD-LENGTH operand can be used to specify a minimum length for the data; this can either be a fixed length or it can be made dependent on the length of the corresponding input record. If the output area is prefilled with the input record or the existing output record and the length of the formatted record is less than the defined minimum length, the record is either padded with the filler or with blanks up to the minimum length.

The SET-RECORD-MAPPING statement is optional. If it is omitted, the input record is transferred as the output record, without any changes.

Note

Any conversion to an output CCS is not regarded as being a change in this sense.

If several SET-RECORD-MAPPING statements in a conversion step refer to the same link name, only the last statement specified is executed for this link name.

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 =

Specifies link names of the output files to which this statement is to refer.

OUTPUT-LINK-NAME = *STD
This statement refers to all output files specified up to now.

OUTPUT-LINK-NAME = list-poss(2000): <filename 1..8 without-gen>
If the statement is to refer only to certain output files, the link names of these files must be specified.

FILLER =
Specifies a filler character for the output record areas not defined via the OUTPUT-FIELDS operand.

FILLER = C' '
The filler character is a blank.

FILLER = <c-string 1..1 with-low>
The filler character is in character format.

FILLER = <x-string 1..2>
The filler character is in hexadecimal format.

FILLER = *INPUT
The output record already contains the input record. If the output record is longer than the input record, the remainder of the output record is filled with blanks.

FILLER = *OUTPUT (...)
An output record is to be used to prefill the output area.

KEY-NAME =
Specifies the output file key to be used to determine the output record.

KEY-NAME = *PRIMARY
The primary key is to be used.

KEY-NAME = <name 1..8>
The name of the secondary key that is to be used is specified.
If the specified secondary key does not exist, the conversion step is aborted and a message is output.

KEY-VALUE = *BY-INPUT-RECORD (...)
The key used to access the output file is contained in the input record. The length of the key is assumed to be identical with the length of the output file key specified with KEY-NAME.

KEY-POSITION = *STD
If the format of the input records is variable, KEY-POSITION=5 applies, otherwise KEY-POSITION=1.

KEY-POSITION = <integer 1.. 32768>

Specifies the start position of the key field in the input record.

If the FILLER=*OUTPUT operand of the SET-RECORD-MAPPING statement is specified for an output file, the statements SET-GROUP-ATTRIBUTES and SET-PAGE-LAYOUT are not permitted for this output file. If this restriction is not observed, the user is informed of the violation by means of message PER0056.

If the OVERWRITE=*NO operand is specified in the ASSIGN-OUTPUT-FILE statement and FILLER=*OUTPUT is defined for an output file, PERCON recognizes the incompatibility and rejects it with message PER0056.

Specifying FILLER=*OUTPUT in the SET-RECORD-MAPPING statement is incompatible with specifying OUTPUT-FIELDS=*COMPLETE-RECORD; this will be rejected with message PER0087.

OUTPUT-FIELDS =
Constructs the output record from parts of the input record, keywords and literals. In the event of different length and format specifications for the input and output fields, PERCON makes appropriate conversions.

When RECORD-FORMAT = *VARIABLE is specified for output files:

  • In the SET-RECORD-MAPPING statement, the first 4 characters of the output record must not be addressed during data transfer, since they occupy the record length field (values are supplied by PERCON).

  • The output record length is determined by the last field in the output record that is specified in the OUTPUT-FIELDS operand or by the MIN-RECORD-LENGTH operand. If the OUTPUT-FIELDS operand is omitted, either the length of the input record or the specification for MIN-RECORD-LENGTH is assumed.

OUTPUT-FIELDS = *COMPLETE-RECORD
The input record is transferred to the output file. If the FILLER operand is not equal to INPUT, all characters of the input record are replaced by fillers.

OUTPUT-FIELDS = *FIELD(...)
Transfers a field in the input record (input field) to a field of the output record (output field). The specified record field must be within the input record.

INPUT-POSITION = <integer 1..32768>
Specifies the position where the input field begins, relative to the beginning of the input record.

INPUT-LENGTH = 1 / <integer 1..32767> / *RECORD-LENGTH(...)
Specifies the length of the input field.

INPUT-LENGTH = *RECORD-LENGTH(...)

Defines the record length of the current input record (for variable-format records, without the record length field). This operand can only be specified in conjunction with INPUT-FORMAT = *CHARACTER.

REDUCTION = 0 / <integer 0..32767>
Specifies by how many characters the current input record length is to be shortened.

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

Specifies the format of the input field (see "Formats "ff). The input record field which is to be edited by means of a mask must not be longer than 255 bytes when INPUT-FORMAT=*ZONED-DECIMAL and no longer than 128 bytes when INPUT-FORMAT=*PACKED-DECIMAL.

OUTPUT-POSITION = <integer 1..32768>
Specifies the position where the output field begins, relative to the beginning of the output record.

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

Specifies the length of the output field.

OUTPUT-LENGTH = *STD
INPUT-LENGTH is assumed by default.
The following combinations represent exceptions:

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> (Mask)


Mask length

Mask length

If the input file and/or the output file is assigned a Unicode format and the OUTPUT-FORMAT operand has the value *UNICODE-TRANSLATION, the default value for the output length is determined as follows when conversion and/or normalization takes place.

Input format

Output format

Output length

Not Unicode

Unicode is UTF-16

INPUT-LENGTH*2

Not Unicode

Unicode is not UTF-16

INPUT-LENGTH*3

Unicode is UTF-16

Unicode is UTF-16

INPUT-LENGTH*1

Unicode is UTF-16

Unicode is not UTF-16

INPUT-LENGTH*2

Unicode is UTF-16

Not Unicode

INPUT-LENGTH:2
(rounded up)

Unicode is not UTF-16

Unicode is UTF-16

INPUT-LENGTH*2

Unicode is not UTF-16

Unicode is not UTF-16
(CCSN not identical)

INPUT-LENGTH*2

Unicode is not UTF-16

Unicode is not UTF-16
(CCSN identical)

INPUT-LENGTH*1

Unicode is not UTF-16

Not Unicode

INPUT-LENGTH*1

Note

When output takes place in Unicode format UTF-16, the maximum value for the length of the output field is 32766. When output takes place in a Unicode format other than UTF-16, the maximum value for the output field is 32767.

OUTPUT-LENGTH = *RECORD-LENGTH(...)
Defines the record length. This operand can only be specified in conjunction with INPUT-FORMAT = *CHARACTER.

REDUCTION = 0 / <integer 0..32767>
Specifies by how many characters the current input record length is to be shortened.

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 must be used when the input field is not to be converted to the output character set (e.g. with packed numbers). Specifies the format of the rest of the output field (see "Formats "ff).

Only the following combinations are permissible:

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


+

+

UNICODE-TRANSLATION

+



Decimal conversion of field contents

By combining the operands INPUT-FORMAT=*CHARACTER and OUTPUT-FORMAT=*ZONED-DECIMAL, a binary field value can be converted to a decimal value. The following restrictions apply to the conversion of binary input field values to decimal output field records:

    1. The maximum length of the input field is four characters (INPUT-LENGTH operand). Specification of a larger value is regarded as a syntactical error and rejected with message PER0005.

    2. The input field is assumed to be unsigned.

    3. The length of the output field (OUTPUT-LENGTH operand) must be sufficient to accommodate all valid positions. Otherwise the conversion step will be aborted and message PER0042 is output.

    4. If OUTPUT-LENGTH=*STD is specified, a value of 10 is assumed.

    5. If INPUT-LENGTH=*RECORD-LENGTH is specified, observance of the maximum input length of four bytes cannot be checked until the record is processed. Any violation of the restriction results in the conversion step being aborted and message PER0042 being output.

Example

A file contains a field with the length of 2 and start position 12. The binary value of this field is to be converted to decimal format and written to the output record with a length of 6 starting at position 8.

Input field contents: X'02C3'

Operands of the SET-RECORD-MAPPING statement:


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


Contents of the output field starting at position 8: 000707

OUTPUT-FIELDS = *GROUP-COUNTER(...)
Specifies counters per group. GROUP-COUNTER is available for group levels 1 to 8 of each output medium. Each counter is unambiguously defined by its link name and by a group level.

LINK-NAME = <filename 1..8 without-gen>
Specifies the link name of the input/output file from which a group counter is to be used in the user line.

GROUP-LEVEL = <integer 1..8>
Specifies which group counter of the input/output file labelled LINK-NAME is to be used.

OUTPUT-POSITION = <integer 1..32767>
Specifies the start position of the output field, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Specifies the length of the output field. The standard (default) value is either 4 when OUTPUT-FORMAT = *ZONED-DECIMAL or the mask length.

OUTPUT-FORMAT = C' ZZZ' / <c-string 2..256 with-low> / *ZONED-DECIMAL-LEFTSpecifies the format of the output field (see "Formats "ff).

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

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

Specifies the link name of the input/output file whose current record length is to be used in the output record.

OUTPUT-POSITION = <integer 1..32767>

Specifies the position where the output field begins, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Specifies the length of the output field.

OUTPUT-LENGTH = *STD

OUTPUT-FORMAT

OUTPUT-LENGTH

ZONED-DECIMAL-LEFT

8 characters

ZONED-DECIMAL

8 characters

SIGNED-DECIMAL

9 characters

DECIMAL

9 characters

PACKED-DECIMA

5 characters

<c-string> (mask)

Mask length

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

Specifies the format of the output field (see "Formats "ff).

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

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

Specifies the link name of the input/output file whose current byte counter value is to be used in the output record.

OUTPUT-POSITION = <integer 1..32767>
Specifies the position where the output field begins, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Specifies the length of the output field.

OUTPUT-LENGTH = *STD

OUTPUT-FORMAT

OUTPUT-LENGTH

ZONED-DECIMAL-LEFT

10 characters

ZONED-DECIMAL

10 characters

SIGNED-DECIMAL

11 characters

DECIMAL

11 characters

PACKED-DECIMAL

6 characters

<c-string> (mask)

Mask length

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

Specifies the format of the output field (see "Formats "ff).

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

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

Specifies the link name of the input/output file whose current record counter length is to be used in the output record.

OUTPUT-POSITION = <integer 1..32767>
Specifies the position where the output field begins, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Specifies the length of the output field.

OUTPUT-LENGTH = *STD

OUTPUT-FORMAT

OUTPUT-LENGTH

ZONED-DECIMAL-LEFT

8 characters

ZONED-DECIMAL

8 characters

SIGNED-DECIMAL

9 characters

DECIMAL

9 characters

PACKED-DECIMAL

5 characters

<c-string> (mask)

Mask length

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

Specifies the format of the output field (see "Formats "ff).

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

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

Specifies the link name of the output file whose current record counter length is to be used in the output record.

OUTPUT-POSITION = <integer 1..32767>
Specifies the position where the output field begins, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Specifies the length of the output field.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

ZONED-DECIMAL-LEFT

6 characters

ZONED-DECIMAL

6 characters

SIGNED-DECIMAL

7 characters

DECIMAL

7 characters

PACKED-DECIMAL

4 characters

<c-string> (mask)

Mask length


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

Specifies the format of the output field (see "Formats "ff).

OUTPUT-FIELDS = *DATE(...)
Specifies the start date of the PERCON conversion step as an 8-digit string in the form yy-mm-dd.

OUTPUT-POSITION = <integer 1..32761>
Specifies the position where the output field begins, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 8..32767>
Specifies the length of the output field.

OUTPUT-LENGTH = *STD



CENTURY = *NO

CENTURY = *YES

OUTPUT-FORMAT

OUTPUT-LENGTH

OUTPUT-LENGTH

CHARACTER

8 characters

10 characters

HEXADECIMAL

16 characters

20 characters

BINARY

64 characters

80 characters


OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY
Specifies the format of the output field (see "Formats "ff).

CENTURY = *NO / *YES
If CENTURY=*YES is specified, the date is output as a 10-digit character string, with the century specification in the format yyyy-mm-dd. This reduces the maximum value for OUTPUT-POSITION by 2 to 32759 and the minimum value for OUTPUT-LENGTH is increased by 2 to 10.

OUTPUT-FIELDS = *TIME(...)
Specifies the start time of the PERCON conversion step as an 8-digit string in the form hh:mm:ss.

OUTPUT-POSITION = <integer 1..32761>
Specifies the position where the output field begins, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 8..32767>
Specifies the length of the output field.

OUTPUT-LENGTH = *STD


OUTPUT-FORMAT

OUTPUT-LENGTH

CHARACTER

8 characters

HEXADECIMAL

16 characters

BINARY

64 characters


OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY
Specifies the format of the output field (see "Formats "ff).

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

OUTPUT-POSITION = <integer 1..32768>

Specifies the position where the output field begins, relative to the beginning of the output record.

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

Specifies the length of the output field.

OUTPUT-LENGTH = *STD

OUTPUT-FORMAT

OUTPUT-LENGTH

CHARACTER

Length of the c-string

HEXADECIMAL

2 * Length of the c-string

BINARY

8 * Length of the c-string

OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY
Specifies the format of the output field (see "Formats "ff).

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

OUTPUT-POSITION = <integer 1..32768>

Specifies the position where the output field begins, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Specifies the length of the output field.

OUTPUT-LENGTH = *STD

OUTPUT-FORMAT

OUTPUT-LENGTH

CHARACTER

0,5 * Length of the x-string

HEXADECIMAL

Length of the x-string

BINARY

4 * Length of the x-string

OUTPUT-FORMAT = *CHARACTER / *HEXADECIMAL / *BINARY
Specifies the format of the output field (see "Formats "ff).

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

OUTPUT-POSITION = <integer 1..32768>

Specifies the position where the output field begins, relative to the beginning of the output record.

OUTPUT-LENGTH = *STD / <integer 1..32767>
Specifies the length of the output field.

OUTPUT-LENGTH = *STD
The default value is the minimum length required to represent the number to be output in the specified format; the mask length with <c-string>.

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

Specifies the format of the output field (see "Formats "ff).

CODE-TRANSLATION =
Mandatory if the structure operand OUTPUT-FIELDS = *FIELD was used in the OUTPUT-FORMAT = *TRANSLATION operand.

CODE-TRANSLATION = *NONE
No code conversion takes places, even if OUTPUT-FORMAT = *TRANSLATION has been specified.

CODE-TRANSLATION = *TABLE(...)
Specifies the file containing the code conversion table.

FILE-NAME = <filename 1..54>
This file contains 16 records, each with the hexadecimal encryption of 16 characters. The corresponding characters of the input field are converted into these characters and transferred to the output field. Assignment is via the hexadecimal value contained in the code conversion table. The file can be either a SAM or ISAM file. In the case of ISAM files, the ISAM record key must be at the beginning of the record and must have a length of 8 bytes (position 1 for fixed-length records, position 5 for variable-length records).

CODE-TRANSLATION = *REPLACE-CHARACTER(...)
Replaces character by character.

INPUT-CHARACTER = <c-string 1..1> / <x-string 1..2>
Character to be recoded.

OUTPUT-CHARACTER = <c-string 1..1> / <x-string 1..2>
Replacement character for the character to be recoded.

MIN-RECORD-LENGTH =
Defines the minimum length for the output record.
With output files with variable record format, PERCON additionally evaluates the record length field.

MIN-RECORD-LENGTH = *NONE
No minimum output record length is defined.

MIN-RECORD-LENGTH = <integer 1..32768>
A fixed minimum output record length is defined.

MIN-RECORD-LENGTH = *BY-INPUT-RECORD(...)
The record length of the current input record is used, without record length field if the input records have a variable record format.

ADDITION = <integer -32767..32767>

Specifies the number of characters by which the current input record length is to be modified.

Notes

  • If the specified minimum length exceeds the permissible maximum length of an output record, the maximum value is taken as the minimum length. No minimum length is observed for a particular record in the event of a negative or zero result.

  • The MIN-RECORD-LENGTH operand has no meaning for fixed-length output records. It will be evaluated during the syntax check but ignored during processing.

  • When editing records with the SET-PAGE-LAYOUT statement or during default editing, the specification of a minimum length causes any blanks preceding the end of the record to be retained. This means that records will not be truncated during editing in this case.