Разработка прототипа системы управления объектно-ориентированной базой данных

         

Работа с базовыми объектами - часть 2


LONG VAR SIZE_X

: DATWRROOT -1 OLS -1 OLS 0 OLS 4 OLS 0 OLS ;

: DATWRINT  -1 OLS -1 OLS 4 OLS 4 OLS VALINT OLS ;

: DATWRSTR  -1 OLS -1 OLS LENSTR OLS LENSTR OLS ADRSTR LENSTR DO DWS1 D ;

  : DWS1 [A] C @B OBS 1+ ;

: NEWOBJ1 [] SIZE_ROOT ! SIZE_X NEWOBJ3 ;

: NEWOBJ3 '' DD_ROOT ! WRI_DATA

             NEWID C ! OIDV SIZE_X C2 D.NEWOBJ [OID] ;

9 VALUE LCH

LCH LONG VCTR CLONEHDR  VAR DATCH LONG VAR LENVMEM1

:: : CLONE [OID] C HIPRIO

 C LOADOBJ FINDOID PrioQueNUM C PUSH 2 Channels !NCHAN 0 GOTO

 CLONE1 []

 '' CC_ROOT ! WRI_DATA NEWID C 0 ! CLONEHDR SZ_HDROBJ HSIZE+ C2 D.NEWOBJ

 [OID] POP 3 Channels C ! DATCH !NCHAN LENVMEM C ! LENVMEM1

 C2 [OID_NEW LEN OID_NEW] CLONE_DATA [OID_NEW] ;

: CLONE1

     ILS 1 ! CLONEHDR [BHR]   ILS 2 ! CLONEHDR [KH]

     ILS 3 ! CLONEHDR [TRC]   0 4 ! CLONEHDR

     SZ_HDROBJ 5 ! CLONEHDR -1 6 ! CLONEHDR

     -1 7 ! CLONEHDR 0 8 ! CLONEHDR

      0 9 ! CLONEHDR ;

: CCR1 [N] C CLONEHDR OLS 1+ ;

: CC_ROOT 0 LCH 1+ DO CCR1 D ;

: CLONE_DATA [LEN OID] '' COPY_DATA E2 NEWDREC [] ;

: COPY_DATA [] DATCH NCHAN LENVMEM1 DO_IOBSCC DD ;

:: 0 VALUE N_TRSC

[Запись новых данных, запись в журнал]

: NEWDREC [SIZED PROC OID] N_VAL N_TRSC C3 NEWJREC FINDOID

 PrioQueNUM [SIZE PROC N] C PUSH

 2 Channels !NCHAN

     [SIZED PROC] ! WRI_DATA NEWVM1 G_VAL C OLS [ADR_DATA]

[перечитать канал данных]

 GOTO POP 3 Channels LCTX [] ;

[новая запись в журнал. На вх: номер транз. и адрес из заголовка]

: NEWJREC [addr_hdr TRANS OID] C LOADOBJ FINDOID PrioQueNUM

[. TRANS N] C PUSH 4 Channels

     !NCHAN JRECLEN UPSIZE OLS POP NCHAN PUSH 2 Channels !NCHAN

     C GOTO ILS POP !NCHAN

     E2 OWS OLS W_DATIME [] ;

B10

[Запись текущего времени]

: W_DATIME 1979 OWS 12 OBS 31 OBS TMGET TMS ;

: TMS [num] N2T GBR E2 GBR E2 GBR E2 OBS OBS OBS 100 * OWS ;

B16

[просмотр журнала объекта]

[Переключиться на журнал]

: OBJ.J [OID]

        C LOADOBJ FINDOID PrioQueNUM 4 Channels !NCHAN ;

: JVIEW [oid] CR ."Updated data:"

                  OBJ.J LENVMEM JRECLEN / D 0 GOTO DO JVIEW1 ;

: JVIEW1 CR ."Trans= " ILS .D SP

            IWS BR N_BHR ."Behav.=" N_VAL ."AddrVal=" N_KH ."Knowhow="

            ELSE ."?????? =" ILS SP .D  SP JDATAV1 ;

: JDATAV1 S( BASE@ ) B10 IWS IBS IBS 2 TON #. TOB 2 TON #. TOB 4 TON

  SP SP #: POS2 #: POS2 #. POS2 #  IWS 4 TON TOB ;

  : POS2 [B] IBS 2 TON TOB ;

[Определить размер объекта в памяти = заголовок + данные]

: SIZEMEMOBJ [N] C PrioQueOID BR0 T0 SMEMO1 [0/size] ;

: SMEMO1 3 Channels !NCHAN LENVMEM HSIZE+ HSIZE+ SZ_HDROBJ + [size] ;




Содержание  Назад  Вперед






Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий