Реферат: База данных страховой компании - Refy.ru - Сайт рефератов, докладов, сочинений, дипломных и курсовых работ

База данных страховой компании

Рефераты по страхованию » База данных страховой компании

(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)



Overview

Sheet1
Sheet2


Sheet 1: Sheet1

6.2 Финансовые данные баланса


1993 1994 1995 1996 1997
Доход (тыс.руб)
От эмитентов
50000 102000 195000 487500 878906


От акционеров
2500 3198 3656 3656 2637


От других
0 0 0 0 0


Всего
52500 105188 491156 491156 881543









Расход (тыс.руб)
Заработная плата
30000 39000 51000 89100


Помещения
10000 30000 40000 60000 127875


Оборудование
5000 3909 7727 12273 90000


Налоги
3000 3900 5100 8910 14091


Другое
2000 4007 7568 18711 12788


Всего
50000 82816 111395 188993 33583









Прибыль (тыс.руб)


2500 22371 87261 302163 603207

Sheet 2: Sheet2

6.3 Критерии эффективности функционирования











1993 1994 1995 1996 1997
Финансовые
Доход на 1
5250000 6187500 7640625 9445313 10753906
показатели
эмитента





эффективности









Доход на 1
5833 7563 9551 11514 14940


операцию







Доход на 1
955 1238 1528 1802 2290


акционера







Расход на 1
5000000 4871543 4284428 3634489 3711147


эмитента







Расход на 1
5556 5954 5356 4430 4717


операцию







Доля прибыли
5% 21% 44% 62% 68%









Рабочие
Эмитентов на 1
0,91 1,31 1,53 1,93 2,42
(операционные)
служащего





показатели









Акционеров на 1
5000 6538 7647 10093 12419


служащего







Операций на 1
12 11 12 13 16


оператора на 1







день







Операций на 1
0,34 0,16 0,16 0,16 0,15


акционера






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 Сборка системы 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)





7. МЕРОПРИЯТИЯ ПО ОХРАНЕ ТРУДА.


7.1. Введение.


Электронно-вычислительная техника все шире входит во все сферы жизнедеятельности человека. Непрерывно растет число специалистов, работающих с персональным компьютером, который становится их основным рабочим инструментом. ни экономические, ни научные достижения невозможны теперь без быстрой и четкой информационной связи и без специально обученного персонала. Небывалая скорость получения визуальной информации и ее передачи адресату, а следовательно, возможность наиболее эффективного использования этой информации - вот одни из основных причин всеобщей компьютеризации.

Однако, использование компьютеров имеет и негативные последствия. Компьютеры, как и другая электронная бытовая техника небезопасны для человека. Основные факторы вредного влияния ПК на организм - это электромагнитные поля и излучения,электронная развертка изображения и его мелькание на экране, вынужденная длительная неподвижность позы оператора. Предупредить воздействие этих факторов значит сохранить здоровье.

В последующих разделах будут рассмотрены перечисленные факторы, проанализированы условия труда при создании рассматриваемого в дипломном проекте программного приложения, даны общие рекомендации по правильной организации работы за компьютером.


7.2.Электромагнитные поля и излучения, их источники.


Основным средством отображения информации при работе с компьютером является дисплей, обеспечивающий эффективное информационное взаимодействие человека с электронно-вычислительной машиной. Ежедневно в течение нескольких часов операторы находятся перед экранами, что при несоблюдении санитарно гигиенических норм и правил может повлечь за собой развитие некоторых профессиональных заболеваний. На состояние здоровья работающего с компьютером персонала могут влиять такие вредные факторы, как длительное неизменное положение тела, вызывающее мышечно-скелетные нарушения; постоянное напряжение глж; воздействие радиации ( излучение от высоковольтных элементов схемы дисплея и электронно- лучевой трубки ); влияние электростстических и электромагнитных полей, что может приводить к кожным заболеваниям, появлению головных болей и дисфункции ряда органов. Опасное излучение пронизывает организм, пагубно влияя на печень, селезенку, железы внутренней секреции, мозг.

