DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

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

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦90cff6c04⟧ TextFile

    Length: 7584 (0x1da0)
    Types: TextFile
    Notes: Mikados_K
    Names: »IOPE1.K«

Derivation

└─⟦5630b2e42⟧ Bits:30009005 START APRIL 1985 aft april 1985 (PASCAL kildetekster)
    └─⟦this⟧ »IOPE1.K« 
└─⟦6c21327e0⟧ Bits:30008986 LINIMATIC K-FILER (IKKE HELT UPTODTATE)
    └─⟦this⟧ »IOPE1.K« 

Mikados K File

PROCEDURE OUTHEAD;
VAR     I:INTEGER;
BEGIN
  WITH FILEHEAD DO
  BEGIN
    F^(1):=NBUC;                                   
    F^(2):=NBLK;                                   
    F^(3):=NREC;                                   
    F^(4):=BLKPRBUC;                               
    F^(5):=RECPRBUC;                               
    F^(6):=RECPRBLK;                               
    F^(7):=KEYFLDS;                                
    F^(8):=AZSIZE;                                
    F^(9):=BUTSIZE;                                
    F^(10):=BLTSIZE;                               
    F^(11):=BLKSIZE;                               
    F^(12):=RECSIZE;                               
    F^(13):=KEYSIZE;                               
    F^(14):=SEGINFLH;                              
    F^(15):=SEGINBUT;                              
    F^(16):=SEGINBUC;                              
    F^(17):=SEGINBLT;                              
    F^(18):=SEGINBLK;                              
    F^(19):=INITREC;                               
    F^(20):=BUCINUSE;                              
    F^(21):=BLKINUSE;                              
    F^(22):=RECINUSE;                              
    IF FILEINIT THEN F^(23):=1 ELSE F^(23):=0;     
    IF FILEOPEN THEN F^(24):=1 ELSE F^(24):=0;   
    FOR I:=1 TO 9 DO                             
    BEGIN                                        
      F^(22+I*3):=KEYPOS(I);                     
      F^(23+I*3):=KEYLNG(I);                     
      F^(24+I*3):=KEYSGN(I)                      
    END;                                         
    SEEK(F,1);                                   
    IOC;
    PUT(F);                                      
    IOC
  END                                            
END;
(*$P*)
PROCEDURE IOPEN;
       (*F ER ÅBNET FØR KALD; MED REWRITE*)
VAR I,J,NUM,BUC,K,BLKNUM:INTEGER;
BEGIN
  WITH FILEHEAD DO
  BEGIN
    SEEK(F,1);
    IOC;
    GET(F);
    IOC;
    NBUC       := F^(1);
    NBLK       := F^(2);
    NREC       := F^(3);
    BLKPRBUC   := F^(4);
    RECPRBUC   := F^(5);
    RECPRBLK   := F^(6);
    KEYFLDS    := F^(7);
    BUTSIZE    := F^(9);
    BLTSIZE    := F^(10);
    BLKSIZE    := F^(11);
    RECSIZE    := F^(12);
    KEYSIZE    := F^(13);
    SEGINFLH   := F^(14);
    SEGINBUT   := F^(15);
    SEGINBUC   := F^(16);
    SEGINBLT   := F^(17);
    SEGINBLK   := F^(18);
    INITREC    := F^(19);
    BUCINUSE   := F^(20);
    BLKINUSE   := F^(21);
    RECINUSE   := F^(22);
    FILEINIT   := F^(23)=1;
    FILEOPEN   := F^(24)=1;
    FOR I:=1 TO 9 DO
    BEGIN
       KEYPOS(I):= F^(22+I*3);
       KEYLNG(I):= F^(23+I*3);
       KEYSGN(I):= F^(24+I*3)
    END;
    BUTCHG:=FALSE;
    BLTCHG:=FALSE;
    BLKCHG:=FALSE;
    BUCINZONE:=0;
    BLKINZONE:=0;
    BLKENTRY:=0;
    BUT:=HELPBLT+1;                     
    BLT:=BUT+BUTSIZE;
    BLK:=BLT+BLTSIZE;
    KEY1:=BLK+BLKSIZE+RECSIZE;
    KEY2:=BLK+BLKSIZE;
    ENTRYSIZE:=KEYSIZE+2;
    IF Z(BUT)<>BUTSIZE+BLTSIZE+BLKSIZE+RECSIZE+KEYSIZE  (*ZONESTØRRELSE*)
    THEN
    BEGIN
      IER:=-4;
      EXIT(IOPEN)
      (*FILEN ER IKKE ISF*)
    END;
    IF RECSIZE>MAXRECSIZE THEN BEGIN IER:=-17;EXIT(IOPEN) END;
    IF BLTSIZE>HELPBLT THEN BEGIN IER:=-35;EXIT(IOPEN) END;
    IF FILEINIT THEN COPSEGS(2,BUTSIZE,BUT,LÆS);
    IF FILEOPEN THEN
    BEGIN
      IF NOT FILEINIT THEN                       
      BEGIN                                      
        IER:=-19;                                
        INITREC:=0;                              
        BUCINUSE:=0;                             
        BLKINUSE:=0;                             
        RECINUSE:=0                              
      END                                        
      ELSE                                       
      BEGIN                                      
        BUCINUSE:=0;                             
        BLKINUSE:=0;                             
        RECINUSE:=0;                             
        FOR I:=1 TO NBUC DO                      
        BEGIN                                    
          BUC:=BUT+(I-1)*ENTRYSIZE+1;            
          COPSEGS(Z(BUC-1),BLTSIZE,BLT,LÆS); 
          NUM:=0;                                
          FOR J:=1 TO BLKPRBUC DO                
          BEGIN                                  
            BLKNUM:=BLT+1+(J-1)*ENTRYSIZE; 
            IF Z(BLKNUM)>0 THEN            
            BEGIN                          
              NUM:=NUM+Z(BLKNUM);          
              BLKINUSE:=BLKINUSE+1;        
              K:=BLKNUM                    
            END                            
          END;                             
          IF NUM>0 THEN                    
          BEGIN                            
            RECINUSE:=RECINUSE+NUM;        
            BUCINUSE:=BUCINUSE+1;          
            FOR J:=1 TO KEYSIZE DO Z(BUC+J):=Z(K+J)        
          END;                             
          BUTCHG:=TRUE;                    
          Z(BUC):=NUM                      
        END;   (*FOR I*)                   
        IER:=-18;                              
        BUCINZONE:=NBUC                    
      END                                  
    END;  (*FILEOPEN*)                     
    FILEOPEN:=TRUE;
    I:=IER;
    OUTHEAD;
    IER:=I                                       
  END
END  (*IOPEN*);

Full view