Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Beispiel 1: Kommando zum Assemblieren

&pagelevel(4)&pagelevel

Es soll ein Kommando definiert und mittels Prozedur implementiert werden, das ein Assem-bler-Quellprogramm übersetzt und das erzeugte Bindemodul in der EAM-Bindemoduldatei speichert. Die benötigten Makros können in einer benutzereigenen Makrobibliothek stehen. Das Kommando soll folgendes Format haben:

ASSEMBLE-SOURCE

SOURCE = <filename 1..54>

,MACRO-LIBRARY = *NONE / <filename 1..54>

,TEST-SUPPORT = *NO / *YES

Das Kommando wird mittels Prozedur implementiert. Die symbolischen Operanden stehen als Stellungsoperanden in der Operandenliste des BEGIN-PROCEDURE-Kommandos. Die folgende Prozedur steht als Element ASSEMB in der Programmbibliothek
$SDFUSR.PROC.LIB.

/BEGIN-PROCEDURE PARAMETERS=*YES(PROC-PARAM=(&SOURCE,&MACROLIB,&TEST))
/DELETE-SYSTEM-FILE FILE-NAME=*OMF
/ASSIGN-SYSDTA TO=*SYSCMD
/START-ASSEMBH
//     COMPILE SOURCE=&SOURCE,//
             MACRO-LIB=&MACROLIB,//
             TEST=&TEST
//     END
/SET-JOB-STEP
/ASSIGN-SYSDTA TO-FILE=*PRIMARY
/END-PROCEDURE 

Das Kommando ASSEMBLE-SOURCE wird in der Benutzersyntaxdatei SDF.USER.SYNTAX definiert. Anschließend wird es getestet.

/set-logon-parameters  sdfusr,... —————————————————————————————————————  (1)
/mod-sdf-options syntax-file=*remove(*std) ————————————————————————————  (2)
/start-sdf-a ——————————————————————————————————————————————————————————  (3)
%  BLS0517 MODULE 'SDAMAIN' LOADED
%  SDA0001 'SDF-A' VERSION '04.1E10' STARTED
%//open-syntax-file sdf.user.syntax ———————————————————————————————————  (4)
%//set-glob cont=*new —————————————————————————————————————————————————  (5)
%//add-cmd assemble-source,help=e('Assembles a program'), -
%//domain=programming-support, -
%//implementor=*proc('*lib-elem(lib=$sdfusr.proc.lib,elem=assemb)') ———  (6)
%//add-oper source,res-oper-name=*pos(1) ——————————————————————————————  (7)
%//add-value *filename ————————————————————————————————————————————————  (8)
%//add-oper macro-library,def='*none',res-oper-name=*pos(2) ———————————  (9)
%//add-value *keyw(*mand),value='*none' ——————————————————————————————— (10)

                                                                                       

(1)

Unter der Benutzerkennung SDFUSR wird eine Task gestartet.

(2)

Die bei der LOGON-Verarbeitung automatisch aktivierte Benutzersyntaxdatei SDF.USER.SYNTAX wird deaktiviert.

(3)

SDF-A wird geladen und gestartet.

(4)

Die bereits existierende Benutzersyntaxdatei SDF.USER.SYNTAX wird geöffnet.

(5)

In der Globalinformation wird festgelegt, dass das Fortsetzungszeichen „-“ für Folgezeilen bei Eingabe von SYSCMD oder SYSSTMT in Spalte 2 bis 72 stehen kann.

(6)

Der Kopf des Kommandos ASSEMBLE-SOURCE wird definiert. Es erhält einen englischen Hilfetext und wird dem Anwendungsbereich PROGRAMMING-SUPPORT zugeordnet. Es ist mittels der Prozedur implementiert, die als Element ASSEMB in der Programmbibliothek $SDFUSR.PROC.LIB steht.

(7)

