home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / rbsrc / rb-ridx.scr < prev    next >
Text File  |  1988-04-27  |  13KB  |  1 lines

  1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \ Build Screen                                   21:47 04/26/88                                                                 : MARKER ;                                                      2 12 THRU 2 12 THRU                                             BSAVE OVERLAY RBRIDX                                            FORGET MARKER                                                   BYE                                                                                                                                                                                             2 11 THRU                                                       SYSTEM-INIT                                                     SCR-INIT                                                        RBRIDX                                                                                                                                                                                                                                                          \ Variables                                      13:16 04/18/88                                                                 FORTH DEFINITIONS DECIMAL                                       BSTART OVERLAY                                                                                                                  INCLUDE LCGLOBAL.DEF                                            INCLUDE FILES.DEF                                               INCLUDE FIELD.DEF                                                                                                               CREATE  INDICES     100  ALLOT                                                                                                  94 CONSTANT TYPES                                                                                                               DICTIONARY WRK.DCT  NULL      DICTIONARY WRK.DAT NULL           HCB T.IDX                                                                                                                       \ variables                                      21:47 04/26/88                                                                 0 EQU SIZE          0 EQU OFFSET                                0 EQU CUR#          0 EQU ANCHOR                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                \ make-idx                                       13:15 04/18/88                                                                 CREATE T.BUFF   300 ALLOT  T.BUFF 300 255 FILL                                                                                  : MAKE-IDX   ( --- ) INDICES 100 ERASE                                       WRK.DCT D.HU @ 0 ?DO                                            FLD.BUFF I WRK.DCT DICT-READ                                    FLD.BUFF ?ACTIVE IF                                             FLD.BUFF FLD.?IDX C@                                            IF WRK.DCT HCB>N T.IDX NAME>HCB                                    1 INDICES I + C! T.IDX I CHG-IDX                                T.IDX 0 FMAKE DROP                                              T.IDX T.BUFF 300 FWRITE DROP                                    T.IDX FCLOSE DROP                                             THEN THEN LOOP ;                                                                                                  \ compares                                       14:27 03/14/88                                                                                                                                 : CMP-NUM   ( buffa buffb --- ret_code )                                    >R OFFSET + 2@                                                  R> OFFSET + 2@ NUMCMP ;                                                                                             : NUM>HASH  ( buffa --- ret_code )                                          OFFSET + 2@ DROP 149 MOD ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \ cmp-str                                        14:27 03/14/88                                                                 : CMP-STR   ( buffa buffb --- )                                             >R OFFSET + SIZE                                                   STRPCK MAKELC COUNT                                          R> OFFSET + SIZE                                                   STRPCK MAKELC COUNT STRCMP                                   ;                                                                                                                   : STR>HASH  ( buffer --- value )                                            OFFSET + SIZE                                                   HASH-STR ;                                                                                                                                                                                                                                                                                                          \ idx-set                                        14:32 03/14/88                                                                                                                                 : IDX-STR  ( 'idx --- )                                                    ['] CMP-STR OVER IDX.CMP !                                      ['] STR>HASH SWAP IDX.HASH ! ;                                                                                                                                                       : IDX-NUM  ( 'idx --- )                                                    ['] CMP-NUM OVER IDX.CMP !                                      ['] NUM>HASH SWAP IDX.HASH ! ;                                                                                                                                                                                                                                                                                                                                                       \ .ridx                                          21:27 04/26/88                                                                 5 5 4 35 WINDOW INFW                                                                                                                                                                            : .RIDX   ( num --- )                                                     >R 18 2 INFW HIL R> 0 <# # # # # # #> SWAP WND-STR!             27 2 INFW HIL WRK.DAT D.NA @ 0 <# # # # # # #> SWAP             WND-STR! ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \ add-indexes                                    13:39 03/14/88                                                                 ' NOOP ' NOOP MAX_REC_SZ WRK.DAT " NULL" INDEX WRK.IDX                                                                          : ADD-INDEX    EQU CUR# WRK.DCT D.HU @ 0 ?DO                                   INDICES I + C@                                                  IF FLD.BUFF I WRK.DCT DICT-READ                                    WRK.IDX TYPES FLD.BUFF FLD.TYPE C@ @BIT                         IF IDX-NUM ELSE IDX-STR THEN                                       FLD.BUFF FLD.OFFSET @ EQU OFFSET                                FLD.BUFF FLD.LENGTH @ EQU SIZE                                  CUR# .RIDX                                                      WRK.IDX I CHG-IDX WRK.IDX 2 FOPEN DROP                          WRK.IDX WRK.BUFF CUR# IDX-ADD                                   WRK.IDX FCLOSE DROP                                       THEN LOOP ;                                      \ .display                                       21:40 04/26/88                                                                                                                                                                                                 : .DISPLAY    " Reindex" NONE DOUBLE INFW OPEN-WINDOW                         2 2 INFW NOR " Indexing item # 00000 of 00000"                  WND-CSTR! ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \ rbridx                                         13:26 04/18/88                                                                 : RBRIDX     " Reindex a file" @ACTIVES ?DUP                                 IF 1- DUP EQU ANCHOR                                               WRK.DCT OVER NAME>DCT WRK.DAT OVER NAME>DAT                     WRK.DCT HCB>N WRK.IDX NAME>HCB                                  WRK.DCT OPEN-DICTIONARY WRK.DAT OPEN-DICTIONARY                 MAKE-IDX .DISPLAY -CUR                                          WRK.DAT D.HU @ 0                                                ?DO                                                               WRK.BUFF I WRK.DAT DICT-READ                                    WRK.BUFF ?ACTIVE IF I ADD-INDEX THEN                          LOOP THEN                                                     INFW CLOSE-WINDOW +CUR                                          WRK.DCT CLOSE-DICTIONARY                                        WRK.DAT CLOSE-DICTIONARY ;                        \ Excises                                        21:45 04/26/88                                                                 EXCISE SIZE OFFSET                                              EXCISE CUR# ANCHOR