Sunday, January 16, 2022

Example of the post-processing work for the archived card decks

SCANNED CHUNKS DO NOT EQUAL PROGRAM BOUNDARIES

When I am reading cards they are often large blocks of cards without obvious delineation. Sometimes I can tell that a we switched to a major new program, but for applications that consist of many, many smaller programs, the break between each program isn't obvious. Often the cards don't have text interpreted across the top, but even if they did it would add hours of time to the archiving effort to scan and separate a box of cards into many small decks. 

OUT OF ORDER GROUPS FOR LARGE PROGRAMS

Some large programs spanned multiple boxes of punched cards or multiple trays from the card filing cabinet. It may be that the box I begin with is actually somewhere in the middle of the program because the markings on the boxes don't make it obvious. Even within a box, I have found situations where portions of an application are grouped out of order. This is only obvious when I am assembling them after the face. 

LIMITATIONS OF THE DECKVIEW PROGRAM

The deckview.exe application can only hold a max of 2000 card images otherwise it won't display or allow editing. When I combine all the cards from a large application, they may be two to three boxes long, far past the capacity of the deckview program. 

VERIFICATION BY EXECUTION ON 1130 EMULATOR IF POSSIBLE

In order to ensure that I have all the portions of some software program, to test that it compiles clean and appears to work correctly, I need to move it over to the IBM 1130 simulator and install the software to do testing. Some errors, such as depending upon a subroutine that was not capture with the application, will only become apparent when you try to execute the load module. 

ECAP PROGRAM PROCESSING TOOK SIX HOURS OF TIME

The Electrical Circuit Analysis Program (ECAP) software represents these challenges and more, giving a picture of how much work will be involved to organize, test and document all the software I captured through this process. 

I had to deal with very large captured files, read out of order. Fortunately the programs have sequence fields in columns 73 to 80 of most cards. This gives a good picture of where each portion of a file belongs compared to the others. To do this, however, I had to deal with individual programs broken over file boundaries and overly large files. 

I whipped up some Python programs to help with all this. One program would take a large deck file, too large for deckview to work with, and spit it every 1500 cards into a new subfile. I could then open each of the subfiles and extract the contents. The resulted in 71 distinct files, each of which needed a // JOB card at the start in order to make them standalone for compilation. 

When I fired up the IBM 1130 simulator and began compiling all these individual programs, many of them subroutines, I encountered a few that failed due to compiler errors. In each case, it was due to a duplicate card in the deck. Most duplicates were on a numbered statement card, which is how the compiler saw an error, but one was a duplicate COMMON statement that caused a duplicate variable name declaration. 

I then worried that some duplicates might exist in the deck which would not cause a compile error but would cause the software to malfunction. To check for this I wrote a Python program to read each of the files and show any any places where the sequence numbers didn't advance strictly by ten every card.

I had a reasonable number of such errors flagged. One was a clear case where three cards were out of order but that was correct since they defined COMMON exactly the same as other programs sharing that space. Others were identically missing cards at the start of a comment, found across about half the decks. No duplicates were found and all the anomalies were investigated and proved innocuous. 

The deck came with a sample run, which I executed and collected the output. I am searching for the ECAP manuals since that would let me verify the correctness. If not, I have to figure out what simple circuit was input to the program and then calculate the magnitude and phase angles to check the computer calculated results. For now I will move onwards to other software but will come back if I find evidence that the results are not correct. 

No comments:

Post a Comment