свиване
Примерна програма за свиване
: A_TEST_CREATEIMP.PRG
: команда implode(действие,указания..)
: 1. запис
: implode ('init',filename,fullcomplect)
: implode ('col',col_num,indexfilename,index_offset,indextype)
: where indextype = 'D','D2' (disk index files) or 'M','M1','M2' (memory indexing)
: index_offset must be 0 or -1,-2.. when indextype is 'D2' or 'M2'
: and col_num+index_offset must be typed as 'D' or 'M1'
: for fullcomplect only 'M' indextypes are valid
: implode ('analize')
: implode ('write')
: implode ('close')
: 2. четене
: implode ('open',filename)
: implode ('read')
: implode ('close')
база m
копи . m1
база m1
имп_име 'proben'
имп_име_т имп_име+'.imp'
имп_име_б имп_име+'.bag'
имп_име_ф имп_име+'.fmt'
имп_име_г имп_име+'.ifm'
имп_име_к имп_име+'.b4z'
имп_опис 'opis_proben'
индекс_в_паметта 1
двойни_индекси 1
пълен_комплект 0
междинна_торба 0
ако междинна_торба=0 то създай @имп_опис(50)
прдоклад 'init...'
implode('init',имп_име_т,пълен_комплект)
к 1
10 :
индексен 'index'+formatn(к,2,0,2)+'.b4i'
колона_офсет 0
ако индекс_в_паметта
тип_индекс 'M'
ако двойни_индекси
ако (к=4) or (к=6)
тип_индекс 'M1'
крайако
ако (к=5) or (к=7)
индексен '*'
тип_индекс 'M2'
колона_офсет -1
крайако
крайако
иначе
тип_индекс 'D'
ако двойни_индекси
ако (к=5) or (к=7)
индексен '*'
тип_индекс 'D2'
колона_офсет -1
крайако
крайако
крайако
ако тип_индекс<>'' то implode('col',к,индексен,колона_офсет,тип_индекс)
к к+1
ако к<=countcc(0) то преход 10
прдоклад 'analize...'
implode('analize')
implode('write')
физтр @имп_име_б
прмт cbasename(0)
ако пълен_комплект=0
ако междинна_торба
bag (имп_име_б,'N',имп_име_т,имп_име_ф)
bag (имп_име_б,'+',имп_име_г)
иначе
база @имп_опис
добави 3
поле (countrr(0)-2,1)=имп_име_т
поле (countrr(0)-1,1)=имп_име_ф
поле (countrr(0),1)=имп_име_г
база @прмт
крайако
к 1
200 : събира всичко в торбата имп_име_б
индексен_ 'index'+formatn(к,2,0,2)
индексен_т индексен_+'.b4i'
ако existfs(индексен_т)
индексен_ф индексен_+'.fmt'
ако междинна_торба
bag (имп_име_б,'+',индексен_т,индексен_ф)
иначе
база @имп_опис
добави 2
поле (countrr(0)-1,1)=индексен_т
поле (countrr(0),1)=индексен_ф
база @прмт
крайако
крайако
к к+1
ако к<=countcc(0) то преход 200
крайако
прдоклад 'write...'
ако междинна_торба
bag (имп_име_б,'W',имп_име_к)
иначе
база @имп_опис
отрезф(1,0)
bag ('','Z',имп_име_к)
база @прмт
крайако
implode('close')
физтр @имп_име_б
физтр @имп_име_г
изтр @имп_име_т
ако междинна_торба=0 то изтр @имп_опис
база m1
===================край=====================