Так установлена связь нарушений протекания беременности с работой женщин операторов дисплеев. По данным исследователей из США, Канады, Испании и Швеции, у подавляющего большинства таких женщин плод развивался аномально, причем наиболее существенными были дефекты развития головного мозга. У женщин, которые во время беременности проводили не менее 20 часов в неделю за компьютерными терминалами, вероятность ранних и поздних прерываний беременности на 80% выше, чем у женщин, выполнявших ту же работу без помощи видеотерминалов.

За последнее время привлекает к себе внимание такое влияние как техностресс. Дело в том, что с внедрением видеодисплеев работающие с ними пытаются получить ответ на следующие вопросы: является ли силовой трансформатор видеодисплея опасным с точки зрения излучения? Создает ли дисплей компьютера другие вредные излучения? Опасны ли они для здоровья? Даже в случае отрицательного ответа на эти вопросы остается некоторая неопределенность и ощущение тревоги, что может привести к плохому самочувствию и даже развитию фобии – боязни дисплея. Поэтому психическое состояние человека, находящегося перед экраном дисплея,- одна из важнейших проблем, над решением которой работают тысячи специалистов.

Факторы вредного влияния компьютеров стали объектом пристального изучения лишь в середине 80-х годов. Неионизирующее электромагнитное излучение в неоптическом диапазоне частот может нанести вред здоровью, при этом имеют значение напряженность поля, диапазон частот, вид излучения (импульсное или непрерывное) и время воздействия. В некоторых рабочих помещениях видеодисплеи являются сильными источниками неионезирующих электромагнитных, оптических и субоптических излучений:




1 – 14 В/м, 2 – 6,0 В/м 3-1,0 В/м,4-0,3 В/м


1-75 В/м,2-25 В/м, 3-10 В/м,

4-2,0 В/м, 5-0,3 В/м


Рис.1 Зоны излучения дисплея икомпьютера.


Наиболее авторитетным в этой области считаются стандарты и рекомендации шведского Института мер и испытаний (МРК), который совместно с Институтом расщепляющихся материалов(ЯЯ1) разработал в 1990 году спецификацию МРК 11. Были проведены измерения излучений дисплеев в диапазоне от 20 Гц до 2 Мгц. Подобные измерения предствляли большую сложность, так как следовало учитывать относительную ориентацию поля и тела человека, наложение и совместное воздействие электрического и магнитного полей, вид одежды, наличие заземления и т.д. В спецификации приводятся предельно допустимые значения напряженности электростатического и электромагнитного полей низкой частоты, превышение которых опасно для здоровья:

Нормы шведского стандарта МРR

( максимальные значения на асстоянии 50 см от эк ана)



Полоса частот, кГц


Магнитное поле, А/м


Электрическое поле В/м



0,005-2


0,2


25



2-400


0,02


2,5


Наиболее сильными источниками электромагнитных излучений радиочастотного и низкочастотного диапазонов могут являтся система горизонтального отклонения луча электронно-лучевой трубки (ЭЛТ) дисплея, работающая на частотах 15-53 кГц, блок модуляции луча ЭЛТ - 5-10 Мгц, система вертикального отклонения и модуляции луча ЭЛТ – 50-81 Гц. Самым популярным средством индивидуальной защиты оператора ПК является защитный экран, снижающий, направленные в сторону работающего составляющие вредных излучений до безопасного уровня. Наиболее эффективными считаются фильтры класса "Полная защита", ослабляющие излучение в широком диапазоне частот и имеющие очень хорошее просветление.

В данный момент широкое распространение получают дисплеи типа Low Radiation, в которых благодаря специальным технологиям производства ЭЛТ и использованию экранирующих устройств, показатели излучений соответствут шведскому стандарту.

Разработка описываемого приложения велась на компьютере, оснащенном именно таким типом дисплея фирмы SAMSUNG. Таким образом, требования безопасности, касающиеся воздействия электромагнитных излучений и полей были выполнены.


7.3. Воздействие видимого спектра.


Кроме воздействий различных полей, создаваемых трансформаторами, электронно-лучевой трубкой и другими компонентами электронной части дисплея, большое значение имеет нагрузка на зрение. Затруднение зрительного восприятия можно объяснить следующими факторами:

- резким контрастом между яркостью экрана компьютера и освещенностью помещения ( предпочтительным является средний контраст );

- недостаточной освещенностью рабочего места ( наиболее оптимальна освещенность 600-400 лк ).

Кроме того, большинство видеодисплеев формируют изображения, яркость которых меняется во времени. ЭЛТ создает изображение путем сканирования светового луча. Любая точка растра имеет максимальную яркость только в один момент времени за период кадра. Частота кадров обычно составляет от 40 до 80 Гц. Таким образом, каждая точка экрана вспыхивает с интервалом от 1/80 до 1/40 с. Благодаря инерционности люминофора мерцание изображения минимально (оно также может быть уменьшено за счет снижения яркости видеодисплея), однако оно безусловно отрицательно влияет на зрение оператора. Частота кадра использовавшегося монитора была равна 60 Гц, что удовлетворяет указанным выше границам.

Важное значение имеет такая техническая характеристика дисплея, как величина пиксела ("зернистость экрана") . Монитор SAMSUNG SyncMaster 3 имеет величину пиксела 0.28 мм. Это хороший показатель, обеспечивающий высокое качество изображения.

Перечислим основные рекомендации, выполнение которых позволит оператору компьютера работать за монитором с минимальным вредом для зрения:

1. Экран компьютера должен быть на расстоянии 40-75 см от глаз,

2. Экран должен находиться на 20' ниже уровня глаз под прямым углом по отношению к окнам, а не прямоперед ними или позади их,

3. Следует избегать яркого потолочного света, особенно флюоресцентного,

4. Освещенность экрана должна быть равна освещенности помещения,

5. Учитывать, что легче читаются темные буквы на светлом экране,

6. Каждые 10 минут необходимо отводить на 10-15 секунд взгляд в сторону от экрана,

7. Дисплеи, не относящиеся к типу Low Radiation, должны оборудоваться защитными экранами.

В ходе выполнения работы соблюдались практически все из перечисленных рекомендаций. Это позволило провести разработку программного продукта с высокой эффективностью. Определенных дискомфорт был вызван наличием яркого потолочного света: освещенность экрана была значительно меньше уровню освещенности помещения. Компенсировать неудобство удалось изменением ориентации дисплея.


7.4. Рабочее место.


Исследования специалистов показывают, что интенсивная и продолжительная работа на компьютере может стать источником тяжелых профессиональных заболеваний. В отличие от сердечных приступов и приступов головной боли заболевания, обусловленные травмой повторяющихся нагрузок (ТПН), представляют собой постепенно накапливающиеся недомогания. Такие заболевания называются эргономическими и число заболевших ими постоянно растет. В 1995 году доля этих заболеваний в США составила 54%, в то время как в 1981 году - 18%. Интересно, что темпы роста заболеваний, вызванных ТПН, соответствуют темпам роста компьютеризации учреждений.

Причиной роста "компьютерных" профессиональных заболеваний, прежде всего, является слабая эргономическая проработка рабочих мест операторов вычислительных машин. Среди причин заболеваний – слишком высоко расположенная клавиатура, неподходящее кресло, эмоциональные нагрузки, продолжительное время работы на клавиатуре. Если двадцать лет назад сотрудники офисов выполняли различные работы: выходили в копировальное бюро, занимались с картотекой и во время печатания на машинке периодически ударяли по рычагу перевода каретки на новую строку,- то сегодня все эти операции выполняет компьютер.

Специалисты полагают, что естественным положением кистей рук является вертикальное, как при рукопожатии, а вовсе не ладонью вниз, как при работе на ЭВМ. Это дало основу для небывалой активности фирм-производителей компьютерного оборудования в сфере создания эргономичных клавиатур, опор для запястья и других устройств. Наиболее дальновидные руководители фирм предпринимают специальные меры по профилактике заболеваний рук операторов персональных компьютеров.

