zu www.bildungsgueter.de zur Inhaltsübersicht des Kapitels

Installation des Compilers für Simula/370


Ein Compiler für Simula/370 ist Bestandteil der Distribution MVS 3.8j Turnkey System, die mit dem Emulator hercules unter verschiedenen Betriebssystemen ausführbar ist.

Für die Verwendung des MVS 3.8j Turnkey Systems unter Linux werden die folgenden Programme benötigt:

....


MVS 3.8j

Dieses Beispiel zeigt einen einfachen Stapelverarbeitungsauftrag, der ein Programm compiliert, bindet und ausführt:

//TESTSIM JOB 'S322-0C4','BG',
//      CLASS=B,MSGCLASS=A,MSGLEVEL=(1,1),
//      REGION=1000K,TIME=(1,0),PRTY=8
//CLG EXEC SIMCLG,
//      PARM.SIM='',
//      PARM.LKED='MAP,LIST,LET',
//      PARM.GO='LINECNT=64'
//SIM.SYSIN DD *
simulation begin

  real durationOfExperiment;
  integer seedUniform;
  
  process class Generator;
  begin
    integer cnt;
    cnt := 0;
    while true do
    begin
      Activate New Customer(cnt + 1, Time);
      Hold(Uniform(2, 15, seedUniform));
      cnt := cnt + 1;
    end;
  end generator;
  
  process class Customer(Id, ArrivalTime);
      integer Id;
      real ArrivalTime;
  begin
    Outtext("Eintreffen Kunde ");
    OutInt(Id, 6);
    Outtext(" zur Zeit ");
    OutFix(ArrivalTime, 3, 10);
    OutImage;
  end Customer;
  
  durationOfExperiment := 600.0;
  seedUniform := 7;
  Activate New Generator;
  Hold(durationOfExperiment);
  OutText("-----------------------------");
  OutImage;
  
