<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Software Archaeology. Part I.</title>
	<atom:link href="http://habitablezone.com/2012/12/12/software-archaeology-part-i/feed/" rel="self" type="application/rss+xml" />
	<link>https://habitablezone.com/2012/12/12/software-archaeology-part-i/</link>
	<description></description>
	<lastBuildDate>Tue, 12 May 2026 20:11:45 -0700</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: ER</title>
		<link>https://habitablezone.com/2012/12/12/software-archaeology-part-i/#comment-21712</link>
		<dc:creator>ER</dc:creator>
		<pubDate>Wed, 12 Dec 2012 21:57:19 +0000</pubDate>
		<guid isPermaLink="false">http://habitablezone.com/?p=28030#comment-21712</guid>
		<description>Good question.

I did fail to explain that.  It worked two ways.  

For example, if it was a 1-shot deal, say I wanted to print out a statistical analysis of xray diffraction data (an actual project I remember), I wwould code up the program, get a bunch of data cards from the diffractometer and append it to the back of the deck, wrap some JCL around it, and take it down to the computer center and drop it in the inbox.

The job would compile, link, execute, and write the results to the printer.  I re-ran the job over and over until it was working the way I wanted it to, making changes in it as needed. This is what my student work was like.  In the next installment, which I will post soon, I was working at an oil company. Here&#039;s how the batch concept works in a production environment with dumb terminals.

Suppose the guy I was working for said he really liked the program, but he wanted to run it himself, pointing it to different input datasets, and he wanted the ability to change run-time parameters and have the choice of directing  the output reports to an accessible file, a printer in another building, or to a tape, and he wanted to be able to do other things, like delaying the run til late at night when system usage was light, or send the results to his office terminal.

I would take his specs and modify the program, making the I/O statements generic, (read or write to file 1, file 2, file 3, etc).  JCL cards could then be added when the job was submitted so each identified file 1 as the printer in bldg 6, file 2 is the tape drive y in the computer center, etc.  When the program tried to write to file 2, the operating system would send a message to the night operator&#039;s terminal that job x was requesting a tape mount on drive y, and he would hang it for you.  Next day, your tape, printouts, etc would be delivered to your mailbox.

You could also have the data on files in the computer itself, so you didn&#039;t have to actually type up cards yourself.  For example, some wellog data could come in on telephone lines and be stored in a memory location on the mainframe&#039;s disk drives.  You could add a JCL card to your program identifying the location of the data as say, file 77, which is the generic name you had called that file in your program. THe operating system would say program z needs the data at memory location w for his input statement reading file 77.  

THe program itself could be compiled and linked and stored on computer memory, so you could simply give the user some JCL cards saying which program to execute, and where its input and output destinations were.

The programs would usually do the same thing, but you had control over many parameters, which were entered in as control cards, so you could select options like &quot;which averaging method to use&quot; or &quot;what filter size&quot;.  A typical job would consist of JCL cards identifyin I/O devices and file names and connecting them to generic read and write statement numbers in the FORTRAN program, followed by control cards giving the program parameters and options, and a JCL card identifying where on the computer the assembler code for your linked code was
residing.

Those JCL cards could also be virtual, existing on a file themselves, and editable from a terminal, this was called a Catalogued Procedure, and it migh have multiple programs passing data back and forth to each other, reading and writing files to multiple devices.  THis is how most people actually did their jobs, exevuting on-line catalogued procedures, making changes in control cards to customize the jobs for their own problem or task.

As a programmer, much of my work was maintaining catalogued procedures, not only correcting or enhancing the FORTRAN at the heart of it, but also giving the program access to different files, devices and so on.  For example, every time a new map plotter was purchased and installed, I had to modify all my catalogued procedures so my users could direct their maps to it.</description>
		<content:encoded><![CDATA[<p>Good question.</p>
<p>I did fail to explain that.  It worked two ways.  </p>
<p>For example, if it was a 1-shot deal, say I wanted to print out a statistical analysis of xray diffraction data (an actual project I remember), I wwould code up the program, get a bunch of data cards from the diffractometer and append it to the back of the deck, wrap some JCL around it, and take it down to the computer center and drop it in the inbox.</p>
<p>The job would compile, link, execute, and write the results to the printer.  I re-ran the job over and over until it was working the way I wanted it to, making changes in it as needed. This is what my student work was like.  In the next installment, which I will post soon, I was working at an oil company. Here&#8217;s how the batch concept works in a production environment with dumb terminals.</p>
<p>Suppose the guy I was working for said he really liked the program, but he wanted to run it himself, pointing it to different input datasets, and he wanted the ability to change run-time parameters and have the choice of directing  the output reports to an accessible file, a printer in another building, or to a tape, and he wanted to be able to do other things, like delaying the run til late at night when system usage was light, or send the results to his office terminal.</p>
<p>I would take his specs and modify the program, making the I/O statements generic, (read or write to file 1, file 2, file 3, etc).  JCL cards could then be added when the job was submitted so each identified file 1 as the printer in bldg 6, file 2 is the tape drive y in the computer center, etc.  When the program tried to write to file 2, the operating system would send a message to the night operator&#8217;s terminal that job x was requesting a tape mount on drive y, and he would hang it for you.  Next day, your tape, printouts, etc would be delivered to your mailbox.</p>
<p>You could also have the data on files in the computer itself, so you didn&#8217;t have to actually type up cards yourself.  For example, some wellog data could come in on telephone lines and be stored in a memory location on the mainframe&#8217;s disk drives.  You could add a JCL card to your program identifying the location of the data as say, file 77, which is the generic name you had called that file in your program. THe operating system would say program z needs the data at memory location w for his input statement reading file 77.  </p>
<p>THe program itself could be compiled and linked and stored on computer memory, so you could simply give the user some JCL cards saying which program to execute, and where its input and output destinations were.</p>
<p>The programs would usually do the same thing, but you had control over many parameters, which were entered in as control cards, so you could select options like &#8220;which averaging method to use&#8221; or &#8220;what filter size&#8221;.  A typical job would consist of JCL cards identifyin I/O devices and file names and connecting them to generic read and write statement numbers in the FORTRAN program, followed by control cards giving the program parameters and options, and a JCL card identifying where on the computer the assembler code for your linked code was<br />
residing.</p>
<p>Those JCL cards could also be virtual, existing on a file themselves, and editable from a terminal, this was called a Catalogued Procedure, and it migh have multiple programs passing data back and forth to each other, reading and writing files to multiple devices.  THis is how most people actually did their jobs, exevuting on-line catalogued procedures, making changes in control cards to customize the jobs for their own problem or task.</p>
<p>As a programmer, much of my work was maintaining catalogued procedures, not only correcting or enhancing the FORTRAN at the heart of it, but also giving the program access to different files, devices and so on.  For example, every time a new map plotter was purchased and installed, I had to modify all my catalogued procedures so my users could direct their maps to it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RobVG</title>
		<link>https://habitablezone.com/2012/12/12/software-archaeology-part-i/#comment-21710</link>
		<dc:creator>RobVG</dc:creator>
		<pubDate>Wed, 12 Dec 2012 20:47:43 +0000</pubDate>
		<guid isPermaLink="false">http://habitablezone.com/?p=28030#comment-21710</guid>
		<description>So once your &#039;batch&#039; was loaded, did the program remain in hard memory for future access and inputs?  I guess I&#039;m asking how did you interact with it without a user interface.</description>
		<content:encoded><![CDATA[<p>So once your &#8216;batch&#8217; was loaded, did the program remain in hard memory for future access and inputs?  I guess I&#8217;m asking how did you interact with it without a user interface.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
