|
|
DataMuseum.dkPresents historical artifacts from the history of: Q1 computer |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Q1 computer Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 9717 (0x25f5)
Types: Q1_Text, reclen=79
Notes: q1file
Names: »KSDEMOS«
└─⟦a1fc8f6a5⟧ Bits:30008659 DDMQ1-0099_KSAM_DEMO_1_OF_2
└─⟦this⟧ »KSDEMOS«
DCL 1 KSSTRUCT,
2 RC CHAR(1), /*RETURN CODE FOR READ*/
2 KSKEY CHAR(9),
2 DATARECORD CHAR(71);
DCL 1 KSREC,
2 RCODE CHAR(1),
2 FILENAME CHAR(7);
DCL SKEY CHAR(9); /*KEY FOR SEARCH*/
DCL N CHAR(3);
DCL STEST FILE; /*REGULAR FILE*/
DCL KTEST FILE; /* KSAM FILE*/
DCL 1 SRECSTRUC,
2 SSN CHAR(9),
2 NAME CHAR(20),
2 STREET CHAR(30),
2 CITY CHAR(10),
2 STATE CHAR(11);
DELAY: PROCEDURE;
DCL J BINARY;
DCL SLOW FLOAT INIT(1);
DLOOP:DO J=1 TO 100;
SLOW=(((SLOW*6)/5)+2);
END;
END;
SEARCH: PROCEDURE;
PUT FILE(D)SKIP LIST('BEGIN');
CALL OUTPUT(1,6);
READ KEY(SKEY) FILE(STEST) INTO(SRECSTRUC);
CALL OUTPUT(1,6);
PUT FILE(D) LIST(' END');
T:PUT SKIP LIST(' ');
END;
KOERROR: PROCEDURE;/*KSAM FILE OPEN ERROR*/
IF RCODE=1 THEN PUT SKIP(2) LIST('FILE NOT FOUND ON INDEX');
ELSE PUT SKIP(2) LIST('FORMAT ERROR:FILE NOT ACCESSIBLE');
END;
KRERROR: PROCEDURE;/*KSAM READ ERROR*/
IF RC=2 THEN PUT SKIP(2) LIST('FORMAT ERROR ON READ');
ELSE IF RC=3 THEN PUT SKIP(2) LIST('FILE NOT OPENED');
ELSE PUT SKIP(2) LIST('KEY NOT FOUND IN FILE');
END;
KSR: PROCEDURE;
DCL KSSTR POINTER;
DCL KSCNTL POINTER;
DCL KSCNTLAREA(16) CHAR(128);
/*OPEN KSAM FILE*/
READREC:DO;
/*READ RECORD FROM KSAM FILE*/
KSKEY=SKEY;
KSSTR=ADDR(KSSTRUCT);
KSCNTL=ADDR(KSCNTLAREA(1));
PUT FILE(D) SKIP LIST('BEGIN');
CALL OUTPUT(1,6);
CALL KSREAD(KSCNTL, KSSTR);
CALL OUTPUT(1,6);
PUT FILE(D) LIST(' END');
IF RC¬=' ' THEN READERROR:DO;
CALL KRERROR;
RETURN;
END;
END;
END;
SRERROR: PROCEDURE; /*REGULAR FILE READ ERROR*/
IF ONCODE=1 THEN PUT SKIP LIST('DISK FORMAT ERROR');
ELSE IF ONCODE=2 THEN PUT SKIP LIST('READ ERROR');
ELSE IF ONCODE=3 THEN PUT SKIP LIST('WRITE ERROR');
ELSE IF ONCODE=4 THEN PUT SKIP LIST('KEY NOT FOUND');
ELSE PUT SKIP LIST('FILE NOT OPENED OR DISK REMOVED ON OPEN');
END;
PRINTREC: PROCEDURE;
PUT SKIP(3) LIST('SOCIAL SECURITY NO:',SSN);
PUT SKIP LIST('NAME:',NAME);
PUT SKIP LIST('STREET ADDRESS:',STREET);
PUT SKIP LIST('CITY:',CITY,'STATE:',STATE);
END;
ON ERROR GO TO T;
OPEN STEST;
/* OPEN KSAM FILE */
KSSTR=ADDR(KSREC);
KSCNTL=ADDR(KSCNTLAREA(1));
FILENAME='KTEST ';
CALL KSOPEN(KSCNTL,KSSTR);
IF RCODE¬=' ' THEN OPENERROR: DO;
CALL KOERROR;
END;
LOOP:PUT FILE(D) SKIP LIST('EXIT PROGRAM?(TYPE YES OR NO:)');
GET SKIP LIST(N);
IF N='YES' THEN GO TO FINI;
ELSE PUT FILE(D) SKIP LIST('ENTER KEY:');
GET SKIP LIST(SKEY);
PUT FILE(D) SKIP LIST ('GET READY TO TIME REGULAR SEARCH');
CALL DELAY;
CALL SEARCH;
IF ONCODE>0 THEN READWRONG:DO;
CALL SRERROR;
GO TO LOOP;
END;
ELSE CALL PRINTREC;
PUT FILE(D) SKIP LIST('GET READY TO TIME KSAM SEARCH');
CALL DELAY;
CALL KSR;
IF RCODE¬=' ' THEN GO TO LOOP;
ELSE IF RC¬=' ' THEN GO TO LOOP;
ELSE TRANSFER:DO;
SSN=KSKEY;
NAME=SUBSTR(DATARECORD,1,20);
STREET=SUBSTR(DATARECORD,21,30);
CITY=SUBSTR(DATARECORD,51,10);
STATE=SUBSTR(DATARECORD,61,11);
END;
CALL PRINTREC;
GO TO LOOP;
FINI:END;