Приложение 2

М-код функции sd09 - “ Формирование броузера объектов”

; присваивание параметрам qqpar1 – qqpar5 значений, передаваемых в функцию
Set qqpar1=$Get(qqpar1), qqpar2=$Get(qqpar2,qqc), qqpar3=$Get(qqpar3,"1,1")
Set qqpar4=$Get(qqpar4), qqpar5=$Get(qqpar5)
new QQNUMP, fl, flr, qqnumr ; ограничение области действия локальных переменных
Set fl=0
Set QQNUMP=$$F("xwin","a","x") ;получаем идентификатор экрана в пределах
; от “a” до “x”

Set fl=$Select(QQNUMP="":0,1:1) ; установка флага
Quit: 'fl "*Открыть окно невозможно" ; выход из программы, если невозможно открыть окно
Set: qqpar2="" $Piece(qqpar3,".")=1
if qqpar2 '= "" Set qqpar2=$$F("sd20","",qqpar2) ; запись в qqpar2 кода записи
; вышестоящего уровня
Quit: qqpar2="" "*Не правильно задан 2 параметр"
New qqcd, l1, l2, i, par, flr
Set flr=0

; формирование вспомогательного массива, содержащего название таблицы, список
; понятий, список размеров граф, список названий граф

for i=1:1:4 Set par(i-1)=$Piece(qqpar1,";",i)

; запись в переменную образа для поиска

If $Piece(qqpar5,";")=0 Do
. Set flr=2
. Kill WQQR
. Merge WQQR("ZYfind")=W("ZYfind")

; преобразование переменных par(0)-par(4) для дальнейшего использования
Set par(0)=$Translate(par(0)," ","_")
Set %1="" for j=1:1:$Lenght(par(1),",") Set %1=%1_","_$Select($Piece(par(1),",",j)["/":$Piece(par(1),",",j),1:"/"_$Piece(par(1),",",j))
Set par(1)=$Select($Piece(qqpar5,";")=1:$Extract(%1,2,1024),1:"@Zdrel"_%1)
If +$Piece(qqpar5,";")=0 Set par(2)="3,"_par(2),par(3)="Р,"_par(3)
Set $Piece(par(2),",",$Lenght(par(2),","))=80
Set par(4)=$Translate($Piece(qqpar3,",",1,2),",",$Char(31))_$Char(31)_$Piece(qqpar3,",",3,1024)_
_$Char(31)_$Translate(qqpar5,";",$Char(31))

; вызов функции интерпретации экрана
Set %1=$$F("cin2",qqf_"/25c",QQNUMP_"/T","",flr_" "_qqpar2,par(1)_" "_par(2)_" "_par(3)_
_"12 10 "_par(0),par(4))
Set qqcd=$Piece(%1," ",2), W("Zqqr","qqr")=$Piece(%1," "), W("Zqqr","qqrn")=$Piece(%1," ",4)
Set W("Zqqr","qqnump")=QQNUMP
Quit: qqcd=""!(qqpar4="") qqcd
Set l1=$Piece(qqpar4,","),l2=$Piece(qqpar4,",",2)
for i=1:1:$Lenght(l1," ") Do
. if $Piece(l1," ",i)'="" Set: $Piece(l2," ",i)="" $Piece(l2," ",i)=$Piece(l1," ",i)
. Kill N($Piece(l2," ",i))
. Set W($Piece(l2," ",i))=$$F("sd03",$Piece(l1," ",i),qqcd)
Quit qqcd