0 // Используется при переносе из кафедры в контингент - УПЛ // 9.1 с учетом режима по группе LinkGroup // предварительно проверяю и создаю идентификатор и УНД в поле 83 // выполняется безусловно для полей 83, независимо от ^9 // корректировка/создание записей VUZ и RDR - заново поля 69 IF if v920:'DISC' then '1' else '0' fi XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEFFLD 3000 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 4000 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX IF if v3^A<>'' and v3^0='' then '1' fi //---------------------------- нет идентификатора - создаю DEL 111 * IF if val(&uf('JVUZ,IDD=',v3^A.5))>0 then '1' fi ADD 111 '0' REPEAT IF if val(&uf('JVUZ,IDD=',v3^A.5,f(val(v111),0,0)))>0 then '1' fi REP 111 1 f(val(v111)+1,0,0) FI UNTIL if val(&uf('JVUZ,IDD=',v3^A.5,f(val(v111),0,0)))>0 then '1' else '0' fi FI REP 3 1 v3,'^0',v3^A.5,v111 //--------------------------------- конец создания идентификатора FI // проверяю есть ли подполе W в поле 83 IF if rsum((if p(v83) then if a(v83^W) then '1,',break fi fi))>0 then '1' fi // в v112 будет макс.номер УНД DEL 112 * ADD 112 '0' //из поля 84 в 83 с проверкой на дубль DEL 1083 * ADD 1083 (v84/) REPEAT IF &uf('+7W5#',&uf('Av1083^A#1'),&uf('Av1083^N#1'),&uf('Av1083^C#1'),&uf('Av1083^V#1'),&uf('Av1083^O#1'),&uf('Av1083^F#1')),,,if rsum((if p(v83) then if &uf('+97',&uf('AG5#1'))=&uf('+97',v83^A,v83^N,v83^C,v83^V,v83^O,v83^F) then '1,' fi fi))=0 then '1' fi ADD 83 &uf('Av1083#1') FI DEL 1083 1 UNTIL if p(v1083) then '1' fi //-----------------------------создание в поле 83 УНД - подполя W IF if p(v83) then '1' fi // по полям 83 макс.номер для УНД // если есть среди полей 83 без УНД - формирую DEL 1083 * // повторения, в кот. нет УНД в 1083 ADD 1083 (if p(v83) then if a(v83^U) and a(v83^W) then v83 fi fi/) DEL 83 F (if p(v83) then if a(v83^U) and a(v83^W) then '1' else '0' fi fi/) // определяю по полям 83 с какого номера формировать УНД DEL 111 * // из УНД все номера в 111 ADD 111 (if p(v83) then if p(v83^W) and a(v83^U) then &uf('G2/',v83^W) fi fi/) IF if p(v111) then '1' else '0' fi REPEAT REP 112 1 if val(&unifor('Av111#1'))>val(v112) then &unifor('Av111#1') else v112 fi DEL 111 1 UNTIL if p(v111) then '1' else '0' fi FI // формирую УНД в полях 1083 - для полей 83 ADD 111 (v1083/) DEL 1083 * // добавление в 1083 УНД REPEAT IF if &unifor('Av111^W#1')='' and &unifor('Av111^u#1')='' then '1' else '0' fi REP 111 1 '^W',v3^0,'/',f(val(v112)+1,0,0),&unifor('Av111#1') REP 112 1 f(val(v112)+1,0,0) FI ADD 1083 &unifor('Av111#1') DEL 111 1 UNTIL if p(v111) then '1' else '0' fi // дописываю поле 83 повторениями с прибавленными УНД ADD 83 (v1083/) DEL 1083 * //-------------------------------- конец создания подполя W в поле 83 FI FI //==================== начало обработки================================================= // Формирование полей 1932 - добавляемых и 932 размноженных по семестрам DEL 932 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 1932 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ADD 1932 XXXXXXXXXXXXXXXXXXX (v83/) XXXXXXXXXXXXXXXXXXX REPEAT XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ADD 932 XXXXXXXXXXXXXXXXXXX mpu,if &unifor('Av1932^f#1'):'/' then (if &unifor('1*R/?v1932^f#1')<>''then if &unifor('Av1932^W#1')<>'' then '^W',&unifor('Av1932^W#1') fi,if &unifor('Av1932^U#1')<>'' then '^U',&unifor('Av1932^U#1') fi,if &unifor('Av1932^H#1')<>'' then '^H',&unifor('Av1932^H#1') fi,if &unifor('Av1932^N#1')<>'' then '^N',&unifor('Av1932^N#1') fi,if &unifor('Av1932^C#1')<>'' then '^C',&unifor('Av1932^C#1') fi,if &unifor('Av1932^A#1')<>'' then '^A',&unifor('Av1932^A#1') fi,if &unifor('Av1932^L#1')<>'' then '^L',&unifor('Av1932^L#1') fi,,if &unifor('Av1932^T#1')<>'' then '^T',&unifor('Av1932^T#1') fi,,if &unifor('Av1932^V#1')<>'' then '^V',&unifor('Av1932^V#1') fi,if &unifor('Av1932^O#1')<>'' then '^O',&unifor('Av1932^O#1') fi,,'^F',&unifor('1*R/?v1932^f#1'),,'^E',&unifor('Av1932^E#1') fi/) else &unifor('Av1932#1') fi XXXXXXXXXXXXXXXXXXX DEL 1932 1 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX UNTIL if p(v1932)then'1'else''fi XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX // ЦИКЛ ПО ПОВТОРЕНИЯМ ПОЛЯ 83, которые развернуты в 932 REPEAT XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX // проверка условия создания новой записи VUZ IF if val(&uf('IMAIN,LinkGroup,0'))=1 then if &unifor('Av932^E#1')<>'' and val(&unifor('JVUZ,VGR=',&unifor('Av932^E#1')))<=0 then '1' else fi,,else if &unifor('Av932^w#1')<>'' and &unifor('Av932^u#1')='' then if val(&unifor('JVUZ,!',&unifor('Av932^a#1'),,if &unifor('Av932^c#1')<>''then &unifor('Av932^c#1') else &unifor('Av932^n#1') fi,&unifor('Av932^v#1'),&unifor('Av932^o#1'),'-S',&unifor('Av932^f#1')))<=0 then '1' fi fi fi //----------------- Ввод новой записи VUZ из записи NEWMFN 'VUZ' XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ADD 68 XXXXXXXXXXXXXXXXXXX if &unifor('Av932^a#1')<>''then'^A'&unifor('Av932^a#1') fi,if &unifor('Av932^L#1')<>''then'^L'&unifor('Av932^L#1') fi,,if &unifor('Av932^T#1')<>''then'^T'&unifor('Av932^T#1') fi,,if &unifor('Av932^n#1')<>''then'^N'&unifor('Av932^n#1') fi,if &unifor('Av932^c#1')<>''then'^C'&unifor('Av932^c#1') fi,if &unifor('Av932^v#1')<>''then'^V'&unifor('Av932^v#1') fi,if &unifor('Av932^o#1')<>''then'^O'&unifor('Av932^o#1') fi,if &unifor('Av932^h#1')<>''then'^H'&unifor('Av932^h#1') fi,if &unifor('Av932^f#1')<>''then'^F'&unifor('Av932^f#1') fi,,if &unifor('Av932^E#1')<>''then'^E'&unifor('Av932^E#1') fi XXXXXXXXXXXXXXXXXXX ADD 69 XXXXXXXXXXXXXXXXXXX "^B"v5,"^D"d3,v3^0,if a(v3^0) then v3^a,if p(v3^a) then "="v3^b else v3^b fi fi,if &unifor('Av932^w#1')<>''then'^W'&unifor('Av932^w#1') fi XXXXXXXXXXXXXXXXXXX ADD 920 XXXXXXXXXXXXXXXXXXX 'VUZ' XXXXXXXXXXXXXXXXXXX PUTFLD 'Создана новая запись VUZ (',v68^A,'-',v68^F,')' XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX END XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //-------------- Корректировка записи VUZ - ввод новой дисциплины IF if val(&uf('IMAIN,LinkGroup,0'))=1 then if &unifor('Av932^E#1')<>'' then '1' fi,,else if &unifor('Av932^w#1')<>'' then if val(&unifor('JVUZ,!',&unifor('Av932^a#1'),,if &unifor('Av932^c#1')<>''then &unifor('Av932^c#1') else &unifor('Av932^n#1') fi,,&unifor('Av932^v#1'),,&unifor('Av932^o#1'),'-S',&unifor('Av932^f#1')))>0 then '1' fi fi fi // есть запись VUZ CORREC 'VUZ' mpu,"^B"v5,"^D"d3,v3^0,if a(v3^0) then v3^a,if p(v3^a) then"="v3^b else v3^b fi fi,&unifor('Av932#1') if val(&uf('IMAIN,LinkGroup,0'))=1 then if &unifor('Av932^E#1')<>'' then 'VGR=',&unifor('Av932^E#1') fi,,,else '!',&unifor('Av932^a#1'),,if &unifor('Av932^c#1')<>''then &unifor('Av932^c#1') else &unifor('Av932^n#1') fi,,&unifor('Av932^v#1'),,&unifor('Av932^o#1'),'-S',&unifor('Av932^f#1') fi XXXXXXXXXXXXXXXXXXX // возможное дописывание поля 68 DEL 112 * ADD 112 v68 REP 68 1 v68,if v68^A='' and v1001^A<>'' then '^A',v1001^A fi,,,if v68^N='' and v1001^N<>'' then '^N',v1001^N fi,,,if v68^C='' and v1001^C<>'' then '^C',v1001^C fi,,,if v68^V='' and v1001^V<>'' then '^V',v1001^V fi,,,if v68^O='' and v1001^O<>'' then '^O',v1001^O fi,,,if v68^F='' and v1001^F<>'' then '^F',v1001^F fi,,,if v68^E='' and v1001^E<>'' then '^E',v1001^E fi,,, // добавление поля 69 с проверкой на дубль DEL 111 * ADD 111 mpu,(v69/),&uf('+7W7#') IF if rsum((if p(v111) then if v111^B=&uf('Av1001^B#1') and v111^D=&uf('Av1001^D#1') then '1,' else '0,' fi fi))=0 then '1' fi ADD 69 XXXXXXXXXXXXXXXXXXX v1001,&uf('+7W7#1') XXXXXXXXXXXXXXXXXXX FI IF if v112<>v68 or G7<>'' then '1' fi PUTFLD 'Дописана запись VUZ. MFN=',f(val(mfn),0,0) XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI DEL 111 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 112 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 1001 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX END XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI //-----------------есть ли у студента дисциплина? IF if val(&unifor('IMAIN,ACCESSRDR,1'))=1 then '1' else '0' fi IF if val(&uf('IMAIN,LinkGroup,0'))=1 then if &unifor('Av932^E#1')<>'' and val(&unifor('JRDR,GR=',&unifor('Av932^E#1')))>0 then '1' fi else if &unifor('Av932^w#1')<>'' then if val(&unifor('JRDR,?',&unifor('Av932^a#1'),,if &unifor('Av932^c#1')<>''then &unifor('Av932^c#1') else &unifor('Av932^n#1') fi,&unifor('Av932^v#1'),&unifor('Av932^o#1'),'-S'&unifor('Av932^f#1')))>0 then '1' fi fi fi // студенты есть, в поле 111 их идентификаторы DEL 111 * // идентификаторы из записи RDR ADD 111 mpu,if val(&uf('IMAIN,LinkGroup,0'))=1 then if &unifor('Av932^E#1')<>'' then &uf('7RDR,!GR=',&unifor('Av932^E#1'),,'!,v30/') fi,,else &uf('7RDR,!?',&unifor('Av932^a#1'),,if &unifor('Av932^c#1')<>''then &unifor('Av932^c#1') else &unifor('Av932^n#1') fi,,&unifor('Av932^v#1'),,&unifor('Av932^o#1'),'-S',&unifor('Av932^f#1'),'!,v30/') fi //цикл по студентам REPEAT // есть ли у студента дисциплина // в 112 поля 69 DEL 112 * ADD 112 mpu,&uf('DRDR,!RI=',&uf('Av111#1'),'!,(v69/)') IF if a(v112) or rsum((if p(v112) then if v112^B=&uf('+97',&unifor('Av5#1')) and v112^D=&uf('+97',&unifor('Av3^0#1')) then '1,' else '0,' fi fi))=0 then '1' fi // добавляю дисциплину CORREC 'RDR' mpu,"^D"v3^0,"^B"v5,'^W',&unifor('Av932^w#1') 'RI=',&uf('Av111#1') XXXXXXXXXXXXXXXXXXX // если студент не отчислен IF if a(v54) or &unifor('Av54#1')<>'' and &unifor('Av54^C#1')<>'' then '1' fi DEL 1069 * ADD 1069 (v69/) ADD 69 v1001 IF if &uf('+97',v69)<>&uf('+97',v1069) then '1' fi PUTFLD 'Откорректирована запись студента ',v30,'. MFN=',f(val(mfn),0,0) XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI FI DEL 1069 * DEL 1001 * END XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX // конец добавить дисциплину FI DEL 111 1 UNTIL if p(v111) then '1' fi DEL 112 * // конец есть студенты FI // accessrdr FI DEL 932 1 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX UNTIL if p(v932) then '1'else'' fi XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 112 * DEL 932 * GETFLD 4000 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX