File MTAINV.CB

Directory of image this file is from
This file as a plain text file


IDENTIFICATION DIVISION.
PROGRAM-ID.	MTAINV.
DATE-WRITTEN. 15-JUN-76
DATE-COMPILED.
AUTHOR.		SHAWN DAVIDSON.
INSTALLATION.	NEWPORT-MESA UNIFIED SCHOOL DISTRICT.
REMARKS.	THIS PROGRAM WILL ALLOW YOU TO MODIFY AND
		MAINTAIN THE MAGNETIC TAPE LIBRARY. IT WAS
		WRITTEN FOR THE PDP-8 PROGRAM, AND THEREFORE
		HAS BEEN TAILORED TO ITS NEEDS.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.	DECSYSTEM-10.
OBJECT-COMPUTER.	PDP-10.
SPECIAL-NAMES.
	CONSOLE IS TTY.
	CHANNEL (1) IS TOP-OF-PAGE.

INPUT-OUTPUT SECTION.
FILE-CONTROL.

	SELECT FIS020-FILE, ASSIGN TO DSK,
		RECORDING MODE IS SIXBIT,
		ACCESS MODE IS RANDOM,
		ACTUAL KEY IS FIS020-INDEX,
		FILE LIMITS ARE 1 THRU 9999.

	SELECT SORT-FILE, ASSIGN TO DSK, DSK, DSK.

	SELECT LPT-FILE, ASSIGN TO DSK,
		RECORDING MODE IS ASCII,
		ACCESS MODE IS SEQUENTIAL.

DATA DIVISION.

FILE SECTION.

FD	FIS020-FILE
	LABEL RECORDS ARE STANDARD,
	BLOCK CONTAINS 6 RECORDS,
	RECORD CONTAINS 120 CHARACTERS,
	DATA RECORD IS FIS020-REC,
	VALUE OF IDENTIFICATION IS "FIS020DAT".

01	FIS020-REC.
	05 TAPE-NUM		PIC X(4).
	05 TAPE-TYPE		PIC XX.
	05 FILLER		PIC X(4).
	05 TAPE-LOC		PIC X(6).
	05 TAPE-OWNER		PIC X(20).
	05 TAPE-DESC		PIC X(80).

SD	SORT-FILE
		DATA RECORD IS SORT-RECORD.

01	SORT-RECORD.
	05 TAPE-NUM		PIC 9(4).
	05 FILLER		PIC X(112).

FD	LPT-FILE
	LABEL RECORDS ARE STANDARD,
	VALUE OF IDENTIFICATION IS "FIS020LPT",
	DATA RECORD IS P-REC.

01	P-REC.
	05 FILLER		PIC X(132).


WORKING-STORAGE SECTION.

01	H-1-L.
	05 FILLER		PIC X(8)	VALUE "FIS020-A".
	05 FILLER		PIC X(26)	VALUE SPACES.
	05 FILLER		PIC X(47)	VALUE
		"M A G N E T I C    T A P E    I N V E N T O R Y".
	05 FILLER		PIC X(15)	VALUE SPACES.
	05 REPORT-DATE.
		10 MONTH	PIC 99.
		10 FILLER	PIC X		VALUE "/".
		10 DAY		PIC 99.
		10 FILLER	PIC X		VALUE "/".
		10 YEAR		PIC 99.
		10 FILLER	PIC XXX		VALUE SPACES.
		10 HOUR		PIC XX.
		10 FILLER	PIC X		VALUE ":".
		10 MIN		PIC 99.
		10 FILLER	PIC X		VALUE ":".
		10 SEC		PIC 99.
	05 FILLER		PIC X(6)	VALUE SPACES.
	05 FILLER		PIC X(5)	VALUE
		"PAGE ".
	05 HEADER-PAGE		PIC ZZ.

01	H-2-L.
	05 FILLER		PIC X(26)	VALUE
		"NUM   INDEX   TYPE    LOC ".
	05 FILLER		PIC X(11)	VALUE SPACES.
	05 FILLER		PIC X(5)	VALUE "OWNER".
	05 FILLER		PIC X(44)	VALUE SPACES.
	05 FILLER		PIC X(11)	VALUE "DESCRIPTION".