Заболевания, обусловленные травмой повторяющихся нагрузок, включают болезни нервов, мышц и сухожилий руки. Наиболее часто страдают кисть, запястье и плечо.Чтобы не стать жертвой перечисленных недугов следует:

– не работать на клавиатуре ЭВМ непрерывно более 30 минут;

- менять характер работы в течении дня;

- устраивать разминку перед продолжительной работой на клавиатуре;

Серьезным нагрузкам при продолжительной работе за компьютером подвергается и весь опорно-двигательный аппарат, и в первую очередь – позвоночник. Поэтому важное значение имеет используемая рабочая мебель, в частности кресла. Разработчики приложения имели удобные поворачивающиеся кресла, с регулируемыми высотой и углом наклона спинки.

К сожалению,были нарушены рекомендации по "плотности" размещения компьютеров. Считается, что на один видеомонитор должно приходится 9-10 кв.м. Работа же осуществлялась в помещении, где на одного оператора приходилось только 3,5 кв.м. Расстояние между мониторами в большинстве случаев соответствовало рекомендуемому (2,22 м).


7.5. Факторы окружающей среды.


К основным факторам окружающей среды, имеющим место в помещении можно отнести температуру воздуха, влажность, движение воздуха. Температура в помещении находилась в пределах 20-25 градусов, влажность превышала минимально допустимый уровень в 40%. Правильно спроектированная система вентиляции позволяла поддерживать на рабочих местах метеорологические условия и чистоту воздушной среды в соответствии с гигиеническими и техническими требованиями. Таким образом, все факторы окружающей среды находились в пределах нормы.


7.6. Выводы.


В данной главе были проанализированы факторы, оказывающие негативное влияние на работающих с компьютером операторов, рассмотрены условия работы над программным продуктом, были даны основные рекомендации по правильной организации работы за компьютером. Выполнение последних позволило увеличить эффективность работы и снизить риск заболевания профессиональными недугами, связанными со статичным, малоподвижным характером работы программиста.


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 и вообще, всех воз­можных типов процедур. Описав все процедуры, входящие в состав струк­турной схемы программы, и спроектировав обрабатываемые даннные, завер­шается работа по созданию программы. Все остальное берет на себя De­signer.


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. Объем поступлений и выплат на одного работника СО.

Эта процедура не выполняла никакой обработки информации, хотя Desig­ner позволяет не только определенным образом выводить данные на эк­ран или принтер, но и обрабатывать их. Однако довольно часто возникает необходимость разработать прог­рамму, которая бы обрабатывала данные определенным образом, но это оказывается невозможно сделать с помощью утилиты Designer. В таком случае прибегают к процедуре Other. Это сходный с работой на многих языках программирования процесс в котором используются операторы языка Clarion. Основные части программы отражены в алгоритме и их можно выде­лить следующим образом:

- начало

- объявление и описание группы массивов

- начальная обработка и сортировка данных из базы

- заполнение массивов

- сохранение в специально созданном файле значений

из массивов

- формирование необходимых таблиц

- заполнение таблиц из определенных файлов

- печать таблицы

- конец.

Текст алгоритма разработанной программы приведен в приложении. На первый взгляд программа должна быть простой, однако это впечатление обманчиво, так как программе приходится работать с несколь­кими десятками полей и это нужно должным образом отразить в програм­ме.

Далее кратко будет рассмотрен процесс проектирования пограммы с помощью утилиты Designer. Программа, написанная в Designer не слишком сложная, однако она является хорошим примером работы Clarion-Desig­ner.

Процесс создания любой программы начинается с идеи автоматиза­ции некоторых действий. Нашей задачей являлась автоматизация поиска, обработки и вывода информации по некоторым показателям деятельности страховых организаций.

Начинать следует с проектирования данных. Файлы данных, исполь­зуемые в нашей программе следующие:

- 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. После этого на экране появится главное окно разработки - Applicati­on. Затем необходимо определить файлы баз данных, а также поля и ключевые признаки. Большинство позиций в окнах диалога будут прини­мать те значения, которые автоматически подставляет 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 г. в “+” или “-”);

Таким же образом заполняются и остальные таблицы, но с другими столбцами - показателями.