ALGOL Examples

The following sample program initiates a separate program called REPORTER. The REPORTER program is initiated twice, both times as an asynchronous task, and is passed a different parameter each time. The sample program then uses a WAITANDRESET statement to prevent a critical block exit.

BEGIN
EBCDIC ARRAY DAILYTYPE[0:5],
             WEEKLYTYPE[0:6];
TASK T, T2;
PROCEDURE REPORTS (ACTUALARRAY);
   EBCDIC ARRAY ACTUALARRAY[*];
EXTERNAL;

REPLACE T.NAME BY “(JASMITH)OBJECT/REPORTER ON DATAPK.”;
REPLACE DAILYTYPE[0]  BY “DAILY”;
PROCESS REPORTS (DAILYTYPE) [T];

REPLACE T2.NAME BY “(JASMITH)OBJECT/REPORTER ON DATAPK.”;
REPLACE WEEKLYTYPE[0] BY “WEEKLY”;
PROCESS REPORTS (WEEKLYTYPE) [T2];

WHILE (T.STATUS GTR 0 OR T2.STATUS GTR 0) DO
   WAITANDRESET (MYSELF.EXCEPTIONEVENT);
END.

The following is an example of initiating a compilation from an ALGOL program. The sample program passes an array parameter and makes FILECARDS assignments to tell the compiler what files to use.

BEGIN

TASK CTASK;
ARRAY SHEET[0:32];

PROCEDURE ALGOLCOMPILER(SHEET);
  ARRAY SHEET[*];
  EXTERNAL;

REPLACE CTASK.NAME BY “*SYSTEM/ALGOL ON DISK.”;
REPLACE CTASK.FILECARDS BY
  “FILE CARD (KIND=DISK, TITLE=ALGOL/TASK);”
  “FILE CODE (KIND=DISK, TITLE=OBJECT/ALGOL/TASK);”
   48”00”;

REPLACE SHEET BY 0 FOR 33 WORDS;
SHEET[8]:=VALUE(LIBRARY); % This statement specifies the
                            % object code file disposition.
SHEET[0]:= 0 & 1[47:1];

CALL ALGOLCOMPILER(SHEET) [CTASK];

END.

The following is an example of initiating a utility from ALGOL. This sample program includes a statement that initiates LOGANALYZER.

BEGIN

  TASK T;
  ARRAY ACTUAL_OPTIONS[0:19];

  PROCEDURE LOGRUN (FORMAL_OPTIONS);
    ARRAY FORMAL_OPTIONS[*];
    EXTERNAL;

  REPLACE T.NAME BY “*SYSTEM/LOGANALYZER ON DISK.”;
  REPLACE ACTUAL_OPTIONS BY “PRINTER JOB 1260”,48”00”;

  CALL LOGRUN (ACTUAL_OPTIONS) [T];

  END.

The following ALGOL example submits WFL jobs for execution in two different ways. The first ZIP statement submits the WFL job stored in array WFLARRAY. The second ZIP statement submits the WFL job stored in the file WFL/TEST. Note the use of triple quotes (“““) in the REPLACE statement wherever a single quote (“) is to occur in the WFL program.

BEGIN
  EBCDIC ARRAY WFLARRAY[1:120];
  FILE WFLFILE(KIND=DISK,NEWFILE=FALSE,DEPENDENTSPECS=TRUE,
               TITLE=“WFL/TEST.”);

  REPLACE WFLARRAY BY
    “CLASS=2;JOBSUMMARY=SUPPRESSED;ELAPSEDLIMIT=120;”
    “MYSELF(STATIONNAME=#MYSELF(SOURCENAME));”
    “DISPLAY (“““HI”““);”;

  ZIP WITH WFLARRAY;
  ZIP WITH WFLFILE;
END.