Der erste Operand des Kommandos ASSEMBLE-SOURCE wird definiert. Sein Name ist SOURCE. In der Zeichenkette, die an die Prozedur übergeben wird, steht er an erster Position.

(8)

Es wird definiert, dass der Wert des Operanden SOURCE vom Datentyp FILENAME sein muss.

(9)

Der zweite Operand des Kommandos ASSEMBLE-SOURCE wird definiert. Sein Name ist MACRO-LIBRARY. Sein Default-Wert ist *NONE. In dem an die Prozedur zu übergebenden String steht er an zweiter Position.

(10)

Es wird definiert, dass das Schlüsselwort NONE ein zulässiger Wert des Operanden MACRO-LIBRARY ist. Ihm muss bei der Eingabe ein Stern vorangestellt sein.

%//add-value *filename ———————————————————————————————————————————————— (11)
%//add-oper test-support,def='no',res-oper-name=*pos(3) ——————————————— (12)
%//add-value *keyw,value='no' ————————————————————————————————————————— (13)
%//add-value *keyw,value='yes' ———————————————————————————————————————— (14)
%//close-cmd —————————————————————————————————————————————————————————— (15)
%//show *com(assemb-source),siz=*max —————————————————————————————————— (16)
ASSEMBLE-SOURCE

     Assembles a program
     SOURCE =
          filename_1..54
     MACRO-LIBRARY = *NONE
          *NONE or filename_1..54
     TEST-SUPPORT = *NO
          *NO or *YES
%//end ———————————————————————————————————————————————————————————————— (17)

                                                                                       

(11)

Es wird definiert, dass der Wert des Operanden MACRO-LIBRARY vom Datentyp FILENAME sein kann.

(12)

Der dritte globale Operand des Kommandos ASSEMBLE-SOURCE wird definiert. Sein Name ist TEST-SUPPORT und der Default-Wert ist NO. In dem an die Prozedur zu übergebenden String steht er an dritter Position.

(13)

Es wird definiert, dass das Schlüsselwort NO ein zulässiger Wert des Operanden TEST-SUPPORT ist.

(14)

Es wird definiert, dass das Schlüsselwort YES ein zulässiger Wert des Operanden TEST-SUPPORT ist.

(15)

Die Definition des Kommandos ASSEMBLE-SOURCE wird beendet.

(16)

Die in der Benutzersyntaxdatei SDF.USER.SYNTAX erstellte Definition des Kommandos ASSEMBLE-SOURCE wird in der ausführlichsten Form ausgegeben. Für alle Dateinamen hat SDF-A eine minimale Länge von 1 und eine maximale von 54 definiert.

(17)

SDF-A wird beendet. Die Benutzersyntaxdatei SDF.USER.SYNTAX wird damit implizit abgespeichert.

/mod-sdf-opt synt-file=*add(*std),guid=*n ————————————————————————————— (18)
/assemb-source demo.prog1,macro-lib=demo.maclib.test-support=*yes ————— (19)
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '1.2B00' OF '1998-04-24' LOADED
%  BLS0552 COPYRIGHT (C) FUJITSU SIEMENS COMPUTERS GMBH 1990. ALL RIGHTS
RESERVED

%  ASS6010 V01.2B02 OF BS2000 ASSTRAN  READY
%  ASS6011 ASSEMBLY TIME: 302 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NOTE
%  ASS6006 LISTING GENERATOR TIME: 130 MSEC
%  ASS6012 END OF ASSTRAN
 .
 .
 .

                                                                                       

(18)

Die Benutzersyntaxdatei SDF.USER.SYNTAX, in der das Kommando ASSEMBLE-SOURCE definiert ist, wird aktiviert.

(19)

Das Kommando ASSEMBLE-SOURCE wird eingegeben. Die benutzereigene Makrobibliothek DEMO.MACLIB wird angegeben. Nach Ausführung des Kommandos ist das erzeugte Bindemodul in der EAM-Bindemoduldatei abgelegt.