Die Funktion CLOSE schließt die Datei.
Falls für den OPEN noch Fenster definiert sind, werden sie mit Standardwerten für die Operanden abgebaut.
Von der Funktion CLOSE werden nur die nachfolgend beschriebenen Funktionsoperanden ausgewertet.
Format FCT=*CLOSE
Operation | Operanden |
|
|
| |
| |
|
Operandenbeschreibung
FCT
Bestimmt die auszuführende DIV-Funktion.
= *CLOSE
Die Funktion CLOSE schließt die Datei.
Bei der Form MF=L ist nur die direkte Angabe erlaubt.
= adr
Ist die symbolische Adresse eines 1 Byte langen Feldes, das den Wert für die Funktion CLOSE enthält (Feld DIVPCLS
, siehe Layout der Parameterliste, "Funktion CLOSE").
= (r)
Ist ein Register, das den Wert für die Funktion CLOSE enthält.
ID
Mit ID wird der OPEN spezifiziert, für den die Funktion CLOSE ausgeführt werden soll.
Wird dieselbe Parameterliste benutzt wie bei OPEN, ist die Angabe von ID nicht erforderlich, da sich dann die Identifikation des OPEN bereits in der Parameterliste befindet. Die Identifikation ist in DIVPID (siehe Parameterliste) enthalten.
Wird eine andere Parameterliste benutzt wie bei OPEN, kann durch ID die Identifikation zur Verfügung gestellt und in die neue Parameterliste übertragen werden (mit der Form MF=M des Makros DIV).
ID kann nicht mit der MF=L-Form angegeben werden.
= adr
Ist die symbolischen Adresse eines 8 Byte langen Feldes, das die Identifikation enthält.
= (r)
Register mit der Adresse eines 8 Byte langen Feldes, das die Identifikation enthält.
MACID
Zu MACID siehe Beschreibung beim Format FCT=*OPEN, "Funktion OPEN".
MF
Die Formen des MF-Operanden sind detailliert im Anhang ("Typen von Makroaufrufen") beschrieben.
PARAM
Zu PARAM siehe Beschreibung beim Format FCT=*OPEN, "Funktion OPEN".
PREFIX
Zu PREFIX siehe Beschreibung beim Format FCT=*OPEN, "Funktion OPEN".
Returncodes
Returncodes werden im Header der Parameterliste abgelegt. Die DIV-spezifischen Main-Returncodes werden in nachfolgender Tabelle erläutert. Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, sowie der Aufbau des Standardheaders, sind auf "Standardheader" beschrieben.
Standardheader: ccbbaaaa
Über die Ausführung des Makros DIV wird im Standardheader folgender Returncode übergeben (cc = SUBCODE2, bb = SUBCODE1, aaaa = MAINCODE):
X'cc' | X'bb' | X'aaaa' | Erläuterung |
X'00' | X'0000' | Funktion erfolgreich ausgeführt | |
X'01' | X'0001' | Die Parameterliste ist zumindest nicht in ihrer vollen Länge zugreifbar. Falls auch auf den Header(teil) der Parameterliste nicht zugegriffen werden kann oder die Parameterliste nicht auf Wortgrenze ausgerichtet ist, wird das Programm mit einer Fehlermeldung abgebrochen. | |
X'01' | X'0002' | Die durch AREA (bei MAP oder UNMAP) spezifizierte Fensteradresse liegt nicht an einer 4-KB-Seitengrenze. | |
X'01' | X'0003' | Bei MAP, SAVE und RESET: | |
X'01' | X'0004' | Bei MAP, SAVE und RESET: | |
X'01' | X'0005' | Bei MAP: Der Wert für DISPOS ist weder *OBJECT noch *UNCHNG. | |
X'01' | X'0006' | Der Wert für PFCOUNT liegt nicht im Bereich von 0 bis 15 (MAP). | |
X'01' | X'0007' | Der Wert für RELEASE ist weder *NO noch *YES (RESET). | |
X'01' | X'0008' | Der Wert für MODE (OPEN) ist weder *INPUT noch *INOUT noch *OUTIN. | |
X'01' | X'0009' | Der Wert für SHARUPD (OPEN) ist weder *NO noch *WEAK noch *YES. | |
X'01' | X'000A' | Der Wert für LOCVIEW (OPEN) ist weder *NONE noch *MAP. | |
X'01' | X'000B' | Der Wert für ENV (OPEN) ist weder *HOST noch *XCS. | |
X'01' | X'000C' | Der Wert für LARGE_FILE (OPEN) ist weder *ALLOWED noch *FORBIDDEN. | |
X'01' | X'000D' | DIV wird auf SPARC-HSI nicht unterstützt. | |
X'40' | X'0014' | DIV-Aufrufe aus TPR sind nicht erlaubt. | |
X'40' | X'0015' | Von der (allgemeinen) OPEN-Behandlung des DMS wurde ein Fehler erkannt. Der DMS-Fehlercode ist im Feld DIVPDMSC enthalten. | |
X'40' | X'0016' | Von der (allgemeinen) CLOSE-Behandlung des DMS wurde ein Fehler erkannt. Der DMS-Fehlercode ist im Feld DIVPDMSC enthalten. | |
X'40' | X'0017' | Die Datei ist bereits eröffnet. | |
X'40' | X'0018' | Der OPEN wird auf Grund folgender Situationen zurückgewiesen:
| |
X'40' | X'0019' | Es ist weder ein Linkname noch ein Dateiname angegeben (OPEN). | |
X'40' | X'001A' | Die zu eröffnende Datei befindet sich auf einer Shared Private Disk (SPD). Dateien auf Shared Private Disk (SPD) werden von DIV nicht bearbeitet. | |
X'40' | X'001B' | Ein Fenster mit dem Attribut DISPOS=*UNCHNG ist nicht für eine mit MODE=*INPUT eröffnete Datei erlaubt (MAP). | |
X'40' | X'001C' | Die Privilegierung (USER oder SYSTEM) des Eröffners (OPEN) unterscheidet sich von der Privilegierung des Rufers der Funktion MAP, UNMAP, SAVE, RESET oder CLOSE. | |
X'40' | X'001D' | Die bei einer der Funktionen MAP, UNMAP, SAVE, RESET oder CLOSE zur Kennzeichnung des OPEN mitgegebene ID ist DIV nicht (mehr) bekannt. Möglicherweise ist die Parameterliste von der Parameterliste des OPEN verschieden und ID wurde nicht versorgt oder die Datei wurde bereits geschlossen. | |
X'40' | X'001E' | SPID wurde angegeben, kennzeichnet jedoch keinen Datenraum für das Fenster oder einen Datenraum, auf den der Rufer nicht zugreifen darf (MAP, UNMAP). | |
X'40' | X'001F' | Zumindest ein Teil des für ein Fenster spezifizierten Adressraums ist bereits von einem existierenden Fenster belegt (MAP). | |
X'40' | X'0020' | Zumindest ein Teil des für ein Fenster spezifizierten Dateibereichs ist bereits in einem Fenster des Eröffners abgebildet (MAP). | |
X'40' | X'0021' | SPAN ist nicht spezifiziert (bzw. SPAN=0) und kann zur Definition eines Fensters (MAP) von DIV nicht bestimmt werden, weil entweder
| |
X'40' | X'0022' | Der Fensterbereich enthält mehrere Speicherklassen (z.B. Klasse-5-Speicher und Klasse-6-Speicher) (MAP). | |
X'40' | X'0023' | Eine Seite im virtuellen Adressraum soll zu einer Fensterseite gemacht werden und ist (für eine Ein/Ausgabe) fixiert (MAP). | |
X'40' | X'0024' | Eine für ein Fenster vorgesehene Seite im virtuellen Adressraum ist resident (MAP). | |
X'40' | X'0025' | Eine für ein Fenster vorgesehene Seite im virtuellen Adressraum ist eine READ-ONLY Seite (MAP). | |
X'40' | X'0026' | Zumindest ein Teil des für ein Fenster definierten Adressraums ist nicht allokiert (es wurde z. B. kein REQM durchgeführt) (MAP). | |
X'40' | X'0027' | Der für ein Fenster spezifizierte Adressraum ist sharable (MAP). | |
X'40' | X'0028' | Der für ein Fenster spezifizierte Adressraum ist nicht für den nicht-privilegierten Anwender zugreifbar und der Rufer ist nicht privilegiert (MAP). | |
X'40' | X'0029' | Eine DIV-interne Tabelle kann nicht angelegt werden wegen fehlendem Benutzeradressraum (MAP). | |
X'40' | X'002A' | Die Datei kann nicht (physikalisch) verlängert werden (MAP), weil
| |
X'40' | X'002B' | Beim Lesen eines Blocks trat ein Fehler auf (MAP, UNMAP). | |
X'40' | X'002C' | Beim Schreiben eines Blocks trat ein Fehler auf (SAVE). | |
X'40' | X'002D' | Das durch AREA (und SPID) definierte Fenster existiert nicht für den aktuellen OPEN (UNMAP). | |
X'40' | X'002E' | Für den durch OFFSET und SPAN definierten Datenbereich existiert kein Fenster (SAVE, RESET). | |
X'40' | X'002F' | SAVE ist für einen Leser nicht erlaubt. | |
X'40' | X'0030' | Beim Zugriff auf eine Datei im Modus SHARUPD=YES wurde festgestellt, dass die Dateigröße den Wert von 32 GB übersteigt, beim OPEN für diese Datei wurde aber ein Überschreiten von 32 GB nicht erlaubt. | |
X'80' | X'003C' | Das Subsystem DIV wurde durch ein Kommando gestoppt. | |
X'80' | X'003E' | Zum Aufbau interner Tabellen von DIV benötigter Systemadressraum steht nicht zur Verfügung (OPEN, MAP). | |
X'20' | X'0046' | DIV-interner Fehler. | |
X'20' | X'0047' | Vermutlich auf Grund eines DIV-internen Fehlers wurde vergeblich auf die Freigabe eines gesperrten Betriebsmittels gewartet. |
Erläuterungen zu den Returncodes
Returncodes werden im Header der Parameterliste abgelegt:
Der Main Returncode in einem Halbwort mit dem Namen DIVPMRET.
Der Subcode1 in einem Byte mit dem Namen DIVPSR1.
Subcode1 beschreibt Fehlerklassen, die es dem Aufrufer emöglichen, auf Fehlerklassen zu reagieren (vgl. Tabelle "Standardheader"). Der Aufrufer kann sich sowohl am Maincode als auch am Subcode1 orientieren.Der Subcode2 wird z.Zt. nicht verwendet. Er ist immer null (X'00').
In folgenden Fällen können die Returncodes nicht im Header abgelegt werden:
Die Liste ist dem Aufrufer nicht zugewiesen.
Die Liste ist nicht auf Wortgrenze ausgerichtet.
Die Liste ist gegen Schreibzugriff geschützt.
Das aufrufende Programm wird dann mit einer Fehlermeldung beendet (siehe Abschnitt „Fehlermeldungsschlüssel im DVS") und das STXIT Ereignis „nicht behebbarer Programmfehler“ erzeugt.
Die mit der C- oder D-Form des Makros generierten Feldnamen und EQU-Anweisungen für die Returncodes beginnen standardmäßig mit der Zeichenfolge DIVP, die durch PREFIX und MACID geändert werden kann.
Layout der Parameterliste
Von einem DIV-Makroaufruf mit MF=D wird folgende Parameterliste abgesetzt:
DIV MF=D 1 MFCHK MF=D,PREFIX=D,MACID=IVP,PARAM=, 1 SVC=126,DMACID=IVP,DNAME=IVPLIST,SUPPORT=(C,D,E,L,M) 2 DIVPLIST DSECT , 2 *,##### PREFIX=D, MACID=IVP ##### 1 #INTF REFTYPE=REQUEST,INTNAME=DIV,INTCOMP=002 1 * 1 DIVPPA DS 0F BEGIN of PARAMETERAREA 1 FHDR MF=(C,DIVP),EQUATES=YES 2 DS 0A 2 DIVPFHE DS 0XL8 0 GENERAL PARAMETER AREA HEADER 2 * 2 DIVPIFID DS 0A 0 INTERFACE IDENTIFIER 2 DIVPFCTU DS AL2 0 FUNCTION UNIT NUMBER 2 * BIT 15 HEADER FLAG BIT, 2 * MUST BE RESET UNTIL FURTHER NOTICE 2 * BIT 14-12 UNUSED, MUST BE RESET 2 * BIT 11-0 REAL FUNCTION UNIT NUMBER 2 DIVPFCT DS AL1 2 FUNCTION NUMBER 2 DIVPFCTV DS AL1 3 FUNCTION INTERFACE VERSION NUMBER 2 * 2 DIVPRET DS 0A 4 GENERAL RETURN CODE 2 * 2 * GENERAL_RETURN_CODE CLEARED (X'00000000') MEANS 2 * REQUEST SUCCESSFUL PROCESSED AND NO ADDITIONAL INFORMATION 2 * 2 DIVPSRET DS 0AL2 4 SUB RETURN CODE 2 DIVPSR2 DS AL1 4 SUB RETURN CODE 2 2 * ALWAYS CLEARED (X'00') IF MAIN_RETURN_CODE IS X'FFFF' 2 * Standard subcode2 values as defined by convention: 2 DIVPR2OK EQU X'00' All correct, no additional info 2 DIVPR2NA EQU X'01' Successful, no action was necessary 2 DIVPR2WA EQU X'02' Warning, particular situation 2 DIVPSR1 DS AL1 5 SUB RETURN CODE 1 2 * 2 * GENERAL INDICATION OF ERROR CLASSES 2 * 2 * CLASS A X'00' FUNCTION WAS SUCCESSFULLY PROCESSED 2 * CLASS B X'01' - X'1F' PARAMETER SYNTAX ERROR 2 * CLASS C X'20' INTERNAL ERROR IN CALLED FUNCTION 2 * CLASS D X'40' - X'7F' NO CLASS SPECIFIC REACTION POSSIBLE 2 * CLASS E X'80' - X'82' WAIT AND RETRY 2 * 2 DIVPRFSP EQU X'00' FUNCTION SUCCESSFULLY PROCESSED 2 DIVPRPER EQU X'01' PARAMETER SYNTAX ERROR 2 * 3 GLOBALLY DEFINED ISL ERROR CODES IN CLASS X'01' - X'1F' 2 DIVPRFNS EQU X'01' CALLED FUNCTION NOT SUPPORTED 2 DIVPRFNA EQU X'02' CALLED FUNCTION NOT AVAILABLE 2 DIVPRVNA EQU X'03' INTERFACE VERSION NOT SUPPORTED 2 * 2 DIVPRAER EQU X'04' ALIGNMENT ERROR 2 DIVPRIER EQU X'20' INTERNAL ERROR 2 DIVPRCAR EQU X'40' CORRECT AND RETRY 2 * 2 GLOBALLY DEFINED ISL ERROR CODES IN CLASS X'40' - X'7F' 2 DIVPRECR EQU X'41' SUBSYSTEM (SS) MUST BE CREATED 2 * EXPLICITELY BY CREATE-SS 2 DIVPRECN EQU X'42' SS MUST BE EXPLICITELY CONNECTED 2 * 2 DIVPRWAR EQU X'80' WAIT FOR A SHORT TIME AND RETRY 2 DIVPRWLR EQU X'81' " LONG " 2 DIVPRWUR EQU X'82' WAIT TIME IS UNCALCULABLY LONG 2 * BUT RETRY IS POSSIBLE 2 * 2 GLOBALLY DEFINED ISL ERROR CODES IN CLASS X'80' - X'82' 2 DIVPRTNA EQU X'81' SS TEMPORARILY NOT AVAILABLE 2 DIVPRDH EQU X'82' SS IN DELETE / HOLD 2 * 2 DIVPMRET DS 0AL2 6 MAIN RETURN CODE 2 DIVPMR2 DS AL1 6 MAIN RETURN CODE 2 2 DIVPMR1 DS AL1 7 MAIN RETURN CODE 1 2 * 2 * SPECIAL LAYOUT OF LINKAGE_MAIN_RETURN_CODE (YYYY IN X'00XXYYYY') 2 * 2 DIVPRLNK EQU X'FFFF' LINKAGE ERROR / REQ. NOT PROCESSED 2 DIVPFHL EQU 8 8 GENERAL OPERAND LIST HEADER LENGTH 2 * 1 * DIV-FUNCTIONS: 1 DIVPOPEN EQU 1 OPEN 1 DIVPCLS EQU 2 CLOSE 1 DIVPMAP EQU 3 MAP 1 DIVPUNMP EQU 4 UNMAP 1 DIVPSAVE EQU 5 SAVE 1 DIVPRES EQU 6 RESET 1 * DIV-MAINCODES: 1 DIVPPNAC EQU 1 PARLIST NOT ACCESSIBLE 1 DIVPIWAD EQU 2 INVALID WINDOW ADDRESS 1 DIVPISPA EQU 3 INVALID SPAN 1 DIVPIOFF EQU 4 INVALID OFFSET 1 DIVPIDSP EQU 5 INVALID DISPOS 1 DIVPIPFC EQU 6 INVALID PFCOUNT 1 DIVPIREL EQU 7 INVALID RELEASE 1 DIVPIOM EQU 8 INVALID OPEN MODE 1 DIVPISUM EQU 9 INVALID SHARUPD MODE 1 DIVPILVM EQU 10 INVALID LOCVIEW MODE 1 DIVPIENV EQU 11 INVALID LOCKENV 1 DIVPILRF EQU 12 INVALID LARGE_FILE 1 DIVPNSPA EQU 13 DIV NOT SUPPORTED ON SPARC-HSI 1 DIVPPRVC EQU 20 PRIVILEGED DIV CALL 1 DIVPDOER EQU 21 DMS OPEN ERROR 1 DIVPDCER EQU 22 DMS CLOSE ERROR 1 DIVPICOM EQU 23 INCOMPATIBLE OPEN MODE 1 DIVPICFS EQU 24 INCOMPATIBLE FILE SPEC 1 DIVPNLNF EQU 25 NEITHER LINK NOR FILE 1 DIVPPD EQU 26 PRIVATE DISK 1 DIVPDOI EQU 27 DISPOS OPEN INCONSISTENCY 1 DIVPPRVI EQU 28 PRIV INCONSISTENCY 1 DIVPWRID EQU 29 WRONG ID 1 DIVPSIDU EQU 30 SPID UNDEFINED 1 DIVPSPOV EQU 31 SPACE OVERLAP 1 DIVPFOV EQU 32 FILE OVERLAP 1 DIVPUSNP EQU 33 UNDEF SPAN NOT POSSIBLE 1 DIVPINHM EQU 34 INHOMOG MEM 1 DIVPPFIX EQU 35 PAGE FIXED 1 DIVPRESP EQU 36 RESIDENT PAGE 1 DIVPROP EQU 37 READ ONLY PAGE 1 DIVPMNA EQU 38 MEM NOT ALLOC 1 DIVPSHRM EQU 39 SHARABLE MEMORY 1 DIVPPRSP EQU 40 PRIVILEGED SPACE 1 DIVPNOAS EQU 41 NO ADDRESS SPACE 1 DIVPALER EQU 42 ALLOC ERROR 1 DIVPRDER EQU 43 READ ERROR 1 DIVPWRER EQU 44 WRITE ERROR 1 DIVPWNF EQU 45 WINDOW NOT FOUND 1 DIVPNWIR EQU 46 NO WINDOW IN RANGE 1 DIVPSAVN EQU 47 SAVE NOT ALLOWED 1 DIVPLFNS EQU 48 LARGE_FILE NOT SPECIFIED 1 DIVPSSS EQU 60 SUBSYSTEM STOPPED 1 DIVPSOR EQU 61 SHORTAGE OF RESOURCES 1 DIVPIERR EQU 70 INTERNAL ERROR 1 DIVPTOUT EQU 71 TIME RUNOUT 1 * 1 DIVPID DS XL8 ID 1 DIVPLARF DS AL1 LARGE_FILE 1 DIVPFRBD EQU 0 LARGE_FILE=FORBIDDEN 1 DIVPALWD EQU 1 LARGE_FILE=ALLOWED 1 DIVPUNUS DS AL1 UNUSED BYTE 1 DIVPDMSC DS H DMS-CODE 1 DIVPLINK DS CL8 LINK 1 DIVPFILE DS CL54 FILE 1 DIVPOMOD DS AL1 MODE 1 DIVPINPT EQU 1 MODE=INPUT 1 DIVPINOT EQU 2 MODE=INOUT 1 DIVPOUTI EQU 3 MODE=OUTIN 1 DIVPSUPD DS AL1 SHARUPD 1 DIVPSNO EQU 1 SHARUPD=NO 1 DIVPSWEA EQU 2 SHARUPD=WEAK 1 DIVPSYES EQU 3 SHARUPD=YES 1 DIVPLOCV DS AL1 LOCVIEW 1 DIVPLNON EQU 1 LOCVIEW=NONE 1 DIVPLMAP EQU 2 LOCVIEW=MAP 1 DIVPDISP DS AL1 DISPOS 1 DIVPOBJ EQU 1 DISPOS=OBJECT 1 DIVPUNCH EQU 2 DISPOS=UNCHNG 1 DIVPFRSH EQU 3 DISPOS=FRESH 1 DIVPREL DS AL1 RELEASE 1 DIVPRNO EQU 1 RELEASE=NO 1 DIVPRYES EQU 2 RELEASE=YES 1 DIVPLENV DS AL1 LOCKENV 1 DIVPHOST EQU 1 LOCKENV=HOST 1 DIVPXCS EQU 2 LOCKENV=XCS 1 DIVPSIZE DS F SIZE 1 DIVPSPID DS XL8 SPID 1 DIVPAREA DS A AREA 1 DIVPOFFS DS F OFFSET 1 DIVPSPAN DS F SPAN 1 DIVPPFC DS F PFCOUNT 1 DIVP# EQU (*-DIVPPA) LENGTH OF STRUCTURE
Beispiele
Beispiel 1: Lesen und Aktualisieren einer existierenden Datei
*---------------------------------------------------------------------* * Beispiel 1: Lesen und Aktualisieren einer existierenden Datei. * *---------------------------------------------------------------------* D1 DIV MF=D * BSP001 START BALR R10,0 USING *,R10 USING D1,R9 LA R9,PA *---------------------------------------------------------------------* * Eröffnen der Datei mit INOUT * *---------------------------------------------------------------------* DIV MF=E,PARAM=PA CLI DIVPSR1,DIVPRFSP BNE ERROR *---------------------------------------------------------------------* * Ermitteln der Dateigröße und Anfordern der Seiten für ein Fenster * * REQM liefert die Anfangsadresse in R1. * *---------------------------------------------------------------------* L R3,DIVPSIZE DATEIGROESSE IN 4KB-SEITEN -> R3 REQM (R3),PARMOD=31 LTR R15,R15 BNZ ERROR LR R8,R1 *---------------------------------------------------------------------* * Erzeugen eines Fensters, in dem die Seiten der Datei erst bei einem * * Zugriff erscheinen (DISPOS=*OBJECT und LOCVIEW=*NONE sind Standard) * * Das Fenster wird in der Dateigröße angelegt (OFFSET und SPAN sind * * nicht spezifiziert). * *---------------------------------------------------------------------* DIV MF=M,PARAM=PA,FCT=*MAP,AREA=(R8) DIV MF=E,PARAM=PA CLI DIVPSR1,DIVPRFSP BNE ERROR *---------------------------------------------------------------------* * Schreiben geänderter Fensterseiten in die Datei. * *---------------------------------------------------------------------* DIV MF=M,PARAM=PA,FCT=*SAVE DIV MF=E,PARAM=PA CLI DIVPSR1,DIVPRFSP BNE ERROR *---------------------------------------------------------------------* * Abbau des Fensters und Schließen der Datei. * * Nach dem Abbau des Fensters sind die Seiten im Zustand wie unmittel-* * bar nach REQM. * *---------------------------------------------------------------------* * DIV MF=M,PARAM=PA,FCT=*UNMAP,DISPOS=*FRESH DIV MF=E,PARAM=PA CLI DIVPSR1,DIVPRFSP BNE ERROR * DIV MF=M,PARAM=PA,FCT=*CLOSE DIV MF=E,PARAM=PA CLI DIVPSR1,DIVPRFSP BNE ERROR * * ERROR DS 0Y * * PA DIV MF=L,FCT=*OPEN,LINK='TST001',MODE=*INOUT END
Beispiel 2: Kopieren und Modifizieren einer Datei
*---------------------------------------------------------------------* * Beispiel 2: Kopieren und Modifizieren einer Datei. * *---------------------------------------------------------------------* * D1 DIV MF=D * BSP002 START BALR R10,0 USING *,R10 USING D1,R9 LA R9,PA1 *---------------------------------------------------------------------* * Eröffnen einer existierenden Datei. * *---------------------------------------------------------------------* DIV MF=E,PARAM=PA1 CLI DIVPSR1,DIVPRFSP BNE ERROR *---------------------------------------------------------------------* * Ermitteln der Dateigröße und Anfordern der Seiten für ein Fenster * * REQM liefert die Anfangsadresse in R1. * *---------------------------------------------------------------------* L R3,DIVPSIZE DATEIGROESSE IN 4KB-SEITEN -> R3 REQM (R3),PARMOD=31 LTR R15,R15 BNZ ERROR LR R8,R1 *---------------------------------------------------------------------* * Erzeugen eines Fensters, wobei die Seiten der Datei sofort einge- * * lesen werden (Die Seiten der Datei erscheinen im Fenster wegen * * DISPOS=*OBJECT (Standardfall), die Seiten werden sofort eingelesen * * wegen LOCVIEW=*MAP). * * Das Fenster wird in der Dateigröße angelegt (OFFSET und SPAN sind * * nicht spezifiziert). * *---------------------------------------------------------------------* DIV MF=M,PARAM=PA1,FCT=*MAP,AREA=(R8) DIV MF=E,PARAM=PA1 CLI DIVPSR1,DIVPRFSP BNE ERROR *---------------------------------------------------------------------* * Modifizieren von Fensterseiten. * *---------------------------------------------------------------------* * * *---------------------------------------------------------------------* * Abbau des Fensters und Schließen der Datei. * * Der Inhalt der Fensterseiten bleibt erhalten (wegen DISPOS=*UNCHNG).* *---------------------------------------------------------------------* * DIV MF=M,PARAM=PA1,FCT=*UNMAP,DISPOS=*UNCHNG DIV MF=E,PARAM=PA1 CLI DIVPSR1,DIVPRFSP BNE ERROR * DIV MF=M,PARAM=PA1,FCT=*CLOSE DIV MF=E,PARAM=PA1 CLI DIVPSR1,DIVPRFSP BNE ERROR * *---------------------------------------------------------------------* * Öffnen der neuen Datei. * *---------------------------------------------------------------------* LA R9,PA2 DIV MF=E,PARAM=PA2 CLI DIVPSR1,DIVPRFSP BNE ERROR *---------------------------------------------------------------------* * Erzeugen eines Fensters, wobei die Daten erhalten bleiben (wegen * * DISPOS=*UNCHNG). * * Die Bereichsadresse ist noch in R8, die Fenstergröße in R3 * *---------------------------------------------------------------------* DIV MF=M,PARAM=PA2,FCT=*MAP,AREA=(R8),DISPOS=*UNCHNG,SPAN=(R3) DIV MF=E,PARAM=PA2 CLI DIVPSR1,DIVPRFSP BNE ERROR *---------------------------------------------------------------------* * Schreiben der Fensterseiten in die neue Datei. * *---------------------------------------------------------------------* DIV MF=M,PARAM=PA2,FCT=*SAVE DIV MF=E,PARAM=PA2 CLI DIVPSR1,DIVPRFSP BNE ERROR *---------------------------------------------------------------------* * Abbau des Fensters und Schliessen der Datei. * *---------------------------------------------------------------------* DIV MF=M,PARAM=PA2,FCT=*UNMAP,DISPOS=*FRESH DIV MF=E,PARAM=PA2 CLI DIVPSR1,DIVPRFSP BNE ERROR * DIV MF=M,PARAM=PA2,FCT=*CLOSE DIV MF=E,PARAM=PA2 CLI DIVPSR1,DIVPRFSP BNE ERROR * * ERROR DS 0Y * * PA1 DIV MF=L,FCT=*OPEN,LINK='TST001',LOCVIEW=*MAP PA2 DIV MF=L,FCT=*OPEN,LINK='TST002',MODE=*OUTIN END