0 // связи записи DUNIK // удаление записи, если нет записи дисциплины // исправила - направление // формирование повторения поля 69 в RDR в соотв. с данной DUNIK // переформирую поля 910 // добавлено удаление полей 910 // при формировании 910 учла язык DEFFLD 3000 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 4000 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX // ищу запись дисциплины IF if val(&unifor('JVUZ,IDD=',v3^0))>0 then '1' else '0' fi // дисциплина есть // есть ли VUZ для этой записи DUNIK IF if v97<>''and v95<>'' then if val(&unifor('JVUZ,|'v93,if v92^c<>''then v92^c else if v92^n<>''then v92^n fi fi, v96,,v98,,"-"v95))<=0 then '1' else '0' fi fi //записи VUZ нет - сообщение и нечего не делаю PUTFLD 'Нет записи VUZ для этой УНД. Проверьте дисциплину.' FI IF if v97<>''and v95<>'' then if val(&unifor('JVUZ,|'v93,if v92^c<>''then v92^c else if v92^n<>''then v92^n fi fi,,v96,,v98,"-"v95))>0 then '1' else '0' fi fi //есть запись VUZ, обрабатывыаю дальше //------------------------- запись VUZ есть, есть ли в ней УНД CORREC '*' '^D',v3^0,'^W',v97 '|'v93,if v92^c<>''then v92^c else if v92^n<>''then v92^n fi fi,v96,,v98,"-"v95 IF if rsum((if p(v69) then if v69^W=&unifor('Av1001^W#1') then '1,' else '0,' fi fi))<=0 then '1' else '0' fi // УНД в записи VUZ нет - добавляю ADD 69 '^D',v1001^D,'^W',v1001^W, PUTFLD 'В запись VUZ добавлена дисциплина ',v1001^W FI DEL 1001 * END // проверка студентов при условии ACCESSRDR IF if val(&unifor('IMAIN,ACCESSRDR,1'))=1 then '1' else '0' fi // поиск записей студентов по связке DUNIK IF if val(&unifor('JRDR,?',if p(v92^C) then v93,,v92^C,,v96,,v98,"-S"v95 else v93,v92^N,,,v96,,v98,"-S"v95 fi))>0 then '1' else '0' fi //--------------------- студенты по связке DUNIK есть //--------------------- в записи студента формирую поле 69 ADD 111 &uf('+7W5#') CORREC 'RDR' mpu,"^A"v93,"^N"v92^N,"^C"v92^C,"^V"v96,"^O"v98,"^F"v95,"^0"v3^0 mhu,'?',if v92^C<>'' then v93,,v92^C,,v96,,v98,"-S"v95 else v93,,v92^n,,v96,,v98,"-S"v95 fi XXXXXXXXXXXXXXXXXXX // в переменной G5 запоминаю данные для поля 910 в DUNIK // с учетом проверки языка, если он задан IF if a(v26) then if v1001^0: ':' then if &uf('G2:',v1001^0)='' then '1' fi else '1' fi fi,if p(v26) and &uf('G2:',v1001^0)=&uf('+97',v26) then '1' else fi ADD 111 &uf('+7U5#','^D',v90^E,,'^B'v30) FI // заново формирую поля 69 в записи студента DEL 111 * ADD 111 (v69/) // сначала в 112, чтобы не повторять подполя B и D DEL 112 * ADD 112 XXXXXXXXXXXXXXXXXXX if a(v54) or &unifor('Av54#1')<>'' and &unifor('Av54^C#1')<>'' then if p(v90) and a(v90^U) then if &unifor('JVUZ,|',v90^a,if v90^C<>'' then ,v90^c else v90^n fi,,v90^v,,v90^o,"-"v90^f)>'0' then &unifor('DVUZ,?|',v90^a,if v90^C<>'' then ,v90^c else v90^n fi,,v90^v,,v90^o,"-"v90^f,'?,(v69/)') fi,,,,,,if &unifor('JVUZ,|',v90^a,if v90^C<>'' then ,v90^c else v90^n fi,,"-"v90^f)>'0' then &unifor('DVUZ,?|',v90^a,if v90^C<>'' then ,v90^c else v90^n fi,,"-"v90^f,'?,(v69/)') fi,,,,,if &unifor('JVUZ,|',v90^a,,,v90^v,,,v90^o,,"-"v90^f)>'0' then &unifor('DVUZ,?|',v90^a,,,v90^v,,,v90^o,,,"-"v90^f,'?,(v69/)') fi,,,,if &unifor('JVUZ,|',v90^a,,v90^o,,,"-"v90^f)>'0' then &unifor('DVUZ,?|',v90^a,,v90^o,,,"-"v90^f,'?,(v69/)') fi,,,,if &unifor('JVUZ,|',v90^a,if v90^C<>'' then ,v90^c else v90^n fi,,,v90^o,,"-"v90^f)>'0' then &unifor('DVUZ,?|',v90^a,if v90^C<>'' then ,v90^c else v90^n fi,,,v90^o,,"-"v90^f,'?,(v69/)') fi,,,,if &unifor('JVUZ,|',v90^a,,,v90^v,,"-"v90^f)>'0' then &unifor('DVUZ,?|',v90^a,,,v90^v,,,"-"v90^f,'?,(v69/)') fi,,,,if &unifor('JVUZ,|',v90^a,if v90^C<>'' then ,v90^c else v90^n fi,,,v90^v,,,"-"v90^f)>'0' then &unifor('DVUZ,?|',v90^a,if v90^C<>'' then ,v90^c else v90^n fi,,,v90^v,,,"-"v90^f,'?,(v69/)') fi,,,,if &unifor('JVUZ,|',v90^a,"-"v90^f)>'0' then &unifor('DVUZ,?|',v90^a,"-"v90^f,'?,(v69/)') fi,,,,,if &unifor('JVUZ,|',,,v90^v,,,v90^o,,"-"v90^f)>'0' then &unifor('DVUZ,?|',,,v90^v,,,v90^o,,,"-"v90^f,'?,(v69/)') fi,,,,,if &unifor('JVUZ,|',,,v90^v,,,"-"v90^f)>'0' then &unifor('DVUZ,?|',,,v90^v,,,"-"v90^f,'?,(v69/)') fi,,,,,if &unifor('JVUZ,|',,,v90^o,,,"-"v90^f)>'0' then &unifor('DVUZ,?|',,,v90^o,,,"-"v90^f,'?,(v69/)') fi,,,,,if &unifor('JVUZ,|',"-"v90^f)>'0' then &unifor('DVUZ,?|',"-"v90^f,'?,(v69/)') fi fi fi XXXXXXXXXXXXXXXXXXX REPEAT // перед добавлением поля 69 проверяю совпадение спец. и напр. с записью DUNIK ADD 69 if rsum((if p(v69) then if &uf('+97',v69^B)= &uf('+97',&unifor('Av112^B#1')) and &uf('+97',v69^D)= &uf('+97',&unifor('Av112^D#1')) and &uf('+97',v69^W)= &uf('+97',&unifor('Av112^W#1')) then '1,' else '0,' fi fi))=0 then &unifor('Av112#1') fi DEL 112 1 UNTIL if p(v112) then '1' fi // Удаление 69 в соответствии с изучаемым языком DEL 69 F if v920:'VUZ' then else (if p(v69) then if v69^d:':' then if &unifor('Av26#1')<>'' then if &unifor('DRDR,@'mfn,',v26|, |'):&unifor('G2:'v69^d) then'0'else'1' fi else '1' fi else '0' fi fi/) fi XXXXXXXXXXXXXXXXXXX //проверка изменились ли поля 69 IF if v69<>v111 then '1' else '0' fi PUTFLD 'Откорректирована запись студента. MFN=',f(val(mfn),0,0) XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 111 * DEL 1001 * END FI // конец студенты в DUNIK есть IF if val(&unifor('JRDR,?',if p(v92^C) then v93,,v92^C,,v96,,v98,"-S"v95 else v93,v92^N,,,v96,,v98,"-S"v95 fi))>0 then '0' else '1' fi //------------------ студентов по связке DUNIK НЕТ - удаляю поля 910 DEL 910 * PUTFLD 'Удалены студенты из записи УНД. MFN=',f(val(mfn),0,0) // студентов для DUNIK нет FI FI // конец ACCESSRDR // заново формирую поля 910 в соответствии с G5 DEL 1910 * ADD 1910 (v910/) IF if G5<>'' then '1' fi DEL 910 * ADD 910 * (G5/) FI IF if v1910<>v910 then '1' fi PUTFLD 'Откорректирована запись УНД ',v97,' MFN=',f(val(mfn),0,0) FI FI DEL 1910 * // есть запись VUZ для этого DUNIK FI // конец есть дисциплина для DUNIK IF if val(&unifor('JVUZ,IDD=',v3^0))<=0 then '1' else '0' fi // дисциплины нет - эту DUNIK надо удалить DELR XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX PUTFLD 'Не найдена дисциплина для ',v3^0,' - запись удалена. MFN=',f(val(mfn),0,0) FI // конец нет дисциплины GETFLD 4000 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX