Domanda

Sono un po 'confuso su come creare una variabile simbolica in JCL per un incarico che sto facendo nella mia classe COBOL.

Per esempio, dovrei "specificare un parametro simbolico per l'opzione PARM e specificare TEST e Esort come predefinito".

Come faccio a designare l'opzione "PARM" per essere un parametro simbolico?

EDIT: Perdonate la supervisione; sembra che ho dimenticato di dire quale sistema operativo che sono in esecuzione in. Sto scrivendo questo file JCL in z / OS.

Grazie in anticipo!

EDIT:

@avisser:

Quindi, quello che stai dicendo è che io posso solo chiamare "& PARM = 'TEST, Esort'" e, se volevo cambiare il parametro quando ho eseguito questo proc con un'altra affermazione JCL, i parms elencati possono essere cambiato dal chiamando JCL?

EDIT:

@avisser:

Sì, mi dispiace, ho davvero bisogno di lavorare su essere più specifici ... Nel mio COBOL JCL, sto chiamando il COBOL compilatore (IGYCRCTL), l'editor di Collegamento (HEWL) e un programma fetch (EXEC PGM =).

EDIT:

Forse sarebbe utile per vedere che cosa la mia uscita è. Ho davvero apprezzato tutti coloro che hanno cercato di aiutare finora.

Output:

------ JES2 Statistica ------

       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

!! FINE DEL JES file di spool !!        1 // KC03CEFA JOB, 'MATT R', MSGCLASS = H, TYPRUN = SCAN JOB07731          // *
       2 // Step01 EXEC PGM = IGYCRCTL, & REGIONE = 248K,
         // & PARM = 'TEST, Esort'
       3 // STEPLIB DD DSN = IGY340.SIGYCOMP, DISP = SHR
         / *
       4 // SYSLIN DD & DSN = && OBJSET, UNIT = DISK, SPAZIO = (TRK, (3,3)),
         // & DISP = (NUOVO, Ignora, Elimina)
       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, SPAZIO = (CYL, (1,1))
      11 // SYSUT6 DD UNIT = DISK, SPACE = (CYL, (1,1))
      12 // SYSUT7 DD UNIT = DISK, SPAZIO = (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),
         // SPAZIO = (1024, (50,20,1)), UNIT = DISK,
         // DISP = (NUOVO, CATLG, DELETE)
      17 // SYSPRINT DD SYSOUT = *
      18 // STAMPANTE 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 // STAMPANTE DD SYSOUT = *
      25 // PRODOTTI DD DSN = KC02322.CSCI465.SP09 (DATA1), DISP = SHR
      26 // SYSIN DD *
!! FINE DEL JES file di spool !!  STMT NO. MESSAGGIO         2 IEFC630I NON IDENTIFICATO PAROLA CHIAVE E REGIONI         2 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & PARM         4 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & DSN         4 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & DISP        13 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & COND        13 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & reagion        13 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & PARM        15 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & DSN        15 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & DISP        20 IEFC630I NON IDENTIFICATO PAROLA CHIAVE & PARM        22 IEFC605I NON IDENTIFICATO campo operatorio        23 IEFC605I NON IDENTIFICATO campo operatorio !! FINE DEL JES file di spool !!

È stato utile?

Soluzione

parametri simbolici sono nomi preceduti da una e commerciale. Quando viene utilizzato in una dichiarazione JCL, in fase di esecuzione che vengono convertiti nel valore fornito. Un modo di creare loro (su z / OS) sta usando una

// SET name = value

dichiarazione. Se si utilizza un PARM, è necessario progettare il vostro programma in modo che possa lavorare con uno. Forse l'assegnazione è su come fare che (suggerimento: la sezione di collegamento). O è JCL una parte della classe COBOL?

TEST e Esort guardare a me come direttive del compilatore. Non so se è possibile indicare nel programma, al mio posto di lavoro forniamo solo per loro quando si chiama il compilatore.

EDIT:

Ok questo è un po 'inusuale per me, come si tende a compilare ed eseguire i nostri programmi in JCL separata flussi. Ma in ogni caso.

Prendendo la tua seconda affermazione:

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

regione e PARM sono i cosiddetti parametri posizionali e sono le parole chiave, non veramente destinata a essere presentato come nomi simbolici, anche se sei libero di farlo (questo spiegherà i messaggi "NON IDENTIFICATO PAROLA CHIAVE").
L'uso comune - se del caso - è quello di fornire i nomi simbolici per il operandi di tali parametri. E, ovviamente, è necessario definire un valore per loro in primo luogo, per esempio:

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

Altri suggerimenti

Ok, ho fatto qualche ricerca, e, con la guida che avisser mi ha dato, sono stato in grado di capire cosa dovevo fare. Così, per riferimento futuro per tutti coloro che potrebbero avere questa domanda (o uno simile), ecco che cosa ho capito:

Passaggio 1: Creare un "PROC" con le variabili che verrà utilizzato

.

es. Ho voluto utilizzare le variabili per il "PARM" nel mio compilatore COBOL che ha avuto i valori predefiniti di "TEST" e "Esort", così ho scritto qualcosa del tipo:

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

Passaggio 2: Utilizzare i parametri simbolici appena definiti nel vostro passo JCL attuale. Il carattere "&" dimostra che tutto ciò che segue è un parametro simbolico.

es. Ho usato il già citato "CPARM" per il mio passo COBOL di compilazione:

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

Passo 3:. Terminare il "PROC" con una dichiarazione "PEND" dopo vostro passo attuale

es. Dopo che ho elencato tutte le mie variabili e ho elencato tutti i passaggi per la compilazione (nome del compilatore, in cui il compilatore può essere trovato, e, come si può vedere a destra prima della dichiarazione PEND, le dichiarazioni SYSUT1-SYSUT7), posizionare la parola chiave PEND:

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

Passo 4: Aggiungere tutte le misure JCL aggiuntivi e / o codice al vostro file di origine e il gioco è fatto

!

Note:

-Si può avere più di un'istruzione PROC in un unico file JCL. Ho avuto tre: uno per la compilazione COBOL, uno per l'editor di collegamento e una per il programma di recupero. Ho anche il codice COBOL nello stesso file che le mie affermazioni PROC sono.

-Questo ha avuto luogo il un mainframe IBM in esecuzione z / OS.

-Above, si può vedere che la mia variabile "CPARM" è impostato di default di 'TEST, Esort'. E 'possibile avere una variabile essere nullo per difetto, semplicemente lasciando il campo vuoto (es. CPARM =,).

-Si avranno notato che dopo la definizione CPARM, c'è una virgola; questo è perché ho più variabili dopo di esso. Si ricorda che l'ultimo parametro simbolico si crea per ogni PROC non dovrebbe avere nulla in seguito (cioè. Senza virgola). È possibile, naturalmente, inserire una riga di commento (// *), un altro PROC o codice vero e proprio seguito, ma l'ultimo parametro simbolico dovrebbe avere nulla di seguirlo sulla stessa linea.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top