DataMuseum.dk

Presents historical artifacts from the history of:

Q1 computer

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Q1 computer

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦08f67b1f7⟧ Q1_Text, reclen=79

    Length: 9717 (0x25f5)
    Types: Q1_Text, reclen=79
    Notes: q1file
    Names: »KSDEMOS«

Derivation

└─⟦a1fc8f6a5⟧ Bits:30008659 DDMQ1-0099_KSAM_DEMO_1_OF_2
    └─⟦this⟧ »KSDEMOS« 

Text

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;