end
/*
//GO.SYSOUT DD SYSOUT=*,OUTLIM=5000
//GO.SYSIN DD *
    4    1
/*
//

Programmausführung

In SYS2.PROCLIB werden einige Kommandoprozeduren bereitgehalten, die die Vorbereitung einfacher Jobs mit Simula vereinfachen. Es sind dies:

SYS2.SIMULA.LINKLIB enthält die Funktionen der Simula Laufzeitumgebung sowie den Compiler SIMULA.

Die Verwendung derartiger Prozeduren für die Ausführung einfacher Verarbeitungsaufträge ist allgemein üblich, um dem gelegentlichen Anwender die Einarbeitung in die Feinheiten der MVS Job Control Language zu ersparen.


Code der katalogisierten Prozeduren

Im folgenden wird der Code der katalogisierten Prozeduren angegeben ,wie er im Handbuch für Simula/370 angegeben ist.

Prozedur SIMC

//SIMC     PROC
//SIM      EXEC PGM=SIMULA,REGION=86K
//SYSPRINT DD   SYSOUT=A
//SYSUT1   DD   UNIT=SYSDA,SPACE=(2@@@,(2@,2@))
//SYSUT2   DD   UNIT=(SYSDA,SEP=SYSUT1),SPACE=(2@@@,(2@,2@))
//SYSUT3   DD   UNIT=(SYSDA,SEP=(SYSUT1,SYSUT2)),SPACE=(2@@@,(2@,1@))
//SYSUT4   DD   UNIT=(SYSDA,SEP=(SYSUT1,SYSUT2)),SPACE=(1@32,256),
//   DCB=DSORG=DA
//SYSGO    DD   DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=(SYSDA,SEP=SYSUT1),
//   SPACE=(16@@,(3@,3@)),DCB=BLKSIZE=16@@
//   PEND

Prozedur SIMCL

//SIMC     PROC PROG=GO,LIB='&GOSET'EXLIB=SIMLIB,LDISP=MOD
//SIM      EXEC PGM=SIMULA,REGION=86K
//SYSPRINT DD   SYSOUT=A
//SYSUT1   DD   UNIT=SYSDA,SPACE=(2@@@,(2@,2@))
//SYSUT2   DD   UNIT=(SYSDA,SEP=SYSUT1),SPACE=(2@@@,(2@,2@))
//SYSUT3   DD   UNIT=(SYSDA,SEP=(SYSUT1,SYSUT2)),SPACE=(2@@@,(2@,1@))
//SYSUT4   DD   UNIT=(SYSDA,SEP=(SYSUT1,SYSUT2)),SPACE=(1@32,256),
//   DCB=DSORG=DA
//SYSGO    DD   DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=(SYSDA,SEP=SYSUT1),
//   SPACE=(16@@,(3@,3@)),DCB=BLKSIZE=16@@
//LKED     EXEC PGM=IEWL,PARM='MAP,LIST,LET',COND=(4,LT,SIM),
//   REGION=1@4K
//SYSPRINT DD   SYSOUT=A
//SYSLIB   DD   DSN=&EXLIB,DISP=SHR
//SYSLMOD  DD   DSN=&LIB,(&PROG),DISP=(&LDISP,PASS),UNIT=SYSDA,
//   SPACE=(1@24,(4@@,5@,1))
//SYSLIN   DD   DSN=&&LOADSET,DIsP=(OLD;PASS)
//         DD   DDNAME=SYSIN
//   PEND

Prozedur SIMCLG

//SIMCLG   PROC EXLIB=SIMLIB
//SIM      EXEC PRG=SIMULA,REGION=86K
//SYSPRINT DD   SYSOUT=A
//SYSUT1   DD   UNIT=SYSDA,SPACE=(2@@@,(2@,2@))
//SYSUT2   DD   UNIT=(SYSDA,SEP=SYSUT1),SPACE=(2@@@,(2@,2@))
//SYSUT3   DD   UNIT=(SYSDA,SEP=(SYSUT1,SYSUT2)),SPACE=(2@@@,(2@,1@))
//SYSUT4   DD   UNIT=(SYSDA,SEP=(SYSUT1,SYSUT2)),SPACE=(1@32,256),
//   DCB=DSORG=DA
//SYSGO    DD   DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=(SYSDA,SEP=SYSUT1),
//   SPACE=(16@@,(3@,3@)),DCB=BLKSIZE=16@@
//LKED     EXEC PGM=IEWL,PARM='MAP,LIST,LET',COND=(4,LT,SIM),
//   REGION=1@4K
//SYSPRINT DD   SYSOUT=A
//SYSLIB   DD   DSN=&EXLIB,DISP=SHR
//         DD   DSN=SIMLIB,DISP=SHR
//SYSUT1   DD   UNIT=SYSDA,SPACE=(2@@@,(2@,2@))
//SYSLMOD  DD   DSN=&LIB,(&PROG),DISP=(&LDISP,PASS),UNIT=SYSDA,
//   SPACE=(1@24,(4@@,5@,1))
//SYSLIN   DD   DSN=&&LOADSET,DIsP=(OLD;PASS)
//         DD   DDNAME=SYSIN
//GO       EXEC PGM=*.LKED.SYSLMOD,COND=((4.LT,SIM)),(4,LT,LKED))
//SYSOUT   DD   SYSOUT=A
//   PEND

Prozedur SIMG

//SIMG     PROC PROG=GO,LIB='&&GOSET'
//GO       EXEC PRG=&PROG
//STEPLIB  DD   DSN=&LIB,DISP=(OLD,PASS)
//SYSOUT   DD   SYSOUT=A
//   PEND

Prozedur SIMCG

//SIMCLG   PROC EXLIB=SIMLIB;GOPARM=
//SIM      EXEC PRG=SIMULA,REGION=86K
//SYSPRINT DD   SYSOUT=A
//SYSUT1   DD   UNIT=SYSDA,SPACE=(2@@@,(2@,2@))
//SYSUT2   DD   UNIT=(SYSDA,SEP=SYSUT1),SPACE=(2@@@,(2@,2@))
//SYSUT3   DD   UNIT=(SYSDA,SEP=(SYSUT1,SYSUT2)),SPACE=(2@@@,(2@,1@))
//SYSUT4   DD   UNIT=(SYSDA,SEP=(SYSUT1,SYSUT2)),SPACE=(1@32,256),
//   DCB=DSORG=DA
//SYSGO    DD   DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=(SYSDA,SEP=SYSUT1),
//   SPACE=(16@@,(3@,3@)),DCB=BLKSIZE=16@@
//GO       EXEC PGM=LOADER,PARM='MAP,PRINT,LET,EP=ZYQENT/&GOPARM',
//   COND=(4,LT,SIM)
//SYSLIN   DD   DSN=&&LOADSET,DISP=(OLD,PASS)
//SYSLIB   DD   DSN=&EXLIB,DISP=SHR
//         DD   DSN=SIMLIB,DISP=SHR
//SYSLOUT  DD   SYSOUT=A
//SYSOUT   DD   SYSOUT=A
//   PEND

Prozedur SIM

//SIM      PROC  P=,CP=,LP=,RP=,GP=
//GO       EXEC  PGM=SIMCNT,COND=EVEN,
//               PARM='&P/&CP/&LP/TIME=1000,&RP/&GP'
//STEPLIB  DD    DSN=simlib,DISP=SHR
//SYSPRINT DD    SYSOUT=A
//SYSUT1   DD    UNIT=SYSDA,SPACE=(2048,(20,20))
//SYSUT2   DD    UNIT=SYSDA,SPACE=(2048,(20,20))
//SYSUT3   DD    UNIT=SYSDA,SPACE=(1632,(30,15))
//SYSUT4   DD    UNIT=SYSDA,SPACE(1032,256),DCB=DSORG=DA
//SYSGO    DD    UNIT=SYSDA,SPACE=(1600,(100,50)),
//               DCB=(LRECL=80,RECFM=FB,BLKSIZE=1600)
//   PEND

Separate Compilierung


Verwendung von Overlays

Overlays sind eine Technik, die die sparsame Verwendung des Hauptspeichers dadurch ermöglicht, das Teile eines Programms erst dann in den Hauptspeicher geladen werden, wenn sie benötigt werden.


zur Inhaltsübersicht des Kapitels