Limbaj de control operațional - Operational Control Language

Limbajul de control operațional (OCL) este limbajul de control al familiei de minicomputer IBM System / 32 , System / 34 și System / 36 . Este compatibil cu IBM i 's System / 36 Environment în scopuri de compatibilitate inversă. Este similar cu limbile de control mai vechi JCL ( System / 370 ) și System / 3 și nu are legătură cu limbajul de control ulterior ( System / 38 și IBM AS / 400 ) și REXX (AS / 400).

Prezentare generală

Pe IBM S / 32, S / 34 și S / 36, instrucțiunile OCL sunt utilizate pentru a încărca direct programe de utilizator sau de sistem în memorie, pentru a le atribui resurse de sistem și pentru a le transfera controlul sistemului într-un proces numit execuție. Faptul că un program este stocat pe unitatea de disc a computerului nu determină în sine computerul să proceseze sau să execute programul.

Instrucțiunile OCL pot fi introduse manual de la tastatură, dar sunt în general stocate ca membru de procedură S / 32, S / 34 sau S / 36. Un membru de procedură este un membru editabil în mod liber în cadrul unei biblioteci, este un fișier sursă. Pe S / 32, S / 34 și S / 36, procedurile nu sunt compilate, sunt interpretate .

Exemplu

Instrucțiunile OCL încep de obicei cu două bare oblice și cel puțin un caracter spațial. Iată un exemplu de procedură stocată pe un sistem / 36 ca membru PROC1:

** Procedure PROC1                  Optional documentation
** 
** Written by Joe User 2006-05-29
**
** 
// * 'PROC1 procedure is running'
// * ' '
// IFF ACTIVE-'PROC2,PROC3' GOTO OKAY
**                                  IFF means 'if false'
**                                  ACTIVE-'name1,name2' means true
**                                  if at least one of the listed programs is currently running
**                                  GOTO xxx means skip to the statement
**                                  that has a TAG xxx and resume processing
// PAUSE 'Cannot continue because other Payroll is running'
**                                  Halts execution with a message
// CANCEL                           Stops execution of this procedure
// TAG OKAY
// IFF DATAF1-PFILE1 IFF DATAF1-PFILE2 GOTO NODELT
// * 'Caution, Pay Data Exists'     Displays information on terminal
// * ' '
// * 'Press 1 to continue and DELETE existing files'
// IFF '1'=?1R? CANCEL              A parameter is indicated by question marks surrounding a number
**                                  Using 1R between question marks indicates
**                                  that the parameter is required
**                                  and processing waits for user input.  
**                                  CANCEL means immediately go to end of job.
// LOAD $DELET                      $DELET is used to delete files
// RUN
**                                  This program requires and processes, consumes,
**                                  succeeding statements as data up until an END statement 
// IF DATAF1-PFILE1 SCRATCH UNIT-F1,LABEL-PFILE1
**                                  Conditionally deletes an existing disk file
// IF DATAF1-PFILE2 SCRATCH UNIT-F1,LABEL-PFILE2
// END
**
// TAG NODELT
// LOAD PR101                       PR101 could be an RPG or COBOL program
// FILE NAME-PAYMAST,DISP-SHR       PAYMAST is the payroll master file
// FILE NAME-PFILE1,DISP-NEW,RECORDS-100,EXTEND-100
**                                  A new file PFILE1 is created and allocated
**                                  100 records are assigned to PFILE1
**                                  when all are used, the system tries to extend it by another 100
**                                  each time it fills.
// RUN
**                                  END statement is only necessary
**                                  for those programs enabled
**                                  to process any following statements as data
**                                  Such data does not need to be formatted like OCL
// SWITCH 1XX0XXXX                  Causes flags U1 through U8 to be SETON (1), OFF (0), or left as previously set (X)
**
// LOCAL OFFSET-1,DATA-'PROC1'      Places PROC1 in the Local Data Area (LDA)
// LOCAL OFFSET-101,DATA-'?USER?'   Substitutes the operator's User ID                        
**                                  LDA is accessed via a data structure, UDS within an RPG program
**                                  LDA and User switches (flags) remain available to succeeding programs
**                                  until set otherwise
**                                  Called sub-procedure members and loaded program's source code needs to be examined
**                                  as to whether or not the LDA and User switches are actually read or altered
// LOAD PR102
// FILE NAME-PAYMAST,DISP-SHR       DISP-SHR means the file is shared, versus exclusive access
**                                  Other programs can use PAYMAST at the same time
// FILE NAME-PFILE,LABEL-PFILE1     NAME/LABEL is used when the RPG file name reference
**                                  and the actual disk file label are different
// RUN
// RETURN                           Return to the calling procedure, otherwise end-of-job

Acest membru de procedură încorporează o varietate de instrucțiuni OCL, de asemenea, expresii de control a procedurilor (PCE), resurse, adică sunt alocate în mare parte fișiere și mai mulți pași de job, adică programe sunt executate.

Comentariile sunt reprezentate de un asterisc în coloana 1 și altfel în format liber. Sau poate fi plasat după sfârșitul logic al unei instrucțiuni, dacă nu există un indicator pentru continuarea instrucțiunii pe linia următoare, ca o virgulă finală.

linkuri externe

IBM menține manual manual și descărcabil, inclusiv OCL 36.