Syntaxregeln
Ist die Literal-Angabe in der ALPHABET-Klausel angegeben, darf ein gegebenes Zeichen für literal-1, literal-2 usw., auf das durch alphabetname in der PROGRAM COLLATING SEQUENCE-Klausel (siehe „OBJECT-COMPUTER-Paragraf“, "OBJECT-COMPUTER-Paragraf ") oder in der COLLATING SEQUENCE-Angabe der SORT- oder MERGE-Anweisung (siehe Kapitel „PROCEDURE DIVISION") Bezug genommen wird, nur einmal verwendet werden (siehe Beispiele 6-10 und 6-11).
Die Wörter THROUGH und THRU sind gleichbedeutend.
Die Angaben NATIVE und EBCDIC bedeuten im BS2000 dasselbe.
Allgemeine Regeln
Durch die ALPHABET-Klausel kann ein Name mit einem bestimmten Zeichensatz und/oder einer alphanumerischen Sortierfolge verknüpft werden. Ist alphabetname in der PROGRAM COLLATING SEQUENCE-Klausel (siehe „OBJECT-COMPUTER-Paragraf“, "OBJECT-COMPUTER-Paragraf ") oder in der COLLATING SEQUENCE-Angabe einer SORT- bzw. MERGE-Anweisung (siehe Kapitel „PROCEDURE DIVISION") enthalten, wird damit eine Sortierfolge festgelegt. Wird auf alphabetname-1 in der
SYMBOLIC CHARACTERS-Klausel oder in der CODE-SET-Klausel einer Dateierklärung (für sequenziell organisierte Dateien) Bezug genommen, wird damit der Zeichensatz festgelegt.Ist STANDARD-1 angegeben, dann ist der ausgewählte Zeichensatz oder die Sortierfolge der/die im American National Standard X3.4-1968, Code for Information Interchange (ASCII), festgelegte.
Ist STANDARD-2 angegeben, dann ist der bezeichnete Zeichensatz die „International Reference Version of the ISO 7-Bit Code“, definiert im International Standard 646 „7-Bit Coded Character Set for Information Processing Interchange“. Jedes Zeichen des Standard-Zeichensatzes ist verknüpft mit dem entsprechenden Zeichen des EBCDIC-Zeichensatzes.
Ist NATIVE oder EBCDIC angegeben, wird der Zeichensatz oder die Sortierfolge der Datenverarbeitungsanlage benutzt (EBCDIC).
Sind Literale der ALPHABET-Klausel angegeben, darf alphabetname nicht in der CODE-SET-Klausel angegeben sein (siehe Abschnitt „CODE-SET-Klausel").
Handelt es sich um ein numerisches Literal, bezeichnet sein Wert die Ordnungszahl eines Zeichens (beginnend bei 1) innerhalb des EBCDIC-Zeichensatzes. Der Wert darf die Anzahl der Zeichen des EBCDIC-Zeichensatzes (256) nicht überschreiten.
Bei einem alphanumerischen Literal bezeichnet das Literal das angegebene Zeichen innerhalb des EBCDIC-Zeichensatzes. Enthält das alphanumerische Literal mehrere Zeichen, werden alle Zeichen im Literal in die beschriebene Sortierfolge in der angegebenen Reihenfolge eingefügt (siehe Beispiel 6-2).
Die Reihenfolge, in der die Literale in der ALPHABET-Klausel angegeben sind, beschreibt in aufsteigender Folge die Ordnungszahl der Zeichen innerhalb der spezifizierten Sortierfolge (siehe Beispiel 6-3).
Alle Zeichen innerhalb der EBCDIC-Sortierfolge, die nicht explizit mit der Literal-Angabe spezifiziert sind, haben in der Sortierfolge eine höhere Position als jedes einzelne der explizit beschriebenen Zeichen. Die relative Reihenfolge dieser nicht spezifizierten Zeichen unterscheidet sich nicht von der EBCDIC-Sortierfolge.
Ist THROUGH/THRU angegeben, nehmen die Zeichen im EBCDIC-Zeichensatz, beginnend mit dem in literal-1 und endend mit dem in literal-2 angegebenen Zeichen, aufeinanderfolgend aufsteigende Positionen in der spezifizierten Sortierfolge ein. Der durch die THROUGH/THRU-Angabe spezifizierte Wertebereich kann Zeichen des EBCDIC-Zeichensatzes entweder in aufsteigender oder in absteigender Reihenfolge enthalten (siehe Beispiel 6-4).
Ist ALSO angegeben, werden die Zeichen des EBCDIC-Zeichensatzes, angegeben durch literal-1 und literal-3 der selben Position in der spezifizierten Sortierfolge oder in dem Zeichensatz zugewiesen (siehe Beispiel 6-5).
Wird in einer SYMBOLIC CHARACTERS-Klausel auf alphabetname-1 Bezug genommen, wird nur literal-1 verwendet, um das Zeichen des EBCDIC-Zeichensatzes darzustellen.
Das Zeichen, das die höchste Position in der Sortierfolge des Programms hat, ist der figurativen Konstante HIGH-VALUE zugeordnet. Haben mehrere Zeichen die höchste Position in der Sortierfolge des Programms, ist das letzte angegebene Zeichen der figurativen Konstante HIGH-VALUE zugeordnet (siehe Beispiele 6-6 und 6-7).
Das Zeichen, das die niedrigste Position in der Sortierfolge des Programms hat, ist der figurativen Konstante LOW-VALUE zugeordnet. Haben mehrere Zeichen die niedrigste Position in der Sortierfolge des Programms, ist das erste angegebene Zeichen der figurativen Konstante LOW-VALUE zugeordnet (siehe Beispiele 6-8 und 6-9).
Beispiel 6-2
ALPHABET ALPHATAB IS "AJKCDF".
1. Zeichen ist A
2. Zeichen ist J
.
.
6. Zeichen ist F
Beispiel 6-3
ALPHABET ALPHATAB IS "A" "C" "D" "Z".
1. Zeichen ist A
2. Zeichen ist C
3. Zeichen ist D
4. Zeichen ist Z
Beispiel 6-4
ALPHABET ALPHATAB IS "A" THRU "I".
1. Zeichen A
2. Zeichen B
3. Zeichen C
.
.
8. Zeichen H
9. Zeichen I
Beispiel 6-5
ALPHABET ALPHATAB IS "A" ALSO "B" ALSO "C" ALSO "D".
Der niedrigsten Position in der Sortierfolge werden die Zeichen A, B, C und D zugeordnet.
Beispiel 6-6
ALPHABET ALPHATAB IS 193 THRU 1, 255 THRU 194.
Die höchste Position in der Sortierfolge hat das Zeichen, das an der 194. Stelle des EBCDIC-Zeichensatzes steht; dies ist das Zeichen A.
Der figurativen Konstante HIGH-VALUE wird A zugeordnet.
Beispiel 6-7
ALPHABET ALPHATAB IS 193 THRU 1, 255 THRU 197, "A" ALSO "B" ALSO "C".
Den Positionen 1 bis 193 der Sortierfolge werden die Zeichen zugeordnet, die an den Positionen 193 bis 1 des EBCDIC-Zeichensatzes stehen.
Den Positionen 194 bis 253 der Sortierfolge werden die Zeichen zugeordnet, die an den Positionen 255 bis 197 des EBCDIC-Zeichensatzes stehen.
Der Position 254 werden die Zeichen A, B, C zugeordnet, womit alle Zeichen des EBCDIC-Zeichensatzes einer Position der Sortierfolge zugeordnet sind. Der höchsten Position (254) sind die Zeichen A, B, C zugeordnet, wobei C das zuletzt angegebene Zeichen ist; C wird damit der figurativen Konstante HIGH-VALUE zugeordnet.
Beispiel 6-8
ALPHABET ALPHATAB IS "0" "1" "2".
Das niedrigste Zeichen in der Sortierfolge ist 0, somit wird 0 der figurativen Konstante LOW-VALUE zugeordnet.
Beispiel 6-9
ALPHABET ALPHATAB IS "A" ALSO "B" ALSO "C".
Der niedrigsten Position in der Sortierfolge sind die Zeichen A, B, C zugeordnet; das zuerst angegebene Zeichen A wird der figurativen Konstante LOW-VALUE zugeordnet.
Beispiel 6-10
für PROGRAM COLLATING SEQUENCE- und ALPHABET-Klausel
IDENTIFICATION DIVISION. PROGRAM-ID. ABC. ENVIRONMENT DIVISION. CONFIGURATION SECTION. OBJECT-COMPUTER. PROGRAM COLLATING SEQUENCE IS ALPHATAB. SPECIAL-NAMES. TERMINAL IS T ALPHABET ALPHATAB IS "X" "Y" "Z". DATA DIVISION. WORKING-STORAGE SECTION. 77 ITEM-1 PIC X(3) VALUE "ABC". 77 ITEM-2 PIC X(3) VALUE "XYZ". PROCEDURE DIVISION. MAIN. IF ITEM-1 > ITEM-2 THEN DISPLAY "Richtig sortiert" UPON T END-IF STOP RUN.
Mit der Definition des Alphabetnamens ALPHATAB im SPECIAL-NAMES-Paragrafen wurde dem Zeichen
X die erste, Y die zweite, Z die dritte Position
der Sortierfolge zugewiesen.
Allen anderen Zeichen des EBCDIC-Zeichensatzes wird implizit eine Position der Sortierfolge zugewiesen, da ihre Positionen in der Sortierfolge höher sind als die der angegebenen Zeichen X, Y, Z und ihre Anordnung in der Sortierfolge unverändert aus dem EBCDIC-Zeichensatz übernommen wird.
1. bis 231. Position des EBCDIC-Zeichensatzes entspricht der 4. bis 234. Position der Sortierfolge.
235. bis 256. Position des EBCDIC-Zeichensatzes entspricht der 235. bis 256. Position der Sortierfolge.
A hat also Position 197, B Position 198, C Position 199.
Damit ist der Vergleich ITEM-1 > ITEM-2 wahr.
Beispiel 6-11
für PROGRAM COLLATING SEQUENCE- und ALPHABET-Klausel
IDENTIFICATION DIVISION. PROGRAM-ID. ALPH. ENVIRONMENT DIVISION. CONFIGURATION SECTION. OBJECT-COMPUTER. PROGRAM COLLATING SEQUENCE IS ALPHA. SPECIAL-NAMES. TERMINAL IS T ALPHABET ALPHA 1 THRU 247, 251 THRU 256 "7" ALSO "8" ALSO "9". DATA DIVISION. WORKING-STORAGE SECTION. 77 ITEM-1 PIC X(3) VALUE HIGH-VALUE. 77 ITEM-2 PIC X(3) VALUE "789". PROCEDURE DIVISION. P1 SECTION. VERGLEICH. IF ITEM-1 = ITEM-2 THEN DISPLAY "1. Vergleich OK" UPON T ELSE DISPLAY "1. Vergleich nicht OK" UPON T END-IF IF ITEM-2 = HIGH-VALUE THEN DISPLAY "2. Vergleich OK" UPON T ELSE DISPLAY "2. Vergleich nicht OK" UPON T END-IF. ENDE. STOP RUN.
Zeichen kleiner 7 bleiben wie in der Sortierfolge der Datenverarbeitungsanlage erhalten, Zeichen größer 9 schließen sich unmittelbar an, werden damit kleiner als 7.Die Zeichen 7, 8, 9 werden an die höchste Stelle gesetzt, wobei 9 als zuletzt angegebenes Zeichen „HIGH-VALUE“ entspricht.
Ergebnis:
1. Vergleich OK
2. Vergleich OK