Oppolzer - Informatik / Stanford Pascal Compiler


Home       Lebenslauf       Schwerpunkte       Kenntnisse       Seminare       Kunden       Projekte       Produkte       Blog       Stanford Pascal       Kontakt

The Stanford Pascal Compiler / Evolution Steps

Back to Compiler main page

Job control examples for the MVS compiler

Compiler version: 05.2017

I am discussing the best way to distribute the MVS version of the compiler with Juergen Winckelmann; maybe there will be a tape based distribution in the next days or weeks.

Part of the distribution will be some JCL procedures, that should be copied to SYS2.PROCLIB on installation. These procedures allow for easy use of the compiler and are named after the usual MVS convention:

PASNC (to compile only),
PASNCL (compile and link),
PASNCG (compile and go),
PASNCLG (compile, link and go).

The compiler files should be copied at installation time to datasets with a high level qualified (HLQ) of your choice; I am using PASCALN. You should not use PASCAL, because that is used by the old (1979) Stanford Pascal version which is part of the TK3 and TK4- distribution. The HLQ can be specified on call to the JCL procedures, but defaults to PASCALN.

Here is how your compile jobs could look:


//PASCALNG JOB (PASCAL),'CLG FIBDEMO',CLASS=A,MSGCLASS=X, // TIME=1440,REGION=9000K,MSGLEVEL=(1,1) //* //*********************************************************** //* Test compiler //*********************************************************** //* //COMPGO EXEC PASNCG,MEM=FIBDEMO, // SRC='PASCALN.TESTPGM.PAS' //*

This is for compile and go; no load library needed; and no particular input and output files for the GO step in this case.

With a linker step, and with some assignments for the GO step:


//PASCALN6 JOB (PASCAL),'TEST KALENDER',CLASS=A,MSGCLASS=X, // TIME=1440,REGION=8000K,MSGLEVEL=(1,1) //* //COMPGO EXEC PASNCLG,MEM=KALENDER, // SRC='PASCALN.TESTPGM.PAS', // MOD='PASCALN.TESTPGM.LOAD' //GO.INPUT DD * 2017 //GO.DRUCKER DD SYSOUT=A

This is how the JCL procedure PASNCLG is defined:


//PASNCLG PROC MEM=X, // SRC='SYS2.NULLBIBL', // MOD='SYS2.NULLBIBL', // SOUT=A,HLQ=PASCALN,REG=8192K,WORK=VIO, // GOTIME=299,GOPARM=,GOREG=2048K //* //*********************************************************** //* //* PASCAL COMPILER FIRST AND SECOND PASS //* //*********************************************************** //* //COMPILE EXEC PGM=PASCAL1,REGION=&REG,PARM='&MEM' //STEPLIB DD DISP=SHR,DSN=&HLQ..COMPILER.LOAD //INPUT DD DISP=SHR,DSN=&SRC.(&MEM) //OUTPUT DD SYSOUT=&SOUT //PRD DD DISP=SHR,DSN=&HLQ..COMPILER.MESSAGES(MESSAGES) //PRR DD DSN=&&PCODE,UNIT=&WORK, // SPACE=(TRK,(200,200),RLSE),DISP=(,PASS), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=19040) //LISTING DD SYSOUT=&SOUT,DCB=(RECFM=FB,LRECL=137) //DBGINFO DD DISP=SHR,DSN=&HLQ..DBGINFO(&MEM) //TRACEF DD SYSOUT=&SOUT //PASTRACE DD SYSOUT=&SOUT //SYSUDUMP DD SYSOUT=&SOUT //* //POSTPROC EXEC PGM=PASCAL2,REGION=&REG,COND=(4,LT,COMPILE) //STEPLIB DD DISP=SHR,DSN=&HLQ..COMPILER.LOAD //INPUT DD DISP=(OLD,DELETE),DSN=*.COMPILE.PRR //OUTPUT DD SYSOUT=&SOUT //PRR DD DSN=&&OBJF,UNIT=&WORK, // SPACE=(TRK,(200,200),RLSE),DISP=(,PASS), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=19040) //ASMOUT DD SYSOUT=&SOUT,DCB=(RECFM=FB,LRECL=137) //DBGINFO DD DISP=SHR,DSN=&HLQ..DBGINFO(&MEM) //TRACEF DD SYSOUT=&SOUT //PASTRACE DD SYSOUT=&SOUT //SYSUDUMP DD SYSOUT=&SOUT //* //LKED EXEC PGM=IEWLF880,REGION=&REG,PARM='MAP', // COND=(0,LT,POSTPROC) //SYSLIB DD DISP=SHR,DSN=&HLQ..RUNTIME.TEXT // DD DISP=SHR,DSN=&HLQ..COMPILER.TEXT // DD DISP=SHR,DSN=SYS1.FORTLIB //SYSLMOD DD DISP=SHR,DSN=&MOD.(&MEM) //SYSPRINT DD SYSOUT=&SOUT //SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(200,200),RLSE) //SYSLIN DD DISP=(OLD,DELETE),DSN=*.POSTPROC.PRR // DD DISP=SHR,DSN=&HLQ..COMPILER.MESSAGES(STDINC) // DD DDNAME=SYSIN //* //GO EXEC PGM=&MEM, // COND=((4,LT,COMPILE),(0,LT,POSTPROC),(0,LT,LKED)), // PARM='/TIME=&GOTIME,&GOPARM',REGION=&GOREG //STEPLIB DD DISP=SHR,DSN=&MOD //QRD DD DISP=SHR,DSN=&HLQ..DBGINFO //INPUT DD DDNAME=SYSIN //FT06F001 DD SYSOUT=&SOUT //OUTPUT DD SYSOUT=&SOUT,DCB=(RECFM=V,LRECL=133) //PASTRACE DD SYSOUT=&SOUT //SYSUDUMP DD SYSOUT=&SOUT //*

Back to Compiler main page