01	PRINT-LINE.
	05 TAPE-NUM		PIC X(4).
	05 FILLER		PIC XXX		VALUE SPACES.
	05 TAPE-IND		PIC ZZZZ.
	05 FILLER		PIC X(4)	VALUE SPACES.
	05 TAPE-TYPE		PIC XX.
	05 FILLER		PIC XX		VALUE SPACES.
	05 TAPE-LOC		PIC X(6).
	05 FILLER		PIC X(4)	VALUE SPACES.
	05 TAPE-OWNER		PIC X(20).
	05 FILLER		PIC X(3)	VALUE SPACES.
	05 TAPE-DESC		PIC X(80).

01	PRINT-TOTAL.
	05 FILLER		PIC X(56)	VALUE SPACES.
	05 FILLER		PIC X(9)	VALUE
		"TOTAL OF ".
	05 PRINT-TOTAL-RECS	PIC ZZZZ.
	05 FILLER		PIC X(13)	VALUE
		" TAPES LISTED".

01	WORKING-STORAGE-STUFF.
	05 DATE-HOLD.
		10 YEAR 	PIC XX.
		10 MONTH	PIC XX.
		10 DAY 		PIC XX.
		10 HOUR		PIC XX.
		10 MIN		PIC XX.
		10 SEC		PIC XX.
	05 FIS020-INDEX		PIC 9999	COMP.
	05 SEARCH-CALLER	PIC X.
	05 INPUT-OPTION		PIC X.
	05 PAGE-COUNTER		PIC 99		COMP.
	05 LINE-COUNTER		PIC 99		COMP.
	05 TOTAL-RECS		PIC 9999	COMP.
	05 FIS020-INDEX-CHAR		PIC X(4).
	05 TAPE-CHAR		PIC X(4).
	05 F-NUM		PIC X(4).
	05 F-TYPE		PIC XX.
	05 F-IND		PIC X(4).
	05 F-LOC		PIC X(6).
	05 F-OWNER		PIC X(20).
	05 F-DESC		PIC X(80).


PROCEDURE DIVISION.
0000-START-UP SECTION.
	DISPLAY " ".
	DISPLAY "[FIS020] MAGNETIC TAPE INVENTORY".
	DISPLAY " ".
1000-INITIALIZATION SECTION.
	MOVE TODAY TO DATE-HOLD.
	MOVE CORRESPONDING DATE-HOLD TO REPORT-DATE.
1010-OPEN-FILES.
	OPEN I-O FIS020-FILE.
2000-INPUT-OPTION SECTION.
	DISPLAY "OPTION = " WITH NO ADVANCING.
	ACCEPT INPUT-OPTION.
	IF INPUT-OPTION = "E" OR "END"
		GO TO 9000-CLOSOUT.
	IF INPUT-OPTION = "L" OR "LIST"
		GO TO 3000-LIST.
	IF INPUT-OPTION = "D" OR "DELETE"
		GO TO 4000-DELETE.
	IF INPUT-OPTION = "A" OR "ADD"
		GO TO 5000-ADD.
	IF INPUT-OPTION = "F" OR "FIND"
		GO TO 6000-FIND.
	IF INPUT-OPTION = "C" OR "CHANGE"
		GO TO 7000-CHANGE.
	IF INPUT-OPTION = "S" OR "SORT"
		GO TO 2500-SORT.
	IF INPUT-OPTION = SPACES
		GO TO 2000-INPUT-OPTION.
	DISPLAY " ".
	DISPLAY "COMMAND		DESCRIPTION".
	DISPLAY "-------		-----------".
	DISPLAY " ".
	DISPLAY "ADD		ADD ENTRY TO DATA FILE".
	DISPLAY "CHANGE		CHANGE AN ENTRY IN DATA FILE".
	DISPLAY "DELETE		DELETE AN ENTRY FROM THE DATA FILE".
	DISPLAY "END		EXIT FROM PROGRAM".
	DISPLAY "FIND		LOCATE AN ENTRY IN THE DATA FILE".
	DISPLAY "LIST		PRODUCE A LISTING OF ALL ENTRIES IN FILE".
	DISPLAY "SORT		WILL SORT THE FILE".
	GO TO 2000-INPUT-OPTION.
2500-SORT SECTION.
	CLOSE FIS020-FILE.
	DISPLAY "[STARTING SORT]".
	SORT SORT-FILE ON ASCENDING KEY TAPE-NUM OF SORT-RECORD
			USING FIS020-FILE, GIVING FIS020-FILE.
	OPEN I-O FIS020-FILE.
	DISPLAY "[SORT COMPLETE]".
	GO TO 2000-INPUT-OPTION.


3000-LIST SECTION.
	SET LINE-COUNTER TO 54.
	SET PAGE-COUNTER, TOTAL-RECS TO ZERO.
	OPEN OUTPUT LPT-FILE.
	MOVE "L" TO SEARCH-CALLER.
3010-LIST-LOOP.
	PERFORM 8030-SEARCH.
	IF TOTAL-RECS NOT = ZERO
		MOVE TOTAL-RECS TO PRINT-TOTAL-RECS
		WRITE P-REC FROM PRINT-TOTAL AFTER ADVANCING TOP-OF-PAGE.
3020-LIST-MORE.
	IF FIS020-INDEX-CHAR = "E" OR "END"
		CLOSE LPT-FILE
		GO TO 2000-INPUT-OPTION.
	SET TOTAL-RECS, PAGE-COUNTER TO ZERO.
	SET LINE-COUNTER TO 55.
	GO TO 3010-LIST-LOOP.

4000-DELETE SECTION.
	DISPLAY "INDEX = " WITH NO ADVANCING.
	ACCEPT FIS020-INDEX-CHAR.
	IF FIS020-INDEX-CHAR = "E" OR "END" 
		GO TO 2000-INPUT-OPTION.
	IF FIS020-INDEX-CHAR = SPACES
		GO TO 4000-DELETE.
	MOVE FIS020-INDEX-CHAR TO FIS020-INDEX.
	READ FIS020-FILE INVALID KEY
		DISPLAY "? INVALID KEY: ", FIS020-INDEX
		GO TO 4000-DELETE.
	IF LOW-VALUES = FIS020-REC
		DISPLAY "? RECORD DELETED: ", FIS020-INDEX
		GO TO 4000-DELETE.
	MOVE LOW-VALUES TO FIS020-REC.
	WRITE FIS020-REC INVALID KEY
		DISPLAY "? INVALID KEY: ", FIS020-INDEX
		GO TO 4000-DELETE.
	DISPLAY "[RECORD AT ", FIS020-INDEX ," DELETED]".
	GO TO 4000-DELETE.

5000-ADD SECTION.
	SET FIS020-INDEX TO ZERO.
5010-SEARCH-LOOP.
	SET FIS020-INDEX UP BY 1.
	READ FIS020-FILE INVALID KEY
		GO TO 5020-GET-DATA.
	IF LOW-VALUES = FIS020-REC
		GO TO 5020-GET-DATA.
	GO TO 5010-SEARCH-LOOP.
5020-GET-DATA.
	DISPLAY " ".
	DISPLAY "INDEX = ",FIS020-INDEX.
	DISPLAY "TAPE NUMBER = " WITH NO ADVANCING.
	ACCEPT TAPE-CHAR.
	IF TAPE-CHAR = "E" OR "END"
		GO TO 2000-INPUT-OPTION.
	MOVE TAPE-CHAR TO TAPE-NUM OF FIS020-REC.
	DISPLAY "TYPE = " WITH NO ADVANCING.
	ACCEPT TAPE-TYPE OF FIS020-REC.
	DISPLAY "OWNER = " WITH NO ADVANCING.
	ACCEPT TAPE-OWNER OF FIS020-REC.
	DISPLAY "LOCATION = " WITH NO ADVANCING.
	ACCEPT TAPE-LOC OF FIS020-REC.
	DISPLAY "DESCRIPTION = " WITH NO ADVANCING.
	ACCEPT TAPE-DESC OF FIS020-REC.
	WRITE FIS020-REC INVALID KEY
		DISPLAY "? INVALID KEY: ", FIS020-INDEX
		GO TO 2000-INPUT-OPTION.

	GO TO 5010-SEARCH-LOOP.


