Frage

Ich bin ein wenig verwirrt darüber, wie eine symbolische Variable in JCL für eine Zuordnung erstellen ich in meiner COBOL Klasse tue.

Zum Beispiel soll ich „Geben Sie einen symbolischen Parameter für die PARM Option und TEST und APOST als Standard festlegen.“

Wie kann ich die "PARM" Option bezeichnen ein symbolischer Parameter sein?

EDIT: Verzeihen Sie die Aufsicht; es scheint, dass ich vergessen zu erwähnen, was OS ich leite. ich diese JCL-Datei in z / OS schreibe.

Vielen Dank im Voraus!

EDIT:

@avisser:

Also, was Sie sagen, ist, dass ich es nur nennen kann „& PARM =‚TEST, APOST‘“ und, wenn ich diesen Parameter ändern wollte, wenn ich diese Prozedur mit einer anderen JCL-Anweisung ausführen, kann die parms aufgeführt sein geändert vom rufenden JCL?

EDIT:

@avisser:

Ja, sorry, ich muß wirklich auf seinem präzisen arbeiten ... In meinem COBOL JCL, ich rufe den COBOL-Compiler (IGYCRCTL), die Linkage Editor (HEWL) und ein Programm holen (EXEC PGM =).

EDIT:

Vielleicht würde es helfen, zu sehen, was meine Ausgabe ist. Ich schätze wirklich alle diejenigen, die versucht haben, so weit zu helfen.

Ausgabe:

------ JES2 JOB STATISTIK ------

       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

!! ENDE DER JES Spooldatei !!        1 // KC03CEFA JOB 'MATT R', MSGCLASS = H, = TYPRUN SCAN JOB07731          // *
       2 // STEP01 EXEC PGM = IGYCRCTL & REGION = 248K,
         // & PARM = 'TEST, APOST'
       3 // STEPLIB DD DSN = IGY340.SIGYCOMP, DISP = SHR
         / *
       4 // SYSLIN DD & DSN = && OBJSET, UNIT = DISK, SPACE = (TRK, (3,3)), Frankreich          // & DISP = (NEW, PASS, DELETE)
       5 // SYSPRINT DD SYSOUT = *
       6 // SYSUT1 DD UNIT = DISK, SPACE = (CYL, (1,1))
       7 // SYSUT2 DD UNIT = DISK, SPACE = (CYL, (1,1))
       8 // SYSUT3 DD UNIT = DISK, SPACE = (CYL, (1,1))
       9 // SYSUT4 DD UNIT = DISK, SPACE = (CYL, (1,1))
      10 // SYSUT5 DD UNIT = DISK, SPACE = (CYL, (1,1))
      11 // SYSUT6 DD UNIT = DISK, SPACE = (CYL, (1,1))
      12 // SYSUT7 DD UNIT = DISK, SPACE = (CYL, (1,1))
         // *
         // *
      13 // STEP02 EXEC PGM = HEWL & COND = & reagion = 2048K,
         // & PARM =
      14 // SYSLIB DD DSN = CEE.SCEELKED, DISP = SHR
      15 // SYSLIN DD & DSN = && OBJSET & DISP = (OLD, DELETE)
      16 // SYSLMOD DD DSN = && TEMPLIB (PGM6), Frankreich          // SPACE = (1024, (50,20,1)), UNIT = DISK,
         // DISP = (NEW, CATLG, DELETE)
      17 // SYSPRINT DD SYSOUT = *
      18 // DRUCKER DD SYSOUT = *
      19 // SYSUT1 DD UNIT = DISK, SPACE = (TRK, (10,10))
         // *
         // *
      20 // STEP01 EXEC PGM = PGM6 & PARM = TERMTHDACT (DUMP)
      21 // STEPLIB DD DSN = && TEMPLIB, DISP = SHR
      22 // CEEDUMP
      23 // SYSUDUMP
      24 // DRUCKER DD SYSOUT = *
      25 // PRODUKTE DD DSN = KC02322.CSCI465.SP09 (DATA1), DISP = SHR
      26 // SYSIN DD *
!! ENDE DER JES Spooldatei !!  STMT NO. BOTSCHAFT         2 IEFC630I UNIDENTIFIED STICHWORT & REGION         2 IEFC630I UNIDENTIFIED STICHWORT & PARM         4 IEFC630I UNIDENTIFIED STICHWORT & DSN         4 IEFC630I UNIDENTIFIED STICHWORT & ANZ        13 IEFC630I UNIDENTIFIED STICHWORT & COND        13 IEFC630I UNIDENTIFIED STICHWORT & reagion        13 IEFC630I UNIDENTIFIED STICHWORT & PARM        15 IEFC630I UNIDENTIFIED STICHWORT & DSN        15 IEFC630I UNIDENTIFIED STICHWORT & ANZ        20 IEFC630I UNIDENTIFIED STICHWORT & PARM        22 IEFC605I UNIDENTIFIED OPERATION GEBIET        23 IEFC605I UNIDENTIFIED OPERATION GEBIET !! ENDE DER JES Spooldatei !!

