Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

SIGN-Klausel

&pagelevel(4)&pagelevel

Funktion

Die SIGN-Klausel beschreibt die Position und die Darstellungsart des Rechenvorzeichens für numerische Datenfelder.

Format


[SIGN IS] { LEADING | TRAILING } [SEPARATE CHARACTER]


Syntaxregeln

  1. Die SIGN-Klausel darf nur für eine numerische Datenerklärung, die in der PICTURE-Klausel mit dem Symbol „S“ beschrieben ist, oder für eine Datengruppe, die mindestens eine solche Datenerklärung enthält, angegeben werden.

  2. Die Datenerklärungen müssen explizit oder implizit mit USAGE IS DISPLAY beschrieben sein.

  3. Wenn eine SIGN-Klausel für ein Gruppenfeld oder ein numerisches Datenelement angegeben ist, das einem Gruppenfeld untergeordnet ist, für das ebenfalls eine SIGN-Klausel vorliegt, dann hat die SIGN-Klausel des untergeordneten Feldes den Vorrang.

  4. Ist die CODE-SET-Klausel angegeben, muss jede mit Vorzeichen versehene Datenerklärung mit der SIGN IS SEPARATE-Klausel beschrieben sein.

  5. Die SIGN-Klausel gibt die Position und Darstellungsart des Rechenvorzeichens an. Wird sie für eine Datengruppe angegeben, gilt sie für jede numerische Datenerklärung innerhalb dieser Gruppe. Sie wird nur für numerische Datenerklärungen verwendet, die in der Maskenzeichenfolge das Symbol „S“ enthalten. Das „S“ zeigt lediglich das Vorhandensein, nicht jedoch die Darstellungsart des Rechenvorzeichens an.

  6. Eine numerische Datenerklärung, deren Maskenzeichenfolge ein „S“ enthält, für die aber die SIGN-Klausel nicht angegeben wurde, hat ein Rechenvorzeichen. Die Darstellung und Position werden durch das Symbol „S“ jedoch nicht spezifiziert (Darstellung des Rechenvorzeichens siehe „USAGE-Klausel").

Allgemeine Regeln

  1. Ist die SEPARATE CHARACTER-Angabe nicht vorhanden, gelten folgende Regeln:

    1. Das Symbol „S“ in der Maskenzeichenfolge wird nicht zur Größe des Datenfeldes gerechnet.

    2. Es wird angenommen, dass das Rechenvorzeichen im Platz der führenden (LEADING) bzw. der letzten (TRAILING) Ziffer des numerischen Datenelementes enthalten ist. Dabei entspricht die TRAILING-Angabe der Standardannahme dieses Compilers.

    3. Für den Compiler ist das Rechenvorzeichen für positiv das Halbbyte C, für negativ das Halbbyte D (siehe nachfolgendes Beispiel).

  2. Ist die SEPARATE CHARACTER-Angabe vorhanden, gelten folgende Regeln:

    1. Das Symbol „S“ in einer Maskenzeichenfolge wird zur Größe des Datenfeldes gerechnet.

    2. Es wird angenommen, dass das Rechenvorzeichen im Platz der führenden (LEADING) bzw. der letzten (TRAILING) Ziffer des numerischen Datenelementes enthalten ist. Diese Zeichenposition ist keine Ziffernposition.

    3. Die Rechenvorzeichen für positiv und negativ sind standardmäßig „+“ bzw. „-“.

  3. Jede numerische Datenerklärung, die in der Maskenzeichenfolge das Symbol „S“ enthält, ist eine mit Vorzeichen versehene Datenerklärung. Wird eine SIGN-Klausel für eine solche Erklärung angegeben und ist eine Konvertierung für arithmetische Operationen oder für Vergleiche notwendig, erfolgt diese Konvertierung automatisch.

Beispiel 7-27

IDENTIFICATION DIVISION.
PROGRAM-ID. VZ.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
    TERMINAL IS T.
DATA DIVISION.
WORKING-STORAGE SECTION.
01  FELD1          PIC S999   SIGN IS LEADING SEPARATE.
01  GRUPPE1        USAGE IS DISPLAY.
    02  FELD2      PIC S9(5)  SIGN IS TRAILING SEPARATE.
    02  FELD3      PIC X(15).
    02  FELD4      PIC S99    SIGN IS LEADING.
01  FELD5          PIC S9(9)  SIGN IS TRAILING.
PROCEDURE DIVISION.
MAIN SECTION.
P1.
    MOVE ZEROES TO FELD1 FELD2 FELD3 FELD4 FELD5.
    MOVE 3 TO FELD4.
    MOVE -2 TO FELD5.
    MOVE FELD4 TO FELD2.
    MOVE FELD2 TO FELD3.
    MOVE FELD5 TO FELD4.
    DISPLAY "FELD1 = " FELD1 UPON T.
    DISPLAY "FELD2 = " FELD2 UPON T.
    DISPLAY "FELD3 = " FELD3 UPON T.
    DISPLAY "FELD4 = " FELD4 UPON T.
    DISPLAY "FELD5 = " FELD5 UPON T.
    STOP RUN.


 

Inhalt aller Felder nach der ersten MOVE-Anweisung:

FELD1

dezimal

 +

 0

 0

 0

hexadezimal

4E

F0

F0

F0

FELD2

dezimal

 0

 0

 0

 0

 0

 +


hexadezimal

F0

F0

F0

F0

F0

4E

FELD3

dezimal

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0


hexadezimal

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

F0

FELD4

dezimal

 0+

 0

hexadezimal

C0

F0

FELD5

dezimal

 0

 0

 0

 0

 0

 0

 0

 0

0+

hexadezimal

F0

F0

F0

F0

F0

F0

F0

F0

C0


nach der zweiten MOVE-Anweisung:

FELD4

dezimal

 +

 3


hexadezimal

C0

F3


nach der dritten MOVE-Anweisung:

FELD5

dezimal

 0

 0

 0

 0

 0

 0

 0

 0

 2-

hexadezimal

F0

F0

F0

F0

F0

F0

F0

F0

D2


nach der vierten MOVE-Anweisung:

FELD2

dezimal

 0

 0

 0

 0

 3

 +

hexadezimal

F0

F0

F0

F0

F3

4E


nach der fünften MOVE-Anweisung:

FELD3

dezimal

 0

 0

 0

 0

 3

                    

hexadezimal

F0

F0

F0

F0

F3

40

40

40

40

40

40

40

40

40

40


nach der sechsten MOVE-Anweisung:

FELD4

dezimal

 0-

 2


hexadezimal

D0

F2