Die Prozedur DO.LIB.INHALT listet alle Elemente einer Bibliothek auf. Die jeweils wichtigsten Elementdaten werden in eine Liste geschrieben. Die Übersetzung der Kommandos dieser Prozedur erfolgt mit Einschränkungen beim PRINT- und DO-Kommando. SDF-CONV meldet je eine NOTE
. Das PRINT-Kommando wird nicht übersetzt, weil es als ersten Operanden einen Prozedurparameter enthält. Das DO-Kommando kann nicht in eine garantierte SDF-Form übersetzt werden, weil es kontextabhängig verschiedene Möglichkeiten der Übersetzung gibt. Beim DO-Kommando macht SDF-CONV Übersetzungsvorschläge in der Ausgabeprozedur.
Eingabeprozedur DO.LIB.INHALT
/PROC N,(&LIBNAME=,&LISTOUT=,&PRINT=,&EINGABE),SUBDTA=& /DCLJV #NEUBILD /SETJV #NEUBILD,X'0C' /WR-T '&(#NEUBILD)' /WR-T ' ' /WR-T '*******************************************************' /WR-T '**** Auflisten von Elementen einer Bibliothek ****' /WR-T '*******************************************************' /WR-T ' ' /WR-T 'Name der Bibliothek : LIBNAME' /REMARK Eingabe &LIBNAME /SYSFILE SYSOUT=*DUMMY /FS &LIBNAME /SYSFILE SYSOUT=() /SKIP .LINK /STEP "Fehler beim FSTATUS" /SYSFILE SYSOUT=() /WR-T ' ' /WR-T 'Fehlerhafte Eingabe !' /WR-T 'Bibliothek &LIBNAME existiert nicht/kann nicht geoeffnet werden' /SKIP .E /.LINK REMARK Aufbereiten der Bibliothek /WR-T 'Name der Ausgabe-Liste : LISTOUT' /WR-T 'Bei einer bereits bestehenden Ausgabe-Liste ' /WR-T 'werden die Daten ab Dateiende angefuegt. ' /WR-T 'Soll die Liste ausgedruckt werden (J/N) ? : PRINT' /REMARK Eingabe &LISTOUT und &PRINT /SETSW ON=(1) /SYSFILE SYSDTA=(SYSCMD) /SYSFILE SYSLST=(&LISTOUT,EXTEND) /SYSFILE SYSOUT=*DUMMY /FILE &LIBNAME,LINK=LIB001 /EXEC $LMS PAR INFO=SUMMARY PRT (LST) LST* (1) END /STEP /SYSFILE SYSOUT=() /SYSFILE SYSLST=() /SYSFILE SYSDTA=() /SETSW OFF=(1) /REL LIB001 /WR-T ' ' /WR-T '**** Aufbereitung beendet.' /WR-T '**** Das Ergebnis steht in der Liste &LISTOUT.' /SKIP "Verzweigung abhaengig von der PRINT-Variablen" .&PRINT /WR-T ' ' /.J REMARK Ausdrucken der Liste /PRINT &LISTOUT,PNAME=INF,ENDNO=2048 /WR-T 'Die Liste &LISTOUT wird ausgedruckt.' /.N REMARK /WR-T 'Eine weitere Bibliothek aufbereiten oder die Prozedur beenden ?' /SKIP "Eingabe: A (aufbereiten) oder E (beenden)" .&EINGABE /.A REMARK Erneuter Aufruf der Prozedur /DO DO.LIB.INHALT /STEP /.E REMARK Ende /WR-T ' ' /WR-T '**** Prozedur beendet' /ENDP
SDF-CONV-Ablauf
/start-sdf-conv ——————————————————————————————————————————————————————— (1)
% BLS0517 MODULE 'CVRMAIN' LOADED
% CVR0001 SDF-CONV VERSION 'V03.0B80' STARTED
% CVR0060 SDF-CONV VERSION 'V03.0B80' READY
//convert from-file=do.lib.inhalt,to-file=sdf.do.lib.inhalt,doc=*min —— (2)
% CVR1000 CONVERSION TERMINATED WITH:
% CVR1001 FAILURES: 0
% CVR1002 ERRORS : 0
% CVR1003 WARNINGS: 0
% CVR1004 NOTES : 2
//end ————————————————————————————————————————————————————————————————— (3)
(1) | Start des Dienstprogramms SDF-CONV. |
(2) | In der CONVERT-Anweisung wird die Ein- und Ausgabeprozedur zugewiesen sowie die Dokumentationsmenge bestimmt.Alle anderen Operanden der CONVERT-Anweisung behalten den Standardwert. Nach erfolgter Abarbeitung meldet SDF-CONV, dass die Übersetzung mit zwei Anmerkungen ( |
(3) | Mit der Anweisung END wird SDF-CONV beendet. |
Ablaufprotokoll (SYSLST)
***** BS2000 COMMAND CONVERTER : SDF-CONV V3 ***** page 1 % CVR1010 OPTIONS IN EFFECT: ————————————————————————————————————————— (1) % CVR1011 FROM-FILE = DO.LIB.INHALT % CVR1012 EXPECT-CONTINUATION = *NEW-MODE % CVR1013 PARAMETER-LINES = *CONVERT % CVR1014 TO-FILE = SDF.DO.LIB.INHALT % CVR1015 PRODUCE-CONTINUATION = *NEW-MODE % CVR1016 REPLACE-OLD-FILE = *YES % CVR1017 SYSTEM-SYNTAX-FILE = $.SYSSDF.SDF-CONV.030.USER.U-CMD % CVR1018 GROUP-SYNTAX-FILE = $.SYSSDF.SDF-CONV.030.USER.S-CMD % CVR1019 UNCHANGED-CMD = *NONE % CVR1020 DOCUMENTATION = *MINIMUM % CVR1021 TARGET-VERSION = *V10 % CVR1022 OUTPUT-FORM = *STD % CVR1023 PROCEDURE-FORMAT = *SAME(BLOCK-INPUT=*NOT-ALLOWED) ***** BS2000 COMMAND CONVERTER : SDF-CONV V3 ***** page 2 /PROC N,(&LIBNAME=,&LISTOUT=,&PRINT=,&EINGABE),SUBDTA=& —————————————— (2) /DCLJV #NEUBILD /SETJV #NEUBILD,X'0C' /WR-T '&(#NEUBILD)' /WR-T ' ' /WR-T '*******************************************************' /WR-T '**** Auflisten von Elementen einer Bibliothek ****' /WR-T '*******************************************************' /WR-T ' ' /WR-T 'Name der Bibliothek : LIBNAME' /REMARK Eingabe &LIBNAME /SYSFILE SYSOUT=*DUMMY /FS &LIBNAME /SYSFILE SYSOUT=() /SKIP .LINK /STEP "Fehler beim FSTATUS" /SYSFILE SYSOUT=() /WR-T ' ' /WR-T 'Fehlerhafte Eingabe !' /WR-T 'Bibliothek &LIBNAME existiert nicht/kann nicht geoeffnet werden' /SKIP .E /.LINK REMARK Aufbereiten der Bibliothek /WR-T 'Name der Ausgabe-Liste : LISTOUT' /WR-T 'Bei einer bereits bestehenden Ausgabe-Liste ' /WR-T 'werden die Daten ab Dateiende angefuegt. ' /WR-T 'Soll die Liste ausgedruckt werden (J/N) ? : PRINT' /REMARK Eingabe &LISTOUT und &PRINT /SETSW ON=(1) /SYSFILE SYSDTA=(SYSCMD) /SYSFILE SYSLST=(&LISTOUT,EXTEND) /SYSFILE SYSOUT=*DUMMY /FILE &LIBNAME,LINK=LIB001 /EXEC $LMS PAR INFO=SUMMARY PRT (LST) LST* (1) END /STEP /SYSFILE SYSOUT=() /SYSFILE SYSLST=() /SYSFILE SYSDTA=() /SETSW OFF=(1) /REL LIB001 /WR-T ' ' /WR-T '**** Aufbereitung beendet.' /WR-T '**** Das Ergebnis steht in der Liste &LISTOUT.' /SKIP "Verzweigung abhaengig von der PRINT-Variablen" .&PRINT /WR-T ' ' /.J REMARK Ausdrucken der Liste /PRINT &LISTOUT,PNAME=INF,ENDNO=2048 % CVRF040 INPUT COMMAND NOT CONVERTED ———————————————————————————————— (3) /WR-T 'Die Liste &LISTOUT wird ausgedruckt.' /.N REMARK /WR-T 'Eine weitere Bibliothek aufbereiten oder die Prozedur beenden ?' /SKIP "Eingabe: A (aufbereiten) oder E (beenden)" .&EINGABE /.A REMARK Erneuter Aufruf der Prozedur /DO DO.LIB.INHALT % CVRF061 COMMAND CAN NEVER BE CONVERTED TO A SECURED SDF FORM; ORIGINAL INPUT REMAINS VALID ——————————————————————————————————————————————————— (4) /STEP /.E REMARK Ende /WR-T ' ' /WR-T '**** Prozedur beendet' /ENDP % CVR1000 CONVERSION TERMINATED WITH: ———————————————————————————————— (5) % CVR1001 FAILURES: 0 % CVR1002 ERRORS : 0 % CVR1003 WARNINGS: 0 % CVR1004 NOTES : 3
(1) | Es werden die für den durchgeführten SDF-CONV-Lauf eingestellten Operandenwerte ausgegeben. |
(2) | Ausgabe aller Kommandosätze der Eingabeprozedur. |
(3) | SDF-CONV meldet eine |
(4) | SDF-CONV meldet eine |
(5) | Der letzte Teil des Protokolls ist identisch mit der Ausgabe nach SYSOUT. |
Ausgabeprozedur SDF.DO.LIB.INHALT
/BEGIN-PROCEDURE LOGGING=NO,PARAMETERS=YES(PROCEDURE-PARAMETERS=(- /&LIBNAME=,- /&LISTOUT=,- /&PRINT=,- /&EINGABE),ESCAPE-CHARACTER='&') /SET-JV-LINK JV-NAME=#NEUBILD /MODIFY-JV JV-IDENTIFICATION=JV-NAME(JV-NAME=#NEUBILD),VALUE=X'0C' /WRITE-TEXT '&(#NEUBILD)' ————————————————————————————————————————————— (1) /WRITE-TEXT ' ' /WRITE-TEXT '*******************************************************' /WRITE-TEXT '**** Auflisten von Elementen einer Bibliothek ****' /WRITE-TEXT '*******************************************************' /WRITE-TEXT ' ' /WRITE-TEXT 'Name der Bibliothek : LIBNAME' /REMARK Eingabe &LIBNAME /ASSIGN-SYSOUT TO=*DUMMY /SHOW-FILE-ATTRIBUTES FILE-NAME=&LIBNAME,SELECT=BY-ATTRIBUTES /ASSIGN-SYSOUT TO=*PRIMARY /SKIP-COMMANDS TO-LABEL=LINK /"*****" REMARK '/STEP "Fehler beim FSTATUS"' ———————————————————————— (2) /SET-JOB-STEP /ASSIGN-SYSOUT TO=*PRIMARY /WRITE-TEXT ' ' /WRITE-TEXT 'Fehlerhafte Eingabe !' /WRITE-TEXT 'Bibliothek &LIBNAME existiert nicht/kann nicht geoeffnet w- /erden' /SKIP-COMMANDS TO-LABEL=E /.LINK REMARK Aufbereiten der Bibliothek /WRITE-TEXT 'Name der Ausgabe-Liste : LISTOUT' /WRITE-TEXT 'Bei einer bereits bestehenden Ausgabe-Liste ' /WRITE-TEXT 'werden die Daten ab Dateiende angefuegt. - / ' /WRITE-TEXT 'Soll die Liste ausgedruckt werden (J/N) ? : PRINT' /REMARK Eingabe &LISTOUT und &PRINT /MODIFY-JOB-SWITCHES ON=1 /ASSIGN-SYSDTA TO=*SYSCMD /ASSIGN-SYSLST TO=&LISTOUT,OPEN-MODE=EXTEND /ASSIGN-SYSOUT TO=*DUMMY /"*****" REMARK '/CREATE-FILE FILE-NAME=&LIBNAME,SUPPRESS-ERRORS=- /*FILE-EXISTING' /"*****" REMARK 'SET-FILE-LINK LINK-NAME=LIB001,FILE-NAME=&LIBNAME' /ADD-FILE-LINK LINK-NAME=LIB001,FILE-NAME=&LIBNAME,SUPPORT=*DISK /START-PROGRAM FROM-FILE=$LMS PAR INFO=SUMMARY PRT (LST) LST* (1) END /SET-JOB-STEP /ASSIGN-SYSOUT TO=*PRIMARY /ASSIGN-SYSLST TO=*PRIMARY /ASSIGN-SYSDTA TO=*PRIMARY /MODIFY-JOB-SWITCHES OFF=1 /REMOVE-FILE-LINK LINK-NAME=LIB001 /WRITE-TEXT ' ' /WRITE-TEXT '**** Aufbereitung beendet.' /WRITE-TEXT '**** Das Ergebnis steht in der Liste &LISTOUT.' /"*****" REMARK '/SKIP "Verzweigung abhaengig von der PRINT-Variablen" - (3) /.&PRINT' /SKIP-COMMANDS TO-LABEL=&PRINT /WRITE-TEXT ' ' /.J REMARK Ausdrucken der Liste /PRINT &LISTOUT,PNAME=INF,ENDNO=2048 —————————————————————————————————— (4) /WRITE-TEXT 'Die Liste &LISTOUT wird ausgedruckt.' /.N REMARK /WRITE-TEXT 'Eine weitere Bibliothek aufbereiten oder die Prozedur been/den ?' /"*****" REMARK '/SKIP "Eingabe: A (aufbereiten) oder E (beenden)" .&EI- (5) /NGABE' /SKIP-COMMANDS TO-LABEL=&EINGABE /.A REMARK Erneuter Aufruf der Prozedur /"*****" REMARK '/CALL-PROCEDURE NAME=DO.LIB.INHALT' —————————————————— (6) /DO DO.LIB.INHALT /SET-JOB-STEP /.E REMARK Ende /WRITE-TEXT ' ' /WRITE-TEXT '**** Prozedur beendet' /EXIT-PROCEDURE
(1) | Das Kommando WRITE-TEXT ist ein SDF-Kommando. Es braucht demzufolge nicht übersetzt zu werden. SDF-CONV erweitert das Eingabekommando auf sein volles Eingabeformat. |
(2) | Der Kommandosatz mit dem Inline-Kommentar wird in eine Kommentarzeile geschrieben, die vor der Kommandozeile mit der Übersetzung steht. Dadurch ist gewährleistet, dass die Information des Inline-Kommentars bei der Übersetzung nicht verloren geht (Voraussetzung: DOCUMENTATION=*MIN/*MAX). |
(3) | siehe Punkt (2). |
(4) | Der Kommandosatz mit dem nicht übersetzten PRINT-Kommando wird aus der Eingabeprozedur übernommen. |
(5) | siehe Punkt (2). |
(6) | Der Kommandosatz mit dem nicht übersetzten DO-Kommando wird aus der Eingabeprozedur übernommen. SDF-CONV macht jedoch zusätzlich einen Vorschlag, wie die Übersetzung dieses DO-Kommandos aussehen könnte. Der Vorschlag wird als Kommentarzeile vor den nicht übersetzten Kommandosatz geschrieben(Voraussetzung: DOCUMENTATION=*MIN/*MAX). |