Right then. Before I start building anything, I'd better make sure
I've got all the bits, and that those bits are going to do the job.
As it's the first progress report, and also because I've not done
anything on MVS in my gopherhole yet, I'll include some short
explanations of what's going on.
COBOL and assembler is what I'm going to use, so I'll be needing:
1. A COBOL compiler
2. An assembler
Fairly straightforward. 'Hello world' is plenty good enough here.
COBOL Hello World
-----------------
Whacked this into the editor and saved it away into the LEE.TEST.COBOL
dataset as member HELLO.
JCL. Oh yeah. Here we go. Proper mainframing. JCL is how batch jobs
are submitted for execution in MVS. Just another file in an
editor. This time it's in LEE.TEST.CNTL(HELLOCLG).
This will create a job called LEECLG and runs the IGYWCLG procedure,
which is an IBM-supplied procedure for running the COBOL compiler. The
'CLG' in this case means 'Compile Link Go' ie. compile, link and run
the generated binary. The COBOL.SYSIN bit is, as you may have guessed,
the input to the job. In this case, the COBOL source.
This job is submitted to the system from the editor, and it'll get
executed as soon as the system can do it. Output should be in the
spool:
LEECLG JOB00567 LEE 1 PRINT A 133
And there it is. Let's check what's what. The job output consists of:
JESMSGLG JES2 2 LEE H LOCAL 17
JESJCL JES2 3 LEE H LOCAL 60
JESYSMSG JES2 4 LEE H LOCAL 62
SYSPRINT STEP1 COBOL 101 LEE H LOCAL 98
SYSPRINT STEP1 LKED 102 LEE H LOCAL 124
SYSOUT STEP1 GO 106 LEE H LOCAL 1
The JES* output is from the spooler. The SYSPRINT output is the output
from both the compiler (COBOL) and the link editor (LKED). The SYSOUT
output contains the output from our program (the GO step):
********************************* TOP OF DATA **********************************
Hello, World!
******************************** BOTTOM OF DATA ********************************
Success!
Assembler Hello World
---------------------
Next, assembler source to do a simiar job to the COBOL:
* HELLO WORLD
HELLO START 0
BEGIN SAVE (14,12)
BALR 3,0
USING *,3
ST 13,SAVE+4
LA 13,SAVE
OPEN (PRTOUT,OUTPUT)
PUT PRTOUT,HELLOTXT
CLOSE (PRTOUT)
L 13,SAVE+4
RETURN (14,12)
*
PRTOUT DCB DSORG=PS,
RECFM=F,
MACRF=PM,
BLKSIZE=132,
LRECL=132,
DDNAME=PRTOUT
*
HELLOTXT DC CL133'HELLO WORLD!'
SAVE DS 18F
END BEGIN
Assembling and Running
----------------------
And some JCL to perform a similar assemble-link-go:
So, submit the JCL, and check the spool for output:
LEEASCLG JOB00579 LEE 1 PRINT A 135
OK, the job's run and put *something* in the spool at least. Let's
check it out:
JESMSGLG JES2 2 LEE H LOCAL 17
JESJCL JES2 3 LEE H LOCAL 45
JESYSMSG JES2 4 LEE H LOCAL 54
SYSPRINT STEP1 C 101 LEE H LOCAL 193
SYSPRINT STEP1 L 102 LEE H LOCAL 150
PRTOUT STEP1 G 103 LEE H LOCAL 1
Pretty similar to the COBOL. In this case, the output should be in the
PRTOUT file:
********************************* TOP OF DATA **********************************
HELLO, WORLD!
******************************** BOTTOM OF DATA ********************************
Lovely.
Looks like the COBOL compiler and the assembler are both working OK,
and I've got my JCL sorted so I can use them. Unfortunately, this
means I've no excuse not to get cracking on the actual work...