6000-FIND SECTION.
	MOVE "F" TO SEARCH-CALLER.
	PERFORM 8030-SEARCH.
	IF FIS020-INDEX-CHAR = "E" OR "END"
		GO TO 2000-INPUT-OPTION.
	GO TO 6000-FIND.

7000-CHANGE SECTION.
	DISPLAY " ".
	DISPLAY "INDEX = " WITH NO ADVANCING.
	ACCEPT FIS020-INDEX-CHAR.
	IF FIS020-INDEX-CHAR = "E" OR "END"
		GO TO 2000-INPUT-OPTION.
	MOVE FIS020-INDEX-CHAR TO FIS020-INDEX.
	READ FIS020-FILE INVALID KEY
		DISPLAY "? INVALID INDEX"
		GO TO 7000-CHANGE.
	DISPLAY " ".
	DISPLAY "TAPE NUMBER = ",TAPE-NUM OF FIS020-REC.
	DISPLAY "TAPE NUMBER = " WITH NO ADVANCING.
	ACCEPT F-NUM.
	IF F-NUM NOT = SPACES
		MOVE F-NUM TO TAPE-NUM OF FIS020-REC.
	DISPLAY "TAPE TYPE = ",TAPE-TYPE OF FIS020-REC.
	DISPLAY "TAPE TYPE = " WITH NO ADVANCING.
	ACCEPT F-TYPE.
	IF F-TYPE NOT = SPACES
		MOVE F-TYPE TO TAPE-TYPE OF FIS020-REC.
	DISPLAY "OWNER = ", TAPE-OWNER OF FIS020-REC.
	DISPLAY "OWNER = " WITH NO ADVANCING.
	ACCEPT F-OWNER.
	IF F-OWNER NOT = SPACES
		MOVE F-OWNER TO TAPE-OWNER OF FIS020-REC.
	DISPLAY "LOCATION = ",TAPE-LOC OF FIS020-REC.
	DISPLAY "LOCATION = " WITH NO ADVANCING.
	ACCEPT F-LOC.
	IF F-LOC NOT = SPACES
		MOVE F-LOC TO TAPE-LOC OF FIS020-REC.
	DISPLAY "DESCRIPTION = ", TAPE-DESC OF FIS020-REC.
	DISPLAY "DESCRIPTION = " WITH NO ADVANCING.
	ACCEPT F-DESC.
	IF F-DESC NOT = SPACES
		MOVE F-DESC TO TAPE-DESC OF FIS020-REC.
	WRITE FIS020-REC INVALID KEY
		DISPLAY "? INVALID KEY: ", FIS020-INDEX
		GO TO 7000-CHANGE.
	DISPLAY " ".
	DISPLAY "[RECORD ", FIS020-INDEX ," UPDATED]".
	GO TO 7000-CHANGE.

8010-HEADER SECTION.
	SET LINE-COUNTER TO ZERO.
	SET PAGE-COUNTER UP BY 1.
	MOVE PAGE-COUNTER TO HEADER-PAGE.
	WRITE P-REC FROM H-1-L AFTER ADVANCING TOP-OF-PAGE.
	WRITE P-REC FROM H-2-L AFTER ADVANCING 2 LINES.
8020-HEADER-EXIT.
	EXIT.

