Uruchamianie skryptów w batch-u. Kurs REXX cz. 8

W ostatniej części kursu poruszymy zagadnienie uruchamiania skryptów wsadowo (ang. batch). Jest to najczęstszy sposób uruchamiania programów z jakim będziemy się spotykać w trakcie naszej przygody z programowaniem na mainframe.

Poprzednia część kursu>>

1.Wstęp

Nasze programy możemy uruchomić w dwóch przestrzeniach adresowych, w TSO/E oraz MVS. W przypadku uruchamiania skryptów w TSO/E do dyspozycji mamy trzy programy służące do interpretacji skryptów:

  • IKJEFT01
  • IKJEFT1A
  • IKJEFT1B

Różnice między nimi są subtelne i sprowadzają się do dodatkowych kodów powrotu w przypadku błędu (spostrzegawczy dostrzegą, że IKJEFT01 jest programem, który jest wykonywany kiedy logujemy się do sesji TSO).
Do dyspozycji mamy również program IRXJCL, jednakże nie możemy tutaj wykorzystać w naszych skryptach komend TSO.

2.JCL

Poniżej przedstawię kilka zastosowań JCL za pomocą których uruchomimy przykładowe programy. Przy wykorzystaniu obu sposobów uruchamiania skryptów wsadowo (IKJFT* lub IRXJCL) wymagane jest podanie zdań DD:

  • SYSEXEC – biblioteka ze skryptami REXX;
  • SYSTSPRT – wyjście np. dla instrukcji Say
  • SYSTSIN – wejście np. parametry do program lub sam program

Opcjonalnie możemy dodać SYSPRINT czyli informacje od systemu oraz pozostałe zdania wymagane przez nasz skrypt (np. zbiór który zamierzamy odczytać).

2.1.IKJFT*
//REXIKJ JOB 'USER','XXX',CLASS=B,MSGCLASS=H,
// MSGLEVEL=(1,1)
//REXXTSO EXEC PGM=IKJEFT01,PARM=ADD
//SYSEXEC DD DISP=SHR,DSN=SERWER.BLOG.REXX.CNTL
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
10 15
/*

Powyższy skrypt JCL uruchamia program ADD, który znajduje się w zbiorzeSERWER.BLOG.REXX.CNTL i wygląda tak:

/* Rexx */
Parse Pull var_1 var_2 .
Say "Program dodaje dwie liczby";
var_x = var_1 + var_2;
Say "Wynik dodawania: " var_x;
Exit 0;

Jeżeli chcemy uruchomić dwa skrypty możemy to zrobić w następujący sposób:

//REXIKJ JOB 'USER','XXX',CLASS=B,MSGCLASS=H,
// MSGLEVEL=(1,1)
//REXXTSO EXEC PGM=IKJEFT01
//SYSEXEC DD DISP=SHR,DSN=SERWER.BLOG.REXX.CNTL
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
ADD
10 15

SUBT

16 4

/*

W drugim przypadku nie podajemy nazwy programu w parametrze PARM tylko obie wykazujemy w zdaniu SYSTSIN, a zaraz po nazwie podajemy parametry.

Analogicznie działa IRXJCL, którego działanie proponuję przetestować samemu.

Komentarze

Brak komentarzy

The comments are closed.

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.

Subskrybuj RSS