Now I understand what to do to get what you need. Replace "SAY" on "?" аnd all.
But here is an example of the old program on CLIIPPER. Line and formed without position entirely.
Code: Select all
N_Klass = RECCOUNT()
N_Field = FCOUNT()
PRIVATE Ar_field[N_Field] // Значения строки: "Сумма по классам:"
AFILL(Ar_field,0) // Сначала 0, чтобы посчитать сумму, а потом делим на N_Klass
DBGOTOP()
DO WHILE .NOT. EOF()
SELECT Klas_res
FOR j=3 TO N_Field
Ar_field[j] = Ar_field[j] + FIELDGET(j)
NEXT
DBSKIP(1)
ENDDO
APPEND BLANK
REPLACE Name WITH "Сумма по классам:"
FOR j=3 TO N_Field
FIELDPUT(j, Ar_field[j])
NEXT
APPEND BLANK
REPLACE Name WITH "Среднее на класс:"
FOR j=3 TO N_Field
FIELDPUT(j, Ar_field[j]/N_Klass)
NEXT
SELECT Rasp_naz
SET ORDER TO 1
DBGOTOP()
M_KodKl_Old = -9999
SET PRINTER TO ("Res_naz.txt")
SET DEVICE TO PRINTER
Str = 0
@Str++, 0 SAY "РЕЗУЛЬТАТЫ НАЗНАЧЕНИЙ ОБЪЕКТОВ РАСПОЗНАВАЕМОЙ ВЫБОРКИ НА КЛАССЫ"
@Str , 0 SAY DATE()
@Str ,10 SAY TIME()
@Str++,63 SAY "г.Краснодар"
Ln = 74
@Str++, 0 SAY REPLICATE("=",Ln)
@Str , 0 SAY "|ХАРАКТЕРИСТИКИ ЭФФЕКТИВНОСТИ НАЗНАЧЕНИЯ:";@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|СУММА ПО ВСЕМ КЛАССАМ:";@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Начальный ресурс: "+ALLTRIM(STR(Ar_field[3],17))+;
", остаток: "+ALLTRIM(STR(Ar_field[4],17));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Суммарное сходство:................................"+ALLTRIM(STR(Ar_field[6],17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Фактические суммарные затраты:....................."+ALLTRIM(STR(Ar_field[7],17)) ;@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Средневзвешенное удельное сходство:................"+ALLTRIM(STR(Ar_field[8],17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Среднее на объект суммарное сходство:.............."+ALLTRIM(STR(Ar_field[9],17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Средние на объект фактические суммарные затраты:..."+ALLTRIM(STR(Ar_field[10],17)) ;@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Всего назначено:..................................."+ALLTRIM(STR(Ar_field[5],17))+" объекта(ов)";@Str++,Ln-1 SAY "|"
@Str++, 0 SAY REPLICATE("~",Ln)
@Str , 0 SAY "|СРЕДНЕЕ НА КЛАСС:";@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Начальный ресурс: "+ALLTRIM(STR(Ar_field[3]/N_Klass,17,3))+;
", остаток: "+ALLTRIM(STR(Ar_field[4]/N_Klass,17,3));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Суммарное сходство:................................"+ALLTRIM(STR(Ar_field[6] /N_Klass,17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Фактические суммарные затраты:....................."+ALLTRIM(STR(Ar_field[7] /N_Klass,17,3));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Средневзвешенное удельное сходство:................"+ALLTRIM(STR(Ar_field[8] /N_Klass,17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Среднее на объект суммарное сходство:.............."+ALLTRIM(STR(Ar_field[9] /N_Klass,17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Средние на объект фактические суммарные затраты:..."+ALLTRIM(STR(Ar_field[10]/N_Klass,17,3));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|В среднем на класс назначено:......................"+ALLTRIM(STR(Ar_field[5] /N_Klass,17,3))+" объекта(ов)";@Str++,Ln-1 SAY "|"
Num_pp = 0
DO WHILE .NOT. EOF()
M_KodObj = Kod_RObj
M_KodKlf = Kod_klas
M_UrSxod = Ur_Sxod
M_Zatr = Zatrati
M_UdSxod = Ud_Sxod
M_KodKln = Klas_naz
** Печать информации по новому классу из БД Klas_res.dbf
IF M_KodKl_Old <> M_KodKln
Num_pp = 0
M_KodKl_Old = Klas_naz
SELECT Klas_res;SET ORDER TO 1;T=DBSEEK(STR(M_KodKln,4))
IF T
M_NameKln = Name
@Str++, 0 SAY REPLICATE("=",Ln)
@Str , 0 SAY "|КЛАСС НАЗНАЧЕНИЯ:";@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Код: "+ALLTRIM(STR(M_KodKln,4))+;
", наименование: "+ALLTRIM(M_NameKln)+;
", начальный ресурс: "+ALLTRIM(STR(Resource,13))+;
", остаток: "+ALLTRIM(STR(Ostatok_res,13));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Суммарное сходство:................................"+ALLTRIM(STR(Sum_UrSxod,17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Фактические суммарные затраты:....................."+ALLTRIM(STR(Sum_Zatrat,17)) ;@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Средневзвешенное удельное сходство:................"+ALLTRIM(STR(Svz_UdSxod,17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Среднее на объект суммарное сходство:.............."+ALLTRIM(STR(Avr_UrSxod,17,7));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Средние на объект фактические суммарные затраты:..."+ALLTRIM(STR(Avr_Zatrat,17,3));@Str++,Ln-1 SAY "|"
@Str , 0 SAY "|Всего на данный класс назначено:..................."+ALLTRIM(STR(Kol_obj,17))+" объекта(ов):";@Str++,Ln-1 SAY "|"
@Str++, 0 SAY REPLICATE("~",Ln)
@Str++, 0 SAY "| Номер | Код | Наименование |Ур-нь сходст| Затраты на |Удельное сход|"
@Str++, 0 SAY "|по пор.|объекта| объекта |об.с классом|назн. объекта|об. с классом|"
* | 12345 | 12345 |123456789012345|1234.6789012|1234567890123|12345.7890123|
@Str++, 0 SAY REPLICATE("~",Ln)
ENDIF
ENDIF
SELECT RObj_zat;SET ORDER TO 1;T=DBSEEK(STR(M_KodObj,5))
IF T
M_NameObj = Name
@Str++, 0 SAY "|"+" "+STR(++Num_pp,5)+" "+;
"|"+" "+STR(M_KodObj,5)+" "+;
"|"+SUBSTR(M_NameObj,1,15)+;
"|"+STR(M_UrSxod,12,7)+;
"|"+STR(M_Zatr,13)+;
"|"+STR(M_UdSxod,13,7)+"|"
ENDIF
SELECT Rasp_naz
DBSKIP(1)
ENDDO
@Str++, 0 SAY REPLICATE("=",Ln)
CLOSE ALL
USE RObj_zat INDEX Kodzrobj EXCLUSIVE NEW
USE RObj_naz INDEX Kodnrobj EXCLUSIVE NEW
Ln = 47
@Str++, 0 SAY REPLICATE("=",Ln)
@Str , 0 SAY "|СПИСОК НЕНАЗНАЧЕННЫХ ОБЪЕКТОВ:";@Str++,Ln-1 SAY "|"
@Str++, 0 SAY REPLICATE("~",Ln)
@Str++, 0 SAY "| Номер | Код | Наименование | Затраты на |"
@Str++, 0 SAY "|по пор.|объекта| объекта |назн. объекта|"
* | 12345 | 12345 |123456789012345|1234567890123|
@Str++, 0 SAY REPLICATE("~",Ln)
Num_pp = 0
SELECT RObj_zat
SET ORDER TO 1
DBGOTOP()
DO WHILE .NOT. EOF()
M_Kod = Kod
M_Name = Name
M_Zatr = Zatrati
SELECT RObj_naz;SET ORDER TO 1;T=DBSEEK(STR(M_Kod,5))
IF T
ELSE
@Str++, 0 SAY "|"+" "+STR(++Num_pp,5)+" "+;
"|"+" "+STR(M_Kod,5)+" "+;
"|"+SUBSTR(M_Name,1,15)+;
"|"+STR(M_Zatr,13)+"|"
ENDIF
SELECT RObj_zat
DBSKIP(1)
ENDDO
@Str++, 0 SAY REPLICATE("=",Ln)
@Str++, 0 SAY "Универсальная когнитивная аналитическая система"
@Str++, 0 SAY "НПП *ЭЙДОС*"
CLOSE ALL
SET PRINTER TO
SET DEVICE TO SCREEN
@22,0 SAY REPLICATE("█",80) COLOR "gb+/N"
@23,0 SAY REPLICATE("█",80) COLOR "gb+/N"
@24,0 SAY REPLICATE("█",80) COLOR "gb+/N"
Mess = " ПРОЦЕСС ЗАВЕРШЕН УСПЕШНО !!!"
@22,40-LEN(Mess)/2 SAY Mess COLOR "rg+/rb"
Mess = "Результаты назначений в файле: Res_naz.txt и БД: Rasp_naz.dbf и Klas_res.dbf"
@24,40-LEN(Mess)/2 SAY Mess COLOR "rg+/rb"
INKEY(0)
INKEY(0)
SHOWTIME()
RESTSCREEN(0,0,24,79,scr23)