Graphics Programming from a Bygone Era

I was recently asked “what is JCL?” so went to my archive to find an example. JCL or Job Control Language was used on IBM mainframes (IBM 360, 370 +). Programs were submitted as decks of punch cards or via character-based terminals. The mainframe then put the job in a queue and ran them in order of submission… often it took half an hour or more before the results came back.

This is an example of what it took to run a simple Fortran program in 1977. I wrote this when I worked as a co-op engineering student at the Nebraska Public Power District in Columbus, Nebraska. At that time NPPD bought additional computer time from the University of Nebraska’s Computing Network. A remote card reader/printer was installed in Columbus and connected to the UN Med Center computer in Omaha via a leased phone line.

This is a very simple example – the JCL statements all start with // and sometimes there were dozens of them. This is a program that plotted a graph of electrical load data, which had to be sent to a Calcomp pen plotter in Lincoln with instructions to the operator at the Med Center to mount a tape, then send it to Lincoln. The Lincoln operator had to mount the tape, plot on 30” paper, etc, then return the paper to Columbus and the tape to the UNMC tape library.  So I’d run this from Columbus and wait a few days for the plot to arrive to see if it worked. If it didn’t, I’d repeat the process and wait a few more days.

//DAHMKE JOB (NPPDAA541500,MARK,99,99),DAHMKE,CLASS=A,PRTY=6
// EXEC PGM=CONSOL
//READF DD *
UNMC: MOUNT TAPE = NPPLOT WITH RING IN. THANKS.
MESSAGE TO LINCOLN I/O CLERK:
PLOT ON 30 INCH WHITE PAPER WITH INDIA INK. (TAPE=NPPLOT)
RETURN TO MARK DAHMKE, PLANNING DEPT  OF NPPD  COLUMBUS.
RETURN TAPE TO UNMC
THANK YOU.
/*

// EXEC FORTGCLP,TIME.GO=5
//FORT.SYSIN DD *
DIMENSION EEI(365,24),AB(8000)
CALL PLOTS(AB(1),16000,6)
CALL FACTOR(.109)
CALL PLOT(180.,10.,-3)
DO 10 I = 1,365
READ(5,1)(EEI(I,J),J=1,12)
10    READ(5,1,END=99)(EEI(I,J),J=13,24)
99    CONTINUE
100   CONTINUE
CALL SYMBOL(-73.4,73.4,.2,’HOUR INTERVALS’,-45.,14)
CALL SYMBOL(-89.,88.08,.2,’23.’,0.,3)
CALL SYMBOL(-3.6,0.,.2,’0.’,0.,2)
CALL AXIS(0.,0.,’NPPD SYSTEM LOAD 1976′,-21,365.,0.,0.,1.,10.)
CALL AXIS(-88.08,88.08,  ‘LOAD IN MW * 10.’,16,150.,90.,0.,10.,10.
& )
1     FORMAT(20X,12F5.0)

DO 20 J=1,24
DO 30 I=1,365
X=FLOAT(I)
30    CALL PLOT(X,EEI(I,J)/10.,2)
CALL PLOT(-3.67,3.67,-3)
20    CONTINUE
CALL PLOT(10.,10.,999)
STOP
END
/*
//GO.SYSIN DD *

[data goes here]

/*

//