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 |
/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 |