Beispiele fuer CFS-Prozeduren
Beispiele für Prozeduren
Mit der im folgenden dargestellten Prozedur (gespeichert im Element L in der CFS.USERLIB) kann der Benutzer bestimmte, am Bildschirm aufgeführte Dateien/Bibliothekselemente mit dem Action-Code X ankreuzen. Die angekreuzten Datenobjekte werden nach Eingabe des Kommandos A (Ausführen) mit der Variablen Action ONXLIST formatiert in eine druckaufbereitete Liste geschrieben und ausgedruckt. Die CFS-Prozedur wird aufgerufen durch DO L bzw. DO L,datei. Im letzteren Fall wird der erste Stellungsparameter automatisch der Prozedurvariablen &1 zugewiesen.
*IF &1 = '' &1 = '#LIST.FRANZ'
*SET TAB=%
ONXLIST &1
*WRITESYS 'Ankreizln, wBS2000 ausdruckt ham willst'
*ON %TERM CONTINUE
*DIA
U
NPFSTAT &1
%PD7S
* Ausdruck der erzeugten Liste am Stationsdrucker 7 mit Space=E (PD7S)
U
* selektierte Liste wieder anzeigen.
RL
Die folgende Prozedur prüft, ob in CFS bereits eine Connection zu der UTM-Anwendung TEST eröffnet ist. Ist dies der Fall, so wird in diese Connection verzweigt. Ansonsten ermittelt die Prozedur die nächste freie Connection, stellt die Verbindung zu TEST her und setzt ein KDCSIGN Kommando ab.
*&N=0
.LOOP
*&XX='CON'&N
*IF &&XX = 'TEST' SKIP .CC
*&N=&N+1
*IF &N<10 SKIP .LOOP
*IF &NEXTCON = '' SKIP .NOFREECONN
OC&NEXTCON TEST,CFS1
KDCSIGN ......
*SKIP .ENDE
*
.NOFREECONN
*WRITESYS 'Alle Connections belegt. Anwendung TEST kann nicht eröffnet werden'
*SKIP .ENDE
*
.CC
CC&N
*
.ENDE
In der folgenden BS2000 DO-Prozedur wird in allen Elementen vom Typ J (Job-Control) in einer PLAM-Bibliothek nach dem Vorkommen des Strings '12132716' (LOGON-Paßwort einer Benutzerkennung) gesucht. Die Treffersätze werden in eine gesonderte SAM-Datei geschrieben. In einem folgenden Schritt wird die Trefferdatei mit EDT in der Weise bearbeitet, daß alle Strings '12132716' in '884310' umgewandelt werden. Über das REWRITE-Kommando von CFS werden die ursprünglichen Bibliothekselemente mit dem neuen Inhalt aktualisiert.
/PROC C,(&BIBL=LMS.PROC,&PSWALT='12132716',&PSWNEU='884310'),SUBDTA=&
/SYSFILE SYSDTA=(SYSCMD)
/SETSW ON=(1,4)
/EXEC CFS
*002 FILE=LMS &BIBL;FCB=J;VAR=ON&FIND'&PSWALT'=W #TREFFER
AU
NQR
EDT,#TREFFER
ON&:2-2:FIND'*'COPY TO (1) KEEP
ON&CA'&PSWALT'T'&PSWNEU'
COPY &(1)
WRITE O
HALT
REWR #TREFFER
END
/SETSW OFF=(1,4)
/ENDP
Die nachfolgend beschriebene DO-Prozedur realisiert eine Konsole, die die folgenden Funktionen ausführt:
1) Systemdumps werden automatisch mit tsn.Y beantwortet.
2) Über das Kommando /TYPE CFSCON:/cmd bzw. /TYPE CFSCON:tsn.xxxx können von Benutzertasks, die unter den Kennungen TSOS oder TT08 angeloggt sind, beliebige Konsoleingaben getätigt werden.
3) Die DO-Prozedur wird durch Eingabe des Kommandos /TYPE TERMINATE CONSOLE beendet.
/PROC N
/SYSFILE SYSDTA=(SYSCMD)
/SETSW ON=(1,4)
/EXEC $CFS.CFS
*002 FILE=NO
OC9$CONSOLE,,,R
xxxxx,C'sssss'
*&STAM='Y'
*ON %OUT=($CFS.CFS.PROCLIB(X/SRCITEM)) RESUME
CC9/STA MSG nachschauen, ob Anfragen ausstehen
*SKIP .SETTSN
.LOOP
*IF &STAM='N' SKIP .ONOUT
*SEND '/STA MSG'
.ONOUT
*ON %OUT letzte *ON %OUT-Bedingung aktivieren
.SETTSN
*&TEXT=%PTR(1,80) Meldungstext merken
*WRITE '&TEXT' Meldungstext ausgeben
*&TASK=%PTR(1,4)
*SKIP &SLABEL
.NOMSG
*&STAM='N'
*SKIP .LOOP
.SYSDUMP
*WRITE '--------> &TASK..Y'
*SEND '&TASK..Y'
*SKIP .LOOP
.CFSCONSOLE
*IF %OUT=:1:'%' &TASK=%PTR(1,4)
*&VAR='USER-ID('&TASK.')'
*IF &&VAR='TSOS' SKIP .ALLOW-CONSINPUT
*IF &&VAR='TT08' SKIP .ALLOW-CONSINPUT
*WRITE '/MESS TSN=&TASK,USER-ID &&VAR. NICHT ZUR KONSOLEINGABE BERECHTIGT'
*SEND '/MESS TSN=&TASK,USER-ID &&VAR. NICHT ZUR KONSOLEINGABE BERECHTIGT'
*SKIP .LOOP
.ALLOW-CONSINPUT
*&TEXT2=&TEXT(1,50)
*WRITE 'KOMMANDO AUSGEFUEHRT: &TEXT2'
*SEND '&TEXT'
*SEND '/MESS TSN=&TASK,KOMMANDO AUSGEFUEHRT: &TEXT2'
*SKIP .LOOP
.EXIT
*ON %TIME=0 RETURN Rückkehr in das Kommandofeld von CFS
DC9
END CFS beenden
/SETSW OFF=(1,4)
/ENDP
Die Bedingungen, auf welche Konsolmeldungen reagiert werden soll, sind in dem Element X/SRC ITEM der PLAM-Bibliothek $CFS.CFS.PROCLIB gespeichert. In unserem Beispiel hat das Element den folgenden Inhalt:
'SYSTEMDUMP DESIRED'+:1-20:'?' .SYSDUMP
'CFSCON:' .CFSCONSOLE
'NO MESSAGE OUTSTANDING ON THE CONSOLE' .NOMSG
'TERMINATE CFSCONSOLE' .EXIT