8030-SEARCH SECTION.
	SET LINE-COUNTER TO 54.
	SET FIS020-INDEX TO ZERO.
	DISPLAY "INDEX = " WITH NO ADVANCING.
	ACCEPT FIS020-INDEX-CHAR.
	IF FIS020-INDEX-CHAR = "E" OR "END"
		GO TO 8070-SEARCH-EXIT.
	IF FIS020-INDEX-CHAR = SPACES
		GO TO 8040-START-SEARCH.
	MOVE FIS020-INDEX-CHAR TO FIS020-INDEX.
	READ FIS020-FILE INVALID KEY
		SET FIS020-INDEX TO ZERO
		GO TO 8040-START-SEARCH.
	MOVE HIGH-VALUES TO F-OWNER.
	GO TO 8060-FOUND-IT.
8040-START-SEARCH.
	DISPLAY " ".
	DISPLAY "TAPE NUMBER = " WITH NO ADVANCING.
	ACCEPT F-NUM.
	DISPLAY "TAPE-TYPE = " WITH NO ADVANCING.
	ACCEPT F-TYPE.
	DISPLAY "OWNER = " WITH NO ADVANCING.
	ACCEPT F-OWNER.
	DISPLAY "LOCATION = " WITH NO ADVANCING.
	ACCEPT F-LOC.
	DISPLAY "DESCRIPTION = " WITH NO ADVANCING.
	ACCEPT F-DESC.
	DISPLAY " ".
	DISPLAY "[STARTING SEARCH]".
8050-SEARCH-FILE.

	SET FIS020-INDEX UP BY 1.
	READ FIS020-FILE INVALID KEY
		GO TO 8070-SEARCH-EXIT.

	IF F-NUM = SPACES OR F-NUM = TAPE-NUM OF FIS020-REC
		NEXT SENTENCE
	ELSE
		GO TO 8050-SEARCH-FILE.

	IF F-LOC = SPACES OR F-LOC = TAPE-LOC OF FIS020-REC
		NEXT SENTENCE
	ELSE
		GO TO 8050-SEARCH-FILE.
	IF F-TYPE =SPACES OR F-TYPE = TAPE-TYPE OF FIS020-REC
		NEXT SENTENCE
	ELSE
		GO TO 8050-SEARCH-FILE.
	IF F-OWNER = SPACES OR F-OWNER =TAPE-OWNER OF FIS020-REC
		NEXT SENTENCE
	ELSE
		GO TO 8050-SEARCH-FILE.
	IF F-DESC = SPACES OR F-DESC = TAPE-DESC OF FIS020-REC
		NEXT SENTENCE
	ELSE
		GO TO 8050-SEARCH-FILE.
8060-FOUND-IT.
	IF SEARCH-CALLER = "F"
	DISPLAY " "
	DISPLAY "INDEX = ", FIS020-INDEX
	DISPLAY "NUMBER = ",TAPE-NUM OF FIS020-REC
	DISPLAY "TYPE = ",TAPE-TYPE OF FIS020-REC
	DISPLAY "OWNER = ", TAPE-OWNER OF FIS020-REC
	DISPLAY "LOCATION = ",TAPE-LOC OF FIS020-REC
	DISPLAY "DESCRIPTION = ",TAPE-DESC OF FIS020-REC
	DISPLAY " ".
	IF SEARCH-CALLER = "L"
		PERFORM 8080-LPT-OUT.
	GO TO 8050-SEARCH-FILE.
8070-SEARCH-EXIT.
	EXIT.
8080-LPT-OUT SECTION.
	MOVE CORRESPONDING FIS020-REC TO PRINT-LINE.
	MOVE FIS020-INDEX TO TAPE-IND OF PRINT-LINE.
	SET LINE-COUNTER UP BY 1.
	IF LINE-COUNTER = 55
		PERFORM 8010-HEADER.
	WRITE P-REC FROM PRINT-LINE AFTER ADVANCING 1 LINE.
	SET TOTAL-RECS UP BY 1.
8090-LPT-OUT-EXIT.
	EXIT.


9000-CLOSOUT SECTION.
9010-NORMAL-CLOSOUT.
	CLOSE FIS020-FILE.
	DISPLAY " ".
	DISPLAY "[FIS020 - ENDING EXECUTION]".
	STOP RUN.



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search