War es hilfreich?

Lösung

symbolische Parameter sind Namen durch ein kaufmännisches voraus. Wenn er in einer JCL-Anweisung zur Laufzeit sie in den bereitgestellte Wert konvertiert werden. Eine Möglichkeit, sie zu schaffen (auf z / OS) wird mit einem

// SET name = value

Erklärung. Wenn Sie eine PARM verwenden, sollten Sie Ihr Programm so gestalten, dass sie mit einem arbeiten können. Vielleicht ist die Zuordnung, wie zu tun, dass (Hinweis: Verbindungsabschnitt). Oder ist JCL ein Teil Ihrer COBOL-Klasse?

TEST und APOST Blick auf mich wie Compiler-Direktiven. Ich weiß nicht, wenn Sie sie in Ihrem Programm, an meinem Arbeitsplatz angeben, können wir sie nur liefern, wenn der Compiler aufrufen.

EDIT:

Ok das ist ein bisschen ungewöhnlich für mich, wie wir neigen dazu, unsere Programme zu kompilieren und auszuführen in separaten JCL-Streams. Aber wie auch immer.

Unter Ihrer zweite Aussage:

2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
  // &PARM='TEST,APOST'

REGION und PARM sind Positionsparameter so genannte und sie sind Schlüsselwörter, nicht wirklich gemeint als symbolische Namen dargestellt werden, obwohl Sie so zu tun frei sind (dies wird die „UNIDENTIFIED STICHWORT“ -Nachrichten erklären).
Die gemeinsame Nutzung - wenn anwendbar - ist symbolischen Namen für den Operanden von schaffen solche Parameter. Und natürlich Sie zunächst einen Wert für sie definieren müssen, z:

  // SET OPTIONS='TEST,APOST'
  //STEP01 EXEC PGM=IGYCRCTL,REGION=248K,
  // PARM=&OPTIONS

Andere Tipps

Ok, ich einige Graben tat, und mit der Führung, die avisser mir gab, konnte ich herausfinden, was ich zu tun hatte. Also, für zukünftige Referenz für alle, die diese Frage haben könnte (oder eine ähnliche), hier ist das, was ich herausgefunden:

Schritt 1: Erstellen eines "PROC" mit den Variablen Sie verwenden

.

ex. Ich wollte Variablen für den „PARM“ in meinen COBOL-Compiler verwenden, um die Standardwerte von „TEST“ und „APOST“ hatten, also schrieb ich so etwas wie:

//PROC1  PROC  CPARM='TEST,APOST',

Schritt 2: Verwenden Sie diese neu definierten symbolischen Parameter in Ihrem aktuellen JCL Schritt. Das Zeichen „&“ zeigt, dass, was auch immer folgt ein symbolischer Parameter ist.

ex. Früher habe ich den oben genannten „CPARM“ für meinen COBOL Kompilierung Schritt:

//COB    EXEC  PGM=IGYCRCTL,REGION=&CREGION,  
//             PARM='&CPARM'

Schritt 3:. Lassen Sie die "PROC" mit einer "PEND" Anweisung nach dem tatsächlichen Schritt

ex. Nachdem ich alle meine Variablen aufgelistet und ich aufgelistet, alle Schritte für die Kompilierung (Compiler-Name, wobei der Compiler gefunden werden kann, und kann so direkt vor dem PEND-Anweisung zu sehen ist, die SYSUT1-SYSUT7 Aussagen) vergeben, Ihr PEND Stichwort:

//SYSUT7   DD UNIT=DISK,SPACE=(CYL,(1,1))  
//         PEND

Schritt 4: Fügen Sie alle zusätzlichen JCL Schritte und / oder Code in Ihre Quelldatei und Sie sind aus

!

Weitere Informationen:

-Sie können in einer einzigen JCL-Datei mehr als eine PROC-Anweisung haben. Ich hatte drei: ein für COBOL-Kompilation, ein für den Linkage Editor und ein für das Programm holen. Ich habe auch COBOL-Code in der gleichen Datei, die meine PROC Aussagen sind in.

-Diese fand auf einem IBM Mainframe z / OS.

-Above, ist zu sehen, dass mein „CPARM“ Variable auf die Standardeinstellung von ‚TEST, APOST‘ gesetzt ist. Es ist möglich, eine Variable standardmäßig zu haben, indem einfach verläßt das Feld leer null sein (ex. CPARM =,).

-Sie haben vielleicht bemerkt, dass nach der CPARM Definition gibt ein Komma ist; Das ist, weil ich mehr Variablen, nachdem sie haben. Bitte denken Sie daran, dass der letzte symbolische Parameter, den Sie für jede gegebene PROC erstellen soll nichts hat es folgende (dh. Kein Komma). Sie können natürlich, legen Sie eine Kommentarzeile (// *), eine andere PROC oder tatsächliche Code später, aber der letzte symbolische Parameter sollte nichts, um es auf der gleichen Linie folgende Voraussetzungen erfüllt sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top