Re: Новый механизм актуализации
Пользователь:
goirvi (IP-адрес скрыт)
Дата: 21, January, 2013 08:07
Здравствуйте, уважаемые разработчики!
С недавнего времени наша библиотека работает на ИРБИС64, версия 2012.1 Вопрос по файлу ibis.ifs.
В RELEASE_12_1.doc читаем:
"...В таблице актуализации - в первом элементе дополнительно к точке входа указываются (через запятую) МЕТКИ полей, имеющих отношение к данной строке (т.е. метки тех полей, которые используются в соответствующем формате - третьем элементе таблицы). Схематичный пример строки таблицы инвертирования:
100 0 .....v100......v200......v300....
Ей будет соответствовать следующая строка таблицы актуализации:
100,100,200,300 0 .....v100......v200......v300.... "
В дистрибутивах видим:
ibis.fst:
...
690 0 (if p(v690) then if v690^l*1.1='.'or v690^l*1=''then|SU= |v690^l else |SU=|v690^l fi fi/)/(if p(v330) then if v330^l*1.1='.'or v330^l*1=''then|SU= |v330^l else |SU=|v330^l fi fi/)/if v920:'NJ' then (if p(v922) then if v922^l*1.1='.'or v922^l*1=''then|SU= |v922^l else |SU=|v922^l fi fi/) fi239 0 (|ST=|v239|%|/)
230 0 if p(v230) then if a(v239) then (if &unifor('1*R; ?v230^d#1')<>''then/'ST='&unifor('1*R; ?v230^d#1') fi,|%|d230)/(if &unifor('1*R; ?v230^d#2')<>''then/'ST='&unifor('1*R; ?v230^d#2') fi,|%|d230)/(if &unifor('1*R; ?v230^d#3')<>''then/'ST='&unifor('1*R; ?v230^d#3') fi,|%|d230) fi fi
39 0 MHL,"RD=EX"d398/"RD=PA"d395/"RD=PV"d396/"RD=SH"d399/"RD=TI"d397/"RD=AF"d391/"RD=PI"d481/"RD=OK"d316/"RD=PK"d317/"RD=DK"d318
907 0 if v920='J' then else if &unifor('Korg.mnu|8'):'1'then (if v907^b<>''then|TH=|v907^b,if v907^c:'штр'then|-|v907^c fi,|-|v907^a fi/if v907^a<>''then|TH=|v907^a,|-|v907^b fi,|%|d907/) fi fi
910 0 if &unifor('Korg.mnu|7'):'1'or &unifor('IPRIVATE,PROVFOND,')='1'or &unifor('IMAIN,PROVFOND,')='1'then (if p(v910)then if v910^a:'6' and a(v910^w) or '2 7':v910^a then else if &unifor('Av920#1')='NJ'or &unifor('Av920#1')='NJP'then |INP=|v910^h,if p(v910^h) then|П|d910^s,|(|v910^0,if p(v910^s)then| из |v910^1 fi,|)|d910^0,if 'C U':v910^a and p(v910^s) and val(v910^1)>val(v910^0)then /|INP=|v910^h|(|,f(val(v910^1)-val(v910^0),0,0),if p(v910^s)then| из |v910^1fi,|)|d910^h fi fi else |INP=|v910^b,if p(v910^b) then|П|d910^s,|(|v910^0,if p(v910^s)then| из |v910^1fi,|)|d910^0if 'C U':v910^a and p(v910^s) and val(v910^1)>val(v910^0)then /|INP=|v910^b|(|,f(val(v910^1)-val(v910^0),0,0),if p(v910^s)then| из |v910^1fi,|)|d910^b fi fi/|INP=|v910^h,if p(v910^h) then|П|d910^s,|(|v910^0|)|,if 'C U':v910^a and p(v910^s) and val(v910^1)>val(v910^0)then /|INP=|v910^h|(|,f(val(v910^1)-val(v910^0),0,0),if p(v910^s)then| из |v910^1fi,|)|d910^h fi fi fi/if a(v910^s) then'INP=не проверены 'v910^d fi/if p(v910^!) then'INP=не на месте ('v910^!')'fi/|INP=проверены |d910^s,v910^s*6.2|.|,v910^s*4.2|.|,v910^s.4,fi fi,|%|d910/)fi
80 0 if &unifor('IMAIN,ATHRSAK,')='1'then (if p(v606) then '?',if v606:'^a' and v606^b='' and v606^G='' and v606^H='' and v606^9='' and v606^a*27=''then v606^a else v606^a.10, &unifor(|+B|v606^a*10)fi,if v606^d='' and v606^b*10='' and v606^b<>''then v606^b else v606^b.1,&unifor(|+B|v606^B*1) fi,&unifor(|+B|v606^c),&unifor(|+B|v606^d),&unifor(|+B|v606^G),&unifor(|+B|v606^E),&unifor(|+B|v606^O),&unifor(|B|v606^H),&unifor(|+B|v606^9) fi/) fi
80 0 if &unifor('IMAIN,ATHRSAK,')='1'then (if p(v607) then '?',if v607:'^a' and v607^b='' and v607^G='' and v607^H='' and v607^9='' and v607^a*27=''then v607^a else v607^a.10, &unifor(|+B|v607^a*10)fi,if v607^d='' and v607^b*10='' and v607^b<>''then v607^b else v607^b.1,&unifor(|+B|v607^B*1) fi,&unifor(|+B|v607^c),&unifor(|+B|v607^d),&unifor(|+B|v607^G),&unifor(|+B|v607^E),&unifor(|+B|v607^O),&unifor(|B|v607^H),&unifor(|+B|v607^9) fi/) fi
...
ibis.ifs:
...
330,922,690 0 (if p(v690) then if v690^l*1.1='.'or v690^l*1=''then|SU= |v690^l else |SU=|v690^l fi fi/)/(if p(v330) then if v330^l*1.1='.'or v330^l*1=''then|SU= |v330^l else |SU=|v330^l fi fi/)/if v920:'NJ' then (if p(v922) then if v922^l*1.1='.'or v922^l*1=''then|SU= |v922^l else |SU=|v922^l fi fi/) fi
239,239 0 (|ST=|v239|%|/)
239,230 0 if p(v230) then if a(v239) then (if &unifor('1*R; ?v230^d#1')<>''then/'ST='&unifor('1*R; ?v230^d#1') fi,|%|d230)/(if &unifor('1*R; ?v230^d#2')<>''then/'ST='&unifor('1*R; ?v230^d#2') fi,|%|d230)/(if &unifor('1*R; ?v230^d#3')<>''then/'ST='&unifor('1*R; ?v230^d#3') fi,|%|d230) fi fi
398,395,396,399,397,391,481,316,317,318,39 0 MHL,"RD=EX"d398/"RD=PA"d395/"RD=PV"d396/"RD=SH"d399/"RD=TI"d397/"RD=AF"d391/"RD=PI"d481/"RD=OK"d316/"RD=PK"d317/"RD=DK"d318
920,907 0 if v920='J' then else if &unifor('Korg.mnu|8'):'1'then (if v907^b<>''then|TH=|v907^b,if v907^c:'штр'then|-|v907^c fi,|-|v907^a fi/if v907^a<>''then|TH=|v907^a,|-|v907^b fi,|%|d907/) fi fi
920,910 0 if &unifor('Korg.mnu|7'):'1'or &unifor('IPRIVATE,PROVFOND,')='1'or &unifor('IMAIN,PROVFOND,')='1'then (if p(v910)then if v910^a:'6' and a(v910^w) or '2 7':v910^a then else if &unifor('Av920#1')='NJ'or &unifor('Av920#1')='NJP'then |INP=|v910^h,if p(v910^h) then|П|d910^s,|(|v910^0,if p(v910^s)then| из |v910^1 fi,|)|d910^0,if 'C U':v910^a and p(v910^s) and val(v910^1)>val(v910^0)then /|INP=|v910^h|(|,f(val(v910^1)-val(v910^0),0,0),if p(v910^s)then| из |v910^1fi,|)|d910^h fi fi else |INP=|v910^b,if p(v910^b) then|П|d910^s,|(|v910^0,if p(v910^s)then| из |v910^1fi,|)|d910^0if 'C U':v910^a and p(v910^s) and val(v910^1)>val(v910^0)then /|INP=|v910^b|(|,f(val(v910^1)-val(v910^0),0,0),if p(v910^s)then| из |v910^1fi,|)|d910^b fi fi/|INP=|v910^h,if p(v910^h) then|П|d910^s,|(|v910^0|)|,if 'C U':v910^a and p(v910^s) and val(v910^1)>val(v910^0)then /|INP=|v910^h|(|,f(val(v910^1)-val(v910^0),0,0),if p(v910^s)then| из |v910^1fi,|)|d910^h fi fi fi/if a(v910^s) then'INP=не проверены 'v910^d fi/if p(v910^!) then'INP=не на месте ('v910^!')'fi/|INP=проверены |d910^s,v910^s*6.2|.|,v910^s*4.2|.|,v910^s.4,fi fi,|%|d910/)fi
606,80 0 if &unifor('IMAIN,ATHRSAK,')='1'then (if p(v606) then '?',if v606:'^a' and v606^b='' and v606^G='' and v606^H='' and v606^9='' and v606^a*27=''then v606^a else v606^a.10, &unifor(|+B|v606^a*10)fi,if v606^d='' and v606^b*10='' and v606^b<>''then v606^b else v606^b.1,&unifor(|+B|v606^B*1) fi,&unifor(|+B|v606^c),&unifor(|+B|v606^d),&unifor(|+B|v606^G),&unifor(|+B|v606^E),&unifor(|+B|v606^O),&unifor(|B|v606^H),&unifor(|+B|v606^9) fi/) fi
607,80 0 if &unifor('IMAIN,ATHRSAK,')='1'then (if p(v607) then '?',if v607:'^a' and v607^b='' and v607^G='' and v607^H='' and v607^9='' and v607^a*27=''then v607^a else v607^a.10, &unifor(|+B|v607^a*10)fi,if v607^d='' and v607^b*10='' and v607^b<>''then v607^b else v607^b.1,&unifor(|+B|v607^B*1) fi,&unifor(|+B|v607^c),&unifor(|+B|v607^d),&unifor(|+B|v607^G),&unifor(|+B|v607^E),&unifor(|+B|v607^O),&unifor(|B|v607^H),&unifor(|+B|v607^9) fi/) fi
...
Вопрос: в файле ibis.ifs точка входа должна стоять ПЕРВОЙ или порядок не важен?
С уважением, Гончарова И. В.
ГУНБ Красноярского каря.