CFS als Unterprogramm |
LINK ENTRY=CFSMAIN,LIBNAM=$TSOS.CFSLIB,INHIBIT=YES | |
Beim Laden von CFSMAIN werden weitere Module per Autolink-Funktion nachgezogen. Daher bietet es sich an, gleich einen Großmodul über LINK-Makro zu laden, der die notwendigen Untermodule CFSUP und GDATE bereits enthält. Dieser Großmodul CFS2 kann durch /DO CFS. S.LMSLIB(CFSLNK2) erzeugt werden. |
Der Modul CFSMAIN bzw. der Großmodul CFS2 muß auf Seitengrenze im unteren Adressraum geladen werden. |
Der Modul CFSMAIN liegt in der Bibliothek CFS.S.LMSLIB im Sourcecode vor und kann zur Initialisierung von RZ- bzw. benutzerspezifischen Standardwerten angepaßt werden. |
CFS aktiviert intern Stxit's für INTR-, ABEND-, K2- (ESCPBRK) und SVC-Ereignisse. |
Das Hauptprogramm kann CFS Selektionsparameter, Kommandos, Action-Codes, sowie Daten zur Modifikation von Dateien mitgeben. Damit besteht die Möglichkeit, beim Aufruf von CFS durch ein übergeordnetes Hauptprogramm bereits eine Reihe von Aktionen ausführen zu lassen, z.B. Dateien / Elemente aus einer bestimmten Bibliothek selektieren, Eröffnen von Connections, Laden von P-Tasten, bestimmte CFS-Modi einstellen, bestimmte Dateien/Bibliothekselemente selektieren, Dateien in den EDT laden, Dateien im Display von CFS anzeigen usw. |
Die verschiedenen Nutzungsmöglichkeiten von CFS als Unterprogramm werden am besten durch die Beschreibung der Aufrufparameterliste erläutert. |
Aufrufkonventionen und Parameterliste: Hauptprogramm --> CFS |
Registerbelegung | ||
R1 | Adresse der Parameterliste für CFSUP. | ||
R13 | Adresse einer 18 Worte langen Save-Area im aufrufenden Programm. | ||
R14 | Rückkehradresse in das Hauptprogramm. | ||
R15 | Einsprungadresse: Beginn des Moduls CFS2 bzw. CFSMAIN. | ||
Parameterliste | ||
P1 DC A(RECTABLE) | A(0)
| |
P2 DC A(IND)
| |
DC A(3) | optional, nur bei IND = C'N' sinnvoll | |
P3 DC A(CFSLIB) | optional, nur bei IND = C'N' sinnvoll | |
P1 DC A(RECTABLE)
| |
Liste von Eingabesätzen im RDATA-Format. | |
CFS verhält sich wie in einer Dialogprozedur (siehe Seite 19-). Insbesondere wird die durch einen *002-Satz definierte Selektion ausgeführt. | |
RECTABLE | Liste von Eingabesätzen im V-Format. RECTABLE hat die gleiche Funktion wie SYSDTA, nur daß die Datensätze im virtuellen Speicher und nicht in einer Datei übergeben werden. Das Ende von RECTABLE ist durch das Zeichen X'80' zu markieren. Nach Erreichen des Endes von RECTABLE, bzw. nach Lesen eines *DIA-Satzes (siehe Seite 19-) erwartet CFS alle weiteren Eingaben vom Bildschirm. | ||
P1 DC A(0)
| |
CFS erhält vom aufrufenden Programm keine Eingaben. | |
Nach dem Ansprung durch das Benutzerprogramm kommt CFS am Bildschirm mit der Selektionsmaske wie nach einem normalen EXEC durch den Benutzer. Die Rückkehr in das Hauptprogramm kann erfolgen durch die Kommandos END / * / MAIN. | |
P2 DC A(IND)
| |
IND DC C'N'
| ||
New | CFS beginnt mit einem neuen Verarbeitungsgang, d.h. es wird als erstes ein Satz zur Spezifizierung der Selektionsbedingungen erwartet (*001-, bzw. *002-Satz). | ||
IND DC C'C'
| ||
Continue | Fortsetzungsaufruf. CFS fährt an der Stelle fort, an welcher es beim letzten Aufruf aufgrund der Kommandos END / * / MAIN unterbrochen wurde. | ||
P3 DC A(CFSLIB)
| |
CFSUID DC CL54'$userid.CFSLIB'
| ||
Name der eingesetzten CFSLIB. | |||
Falls angegeben, wird aus dieser Angabe die Kennung, unter der CFS gespeichert ist ermittelt. Die Kennung wird anstelle der Standardkennung $TSOS. vor die Namen der internen CFS-Dateien CFSLIB, CFSHELP, CFSCOM, CFS.MESSAGE, CFSPROT, CFSTERM, CFS.PDFILE, CFS.INF.FORMAT und CFSUSER gesetzt. | |||
Beispiel: | |
In der CFS.S.LMSLIB finden Sie unter dem Namen TEST ein einfaches Musterprogramm, in dem CFS mehrere Male als Unterprogramm aufgerufen wird. Das Programm kann mit /DO CFS.S.LMSLIB(ASSEMB),TEST übersetzt und mit /EXEC (TEST, CFSLIB) aufgerufen werden. | |
Im folgenden Beispiel ist eine Parameterleiste des Hauptprogramms für CFS dargestellt. | |
P1 DC A(RECTABLE)
| |
P2 DC A(IND)
| |
IND DC C'N'
| |
RECTABLE DS 0A
| |
REC1 DC AL2(REC1L,0)
| |
DC C'*002 FILE=NO'
| |
REC1L EQU *-REC1
| |
REC2 DC AL2(REC2L,0)
| |
DC C'OC1/LOGON user-id,acct,C''passw'''
| |
REC2L EQU *-REC2
| |
REC3 DC AL2(REC3L,0)
| |
DC C'LOAD programm'
| |
REC3L EQU *-REC3
| |
REC4 DC AL2(REC4L,0)
| |
DC C'^'
| |
REC4L EQU *-REC4
| |
REC5 DC AL2(REC5L,0)
| |
DC C'PL plus-modul,maplib'
| |
REC5L EQU *-REC5
| |
REC6 DC AL2(REC6L,0)
| |
DC C'EDT,datei'
| |
REC6L EQU *-REC6
| |
REC7 DC AL2(REC7L,0)
| |
DC C'@RET'
| |
REC7L EQU *-REC7
| |
REC8 DC AL2(REC8L,0)
| |
DC C'NP'
| |
REC8L EQU *-REC8
| |
DC X'80'
| |
|
| |
|
| |
[____ Es folgt kein weiterer Datensatz
| |
Hinweis: | |
Bei Übergabe einer RECTABLE sollten vor dem Ansprung von CFS die Prozeßschalter 1 und 4 gesetzt werden ( SETSW ON=(1,4) ). | |