Prozedurvariable
Im erweiterten Prozedurmodus von CFS können Variable sowohl im Text für die Programmeingaben, als auch in den prozedurinternen Sprachelementen (*-Anweisungen) verwendet werden. Diese Variablen sind nicht zu verwechseln mit BS2000-Prozedurvariablen und können nur innerhalb von CFS-Prozeduren und Startup-Dateien verwendet werden.
Der Name einer CFS-Prozedurvariablen beginnt mit einem Einleitungszeichen, das standardmäßig auf '&' gesetzt ist. Mit der Prozeduranweisung *SET PAR=x (siehe nächster Abschnitt "Elemente der Prozedursprache") kann das Beginnzeichen für Parameter auf jedes andere Sonderzeichen umdefiniert werden. Der Name einer CFS-Prozedurvariablen kann 1 bis 20 alphanumerische Zeichen umfassen. Als einziges Sonderzeichen ist '-' innerhalb des Namens einer CFS-Prozedurvariablen erlaubt. Die Bezeichnung einer CFS-Prozedurvariablen kann auch mit einer Ziffer beginnen.
Der Inhalt von CFS-Prozedurvariablen kann 1 bis 80 Stellen umfassen. Beim Start der Prozedur bzw. bei Zuweisung des Nullstrings (&var='') ist der Inhalt der Variablen auf binär Null gesetzt. Ausnahme: CFS-interne Prozedurvariable. Diese Prozedurvariablen besitzen fest vorgegebene Namen und werden von CFS automatisch bei jeder Bezugnahme mit einem ihrer Bedeutung entsprechenden Inhalt versorgt. CFS-interne Prozedurvariable dürfen in der *PROC-Anweisung für CFS-Prozeduren (siehe Seite 19-) nicht auftreten.
Zweistufige Substitution:
Der Inhalt einer Prozedurvariablen wird als Name einer anderen Prozedurvariablen interpretiert, falls die Variable in der Form &&var angegeben wurde.
Beispiel: Der Variablen &CX wurde der String 'VAR1' zugewiesen. Durch die Angabe &&CX wird der Inhalt der Variablen &VAR1 angesprochen. Ein Beispiel für zweistufige Variablensubstitution finden Sie auf Seite 20-.
CFS-interne Prozedurvariablen
&ACCT Abrechnungsnummer (ein bis acht Stellen) der Benutzerkennung, unter der CFS geladen wurde.
&ACCT(tsn) Abrechnungsnummer des LOGON-Kommandos der angegebenen TSN. Die TSN muß stets vierstellig angegeben werden. Die Abrechnungsnummer einer fremden TSN kann nur ermittelt werden, falls CFS unter der Benutzerkennung TSOS geladen wurde. Für ein Beispiel dieser Form der Variablenverwendung siehe Seite 19-.
&ARGC Anzahl der beim Aufruf an die CFS-Prozedur übergebenen Parameter. Leerparameter (par1,,par3) werden hierbei mitgezählt.
Wurden keine Prozedurparameter übergeben, hat die Prozedurvariable den Wert 0.
&BS2PL BS2000-Prozedurebene (Procedure Level Number).
'0': CFS wurde nicht in einer DO-Prozedur aufgerufen.
>'0': CFS wurde in einer DO-Prozedur des BS2000 aufgerufen.
&CFSINCON wurde das aktuelle Programm CFS in einer Connection aufgerufen ? Y | N.
&CFSMSG über diese bis zu 80 Stellen lange Variable kann auf die Nachricht zugegriffen werden, die bei nicht prozedurgesteuertem Ablauf von CFS in der Meldungszeile der letzten Bildschirmmaske ausgegeben worden wäre. Es werden sowohl die Fehlermeldungen aus der Dateienliste, als auch die Fehlermeldungen aus der Selektionsmaske an die Variable übergeben.
Die Variable CFSMSG hat den Leerstring ('') als Wert, falls die in der letzten Maske ausgegebene Meldung den Standardtext "Help: ?/?all/??" zum Inhalt hatte.
Beim Füllen der Variablen CFSMSG wird der Text der Nachricht in Großbuchstaben umgesetzt.
&CFSCOMP über diese Variable kann die CFS-Maske abgefragt werden, in der die nächste Eingabe erfolgt. Die Variable kann die folgenden Werte annehmen:
'SEL' Die nächste Eingabe erfolgt in der Selektionsmaske von CFS.
'CMD' Die nächste Eingabe erfolgt im Kommandofeld der (eventuell auch leeren) Dateienliste.
'DISP' Die nächste Eingabe erfolgt im Kommandofeld des CFS-Display/ Editors.
'CONx' Die nächste Eingabe erfolgt in der CFS-Connection der Nummer n.
&CMDMSG über diese bis zu 80 Stellen lange Variable kann auf die Meldung zugegriffen werden, die bei der zuletzt ausgeführten Prozeduranweisung Kommando */cmd (beliebiges BS2000-Kommando) ausgegebene wurde. Es werden sowohl die Fehlermeldungen, als auch Informationen des BS2000-Kommandos an die Variable übergeben.
Falls das BS2000-Kommando mehrere Meldungen ausgibt, so enthält die Variable CMDMSG nur den ersten Satz.
Die Variable CMDMSG hat den Leerstring ('') als Wert, falls die letzte Anweisung */cmd keine Meldung ausgegeben hat.
&COMPONENT In dieser Variablen wird die Komponente angezeigt, in der sich der Benutzer bzw. die Prozedur momentan befindet: 'CFS' | 'TAS' | 'JES' | 'JESG'
&CONx Ist eine Connection mit der angegebenen Nummer (0 <= x <= 9) eröffnet, so erhält die Variable als Wert den Namen der Anwendung, zu der die Connection eröffnet wurde (z.B. $DIALOG, $CONSOLE, ... ). Ist keine Connection eröffnet, erhält die Variable als Wert den Leerstring ('').
&CONxH Ist eine Connection mit der angegebenen Nummer (0 <= x <= 9) eröffnet, so erhält die Variable als Wert den Namen des Host-Rechners, zu dem die Verbindung besteht.
&CONxJ Ist eine Connection mit der angegebenen Nummer (0 <= x <= 9) zu $DIALOG eröffnet, so erhält die Variable als Wert den Jobnamen des Dialogprozeßes (.name   LOGON ).
Die Variable hat als Wert den Leerstring (''), falls
a) es sich nicht um eine Connection zu $DIALOG handelt,
b) im LOGON-Kommando kein Jobname angegeben wurde,
c) keine Connection mit der angegebenen Nummer eröffnet ist.
&CONxT Ist eine Connection mit der angegebenen Nummer (0 <= x <= 9) zu $DIALOG eröffnet, so erhält die Variable als Wert die TSN des Dialogprozeßes. In allen anderen Fällen erhält die Variable als Wert den Leerstring ('').
&CONxU Ist eine Connection mit der angegebenen Nummer (0 <= x <= 9) zu $DIALOG eröffnet, so erhält die Variable als Wert die Benutzerkennung des LOGON-Kommandos. In allen anderen Fällen erhält die Variable als Wert den Leerstring ('').
&DATE aktuelles Tagesdatum in der Form: yy-mm-dd
&DATE4 aktuelles Tagesdatum in der Form: yyyy-mm-dd (4-stellige Jahreszahl)
&DATE2 aktuelles Tagesdatum in der Form: dd.mm.yy
&DATE42 aktuelles Tagesdatum in der Form: dd.mm.yyyy (4-stellige Jahreszahl)
&DAY Wochentag des aktuellen Datums. Der Wochentag ist in folgender Form codiert:
1 = Montag, 2 = Dienstag, 3 = Mittwoch, ...., 6 = Samstag, 7 = Sonntag.
&DAY2 Wochentag des aktuellen Datums im Langtext in englisch.
&DAY2G Wochentag des aktuellen Datums im Langtext in deutsch.
&DISP-POS Gibt im Display-Modus bei SAM- und PAM-Dateien die Satz-/Blocknummer des ersten angezeigten Satzes. Bei ISAM-Dateien wird der Schlüssel des ersten angezeigten Satzes ausgegeben.
&DISPEOF Zeigt an, ob im Display-Modus aufgrund des letzten Kommandos (z.B. +n oder S) das Ende der Datei erreicht wurde oder ob ein DMS-Fehler aufgetreten ist.
'N' Das letzte Kommando führte nicht auf die End-of-File Bedingung.
'Y' Das letzte Kommando führte auf die End-of-File Bedingung bzw. die Jobvariable konnte nicht gelesen werden.
'DMSnnnn' Es ist ein DVS-Fehler mit dem angegebenen Code aufgetreten.
&FROM Wurde die CFS-Prozedur mit dem Fluchtsymbol aus einer Connection gestartet (^DO xxxx), so enthält die Variable &FROM die Nummer der Connection, aus der Prozeduraufruf erfolgte. Erfolgte der Prozeduraufruf in der Grundebene von CFS (DO xxxx), so enthält die Variable den Wert 'M' (Maintask).
&HOST Bezeichnung des Host-Rechners (ein bis acht Stellen), an dem CFS geladen wurde.
&LISTEND Die Variable enthält die Anzahl der Einträge der Dateienliste. Verborgene Einträge der Dateienliste werden hierbei nicht mitgezählt. Der Inhalt der Variablen ist leer (&LISTEND = '' ), falls keine Dateienliste ausgewählt ist (FILENAME-SELECT=NO).
&LISTEND2 Wie &LISTEND, jedoch werden verborgene Einträge der Dateienliste mitgezählt.
&LISTACT Die Variable enthält den Action-Code der zu dem ersten in der Bildschirmmaske angezeigten Eintrag der Dateienliste gehört. Der Inhalt der Variablen ist leer (&LISTACT ='' ), falls kein Action-Code bei der ersten in der Maske angezeigten Datei eingetragen ist.
&LISTENTRY Die Variable enthält den Inhalt des ersten in der aktuellen Bildschirmseite angezeigten Eintrags der Dateienliste. Der Inhalt der Variablen umfaßt 64 oder 69 Zeichen, je nachdem ob bei der Dateiselektion eine User Option angegeben wurde oder nicht.
&LISTENTRY2 Wie &LISTENTRY, jedoch werden Datumsangaben (DATE-Option) und binäre Felder in Archive-Listeinträgen nicht in der CFS-internen Form, sondern wie am Bildschirm dargestellt.
&LISTFN Die Variable enthält den Namen der ersten in der aktuellen Bildschirmseite angezeigten Datei.
&LISTCFN Die Variable enthält den Namen der ersten in der aktuellen Bildschirmseite angezeigten Datei in Langform, d.h. mit User-Id und wenn notwendig auch mit Cat-id.
&MONTH Monat des aktuellen Datums in numerischer Form (z.B. 01 für Januar).
&MONTH2 Monat des aktuellen Datums im Langtext in englisch.
&MONTH2G Monat des aktuellen Datums im Langtext in deutsch.
&NEXTENTRY Die Variable enthält den Inhalt des auf &LISTENTRY folgenden Eintrags der Dateienliste. Falls kein folgender Eintrag existiert, enthält die Variable den Wert '' (Nullstring).
&NEXTENTRY2 Wie &NEXTENTRY, jedoch werden Datumsangaben (DATE-Option) und binäre Felder in Archive-Listeinträgen nicht in der CFS-internen Form, sondern wie am Bildschirm dargestellt.
&LOGNAM Job-Name aus dem LOGON-Kommando (/.name LOGON ... ).
Falls beim LOGON-Kommando kein Jobname angegeben wurde, so hat diese Variable als Wert den Leerstring ('').
&LOGNAM(tsn) Job-Name des LOGON-Kommandos der angegebenen TSN. Die TSN muß stets vierstellig angegeben werden. Der Job-Name einer fremden TSN kann nur ermittelt werden, falls CFS unter der Benutzerkennung TSOS geladen wurde. Für ein Beispiel dieser Form der Variablenverwendung siehe Seite 19-.
&MODE Prozeßmodus, in dem CFS abläuft: 'DIALOG' | 'BATCH'
&NEXTCON enthält die Nummer einer noch nicht eröffneten Connection. Falls keine Connections eröffnet sind, hat NEXTCON den Wert 0. Falls Connection 0 bereits eröffnet ist, hat NEXTCON den Wert 1, usw. Falls alle Connections belegt sind, hat NEXTCON den Leerstring ('') als Wert.
&POSLIST enthält eine fünfstellige Zahl, die die Position des ersten in der aktuellen Bildschirmseite angezeigten Eintrags der Dateienliste beschreibt. Siehe hierzu auch Kommando Pn auf Seite 7-.
&POSUACT enthält eine fünfstellige Zahl, die die Position des mit einem %-Action Code markierten Eintrags der Dateienliste beschreibt. Siehe hierzu auch Kommando Pn auf Seite 7-.
&RDMASKIN enthält die Bezeichnung der Taste, mit der die letzte mit *RDMASK ausgegebene Benutzermaske abgesendet wurde. Beispiel: DUE. DUE steht hier für die ENTER-Taste. Für weitere Informationen zu der Prozeduranweisung RDMASK siehe Seite 19-.
&SEARCHRET Diese Variable enthält den Returncode des letzten Suche-Kommandos in CFS.
Returncode 'ERR' Syntaxfehler bei der Definition des Suchbegriffs.
Returncode '' Suchargument wurde nicht gefunden.
Returncode 'nnn' ein- bis sechsstellige Dezimalzahl.
Bei reinem Suchen: Spalte des ersten Treffers
Bei Suchen mit Ersetzen: Anzahl der gefundenen Treffer
&SEL-USID PVS und User-ID der selektierten Datenobjekte.
&SLABEL Name einer variablen Sprungmarke (*SKIP &SLABEL). Die Variable wird durch eine vorhergehende Anweisung *ON %OUT=(datei) versorgt. Die Datei, in der die Suchstrings der %OUT-Anweisung definiert sind, muß folgendes Format besitzen:
suchstring-1 .label-1
...
suchstring-n .label-n
&SLABEL enthält den Namen der Sprungmarke, die dem als erstes gefundenen Suchstring zugeordnet ist. Ein Anwendungsbeispiel hierzu finden Sie auf Seite 19-.
&SEL-LIB Name der Bibliothek, in der die ausgewählten Elemente enthalten sind.
&STATNAM Stations-Name (Name der Datensichtstation), an der CFS aufgerufen wurde.
&STATNAM(tsn) Name der Datensichtstation, an der ein Dialogprozeß mit der angegebenen TSN eröffnet wurde. Die TSN muß stets vierstellig angegeben werden. Der Stationsname einer fremden TSN kann nur ermittelt werden, falls CFS unter der Benutzerkennung TSOS geladen wurde. Für ein Beispiel dieser Form der Variablenverwendung siehe Seite 19-.
&SWSMODE Es wird der aktuell eingestellte Modus eines SWS-Kommandos ausgegeben.
1 NSWS (SWS1)
2 SWS2
3[W] SWS3[W]
4[W] SWS4[W]
&TIME aktuelle Uhrzeit in der Form: hhmmss
&TIME2 aktuelle Uhrzeit in der Form: hh:mm:ss
&TSN vierstellige TSN des Benutzerprozeßes, unter dem CFS aufgerufen wurde.
&TEMP-PREF interner Prefix für Namen von Temporärdateien (S.nnn.) nnn = aktuelle Session-Number. Falls keine Temporärdateien aktiviert sind, bleibt die Variable leer.
&USER-ID Benutzerkennung (ein bis acht Stellen), unter der CFS geladen wurde.
&USER-ID(tsn) Benutzerkennung des LOGON-Kommandos der angegebenen TSN. Die TSN muß stets vierstellig angegeben werden. Die Benutzerkennung einer fremden TSN kann nur ermittelt werden, falls CFS unter TSOS geladen wurde. Für ein Beispiel dieser Form der Variablenverwendung siehe Seite 19-.
Hinweise:
Das Ende des Namens einer Prozedurvariablen wird durch ein beliebiges Sonderzeichen außer '-' markiert. Ein Blank kann z.B. das Ende des Namens einer Variablen bezeichnen. Falls eine Variable im Datensatz einer CFS-Prozedur (kein Stern in Spalte 1) einen Teil des Textes substituiert, so ist zu beachten, daß ein Punkt hinter der Variablen bei der Substitution entfernt wird. Jedes andere Sonderzeichen als Abschluß einer Prozedurvariablen wird nicht aus dem Text entfernt.
Angenommen z.B., die Prozedurvariablen &N und &LOGNAM enthalten die Werte '1' und 'MEIER'. Der Datensatz "OC&N/.&LOGNAM.&N  LOGON ..." hat nach Substitution der Variablen den Inhalt: "OC1/.MEIER1  LOGON ...".
Mit der zweistufigen Substitution können CFS-interne Variablen ausgewertet werden, deren Bezeichnung erst zum Ablaufzeitpunkt genau feststeht.
Angenommen, eine CFS-Prozedur TEST wird durch ^DO TEST aus der Connection 2 aufgerufen. In der Prozedur wird die Variable &CX durch die Anweisung &CX = 'CON'&FROM.'H' mit dem Inhalt 'CON2H', d.h. mit der Bezeichnung der CFS-internen Prozedurvariablen &CON2H versorgt. Die Prozeduranweisung *WRITE '&CX = &&CX' bewirkt die Programmausgabe 'CON2H = HOST1'. HOST1 ist dabei der Name des Hostrechners, zu dem Connection 2 eröffnet wurde.
Die in einer CFS-Prozedur verwendeten eigenen Variablen können beim Aufruf der Prozedur mit Werten versorgt werden. Dies geschieht in der gleichen Weise wie bei DO-Prozeduren im BS2000 durch Angabe der Parameter im Anschluß an den Namen der aufzurufenden Prozedur:  DO prozedur, par1, par2, ......
Die Werte der in einer CFS-Prozedur angesprochenen Variablen müssen beim Aufruf der Prozedur entsprechend der verwendeten PROC-Anweisung als Stellungsparameter (wert) oder Schlüsselwortparameter (par=wert) angegeben werden. Für weitere Informationen hierzu siehe Seite 19- und 19-.
CFS-Prozedurvariable können auch in Menue-Dateien verwendet werden. Siehe hierzu Seite 10-.
Prozedurvariable und *PROC-Anweisung: Prozedurvariable werden mit ihrem ersten Auftreten innerhalb der Prozedur automatisch kreiert. Die CFS-Prozedursprache bietet die Möglichkeit, eine *PROC-Anweisung zu Beginn einer Prozedur anzugeben, in der alle oder einige der in der Prozedur verwendeten Variablen deklariert sind. Mehr zur *PROC-Anweisung siehe Seite 19-.