(antb)
MEMBER('ANT')
! НАЧАЛЬНАЯ СОРТИРОВКА
S PROCEDURE
M GROUP
M1 REAL,DIM(79,14) !T17
MK REAL,DIM(8,14)
MG REAL,DIM(350,14).
CODE
CLEAR(M)
BUFFER(LIC,0.9)
SET(LIC)
LOOP UNTIL EOF(LIC)
NEXT(LIC)
CLEAR(T17:RECORD)
T17:PNOMBER=LIC:PNOMBER
GET(T17,T17:C)
IF ~ERRORCODE()
M1[LIC:NREGION,1]+=T17:F001/1000 MG[LIC:NCITY,1]+=T17:F001/1000 M1[LIC:NREGION,2]+=T17:F004/1000 MG[LIC:NCITY,2]+=T17:F004/1000 M1[LIC:NREGION,3]+=T17:F010/1000 MG[LIC:NCITY,3]+=T17:F010/1000
IF T17:F018>0
THEN
M1[LIC:NREGION,4]+=T17:F018/1000 MG[LIC:NCITY,4]+=T17:F018/1000
ELSE
IF T17:F020>0
M1[LIC:NREGION,4]-=T17:F020/1000
MG[LIC:NCITY,4]-=T17:F020/1000...
CLEAR(T67:RECORD)
T67:PNOMBER=LIC:PNOMBER
GET(T67,T67:C)
IF ~ERRORCODE()
M1[LIC:NREGION,5]+=T67:A400N/1000
MG[LIC:NCITY,5]+=T67:A400N/1000
M1[LIC:NREGION,6]+=T67:A400K/1000 MG[LIC:NCITY,6]+=T67:A400K/1000 M1[LIC:NREGION,7]+=T67:A495N/1000 MG[LIC:NCITY,7]+=T67:A495N/1000 M1[LIC:NREGION,8]+=T67:A495K/1000 MG[LIC:NCITY,8]+=T67:A495K/1000.
CLEAR(F92:RECORD)
F92:PNOMBER=LIC:PNOMBER
GET(F92,F92:FC)
IF ~ERRORCODE()
M1[LIC:NREGION,9]+=F92:F1/1000 MG[LIC:NCITY,9]+=F92:F1/1000 M1[LIC:NREGION,10]+=F92:F7/1000 MG[LIC:NCITY,10]+=F92:F7/1000 M1[LIC:NREGION,11]+=F92:F10/1000 MG[LIC:NCITY,11]+=F92:F10/1000
IF F92:F19>0
THEN
M1[LIC:NREGION,12]+=F92:F19/1000 MG[LIC:NCITY,12]+=F92:F19/1000
ELSE
IF F92:F21>0
M1[LIC:NREGION,12]-=F92:F21/1000
MG[LIC:NCITY,12]-=F92:F21/1000...
CLEAR(SVV:RECORD)
SVV:PNOM=LIC:PNOMBER
SVV:KZ=2
GET(SVV,SVV:K)
IF ~ERRORCODE()
M1[LIC:NREGION,13]+=SVV:CR2
MG[LIC:NCITY,13]+=SVV:CR2.
CLEAR(DF:RECORD)
DF:PNOMBER=LIC:PNOMBER
GET(DF,DF:C)
IF ~ERRORCODE()
M1[LIC:NREGION,14]+=DF:S750N MG[LIC:NCITY,14]+=DF:S750N.
.
LOOP N#=24 TO 31
TER:KODT=N#
SET(TER:K,TER:K)
LOOP UNTIL EOF(TERR)
NEXT(TERR)
IF TER:KODT<>N# THEN BREAK.
LOOP M#=1 TO 14 MK[N#-23,M#]+=M1[TER:NREGION,M#]...
LOOP I#=1 TO 8
F:NKUST=I#+23
F:F1=MK[I#,5]
F:F2=MK[I#,6]
F:F3=MK[I#,7]
F:F4=MK[I#,8]
F:F5=MK[I#,12]
F:F6=MK[I#,4]
F:F9=MK[I#,10]
F:F10=MK[I#,2]
F:F11=MK[I#,9]
F:F12=MK[I#,1]
F:F13=MK[I#,11]
F:F14=MK[I#,3]
F:F15=MK[I#,13]
F:F16=MK[I#,14]
ADD(F).
LOOP I#=1 TO 79
F:NKUST=0
F:NREGION=I#
F:F1=M1[I#,5]
F:F2=M1[I#,6]
F:F3=M1[I#,7]
F:F4=M1[I#,8]
F:F5=M1[I#,12]
F:F6=M1[I#,4]
F:F9=M1[I#,10]
F:F10=M1[I#,2]
F:F11=M1[I#,9]
F:F12=M1[I#,1]
F:F13=M1[I#,11]
F:F14=M1[I#,3]
F:F15=M1[I#,13]
F:F16=M1[I#,14]
ADD(F).
LOOP I#=1 TO 350
F:NKUST=0
F:NREGION=0
F:NGOR=I#
F:F1=MG[I#,5]
F:F2=MG[I#,6]
F:F3=MG[I#,7]
F:F4=MG[I#,8]
F:F5=MG[I#,12]
F:F6=MG[I#,4]
F:F9=MG[I#,10]
F:F10=MG[I#,2]
F:F11=MG[I#,9]
F:F12=MG[I#,1]
F:F13=MG[I#,11]
F:F14=MG[I#,3]
F:F15=MG[I#,13]
F:F16=MG[I#,14]
ADD(F).
! PUT(F).
! ----- АНАЛИЗ ПОКАЗАТЕЛЕЙ РАЗВИТИЯ ------
AT2 PROCEDURE
YU DOS,ASCII,NAME('YU.YU')
RECORD
ST STRING(140)..
GROUP,OVER(ST)
STRING(1)
ST2 STRING(32)
STRING(4)
ST3 STRING(@N-_8.2)
STRING(1)
ST4 STRING(@N_10.2)
STRING(1)
ST5 STRING(@N_8.2)
STRING(1)
ST6 STRING(@N_9.2)
STRING(1)
ST7 STRING(@N_8.2)
STRING(1)
ST8 STRING(@N_10.2)
STRING(1)
ST9 STRING(@N-_10.2)
STRING(1)
ST10 STRING(@N_10.2)
STRING(1)
ST11 STRING(@N-_9.2)
STRING(1)
ST12 STRING(@N_8.2)
.
YU1 DOS,ASCII,NAME('YU1.YU')
RECORD
STT STRING(130)..
GROUP,OVER(STT)
STRING(1)
ST02 STRING(32)
STRING(5)
ST13 STRING(@N_8.2)
STRING(3)
ST14 STRING(@N_9.2)
STRING(3)
ST15 STRING(@N_7.2)
STRING(3)
ST16 STRING(@N_9.2)
STRING(3)
ST17 STRING(@N_9.2)
STRING(3)
ST18 STRING(@N_8.2)
STRING(3)
ST19 STRING(@N-_8.2)
STRING(3)
ST20 STRING(@N_9.2)
.
M GROUP
M1 REAL,DIM(79,14) !T17
MK REAL,DIM(8,14)
MG REAL,DIM(350,14).
CODE
PN#=0
CREATE(YU)
ST='АНАЛИЗ ПОКАЗАТЕЛЕЙ РАЗВИТИЯ СТРАХОВЫХ ОРГАНИЗАЦИЙ'
ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
ST=' млн.руб. '
ADD(YU)
CLEAR(ST) ST=' ' ADD(YU)
CLEAR(ST)
ST='¦ ¦ Доход (балансовая ¦ Уставный ¦ Страховые ¦ Доход (балансовая прибыль) в % к ¦'
ADD(YU)
CLEAR(ST)
ST='¦ Наименование ¦ прибыль (убыток) ¦ капитал ¦ взносы
¦'
ADD(YU)
CLEAR(ST)
ST='¦ ¦ ¦ ¦ ¦ уставному капиталу ¦ страховым взносам¦'
ADD(YU)
CLEAR(ST)
ST='¦ страховой организации
¦'
ADD(YU)
CLEAR(ST)
ST='¦ ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦ 1992 ¦ 1993 ¦'
ADD(YU)
CLEAR(ST) ST='
'
ADD(YU)
CLEAR(ST)
ST='¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦ 8 ¦ 9 ¦ 10 ¦ 11 ¦'
ADD(YU)
CLEAR(ST) ST='
'
ADD(YU)
CLEAR(ST)
CREATE(YU1)
STT='АНАЛИЗ ПОКАЗАТЕЛЕЙ РАЗВИТИЯ СТРАХОВЫХ ОРГАНИЗАЦИЙ '
STT=CENTER(STT)
ADD(YU1)
CLEAR(STT)
STT=' (продолжение)'
ADD(YU1)
CLEAR(STT) STT='
'
ADD(YU1)
CLEAR(STT)
STT='¦ ¦ С т р а х о в ы е ¦ Доход от инвес- ¦ Доход от инвест-я страх-х рез-в в % к ¦'
ADD(YU1)
CLEAR(STT)
STT='¦ Наименование ¦ р е з е р в ы ¦ тирования стра- ¦'
ADD(YU1)
CLEAR(STT)
STT='¦ ¦ ¦ ховых резервов ¦ уставному капиталу ¦ страховым взносам ¦'
ADD(YU1)
CLEAR(STT)
STT='¦ страховой организации
¦'
ADD(YU1)
CLEAR(STT)
STT='¦ ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦'
ADD(YU1)
CLEAR(STT) STT=' ‘
ADD(YU1)
CLEAR(STT)
STT='¦ 1 ¦ 12 ¦ 13 ¦ 14 ¦ 15 ¦ 16 ¦ 17 ¦ 18 ¦ 19 ¦'
ADD(YU1)
CLEAR(STT)STT='
ADD(YU1)
CLEAR(STT)
INS:NTER=0
SET(INS:K1,INS:K1)
LOOP UNTIL EOF(INSP) ! 1
NEXT(INSP)
PN#=0
if ins:nter>23 ! 2
THEN
ST2=CLIP(INS:NAME)&' инспекция'
ST02=CLIP(INS:NAME)&' инспекция'
ELSE
ST2='Инспекция '
ADD(yu)
ST2=INS:NAME
ST02='Инспекция '
ADD(YU1)
ST02=INS:NAME. ! 2
TER:KODT=INS:NTER
SET(TER:K1,TER:K1)
LOOP UNTIL EOF(TERR) ! 3
NEXT(TERR)
IF TER:KODT<>INS:NTER THEN BREAK.
IF INS:NTER>23 AND PN#=0 ! 4
F:NKUST=INS:NTER
GET(F,F:K1)
IF F:F5>0
ST3=F:F5.
IF F:F6>0
ST4=F:F6.
IF F:F1>0
ST5=F:F1.
IF F:F2>0
ST6=F:F2.
IF F:F11>0
ST7=F:F11.
IF F:F12>0
ST8=F:F12.
IF ST3>0 AND ST5>0
ST9=ST3/ST5*100.
IF ST4>0 AND ST6>0
ST10=ST4/ST6*100.
IF ST3>0 AND ST7>0
ST11=ST3/ST7*100.
IF ST4>0 AND ST8>0
ST12=ST4/ST8*100.
IF F:F3>0
ST13=F:F3.
IF F:F4>0
ST14=F:F4.
IF F:F9>0
ST15=F:F9.
IF F:F10>0
ST16=F:F10.
IF ST15>0 AND ST13>0
ST17=ST15/ST13*100.
IF ST16>0 AND ST14>0
ST18=ST16/ST14*100.
IF ST15>0 AND ST3>0
ST19=ST15/ST3*100.
IF ST16>0 AND ST4>0
ST20=ST16/ST4*100.
PN#=1
ADD(YU)
CLEAR(ST)
ADD(YU1)
CLEAR(STT)
ADD(YU1)
ADD(YU). ! 4
XRE:NREGION=TER:NREGION
SET(XRE:K1,XRE:K1)
LOOP UNTIL EOF(XREG) ! 5
NEXT(XREG)
IF XRE:NREGION<>TER:NREGION THEN BREAK.
IF INS:NTER>23
ST2=XRE:IREG.
ST02=ST2
F:NREGION=XRE:NREGION
GET(F,F:K2)
IF F:F5>0
ST3=F:F5.
IF F:F6>0
ST4=F:F6.
IF F:F1>0
ST5=F:F1.
IF F:F2>0
ST6=F:F2.
IF F:F11>0
ST7=F:F11.
IF F:F12>0
ST8=F:F12.
IF ST3>0 AND ST5>0
ST9=ST3/ST5*100.
IF ST4>0 AND ST6>0
ST10=ST4/ST6*100.
IF ST3>0 AND ST7>0
ST11=ST3/ST7*100.
IF ST4>0 AND ST8>0
ST12=ST4/ST8*100.
IF F:F3>0
ST13=F:F3.
IF F:F4>0
ST14=F:F4.
IF F:F9>0
ST15=F:F9.
IF F:F10>0
ST16=F:F10.
IF ST15>0 AND ST13>0 ST17=ST15/ST13*100.
IF ST16>0 AND ST14>0 ST18=ST16/ST14*100.
IF ST15>0 AND ST3>0
ST19=ST15/ST3*100.
IF ST16>0 AND ST4>0
ST20=ST16/ST4*100.
ADD(YU)
CLEAR(ST)
ADD(YU1)
CLEAR(STT)
ADD(YU)
ADD(YU1)
GOR:GOROD=' '
SET(GOR:CGOR,GOR:CGOR)
LOOP UNTIL EOF(GOR) ! 6
NEXT(GOR)
IF GOR:NREGION<>XRE:NREGION THEN CYCLE.
F:NGOR=GOR:KG
GET(F,F:K3)
IF F:F5>0
ST3=F:F5.
IF F:F6>0
ST4=F:F6.
IF F:F1>0
ST5=F:F1.
IF F:F2>0
ST6=F:F2.
IF F:F11>0
ST7=F:F11.
IF F:F12>0
ST8=F:F12.
IF ST3>0 AND ST5>0 ST9=ST3/ST5*100.
IF ST4>0 AND ST6>0 ST10=ST4/ST6*100.
IF ST3>0 AND ST7>0 ST11=ST3/ST7*100.
IF ST4>0 AND ST8>0 ST12=ST4/ST8*100.
IF F:F3>0
ST13=F:F3.
IF F:F4>0
ST14=F:F4.
IF F:F9>0
ST15=F:F9.
IF F:F10>0
ST16=F:F10.
IF ST15>0 AND ST13>0
ST17=ST15/ST13*100.
IF ST16>0 AND ST14>0
ST18=ST16/ST14*100.
IF ST15>0 AND ST3>0
ST19=ST15/ST3*100.
IF ST16>0 AND ST14>0
ST20=ST16/ST4*100.
IF ~ST AND ~STT THEN CYCLE.
ST2=GOR:GOROD
ST02=GOR:GOROD
ADD(YU)
CLEAR(ST)
ADD(YU1)
CLEAR(STT)
ADD(YU)
ADD(YU1)
LIC:NREGION=XRE:NREGION
LIC:KNAM=' '
SET(LIC:CNREG,LIC:CNREG)
LOOP UNTIL EOF(LIC) ! 7
NEXT(LIC)
IF LIC:NREGION<>XRE:NREGION THEN BREAK.
IF LIC:NCITY<>GOR:KG THEN CYCLE.
(T67:RECORD)
T67:PNOMBER=LIC:PNOMBER
GET(T67,T67:C)
IF ~ERRORCODE()
IF T67:A400N>0
ST5=T67:A400N/1000.
IF T67:A400K>0
ST6=T67:A400K/1000.
IF T67:A495N>0
ST13=T67:A495N/1000.
IF T67:A495K>0
ST14=T67:A495K/1000..
CLEAR(T17:RECORD)
T17:PNOMBER=LIC:PNOMBER
GET(T17,T17:C)
IF ~ERRORCODE() ! 8
IF T17:F018>0 ! 9
THEN
ST4=T17:F018/1000
ELSE
IF T17:F020>0 ! 10
ST4=-T17:F020/1000.. ! 9, 10
IF T17:F001>0
ST8=T17:F001/1000.
IF T17:F004>0
ST16=T17:F004/1000.. ! 8
CLEAR(F92:RECORD)
F92:PNOMBER=LIC:PNOMBER
GET(F92,F92:FC)
IF ~ERRORCODE() ! 11
IF F92:F19>0
THEN
ST3=F92:F19/1000
ELSE
IF F92:F21>0
ST3=-F92:F21/1000..
IF F92:F1>0
ST7=F92:F1/1000.
IF F92:F7>0
ST15=F92:F7/1000.. ! 11
IF ST3<>0 AND ST5>0
ST9=ST3/ST5*100.
IF ST4>0 AND ST6>0
ST10=ST4/ST6*100.
IF ST3<>0 AND ST7>0
ST11=ST3/ST7*100.
IF ST4>0 AND ST8>0
ST12=ST4/ST8*100.
IF ST13>0 AND ST15>0
ST17=ST15/ST13*100.
IF ST14>0 AND ST16>0
ST18=ST16/ST14*100.
IF ST15>0 AND ST3<>0
ST19=ST15/ST3*100.
IF ST16>0 AND ST4>0
ST20=ST16/ST4*100.
IF ST OR STT ! 12
PN#+=1
ST2=' '&LIC:KNAM
ST02=' '&LIC:KNAM
ADD(YU)
CLEAR(ST)
ADD(YU1)
CLEAR(STT). ! 12
CLEAR(ST)
CLEAR(STT). ! 7
ADD(YU)
ADD(YU1)... ! 6, 5, 3
. ! 1
! -------- СВЕДЕНИЯ ОБ ИЗМЕНЕНИИ ПОКАЗАТЕЛЕЙ ДЕЯТЕЛЬНОСТИ --------
AT1 PROCEDURE
YU DOS,ASCII,NAME('YU.YU')
RECORD
ST STRING(210)..
GROUP,OVER(ST)
STRING(1)
ST2 STRING(32)
STRING(2)
ST3 STRING(@N_8.1)
STRING(1)
ST4 STRING(@N_9.1)
STRING(1)
ST5 STRING(@N-_9.1)
STRING(1)
ST6 STRING(@N_9.1)
STRING(1)
ST7 STRING(@N_8.1)
STRING(1)
ST8 STRING(@N_9.1)
STRING(1)
ST9 STRING(@N-_9.1)
STRING(1)
ST10 STRING(@N_9.1)
STRING(1)
ST11 STRING(@N_7.1)
STRING(1)
ST12 STRING(@N_9.1)
STRING(1)
ST13 STRING(@N-_10.1)
STRING(1)
ST14 STRING(@N_9.1)
STRING(1)
ST15 STRING(@N_8.1)
STRING(1)
ST16 STRING(@N_10.1)
STRING(1)
ST17 STRING(@N-_11.1)
STRING(1)
ST18 STRING(@N_10.1)
.
T REAL
CODE
PN#=0
CREATE(YU)
ST='СВЕДЕНИЯ ОБ ИЗМЕНЕНИИ ОТДЕЛЬНЫХ ПОКАЗАТЕЛЕЙ ДЕЯТЕЛЬНОСТИ СТРАХОВЫХ ОРГАНИЗАЦИЙ'
ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
ST='
'
ADD(YU)
CLEAR(ST)
ST='¦ ¦Уставный капитал¦ Изменение размера ¦Страховые резервы ¦ Изменение размера¦ Страховые ¦Прирост (уменьшение)¦ Страховые выплаты ¦ Прирост( уменьшение)¦'
ADD(YU)
CLEAR(ST)
ST='¦ Наименование ¦(на конец года) ¦уставного капитала ¦ (на конец года) ¦ страховых резервов¦ взносы ¦ поступивших стра- ¦ (на конец года) ¦суммы страховых выплат¦'
ADD(YU)
CLEAR(ST)
ST='¦ ¦ ¦ (+/-) ¦ ¦ (+/-) ¦ ¦ ховых взносов ¦ ¦ ¦'
ADD(YU)
CLEAR(ST)
ST='¦ страховой oрганизации ________________________ ______________________________________________________________________________________________________________________________________________________________________________________ ‘
ADD(YU)
CLEAR(ST)
ST='¦ ¦ 1994 ¦ 1995 ¦ в сумме ¦ в % ¦ 1994 ¦ 1995 ¦ в сумме ¦ в % ¦ 1994 ¦ 1995 ¦ в сумме ¦ в % ¦ 1994 ¦ 1995 ¦ в сумме ¦ в % ¦'
ADD(YU)
CLEAR(ST)
ST='
¦'
ADD(YU)
CLEAR(ST)
ST='¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦ 8 ¦ 9 ¦ 10 ¦ 11 ¦ 12 ¦ 13 ¦ 14 ¦ 15 ¦ 16 ¦ 17 ¦'
ADD(YU)
CLEAR(ST)
ST='
¦'
ADD(YU)
CLEAR(ST)
INS:NTER=0
SET(INS:K1,INS:K1)
LOOP UNTIL EOF(INSP)
NEXT(INSP)
PN#=0
if ins:nter>23
THEN
ST2=CLIP(INS:NAME)&' инспекция'
ELSE
ST2='Инспекция '
ADD(yu)=INS:NAME.
TER:KODT=INS:NTER
SET(TER:K1,TER:K1)
LOOP UNTIL EOF(TERR)
NEXT(TERR)
IF TER:KODT<>INS:NTER THEN BREAK.
IF INS:NTER>23 AND PN#=0
F:NKUST=INS:NTER
GET(F,F:K1)
IF F:F1>0
ST3=F:F1.
IF F:F2>0
ST4=F:F2.
IF F:F3>0
ST7=F:F3.
IF F:F4>0
ST8=F:F4.
IF F:F11>0
ST11=F:F11.
IF F:F12>0
ST12=F:F12.
IF ST3 OR ST4
ST5=ST4-ST3.
IF ST3>0 AND ST4>0
ST6=ST4/ST3*100.
IF ST7 OR ST8
ST9=ST8-ST7.
IF ST7>0 AND ST8>0
ST10=ST8/ST7*100.
IF ST12 OR ST11
ST13=ST12-ST11.
IF ST12>0 AND ST11>0
ST14=ST12/ST11*100.
IF F:F13>0
ST15=F:F13.
IF F:F14>0
ST16=F:F14.
IF ST15 OR ST16
ST17=ST16-ST15.
IF ST15>0 AND ST16>0
ST18=ST16/ST15*100.
PN#=1
ADD(YU)
CLEAR(ST)
ADD(YU). XRE:NREGION=TER:NREGION SET(XRE:K1,XRE:K1)
LOOP UNTIL EOF(XREG)
NEXT(XREG)
IF XRE:NREGION<>TER:NREGION THEN BREAK.
IF INS:NTER>23
ST2=XRE:IREG.
F:NREGION=XRE:NREGION
GET(F,F:K2)
IF F:F1>0
ST3=F:F1.
IF F:F2>0
ST4=F:F2.
IF F:F3>0
ST7=F:F3.
IF F:F4>0
ST8=F:F4.
IF F:F11>0
ST11=F:F11.
IF F:F12>0
ST12=F:F12.
IF ST3 OR ST4
ST5=ST4-ST3.
IF ST3>0 AND ST4>0
ST6=ST4/ST3*100.
IF ST7 OR ST8
ST9=ST8-ST7.
IF ST7>0 AND ST8>0
ST10=ST8/ST7*100.
IF ST12 OR ST11
ST13=ST12-ST11.
IF ST12>0 AND ST11>0
ST14=ST12/ST11*100.
IF F:F13>0
ST15=F:F13.
IF F:F14>0
ST16=F:F14.
IF ST15 OR ST16
ST17=ST16-ST15.
IF ST15>0 AND ST16>0
ST18=ST16/ST15*100.
ADD(YU)
CLEAR(ST)
GOR:GOROD=' '
SET(GOR:CGOR,GOR:CGOR)
LOOP UNTIL EOF(GOR)
NEXT(GOR)
IF GOR:NREGION<>XRE:NREGION THEN CYCLE.
F:NGOR=GOR:KG
GET(F,F:K3)
IF F:F1>0
ST3=F:F1.
IF F:F2>0
ST4=F:F2.
IF F:F3>0
ST7=F:F3.
IF F:F4>0
ST8=F:F4.
IF F:F11>0
ST11=F:F11.
IF F:F12>0
ST12=F:F12.
IF ST3 OR ST4
ST5=ST4-ST3.
IF ST3>0 AND ST4>0
ST6=ST4/ST3*100.
IF ST7 OR ST8
ST9=ST8-ST7.
IF ST7>0 AND ST8>0
ST10=ST8/ST7*100.
IF ST12 OR ST11
ST13=ST12-ST11.
IF ST12>0 AND ST11>0
ST14=ST12/ST11*100.
IF F:F13>0
ST15=F:F13.
IF F:F14>0
ST16=F:F14.
IF ST15 OR ST16
ST17=ST16-ST15.
IF ST15>0 AND ST16>0
ST18=ST16/ST15*100.
IF ~ST THEN CYCLE.
ST2=' '&GOR:GOROD
ADD(YU)
CLEAR(ST)
ADD(YU)
LIC:NREGION=XRE:NREGION
LIC:KNAM=' '
SET(LIC:CNREG,LIC:CNREG)
LOOP UNTIL EOF(LIC)
NEXT(LIC)
IF LIC:NREGION<>XRE:NREGION THEN BREAK.
IF LIC:NCITY<>GOR:KG THEN CYCLE.
CLEAR(T67:RECORD)
T67:PNOMBER=LIC:PNOMBER
GET(T67,T67:C)
IF ERRORCODE() THEN CYCLE.
T=0
IF T67:A400N>=100
ST3=T67:A400N/1000.
IF T67:A400K>=100
ST4=T67:A400K/1000.
T=T67:A400K-T67:A400N
IF T>=100 OR T<=-100 THEN ST5=T/1000.
T=0
IF ST4>0 AND ST3>0 THEN ST6=ST4/ST3*100.
IF T67:A495N>=100
ST7=T67:A495N/1000.
IF T67:A495K>=100
T=0
ST8=T67:A495K/1000.
T=T67:A495K-T67:A495N
IF T>=100 OR T<=-100 THEN ST9=T/1000.
T=0
IF ST8>0 AND ST7>0 THEN ST10=ST8/ST7*100.
CLEAR(T17:RECORD)
T17:PNOMBER=LIC:PNOMBER
GET(T17,T17:C)
IF T17:F001>=100
ST12=T17:F001/1000.
IF T17:F010>=100
ST16=T17:F010/1000.
CLEAR(F92:RECORD)
F92:PNOMBER=LIC:PNOMBER
GET(F92,F92:FC)
IF F92:F1>=100
ST11=F92:F1/1000.
IF F92:F10>=100
ST15=F92:F10/1000.
T=0
T=T17:F001-F92:F1
IF T>=100 OR T<=-100 THEN ST13=T/1000.
T=0
IF ST12>0 AND ST11>0 THEN ST14=ST12/ST11*100.
T=0
T=T17:F010-F92:F10
IF T<=-100 OR T>=100 THEN ST17=T/1000.
T=0
IF ST16>0 AND ST15>0 THEN ST18=ST16/ST15*100.
ST2=' '&LIC:KNAM
ADD(YU)
CLEAR(ST).
CLEAR(ST).
ADD(YU)...
ADD(YU).
! ------ ОБЪЕМ ПОСТУПЛЕНИЙ И ВЫПЛАТ НА 1 РАБОТНИКА -------
AT3 PROCEDURE
YU DOS,ASCII,NAME('YU.YU')
RECORD
ST STRING(150)..
GROUP,OVER(ST)
STRING(1)
ST2 STRING(33)
STRING(2)
ST3 STRING(@N_9.2)
STRING(1)
ST4 STRING(@N_10.2)
STRING(1)
ST5 STRING(@N_9.2)
STRING(2)
ST6 STRING(@N_10.2)
STRING(3)
ST7 STRING(@N_6)
STRING(5)
ST8 STRING(@N_9.2)
STRING(4)
ST9 STRING(@N_8.2)
STRING(4)
ST10 STRING(@N_8.2)
STRING(2)
ST11 STRING(@N_8.2)
STRING(1)
ST12 STRING(@N_8.2)
.
T REAL
CODE
PN#=0
CREATE(YU)
ST='ОБЪЕМ ПОСТУПЛЕНИЙ И ВЫПЛАТ НА 1 РАБОТНИКА СТРАХОВОЙ ОРГАНИЗАЦИИ'
ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
ADD(YU)
CLEAR(ST)
ST='¦
млн.руб. '
¦ Страховые взносы ¦ Страховые выплаты ¦ Среднесписочная
¦ Поступление страховых ¦Страховые выплаты ¦'
ADD(YU)
CLEAR(ST)
ST='¦ Наименование ¦ ¦ ¦численность работников¦взносов на 1 работника ¦ на 1 работника ¦'
ADD(YU)
CLEAR(ST)
ST='¦ страховой организации '
¦'
ADD(YU)
CLEAR(ST)
ST='¦ ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦ 1994 ¦ 1995 ¦'
ADD(YU)
CLEAR(ST)
ST='¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦ 8 ¦ 9 ¦ 10 ¦ 11 ¦'
ADD(YU)
CLEAR(ST) ST='
‘
ADD(YU)
CLEAR(ST)
INS:NTER=0
SET(INS:K1,INS:K1)
LOOP UNTIL EOF(INSP)
NEXT(INSP)
PN#=0
if ins:nter>23
THEN
ST2=CLIP(INS:NAME)&' инспекция'
ELSE
ST2='Инспекция '
ADD(yu)
ST2=INS:NAME.
TER:KODT=INS:NTER
SET(TER:K1,TER:K1)
LOOP UNTIL EOF(TERR)
NEXT(TERR)
IF TER:KODT<>INS:NTER THEN BREAK.
IF INS:NTER>23 AND PN#=0
F:NKUST=INS:NTER
GET(F,F:K1)
IF F:F11>0
ST3=F:F11.
IF F:F12>0
ST4=F:F12.
IF F:F13>0
ST5=F:F13.
IF F:F14>0
ST6=F:F14.
IF F:F15>0
ST7=F:F15.
IF F:F16>0
ST8=F:F16.
IF ST3>0 AND ST7>0
ST9=ST3/ST7.
IF ST4>0 AND ST8>0
ST10=ST4/ST8.
IF ST5>0 AND ST7>0
ST11=ST5/ST7.
IF ST6>0 AND ST8>0
ST12=ST6/ST8.
PN#=1
ADD(YU)
CLEAR(ST)
ADD(YU).
XRE:NREGION=TER:NREGION
SET(XRE:K1,XRE:K1)
LOOP UNTIL EOF(XREG)
NEXT(XREG)
IF XRE:NREGION<>TER:NREGION THEN BREAK.
IF INS:NTER>23
ST2=' '&XRE:IREG.
F:NREGION=XRE:NREGION
GET(F,F:K2)
IF F:F11>0
ST3=F:F11.
IF F:F12>0
ST4=F:F12.
IF F:F13>0
ST5=F:F13.
IF F:F14>0
ST6=F:F14.
IF F:F15>0
ST7=F:F15.
IF F:F16>0
ST8=F:F16.
IF ST3>0 AND ST7>0
ST9=ST3/ST7.
IF ST4>0 AND ST8>0
ST10=ST4/ST8.
IF ST5>0 AND ST7>0
ST11=ST5/ST7.
IF ST6>0 AND ST8>0
ST12=ST6/ST8.
ADD(YU)
CLEAR(ST)
ADD(YU)
CLEAR(ST)
GOR:GOROD=' '
SET(GOR:CGOR,GOR:CGOR)
LOOP UNTIL EOF(GOR)
NEXT(GOR)
IF GOR:NREGION<>XRE:NREGION THEN CYCLE.
F:NGOR=GOR:KG
GET(F,F:K3)
IF F:F11>0
ST3=F:F11.
IF F:F12>0
ST4=F:F12.
IF F:F13>0
ST5=F:F13.
IF F:F14>0
ST6=F:F14.
IF F:F15>0
ST7=F:F15.
IF F:F16>0
ST8=F:F16.
IF ST3>0 AND ST7>0
ST9=ST3/ST7.
IF ST4>0 AND ST8>0
ST10=ST4/ST8.
IF ST5>0 AND ST7>0
ST11=ST5/ST7.
IF ST6>0 AND ST8>0
ST12=ST6/ST8.
IF ~ST THEN CYCLE.
ST2=' '&GOR:GOROD
ADD(YU)
CLEAR(ST)
LIC:NREGION=XRE:NREGION
LIC:KNAM=' '
SET(LIC:CNREG,LIC:CNREG)
LOOP UNTIL EOF(LIC)
NEXT(LIC)
IF LIC:NREGION<>XRE:NREGION THEN BREAK.
IF LIC:NCITY<>GOR:KG THEN CYCLE.
CLEAR(F92:RECORD)
F92:PNOMBER=LIC:PNOMBER
GET(F92,F92:FC)
IF F92:F1>100
ST3=F92:F1/1000.
IF F92:F10>100
ST5=F92:F10/1000.
CLEAR(T17:RECORD)
T17:PNOMBER=LIC:PNOMBER
GET(T17,T17:C)
IF T17:F001>100
ST4=T17:F001/1000.
IF T17:F010>100
ST6=T17:F010/1000.
CLEAR(SVV:RECORD)
SVV:PNOM=LIC:PNOMBER
SVV:KZ=2
GET(SVV,SVV:K)
IF SVV:CR2>0
ST7=SVV:CR2.
CLEAR(DF:RECORD)
DF:PNOMBER=LIC:PNOMBER
GET(DF,DF:C)
IF DF:S750N<>0
ST8=DF:S750N.
IF F92:F1>100 AND SVV:CR2<>0
THEN ST9=F92:F1/SVV:CR2/1000.
IF T17:F001>100 AND DF:S750N<>0
THEN ST10=T17:F001/DF:S750N/1000.
IF F92:F10>100 AND SVV:CR2<>0
THEN ST11=F92:F10/SVV:CR2/1000.
IF T17:F010>100 AND DF:S750N<>0
THEN ST12=T17:F010/DF:S750N/1000.
IF ST
PN#+=1
ST2=' '&LIC:KNAM
ADD(YU)
CLEAR(ST).
CLEAR(ST).
ADD(YU)...
ADD(YU).
! ------ ВЫБОРКА ПО УСТАВНОМУ КАПИТАЛУ -------
UK PROCEDURE
YU DOS,ASCII,NAME('YU.YU')
RECORD
ST STRING(56)..
GROUP,OVER(ST)
STRING(1)
ST1 STRING(@N4)
STRING(1)
ST2 STRING(30)
STRING(5)
ST3 STRING(@N_8.2)
.
T REAL
CODE
PN#=0
CREATE(YU)
ST='СПИСОК СТРАХОВЫХ ОРГАНИЗАЦИЙ, ИМЕЮЩИХ УСТАВНЫЙ КАПИТАЛ'
ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
ST='ОТ '&MEM:NG/1000&' ДО '&MEM:VG/1000&' МЛН.РУБ. ЗА '&MEM:GOD&' ГОД' ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
IF MEM:PR=2
ST=XRE:IREG
ST=CENTER(ST)
ADD(YU)
CLEAR(ST).
ST=' '
ADD(YU)
CLEAR(ST)
ST='¦ ¦ Наименование ¦ Уставный капитал ¦'
ADD(YU)
CLEAR(ST)
ST='¦ N ¦ страховой организации ¦ ¦'
ADD(YU)
CLEAR(ST)
ST=' ¦'
ADD(YU)
CLEAR(ST)
ST='¦ 1 ¦ 2 ¦ 3 ¦'
ADD(YU)
CLEAR(ST) ST=' ‘
ADD(YU)
CLEAR(ST)
IF MEM:PR=2
THEN
LIC:NREGION=XRE:NREGION
SET(LIC:CNREG,LIC:CNREG)
ELSE
SET(LIC:CLIC,LIC:CLIC).
LOOP UNTIL EOF(LIC)
NEXT(LIC)
IF MEM:PR=2
IF LIC:NREGION<>XRE:NREGION THEN BREAK..
T67:PNOMBER=LIC:PNOMBER
GET(T67,T67:C)
IF ~ERRORCODE()
THEN
IF MEM:GOD=1992
THEN
IF T67:A400N<=MEM:NG OR T67:A400N>MEM:VG THEN CYCLE.
ELSE
IF T67:A400K<=MEM:NG OR T67:A400K>MEM:VG THEN CYCLE..
PN#+=1
ST1=PN#
ST2=LIC:KNAM
IF MEM:GOD=1992 AND T67:A400N>0 THEN ST3=T67:A400N/1000.
IF MEM:GOD=1993 AND T67:A400K>0 THEN ST3=T67:A400K/1000.
ADD(YU)
CLEAR(ST)..
CLOSE(YU)
! ------ ВЫБОРКА ПО СТРАХОВЫМ ВЗНОСАМ -------
SVZ PROCEDURE
YU DOS,ASCII,NAME('YU.YU')
RECORD
ST STRING(56)..
GROUP,OVER(ST)
STRING(1)
ST1 STRING(@N4)
STRING(1)
ST2 STRING(30)
STRING(5)
ST3 STRING(@N_8.2)
.
T REAL
CODE
PN#=0
CREATE(YU)
ST='СПИСОК СТРАХОВЫХ ОРГАНИЗАЦИЙ, СУММА ПОСТУПЛЕНИЯ '
ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
ST='СТРАХОВЫХ ВЗНОСОВ КОТОРЫХ'
ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
ST='ОТ '&MEM:NG/1000&' ДО '&MEM:VG/1000&' МЛН.РУБ. ЗА '&MEM:GOD&' ГОД' ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
IF MEM:PR=2
ST=XRE:IREG
ST=CENTER(ST)
ADD(YU)
CLEAR(ST). ST='+------------------------------------------------------+'
ADD(YU)
CLEAR(ST)
ST='¦ ¦ Наименование ¦ Поступление ¦'
ADD(YU)
CLEAR(ST)
ST='¦ N ¦ страховой организации ¦страховых взносов ¦'
ADD(YU)
CLEAR(ST) ST='+----+------------------------------+------------------¦'
ADD(YU)
CLEAR(ST)
ST='¦ 1 ¦ 2 ¦ 3 ¦'
ADD(YU)
CLEAR(ST) ST='+----+------------------------------+------------------¦'
ADD(YU)
CLEAR(ST)
IF MEM:PR=2
THEN
LIC:NREGION=XRE:NREGION
SET(LIC:CNREG,LIC:CNREG)
ELSE
SET(LIC:CLIC,LIC:CLIC).
LOOP UNTIL EOF(LIC)
NEXT(LIC)
IF MEM:PR=2
IF LIC:NREGION<>XRE:NREGION THEN BREAK..
IF MEM:GOD=1993
T17:PNOMBER=LIC:PNOMBER
GET(T17,T17:C)
IF ~ERRORCODE()
THEN
IF T17:F001<=MEM:NG OR T17:F001>MEM:VG THEN CYCLE.
ELSE
CYCLE..
IF MEM:GOD=1992
F92:PNOMBER=LIC:PNOMBER
GET(F92,F92:FC)
IF ~ERRORCODE()
THEN
IF F92:F1<=MEM:NG OR F92:F1>MEM:VG THEN CYCLE.
ELSE
CYCLE..
PN#+=1
ST1=PN#
ST2=LIC:KNAM
IF MEM:GOD=1992 AND F92:F1>0 THEN ST3=F92:F1/1000.
IF MEM:GOD=1993 AND T17:F001>0 THEN ST3=T17:F001/1000.
ADD(YU)
CLEAR(ST).
CLOSE(YU)
! ------ ВЫБОРКА ПО СТРАХОВЫМ РЕЗЕРВАМ -------
SR PROCEDURE
YU DOS,ASCII,NAME('YU.YU')
RECORD
ST STRING(56)..
GROUP,OVER(ST)
STRING(1)
ST1 STRING(@N4)
STRING(1)
ST2 STRING(30)
STRING(5)
ST3 STRING(@N_8.2)
.
T REAL
CODE
PN#=0
CREATE(YU)
ST='СПИСОК СТРАХОВЫХ ОРГАНИЗАЦИЙ, ИМЕЮЩИХ СТРАХОВЫЕ РЕЗЕРВЫ' ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
ST='ОТ '&MEM:NG/1000&' ДО '&MEM:VG/1000&' МЛН.РУБ. ЗА '&MEM:GOD&' ГОД' ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
IF MEM:PR=2
ST=XRE:IREG
ST=CENTER(ST)
ADD(YU)
CLEAR(ST). ST='+------------------------------------------------------+'
ADD(YU)
CLEAR(ST)
ST='¦ ¦ Наименование ¦ Страховые резервы¦' ADD(YU)
CLEAR(ST)
ST='¦ N ¦ страховой организации ¦ ¦'
ADD(YU)
CLEAR(ST) ST='+----+------------------------------+------------------¦'
ADD(YU)
CLEAR(ST)
ST='¦ 1 ¦ 2 ¦ 3 ¦'
ADD(YU)
CLEAR(ST) ST='+----+------------------------------+------------------¦'
ADD(YU)
CLEAR(ST)
IF MEM:PR=2
THEN
LIC:NREGION=XRE:NREGION
SET(LIC:CNREG,LIC:CNREG)
ELSE
SET(LIC:CLIC,LIC:CLIC).
LOOP UNTIL EOF(LIC)
NEXT(LIC)
IF MEM:PR=2
IF LIC:NREGION<>XRE:NREGION THEN BREAK..
T67:PNOMBER=LIC:PNOMBER
GET(T67,T67:C)
IF ~ERRORCODE()
IF MEM:GOD=1992
THEN
IF T67:A495N<=MEM:NG OR T67:A495N>MEM:VG THEN CYCLE.
ELSE
IF T67:A495K<=MEM:NG OR T67:A495K>MEM:VG THEN CYCLE..
PN#+=1
ST1=PN#
ST2=LIC:KNAM
IF MEM:GOD=1992 AND T67:A495N>0 THEN ST3=T67:A495N/1000.
IF MEM:GOD=1993 AND T67:A495K>0 THEN ST3=T67:A495K/1000. ADD(YU)
CLEAR(ST)..
CLOSE(YU)
! ------ ВЫБОРКА ПО СТРАХОВЫМ ВЫПЛАТАМ -------
SVP PROCEDURE
YU DOS,ASCII,NAME('YU.YU')
RECORD
ST STRING(56)..
GROUP,OVER(ST)
STRING(1)
ST1 STRING(@N4)
STRING(1)
ST2 STRING(30)
STRING(5)
ST3 STRING(@N_8.2)
.
T REAL
CODE
PN#=0
CREATE(YU)
ST='СПИСОК СТРАХОВЫХ ОРГАНИЗАЦИЙ, ИМЕЮЩИХ СТРАХОВЫЕ ВЫПЛАТЫ'
ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
ST='ОТ '&MEM:NG/1000&' ДО '&MEM:VG/1000&' МЛН.РУБ. ЗА '&MEM:GOD&' ГОД' ST=CENTER(ST)
ADD(YU)
CLEAR(ST)
IF MEM:PR=2
ST=XRE:IREG
ST=CENTER(ST)
ADD(YU)
CLEAR(ST). ST='+----------------------------------------------------+'
ADD(YU)
CLEAR(ST)
ST='¦ ¦ Наименование ¦ Страховые выплаты¦'
ADD(YU)
CLEAR(ST)
ST='¦ N ¦ страховой организации ¦ ¦'
ADD(YU)
CLEAR(ST) ST='+----+------------------------------+-----------------¦'
ADD(YU)
CLEAR(ST)
ST='¦ 1 ¦ 2 ¦ 3 ¦'
ADD(YU)
CLEAR(ST) ST='+----+------------------------------+-----------------¦'
ADD(YU)
CLEAR(ST)
IF MEM:PR=2
THEN
LIC:NREGION=XRE:NREGION
SET(LIC:CNREG,LIC:CNREG)
ELSE
SET(LIC:CLIC,LIC:CLIC).
LOOP UNTIL EOF(LIC)
NEXT(LIC)
IF MEM:PR=2
IF LIC:NREGION<>XRE:NREGION THEN BREAK..
IF MEM:GOD=1993
T17:PNOMBER=LIC:PNOMBER
GET(T17,T17:C)
IF ~ERRORCODE()
THEN
IF T17:F010<=MEM:NG OR T17:F010>MEM:VG THEN CYCLE.
ELSE
CYCLE..
IF MEM:GOD=1992
F92:PNOMBER=LIC:PNOMBER
GET(F92,F92:FC)
IF ~ERRORCODE()
THEN
IF F92:F10<=MEM:NG OR F92:F10>MEM:VG THEN CYCLE.
ELSE CYCLE..
PN#+=1
ST1=PN#
ST2=LIC:KNAM
IF MEM:GOD=1992 AND F92:F10>0 THEN ST3=F92:F10/1000.
IF MEM:GOD=1993 AND T17:F010>0 THEN ST3=T17:F010/1000. ADD(YU)
CLEAR(ST).
CLOSE(YU)
CLEAR(ST)
ANT PROGRAM
INCLUDE('STD_KEYS.CLA')
INCLUDE('CTL_KEYS.CLA')
INCLUDE('ALT_KEYS.CLA')
INCLUDE('SHF_KEYS.CLA')
REJECT_KEY EQUATE(CTRL_ESC) ACCEPT_KEY EQUATE(CTRL_ENTER) TRUE EQUATE(1) FALSE EQUATE(0)
MAP
PROC(G_OPENFILES)
PROC(G_OPENFILES2)
MODULE('ANT1')
PROC(GBO1)
.
MODULE('ANT2')
PROC(R)
.
MODULE('ANT3')
PROC(REG)
.
MODULE('ANT4')
PROC(MEN2)
.
MODULE('ANT5')
PROC(MEN4)
.
MODULE('ANT6')
PROC(MEN5)
.
MODULE('ANT7')
PROC(MBO)
.
MODULE('ANT8')
PROC(GBO)
.
MODULE('ANTB')
PROC(AT1)
PROC(AT2)
PROC(AT3)
PROC(UK)
PROC(SVZ)
PROC(SR)
PROC(SVP)
PROC(S)
.
.
EJECT('FILE LAYOUTS') T17 FILE,PRE(T17),CREATE,RECLAIM
OWNER('NPRN.K01'),ENCRYPT C KEY(T17:PNOMBER),DUP,NOCASE,OPT RECORD RECORD PNOMBER LONG !”ˆ€‘Ž‚›… …‡“‹œ’€’› F001 REAL F002 REAL F003 REAL F004 REAL F005 REAL F006 REAL F007 REAL F008 REAL F009 REAL F010 REAL F011 REAL F012 REAL F013 REAL F014 REAL F015 REAL F016 REAL F017 REAL F018 REAL F019 REAL F020 REAL F021 REAL
. .
T67 FILE,PRE(T67),CREATE,RECLAIM
OWNER('NPRN.K01'),ENCRYPT C KEY(T67:PNOMBER),DUP,NOCASE,OPT RECORD RECORD PNOMBER LONG !€‘‘ˆ‚ €‹€‘€ A400N REAL !1гбв ўл© д®¤ A400K REAL A410N REAL !2१Ґаўл© 䮤 A410K REAL A420N REAL !3 A420K REAL A430N REAL !4 A430K REAL A440N REAL !5 A440K REAL A450N REAL !6 A450K REAL A460N REAL !7 A460K REAL A470N REAL !8 A470K REAL A471N REAL !9 A471K REAL A472N REAL !10 A472K REAL A480N REAL !11 A480K REAL A485N REAL !12 A485K REAL A490N REAL !13 A490K REAL A491N REAL !14 A491K REAL A492N REAL !15 A492K REAL A493N REAL !16 A493K REAL A494N REAL !17 A494K REAL A495N REAL !18 A495K REAL A500N REAL !19 A500K REAL A510N REAL !20 A510K REAL A520N REAL !21 A520K REAL A600N REAL !22 A600K REAL A620N REAL !23 A620K REAL A650N REAL !24 A650K REAL A660N REAL !25 A660K REAL A670N REAL !26 A670K REAL A680N REAL !27 A680K REAL A690N REAL !28 A690K REAL A700N REAL !29 A700K REAL A710N REAL !30 A710K REAL A712N REAL !31 A712K REAL A730N REAL !32 A730K REAL A740N REAL !33 A740K REAL A750N REAL !34 A750K REAL A760N REAL !35 A760K REAL A770N REAL !36 A770K REAL A780N REAL !37 A780K REAL
. .
DF FILE,PRE(DF),CREATE,RECLAIM
OWNER('NPRN.K01'),ENCRYPT C KEY(DF:PNOMBER),DUP,NOCASE,OPT RECORD RECORD PNOMBER SHORT S010N REAL !1 S010P REAL S010I REAL S010K REAL S020N REAL !2 S020P REAL S020I REAL S020K REAL S030N REAL !3 䮤 Є®Ї«ҐЁп S030P REAL S030I REAL S030K REAL S031N REAL !4 S031P REAL S031I REAL S031K REAL S032N REAL !5 S032P REAL S032I REAL S032K REAL S033N REAL !6 S033P REAL S033I REAL S033K REAL S034N REAL !7 S034P REAL S034I REAL S034K REAL S035N REAL !8 S035P REAL S035I REAL S035K REAL S036N REAL !9 S036P REAL S036I REAL S036K REAL S037N REAL !10 S037P REAL S037I REAL S037K REAL S038N REAL !11 S038P REAL S038I REAL S038K REAL S039N REAL !12 S039P REAL S039I REAL S039K REAL S040N REAL !13 䮤 Ї®вॡ«ҐЁп S040P REAL S040I REAL S040K REAL S041N REAL !14 S041P REAL S041I REAL S041K REAL S042N REAL !15 S042P REAL S042I REAL S042K REAL S043N REAL !16 S043P REAL S043I REAL S043K REAL S044N REAL !17 S044P REAL S044I REAL S044K REAL S045N REAL !18 S045P REAL S045I REAL S045K REAL S046N REAL !19 S046P REAL S046I REAL S046K REAL S047N REAL !20 S047P REAL S047I REAL S047K REAL S050N REAL !21 S050P REAL S050I REAL S050K REAL S060N REAL !22 S060P REAL S060I REAL S060K REAL S070N REAL !23 S070P REAL S070I REAL S070K REAL S071N REAL !24 S071P REAL S071I REAL S071K REAL S072N REAL !25 S072P REAL S072I REAL S072K REAL S073N REAL !26 S073P REAL S073I REAL S073K REAL S074N REAL !27 S074P REAL S074I REAL S074K REAL S075N REAL !28 S075P REAL S075I REAL S075K REAL S080N REAL !29 S080P REAL S080I REAL S080K REAL S090N REAL !30 S090P REAL S090I REAL S090K REAL S210N REAL !31 S210P REAL S210I REAL S210K REAL S211N REAL !32 S211P REAL S211I REAL S211K REAL S220N REAL !33 S220P REAL S220I REAL S220K REAL S221N REAL !34 S221P REAL S221I REAL S221K REAL S230N REAL !35 S230P REAL S230I REAL S230K REAL S231N REAL !36 S231P REAL S231I REAL S231K REAL S240N REAL !37 S240P REAL S240I REAL S240K REAL S241N REAL !38 S241P REAL S241I REAL S241K REAL S250N REAL !39 S250P REAL S250I REAL S250K REAL S251N REAL !40 S251P REAL S251I REAL S251K REAL S310N REAL !41 Єа вЄ®ба®з п S310P REAL S310I REAL S310K REAL S320N REAL !42 ¤®«Ј®ба®з п S320P REAL S320I REAL S320K REAL S330N REAL !43 Єа вЄ®ба®з п S330P REAL S330I REAL S330K REAL S340N REAL !44 ¤®«Ј®ба®з п S340P REAL S340I REAL S340K REAL S350N REAL !45 Ї®«гзҐлҐ S350P REAL S350I REAL S350K REAL S360N REAL !46 ўл¤ лҐ S360P REAL S360I REAL S360K REAL R410N REAL !47 Ґ¬ в ЄвЁўл R410P REAL R410I REAL R410K REAL R420N REAL !48 R420P REAL R420I REAL R420K REAL R430N REAL !49 R430P REAL R430I REAL R430K REAL R440N REAL !50 R440P REAL R440I REAL R440K REAL S500N REAL !51 ‡¤ Ёп S500P REAL S500I REAL S500K REAL S501N REAL !52 ‘®®а㦥Ёп S501P REAL S501I REAL S501K REAL S502N REAL !53 ҐаҐ¤ в®злҐ гбва®©бвў S502P REAL S502I REAL S502K REAL S503N REAL !54 Œ иЁл Ё ®Ў®а㤮ў ЁҐ S503P REAL S503I REAL S503K REAL S504N REAL !55 ’а бЇ®авлҐ б।бвў S504P REAL S504I REAL S504K REAL S505N REAL !56 ЁўҐв ам S505P REAL S505I REAL S505K REAL S506N REAL !57 Ў®зЁ© бЄ®в S506P REAL S506I REAL S506K REAL S507N REAL !58 தгЄвЁўл© бЄ®в S507P REAL S507I REAL S507K REAL S508N REAL !59 Œ®Ј®«вЁҐ б ¦¤ҐЁп S508P REAL S508I REAL S508K REAL S509N REAL !60 S509P REAL S509I REAL S509K REAL S510N REAL !61 S510P REAL S510I REAL S510K REAL S511N REAL !62 Їа®Ё§ў®¤бвўҐлҐ S511P REAL S511I REAL S511K REAL S512N REAL !63 ҐЇа®Ё§ў®¤бвўҐлҐ S512P REAL S512I REAL S512K REAL S520N REAL !64 S520P REAL S520I REAL S520K REAL S530N REAL !65 S530P REAL S530I REAL S530K REAL S540N REAL !66 S540P REAL S540I REAL S540K REAL S610N REAL !67 S610P REAL S610I REAL S610K REAL S620N REAL !68 S620P REAL S620I REAL S620K REAL S630N REAL !69 S630P REAL S630I REAL S630K REAL S640N REAL !70 S640P REAL S640I REAL S640K REAL S650N REAL !71 S650P REAL S650I REAL S650K REAL S710N REAL !72 S710P REAL S710I REAL S710K REAL S720N REAL !73 S720P REAL S720I REAL S720K REAL S730N REAL !74 S730P REAL S730I REAL S730K REAL S740N REAL !75 S740P REAL S740I REAL S740K REAL S750N REAL !76 S750P REAL S750I REAL S750K REAL S760N REAL !77 S760P REAL S760I REAL S760K REAL S761N REAL !78 S761P REAL S761I REAL S761K REAL S762N REAL !79 S762P REAL S762I REAL S762K REAL S763N REAL !80 S763P REAL S763I REAL S763K REAL S810N REAL !81 S810P REAL S810I REAL S810K REAL S811N REAL !82 S811P REAL S811I REAL S811K REAL S812N REAL !83 S812P REAL S812I REAL S812K REAL S813N REAL !84 S813P REAL S813I REAL S813K REAL S814N REAL !85 S814P REAL S814I REAL S814K REAL S820N REAL !86 аЁў«ҐзҐлҐ б।бвў -ўбҐЈ® S820P REAL S820I REAL S820K REAL S821N REAL !87 ЄаҐ¤Ёвл Ў Є®ў S821P REAL S821I REAL S821K REAL S822N REAL !88 S822P REAL S822I REAL S822K REAL S823N REAL !89 S823P REAL S823I REAL S823K REAL S824N REAL !90 Ё§ Ўо¤¦Ґв S824P REAL S824I REAL S824K REAL S825N REAL !91 Ё§ ўҐЎо¤¦Ґвле 䮤®ў S825P REAL S825I REAL S825K REAL S826N REAL !92 S826P REAL S826I REAL S826K REAL S830N REAL !93 S830P REAL S830I REAL S830K REAL S910N REAL !94 S910P REAL S910I REAL S910K REAL S920N REAL !95 S920P REAL S920I REAL S920K REAL S930N REAL !96 S930P REAL S930I REAL S930K REAL S940N REAL !97 S940P REAL S940I REAL S940K REAL S950N REAL !98 S950P REAL S950I REAL S950K REAL S960N REAL !99 S960P REAL S960I REAL S960K REAL S970N REAL !100 S970P REAL S970I REAL S970K REAL S980N REAL !101 S980P REAL S980I REAL S980K REAL S990N REAL !102 S990P REAL S990I REAL S990K REAL R110N REAL !103 бЇа ўЄЁ д®а¬л 5 R110P REAL R110I REAL R110K REAL R120N REAL !104 R120P REAL R120I REAL R120K REAL R130N REAL !105 R130P REAL R130I REAL R130K REAL R140N REAL !106 R140P REAL R140I REAL R140K REAL R150N REAL !107 R150P REAL R150I REAL R150K REAL
. .
SVV FILE,NAME('D:LICENSVV'),PRE(SVV) K KEY(SVV:PNOM,SVV:KZ),DUP,NOCASE,OPT RECORD RECORD PNOM SHORT LC SHORT MN STRING(1) VP STRING(1) PR REAL KZ REAL PSV1 REAL PSV2 REAL LS1 REAL LS2 REAL SG1 REAL SG2 REAL GBG1 REAL GBG2 REAL GMG1 REAL GMG2 REAL SNS1 REAL SNS2 REAL MS1 REAL MS2 REAL DLS1 REAL DLS2 REAL IS1 REAL IS2 REAL SIG1 REAL SIG2 REAL SGR1 REAL SGR2 REAL SRK1 REAL SRK2 REAL SIS1 REAL SIS2 REAL SO1 REAL SO2 REAL SST1 REAL SST2 REAL SNK1 REAL SNK2 REAL PSO1 REAL PSO2 REAL OS1 REAL OS2 REAL CR1 REAL CR2 REAL
. .
F92 FILE,NAME('D:LICENF92'),PRE(F92),CREATE,RECLAIM FC KEY(F92:PNOMBER),DUP,NOCASE,OPT RECORD RECORD PNOMBER LONG F1 REAL F2 REAL F3 REAL F4 REAL F5 REAL F6 REAL F7 REAL F8 REAL F9 REAL F10 REAL F11 REAL F12 REAL F13 REAL F14 REAL F15 REAL F16 REAL F17 REAL F18 REAL F19 REAL F20 REAL F21 REAL F22 REAL
. .
LIC FILE,PRE(LIC),CREATE,RECLAIM CLIC KEY(LIC:KNAM),DUP,NOCASE,OPT CREG KEY(LIC:IREGION,LIC:KNAM),DUP,NOCASE,OPT CPN1 KEY(LIC:PNOMBER),DUP,NOCASE,OPT CNREG KEY(LIC:NREGION,LIC:KNAM),DUP,NOCASE,OPT CNLIC KEY(LIC:NOMLIC),DUP,NOCASE,OPT RECORD RECORD KNAM STRING(30) !Єа вЄ®Ґ Ё¬п Є®¬Ї ЁЁ PNOMBER LONG !Їа®Ја ¬¬л© ®¬Ґа NOMLIC LONG !®¬Ґа «ЁжҐ§ЁЁ KV STRING(1) !Š’Ž ўл¤лў « «ЁжҐ§Ёо NREGION LONG !®¬Ґа ॣЁ® IREGION STRING(30) !Ё¬п ॣЁ® NCITY LONG ICITY STRING(25) ADRESS STRING(40) ! ¤аҐб Є®¬Ї ЁЁ ADRESS1 STRING(40) ! ¤аҐб Є®¬Ї ЁЁ (2з) FADRESS STRING(40) !Ї®зв®ўл© ¤аҐб FADRESS1 STRING(40) !Ї®зв®ўл© ¤аҐб FNAME STRING(40) !Ї®«®Ґ Ё¬п Є®¬Ї ЁЁ ISPOLNIT STRING(15) !ˆ‘Ž‹ˆ’…‹œ FNAME1 STRING(40) !Ї®«®Ґ Ё¬п Є®¬Ї ЁЁ(2 з) TELEPHON STRING(40) !⥫Ґд®л Є®¬Ї ЁЁ VIDORG STRING(50) !ўЁ¤ ®аЈ Ё§ жЁЁ VIDORG1 STRING(50) !ўЁ¤ ®аЈ Ё§ жЁЁ(2 з.) UFOND REAL !гбв ў®© 䮤 DATAR STRING(@d6) !¤ в ॣЁбва жЁЁ VHODN LONG !ўе®¤пйЁ© ®¬Ґа DPOST STRING(@d6) !¤ в Ї®бвгЇ«ҐЁп ¤®Єг¬Ґв®ў REZRAS STRING(22) !१г«мв в а бᬮв२п DUZ STRING(10) PRINAD STRING(4) !Ј®«®ў п ®аЈ Ё§ жЁп NPRIN LONG !Їа. ®¬Ґа Ј®«®ў®© ®аЈ Ё§ жЁ NREISTR LONG KVMR STRING(60) DMR STRING(@d6) SANK STRING(30) DSANC STRING(10) INCAP STRING(3)
. .
XREG FILE,PRE(XRE),CREATE,RECLAIM K KEY(XRE:NREG),NOCASE,OPT K1 KEY(XRE:NREGION),NOCASE,OPT RECORD RECORD NREG SHORT IREG STRING(35) NREGION SHORT
. .
GOR FILE,NAME('D:LICENGOR'),PRE(GOR) CGOR KEY(GOR:GOROD),DUP,NOCASE,OPT RECORD RECORD KG LONG NREGION LONG GOROD STRING(25)
. .
INSP FILE,NAME('D:LICENINSP'),PRE(INS),CREATE,RECLAIM K KEY(INS:NAME),DUP,NOCASE,OPT K1 KEY(INS:NTER),DUP,NOCASE,OPT RECORD RECORD NAME STRING(30) NTER SHORT
. .
TERR FILE,NAME('D:LICENTERR'),PRE(TER),CREATE,RECLAIM CREG KEY(TER:IREGION),DUP,NOCASE,OPT CNREG KEY(TER:NREGION),DUP,NOCASE,OPT K KEY(TER:KODT),DUP,NOCASE,OPT K1 KEY(TER:KODT,TER:IREGION),DUP,NOCASE,OPT RECORD RECORD NAMT STRING(30) KODT LONG NREGION LONG IREGION STRING(30)
. .
F FILE,PRE(F),CREATE,RECLAIM K1 KEY(F:NKUST),DUP,NOCASE,OPT K2 KEY(F:NREGION),DUP,NOCASE,OPT K3 KEY(F:NGOR),DUP,NOCASE,OPT RECORD RECORD NKUST SHORT NREGION SHORT NGOR SHORT F1 REAL !t67:a400n F2 REAL !t67:a400k F3 REAL !t67:a495n F4 REAL !t67:a495K F5 REAL !f92:f19 F6 REAL !t17:f018 F7 REAL !f92:f21 F8 REAL !t17:f020 F9 REAL !f92:f7 F10 REAL !t17:f004 F11 REAL !f92:f1 F12 REAL !t17:f001 F13 REAL !f92:f10 F14 REAL !t17:f010 F15 REAL !svv:cr2 F16 REAL !df:s750n
. .
EJECT('GLOBAL MEMORY VARIABLES') ACTION SHORT !0 = NO ACTION
!1 = ADD RECORD
!2 = CHANGE RECORD
!3 = DELETE RECORD
!4 = LOOKUP FIELD
GROUP,PRE(MEM) MESSAGE STRING(30) !Global Message Area PAGE SHORT !Report Page Number LINE SHORT !Report Line Number DEVICE STRING(30) !Report Device Name NR SHORT NG REAL VG REAL GOD SHORT PR SHORT
.
EJECT('CODE SECTION') CODE SETHUE(7,0) !SET WHITE ON BLACK BLANK ! AND BLANK G_OPENFILES !OPEN OR CREATE FILES SETHUE() ! THE SCREEN GBO RETURN !EXIT TO DOS
G_OPENFILES PROCEDURE !OPEN FILES & CHECK FOR ERROR CODE G_OPENFILES2(T17) !CALL OPEN FILE PROCEDURE G_OPENFILES2(T67) !CALL OPEN FILE PROCEDURE G_OPENFILES2(DF) !CALL OPEN FILE PROCEDURE G_OPENFILES2(SVV) !CALL OPEN FILE PROCEDURE G_OPENFILES2(F92) !CALL OPEN FILE PROCEDURE G_OPENFILES2(LIC) !CALL OPEN FILE PROCEDURE G_OPENFILES2(XREG) !CALL OPEN FILE PROCEDURE G_OPENFILES2(GOR) !CALL OPEN FILE PROCEDURE G_OPENFILES2(INSP) !CALL OPEN FILE PROCEDURE G_OPENFILES2(TERR) !CALL OPEN FILE PROCEDURE G_OPENFILES2(F) !CALL OPEN FILE PROCEDURE BLANK !BLANK THE SCREEN
G_OPENFILES2 PROCEDURE(G_FILE) !OPEN EACH FILE & CHECK ERROR G_FILE EXTERNAL,FILE FILE_NAME STRING(64)
CODE FILE_NAME = NAME(G_FILE) SHOW(25,1,CENTER('OPENING FILE: ' & CLIP(FILE_NAME),80)) !DISPLAY FILE NAME OPEN(G_FILE) !OPEN THE FILE IF ERROR() !OPEN RETURNED AN ERROR
CASE ERRORCODE() ! CHECK FOR SPECIFIC ERROR
OF 46 ! KEYS NEED TO BE REQUILT
SETHUE(0,7) ! BLACK ON WHITE
SHOW(25,1,CENTER('REBUILDING KEY FILES FOR ' & CLIP(FILE_NAME),80))
BUILD(G_FILE) ! CALL THE BUILD PROCEDURE
IF ERROR() ! ON UNNEXPECTED ERROR
LOOP ! STOP EXECUTION
STOP('Cannot Build ' & FILE_NAME & ' - Error: ' & ERROR())
.
.
SETHUE(7,0) ! WHITE ON BLACK
BLANK(25,1,1,80) ! BLANK THE MESSAGE
OF 2 !IF NOT FOUND,
CREATE(G_FILE) ! CREATE
IF ERROR() !STOP ON UNNEXPECTED ERROR
LOOP
STOP('Cannot Create ' & FILE_NAME & ' - Error: ' & ERROR())
. .
OF 73 ! MEMO FILE NOT FOUND
LOOP ! STOP EXECUTION
STOP('Cannot Open Memo File for ' & FILE_NAME & ERROR())
.
ELSE ! ANY OTHER ERROR
LOOP ! STOP EXECUTION
STOP('Cannot Open ' & FILE_NAME & ' - Error: ' & ERROR())
. . .
(ant1)
MEMBER('ANT') GBO1 PROCEDURE SCREEN SCREEN PRE(SCR),WINDOW(12,73),AT(6,6),HUE(15,5) ROW(2,24) PAINT(1,21),HUE(11,5) ROW(11,22) PAINT(1,31),HUE(30,1) ROW(1,1) STRING('+-{71}+') ROW(2,1) REPEAT(10);STRING('¦<0{71}>¦') . ROW(12,1) STRING('+-{71}+') ROW(2,24) STRING('<128>аналитические<0>таблицы') ROW(11,30) STRING('начальная<0>сортировка') COL(25) STRING('F2 -') ENTRY,USE(?FIRST_FIELD) ENTRY,USE(?PRE_MENU) MENU,USE(MENU_FIELD"),REQ ROW(4,5) STRING('1. <145>ведения об изменении отдельных ' |
& 'показателей деятельности <145,142>') ROW(5,5) STRING('2. <128>анализ показателей развития ' | & 'страховых организаций') ROW(6,5) STRING('3. <142>объем поступлений и выплат на 1 ' |
& 'работника страховой организации')
. .
EJECT
CODE
OPEN(SCREEN) !OPEN THE MENU SCREEN
SETCURSOR !TURN OFF ANY CURSOR
MENU_FIELD" = '' !START MENU WITH FIRST ITEM
LOOP !LOOP UNTIL USER EXITS
ALERT !TURN OFF ALL ALERTED KEYS
ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
ALERT(F2_KEY) !ALERT HOT KEY
ACCEPT !READ A FIELD OR MENU CHOICE
IF KEYCODE() = F2_KEY !ON HOT KEY
UPDATE(?) ! RETRIEVE FIELD
SAVACTN# = ACTION ! SAVE ACTION
S ! CALL HOT KEY PROCEDURE
ACTION = SAVACTN# ! RESTORE ACTION
SELECT(?) ! DO SAME FIELD AGAIN
CYCLE ! AND LOOP AGAIN
.
IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT
IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
UPDATE ! MOVE ALL FIELDS FROM SCREEN
SELECT(?) ! START WITH CURRENT FIELD
SELECT ! EDIT ALL FIELDS
CYCLE ! GO TO TOP OF LOOP
. !
CASE FIELD() !JUMP TO FIELD EDIT ROUTINE
OF ?FIRST_FIELD !FROM THE FIRST FIELD
IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
OF ?PRE_MENU !PRE MENU FIELD CONDITION
IF KEYCODE() = ESC_KEY ! BACKING UP?
SELECT(?-1) ! SELECT PREVIOUS FIELD
ELSE ! GOING FORWARD
SELECT(?+1) ! SELECT MENU FIELD
.
OF ?MENU_FIELD" !FROM THE MENU FIELD
EXECUTE CHOICE() ! CALL THE SELECTED PROCEDURE
AT1 !
AT2 !
AT3 !
. . .
(ant2)
MEMBER('ANT') R PROCEDURE
SCREEN SCREEN PRE(SCR),WINDOW(1,3),AT(9,77),HUE(0,2)
ENTRY,USE(?FIRST_FIELD) ROW(1,1) ENTRY,USE(MEM:NR) NR COL(1) STRING(@n3),HUE(7,7)
ENTRY,USE(?LAST_FIELD)
.
EJECT CODE OPEN(SCREEN) !OPEN THE SCREEN SETCURSOR !TURN OFF ANY CURSOR DISPLAY !DISPLAY THE FIELDS LOOP !LOOP THRU ALL THE FIELDS
SCR:NR = MEM:NR
ALERT !RESET ALERTED KEYS
ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
ACCEPT !READ A FIELD
IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT KEY
IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
UPDATE ! MOVE ALL FIELDS FROM SCREEN
SELECT(?) ! START WITH CURRENT FIELD
SELECT ! EDIT ALL FIELDS
CYCLE ! GO TO TOP OF LOOP
. !
CASE FIELD() !JUMP TO FIELD EDIT ROUTINE
OF ?FIRST_FIELD !FROM THE FIRST FIELD
IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
OF ?MEM:NR
XRE:NREGION = MEM:NR !MOVE RELATED FIELDS
GET(XREG,XRE:K1) !READ THE RECORD
ACTION# = ACTION !SAVE ACTION
ACTION = 4 !REQUEST TABLE LOOKUP
REG !CALL LOOKUP PROCEDURE
IF ACTION !NO SELECTION WAS MADE
SELECT(?MEM:NR-1) ! BACK UP ONE FIELD
ACTION = ACTION# ! RESTORE ACTION
CYCLE ! GO TO TOP OF LOOP
.
SCR:NR = XRE:NREGION !DISPLAY LOOKUP FIELD
MEM:NR = XRE:NREGION !MOVE LOOKUP FIELD
DISPLAY(?MEM:NR) !AND DISPLAY IT
ACTION = ACTION# !RESTORE ACTION
MEN2
OF ?LAST_FIELD !FROM THE LAST FIELD
ACTION = 0 ! SET ACTION TO COMPLETE
RETURN ! AND RETURN TO CALLER . .
(ant3)
MEMBER('ANT') REG PROCEDURE SCREEN SCREEN PRE(SCR),WINDOW(25,39),AT(1,42),HUE(8,7)
ROW(2,9) PAINT(1,19),HUE(0,7)
ROW(1,1) STRING('+-{37}+')
ROW(2,1) REPEAT(2);STRING('¦<0{37}>¦') .
ROW(4,1) STRING('¦')
ROW(5,1) REPEAT(20);STRING('¦<0{37}>¦') .
ROW(25,1) STRING('+-{37}+') ROW(2,12) STRING('<130>выберите<0>регион') ROW(4,39) STRING('¦') ENTRY,USE(?FIRST_FIELD) ENTRY,USE(?PRE_POINT) REPEAT(21),EVERY(1),INDEX(NDX) COL(2) POINT(1,37),USE(?POINT),ESC(?-1) IREG COL(3) STRING(35)
. . NDX BYTE !REPEAT INDEX FOR POINT AREA ROW BYTE !ACTUAL ROW OF SCROLL AREA COL BYTE !ACTUAL COLUMN OF SCROLL AREA COUNT BYTE(21) !NUMBER OF ITEMS TO SCROLL ROWS BYTE(21) !NUMBER OF ROWS TO SCROLL COLS BYTE(37) !NUMBER OF COLUMNS TO SCROLL FOUND BYTE !RECORD FOUND FLAG
NEWPTR LONG !POINTER TO NEW RECORD
TABLE TABLE,PRE(TBL) !TABLE OF RECORD DATA
PTR LONG ! POINTER TO FILE RECORD
IREG STRING(35)
NREG SHORT
.
EJECT
CODE
ACTION# = ACTION !SAVE ACTION
OPEN(SCREEN) !OPEN THE SCREEN
SETCURSOR !TURN OFF ANY CURSOR
TBL:PTR = 1 !START AT TABLE ENTRY
NDX = 1 !PUT SELECTOR BAR ON TOP ITEM
ROW = ROW(?POINT) !REMEMBER TOP ROW AND
COL = COL(?POINT) !LEFT COLUMN OF SCROLL AREA
RECORDS# = TRUE !INITIALIZE RECORDS FLAG
CACHE(XRE:K,.25) !CACHE KEY FILE
IF ACTION = 4 ! TABLE LOOKUP REQUEST
NEWPTR = POINTER(XREG) ! SET POINTER TO RECORD
IF NOT NEWPTR ! RECORD NOT PASSED TO TABLE
SET(XRE:K,XRE:K) ! POSITION TO CLOSEST RECORD
NEXT(XREG) ! READ RECORD
NEWPTR = POINTER(XREG) ! SET POINTER
.
DO FIND_RECORD ! POSITION FILE
ELSE
NDX = 1 ! PUT SELECTOR BAR ON TOP ITEM
DO FIRST_PAGE ! BUILD MEMORY TABLE OF KEYS
.
RECORDS# = TRUE ! ASSUME THERE ARE RECORDS
LOOP !LOOP UNTIL USER EXITS
ACTION = ACTION# !RESTORE ACTION
ALERT !RESET ALERTED KEYS
ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
ACCEPT !READ A FIELD
IF KEYCODE() = REJECT_KEY THEN BREAK. !RETURN ON SCREEN REJECT KEY
IF KEYCODE() = ACCEPT_KEY | !ON SCREEN ACCEPT KEY
AND FIELD() <> ?POINT !BUT NOT ON THE POINT FIELD
UPDATE ! MOVE ALL FIELDS FROM SCREEN
SELECT(?) ! START WITH CURRENT FIELD
SELECT ! EDIT ALL FIELDS
CYCLE ! GO TO TOP OF LOOP
.
CASE FIELD() !JUMP TO FIELD EDIT ROUTINE
OF ?FIRST_FIELD !FROM THE FIRST FIELD
IF KEYCODE() = ESC_KEY | ! RETURN ON ESC KEY
OR RECORDS# = FALSEб ! OR NO RECORDS
BREAK !EXIT PROCEDURE
.
OF ?PRE_POINT!PRE POINT FIELD CONDITION
IF KEYCODE() = ESC_KEY! BACKING UP?
SELECT(?-1) !SELECT PREVIOUS FIELD
ELSE ! GOING FORWARD
SELECT(?POINT) !SELECT MENU FIELD
.
OF ?POINT !PROCESS THE POINT FIELD
IF RECORDS(TABLE) = 0 !IF THERE ARE NO RECORDS
CLEAR(XRE:RECORD) ! CLEAR RECORD AREA
ACTION = 1 ! SET ACTION TO ADD
GET(XREG,0) ! CLEAR PENDING RECORD
NEWPTR = POINTER(XREG) !SET POINTER TO NEW RECORD
DO FIRST_PAGE ! DISPLAY THE FIRST PAGE
IF RECORDS(TABLE) = 0 ! IF THERE AREN'T ANY RECORDS
RECORDS# = FALSE !INDICATE NO RECORDS
SELECT(?PRE_POINT-1) !SELECT THE PRIOR FIELD
.
CYCLE !AND LOOP AGAIN
.
CASE KEYCODE() !PROCESS THE KEYSTROKE
OF INS_KEY !INS KEY
CLEAR(XRE:RECORD) ! CLEAR RECORD AREA
ACTION = 1 ! SET ACTION TO ADD
GET(XREG,0) ! CLEAR PENDING RECORD
IF ~ACTION ! IF RECORD WAS ADDED
NEWPTR = POINTER(XREG) !SET POINTER TO NEW RECORD
DO FIND_RECORD !POSITION IN FILE
.
OF ENTER_KEY !ENTER KEY
OROF ACCEPT_KEY !CTRL-ENTER KEY
DO GET_RECORD ! GET THE SELECTED RECORD
IF ACTION = 4 AND KEYCODE() = ENTER_KEY !IF THIS IS A LOOKUP REQUEST
ACTION = 0 !SET ACTION TO COMPLETE
BREAK !AND RETURN TO CALLER
.
IF ~ERROR() ! IF RECORD IS STILL THERE
ACTION = 2 !SET ACTION TO CHANGE
IF ACTION THEN CYCLE. !IF SUCCESSFUL RE-DISPLAY
.
NEWPTR = POINTER(XREG) !SET POINTER TO NEW RECORD
DO FIND_RECORD !POSITION IN FILE
OF DEL_KEY !DEL KEY
DO GET_RECORD ! READ THE SELECTED RECORD
IF ~ERROR() ! IF RECORD IS STILL THERE
ACTION = 3 !SET ACTION TO DELETE
IF ~ACTION !IF SUCCESSFUL
N# = NDX ! SAVE POINT INDEX
DO SAME_PAGE ! RE-DISPLAY
NDX = N# ! RESTORE POINT INDEX
. .
OF DOWN_KEY !DOWN ARROW KEY
DO SET_NEXT ! POINT TO NEXT RECORD
DO FILL_NEXT ! FILL A TABLE ENTRY
IF FOUND ! FOUND A NEW RECORD
SCROLL(ROW,COL,ROWS,COLS,ROWS(?POINT)) ! SCROLL THE SCREEN UP
GET(TABLE,RECORDS(TABLE)) ! GET RECORD FROM TABLE
DO FILL_SCREEN ! DISPLAY ON SCREEN
.
OF PGDN_KEY !PAGE DOWN KEY
DO SET_NEXT ! POINT TO NEXT RECORD
DO NEXT_PAGE ! DISPLAY THE NEXT PAGE
OF CTRL_PGDN !CTRL-PAGE DOWN KEY
DO LAST_PAGE ! DISPLAY THE LAST PAGE
NDX = RECORDS(TABLE) ! POSITION POINT BAR
OF UP_KEY !UP ARROW KEY
DO SET_PREV ! POINT TO PREVIOUS RECORD
DO FILL_PREV ! FILL A TABLE ENTRY
IF FOUND ! FOUND A NEW RECORD
SCROLL(ROW,COL,ROWS,COLS,-(ROWS(?POINT))) ! SCROLL THE SCREEN DOWN
GET(TABLE,1) ! GET RECORD FROM TABLE
DO FILL_SCREEN ! DISPLAY ON SCREEN
.
OF PGUP_KEY !PAGE UP KEY
DO SET_PREV ! POINT TO PREVIOUS RECORD
DO PREV_PAGE ! DISPLAY THE PREVIOUS PAGE
OF CTRL_PGUP !CTRL-PAGE UP
DO FIRST_PAGE ! DISPLAY THE FIRST PAGE
NDX = 1 ! POSITION POINT BAR
. . .
FREE(TABLE) !FREE MEMORY TABLE
FREE(XRE:K) !FREE CACHE
RETURN !AND RETURN TO CALLER
SAME_PAGE ROUTINE !DISPLAY THE SAME PAGE
GET(TABLE,1) ! GET THE FIRST TABLE ENTRY
DO FILL_RECORD ! FILL IN THE RECORD
SET(XRE:K,XRE:K,TBL:PTR) ! POSITION FILE
FREE(TABLE) ! EMPTY THE TABLE
DO NEXT_PAGE ! DISPLAY A FULL PAGE
FIRST_PAGE ROUTINE !DISPLAY FIRST PAGE
FREE(TABLE) ! EMPTY THE TABLE
CLEAR(XRE:RECORD,-1) ! CLEAR RECORD TO LOW VALUES
CLEAR(TBL:PTR) ! ZERO RECORD POINTER
SET(XRE:K) ! POINT TO FIRST RECORD
LOOP NDX = 1 TO COUNT ! FILL UP THE TABLE
DO FILL_NEXT ! FILL A TABLE ENTRY
IF NOT FOUND THEN BREAK. ! GET OUT IF NO RECORD
.
NDX = 1 ! SET TO TOP OF TABLE
DO SHOW_PAGE ! DISPLAY THE PAGE
LAST_PAGE ROUTINE !DISPLAY LAST PAGE
NDX# = NDX ! SAVE SELECTOR POSITION
FREE(TABLE) ! EMPTY THE TABLE
CLEAR(XRE:RECORD,1) ! CLEAR RECORD TO HIGH VALUES
CLEAR(TBL:PTR,1) ! CLEAR PTR TO HIGH VALUE
SET(XRE:K) ! POINT TO FIRST RECORD
LOOP NDX = COUNT TO 1 BY -1 ! FILL UP THE TABLE
DO FILL_PREV ! FILL A TABLE ENTRY
IF NOT FOUND THEN BREAK. ! GET OUT IF NO RECORD
. ! END OF LOOP
NDX = NDX# ! RESTORE SELECTOR POSITION
DO SHOW_PAGE ! DISPLAY THE PAGE
FIND_RECORD ROUTINE !POSITION TO SPECIFIC RECORD
SET(XRE:K,XRE:K,NEWPTR) !POSITION FILE
IF NEWPTR = 0 !NEWPTR NOT SET
NEXT(XREG) ! READ NEXT RECORD
NEWPTR = POINTER(XREG) ! SET NEWPTR
SKIP(XREG,-1) ! BACK UP TO DISPLAY RECORD
.
FREE(TABLE) ! CLEAR THE RECORD
DO NEXT_PAGE ! DISPLAY A PAGE
NEXT_PAGE ROUTINE !DISPLAY NEXT PAGE
SAVECNT# = RECORDS(TABLE) ! SAVE RECORD COUNT
LOOP COUNT TIMES ! FILL UP THE TABLE
DO FILL_NEXT ! FILL A TABLE ENTRY
IF NOT FOUND ! IF NONE ARE LEFT
IF NOT SAVECNT# ! IF REBUILDING TABLE
DO LAST_PAGE ! FILL IN RECORDS
EXIT ! EXIT OUT OF ROUTINE
.
BREAK ! EXIT LOOP
. .
DO SHOW_PAGE ! DISPLAY THE PAGE
SET_NEXT ROUTINE !POINT TO THE NEXT PAGE
GET(TABLE,RECORDS(TABLE)) ! GET THE LAST TABLE ENTRY
DO FILL_RECORD ! FILL IN THE RECORD
SET(XRE:K,XRE:K,TBL:PTR) ! POSITION FILE
NEXT(XREG) ! READ THE CURRENT RECORD
FILL_NEXT ROUTINE !FILL NEXT TABLE ENTRY
FOUND = FALSE ! ASSUME RECORD NOT FOUND
LOOP UNTIL EOF(XREG) ! LOOP UNTIL END OF FILE
NEXT(XREG) ! READ THE NEXT RECORD
FOUND = TRUE ! SET RECORD FOUND
DO FILL_TABLE ! FILL IN THE TABLE ENTRY
ADD(TABLE) ! ADD LAST TABLE ENTRY
GET(TABLE,RECORDS(TABLE)-COUNT) ! GET ANY OVERFLOW RECORD
DELETE(TABLE) ! AND DELETE IT
EXIT ! RETURN TO CALLER
.
PREV_PAGE ROUTINE !DISPLAY PREVIOUS PAGE
LOOP COUNT TIMES ! FILL UP THE TABLE
DO FILL_PREV ! FILL A TABLE ENTRY
IF NOT FOUND THEN BREAK. ! GET OUT IF NO RECORD
.
DO SHOW_PAGE ! DISPLAY THE PAGE
SET_PREV ROUTINE !POINT TO PREVIOUS PAGE
GET(TABLE,1) ! GET THE FIRST TABLE ENTRY
DO FILL_RECORD ! FILL IN THE RECORD
SET(XRE:K,XRE:K,TBL:PTR) ! POSITION FILE
PREVIOUS(XREG) ! READ THE CURRENT RECORD
FILL_PREV ROUTINE !FILL PREVIOUS TABLE ENTRY
FOUND = FALSE ! ASSUME RECORD NOT FOUND
LOOP UNTIL BOF(XREG) ! LOOP UNTIL BEGINNING OF FILE
PREVIOUS(XREG) ! READ THE PREVIOUS RECORD
FOUND = TRUE SET RECORD FOUND
DO FILL_TABLE ! FILL IN THE TABLE ENTRY
ADD(TABLE,1) ! ADD FIRST TABLE ENTRY
GET(TABLE,COUNT+1) ! GET ANY OVERFLOW RECORD
DELETE(TABLE) ! AND DELETE IT
EXIT ! RETURN TO CALLER
.
SHOW_PAGE ROUTINE !DISPLAY THE PAGE
NDX# = NDX ! SAVE SCREEN INDEX
LOOP NDX = 1 TO RECORDS(TABLE) ! LOOP THRU THE TABLE
GET(TABLE,NDX) ! GET A TABLE ENTRY
DO FILL_SCREEN AND DISPLAY IT
IF TBL:PTR = NEWPTR ! SET INDEX FOR NEW RECORD
NDX# = NDX ! POINT TO CORRECT RECORD
. .
LOOP WHILE NDX <= COUNT ! FINISH BLANKING THE SCREEN
BLANK(ROW(?POINT),COL(?POINT),ROWS(?POINT),COLS(?POINT)) !BLANK A LINE
NDX += 1 ! INCREMENT NDX
.
NDX = NDX# ! RESTORE SCREEN INDEX
NEWPTR = 0 ! CLEAR NEW RECORD POINTER
CLEAR(XRE:RECORD) ! CLEAR RECORD AREA
FILL_TABLE ROUTINE !MOVE FILE TO TABLE
TBL:IREG = XRE:IREG
TBL:NREG = XRE:NREG
TBL:PTR = POINTER(XREG) ! SAVE RECORD POINTER
FILL_RECORD ROUTINE !MOVE TABLE TO FILE
XRE:NREG = TBL:NREG
FILL_SCREEN ROUTINE !MOVE TABLE TO SCREEN
SCR:IREG = TBL:IREG
GET_RECORD ROUTINE !GET SELECTED RECORD
GET(TABLE,NDX) ! GET TABLE ENTRY
GET(XREG,TBL:PTR) ! GET THE RECORD
(ant4)
MEMBER('ANT') MEN2 PROCEDURE SCREEN SCREEN PRE(SCR),WINDOW(6,25),AT(9,27),HUE(5,3)
ROW(1,1) STRING('+-{23}+')
ROW(2,1) REPEAT(4);STRING('¦<0{23}>¦') .
ROW(6,1) STRING('+-{23}+')
ROW(2,7) STRING('<130>выберите<0,0>год') ENTRY,USE(?FIRST_FIELD) ENTRY,USE(?PRE_MENU) MENU,USE(MENU_FIELD"),REQ
ROW(4,8) STRING('1. 1992 год')
ROW(5,8) STRING('2. 1993 год')
. .
EJECT
CODE
OPEN(SCREEN) !OPEN THE MENU SCREEN
SETCURSOR !TURN OFF ANY CURSOR
MENU_FIELD" = '' !START MENU WITH FIRST ITEM
IF CHOICE()=1 THEN MEM:PR=1 ELSE MEM:PR=2. !CALL SETUP PROCEDURE
LOOP !LOOP UNTIL USER EXITS
ALERT !TURN OFF ALL ALERTED KEYS
ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
ACCEPT !READ A FIELD OR MENU CHOICE
IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT
IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
UPDATE ! MOVE ALL FIELDS FROM SCREEN
SELECT(?) ! START WITH CURRENT FIELD
SELECT ! EDIT ALL FIELDS
CYCLE ! GO TO TOP OF LOOP
. !
CASE FIELD() !JUMP TO FIELD EDIT ROUTINE
OF ?FIRST_FIELD !FROM THE FIRST FIELD
IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
OF ?PRE_MENU !PRE MENU FIELD CONDITION
IF KEYCODE() = ESC_KEY ! BACKING UP?
SELECT(?-1) ! SELECT PREVIOUS FIELD
ELSE ! GOING FORWARD
SELECT(?+1) ! SELECT MENU FIELD
.
OF ?MENU_FIELD" !FROM THE MENU FIELD
EXECUTE CHOICE() ! CALL THE SELECTED PROCEDURE
MEN4 !
MEN4 !
. . .
(ant5)
MEMBER('ANT')
MEN4 PROCEDURE
SCREEN SCREEN PRE(SCR),WINDOW(10,36),AT(6,23),HUE(5,3)
ROW(1,1) STRING('+-{34}+')
ROW(2,1) REPEAT(3),EVERY(3);STRING('¦<0{34}>¦') .
ROW(3,1) STRING('¦<0{9},130>ведите<0>границы<0{10}>¦')
ROW(4,1) STRING('¦<0{12}>в<0>тыс<0>руб<0{13}>¦')
ROW(6,1) STRING('¦<0{4}>минимальную<0{19}>¦')
ROW(7,1) STRING('¦<0{4}>максимальную<0{18}>¦')
ROW(9,1) STRING('¦<0{34}>¦')
ROW(10,1) STRING('+-{34}+')
ROW(4,13) STRING('(')
COL(19) STRING('.')
COL(23) STRING('.)')
ENTRY,USE(?FIRST_FIELD)
ROW(6,19)ENTRY(@n_9),USE(MEM:NG),NUM,INS,HUE(0,3)rOW(7,19) ENTRY(@n_9),USE(MEM:VG),NUM,INS,HUE(0,3)
ENTRY,USE(?LAST_FIELD)
.
EJECT
CODE
OPEN(SCREEN) !OPEN THE SCREEN
SETCURSOR !TURN OFF ANY CURSOR
if choice()=1 then mem:god=1992 else mem:god=1993.!CALL SETUP PROCEDURE
DISPLAY !DISPLAY THE FIELDS
LOOP !LOOP THRU ALL THE FIELDS
ALERT !RESET ALERTED KEYS
ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
ACCEPT !READ A FIELD
IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT KEY
IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
UPDATE ! MOVE ALL FIELDS FROM SCREEN
SELECT(?) ! START WITH CURRENT FIELD
SELECT ! EDIT ALL FIELDS
CYCLE ! GO TO TOP OF LOOP
. !
CASE FIELD() !JUMP TO FIELD EDIT ROUTINE
OF ?FIRST_FIELD !FROM THE FIRST FIELD
IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
OF ?MEM:VG
MEN5
OF ?LAST_FIELD !FROM THE LAST FIELD
ACTION = 0 ! SET ACTION TO COMPLETE
RETURN ! AND RETURN TO CALLER
. .
(ant6)
MEMBER('ANT') MEN5 PROCEDURE SCREEN SCREEN PRE(SCR),WINDOW(8,31),AT(7,24),HUE(6,7)
ROW(1,1) STRING('+-{29}+')
ROW(2,1) REPEAT(6);STRING('¦<0{29}>¦') .
ROW(8,1) STRING('+-{29}+') ENTRY,USE(?FIRST_FIELD) ENTRY,USE(?PRE_MENU) MENU,USE(MENU_FIELD"),REQ
ROW(3,6) STRING('1. <147>уставный капитал'),HUE(6,7)
ROW(4,6) STRING('2. <145>страховые взносы'),HUE(6,7)
ROW(5,6) STRING('3. <145>страховые резервы'),HUE(6,7)
ROW(6,6) STRING('4. <145>страховые выплаты'),HUE(6,7)
. .
EJECT
CODE
OPEN(SCREEN) !OPEN THE MENU SCREEN
SETCURSOR !TURN OFF ANY CURSOR
MENU_FIELD" = '' !START MENU WITH FIRST ITEM
LOOP !LOOP UNTIL USER EXITS
ALERT !TURN OFF ALL ALERTED KEYS
ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
ACCEPT !READ A FIELD OR MENU CHOICE
IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT
IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
UPDATE ! MOVE ALL FIELDS FROM SCREEN
SELECT(?) ! START WITH CURRENT FIELD
SELECT ! EDIT ALL FIELDS
CYCLE ! GO TO TOP OF LOOP
. !
CASE FIELD() !JUMP TO FIELD EDIT ROUTINE
OF ?FIRST_FIELD !FROM THE FIRST FIELD
IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
OF ?PRE_MENU !PRE MENU FIELD CONDITION
IF KEYCODE() = ESC_KEY ! BACKING UP?
SELECT(?-1) ! SELECT PREVIOUS FIELD
ELSE ! GOING FORWARD
SELECT(?+1) ! SELECT MENU FIELD
.
OF ?MENU_FIELD" !FROM THE MENU FIELD
EXECUTE CHOICE() ! CALL THE SELECTED PROCEDURE
UK !
SVZ !
SR !
SVP !
. . .
MEMBER('ANT') MBO PROCEDURE SCREEN SCREEN PRE(SCR),WINDOW(6,32),AT(8,22),HUE(15,1) ROW(2,10) PAINT(1,17),HUE(14,1)
ROW(1,1) STRING('+-{30}+')
ROW(2,1) REPEAT(4);STRING('¦<0{30}>¦') . ROW(6,1) STRING('+-{30}+') ROW(2,10)STRING('<143>получение<0>данных')ENTRY,USE(?FIRST_FIELD) ENTRY,USE(?PRE_MENU) MENU,USE(MENU_FIELD"),REQ
ROW(4,5) STRING('1. <143>по <144>Российской <148>Федерации')
ROW(5,5) STRING('2. <143>по региону')
. .
EJECT
CODE
OPEN(SCREEN) !OPEN THE MENU SCREEN
SETCURSOR !TURN OFF ANY CURSOR
MENU_FIELD" = '' !START MENU WITH FIRST ITEM
LOOP !LOOP UNTIL USER EXITS
ALERT !TURN OFF ALL ALERTED KEYS
ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
ACCEPT !READ A FIELD OR MENU CHOICE
IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT
IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
UPDATE ! MOVE ALL FIELDS FROM SCREEN
SELECT(?) ! START WITH CURRENT FIELD
SELECT ! EDIT ALL FIELDS
CYCLE ! GO TO TOP OF LOOP
. !
CASE FIELD() !JUMP TO FIELD EDIT ROUTINE
OF ?FIRST_FIELD !FROM THE FIRST FIELD
IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
OF ?PRE_MENU !PRE MENU FIELD CONDITION
IF KEYCODE() = ESC_KEY ! BACKING UP?
SELECT(?-1) ! SELECT PREVIOUS FIELD
ELSE ! GOING FORWARD
SELECT(?+1) ! SELECT MENU FIELD
.
OF ?MENU_FIELD" !FROM THE MENU FIELD
EXECUTE CHOICE() ! CALL THE SELECTED PROCEDURE
MEN2 !
R !
. . .
(ant8)
MEMBER('ANT') GBO PROCEDURE SCREEN SCREEN PRE(SCR),WINDOW(6,38),AT(6,19),HUE(11,5)
ROW(1,1) STRING('+-{36}+')
ROW(2,1) REPEAT(4);STRING('¦<0{36}>¦') .
ROW(6,1) STRING('+-{36}+') ENTRY,USE(?FIRST_FIELD) ENTRY,USE(?PRE_MENU) MENU,USE(MENU_FIELD"),REQ
ROW(3,8) STRING('1. <128>аналитические таблицы')
ROW(4,8) STRING('2. <145>cписки по запросу')
. .
EJECT
CODE
OPEN(SCREEN) !OPEN THE MENU SCREEN
SETCURSOR !TURN OFF ANY CURSOR
MENU_FIELD" = '' !START MENU WITH FIRST ITEM
LOOP !LOOP UNTIL USER EXITS
ALERT !TURN OFF ALL ALERTED KEYS
ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
ACCEPT !READ A FIELD OR MENU CHOICE
IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT
IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
UPDATE ! MOVE ALL FIELDS FROM SCREEN
SELECT(?) ! START WITH CURRENT FIELD
SELECT ! EDIT ALL FIELDS
CYCLE ! GO TO TOP OF LOOP
. !
CASE FIELD() !JUMP TO FIELD EDIT ROUTINE
OF ?FIRST_FIELD !FROM THE FIRST FIELD
IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
OF ?PRE_MENU !PRE MENU FIELD CONDITION
IF KEYCODE() = ESC_KEY ! BACKING UP?
SELECT(?-1) ! SELECT PREVIOUS FIELD
ELSE ! GOING FORWARD
SELECT(?+1) ! SELECT MENU FIELD
.
OF ?MENU_FIELD" !FROM THE MENU FIELD
EXECUTE CHOICE() ! CALL THE SELECTED PROCEDURE
GBO1 !
MBO !
. . .
6. ОРГАНИЗАЦИЯ РАЗРАБОТКИ СИСТЕМЫ СБОРА ИНФОРМАЦИИ И АНАЛИЗА ДЕЯТЕЛЬНОСТИ И ОПРЕДЕЛЕНИЕ ЗАТРАТ НА РАЗРАБОТКУ ДАННОЙ СИСТЕМЫ.
6.1 Организационная часть.
Целью создания системы является автоматизация процесса обработки информации для деятельности страховой компании.
Система позволяет:
сократить время обработки необходимой информации по страховым организациям;
оперативно получать сведения о динамике экономических параметров страховых организаций;
эффективно работать непрограммирующему профессионалу в предметной области, получая всю необходимую информацию максимально оперативно.
Порядок выполнения разработки.
Шифр события | Содержание события | Шифр работы | Содержание работы | Трудоем-кость | Число исполнит. | Продолжитель- ность работы |
1 | Начало разработки | 1-2 | Разработка ТЗ | 6 | 2 | 3 |
2 | ТЗ разработано | 2-3 | Разработка структуры программы (для DESIGNER) | 2 | 1 | 2 |
3 | Структура разработана | 3-4 3-5 | Разработка алгоритма программы вывода аналитичес-кой таблицы Написание программы на DESIGNER | 6 6 | 2 2 | 3 3 |
4 | Алгоритм разработан | 4-6 | Написание программы вывода аналитичес-кой таблицы | 6 | 2 | 3 |
5 | Программа на DESIGNER написана | 5-7 | Сборка системы | 2 | 1 | 2 |
6 | Программа вывода таблицы написана | 6-7 | Сборка системы | id #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0in; padding-left: 0.08in; padding-right: 0in;">2 | 1 | 2 |
7 | Система собрана | 7-8 | Отладка системы | 4 | 2 | 2 |
8 | Система отлажена | 8-9 | Тестирова-ние | 2 | 2 | 1 |
9 | Система оттестиро-вана | 9-10 | Исправле-ние ошибок | 4 | 2 | 2 |
10 | Ошибки исправлены окончание работы |
ФИЛИАЛЫ ПО
РЕГИОНАМ
GBO (Menu) GBO2 (Menu) GBO1 (Menu) S (Other) (ANTB.CLA) AT1 (Other) (ANTB.CLA) AT2 (Other) (ANTB.CLA) AT3 (Other) (ANTB.CLA) SVREG (Menu) SVREG1 (Other) (ATB.CLA) SVREG2 (Other) (ATB.CLA) SVREG3 (Other) (ATB.CLA) SVINS (Menu) SVINS1 (Other) (ATB.CLA) SVINS2 (Other) (ATB.CLA) SVINS3 (Other) (ATB.CLA) MBO (Menu) MEN2 (Menu)
MEN4 (Form)
MEN5 (Menu) UK (Other) (ANTB.CLA)
SV2 (Other) (ANTB.CLA)
SR (Other) (ANTB.CLA)
SVP (Other) (ANTB.CLA)
R (Form) MEN2 (Menu) MEN4 (Form) MEN5 (Menu)
UK (Other) (ANTB.CLA)
SV2 (Other) (ANTB.CLA)
SR (Other) (ANTB.CLA)
SVP (Other) (ANTB.CLA) REG (Table)
1. ВВЕДЕНИЕ.
Указом Президента Российской Федерации от 10 февраля 1992 года номер 133 был образован Государственный страховой надзор Российской Федерации (Госстрахнадзор России). Создание специализированного государственного учреждения, контролирующего выполнение требований законодательства в сфере страхования, является фактом признания наличия в России действующего рынка страховых услуг, реальным подтверждением нацеленности государственной политики на формирование полноценных рыночных отношений.
В условиях рынка информационное обеспечение было и остается одним из важнейших критериев эффективности работы и вытекает из самой сущности страховых сделок. Страхование не является таким простым товаром, о котором каждый гражданин может составить правильное понятие. Деятельность страховых организаций покоится на основах, многие из которых трудны для восприятия и для компетентных и опытных предпринимателей.
Дело осложняется тем, что страховой договор заключается на продолжительное время со всеми вытекающими отсюда последствиями (о них будет сказано ниже), а также тем, что злоупотребления в страховом деле оказываются губительными не только для допускающего их предприятия, но они вообще колеблют доверие потребителя к страхованию. В силу этого в конце прошлого - начале нынешнего века во всех промышленно развитых странах были образованы органы страхового контроля, действующие в настоящее время как в виде самостоятельных государственных учреждений, так и виде структурных подразделений страховых компаний. Государство вмешивается в управление делами страхового предприятия настолько, насколько это требуется для интересов страхователей и общегосударственного благополучия. Для самих же страховых компаний, представляет интерес информация, связанная с состоянием страхового рынка. Кроме того защита от недобросовестного страхователя является одной из важнейших задач большинства страховых компаний.
На основании утвержденных 12 октября 1992 г. “Условий лицензирования страховой деятельности на территории Российской федерации” в настоящее время производится прием от страховых организаций документов, необходимых для получения лицензии. Помимо выдачи лицензий, осуществлятся контроль за страховыми тарифами, устанавливаются правила формирования и размещения страховых фондов и резервов, определяются формы учета и показатели отчетности по страховым операциям.
Для выполнения своих функций Госстрахнадзор России наделен правом проведения проверок достоверности представляемой страховыми организациями информации и соблюдения страхового законодательства, давать указания страховым организациям по устранению выявленных нарушений и в случае их невыполнения - принимать решение об отзыве лицензии. В отдельных случаях, предусмотренных законодательством, Госстрахнадзор России вправе принимать меры к прекращению деятельности страховой организации. Страховые же компании лишены тех возможностей воздействия на недобросовестных конкурентов и страховой рынок, которые предоставлены государством Росстрахнадзору. Поэтому они вынуждены вести собственные базы данных для осуществления контроля за ситуацией на рынке, пользуясь доступными для них, законными и не совсем законными, источниками информации.
Решать задачи контроля ситуации на рынке страхования, а также контроля дочерних структур и филиалов компании необходимо в кратчайшие сроки по вполне понятным причинам (нестабильность экономической ситуации, периодическая смена учредителей, названия компаний и проч.). Но эти действия связаны с обработкой огромного (с точки зрения человека, выполняющего эту работу вручную) объема информации : по одной компании насчитывается более десяти развернутых (от имени учредителя до аудита) показателей, которые необходимо проверить и учесть . А таких компаний на сегодняшний день насчитывается более двух с половиной тысяч. И это только те компании, которые уже имеют лицензию, либо пока просто зарегистрированы. Всего же компаний, занимающихся страховой деятельностью, порой без всякой лицензии неизмеримо больше. Естественно, не поддаются учету компании - “однодневки”, возникающие то здесь, то там. Но они не в состоянии оказать серьезного влияния на рынок в целом и поэтому отражения в контрольных цифрах они не нашли. Кроме того, количество таких компаний должно постепенно сойти на нет. Эта тенденция уже ясно просматривается в настоящее время. Несмотря на то, что часть организаций автоматически отсекается, объем данных остается крайне велик Таким образом работа оказалась немыслима без применения компьютерной техники.
Первым шагом на пути решения этой проблемы стала разработка базы данных в которую были занесены все компании, по которым существует возможность получения информации, а также данные по филиалам и контрагентам самой “организации” . По каждой компании в базе имеются все необходимые данные для работы с ней : название, организационно-правовая форма, юридический адрес, уставной фонд, экономические и другие данные. С помощью этой базы стало возможно очень быстро найти какой-либо показатель интересующей компании, например : виды страхования используемые в работе организации, правила страхования, поступления, выплаты, отчеты о финансовых результатах и проч. , а также посредством прикладных программ сводить определенные данные (необходимые например для годовых и других отчетов) в таблицы. Насколько разнообразны интересующие показатели, настолько разнообразны и аналитические таблицы. Часть этой работы была возложена на нас. Нашей задачей стало создание программы выводящей на печать сведения об изменении отдельных показателей деятельности страховых организаций, а также анализ показателей развития страховых организаций. Разработка программы велась на языке Clarion на котором была создана сама база данных.
Постоянно возрастающие объемы деятельности, ужесточающиеся требования к оперативности предоставления необходимой для управления информации и к ее достоверности настоятельно требуют объединения информационных подсистем, функционирующих в отделах и службах, в единую систему, дополненную необходимыми компонентами. В работе над обработкой информации участвуют локальные компьютеры - не входящие в локальную вычислительную сеть ПЭВМ, содержащие полную или частичную копию базы и программы ее использующие; серверы в сети и станции в сети - входят компонентами в ЛВС, содержат полную копию базы и выполняют программы, использующие базу.Однако, при дальнейшем росте объемов деятельности приемлимые показатели работы информационной системы не могут быть достигнуты на аппаратной базе, включающей только персональные компьютеры (пусть даже и самые мощные). Есть несколько альтернативных вариантов построения вычислительной системы. В частности один из них использует страховая компания АСКО.
Для эффективной деятельности любой организации необходима четкая структуризация компании. На следующем листе представлена структура управления аппарата компании, а также структура ассоциации, в которую входит головная организация. Каждое подразделение занято решением своих задач, необходимых для слаженной работы организации.
Отдел разработки программных средств, информационного и технического обеспечения, который является структурным подразделением организации, способствует созданию и внедрению автоматизированной системы управления, средств вычислительной техники, связи и оргтехники и обеспечивать координацию работ на всех уровнях управления.
2. СТРАХОВАНИЕ. РЕГУЛИРОВАНИЕ СТРАХОВОГО ДЕЛА.
Как уже говорилось, с середины 1992 года страхование в России получило глобальное значение. Начал складываться реальный рынок страховых услуг. Каждый сегмент рынка должен обладать соответствующим информационным обеспечением для нормального развития в особой степени это относится к сложной и специфической отрасли - страхованию.
Сложность этой отрасли заключается в том, что страховой договор заключается обычно на продолжительное время. Между моментом уплаты страховой премии, т.е. оплатой услуги страховщика, и моментом выплаты страхового возмещения, т.е. выполнением страховщиком своих обязательств по договору страхования, проходит обычно достаточно длительный срок. И в течении всего этого срока деятельность страховщика скрыта от страхователя. Между тем необходима твердая, прочная уверенность в том, что страховая организация, получая премии от страхователей, будет в состоянии выполнить свои обязательства даже через десятки лет, как это, например, имеет место в страховании жизни и страховании ответственности.
Понятно, что неосведомленному в страховом деле страхователю очень трудно защитить свои интересы.
Большие проблемы возникают при злоупотреблении в страховом деле. Конкуренция недобросовестных страховщиков может повредить самому солидному страховому предприятию. Отсюда ясно, что в точной и достоверной информации заинтересованы не только страхователи, но и сами страховщики, поскольку эта информация будет защищать их от недобросовестной конкуренции нежизнеспособных предприятий. Последствия ошибок, неумелого или недобросовестного ведения дела сказываются в страховании только по прошествии ряда лет. Это затрудняет борьбу с недобросовестными конкурентами для солидных предприятий, а с другой стороны, дает возможность вводить в обман страхователей в период этого скрытого разложения.
2.1 Контроль за состоянием страхового рынка.
В более чем столетней практике регулирования страхового дела принято различать три системы такого регулирования: систему публичности, нормативную систему и систему материального контроля.
Система публичности требует того, чтобы страховые предприятия публиковали свои отчеты по установленной форме и представляли их государственным органам. Они обязаны также представлять свой бизнес-план и позднейшие изменения в нем. Недостатки этой системы в том, что даже при самых детальных требованиях в отношении отчетности невозможно составить достаточно ясное представление о положении дел в предприятии, даже для специалиста, не говоря уже об обычном страхователе. Для этого необходимо знание общих технических, юридических и экономических основ предприятия в такой подробности, в какой невозможно включать их в публикуемый отчет. И кроме того, если при системе публичности и откроются злоупотребления, то этим будут защищены интересы только тех лиц, которые еще предполагали заключить страхование, но не тех, которые уже заключили его.
При нормативной системе для открытия предприятия и ведения дела существуют установленные законом требования, имеющие целью не допустить появление несолидных, спекулятивных предприятий. При нормативной системе интересы страхователей охраняются в большей степени, чем при системе публичности. Однако если система публичности удобна тем, что она не сковывает свободного развития страхования, нормативная система этого преимущества не имеет. Разнообразие и постоянно развивающиеся отношения в страховом мире не могут, без ущерба для их развития, быть регулируемыми и застывшими нормами. Нормативная система таит в себе ту опасность, что она может тормозить развитие и творческую деятельность в области страхования. Для того, чтобы избежать этого, можно ограничиваться при установлении законодательных норм несколькими общими принципами, но в таком случае не будет достигнута основная задача нормативной системы обеспечение интересов страхователей.
Лучше обеспечиваются интересы страхователей при третьей системе - системе материального контроля. Здесь осуществляется контроль за страховыми предприятиями не только с формальной, но и с материальной. Государственные органы имеют прежде всего целью предотвратить возможность возникновение нежизнеспособных предприятий путем рассмотрения и исследования проектов бизнес-планов по существу, а не только с точки зрения согласия с формальными требованиями. В отношении действующих предприятий государственные органы должны наблюдать за ходом дел, следить за тем, чтобы не допускались злоупотребления, а также губительные ошибки в ведении дела. Государство вмешивается в управление делами страхового предприятия настолько, насколько это требуется для интересов страхователей и общегосударственного благополучия.
В тоже время негласный контроль со стороны других страховых организаций, позволяет последним совершенствовать свою работу, искать новые пути развития и прогнозировать ситуацию на рынке страховых услуг. Даже пользуясь общедоступными источникамими можно получать пригодные для анализа данные и успешно использовать их.
В целом законодательство не соответствует реально складывающимся отношениям людей в современной социально-экономической ситуации. Большинство ключевых вопросов в деятельности страховщиков в условиях рынка, вплоть до недавнего времени в силу объективных причин не разрабатывались отечественной страховой наукой и выпадали из сферы интересов специалистов-практиков. При наличии в настоящее время многих сотен страховых компаний лишь немногие из них реально имеют специалистов, обладающих достаточной компетенцией для надлежащего осуществления собственно страховых операций.
На начальном этапе эти объективные причины, безусловно, будут накладывать заметный отпечаток на страховую деятельность в России. Однако становление страховых компаний в нашей стране идет бурными темпами, и постоянно и постоянно изменяющаяся ситуация на страховом рынке требует соответствующего механизма отслеживания и регулирования происходящих процессов.
2.2 Особенности страхового рынка России.
До проведения рыночных реформ (конец 80-х - начало 90-х годов) в России, как известно, существовала монополия государства на страхование как систему отношений по защите имущественных интересов физических и юридических лиц при наступлении страховых случаев. На практике управленческое вмешательство государства в сферу страхования оборачивалось в ряде случаев подрывом его основ, что выражалось в безвозмездном изъятии страховых резервов (это касалось резервных фондов по страхованию имущества сельскохозяйственных предприятий) либо зачислении страховых ресурсов в доходы государственного бюджета (это касалось резерва взносов по долгосрочному страхованию жизни) с отнесением их на увеличение внутреннего государственного долга.
В последние годы произошли радикальные изменения в подходах государства к развитию страхового дела. Стали складываться новые условия деятельности страховых компаний.
Развитие рыночных отношений в экономике России вызвало, с одной стороны, появление многообразия форм собственности и видов предпринимательской деятельности, что предопределило более высокий уровень потенциальных потребностей в страховании, а с другой, создало реальные предпосылки для демонополизации страхового дела, организации новой системы страхования и формирования адекватного ей страхового рынка. Потребность в нормальном развитии страховой деятельности в условиях действия рыночных законов сделали неизбежным отмирание административных способов управления страховым делом. На смену ему стало утверждаться государственное регулирование страховой деятельности путем установления определенных правил, соблюдение которых обязательно для участников страхования.
Так, в основе страхования в России лежат требования по :
- соблюдению всеми участниками страхования законодательства о страховании, обеспечению защиты прав и интересов страхователей, страховщиков и государства;
- выполнению участниками страхования, особо это касается страховщиков, конкретных обязательств по договорам страхования;
- содействию появления на страховом рынке страховщиков, имеющих прочную финансовую устойчивость, и пресечению деятельности недобросовестных страховых компаний, которые могут нанести вред страховому делу и ущерб интересам страхователей;
- созданию условий для здоровой конкуренции на страховом рынке, эффективного развития страховых услуг, повышения культуры страхования и его престижа.
И это - в интересах прежде всего самих страховщиков. Страховое дело больше, чем другие отрасли экономики, нуждается в доверии клиентов к своим страховщикам. Лучший агитатор за доверие к страхованию есть само страхование, его привлекательность.
Вместе с тем механизм и степень регулирования страховой деятельности не могут оставаться всякий раз в каком-то застывшем, неизменном состоянии. В зависимости от общей ситуации в экономике и состояния страхового рынка, этапов его развития регулирующие инструменты могут быть разными как по времени применения в отдельно взятой стране, так и в сравнении с другими государствами. В той или иной степени методы регулирования могут разниться, как разнятся сами страховые рынки. В настоящее время страховым компаниям и контролирующим органам предоставлены все возможности гибкого взаимодействия для того, чтобы добиться соответствующей законодательной базы для дальнейшего успешного развития страхового рынка.
Если обратиться к истории страхования в России, то система регулирования страховой деятельности зародилась здесь еще в середине 1894 года. Затем в связи с введением монополии государства на страхование, эта деятельность была на долгие годы прервана. Сегодня страховое регулирование снова возрождается и приобретает новое качество.
2.3 Основные показатели состояния страхового рынка (текущая ситуация, тенденции).
По состоянию на 1 января 1994 года в Росстрахнадзоре в реестр включено более двух с половиной тысяч страховщиков (имеющих лицензии на право проведения страховой деятельности) с различными организационно-правовыми формами, из которых около 50% приходится на долю акционерных обществ закрытого типа. Следует отметить, что подавляющее большинство компаний действует на страховом рынке менее года (1240), а более двух лет - всего лишь около 5%.
Здесь следует обратить внимание на то обстоятельство, что около 70% страховых компаний, обладая уставным капиталом до 100 млн.рублей, не имеют возможности принимать на страхование сколько-нибудь серьезные страховые риски, и лишь 4% компаний, имея уставный капитал, превышающий 1000 млн.руб. могут их брать на себя.
Однако за последнее время наблюдается тенденция к появлению на страховом рынке компаний уставный капитал которых составляет нескольких, а то и десятков миллиардов рублей, что свидетельствует о том, что российские предприниматели стали понимать, что такое страхование.
К другой из особенности развития нашего страхового рынка можно отнести то, что большинство страховых компаний сформировались и действуют как многоотраслевые организации. Наибольший интерес для страховщиков представляет страхование различного имущества (из 938 страховщиков, представивших статотчет за 1994 год, 669 компаний предлагают эти виды страхования), около 800 фирм занимаются проведением личного страхования и 660 - страхованием различных видов ответственности. В меньшей степени пока представлены страховщики в обязательном, особенно медицинском страховании (130) и перестраховании.
Несмотря на инфляционные процессы, проходящие в стране, за последнее время наблюдается тенденция к увеличению числа страхователей и в связи с этим к росту поступлений страховой премии. Так, если совокупная страховая премия за 1994 год составила около 1 трлн. 109,1 млрд. рублей, то в первом квартале т.г. 924 млрд.рублей.
Структура поступающей страховой премии показывает, что в последнее время наблюдается и некоторое повышение интереса населения и предпринимателей к проведению страхования жизни: Так, доля личного страхования в первом квартале т.г. повысилась с 44 процентов в 1994 году до 55 процентов. В тоже время, снизилось с 28% в 1994 году до 22% в первом квартале т.г. поступление премии по имущественным видам страхования. В первую очередь, это связано с переоценкой основных фондов предприятий, проведенной по состоянию на 1 января прошлого года, в результате которой стоимость фондов возросла в несколько десятков раз, что, естественно, повлекло за собой увеличение страховой суммы и страхового взноса, что не каждому предприятию по карману. Отрадным также является и снижение за этот период более чем на 10 пунктов доли страхования ответственности по кредитным операциям в общем объеме поступления страховой премии, что свидетельствует о более взвешенном подходе страховщиков к принятию рисков и накоплению определенного опыта в проведении страховых операций.
По-прежнему сохраняется чрезвычайно значительная дифференциация компаний по объему собираемых платежей, Так, за 1994 год на долю 50 крупнейших компаний приходится 53% всего объема страховых поступлений, при этом страховые фирмы, входящие в группы Росгосстраха, Ингосстраха и АСКО, обеспечили получение 42% совокупной премии и осуществили 39,3% всех страховых выплат.
В то же время 64% общего числа действующих компаний имели годовой сбор страховой премии до 5000 млн. рублей и лишь полпроцента страховщиков обеспечили за год поступление по 200 и более млрд. рублей страховых платежей. Эти же тенденции пока продолжают сохраняться и в этом году.
Характеризуя деятельность компаний по страховым выплатам, следует отметить, что за последнее время здесь стали наблюдаться положительные тенденции. Если ранее страховщик при наступлении страхового случая принимал, если можно так выразиться, все меры для того, чтобы не произвести или затянуть (с учетом инфляции) выплату, то в последнее время, понимая, что страхователи от таких компаний начинают отворачиваться, большинство страховщиков стали удовлетворять претензии более оперативно. Так, если за 1994 год страховые выплаты составили 653 млрд.рублей или 50% к поступившей премии, то за первый квартал т.г. выплаты превысили 60% (600 млрд.рублей), причем особенно эта тенденция прослеживается по личному страхованию (56,5% от всех выплат в первом квартале т.г. против 47% за 1994 г., а с учетом обязательного страхования, в котором преобладает личное страхование, этот показатель превысил 80% в т.г., против 58% в 1994 г.) Диаграмма соотношения выплат и премий по некоторым видам страхования показана на следующем листе.
2.4 Закон Российской Федерации "О страховании" и нормативные документы. Союзы страховщиков.
Основополагающим актом, призванным регулировать страховые отношения, юридически обеспечивающего предпосылки функционирования рынка страховых услуг, упорядочивающего деятельность страховщиков, является Закон РФ "О страховании". Появление этого Закона было вызвано переходом России на рыночные отношения, которые способствовали появлению множества хозяйствующих субъектов, заинтересованных в обеспечении защиты своей предпринимательской деятельности, своего имущества и своих доходов от рыночных непредвиденных ситуаций. Закон стал тем нормативным документом, который позволил определить сферу страхования и механизм регулирования страховой деятельности на внутреннем страховом рынке. На законодательном уровне впервые были определены понятия форм страхования, видов страхования, те механизмы, которые проявляются в процессе страхования. Законом определены объекты страхования, субъекты страхового рынка их полномочия. Был определен механизм обеспечения финансовой устойчивости страховых компаний. Законодательно утвержден статус государственного органа призванного осуществлять надзор за страховой деятельностью с тем, чтобы всеми участниками страхового рынка соблюдались требования страхового законодательства.
Но страховой рынок России развивается настолько динамично, что сразу после начала действия Закона "О страховании" возникли новые задачи которые необходимо было решать оперативно и которые не могли быть решены в рамках действующего законодательства. Частично эти задачи могли быть решены нормативными актами Федеральной службы России по надзору за страховой деятельностью, являющиеся также источником страхового права. Нестабильное положение в экономике и трудности становления страхового рынка побудили страховщиков активно объединяться в союзы с целью защиты своих интересов и координации деятельности. Для упорядочения этого процесса Федеральной службой было создано "Положение о государственной регистрации объединений страховщиков". Многие страховые компании входят в финансово-промышленные группы. Это помогает им справляться с текущими трудностями. К тому же Законодательство запрещает страховым компаниям ведение прочей хозяйственной деятельности, кроме непосредственно страхования. Таким образом подобный симбиоз позволяет выживать и получать прибыль.
Для страховых компаний в настоящее время введен довольно жесткий ценз уставного фонда и резервирования. Пробел в проработке законодателем системы страховых резервов требовал принятия от специалистов определенных мер. В соответствии с этой задачей созданы "Правила формирования страховых резервов по видам страхования иным, чем страхование жизни". Для регулирования страхового рынка необходим четко налаженный контроль за деятельностью страховых организаций. В контексте этого направления разработаны “Условия лицензирования страховой деятельности”, “План счетов бухгалтерского учета финансово-хозяйственной деятельности страховых организаций”, “Формы статистической отчетности”, “Положение о порядке дачи предписания, ограничения, приостановления и отзыва лицензии на осуществление страховой деятельности”. Не менее важной задачей, чем вышеперечисленные, на современном этапе развития страхового рынка является защита прав потребителей страховых услуг. Данная проблема может решаться в нескольких направлениях и, в частности, с помощью укрепления финансовой устойчивости самого страховщика. Эту задачу призваны решать такие документы как “Методика расчета нормативного размера соотношения активов и обязательств страховщиков”, “Правила размещения страховых резервов”, “Методика расчета тарифных ставок по массовым рисковым видам страхования”. Конечно, обозначенные выше пунктирно проблемы правового характера, существующие на современном этапе, не носят исчерпывающего характера и требую дальнейшего практического разрешения.
2.5 Росстрахнадзор. Положение о Росстрахнадзоре. Структура, права, обязанности, функции.
Для осуществления Государственного надзора за страховой деятельностью на территории Российской Федерации Указом Президента Российской Федерации была создана Федеральная служба России по надзору за страховой деятельностью (Росстрахнадзор), которая является центральным органом федеральной исполнительной власти, и подчиняется Правительству Российской Федерации, действуя на основании утвержденного им Положения.
Положение о Федеральной службе России по надзору за страховой деятельностью принятое в апреле 1993 года дополненное и частично измененное в октябре 1994 года устанавливает права и обязанности Росстрахнадзора, а также его функции и задачи.
Росстрахнадзор в пределах установленной Положением компетенции осуществляет регулирование единого страхового рынка в Российской Федерации на основе установления общих требований по лицензированию и ведению государственного реестра страховых организаций, контролю за обеспечением финансовой устойчивости страховщиков, учету и отчетности , методологии страхования, межотраслевой и межрегиональной координации по вопросам страхования. Росстрахнадзор в своей деятельности руководствуется Конституцией Российской Федерации, постановлениями и распоряжениями Президента Российской Федерации, постановлениями и распоряжениями Правительства Российской Федерации, а также существующим положением.
Главной задачей Росстрахнадзора является обеспечение соблюдения всеми участниками страховых отношений требований законодательства Российской Федерации о страховании в целях эффективного развития страховых услуг, защиты прав и интересов страхователей, страховщиков и государства.
В пределах установленной компетенции Росстрахнадзором осуществляется государственное регулирование страховой деятельности на основе установления общих требований по лицензированию и ведению государственного реестра страховых организаций, инвестиционной деятельности, обеспечению финансовой устойчивости, организации бухгалтерского и статистического учета и отчетности страховых организаций, стандартизации условий и тарифов по массовым видам страхования, другим направлениям страховой деятельности. К числу основных функций Росстрахнадзора относятся выдача лицензий на осуществление страховой деятельности и ведение единого государственного реестра страховщиков и объединений страховщиков, а также реестра страховых брокеров. Росстрахнадзор должен также осуществлять контроль за обоснованностью страховых тарифов и обеспечение платежеспособности страховщиков, устанавливает правила формирования и размещения страховых резервов, показатели и формы учета страховых операций и отчетности страховой деятельности, разрабатывает и утверждает нормативные и методические документы по вопросам страхования, отнесенным к его компетенции.
Как контролирующий орган Страховой надзор России имеет право проводить проверки соблюдения страховщиками законодательства о страховании и проверки достоверности представляемой отчетности и информации. При выявлении нарушений страховщиками требований законодательства, а также неисполнения ими обязательных рекомендаций, указаний и нормативных документов Страховой надзор имеет право давать страховщикам предписания по устранению таких недостатков, а в случае невыполнения этих предписаний приостанавливать либо ограничивать действие лицензии таких страховщиков впредь до устранения выявленных нарушений либо принимать решение об отзыве лицензии.
При необходимости Росстрахнадзор имеет право обращаться в ар-
битражный суд с исками о ликвидации недобросовестных страховщиков при неоднократном нарушении последними законодательства Российской Федерации, а также организаций и предприятий, осуществляющих страхование без лицензии.
В условиях недостатка специалистов и отсутствия единой системы подготовки кадров для страховых организаций важным является право Страхового надзора участвовать в экспертизе учебных программ по страхованию в высших и средних специальных учебных заведениях, а также в специализированных организациях по подготовке и повышению квалификации кадров для страховых организаций.
В целях усиления надзора за деятельностью страховщиков на территории России Правительством было принято решение о создании 30 территориальных органов страхового надзора, которые обладают практически всеми правами и обязанностями Росстрахнадзора, за исключением функций по выдаче лицензий и даче предписаний о приостановлении или отзыве лицензий, и обращению в суд о ликвидации страховщика в случае нарушения ими действующего законодательства.
Вероятно, со временем, по мере накопления опыта и развития страхового законодательства функции и права территориальных органов страхового надзора могут быть расширены, в частности, в вопросах выдачи лицензий компаниям с крайне ограниченной сферой и объемом деятельности.
3. РАБОТА С ИНФОРМАЦИЕЙ. НЕОБХОДИМОСТЬ БАЗЫ ДАННЫХ. СТРУКТУРА БАЗЫ ДАННЫХ.
“Организация” работает с большим количеством различной информации, относящейся к деятельности страховых компаний. Очевидно, что эту информацию невозможно оперативно обрабатывать вручную, поэтому в своей работе используются персональные компьютеры и прикладные программы, существенно улучшающие работу организации.
В основе большинства современных деловых и прикладных программ лежит обработка данных. Поэтому любая такая программа должна уметь выполнять, в том или ином виде, три основные функции : 1.Ввод новых данных;
2. Доступ к уже существующим данным;
3. Поиск и анализ данных (составление отчетов ).
Данные, которые накапливает и обрабатывает программа, должны быть четко структурированы. Совокупность всей накопленной информации составляет базу данных. Ввод данных представляет собой заполнение информацией структур базы данных. Доступ к данным необходим для просмотра информации и внесения изменений. Последнее нужно для исправления ранее допущенных ошибок и поддержания актуальности данных.
Функция запроса по данным должна определять основные преимущества организации данных на компьютере от традиционно ручных методов. Программа, выполняя запрос по данным, просматривает и отыскивает отдельные части существующей информации, значительно повышая не только скороcть, но и качество этой операции, так как компьютер, в отличие от человека, не может отвлечься, расслабиться и т.д. Эта функция используется практически при каждом обращении к базе данных. Время от времени обычно появляется необходимость обобщить накопленную в базе данных информацию, например, составить отчет. Составление отчета отличается от запроса по данным в двух отношениях. Во-первых, отчет охватывает не часть, информации, а всю ее целиком. Во-вторых, при получении отчета данные, как правило, обрабатываются. Обработка представляет собой анализ информации, который может быть и очень простым, и очень сложным.
Используемая в настоящее время база данных включает в себя сведения о страховых компаниях получивших, как правило, лицензию на право страховой деятельности и о которых собрана какая-либо информация. Таких компаний на сегодняшний день насчитывается около двух с половиной тысяч. Для выполнения своих функции полного информационного обеспечения необходимо контролировать многие показатели страховых организаций, что является очень трудоемкой операцией. С помощью базы данных этот процесс можно существенно облегчить, так как поиск необходимых показателей происходит почти мгновенно.
Программа обработки и сортировки данных способна обеспечить поиск по следующим атрибутам:
- по названию компании
- по адресу компании
- по всем номерам лицензий
- по руководителям
- по учредителям
- по адресам учредителей
- по регистрационным номерам.
По каждой компании выдается следующая информация: краткое и полное название, организационно-правовая форма, юридический адрес, телефоны, уставной фонд, поступление документов и наличие иностранного капитала. А также в виде меню:
- виды страхования:
правила страхования
виды деятельности
- учредители
- руководители
- причина отказа
- номера предыдущих лицензий
- предыдущие входные номера
- поступления, выплаты
- отчет за предыдущий год
баланс страховой организации ( актив, пассив )
отчет о финансовых результатах и их использование (финансовые результаты, использование прибыли, платежи в бюджет, затраты и расходы).
приложение к балансу страховщика ( движение фондов, движение заемных средств, дебиторская и кредиторская
задолженность , наличие и движение основных средств, финансовые вложения )
отчет о платежеспособности
отчет о размещении страховых резервов
аудит.
Оценивать достоинства и недостатки данной базы рано, так как она еще не закончена и находится в процессе доработки. Периодически появляется необходимость дополнить базу. Однако, сказать о важнейших показателях качества можно уже сейчас.
Надежность работы базы довольно высока, однако если при запросе машины вводится неверное описание требуемого предмета (название города, номер лицензии и проч.), то на поиск несуществующего объекта тратится очень много времени, и если при этом нажимать на клавиши клавиатуры, машина может зависнуть.
Эффективность работы базы оставляет желать лучшего. И это не ошибки программиста, а технические возможности языка Clarion. Быстродействие работы существующих баз данных напрямую зависит от быстродействия работы вычислительной машины, и увеличить его хотя бы на порядок программным путем практически невозможно.
Так как основная база данных выполнена на языке Clarion, то программа анализа отдельных показателей развития страховых организаций, также выполнена на Clarion. Кроме того, Clarion является результатом развития программного обеспечения, предназначенного для автоматизации создания прикладных программ. В том или ином виде подобные инструментальные средства бесспорно присутствуют во многих известных пакетах, но, бесспорно, в пакете Clarion они представлены наиболее логично и полно. Использование утилиты Designer соответствует технологии WYSIWYG (What You See Is What You Get - что увидишь, то и получишь), что несомненно очень удобно. Посколько пакет Clarion нет необходимости приобретать для данной разработки, то стоимость ее не увеличивается дополнительно.
Программное обеспечение.
В работе широко используются различные программные продукты, начиная от простейших текстовых редакторов, и заканчивая сложными издательскими системами и системами управления базами данных.
Машбюро, секретари и практически все работники используют в своей работе текстовый редактор Word for Windows 6.0
Имеются средства печати документа в форматках, это необходи-
мо при подготовке документов в соответствии с ЕСКД и ЕСПД.
Иногда возникают ситуации, когда необходимо воспользоваться издательской системой Aldus Page Maker . Возможности этого пакета очень широкие. Перечислим некоторые основные возможности Page Maker:
- уменьшение изображения
- изменение расположения страниц
- независимые линейки X и Y
- поворот текста и другое более сложное полиграфическое оформление
- контроль орфографии
- импорт текста
- импорт графических файлов
- многосторонняя обработка графики
- универсальное обеспечение вывода
- возможность работы в сетях Net Were.
И это только основные возможности данного программного продукта, всего же их неизмеримо больше.
Для работы с базами данных используется пакет Clarion, а также пакет Clipper которые уже были упомянуты ранее.
Практически на все машинах установлена 6.2 версия MS-Dos и четвертая версия Norton Commander.
Перечисление всех остальных программных продуктов не имеет смысла, так как в основном - это стандартный набор программ, используемый на каждом рабочем месте оператора ЭВМ.
Hardware.
Отдел разработки программных средств, информационного и технического обеспечения использует в своей работе различные вычислительные машины и оргтехнику.
Вычислительные машины в основном изготовлены фирмой IBM, а также есть машины изготовленные фирмой ACER.
Часть вычислительных машин перечислена ниже:
IBM PC/AT - 386/387 DX
тактовая частота 40 MHz видеокарта VGA - 1 Мb SIMM - 4 x 1 Mb
Винчестер - 420 Mb;
В качестве серверов и рабочей станции работают машины:
станция:
IBM VALUE POINT - 486 DX2
тактовая частота 66 MHz
видеокарта SVGA - 1 Mb
ОЗУ - 4 Mb
Винчестер - 1 G;
сервер:
IBM VALUE POINT - 486 DX2
тактовая частота 66 MHz
видеокарта SVGA - 1 Mb
ОЗУ - 16 Mb
Винчестер - 1G;
VIST NET SERVER
PENTIUM-90;
NoteBook:
IBM PC/AT 486 SX
тактовая частота 33 MHz видеокарта SVGA - 1Мb
ОЗУ - 4 Mb
Винчестер - 240Mb
Печатающие устройства отдела представлены матричными принтерами:
EPSON FX-1000
EPSON LX-100
лазерными принтерами:
HEWLETT PACKCARD Laser Jet 4
HEWLETT PACKCARD Laser Jet 4 L
HEWLETT PACKCARD Laser Jet 5 P.
Из внешних устройств также можно перечислить следующие:
стриммер Conner Tape * Stor for IBM 250 Mb
модем Zyxel 1496 E+.
Часть машин объединена в локальную сеть включающую в себя 8 машин из которых два сервера и шесть станций. Пропускная способность сети 10 Mb/с. Глобальная сеть строится на основе городской телефонной сети.
Серверы оборудованы источниками бесперебойного питания американской фирмы APC - American Pover Conversion, которые могут поддерживать работу машины при исчезновении сетевого напряжения в течении 57 минут.
В своей работе широко используются различные программные продукты, начиная от простейших текстовых редакторов, и заканчивая сложными издательскими системами и системами управления базами данных.
Для работы с базами данных используется пакет Clarion, а также пакет Clipper. Clarion является основным программным продуктом, на котором создана база данных .
4. СLARION И ЕГО УТИЛИТЫ.
CLARION - это система управления базами данных, которая ориентирована как на конечных пользователей ПЭВМ, так и на опытных программистов. Разработчики пакета CLARION, не отказываясь от традиционных методов и средств программирования, ориентировались на планомерное и целенаправленное повышение эффективности и возможностей этих методов и средств. Новый пакет вобрал в себя все самое лучшее из современных языков программирования и систем управления базами данных.
Создатели пакета, отдавая себе отчет в том, что и без того большое количество средств уже давно используется при создании программ обработки данных, предложили новый, гибкий и мощный инструмент, сохраняющий старые возможности, но дополненные современной технологией.
Разработчиками Clarion был создан только минимальный набор команд и функций, необходимый для программирования. Т.е. традиционный способ написания программы, путем последовательного описания алгоритма с помощью команд и функций сохранился, но реализован не в таком объеме как в языке Clipper или в каком либо другом языке программирования. Основные же усилия разработчиков были направлены на создание очень удобных и с большими возможностями утилит встроенных программных средств, позволяющих программисту проектировать программу и описывать данные непосредственно на экране компьютера, используя развитую систему меню и подсказок.
Clarion Professional Developer - это совокупность интерактивных программ ( утилит ), работающих в единой среде и используемых на различных этапах разработки приложения. Утилиты могут запускаться из главного меню системы или вызываться друг из друга по мере необходимости.
Основу инструментальной среды составляет язык программирования - CLARION. Классическая схема разработки программ на языке высокого уровня предполагает подготовку исходного текста, трансляцию, отладку и сборку готовой программы. В среде Professional Developer эта последовательность реализуется утилитами Editor, Compiler, Processor, Crossrefer, Translator.
Утилита Editor используется для подготовки исходного текста программы на языке Clarion. Прежде всего Editor - это хороший двуоконный экранный редактор, предоставляющий разработчику современные средства для создания и модификации исходного кода.
Отличительной особенностью Editor является возможность преобразования языковых описаний экранных форм и структур отчетов в визуальную форму представления. В данном режиме разработчик может выполнять модификацию соответствующих объектов программы с последующим получением исправленного кода. Переход из одной формы редактирования в другую может выполняться многократно.
Утилита Compiler считывает исходный код программы, проверяя на корректность и преобразует его в компактный псевдокод (файлы с расширением .PRO), используемый для последующей отладки. Для устранения ошибок, выявленных при компиляции, из утилиты Compiler вызывается Editor, который устанавливается на ошибочную строку в соответствующем модуле приложения, последовательно предлагая все ошибочные конструкции для редактирования. Повторная компиляция требуется только для ошибочных модулей.
Интерактивная отладка приложения обеспечивается утилитой Processor. Также для целей отладки может использоваться таблица перекрестных ссылок, формируемая утилитой Crossrefer.
Утилита Translator завершает процесс сборки готовой программы. Tpanslator преобразует .PRO-файлы в объектный формат и запускает сборку с библиотекой Clarion. Сборщик (Linker) может выбираться разработчиком по его усмотрению.
Группа утилит Filer, Converter, Sorter и Scaner обеспечивают разработчика средствами реорганизации структуры базы данных, экспорта/импорта, ввода и корректировки данных. Эти утилиты могут использоваться не только на этапе разработки приложения, но и в процессе его сопровождения для ведения информационных фондов. Для завершенности системы в состав Professional Developer включены утилиты Director и Tailor, первая из которых представляет собой командную оболочку для выполнения команд DOS и работы с файловой системой, а вторая позволяет установить параметры среды.
Designer позволяет разработчику описать схему будущего приложения и на ее основании получить исходный код программы на языке Clarion. Для описания схемы приложения используется язык типа меню. Схема приложения включает описание информационной базы данных и описание процедур для работы с ней. Генерацию исходного кода Designer выполняет на основании модельного файла.
Таким образом, Designer позволяет выполнить разработку приложения, не прибегая к традиционному программированию, обеспечивая высокую скорость разработки и снижая требования к квалификации разработчика. Для профессиональных программистов Designer оставляет возможность проявить свое искусство.
Designer можно использовать и для более глубокого изучения языка Clarion, т.к. создаваемый им исходный код не всегда очевиден, но всегда подробно прокомментирован.
4.1 Утилита Designer пакета CLARION .
Одним из наиболее заметных элементов новой технологии обработки данных является утилита Designer (Дизайнер), входящая в состав пакета. Эта уникальная в своем роде утилита позволила изменить традиционный ход процесса разработки программ. Благодаря Designer, за этапом проектирования задачи не следует рутинный этап кодирования и отладки.
В зависимости от опыта работы с компьютером и утилитой Designer пользователь пакета может создавать самый широкий спектр программного обеспечения для ПЭВМ: от простейшего телефонного справочника до сложнейших систем обработки данных. При этом, независимо от и знаний, в программах будут присутствовать элементы, типичные для программ современного уровня : быстрой сортировки, упорядочения по составным ключевым признакам, использование оперативной памяти для ускорения доступа к данным, возможность вывода данных на печатающие устройства, возможность работы программы в локальных сетях и многие другие.
Типы процедур, создаваемых утилитой Designer.
При создании программ с помощью Designer совокупность операций, выполняемых в определенном порядке, разделены на пять типов, в соответствии с выполняемыми функциями и видом экранной печати. каждый тип операций оформляется в виде отдельной процедуры, которые получили следующие названия :
- Menu (Меню)
- Table (Таблица)
- Form (Форма)
- Report (Отчет)
- Othet (Внешняя процедура)
Экранная форма процедуры типа Menu представляет собой экранную форму, которая содержит несколько фиксированных позиций, одну из которых необходимо выбрать. С каждой позицией связано определенное действие, которое выполняется после осуществления выбора. Работа большинства прикладных программ обычно начинается с выполнения именно с этой процедуры.
После выбора базы данных для дальнейшей обработки, в которой уже имеется некоторое количество записей,их нужно предварительно посмотреть. Удобнее всего это сделать, разместив записи на экране в виде некоторой таблицы. Имено этот принцип отображения информации используется в экранной форме процедуры Table. Записи в таблице могут быть упорядочены по значениям различных полей. Эти поля должны быть ключевыми.
В таблице, как правило, размещают лишь те поля, которые отображают информацию, идентифицирующую запись, и эти поля можно лишь просматривать, но не изменять. Все же поля записи можно увидеть и внести в них необходимые корректировки на экранной форме процедуры Form. Размещенные на экране поля записи можно обрабатывать: вводить новые значения, исправлять и удалять существующие.
Процедура Report предназначена для вывода данных на печать. По своей сути процедура Report выполняет те же функции, что и процедура Table, но данные выводятся не на экран, а на принтер.
Процедуры, созданные вне утилиты Designer, можно включать в состав разрабатываемой программы, определив тип этих процедур как Other.
Если программа должна выполнять несколько логически разных операций то работу разумно начать с выдачи на экран монитора меню, где пользователь сможет выбрать необходимую в данный момент операцию. После выбора одной из позиций меню следует выполнение соответствующих действий. В том числе это может быть вызов другого меню.
Необходимо помнить, что Designer не сможет сразу осуществить взаимосвязь между процедурами Menu и Form, поскольку процедура Form обрабатывает конкретную запись, и Designer не может определить какую запись имеет в виду пользователь. Поэтому между этими процедурами должна быть процедура, идентифицирующая запись, например, процедура Table, или перед вызовом процедуры Form необходимо будет выполнить действия, которые позволят понять, какую запись обрабатывать.
4.2 Проектирование прикладных задач при помощи утилиты Designer.
Базовое окно утилиты Designer.
После вызова утилиты Designer появляется базовое окно The Clarion Designer. В первой строке окна - Application (Прикладная задача) - определяется имя файла, в котором будет храниться описание проекта. Далее следует строка Model File (Модельный файл). Именно здесь определяется тип разрабатываемой программы : стандартная однопользовательская или для работы в сети. Обычно (по умолчанию) в этой строке находится имя модельного файла STANDARD.MDL. В этом файле содержится программный код, на основе которого будет создана программа, работающая в однопользовательском режиме. Для создания программы работающей в многопользовательском режиме необходимо выбрать модельный файл с именем NETWORK.MDL.
Если планируется создание файла подсказок то в строке Help File необходимо указать имя этого файла.
Последняя строка в окне служит для определения имени процедуры, которая будет выполняться сразу же после начала работы програм
мы. Эта процедура носит название Base Procedure (Базовая процедура).
Далее на экране появляется окно Application Summery Window Сводное окно разрабатываемой программы.
Главное окно разработки.
Окно Application предназначено для отображения структурной
схемы программы, имен файлов и процедур, которые уже созданы или которые еще только названы, но не наполнены содержательно.
Имя разрабатываемой программы размещается в верхней части окна. Под ним расположены две колонки : узкая - Files и широкая Procedures. В колонке Files расположены имена файлов, которые могут обрабатываться проектируемой задачей. В колонке Procedures расположены описания процедур : имена, типы и краткое описание. При правильном проектировании задачи все процедуры должны быть связаны между собой и образовывать аналог структурной схемы.
Определение полей базы данных, ключей и индексов.
В окне File (Файл) определяются поля, ключи и индексы этого файла.
В колонке Fields перечисляются имена полей, а в колонке Keys (Ключи) - имена ключей.
Определение полей файла базы данных .
Первые три строки окна Field всегда одинаковы : Field name (Имя поля), Description (Описание) и Type (Тип).
Типы полей базы данных, используемые в CLARION .
В CLARION используется 8 типов полей : String (строковые),
Decimal (десятичные), Byte (байт), Short (короткие), Long (длинные), Real (действительные) , Group (групповые), Memo (примечания).
Тип String описывает поля, состоящие из любых символов фиксированной длины. Максимальная длина поля составляет 255 символов.
Типы Decimal, Byte , Short, Long и Real служат для описания числовых полей : Decimal - для упакованных десятичных чисел (макси-мальная длина 15 десятичных цифр); Byte - для целых чисел без знака в диапазоне от 0 до 255; Short - для целых чисел в пределах от -32,768 до 32,767; Long - для значений от -2,147,483,647; Real для выражения значений с плавающей запятой (двойной точности) .
Тип Group позволяет описать совокупность полей, даже если они различны по типам.
Тип Memo определяет символьное поле (поле примечаний), длина которого может достигать 65 536 знаков (байт).
В зависимости от выбранного типа поля определяются и разные
параметры. Параметр Length (Длина) определяет длину полей типа String, Decimal и Memo в символах. Строка Picture (Шаблон) используется с полями следующих типов: String, Decimal, Byte, Short, Long и Real.
Параметр Choices (Выбор) используется со строковыми полями для организации ввода определенных ранее значений.
Параметр Dimensioned (Размерность) используется с полями типов String, Decimal, Byte, Short, Long, Real и Group служит для определения массивов.
Параметр Type Mode (Режим ввода) используется со строковыми, десятичными, короткими, длинными, действительными и групповыми полями типов байт и примечаний
Выбирается Asls - если меняется текущий режим ввода для этого поля, Ovr -если включается режим перезаписи при заполнении этого поля , и Ins - для включения режима вставки .
Параметр Required (Обязательность ввода) используется с полями следующих типов: String, Decimal, Byte, Short, Long, Real, Group. Значение Yes необходимо выбрать в том случае, если требуется от пользователя ввод данных в это поле , когда оно появляется на экране для заполнения.
Параметр Immediate (Подтверждение ввода) используется с полями следующих типов : строковые, байт, короткие, длинные, действительные и групповые. Выбирается Yes, если надо, чтобы поле автоматически принималось после его заполнения пользователем (без нажатия Enter).
Параметр Num Lock (Режим ввода цифр) используется с полями следующих типов: строковые, десятичные, байт, короткие, длинные, действительные и групповые. Используется для включения режима ввода цифр служебными клавишами в правой стороне клавиатуры, если выбранно Yes. В строке Left Just (Выравнивание слева) выбирается Yes,чтобы данные, вводимые в поля типа String и Group, выравнивались слева, No - чтобы данные вводились справа.
Параметр Help ID (Идентификация помощи) используется со всеми типами полей и организует связь этого поля с окном помощи именно для этого окна.
Параметр Places (Значность) используется только с десятичными полями. Здесь определяется количество десятичных знаков дробной части этого поля .
Параметры Lower Range (Нижняя граница) и Upper Range (Верхняя граница) используются с десятичными, байт, короткими, длинными и действительными типами этих полей и применяются для ограничения диапазона числовых значений, которые будут вводится в эти поля.
В строках Rows (Строки) и Colums (Колонки) определяется общее количество строк и колонок экрана , которое отводится полю примечаний.
Параметр Word Wrap (Перенос слова) используется с полями примечаний. Выбирается Yes, если нужно, чтобы слова переносились на новую строку в поле примечаний, когда слово уже не помещается в строке.
Определение ключей и индексов (Окно Key).
В большинстве случаев хранимые данные необходимо упорядочивать. В соответствие с установленным порядком всем записям присваиваются индексы, которые могут храниться в отдельном ключевом файле или создаваться по необходимости. Помимо упорядочения, созданные индексы могут использоваться для организации быстрого доступа к данным .
Область определения ключевых или индексных признаков находится в правой колонке окна File. Здесь располагается список ключей или индексов, которые Designer отображает в виде маленькой структуры : имя ключа и последовательность ключевых полей, из которых он состоит. Основное отличие ключевого файла от индекса состоит в том, что ключевые файлы обновляются каждый раз, когда запись добавляется в базу данных, удаляется или изменяется, а индексы строятся только тогда, когда они нужны. В строку Key/Index Name (Имя ключа / индекса) вводится имя, которое присваивается ключу или индексу. В строке Key/Index type (Тип Ключ / Индекс) выбирается позиция Key для создания ключевого файла или Index для определения индекса. Строка Unique Key активизируется только тогда, когда выбрана позиция Key. Теперь можно исключить возможность добавлять новые записи к файлу, при условии, что уже есть запись с таким же значением в том же поле. Для этого выбирается Yes. Если планируется иметь в файле два или более ключевых поля с одинаковыми данными, то выбирается No. Если ключевой признак будет уникальным, то в следующей строке Auto-Number (Автоматическая нумерация) можно определить, что ключ будет содержать поле , используемое как счетчик записей, вновь записываемых в базу данных .
В следующей строке Case Sensitive (Различимость регистров) указывается что данные, введенные в ключевые поля файла на разных регистрах, различаются , либо не различаются.
В файле данных могут содержаться ключевые или индексные поля, не содержащие информации (пробелы или нули). Для того чтобы исключить возможность включения записей с такими полями в ключевой файл или индекс, в строке Exclude Nulls (Исключение нулей) надо выбрать Yes. Проблемы с пустыми полями можно избежать выбрав Yes в строке Required (Обязательность ввода) при описании полей в окне Field.
4.3 Проектирование файлов данных .
В Designer используется два типа файлов: обычные файлы, размещаемые на диске, и один псевдо-файл, находящийся в памяти.
Файл, размещенный в памяти, имеет несколько отличий от обычного файла. Файл в памяти, во-первых, имеет всего одну запись, которая всегда находится в памяти компьютера. Данные, которые хранятся в этом файле никогда не сохраняются на диске и, соответственно, не считываются с него.
Проектирование файла в памяти.
Файл в памяти создается утилитой Designer, он имеет имя MEMORY. Designer автоматически создает один файл в памяти для каждой программы, а также четыре поля: поле для сообщений MEM:MESSAGE, поле для подсчета страниц отчета MEM:PAGE, поле для подсчета строк отчета MEM:LINE, и поле для определения устройства вывода информации MEM:DEVICE.
Поле MEM:MESSAGE содержит ошибки и информационные сообщения , которые могут во время выполнения программы. MEM:PAGE содержит текущий номер строки отчета, и его включают в заголовки отчетов или выводятся в конце каждой страницы. MEM:LINE содержит текущий номер строки отчета . В поле MEM: DEVICE можно определить имя устройства, на которое будет производиться вывод информации.
Определение имени и параметров файла .
В самой первой строке окна File Options (Filename) определяется имя файла. В строке Prefix (Префикс) указываются три уникальные буквы, которые в дальнейшем будут идентифицировать поля этого файла.
В двух следующих строках определяется место, где будет храниться файл .В строке Drive (Дисковод) указывается имя дисковода, на котором будет размещен файл, а в строке Path - полный путь поиска файла на этом устройстве.
После этого необходимо определить данные которые являются спе-цифическими для файлов баз данных Clarion.
В строке Create file (Создать файл) выбрать Yes (да), если надо чтобы файл создался автоматически при первом выполнении програм-мы или в том случае, когда программа не может найти уже существую-щего файла. Если выбрать No (нет), то придется создать файл перед тем как выполнить программу , используя утилиту Filer.
В строке Reclaim Space (Перераспределение пространства) выбирается ответ Yes, для того, чтобы новые записи занимали место ранее удаленных. No выбирается в том случае, если хотите чтобы новые дан-ные добавлялись в конец файла. Yes в строке Protect file (Защита файла) означает, что файл будет защищен от внесения изменений, ко-торые можно произвести при помощи таких утилит пакета CLARION как Converter, Filer,Scanner,Sorter.
В строку Owner ID (Идентификатор владельца) вводится пароль или код владельца информации.
При проектировании файла утилита Designer самостоятельно устанавливает параметры для файла,которые наиболее широко используемы. Это отсутствие названия устройства и директория, Create File - Yes, Reclame Space - Yes и Protect File - No.
Как только заполняется последнюю строку окна File Options, это окно сменится окном File.
4.4 Проектирование процедур.
Разработка каждой процедуры состоит из трех этапов : определения опций (общих данных) процедуры, описания экрана и определения полей, которые будут обрабатываться в этой процедуре. Описание каждой процедуры начинается с определения ее типа. Необходимо выбрать один из типов процедур : Menu, Table, Form, Report или Other в окне Select Type.
Проектирование процедуры Menu.
В строке Procedure name (Имя процедуры) определяется имя процедуры.
В строке Procedure title (Заголовок процедуры) можно более полно описать назначение этой процедуры.
В строке Setup Procedure (Установочная процедура) определяетсяимя процедуры, которая будет вызываться всякий раз перед тем, как начнет работать проектируемая процедура. Во время работы процедуры можно организовать вызов окна помощи.
В строке Help ID (Идентификатор помощи) определяется имя экрана подсказки, общей для этой процедуры.
Для организации вызова другой процедуры в строке Hot Procedure ("Горячая" процедура)необходимо определить имя процедуры, а в строке Hot Key ("Горячий" ключ) определить клавишу или комбинацию клавиш, при помощи которых можно выполнить эту процедуру, временно прервав работу основной.
Если окно разрабатываемой процедуры меньше чем экран, то в строке Position определяется как будет расположено это окно. Обычно Designer размещает исходный текст каждой процедуры в отдельный исходный модуль (файл). Это происходит, если оставить строку CombineWith (Связать с) пустой.
Каждая из проектируемой процедур может быть создана не только в
соответствии с модельным файлом STANDARD.MDL или NETWORK.MDL, но и в соответствии с индивидуальной моделью. В строке Model Procedure (Имя модели) в этом случае необходимо определить имя модели.
Далее производится инициализация окна экрана, которая начинает-
ся с заполнения полей в окне Initialization (Инициализация).
В процедуре типа Menu можно определить 6 типов полей: Field for Entry (поле для ввода), Field for Display (поле для вывода), Lookup (связанные поля), Computed (вычисляемые поля), Menu item (позиции меню) и Conditional (поле условия или логическое поле).
Поля для ввода требуют от пользователя введения данных. Используя поля вывода и связанные поля можно вывести информацию на экран.
Для отображения информации связанной по некоторому, ранее определенному признаку, используется поле Lookup.
Вычисляемые поля позволяют производить вычисления над данными из одного из файлов или переменными.
Поля позиций меню позволяют организовать выбор дальнейших действий пользователя, в зависимости от необходимости.
Поля условий служат для логической оценки некоторого условия, в зависимости от результата выполнения которой ("истина" или "ложь"), производится одно из двух присвоений этому полю.
Проектирование процедуры Table.
Проектирование процедуры Table начинается с выбора позиции Table в окне Select Type и заполнения окна опций процедуры. В строке Procedure name определяется имя процедуры, в строке Procedure title - название или заголовок процедуры. Процедура или функция, которая в случае необходимости должна быть выполнена перед началом работы разрабатываемой процедуры, определяется в строке Setup Procedure (Процедура настройки). Далее следует строка Update Procedure (Процедура корректировки). Имя ключевого признака определяется в строке Access Key (Ключ доступа). Строка Help ID (Идентификация помощи) служит для связи проектируемой процедуры с окном подсказки, которое будет считаться общим. Строка Record Selector позволяет определить условие для выделения части данных,которые должны быть обработаны при выполнения процедуры. Далее следует строка Record Filter (Фильтр записей), в которой определяются параметры отбора данных для вывода в таблицу. Имена "горячих" процедур и клавиши для их вызова определяются в строках Hot Procedure ("Горячая" процедура) и Hot Key ("Горячий" ключ). Строки Combine With (С чем объединить) и Model Procedure (Имя модельного файла) определяются по тем же правилам, что и в процедуре Menu.
Типы полей процедуры Table разделены на две группы. В первую
группу Fixed Portion (Фиксированная часть) входят поля Field for Entry (Поле ввода), Field for Display (Поле вывода), Lookup Field (Связанное поле), Computed Field (Вычисляемое поле), Conditional Field (Поле условия), Total Field (Поле итогов) и Locator Field (Поле поиска). Во вторую группу Scrolling Portion (Скролинговая часть) - Scrolling Field for Display (Поле вывода для скролинга), Scrolling Computed Field (Вычисляемое скролинговое поле), Scrolling Conditional Field (Поле условия для скролинга) и Scrolling Lookup Field (Связанное скролинговое поле).
Field for Enrty (Поле для ввода) требует от пользователя ввода данных. Locator Field (Поле поиска) позволяет пользователю автоматически установить курсор на определенную запись в области скролинга таблицы.
Field for Display (Поле вывода) дает возможность вывести на экран данные из файла, для которого определен ключевой признак в окне Table, или из другого файла, если его данные находятся в памяти.
Computed Field (Вычисляемое поле) позволяет производить вычисления над данными из файла, ключевой признак которого определен в окне Table или находится в памяти компьютера.
Lookup Field (Связанное поле) позволяет поданным активного файла получить данные из других файлов, т.е связать данные из двух или более файлов.
Conditional Field (Логическое поле) служит для организации проверки некоторого логического условия, в зависимости от которого будет выполнено одно из двух присвоений этому полю.
Total Field (Поле итогов) формирует и выводит на экран итог по сформированной таблице. Далее следуют поля для скролинга, которые будут представлять собой таблицу.
Scrolling Field for Display (Поле для вывода для скролинга) дает возможность вывести в окно процедуры Table все записи из файла, для которого в окне Table определен ключевой признак.
Scrolling Computed Field (Вычисляемое скролинговое поле), поз-воляет производить вычисления над данными для всех записей, которые выведены в таблицу и над данными файлов находящихся в памяти компьютера.
Scrolling Lookup Field (Связанное скролинговое поле) дает возможность вывести данные из неактивных файлов, связав их по данным файла, ключевой признак которого определен в окне Table. Scrolling Conditional Field (Логическое скролинговое поле) позволит принять решение о присвоении одного из значений этому полю в зависимости от выполнения некоторого логического условия.
Проектирование процедуры Form.
Для создания процедуры Form необходимо выбрать в окне Select Type строку Form (Форма).
В сроке Procedure name (Имя процедуры) следует определить имя разрабатываемой процедуры, если это новая процедура .
В следующей строке Procedure Title (Заголовок процедуры) можно определить заголовок для этой процедуры .
В строке Filename (Имя файла) нужно ввести имя файла, который будет обновляться, используя разрабатываемую процедуру Form.
Далее в строке Secondary File можно определить имена файлов с данными, которые могут также обновляться во время работы процедуры
Form. Строки Help ID (Идентификация помощи), Hot Procedure ("Горячая" процедура), Hot Key ("Горячий" ключ), Combine With (С чем объединить) и Model Procedure (Имя модельного файла) заполняются по тем же правилам, что и для других типов процедур.
В процедуре Form можно определить поля шести типов: Field For
Entry (Поле для ввода), Pause (Пауза), Field For Display (Поле вы-
вода), Computed (Вычисляемое поле), Lookup (Связанное поле) и Conditional (Логическое поле).
Field For Entry (Поле для ввода) - требует от пользователя ввода данных.
Pause (Поле для ввода) - это поле используется для выдачи на экран сообщения-паузы, когда пользователь завершает заполнение формы.
Field For Display (Поле для вывода) дает возможность вывести на экран данные из файла, который был определен в окне Form в строке Filename, или из другого файла, данные из которого находятся в памяти.
Computed (Вычисляемое поле) позволяет производить вычисления над данными из активного файла или любого другого, текущего в памяти, и выводить эти вычисления на экран.
Lookup (Связанное поле) позволяет вывести на экран данные из файла, отличного от того, который был определен в строке Filename окна Form.
Conditional (Логическое поле) дает возможность присвоить этому
полю, в зависимости от выполнения некоторого логического условия, одно из двух значений, которое может быть или переменной, или константой, или значением другого поля.
Проектирование процедуры Report .
Процесс проектирования процедуры Report начинается с выбора ее типа. Далее в строке Procedure Name (Имя процедуры) определяется имя процедуры. Краткий комментарий (заголовок) к этой процедуре можно дать в строке Procedure Title (Заголовок процедуры).
Перед выполнением процедуры типа Report, можно определить выполнение любой другой процедуры. Имя этой процедуры задается в строке Setup Procedure (Процедура настройки) .
Принципы проектирования процедуры типа Report похожи на принципы проектирования процедуры Table. Только данные здесь будут выводится не на экран, а на печатающее устройство. Для получения доступа к данным, которые будут упорядочены в определенном порядке, необходимо выбрать в строке Access Key (Ключ доступа) имя ключевого файла. Подобно опциям процедуры Table, далее следуют две строки, в которых задается ограничение обрабатываемых процедурой записей. В первой из них (Record Selector) определяется условие для выделения части данных, которые должны быть обработаны при выполнении процедуры. Во второй Record Filter (Фильтр записей) - определяется логическое условие для выбора данных.
В строке Page Length (Длина страницы) определяется общее количество строк, которое необходимо разместить на одной странице отчета.
В строке Report Device представляется возможность определить устройство, на которое будет выводится отчет.
Значения в строках Combine With (С чем объединить) и Model Procedure (Имя модели) определяются обычным образом.
При проектировании процедуры Report можно определить семь типов полей:
Field (Поле) служит для вывода на печать данных из файла, текущего в памяти;
Computed (Вычисляемое поле) предназначено для печати результатов вычислений или выполнения некоторых функций языка CLARION; Lookup (Связанное поле) позволяет распечатать данные из других файлов, отличного от файла, текущего в памяти;
Break (Поле прерывания) служит для печати данных активного файла, но оно выступают уже в качестве признаков, разделяющих данные на группы;
Control (Поле управляющих последовательностей) позволяет посылать на принтер управляющие последовательности;
Total (Поле итогов) предназначено для печати одного из трех типов итогов: суммы по столбцу, числа записей группы и среднего значения;
Conditional (Логическое поле) принимает одно из двух значений в зависимости от выполнения некоторого логического условия.
Проектирование процедуры Other .
Если выбран тип процедуры Other (Другая) в окне Selekt Type, то на экране появляется окно Other.
В строке Procedure name (Имя процедуры) необходимо определить имя, если это новая процедура, если процедура объявлена как ToDo в окне Application, то в строку выводится имя этой процедуры.
Процедура, имя которой было определено выше, содержится в некотором файле, носящем название модуль. В одном модуле может содержаться несколько процедур. Имя модуля (файла), которое должно соответствовать требованиям DOS, необходимо определить в строке Module Name (Имя модуля).
В следующей строке определяется тип модуля. Если Other процедура является модулем, написанным на языке CLARION, то в строке Binary (Двоичный) следует выбрать No. Внешние процедуры могут быть написаны и на другом языке программирования. Но к прикладной программе подсоединяется не исходный текст на другом языке, а откомпилированный объектный код с этого языка. Такой модуль уже является двоичным и в строке Binary необходимо выбрать Yes.
Если процедура Other возвращает некоторые значения в программу, то надо выбрать Yes в строке Return Values (Возвращаемые значения). При этом следующая строка будет пропущена. Если же выбрано Yes в строке Return Values, то необходимо определить в строке Data Type тип данных возвращаемых значений. Тип данных выбирается среди трех значений : Long, Real и String.
На этом завершается описание процедуры Other и вообще, всех возможных типов процедур. Описав все процедуры, входящие в состав структурной схемы программы, и спроектировав обрабатываемые даннные, завершается работа по созданию программы. Все остальное берет на себя Designer.
4.5 Копирование описаний файлов.
Прежде всего необходимо определить, откуда будет копироваться описание файла. Файл данных может быть скопирован как из текущего описания прикладной задачи, так и из любого другого или непосредственно из одного из уже существующих файлов данных. В первом случае необходимо в строке Get From выбрать Application, а во втором - Data File.
В строку Application (Прикладная задача) нужно ввести имя проекта прикладной задачи (файл с расширением .APP). После этого в строке Filename (Имя файла) нужно определить имя файла данных, описание которого надо скопировать. Если неоходимо присвоить копируемому файлу новое имя, то оно должно быть определено в строке New filename (Новое имя файла).
4.6 Создание исходного кода программы и компиляция программы.
После проектирования прикладной программы, описания файлов баз данных, структуры программы и составляющих ее процедур необходимо создать исходной код прикладной программы.
Чтобы откомпилировать исходный текст программы , сгенерированный утилитой Designer, необходимо вызвать утилиту Compiler.
Если компиляция прошла без ошибок, то можно выполнить программу , для чего следует вызвать утилиту Processor.
Экранные формы утилиты Designer представлены на следующем листе.
5. ОПИСАНИЕ ПРОГРАММНОГО ПРОДУКТА. АЛГОРИТМ.
Способ разработки. Листинг.
Программа, написанная нами на языке Clarion состоит из нескольких взаимосвязанных частей. В первую очередь необходимо выделить часть, написанную с помощью утилиты Designer, входящей в состав пакета Clarion и часть программы созданную вне утилиты Designer, процедуры которой определены как Other. О способе разработки этих программ будет сказано ниже.
Утилита Designer описана выше и с помощью нее была создана программа, отвечающая за вывод на экран монитора следующих меню:
I
1. Аналитические таблицы.
2. Списки по запросу.
II
1. Общие.
2. Сводные таблицы по регионам.
3. Сводные таблицы по инспекциям.
III Аналитические таблицы.
1. Сведения об изменении отдельных показателей деятельностиСО.
2. Анализ показателей развития страховых организаций.
3. Объем поступлений и выплат на одного работника СО.
Эта процедура не выполняла никакой обработки информации, хотя Designer позволяет не только определенным образом выводить данные на экран или принтер, но и обрабатывать их. Однако довольно часто возникает необходимость разработать программу, которая бы обрабатывала данные определенным образом, но это оказывается невозможно сделать с помощью утилиты Designer. В таком случае прибегают к процедуре Other. Это сходный с работой на многих языках программирования процесс в котором используются операторы языка Clarion. Основные части программы отражены в алгоритме и их можно выделить следующим образом:
- начало
- объявление и описание группы массивов
- начальная обработка и сортировка данных из базы
- заполнение массивов
- сохранение в специально созданном файле значений
из массивов
- формирование необходимых таблиц
- заполнение таблиц из определенных файлов
- печать таблицы
- конец.
Текст алгоритма разработанной программы приведен в приложении. На первый взгляд программа должна быть простой, однако это впечатление обманчиво, так как программе приходится работать с несколькими десятками полей и это нужно должным образом отразить в программе.
Далее кратко будет рассмотрен процесс проектирования пограммы с помощью утилиты Designer. Программа, написанная в Designer не слишком сложная, однако она является хорошим примером работы Clarion-Designer.
Процесс создания любой программы начинается с идеи автоматизации некоторых действий. Нашей задачей являлась автоматизация поиска, обработки и вывода информации по некоторым показателям деятельности страховых организаций.
Начинать следует с проектирования данных. Файлы данных, используемые в нашей программе следующие:
- MEMORY файл памяти
- T17 финансовые результаты
- T67 пассив баланса
- DF движение финансовых средств
- SVV статистический отчет
- F92 финансовые результаты
- LIC атрибуты компаний
- XREG регионы
- INSP инспекции
- TERR соотвествие регионов территории
- F рабочий файл
- GOR города
Структуру этих файлов и структуру программы смотри на следующих листах.
Все описания файлов, кроме файла F были скопированы из предыдущих разработок, в частности из программы LIC. Таким образом было сэкономлено много времени на процессе описания необходимых полей.
Для примера укажем поля файла F спроектированного специально для этой задачи:
NKUST (Short)
NREGION (Short)
NGOR (Short)
F1 (Real)
.........
F16 (Real).
Следующим шагом при проектировании данных является определение ключевых признаков. Ключевые признаки предназначены для упорядочивания записей, а также для осуществления быстрого доступа к данным. В нашей программе (в файле F) в качестве ключевых выступают поля NKUST, NREGION, NGOR для поиска данных по инспекциям, регионам, городам соответственно. Ключевые признаки, соответственно: K1,K2,K3. Ключи созданы для упорядочивания определенных записей: по инспекциям, по регионам, по городам.
Проектирование данных можно считать законченным, однако в процессе обработки данных могут понадобиться дополнительные информационные массивы и поля памяти в файле MEMORY. Эти решения, как правило, принимаются во время проектирования процедур обработки данных, хотя возможно и предусмотреть эти проблемы заранее.
Следующий этап - этап проектирования прoцедур. В начале необходимо решить, какие операции будут выполняться с данными. В начале организуются меню, описанные выше, а затем производится обработка и выдача данных запрограммированная с помощью процедуры Editor. Структурная схема программы представлена на плакате.
После завершения процесса проектирования данных и процедур их обработки необходимо в Designer заполнить окно The CLARION Designer. После этого на экране появится главное окно разработки - Application. Затем необходимо определить файлы баз данных, а также поля и ключевые признаки. Большинство позиций в окнах диалога будут принимать те значения, которые автоматически подставляет Designer.
Следующий шаг - проектирование экранных форм (внешний вид меню,отчета и проч.) В этом нам помогут соответствующие диалоговые окна. Если необходимо, можно перейти к проектированию следующей процедуры и т.д. После окончания оформления экранной формы, описания поля и проч. необходимо сохранить эти описания, нажав клавиши Ctrl и Enter.
Завершив процесс разработки, оформления, сохранив описание процедур, вернемся в главное окно разработки, которое теперь будет иметь следующий вид (см. рис.). На экране не осталось ни одной процедуры без определенного типа. Поэтому проектирование программы можно считать полностью завершенным. Теперь необходимо сохранить описание разработки и нажать клавиши Shift и F7. После запроса о создании исходного текста, Designer приступит к генерации исходного текста программ, их компиляции и, в случае отсутствия ошибок, к ее выполнению под управлением программы crun. Если результат работы удовлетворяет, то можно переходить к процессу создания выполнимого кода, для чего необходимо вызвать программу ctrn, выбрав позицию Translator в главном меню пакета Clarion.
Приведеные в приложении листинги представляют собой программы созданные с помощью утилиты Designer (приложение 1 ) и Editor (приложение 2 ). Результат выполнения этих программ таблица "Сведения об изменении отдельных показателей деяельности страховых организаций" приведена ниже.
Работа с программой.
Работа с программой представляет собой работу с системой меню, которые появляются по мере необходимости. Систему меню обеспечивает программа написанная в Designer. Обработку данных обеспечивает программа, написанная на Clarion.
Для начала работы с программой вызывается файл antbst.ехе, который начинает работу. При этом выдается на экран начальное основное меню для выбора
необходимого вида работы
(см.рис.1). Далее выбрав
“Аналитические таблицы” или
“Списки по запросу” про-
изводится выбор необходимого
вида таблиц или списков. Выбор
таблиц производится по обобща-
ющим признакам: полный список рис.1
рис.2
компаний, принадлежность к определенному региону, принадлежность к определенному городу или инспекции (см.рис.2). В зависимости от выбранного типа будет происходить обращение к соответствующим файлам данных. Выбрав необходимый параметр поиска, выбирается тип результата, который необходимо получить. Это будут следующие сведения: “Анализ показателейразвития страховых обществ”, “Сведения об изменении отдельных показателей деятельности страховых обществ”, “Объем поступлений и выплат на одного работника компании”.Как только будет выбран параметр поиска, последует обращение к файлу F для получения необходимых данных для последующей обработки и заполнения таблицы. Как уже говорилось ранее, основной целью разработки являлась не только выборка данных по определенным признакам, но и их обработка. На примере таблицы “Сведения об изменении отдельных показателей деятельности страховых обществ” рассмотрим заполнение таблицы.
Данные добавляются в специально созданный текстовой файл YU, которым и является таблица. Строками таблицы являются:
- название выбранного региона, в этой строке суммируются все показатели по данному региону в соответствии со столбцами;
- следующими строками следуют названия городов, соответствующих этому региону, по которым суммируются все показатели страховых обществ, расположенных в данных городах в соответствии со столбцами;
- далее идут названия страховых компаний, по которым выдается информация, по каждой компании отдельно, в соответствии со столбцами.
Столбцами (показателями) являются:
- наименование страховой организации;
- размер уставного капитала по годам (1994,1995)
- изменение размера уставного капитала (в сумме и в %% по отношению к 1994 г. в “+” или “-”);
- размер страховых резервов по годам (1994, 1995)
- изменение размера страховых резервов ( в сумме и в %% по отношению к 1994 г. в “+” или “-”);
- объем страховых взносов по годам (1994, 1995);
- изменение объема страховых взносов (в сумме и в %% по отношению к 1994 г. в “+” или “-”);
- объем страховых выплат по годам (1994, 1995);
- изменение объема страховых выплат (в сумме и в %% по отношению к 1994 г. в “+” или “-”);
Таким же образом заполняются и остальные таблицы, но с другими столбцами - показателями.