Kapitelübersicht
4 Sprache
4.1 Rahmen fuer Ableitungsregel
4.2 Operanden ( in logischer Reihenfolge )
4.3 Operanden ( in alphabetischer Reihenfolge )
4.4 Mengenfunktionen
4.5 Funktionen
4.6 Erlaeuterungen
4 Sprache
Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
4.1 Rahmen fuer Ableitungsregel
Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
ASS;
ZIELAG = ag;
DATABASE = database;
ABLEITUNG = regel;
MONATE_MAX = monat;
BEZUGSMONAT = bezugsmonat;
OPTIONEN = option, ..., ..., option;
ORDNUNGSBEGRIFF = ( feldname_einfach, ..., ...,
feldname_einfach );
SORT_ORDNUNGSBEGRIFF = ( feldname_einfach );
SELECT ( selectangabe ) WHERE ( selectbedingung )
,feldzuweisung
,...
,...
,...
,feldzuweisung
;
JOIN ( joinangabe ) WHERE ( joinbedingung )
,JOINKRITERIUM = joinkriterium
,feldzuweisung
,...
,...
,...
,feldzuweisung
;
SELECT ( AG = ZIELAG_NEU_AKT ) WHERE ( selectbedingung )
,feldzuweisung
,...
,...
,...
,feldzuweisung
;
END;
Die Join-Steps und Select-Steps ausser dem ersten sind optional
und duerfen in beliebiger Reihenfolge angegeben werden. Die
Feldzuweisungen bei Folge-Select-Steps duerfen fehlen.
4.2 Operanden ( in logischer Reihenfolge )
Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
ag: positive ganzzahlige Konstante 1, ..., 1999
oder
Char-Konstante der Laenge 1, ..., 20
database: fuer DB2-Tabellen Database
regel: positive ganzzahlige Konstante 1, ..., 1999
oder
Char-Konstante der Laenge 1, ..., 20
bezugsmonat: Zeitangabe in der Form 'JHJJMM'
monat: positive ganzzahlige Konstante 12, ..., 16
option: NUPDAT
oder
NUR_SYNTAX
oder
NUR_SEMANTIK
oder
BESTAND
oder
NO_DELTA
oder
NULLAUSGABE
oder
DISPLAY_ZEIT
oder
PROTO_ZEIT
oder
LINE_SEQUENTIAL (nur PC)
feldname_einfach:
Spaltenbezeichner, der syntaktisch ein
PLI-Bezeichner sein muss
selectangabe: AG = ag
oder
AG = ag, DATABASE = database
oder
AG = ag, LESART = DIREKT
oder
AG = ag, DATABASE = database,
LESART = DIREKT
joinangabe: AG = ag
oder
AG = ag, DATABASE = database
oder
AG = ag, LESART = DIREKT
oder
AG = ag, NOSORT = nosort
oder
AG = ag, DATABASE = database,
LESART = DIREKT
oder
AG = ag, DATABASE = database,
NOSORT = nosort
oder
AG = ag, NOSORT = nosort,
LESART = DIREKT
oder
AG = ag, DATABASE = database,
LESART = DIREKT, NOSORT = nosort
nosort: ALL
oder
ZIEL
oder
JOIN
feldzuweisung: zielfeld = feldabbildung_mit_zeitangabe
oder
zielfeld, ..., ..., zielfeld =
SATZFUNKTION ( opcode, operand, ... ),
LEERE_MENGE ( opcode, operand, ... )
zielfeld: feldname_einfach
oder
feldname_einfach ( arbeitsfeldangabe )
arbeitsfeldangabe:
ASSZEIT bzw. ASSZEIT_TT
oder
FORMAT = format, LAENGE = laenge1,
KOMMASTELLEN = kommastellen
format: CHAR
oder
BIN
oder
PACKED
laenge1: positive ganzzahlige Konstante
bei arbeitsfeldangabe abhaengig von FORMAT:
bei CHAR: 1 ... 50
bei BIN: 1 ... 4
bei PACKED: 1 ... 8
kommastellen: positive ganzzahlige Konstante 1, ..., 4
( nur bei FORMAT = PACKED erlaubt! )
feldabbildung_mit_zeitangabe:
Monatsarbeitsgebiet:
feldabbildung,
ASSZEIT = zuweisung
LEERE_MENGE = feldabbildung,
LEERE_MENGE_ASSZEIT= zuweisung
oder
feldabbildung,
ASSZEIT = zuweisung
LEERE_MENGE_ASSZEIT= zuweisung
oder
feldabbildung,
LEERE_MENGE = feldabbildung,
Tagesarbeitsgebiet:
feldabbildung,
ASSZEIT_TT = zuweisung
LEERE_MENGE = feldabbildung,
LEERE_MENGE_ASSZEIT_TT= zuweisung
oder
feldabbildung,
ASSZEIT_TT = zuweisung
LEERE_MENGE_ASSZEIT_TT= zuweisung
oder
feldabbildung,
LEERE_MENGE = feldabbildung,
feldabbildung: IF bedingung THEN zuweisung
ELSEIF bedingung THEN zuweisung
...
...
...
ELSEIF bedingung THEN zuweisung
OTHER zuweisung
ENDIF
oder
IF bedingung THEN zuweisung
...
...
...
IF bedingung THEN zuweisung
OTHER zuweisung
ENDIF
oder
zuweisung
oder
SATZFUNKTION ( opcode, operand, ... )
bedingung: funktionsaufruf
oder
elementarbedingung
oder
logische verknuepfung von elementar-
bedingungen durch ( , ), &, !
oder
GRUPPENWECHSEL (feldname_einfach,...,feldnane_einfach)
funktionsaufruf:
FUNKTION ( opcode, operand , ... )
oder
MENGENFUNKTION ( opcode, operand , ... )
elementarbedingung:
operand operator operand
oder
operand
operand: feldname1
oder
NUM ( feldname1 )
oder
CHAR ( feldname2 )
oder
SUBSTR ( CHAR ( feldname2 ), offset, laenge2 )
oder
KONSTANTE
oder
'relative_zeitangabe' (als String)
feldname1: feldname2
oder
SUBSTR ( feldname_einfach, offset, laenge2 )
oder
SUBSTR ( feldname2, offset, laenge2 )
feldname2: feldname_einfach
oder
feldname_einfach ( ag_angabe )
oder falls ASS-Wert
feldname_einfach ( ag_angabe, asszeit-angabe )
ag_angabe: AG = ZIEL
oder
AG = SELECT ( nur innerhalb SELECT ! )
oder
AG = JOIN ( nur innerhalb JOIN ! )
asszeit-angabe:
Monatsarbeitsgebiet:
ASSZEIT = 'jhjjmm'
oder
ASSZEIT = relative_zeitangabe
Tagesarbeitsgebiet:
ASSZEIT_TT = 'jhjjmmtt'
relative_zeitangabe:
BMnn mit 0 <= nn <= 99
oder
BPnn mit 0 <= nn <= 99
oder
nnMm mit 01 <= nn <= 16, 0 <= m <= 9
oder
nnPm mit 01 <= nn <= 16, 0 <= m <= 9
offset: positive ganzzahlige Konstante 1 ... 500
laenge2: positive ganzzahlige Konstante
bei SUBSTR: 1 ... 500
operator: logische Vergleichsoperatoren: =, ^=, <, <=, >, >=
zuweisung: FORMEL ( im ASS-Sinne, nur fuer
numerische Felder oder Zeitangaben )
oder
operand
oder
operand !! operand
oder
funktionsaufruf
oder
zeitangabe
oder
SATZNUMMER
oder
SATZ_LOESCHEN ( nur nach THEN in einer
IF-Struktur )
zeitangabe: LETZTE_VERSORGUNG
oder
LAUFENDES_JAHR
oder
VORJAHR
oder
LAUFENDER_MONAT
oder
VORMONAT
selectbedingung:
filterangabe ( MENGENFUNKTION
nicht erlaubt! )
joinbedingung: bedingung ( MENGENFUNKTION
nicht erlaubt! )
joinkriterium: ( ZIELFELDER = zielfelder,
JOINFELDER = joinfelder,
SORT sortangabe,
DUP = duplikatsregel
WHERE ( filterangabe ),
LEERE_MENGE = LOESCHEN )
zielfelder: ( feldname3 !! feldname3 !! ... !! feldname3 )
feldname3: feldname_einfach
oder
SUBSTR ( feldname_einfach, offset, laenge2 )
joinfelder: ( feldname3 !! feldname3 !! ... !! feldname3 )
sortangabe: ( feldname3 ASC oder DESC,
...
...
...
feldname3 ASC oder DESC )
duplikatsregel:
FIRST
oder
LAST
oder
PRIOR
oder
ALL
filterangabe: filterbedingung, ..., filterbedingung
( maximal 5 ! )
filterbedingung:
bedingung
oder
bedingung,
SORT ( feldname3 ASC oder DESC,
...
...
feldname3 ASC oder DESC ),
LAST ( feldname3, ..., feldname3 )
oder
SORT ( feldname3 ASC oder DESC,
...
...
feldname3 ASC oder DESC ),
LAST ( feldname3, ..., feldname3 )
( MENGENFUNKTION bei bedingung nicht erlaubt! )
4.3 Operanden ( in alphabetischer Reihenfolge )
Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
ag: positive ganzzahlige Konstante 1, ..., 1999
oder
Char-Konstante der Laenge 1, ..., 20
ag_angabe: AG = ZIEL
oder
AG = SELECT ( nur innerhalb SELECT ! )
oder
AG = JOIN ( nur innerhalb JOIN ! )
arbeitsfeldangabe:
ASSZEIT bzw. ASSZEIT_TT
oder
FORMAT = format, LAENGE = laenge1,
KOMMASTELLEN = kommastellen
ASSZEIT = relative_zeitangabe
asszeit-angabe:
Monatsarbeitsgebiet: ASSZEIT = 'JHJJMM'
Tagesarbeitsgebiet: ASSZEIT_TT = 'JHJJMMTT'
oder
bedingung: funktionsaufruf
oder
elementarbedingung
oder
logische verknuepfung von elementar-
bedingungen durch ( , ), &, !
oder
GRUPPENWECHSEL (feldname_einfach,...,feldnane_einfach)
bezugsmonat: Zeitangabe in der Form 'JHJJMM'
BPnn mit 0 <= nn <= 99
database: fuer DB2-Tabellen Database
duplikatsregel:
FIRST
oder
LAST
oder
PRIOR
oder
ALL
elementarbedingung:
operand operator operand
oder
operand
feldabbildung: IF bedingung THEN zuweisung
ELSEIF bedingung THEN zuweisung
...
...
...
ELSEIF bedingung THEN zuweisung
OTHER zuweisung
ENDIF
oder
IF bedingung THEN zuweisung
...
...
...
IF bedingung THEN zuweisung
OTHER zuweisung
ENDIF
oder
zuweisung
oder
SATZFUNKTION ( opcode, operand, ... )
feldabbildung_mit_zeitangabe:
Monatsarbeitsgebiet:
feldabbildung,
ASSZEIT = zuweisung
LEERE_MENGE = feldabbildung,
LEERE_MENGE_ASSZEIT = zuweisung
bzw. Tagesarbeitsgebiet:
feldabbildung,
ASSZEIT_TT = zuweisung
LEERE_MENGE = feldabbildung,
LEERE_MENGE_ASSZEIT_TT = zuweisung
oder
Monatsarbeitsgebiet:
feldabbildung,
ASSZEIT = zuweisung
LEERE_MENGE_ASSZEIT = zuweisung
bzw. Tagesarbeitsgebiet:
feldabbildung,
ASSZEIT_TT = zuweisung
LEERE_MENGE_ASSZEIT_TT = zuweisung
oder
feldabbildung,
LEERE_MENGE = feldabbildung,
feldname_einfach:
Spaltenbezeichner, der syntaktisch
ein PLI-Bezeichner sein muss
feldname1: feldname2
oder
SUBSTR ( feldname_einfach, offset, laenge2 )
oder
SUBSTR ( feldname2, offset, laenge2 )
feldname2: feldname_einfach
oder
feldname_einfach ( ag_angabe )
oder falls ASS-Wert
feldname_einfach ( ag_angabe, asszeit-angabe )
feldname3: feldname_einfach
oder
SUBSTR ( feldname_einfach, offset, laenge2 )
feldzuweisung: zielfeld = feldabbildung_mit_zeitangabe
oder
zielfeld, ..., ..., zielfeld =
SATZFUNKTION ( opcode, operand, ... ),
LEERE_MENGE ( opcode, operand, ... )
filterangabe: filterbedingung, ..., filterbedingung
( maximal 5 ! )
filterbedingung:
bedingung
oder
bedingung,
SORT ( feldname3 ASC oder DESC,
...
...
feldname3 ASC oder DESC ),
LAST ( feldname3, ..., feldname3 )
oder
SORT ( feldname3 ASC oder DESC,
...
...
feldname3 ASC oder DESC ),
LAST ( feldname3, ..., feldname3 )
( MENGENFUNKTION bei bedingung nicht erlaubt! )
format: CHAR
oder
BIN
oder
PACKED
funktionsaufruf:
FUNKTION ( opcode, operand , ... )
oder
MENGENFUNKTION ( opcode, operand , ... )
joinangabe: AG = ag
oder
AG = ag, DATABASE = database
oder
AG = ag, LESART = DIREKT
oder
AG = ag, NOSORT = nosort
oder
AG = ag, DATABASE = database,
LESART = DIREKT
oder
AG = ag, DATABASE = database,
NOSORT = nosort
oder
AG = ag, NOSORT = nosort,
LESART = DIREKT
oder
AG = ag, DATABASE = database,
LESART = DIREKT, NOSORT = nosort
joinbedingung: bedingung ( MENGENFUNKTION
nicht erlaubt! )
joinfelder: ( feldname3 !! feldname3 !! ... !! feldname3 )
joinkriterium: ( ZIELFELDER = zielfelder,
JOINFELDER = joinfelder,
SORT sortangabe,
DUP = duplikatsregel
WHERE ( filterangabe ),
LEERE_MENGE = LOESCHEN )
kommastellen: positive ganzzahlige Konstante 1, ..., 4
( nur bei FORMAT = PACKED erlaubt! )
laenge1: positive ganzzahlige Konstante
bei arbeitsfeldangabe abhaengig von FORMAT:
bei CHAR: 1 ... 50
bei BIN: 1 ... 4
bei PACKED: 1 ... 8
laenge2: positive ganzzahlige Konstante
bei SUBSTR: 1, ..., 500
monat: positive ganzzahlige Konstante 12, ..., 16
nnMm mit 01 <= nn <= 16, 0 <= m <= 9
oder
nnPm mit 01 <= nn <= 16, 0 <= m <= 9
oder
funktionsaufruf
oder
zeitangabe
oder
SATZ_LOESCHEN ( nur nach THEN in einer
IF-Struktur )
oder
operand !! operand
nosort: ALL
oder
ZIEL
oder
JOIN
offset: positive ganzzahlige Konstante 1, ..., 500
operand: feldname1
oder
NUM ( feldname1 )
oder
CHAR ( feldname2 )
oder
SUBSTR ( CHAR ( feldname2 ), offset, laenge2 )
oder
KONSTANTE
oder
'relative_zeitangabe' (als String)
operator: logische Vergleichsoperatoren: =, ^=, <, <=, >, >
option: NUPDAT
oder
NUR_SYNTAX
oder
NUR_SEMANTIK
oder
BESTAND
oder
NO_DELTA
oder
NULLAUSGABE
oder
DISPLAY_ZEIT
oder
PROTO_ZEIT
oder
LINE_SEQUENTIAL (nur PC)
regel: positive ganzzahlige Konstante 1, ..., 1999
oder
Char-Konstante der Laenge 1, ..., 20
relative_zeitangabe:
BMnn mit 0 <= nn <= 99
selectangabe: AG = ag
oder
AG = ag, DATABASE = database
oder
AG = ag, LESART = DIREKT
oder
AG = ag, DATABASE = database,
LESART = DIREKT
selectbedingung:
filterangabe ( MENGENFUNKTION
nicht erlaubt! )
sortangabe: ( feldname3 ASC oder DESC,
...
...
...
feldname3 ASC oder DESC )
zeitangabe: LETZTE_VERSORGUNG
oder
LAUFENDES_JAHR
oder
VORJAHR
oder
LAUFENDER_MONAT
oder
VORMONAT
zielfeld: feldname_einfach
oder
feldname_einfach ( arbeitsfeldangabe )
zielfelder: ( feldname3 !! feldname3 !! ... !! feldname3 )
zuweisung: FORMEL ( im ASS-Sinne, nur fuer
numerische Felder
oder Zeitangaben )
4.4 Mengenfunktionen
Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
Folgende Mengenfunktionen stehen standardmaessig zur
Verfuegung:
MENGENFUNKTION ( SUMME, feldname ) Summe der Eintraege
unter feldname
( nur fuer numerische Felder )
MENGENFUNKTION ( MAX, feldname ) Maximum der Eintraege
unter feldname
MENGENFUNKTION ( MIN, feldname ) Minimum der Eintraege
unter feldname
MENGENFUNKTION ( ANZAHL ) Anzahl Saetze der
Arbeitsdatei "work3"
4.5 Funktionen
Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
Folgende Funktion steht standardmaessig zur Verfuegung:
FUNKTION ( ANZ_TAGE , feldname1, feldname2 )
Wenn feldname1 und feldname2 im Format DATE vorliegen, wird
die Anzahl der Tage zwischen den Datumsangaben ermittelt.
Das Resultat wird im Format BINAER in der Laenge 4
bereitgestellt.
4.6 Erlaeuterungen
Kapitelübersicht
Inhaltsverzeichnis
Stichwortverzeichnis
--> ZIELAG = ag und ABLEITUNG = regel muessen immer angegeben werden.
Dabei ist ag eine gueltige Arbeitsgebietsnummer oder -bezeichnung.
Hingegen koennen die Angaben MONATE_MAX = ..., OPTIONEN = ...,
BEZUGSMONAT = ..., ORDNUNGSBEGRIFF = ... und DATABASE = ...
entfallen.
--> Die Optionen bei OPTIONEN = ... muessen nicht alle angegeben
werden. Die Reihenfolge der Optionen spielt keine Rolle.
--> Wird die Option BESTAND angegeben, so muss auch
ORDNUNGSBEGRIFF = ... bzw. SORT ORDNUNGSBEGRIFF = ...
angegeben werden und umgekehrt. Beides ist nur fuer ASS-
Arbeitsgebiete zulaessig und steuert die Erzeugung von
Gegenbuchungen fuer Bestandsarbeitsgebiete. Zusaetzlich ist
die Angabe eines Hilfsfeldes BESTANDSSATZART erforderlich.
--> Die Arbeitsgebietsangabe AG = ... in Klammern hinter einem
Feldnamen kann entfallen und ist innerhalb des
Joinkriteriums bei Ziel- und Joinfeldern verboten. Die
Angabe von ASSZEIT = ... bzw ASSZEIT_TT = ... an gleicher
Stelle ist nur fuer ASS-Arbeitsgebiete als Input erlaubt.
--> In Select-Angaben sind bei Feldnamen nur die Angaben
AG = SELECT und AG = ZIEL zulaessig, in Join-Angaben nur
AG = JOIN und AG = ZIEL.
--> Die WHERE-Klauseln bei SELECT, JOIN und im Joinkriterium
bei DUP sind optional.
--> Mengenfunktionen sind innerhalb der WHERE-Klauseln bei
SELECT und JOIN sowie bei LEERE_MENGE = ... und
LEERE_MENGE_ASSZEIT = ... bzw.
LEERE_MENGE_ASSZEIT_TT = ... nicht zulaessig.
--> Im Joinkriterium duerfen die Sortangabe, LEERE_MENGE =
LOESCHEN und die WHERE-Klausel fehlen, DUP = ... jedoch
nicht. Die Anzahl der Duplikatsbedingungen ist auf 5
beschraenkt. SORT ... und LAST ... in der
Duplikatsbedingung muessen immer paarweise auftreten, die
Bedingung darf fehlen.
--> Die Funktion SUBSTR ist nur auf CHARACTER- oder ASSZEIT-
Feldern erlaubt. Eine Schachtelung von SUBSTR ist nicht
moeglich.
--> Fuer das Besetzen von Zielfeldern, genauer von Werte-
Feldern in ASS-Arbeitsgebieten gilt:
Die Angaben ASSZEIT = ..., LEERE_MENGE_ASSZEIT = ...
und LEERE_MENGE = ... sind optional.
Wird jedoch ASSZEIT = ... angegeben, so muss auch
LEERE_MENGE_ASSZEIT = ... angegeben werden und umgekehrt.
--> Die Angabe von KOMMASTELLEN ist nur bei FORMAT = PACKED
erlaubt.
--> NUM darf nur auf CHARACTER- oder ASSZEIT-Felder angewendet
werden, CHAR nur auf BINAER- oder PACKED-Felder.
--> Ein duplizierendes IF darf pro SELECT- bzw. JOIN-Block nur
einmal vorkommen. Innerhalb einer Angabe LEERE_MENGE = ...
ist ein derartiges IF nicht erlaubt.
--> Wird optional MONATE_MAX angegeben, so ist der VORMONAT von
01 (Januar) dieser Wert, sonst 12.
--> Mit Hilfe der Datei ASSDATE kann man das Bezugsdatum fuer
Zeitangaben festlegen. Dabei enthaelt ASSDATE das Datum in
der Form JJMM. Wird in ASSDATE kein Datum festgelegt, so
beziehen sich Zeitangaben immer auf das aktuelle Datum.
--> Die Angabe von BEZUGSMONAT ist optional. Diese Angabe
uebersteuert sowohl das Maschinendatum als auch Angaben in
ASSDATE.
Vorheriges Kapitel: 3 Definition von Ableitungsregeln
Nächstes Kapitel: Stichwortverzeichnis