home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Heaven Sunny 2
/
APPARE2.BIN
/
oh_towns
/
kakeibo
/
kakeibo.bas
next >
Wrap
BASIC Source File
|
1995-06-20
|
244KB
|
6,646 lines
100 '----------------------------家計簿----------by 94.9.1 ------------
105 'kakeibo.bas V1.0 L10
110 '
115 *初期設定
120 CLEAR ,,1024,1300*1000
125 GOSUB *CNF_SETUP :VAR$="KAKEIBO.BAS V1.0 L10"
130 DIM CALE%(INT((141*83+2-1))/2),MONT(12),YOBI$(6) :'カレンダー
135 DIM MXY(20,3),PXY(20,3) :'マウスイチハンテイ
140 DIM MEMO$(MSX),PAST$(MSX) :'メモ
145 DIM KOM$(KSZ),KMT%(KSZ),KMAX(365),ZAN&(366) :'トウロク コウモク
150 DIM KIN&(365,NSX),KMI%(365,NSX),KSU%(365,NSX),KNE$(365,NSX) :'ノート
155 DIM CORD$(CDX),CORDN%(CDX),CONX(CDZ),COFX$(CDZ),COMX(CDZ) :'コード
160 DIM FSI$(CDX),FSN$(CDX),FSD$(CDX),EDX%(CDZ) :'ファイルメイ
165 DIM BNAME$(26),PAGE1(26),PAGE2(26) :'ギンコウメイ
170 DIM BYM$(BNZ),BCD(BNZ),BME$(BNZ),BIN#(BNZ),BOUT#(BNZ) :'フツウ ヨキン
175 DIM TYD$(TYZ),TYN$(TYZ),TYI#(TYZ),TYK$(TYZ),TYO#(TYZ) :'テイキ ヨキン
180 DIM GKX#(365,KSZ),GKT#(5),GZT%(KSZ,1),GZP%(1),GRPZ#(KSZ,1) :'グラフ
185 DIM MAX_O#(12),MAX_I#(12),RFD(10),RFP(10)
190 DIM RFZ(RJZ,1),RFN$(RJZ),RFK&(RJZ),RFS%(RJZ),RJK(RJZ,5)
195 DIM PXL%(20),PYL%(20),PXE%(20),PYE%(20) :'ウインド
200 DIM XLS(10),XES(10),XFS(10),YLS(10),YES(10),YFS(10),BPS(10),BQS(10)
205 CXP=INT((658*498+2-1))/2 :CTP=INT((142*152+2-1))/2
210 CXG=INT((640*480+2-1))/2 :X=INT((303*103+2-1))/2
215 DIM CPY%(CXP),SCR%(CXP),CALK%(CTP),U%(X) :'スクリーン
220 DIM BCL(80) :'カラー
225 MX1=0 :MY1=0 :MX2=639 :MY2=479 :ERP=0
230 CORP=0 :CSL8=1 :WAIX=50 :FSW_P=1 :MEMO_X=10
235 CSP2=1 :CSP5=1 :CSP8=1 :CSPT=1 :CSPB=1 :MOX=1
240 CSP3=1 :CSP6=1 :KMCJ=1
245 GX1=1 :GX2=-17 :GY1=17 :GY2=-17 :GZS=1 :SX=1 :SY=1
250 SCREEN 0 :SCREEN@ 2 :CONSOLE 0,24,2 :CLS
255 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479),%215
260 GOSUB *FAST_MESE
265 ON INTERVAL GOSUB *CLOCK_P :INTERVAL 1
270 IF GRAP_CSW=1 THEN GOSUB *GRAP_CALK
275 GOSUB *SET_SCR
280 GOSUB *MENU1
285 GOSUB *END_MESE
290 IF MJ=0 THEN 280
295 GOSUB *END_SAVE
300 END
305 '--------------------------------------------------------------------
310 *LOAD_MOUSE_DAT
315 ER=0 :MSLP=0
320 ON ERROR GOTO *MSL_ERR
325 OPEN "I",#1,FIL$(5)
330 INPUT #1,ZF,ZE
335 FOR A=ZF TO ZE
340 FOR B=0 TO 3
345 INPUT #1,PXY(A,B)
350 IF EOF(1)=-1 THEN *MSL_EBAK
355 NEXT B
360 NEXT A
365 *MSL_EBAK
370 ON ERROR GOTO 0
375 CLOSE #1
380 IF ER=1 THEN
385 GOSUB *SAVE_MOUSE_DAT
390 IF ER=0 THEN *LOAD_MOUSE_DAT
395 MSLP=1
400 ENDIF
405 *MSL_EBAK2
410 RETURN
415 '
420 *MSL_ERR
425 RESTORE *MXY_DATA1
430 GOSUB *SET_MD
435 IF ERR<>63 THEN *ERR_MESE
440 ER=1
445 RESUME *MSL_EBAK
450 '
455 *SAVE_MOUSE_DAT
460 ER=0
465 ON ERROR GOTO *MSS_ERR
470 OPEN "O",#2,FIL$(5)
475 PRINT #2,XF,XE
480 FOR A=XF TO XE
485 FOR B=0 TO 3
490 PRINT #2,MXY(A,B)
495 NEXT B
500 NEXT A
505 *MSS_EBAK
510 ON ERROR GOTO 0
515 CLOSE #2
520 RETURN
525 '
530 *MSS_ERR
535 IF ERR<>64 THEN *ERR_MESE
540 KILL FIL$(5)
545 RESUME
550 '
555 *SWAP_MD
560 IF MSLP=1 THEN RESTORE *MXY_DATA1 :GOTO *SET_MD
565 XF=ZF :XE=ZE
570 FOR A=ZF TO ZE
575 FOR B=0 TO 3
580 MXY(A,B)=PXY(A,B)
585 NEXT B
590 NEXT A
595 RETURN
600 '
605 *SET_MD
610 READ XF,XE
615 FOR A=XF TO XE
620 FOR B=0 TO 3
625 READ MXY(A,B)
630 NEXT B
635 NEXT A
640 RETURN
645 '
650 '
655 *MXY_DATA1
660 DATA 0,9 :'マウス イチハンテイ データ
665 DATA 30 ,20 ,170,140 :'カレンダー
670 DATA 220,20 ,340,140 :'ファイル
675 DATA 390,20 ,498,140 :'グラフ a
680 DATA 500,20 ,610,140 :'メモ
685 DATA 30 ,170,240,450 :'ノート1
690 DATA 241,170,440,450 :'ノート2
695 DATA 470,200,610,340 :'計算機
700 DATA 470,360,540,450 :'商品コード
705 DATA 550,360,610,450 :'通帳
710 DATA 620,430,635,450 :'end
715 '
720 *SET_CALKTIF
725 LOAD@ FIL$(4),CALK%
730 RETURN
735 '
740 *SET_UPFIL
745 IF FOX>0 AND SET_FX>0 THEN
750 FOXP=SET_FX
755 XL=MPXL+10 :YL=MPYL+60
760 A$="家計簿データ読み込み中"
765 LINE (XL,YL)-STEP(LEN(A$)*8,16), PSET,%BCL(10),BF
770 SYMBOL(XL,YL),A$,1,1,%0
775 GOSUB *FILD_LOAD
780 FSW_P=0
785 ENDIF
790 RETURN
795 '
800 *YOBID_SET
805 RESTORE *YOBI_DAT
810 FOR A=0 TO 6
815 READ YOBI$(A)
820 NEXT A
825 RETURN
830 '
835 *YOBI_DAT
840 DATA 日,月,火,水,木,金,土
845 '
850 *END_LOAD
855 F$=FIL$(6)
860 ON ERROR GOTO *ERR_ENDL
865 OPEN "I",#1,F$
870 INPUT #1,MOX,CSP4S
875 INPUT #1,BANKP,CSPBS,CSPTS
880 INPUT #1,PDF,PDE,GXY,GZY,GXM,GZM,GXD,GZD
885 INPUT #1,GZS,GX2,GY2,SX,SY,GRAP_SW,GRAP_CSW
890 INPUT #1,RSX,RKML
895 FOR A=0 TO 13
900 INPUT #1,PXL%(A),PYL%(A),PXE%(A),PYE%(A)
905 NEXT A
910 INPUT #1,NEXP
915 FOR A=0 TO NEXP
920 INPUT #1,XLS(A),XES(A),XFS(A),YLS(A)
925 INPUT #1,YES(A),YFS(A),BPS(A),BQS(A)
930 NEXT A
935 *ENDL_RET
940 CLOSE #1
945 ON ERROR GOTO 0
950 IF CSP4S=0 THEN CSP4S=1
955 IF CSPBS=0 THEN CSPBS=1
960 IF CSPTS=0 THEN CSPTS=1
965 GOSUB *MEMO_LOAD :CSP4=CSP4S
970 IF BANKP>0 THEN
975 GOSUB *BANK_DLOAD :GOSUB *TEIKI_LOAD
980 CSPB=CSPBS :CSPT=CSPTS
985 ENDIF
990 RETURN
995 '
1000 *ERR_ENDL
1005 IF ERR<>63 THEN *ERR_MESE
1010 GOSUB *SET_PXL
1015 RESUME *ENDL_RET
1020 '
1025 *END_SAVE
1030 F$=FIL$(6)
1035 ON ERROR GOTO *ERR_ENDS
1040 OPEN "O",#1,F$
1045 PRINT #1,MOX,CSP4
1050 PRINT #1,BANKP,CSPB,CSPT
1055 PRINT #1,PDF,PDE,GXY,GZY,GXM,GZM,GXD,GZD
1060 PRINT #1,GZS,GX2,GY2,SX,SY,GRAP_SW,GRAP_CSW
1065 PRINT #1,RSX,RKML
1070 FOR A=0 TO 13
1075 PRINT #1,PXL%(A),PYL%(A),PXE%(A),PYE%(A)
1080 NEXT A
1085 PRINT #1,NEXP
1090 FOR B=0 TO NEXP
1095 A=NP(B)
1100 PRINT #1,XLS(A),XES(A),XFS(A),YLS(A)
1105 PRINT #1,YES(A),YFS(A),BPS(A),BQS(A)
1110 NEXT B
1115 *ENDS_RET
1120 CLOSE #1
1125 ON ERROR GOTO 0
1130 RETURN
1135 '
1140 *ERR_ENDS
1145 IF ERR<>64 THEN *ERR_MESE
1150 KILL F$
1155 RESUME
1160 '
1165 *SET_BCL
1170 RESTORE *BCL_DAT
1175 FOR A=0 TO 29
1180 READ BCL(A)
1185 NEXT A
1190 GOSUB *BCL_LOAD
1195 RETURN
1200 '
1205 *BCL_DAT
1210 DATA 0,1,2,4,5,6,8,21,3,2,9
1215 DATA 10,11,13,14,15,16,13,1,2
1220 DATA 2,20,21,9,27,29,30,1,13,3
1225 *BCL_DAT2
1230 DATA 81,179,52,252,182,88,186,46,218,92
1235 DATA 140,20,188,29,120,163,191,51,195,93
1240 DATA 220,227,49,95,160,24,222,116,80,190
1245 DATA 248,178,232,28,61,183,210,56,84,112
1250 DATA 31,17,184,32,16,131,124,244,242,60,79
1255 '
1260 *SET_PXL
1265 RESTORE *DAT_PXL
1270 FOR A=0 TO 13
1275 READ PXL%(A)
1280 READ PYL%(A)
1285 READ PXE%(A)
1290 READ PYE%(A)
1295 NEXT A
1300 RETURN
1305 '
1310 *DAT_PXL
1315 DATA 200,200,205,160,170,200,290,150,170,150,340,250
1320 DATA 170,200,290,150,150,200,360,150,5 ,180,630,250
1325 DATA 400,200,141,151,200,200,230,160,60 ,180,500,250
1330 DATA 200,200,210,141,200,200,340,141,200,200,210,141
1335 DATA 200,200,210,141,80 ,220,520,230
1340 '
1345 *SET_RXY
1350 GOSUB *SET_DP
1355 YY=PY :MM=PM
1360 M=PM :D=PD :GOSUB *PDX_SET
1365 RXD=D :RXM=M :RXY=PY
1370 B=YOBI :GOSUB *YOBI_P :DP=C
1375 RETURN
1380 '
1385 *SET_SCR
1390 GOSUB *SET_RXY
1395 LOAD@ FIL$(0) :LINE (0,461)-(639,479),PSET,%BCL(0),BF
1400 GOSUB *CALEND_DET
1405 GET@A (0,0)-(639,479),SCR%
1410 GOSUB *SET_CALENDA_TIF :RXMS=RXM
1415 FOR A=0 TO 9 :NP(A)=A :NEXT A
1420 RETURN
1425 '
1430 *SET_CALENDA_TIF
1435 F$=FIL$(13)+RIGHT$("0"+MID$(STR$(RXM),2),2)+".tif"
1440 ON ERROR GOTO *SET_TIF_ERR
1445 LOAD@ F$,(30,20)
1450 *SET_TIF_BAK
1455 ON ERROR GOTO 0
1460 GET@A (30,20)-(170,101),CALE%
1465 RETURN
1470 '
1475 *SET_TIF_ERR
1480 RESUME *SET_TIF_BAK
1485 '
1490 *CALEND_DET
1495 X=68 :Y=105 :B=DP :C=1
1500 SYMBOL(30,105),STR$(PY)+"/"+STR$(PM),.65!,.65!,%BCL(4)
1505 FOR A=1 TO MONT(RXM)
1510 IF B=1 THEN CL=BCL(15) ELSE CL=BCL(0)
1515 SYMBOL(X,Y),MID$(STR$(A),2),.6!,.7!,%CL
1520 C=C+1 :IF A=<10 THEN X=X+10 ELSE X=X+12
1525 IF C>10 THEN
1530 C=1
1535 IF Y=105 THEN X=39 :Y=Y+12 :GOTO 1550
1540 IF Y=105+12 THEN X=33 :Y=Y+12
1545 ENDIF
1550 B=B-1 :IF B<0 THEN B=6
1555 NEXT A
1560 RETURN
1565 '
1570 '--------------------------------------------------------------------
1575 *MENU1
1580 MUX=300 :MUY=200
1585 IF NEXP>0 THEN
1590 IF NEXP>1 THEN GOSUB *SCR_SETUP
1595 NEXP=NEXP-1 :JP=BPS(NEXP)
1600 GOSUB *SWAP_MD
1605 GOTO 1650
1610 ENDIF
1615 *MENU2
1620 PUT@A (0,0)-(639,479),SCR%
1625 IF RXM<>RXMS THEN GOSUB *SET_CALENDA_TIF :RXMS=RXM ELSE PUT@A (30,20)-(170,101),CALE%
1630 GOSUB *SWAP_MD :PALETTE 227,[250,200,200]
1635 GOSUB *SEL_MXY
1640 IF JP>0 THEN WHILE MOUSE(2,0)=-1 :WEND :MOUSE 5
1645 IF ER=1 THEN RETURN
1650 ON JP GOSUB *CALENDER,*FIL_P ,*GRAH_P,*MEMO_P,*NOTO_R,*NOTO_P, *CALK_P ,*CORD_P,*BANK_P,*RET
1655 IF JP=10 THEN RETURN
1660 GOTO *MENU2
1665 '--------------------------------------------------------------------
1670 *SET_DP
1675 PY=VAL(LEFT$(YM$,2)) :PM=VAL(MID$(YM$,4,2)) :PD=VAL(RIGHT$(YM$,2))
1680 YOBI=(((PY-84)+INT((PY-84)/4)) MOD 7)
1685 *SET_DP2
1690 DP=0 :PDX=0
1695 RESTORE *YM_DATA
1700 FOR A=1 TO 12
1705 READ MONT(A)
1710 NEXT A
1715 IF ( PY MOD 4 )=0 THEN MONT(2)=MONT(2)+1 :URY=1 ELSE URY=0
1720 RETURN
1725 '
1730 *YM_DATA
1735 DATA 31,28,31,30,31,30,31,31,30,31,30,31
1740 '-------------------------------------------------------------------
1745 *YOBI_P
1750 A=1 :X=0
1755 WHILE A<M :X=X+MONT(A) :A=A+1 :WEND
1760 C=7-((X+B-URY) MOD 7)
1765 RETURN
1770 '-------------------------------------------------------------------
1775 *PDX_SET
1780 PDX=0
1785 FOR A=1 TO M
1790 IF A<M THEN PDX=PDX+MONT(A)
1795 NEXT A
1800 IF M>2 THEN PDX=PDX+URY
1805 PDX=PDX+D-1
1810 RETURN
1815 '--------------------------------------------------------------------
1820 *SEL_MXY
1825 ER=0 :JP=0 :BJP=0
1830 MOUSE 0
1835 MOUSE 1,MUX,MUY,1
1840 MOUSE 4,MX1,MY1,MX2,MY2
1845 WHILE MOUSE(2,0)=0
1850 K$=INKEY$
1855 IF K$<>"" THEN
1860 IF ASC(K$)<1 THEN 1850
1865 IF ASC(K$)>=1 AND ASC(K$)=<10 THEN
1870 JP=ASC(K$)
1875 GOTO *RET_SEL
1880 ENDIF
1885 ENDIF
1890 IF BDP=8 THEN
1895 T=TIME
1900 IF K$<>"" THEN
1905 A$=INKEY$
1910 IF A$<>"" THEN
1915 IF A$=CHR$(13) THEN *RET_SEL
1920 K$=K$+A$
1925 ENDIF
1930 IF TIME<T+4 THEN 1905 ELSE *RET_SEL
1935 ENDIF
1940 ENDIF
1945 IF BDP=7 THEN
1950 IF K$<>"" THEN GOTO *RET_SEL
1955 ENDIF
1960 IF MOUSE (2,1)=-1 THEN
1965 MUX=MOUSE(4,1) :MUY=MOUSE(5,1)
1970 ER=1
1975 GOTO *RET_SEL2
1980 ENDIF
1985 WEND
1990 MUX=MOUSE(4,0) :MUY=MOUSE(5,0)
1995 FOR A=XF TO XE
2000 IF MUX>MXY(A,0) AND MUX<MXY(A,2) AND MUY>MXY(A,1) AND MUY<MXY(A,3) THEN JP=A+1 :GOTO *RET_SEL
2005 NEXT A
2010 *RET_SEL2
2015 WHILE MOUSE(2,0)=-1 :WEND
2020 WHILE MOUSE(2,1)=-1 :WEND
2025 MOUSE 5
2030 *RET_SEL
2035 RETURN
2040 '-------------------------------------------------------------------
2045 *NEX_XY
2050 NX=NEXP-1
2055 WHILE NX>0
2060 A=NP(NX-1) :GOSUB *SWAP_XY
2065 GOSUB *SET_XYD
2070 IF MUX>MXY(11,0) AND MUX<MXY(11,2) AND MUY>MXY(11,1) AND MUY<MXY(11,3) THEN JP=BDP :NEXP=NEXP-1 :A=NP(NX-1) : GOSUB *SWAP_XY :GOTO *RET_NEX2
2075 A=NP(NX-1) :GOSUB *SWAP_XY :NX=NX-1
2080 WEND
2085 GOSUB *SWAP_MD
2090 FOR A=XF TO XE
2095 IF MUX>MXY(A,0) AND MUX<MXY(A,2) AND MUY>MXY(A,1) AND MUY<MXY(A,3) THEN JP=A+1 :NX=0 :GOTO *RET_NEX
2100 NEXT A
2105 JP=0
2110 *RET_NEX
2115 RETURN
2120 '
2125 *RET_NEX2
2130 C=0
2135 FOR B=0 TO NEXP
2140 NP(C)=NP(B)
2145 IF B<>NX-1 THEN C=C+1
2150 NEXT B
2155 NP(NEXP)=A
2160 RETURN
2165 '
2170 *NEX_P
2175 PUT@A (0,0)-(639,479),SCR%
2180 IF RXM<>RXMS THEN GOSUB *SET_CALENDA_TIF :RXMS=RXM ELSE PUT@A (30,20)-(170,101),CALE%
2185 BCL(1)=BCL(11) :BCL(9)=BCL(6) :BCL(17)=BCL(11) :SKIP=0
2190 PALETTE 227,[250,200,200]
2195 FOR NPX=0 TO NEXP-1
2200 A=NP(NPX) :GOSUB *SWAP_XY
2205 IF NX=0 AND BDP=JP THEN SKIP=NPX+1 :GOTO 2215
2210 GOSUB *BOLD_P
2215 A=NP(NPX) :GOSUB *SWAP_XY
2220 NEXT NPX
2225 IF NX>0 THEN A=NP(NEXP) :GOSUB *SWAP_XY : ON JP GOTO *CALENDER2,*FIL_P2,*GRAH_P2,*MEMO_P2,*NOTO_R2,*NOTO_P2, *CALK_P2 ,*CORD_P2,*BANK_P2
2230 IF SKIP>0 THEN A=NP(SKIP-1) :NX=SKIP :NEXP=NEXP-1 :GOSUB *RET_NEX2 :GOTO 2225
2235 ON JP GOTO *CALENDER,*FIL_P ,*GRAH_P,*MEMO_P,*NOTO_R,*NOTO_P, *CALK_P ,*CORD_P,*BANK_P
2240 RETURN
2245 '
2250 *SCR_BACK
2255 PUT@A (0,0)-(639,479),SCR%
2260 IF RXM<>RXMS THEN GOSUB *SET_CALENDA_TIF :RXMS=RXM ELSE PUT@A (30,20)-(170,101),CALE%
2265 IF NEXP=1 THEN 2315
2270 BCL(1)=BCL(11) :BCL(9)=BCL(6) :BCL(17)=BCL(11) :NPX=0
2275 PALETTE 227,[250,200,200]
2280 WHILE NPX<(NEXP-1)
2285 A=NP(NPX) :GOSUB *SWAP_XY
2290 GOSUB *BOLD_P
2295 A=NP(NPX) :GOSUB *SWAP_XY
2300 NPX=NPX+1
2305 WEND
2310 BCL(1)=BCL(18) :BCL(9)=BCL(19) :BCL(17)=BCL(13)
2315 GOSUB *BOLD_P
2320 RETURN
2325 '
2330 *SCR_SETUP
2335 A=NEXP-1 :GOSUB *SWAP_XY
2340 PUT@A (0,0)-(639,479),SCR%
2345 IF RXM<>RXMS THEN GOSUB *SET_CALENDA_TIF :RXMS=RXM ELSE PUT@A (30,20)-(170,101),CALE%
2350 BCL(1)=BCL(11) :BCL(9)=BCL(6) :BCL(17)=BCL(11)
2355 PALETTE 227,[250,200,200]
2360 NPX=0 :GSWX=1 :YLW=75 :YU=28
2365 WHILE NPX<(NEXP-1)
2370 A=NP(NPX) :GOSUB *SWAP_XY
2375 GOSUB *BOLD_P
2380 A=NP(NPX) :GOSUB *SWAP_XY
2385 NPX=NPX+1
2390 WEND
2395 BCL(1)=BCL(18) :BCL(9)=BCL(19) :BCL(17)=BCL(13) :GSWX=0
2400 A=NEXP-1 :GOSUB *SWAP_XY
2405 RETURN
2410 '
2415 *BOLD_P
2420 MPXF=MPXL+MPXE :MPYF=MPYL+MPYE
2425 GET@A (MPXL,MPYL)-(MPXF+2,MPYF+2),CPY%
2430 *BOLD_P3
2435 LINE (MPXL,MPYL)-STEP(MPXE+2,MPYE+2),PSET,%BCL(4),BF
2440 IF BDP=7 THEN
2445 PUT@A (MPXL,MPYL)-(MPXF,MPYF),CALK%
2450 LINE (MPXL+12,MPYL+1)-STEP(127,8),PSET,%BCL(1),BF
2455 GOSUB *SUJI_PRINT
2460 RETURN
2465 ENDIF
2470 X=16 :Y=16
2475 LINE (MPXL,MPYL)-STEP(MPXE ,MPYE ),PSET,%BCL(0),BF,%BCL(1)
2480 LINE (MPXL,MPYL)-STEP(X ,Y ),PSET,%BCL(0),BF,%BCL(2)
2485 LINE (MPXF,MPYL)-STEP(-X,Y ),PSET,%BCL(0),BF,%BCL(2)
2490 LINE (MPXF,MPYL)-STEP(-X,Y ),PSET,%BCL(0),BF,%BCL(2)
2495 LINE (MPXF,MPYF)-STEP(-X,-Y),PSET,%BCL(0),BF,%BCL(2)
2500 LINE (MPXF,MPYF-Y) -STEP(-X,-Y),PSET,%BCL(0),BF,%BCL(2)
2505 LINE (MPXF,MPYF-Y*2)-STEP(-X,-Y),PSET,%BCL(0),BF,%BCL(2)
2510 XA=INT(X/4) :YA=INT(Y/4)
2515 CONNECT(MPXF-XA*3,MPYF-(Y+YA*3))-STEP(XA*2,0)-STEP(-XA,YA*2)- STEP(-XA,-YA*2),%BCL(0),PSET,F
2520 CONNECT(MPXF-X,MPYF)-STEP(2,-2)-STEP(X-4,0)-STEP(0,-Y+4)-STEP(2,-2) -STEP(0,Y)-STEP(-X,0),%BCL(0),PSET,F,%BCL(4)
2525 CONNECT(MPXF-XA*3,MPYF-(Y*2+YA))-STEP(XA*2,0)-STEP(-XA,-YA*2)- STEP(-XA,YA*2),%BCL(0),PSET,F
2530 CONNECT(MPXF-X,MPYF-Y)-STEP(2,-2)-STEP(X-4,0)-STEP(0,-Y+4)-STEP(2,-2) -STEP(0,Y)-STEP(-X,0),%BCL(0),PSET,F,%BCL(4)
2535 CONNECT(MPXF-XA*3,MPYF-YA*3)-STEP(3,0)-STEP(-3,3)-STEP(0,-3)- STEP(XA*2,YA*2)-STEP(0,-3)-STEP(-3,3)-STEP(3,0), %BCL(0),PSET,F
2540 CONNECT(MPXF-X,MPYF-Y*2)-STEP(2,-2)-STEP(X-4,0)-STEP(0,-Y+4)- STEP(2,-2)-STEP(0,Y)-STEP(-X,0),%BCL(0),PSET,F,%BCL(4)
2545 LINE(MPXL+7,MPYL+3)-STEP(2,2),PSET,%BCL(0),BF
2550 CONNECT(MPXL+7,MPYL+7)-STEP(2,0)-STEP(2,5)-STEP(-6,0)-STEP(2,-5), %BCL(0),PSET,F
2555 CONNECT(MPXL,MPYL+Y)-STEP(2,-2)-STEP(X-4,0)-STEP(0,-Y+4)-STEP(2,-2) -STEP(0,Y)-STEP(-X,0),%BCL(0),PSET,F,%BCL(4)
2560 CONNECT(MPXF-6,MPYL+4)-STEP(0,6)-STEP(-6,0)-STEP(3,2)- STEP(0,-4)-STEP(-3,2),%BCL(0),PSET
2565 CONNECT(MPXF-X,MPYL+Y)-STEP(2,-2)-STEP(X-4,0)-STEP(0,-Y+4)-STEP(2,-2) -STEP(0,Y)-STEP(-X,0),%BCL(0),PSET,F,%BCL(4)
2570 IF BPQ=1 THEN *BOLD_P2
2575 LINE (MPXF-X,MPYF) -STEP(-X,-Y),PSET,%BCL(0),BF,%BCL(2)
2580 LINE (MPXF-X*2,MPYF)-STEP(-X,-Y),PSET,%BCL(0),BF,%BCL(2)
2585 CONNECT(MPXF-(X+XA*3),MPYF-YA*3)-STEP(XA*2,YA)-STEP(-XA*2,YA)- STEP(0,-YA*2),%BCL(0),PSET,F
2590 CONNECT(MPXF-X*2,MPYF)-STEP(2,-2)-STEP(X-4,0)-STEP(0,-Y+4)-STEP(2,-2) -STEP(0,Y)-STEP(-X,0),%BCL(0),PSET,F,%BCL(4)
2595 CONNECT(MPXF-(X*2+XA),MPYF-YA*3)-STEP(-XA*2,YA)-STEP(XA*2,YA)- STEP(0,-YA*2),%BCL(0),PSET,F
2600 CONNECT(MPXF-X*3,MPYF)-STEP(2,-2)-STEP(X-4,0)-STEP(0,-Y+4)-STEP(2,-2) -STEP(0,Y)-STEP(-X,0),%BCL(0),PSET,F,%BCL(4)
2605 *BOLD_P2
2610 X=16 :Y=16
2615 LINE (MPXL,MPYL+Y)-STEP(MPXE-X,MPYE-Y*(2-BPQ)), PSET,%BCL(0),BF,%BCL(2)
2620 ON BDP GOSUB *BD_1P,*BD_2P,*BD_3P ,*BD_4P ,*BD_5P ,*BD_6P ,*RET, *BD_8P,*BD_9P,*BD_10P,*BD_11P,*BD_12P,*BD_13P,*BD_14P, *BD_15P,*BD_16P,*BD_17P
2625 LINE (MPXL+20,MPYL+1)-STEP(MPXE-38,14),PSET,%BCL(1),BF
2630 IF BCL(9)=BCL(6) THEN CL=BCL(12) ELSE CL=BCL(6)
2635 LINE (MPXL+17,MPYL+1)-STEP(LEN(FILS$)*8*.9!+4,14),PSET,%CL,BF
2640 SYMBOL(MPXL+20,MPYL+2),FILS$,.9!,.8!,%BCL(9)
2645 RETURN
2650 '
2655 *RET
2660 RETURN
2665 '
2670 *SET_XYD
2675 XF=0 :XE=11 :X=16 :Y=16
2680 MXY(0,0)=MPXL :MXY(0,1)=MPYL :MXY(0,2)=MPXL+X :MXY(0,3)=MPYL+Y
2685 MXY(1,0)=MPXF-X :MXY(1,1)=MPYL :MXY(1,2)=MPXF :MXY(1,3)=MPYL+Y
2690 MXY(2,0)=MPXF-X :MXY(2,1)=MPYF-Y :MXY(2,2)=MPXF :MXY(2,3)=MPYF
2695 MXY(3,0)=MPXF-X :MXY(3,1)=MPYF-Y*2 :MXY(3,2)=MPXF :MXY(3,3)=MPYF-Y
2700 MXY(4,0)=MPXF-X :MXY(4,1)=MPYF-Y*3 :MXY(4,2)=MPXF :MXY(4,3)=MPYF-Y*2
2705 MXY(5,0)=MPXF-X*2 :MXY(5,1)=MPYF-Y :MXY(5,2)=MPXF-X :MXY(5,3)=MPYF
2710 MXY(6,0)=MPXF-X*3 :MXY(6,1)=MPYF-Y :MXY(6,2)=MPXF-X*2 :MXY(6,3)=MPYF
2715 MXY(7,0)=MPXL+X :MXY(7,1)=MPYL :MXY(7,2)=MPXF-X :MXY(7,3)=MPYL+Y
2720 MXY(8,0)=MPXL :MXY(8,1)=MPYL+Y :MXY(8,2)=MPXF-X :MXY(8,3)=MPYF-Y
2725 MXY(9,0)=MPXF-X :MXY(9,1)=MPYL+Y :MXY(9,2)=MPXF :MXY(9,3)=MPYF-Y*3
2730 MXY(10,0)=MPXL :MXY(10,1)=MPYF-Y :MXY(10,2)=MPXF-X*3 :MXY(10,3)=MPYF
2735 MXY(11,0)=MPXL :MXY(11,1)=MPYL :MXY(11,2)=MPXF :MXY(11,3)=MPYF
2740 RETURN
2745 '
2750 *SET_XYD3
2755 XF=0 :XE=18 :X=20 :Y=20
2760 MXY(0,0)=MPXL :MXY(0,1)=MPYL :MXY(0,2)=MPXL+10 :MXY(0,3)=MPYL+10
2765 MXY(1,0)=MPXL+X :MXY(1,1)=MPYL :MXY(1,2)=MPXF-X :MXY(1,3)=MPYL+Y
2770 MXY(2,0)=MPXL+10 :MXY(2,1)=MPYL+60 : MXY(2,2)=MXY(2,0)+X*3 :MXY(2,3)=MXY(2,1)+Y*3
2775 MXY(3,0)=MPXL+10 :MXY(3,1)=MXY(2,1)+Y*3 : MXY(3,2)=MXY(3,0)+X :MXY(3,3)=MXY(3,1)+Y
2780 MXY(4,0)=MXY(3,2) :MXY(4,1)=MXY(3,1) : MXY(4,2)=MXY(4,0)+X :MXY(4,3)=MXY(4,1)+Y
2785 MXY(5,0)=MXY(4,2) :MXY(5,1)=MXY(3,1) : MXY(5,2)=MXY(5,0)+X :MXY(5,3)=MXY(5,1)+Y
2790 B=0 :C=0
2795 FOR A=6 TO 17
2800 MXY(A,0)=MPXL+(B+3)*X+10
2805 MXY(A,1)=MPYL+C*Y+60
2810 MXY(A,2)=MXY(A,0)+X
2815 MXY(A,3)=MXY(A,1)+Y
2820 B=B+1
2825 IF B>2 THEN B=0 :C=C+1
2830 NEXT A
2835 MXY(18,0)=MPXL :MXY(18,1)=MPYL :MXY(18,2)=MPXF :MXY(18,3)=MPYF
2840 RETURN
2845 '--------------------------------------------------------------------
2850 *ドラッグA
2855 MUXZ=MUX :MUYZ=MUY :XA=MPXF-MUXZ :YA=MPYF-MUYZ
2860 LINE (MPXL,MPYL)-(MUXZ+XA,MUYZ+YA),XOR,%BCL(2),B
2865 WHILE MOUSE(2,0)=-1
2870 IF MOUSE(9)=0 AND MOUSE(10)=0 THEN 2905
2875 LINE (MPXL,MPYL)-(MUXZ+XA,MUYZ+YA),XOR,%BCL(2),B
2880 MUXZ=MOUSE(0) :MUYZ=MOUSE(1)
2885 IF MOUSE(0)-MPXL<200 THEN MUXZ=MPXL+200
2890 IF MOUSE(1)-MPYL<100 THEN MUYZ=MPYL+100
2895 LINE (MPXL,MPYL)-(MUXZ+XA,MUYZ+YA),XOR,%BCL(2),B
2900 MOUSE 1,MUXZ,MUYZ,1
2905 WEND
2910 LINE (MPXL,MPYL)-(MUXZ+XA,MUYZ+YA),XOR,%BCL(2),B
2915 MUX=MOUSE(0) :MUY=MOUSE(1)
2920 MOUSE 5
2925 RETURN
2930 ' -------------------------------------------------------------------
2935 *ドラッグB
2940 MUXW=MOUSE(9) :MUYW=MOUSE(10) :MUXW=0 :MUYW=0
2945 LINE (MPXL,MPYL)-(MPXF,MPYF),XOR,%BCL(2),B
2950 WHILE MOUSE(2,0)=-1
2955 MUXQ=MOUSE(9) :MUYQ=MOUSE(10)
2960 IF MUXQ=0 AND MUYQ=0 THEN 3010
2965 LINE (MPXL+MUXW,MPYL+MUYW)-(MPXF+MUXW,MPYF+MUYW),XOR,%BCL(2),B
2970 MUXW=MUXW+MUXQ :MUYW=MUYW+MUYQ
2975 XA=MPXL+MUXW :YA=MPYL+MUYW :XB=XA+MPXE :YB=YA+MPYE
2980 IF XA<0 THEN MUXW=MPXL*(-1)
2985 IF YA<0 THEN MUYW=MPYL*(-1)
2990 IF XB>639 THEN MUXW=639-MPXF
2995 IF YB>479 THEN MUYW=479-MPYF
3000 MOUSE 1,MUX+MUXW,MUY+MUYW,1
3005 LINE (MPXL+MUXW,MPYL+MUYW)-(MPXF+MUXW,MPYF+MUYW),XOR,%BCL(2),B
3010 WEND
3015 LINE (MPXL+MUXW,MPYL+MUYW)-(MPXF+MUXW,MPYF+MUYW),XOR,%BCL(2),B
3020 MUX=MOUSE(0) :MUY=MOUSE(1)
3025 MOUSE 5
3030 MPXL=MPXL+MUXW :MPYL=MPYL+MUYW
3035 IF MPXL<0 THEN MPXL=0
3040 IF MPYL<0 THEN MPYL=0
3045 RETURN
3050 '--------------------------------------------------------------------
3055 *SWAP_XY
3060 SWAP MPXL,XLS(A) :SWAP MPXE,XES(A) :SWAP MPXF,XFS(A)
3065 SWAP MPYL,YLS(A) :SWAP MPYE,YES(A) :SWAP MPYF,YFS(A)
3070 SWAP BDP ,BPS(A) :SWAP BPQ ,BQS(A)
3075 SWAP REW_X,REWX(A) :SWAP REW_Y,REWY(A)
3080 RETURN
3085 '--------------------------------------------------------------------
3090 *SEL_WAKP
3095 BCL(1)=BCL(18) :BCL(9)=BCL(19) :BCL(17)=BCL(13) :JPQ=0
3100 REW_X=PXE%(BDP-1) :REW_Y=PYE%(BDP-1) :NEXP=NEXP+1
3105 GOSUB *BOLD_P
3110 GOSUB *SET_XYD
3115 IF WKST=1 THEN INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
3120 GOSUB *SEL_MXY
3125 IF WKST=1 THEN INTERVAL OFF
3130 IF BDP=8 THEN
3135 IF ER=1 OR (VAL(K$)>0 AND REF_SW=0) THEN 3115
3140 IF VAL(K$)>0 AND REF_SW=1 THEN
3145 A=VAL(K$) :JP=9 :XL=1 :YL=0
3150 IF CORP=0 THEN
3155 COXP=A
3160 GOSUB *BSCR_P8X
3165 ELSE
3170 P=A
3175 GOSUB *BSCR_P8XB
3180 ENDIF
3185 GOTO 3255
3190 ENDIF
3195 ENDIF
3200 IF ER=1 THEN 3115
3205 IF JP=0 AND REF_SW=0 THEN
3210 GOSUB *NEX_XY
3215 IF JP>0 THEN
3220 IF JP=10 THEN PXL%(BDP-1)=MPXL :PYL%(BDP-1)=MPYL : PXE%(BDP-1)=MPXE :PYE%(BDP-1)=MPYE
3225 A=NP(NEXP-1) :GOSUB *SWAP_XY :JPQ=1
3230 RETURN
3235 ENDIF
3240 GOTO 3110
3245 ENDIF
3250 ON JP GOSUB *RET_P,*REW_P,*DRAG_A,*YL_DOWN,*YL_UP,*XL_RIGHT, *XL_LEFT,*DRAG_B,*BSCR_P,*CSL_S,*CSL_D,*RET_W
3255 IF JP=1 THEN
3260 PXL%(BDP-1)=MPXL :PYL%(BDP-1)=MPYL : PXE%(BDP-1)=MPXE :PYE%(BDP-1)=MPYE
3265 IF BDP=4 THEN IF MEM_EXS=1 THEN GOSUB *MEMO_SAVE
3270 GOSUB *CLOSE_P
3275 IF REF_SW>0 THEN A=NP(NEXP) :GOSUB *SWAP_XY :RETURN
3280 IF NEXP=0 THEN RETURN ELSE JP=BPS(NP(NEXP-1)) :NX=0 :JPQ=1 : RETURN
3285 ENDIF
3290 GOTO 3115
3295 '
3300 *BSCR_P
3305 ON BDP GOSUB *BSCR_P1,*BSCR_P2,*BSCR_P3,*BSCR_P4,*BSCR_P5, *BSCR_P6,*RET ,*BSCR_P8,*BSCR_P9
3310 RETURN
3315 '
3320 *YL_DOWN
3325 ON BDP GOSUB *YL_DOWN1,*YL_DOWN2,*YL_DOWN3,*YL_DOWN4,*YL_DOWN5, *YL_DOWN6,*RET ,*YL_DOWN8,*YL_DOWN9
3330 RETURN
3335 '
3340 *YL_UP
3345 ON BDP GOSUB *YL_UP1,*YL_UP2,*YL_UP3,*YL_UP4,*YL_UP5, *YL_UP6,*RET ,*YL_UP8,*YL_UP9
3350 RETURN
3355 '
3360 *XL_RIGHT
3365 ON BDP GOSUB *XL_RIGHT1,*XL_RIGHT2,*XL_RIGHT3,*XL_RIGHT4,*XL_RIGHT5, *XL_RIGHT6,*RET ,*XL_RIGHT8,*XL_RIGHT9
3370 RETURN
3375 '
3380 *XL_LEFT
3385 ON BDP GOSUB *XL_LEFT1,*XL_LEFT2,*XL_LEFT3,*XL_LEFT4,*XL_LEFT5, *XL_LEFT6,*RET ,*XL_LEFT8,*XL_LEFT9
3390 RETURN
3395 '
3400 *CSL_S
3405 ON BDP GOSUB *CSL_S1,*CSL_S2,*CSL_S3,*CSL_S4,*CSL_S5, *CSL_S6,*RET ,*CSL_S8,*CSL_S9
3410 RETURN
3415 '
3420 *CSL_D
3425 ON BDP GOSUB *CSL_D1,*RET_W ,*CSL_D3,*RET_W ,*RET_W , *RET_W ,*RET ,*CSL_D8,*RET_W
3430 RETURN
3435 '
3440 '--------------------------------------------------------------------
3445 *CALENDER
3450 A=NP(NEXP) :GOSUB *SWAP_XY
3455 MPXL=PXL%(0) :MPYL=PYL%(0) :MPXE=PXE%(0) :MPYE=PYE%(0) :CSP=1
3460 GOSUB *SWAP_MD
3465 A=0 :GOSUB *OPEN_P
3470 *CALENDER2
3475 BDP=1 :BPQ=0 :WKST=0
3480 GOSUB *SEL_WAKP
3485 IF JPQ=1 THEN GOTO *NEX_P
3490 RETURN
3495 '
3500 *RET_P
3505 NEXP=NEXP-1
3510 *RET_W
3515 WHILE MOUSE(2,0)=-1 :WEND
3520 MOUSE 5
3525 RETURN
3530 '
3535 *DRAG_A
3540 GOSUB *ドラッグA
3545 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),CPY%
3550 MPXE=MUXZ-MPXL+XA :MPYE=MUYZ-MPYL+YA
3555 IF BDP=3 THEN A=0 :GOSUB *GRAP_ZOOM
3560 GOSUB *BOLD_P
3565 GOSUB *SET_XYD
3570 RETURN
3575 '
3580 *DRAG_B
3585 MPXLS=MPXL :MPYLS=MPYL
3590 GOSUB *ドラッグB
3595 SWAP MPXL,MPXLS :SWAP MPYL,MPYLS
3600 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),CPY%
3605 SWAP MPXL,MPXLS :SWAP MPYL,MPYLS
3610 GOSUB *BOLD_P
3615 IF BPQ=0 THEN GOSUB *SET_XYD
3620 IF BPQ=2 THEN GOSUB *SET_XYD3
3625 RETURN
3630 '
3635 *REW_P
3640 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),CPY%
3645 SWAP MPXE,REW_X :SWAP MPYE,REW_Y
3650 MPXL=MPXF-MPXE
3655 IF MPXL<0 THEN MPXL=0
3660 IF MPYL+MPYE>479 THEN MPYL=479-MPYE
3665 MOUSE 1,,,0
3670 GOSUB *BOLD_P
3675 GOSUB *SET_XYD
3680 GOSUB *RET_W
3685 RETURN
3690 '
3695 *BD_1P
3700 YMD$=LEFT$(DATE$,2)+"年"+MID$(DATE$,4,2)+"月"+RIGHT$(DATE$,2)+"日"
3705 IF MID$(YMD$,5,1)="0" THEN MID$(YMD$,5,1)=" "
3710 IF MID$(YMD$,9,1)="0" THEN MID$(YMD$,9,1)=" "
3715 FILS$="calender "+YMD$
3720 YX$=RIGHT$(" "+STR$(YY),2)+"年"+RIGHT$(" "+STR$(MM),2)+"月"
3725 SYMBOL(MPXL+10,MPYL+20),YX$,1,1,%BCL(0)
3730 IF CSP=1 THEN
3735 IF DP=1 THEN XL=MPXL+40 ELSE XL=MPXL+60+(7-DP)*20
3740 ELSE
3745 XL=MPXL+40
3750 ENDIF
3755 YL=MPYL+40 :IF DP=7 THEN P=0 ELSE P=DP
3760 FOR A=CSP TO MONT(MM)
3765 IF (A MOD 7)=P THEN CL=BCL(15) ELSE CL=BCL(0)
3770 SYMBOL(XL,YL),RIGHT$(" "+STR$(A),2),1,1,%CL
3775 IF RXD=A AND RXM=MM AND RXY=YY THEN CIRCLE (XL+8,YL+7),10,%BCL(7),,,,F,XOR
3780 IF GXD=A AND GXM=MM AND GXY=YY THEN CIRCLE (XL+8,YL+7),10,%BCL(21),,,,F,XOR
3785 IF GZD=A AND GZM=MM AND GZY=YY THEN CIRCLE (XL+8,YL+7),10,%BCL(2),,,,F,XOR
3790 XL=XL+20 :IF XL>MPXF-31 THEN YL=YL+20 :XL=MPXL+40
3795 IF YL>MPYF-30 THEN 3805
3800 NEXT A
3805 GOSUB *CASOL_P1 :GOSUB *CASOL_P1B
3810 RETURN
3815 '
3820 *YL_DOWN1
3825 P=INT((MPXE-50)/20)
3830 IF CSP=<1 THEN IF DP=1 THEN P=8-DP ELSE P=DP-1
3835 CSP=CSP+P
3840 IF CSP>MONT(MM) THEN CSP=CSP-INT((MPXE-50)/20)
3845 GOSUB *BD_SUBP
3850 RETURN
3855 '
3860 *YL_UP1
3865 CSP=CSP-INT((MPXE-50)/20)
3870 IF CSP<1 THEN CSP=1
3875 GOSUB *BD_SUBP
3880 RETURN
3885 '
3890 *XL_LEFT1
3895 MM=MM-1
3900 IF MM<1 THEN MM=12
3905 M=MM :B=YOBI :GOSUB *YOBI_P :DP=C :CSP=1
3910 GOSUB *BD_SUBP
3915 RETURN
3920 '
3925 *XL_RIGHT1
3930 MM=MM+1
3935 IF MM>12 THEN MM=1
3940 M=MM :B=YOBI :GOSUB *YOBI_P :DP=C :CSP=1
3945 GOSUB *BD_SUBP
3950 RETURN
3955 '
3960 *CSL_S1
3965 A=MONT(MM)
3970 GOSUB *カーソル_SET1
3975 CSP=P
3980 GOSUB *BD_SUBP
3985 RETURN
3990 '
3995 *CSL_D1
4000 A=12
4005 GOSUB *カーソル_SET2
4010 MM=P
4015 M=MM :B=YOBI :GOSUB *YOBI_P :DP=C :CSP=1
4020 GOSUB *BD_SUBP
4025 RETURN
4030 '
4035 *カーソル_SET1
4040 P=INT((MUY-MPYL-16)/(MPYE-64)*A)+1
4045 *カーソル_SET3
4050 IF P>A THEN P=A
4055 IF P<1 THEN P=1
4060 RETURN
4065 '
4070 *カーソル_SET2
4075 P=INT((MUX-MPXL)/(MPXE-48)*A)+1
4080 GOTO *カーソル_SET3
4085 '
4090 *CASOL_P1
4095 A=MONT(MM) :B=CSP
4100 GOSUB *CASOL_PX1
4105 RETURN
4110 '
4115 *CASOL_P1B
4120 A=MPXE :B=((MPXE-48)/12)*(MM-1)
4125 GOSUB *CASOL_PX2
4130 RETURN
4135 '
4140 *BD_SUBP
4145 GOSUB *BOLD_BACK
4150 WHILE MOUSE(2,0)=-1 :WEND
4155 MOUSE 5
4160 RETURN
4165 '
4170 *BSCR_P1
4175 XL=MPXL+40 :YL=MPYL+40
4180 IF CSP=1 THEN IF DP=1 THEN P=0 ELSE P=8-DP ELSE P=0
4185 IF MUX<XL OR MUY<YL THEN RETURN
4190 B=INT((MPXE-50)/20)
4195 X=INT((MUX-XL)/20)+INT((MUY-YL)/20)*B-P+CSP
4200 IF X=<MONT(MM) AND X>0 THEN
4205 IF REF_SW<2 THEN D=X :M=MM :GOSUB *PDX_SET : RXD=X :RXY=YY :RXM=MM :DEXE_SW=1
4210 IF REF_SW=2 THEN GXD=X :GXY=YY :GXM=MM :REF_SW=3 :GOTO 4220
4215 IF REF_SW=3 THEN GZD=X :GZY=YY :GZM=MM :REF_SW=2
4220 ENDIF
4225 GOSUB *BD_SUBP
4230 RETURN
4235 '-------------------------------------------------------------------
4240 *FIL_P
4245 A=NP(NEXP) :GOSUB *SWAP_XY
4250 MPXL=PXL%(1) :MPYL=PYL%(1) :MPXE=PXE%(1) :MPYE=PYE%(1)
4255 A=1 :GOSUB *OPEN_P
4260 *FIL_P2
4265 BDP=2 :BPQ=0 :WKST=1 :REF_SW=0
4270 GOSUB *SEL_WAKP
4275 IF JPQ=1 THEN GOTO *NEX_P
4280 RETURN
4285 '
4290 *BD_2P
4295 FILS$="[ファイル登録]"
4300 WINDOW (MPXL+VXU+1,MPYL+17)-(MPXF+VXU-17,MPYF-17) : VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
4305 GOSUB *BD2_LINE
4310 IF FOX=0 THEN WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479) :RETURN
4315 XL=MPXL+5 :YL=MPYL+60 :X=(FLX+FLZ+2)*8
4320 FOR A=CSP2 TO FOX
4325 IF SET_FX=A THEN CL=BCL(8) ELSE CL=BCL(0)
4330 SYMBOL(XL,YL),LEFT$(FSI$(A-1),FLZ),1,1,%CL
4335 SYMBOL(XL+FLZ*8+8,YL),RIGHT$(FSN$(A-1),FLX),1,1,%BCL(0)
4340 SYMBOL(XL+X,YL),FSD$(A-1),1,1,%BCL(0)
4345 IF KFXP=A THEN LINE (XL,YL)-STEP(X-8,16),XOR,%BCL(2),BF
4350 YL=YL+18
4355 IF YL>MPYF-32 THEN 4365
4360 NEXT A
4365 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
4370 GOSUB *CASOL_P2 :GOSUB *CASOL_P2B
4375 RETURN
4380 '
4385 *BD2_LINE
4390 IF FLZ=0 THEN FLZ=8
4395 IF FLX=0 THEN FLX=12
4400 IF FSW_P=0 THEN CL1=BCL(0) :CL2=BCL(3) :CL3=BCL(4) :CL4=BCL(2) ELSE CL1=BCL(3) :CL2=BCL(0) :CL3=BCL(2) :CL4=BCL(4)
4405 LINE (MPXL+10,MPYL+19)-STEP(7*8,18),PSET,%CL1,BF,%CL3
4410 SYMBOL(MPXL+10,MPYL+20),"[保 存]",1,1,%CL1
4415 LINE (MPXL+80,MPYL+19)-STEP(7*8,18),PSET,%CL2,BF,%CL4
4420 SYMBOL(MPXL+80,MPYL+20),"[読 込]",1,1,%CL2
4425 LINE (MPXL+150,MPYL+19)-STEP(8*8,18),PSET,%BCL(0),BF,%BCL(4)
4430 SYMBOL(MPXL+150,MPYL+20),"[set.up]",1,1,%BCL(8)
4435 LINE (MPXL+228,MPYL+19)-STEP(6*8,18),PSET,%BCL(0),BF,%BCL(4)
4440 SYMBOL(MPXL+228,MPYL+20),"[新規]",1,1,%BCL(8)
4445 XL=MPXL+5 :YL=MPYL+55 :X=(FLX+FLZ+2)*8
4450 SYMBOL(MPXL+5,YL-10),STR$(FLZ),.7!,.7!,%BCL(0)
4455 SYMBOL(MPXL+FLZ*8+5,YL-10),STR$(FLX),.7!,.7!,%BCL(0)
4460 LINE (XL,YL-5)-STEP(0,7),PSET,%BCL(0)
4465 LINE (XL+FLZ*8,YL-5)-STEP(0,7),PSET,%BCL(0)
4470 LINE (XL+(FLX+FLZ)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
4475 LINE (XL,YL )-STEP(X-16,0),PSET,%BCL(0)
4480 RETURN
4485 '
4490 *YL_DOWN2
4495 CSP2=CSP2+1
4500 IF CSP2>FOX THEN CSP2=FOX
4505 GOSUB *BD_SUBP
4510 RETURN
4515 '
4520 *YL_UP2
4525 CSP2=CSP2-1
4530 IF CSP2<1 THEN CSP2=1
4535 GOSUB *BD_SUBP
4540 RETURN
4545 '
4550 *XL_LEFT2
4555 VXU=VXU-100
4560 GOSUB *BD_SUBP
4565 RETURN
4570 '
4575 *XL_RIGHT2
4580 VXU=VXU+100
4585 GOSUB *BD_SUBP
4590 RETURN
4595 '
4600 *CSL_S2
4605 A=FOX
4610 GOSUB *カーソル_SET1
4615 CSP2=P
4620 GOSUB *BD_SUBP
4625 RETURN
4630 '
4635 *CASOL_P2
4640 A=FOX :B=CSP2
4645 GOSUB *CASOL_PX1
4650 RETURN
4655 '
4660 *CASOL_P2B
4665 A=(FLX+FLZ+2)*8 :B=VXU
4670 GOSUB *CASOL_PX2
4675 RETURN
4680 '
4685 *CASOL_PX1
4690 IF A<1 THEN A=1
4695 YL=INT((MPYE-80)/A)
4700 IF A>1 THEN YR=(MPYE-80-YL)/(A-1)
4705 Y =(B-1)*YR+MPYL+16
4710 LINE (MPXF,MPYL+16)-STEP(-16,MPYE-64),PSET,%BCL(0),BF,%BCL(5)
4715 LINE (MPXF,Y)-STEP(-16,YL+16),PSET,%BCL(0),BF,%BCL(17)
4720 CONNECT(MPXF-16,Y+YL+16)-STEP(2,-2)-STEP(12,0)-STEP(0,-YL-12)- STEP(2,-2)-STEP(0,YL+16)-STEP(-16,0),%BCL(0),PSET,F,%BCL(0)
4725 RETURN
4730 '
4735 *BSCR_P2
4740 INTERVAL ON
4745 YL=INT((MUY-MPYL-75)/18)+1
4750 IF YL<0 THEN *LINE_EXE2
4755 FOXP=YL+CSP2
4760 IF FOXP>FOX THEN *FILN_INP
4765 GOSUB *FILN_EXE
4770 RETURN
4775 '
4780 *LINE_EXE2
4785 IF MUY<MPYL+40 THEN *FSW_EXE
4790 IF MUX>MPXL-VXU+FLZ*8+5 THEN *LINE_EXE2B
4795 GOSUB *LINE_EXEP
4800 IF CAR_END=1 THEN FLZ=VAL(MX$)
4805 GOSUB *SCR_BACK
4810 RETURN
4815 '
4820 *LINE_EXE2B
4825 IF MUX>MPXL-VXU+(FLX+FLZ)*8+5 THEN RETURN
4830 GOSUB *LINE_EXEP
4835 IF CAR_END=1 THEN FLX=VAL(MX$)
4840 GOSUB *SCR_BACK
4845 RETURN
4850 '
4855 *FILN_EXE
4860 IF MUX>MPXL-VXU+FLZ*8+5 THEN *FILN_EXE2
4865 CRXF=MPXL+5-VXU :CRXE=CRXF+FLZ*8
4870 CRYF=MPYL+YL*18+60 :CRYE=CRYF+18
4875 CAR_END=0 :CRLEN=FLZ+1 :CRB=BCL(5)
4880 MX$=FSI$(FOXP-1) :XLP=LEN(MX$) :GOSUB *KEY_CR
4885 WAIT WAIX :MJ=MOUSE(3,0) :IF MJ>0 THEN *FIL_ACSES
4890 GOSUB *INKEY_W
4895 IF RCLICK>0 THEN CRB=BCL(10) :GOSUB *KEY_CR :GOSUB *KILL_P2 : GOSUB *FILN_SAVE :GOTO 4910
4900 IF GET_POINT=1 THEN IF MUX>MPXL-VXU+150 AND MUX<MPXL-VXU+206 THEN CAR_END=1 :IF SET_FX=FOXP THEN SET_FX=0 ELSE SET_FX=FOXP
4905 IF CAR_END=1 THEN FSI$(FOXP-1)=MX$ :GOSUB *FILN_SAVE
4910 GOSUB *BOLD_P2 :RCLICK=0
4915 RETURN
4920 '
4925 *FILN_INP
4930 IF FOX>=CDX THEN GOSUB *FLL_CORD :RETURN
4935 FSI$(FOX)="" :FSN$(FOX)=""
4940 IF MUX>MPXL-VXU+FLZ*8+5 THEN *FILN_INP2
4945 CRXF=MPXL+5-VXU :CRXE=CRXF+FLZ*8
4950 CRYF=MPYL+YL*18+60 :CRYE=CRYF+18
4955 CAR_END=0 :CRLEN=FLZ+1
4960 MX$="" :XLP=1 :CRB=BCL(5)
4965 GOSUB *INKEY_WP
4970 IF GET_POINT=1 THEN IF MUX>MPXL-VXU+150 AND MUX<MPXL-VXU+206 THEN CAR_END=1 :IF SET_FX=FOXP THEN SET_FX=0 ELSE SET_FX=FOXP
4975 IF CAR_END=1 THEN GOSUB *FILN_SET
4980 GOSUB *BOLD_P2 :RCLICK=0
4985 RETURN
4990 '
4995 *FILN_EXE2
5000 CRXF=MPXL+(FLZ+1)*8+5-VXU :CRXE=CRXF+FLX*8
5005 CRYF=MPYL+YL*18+60 :CRYE=CRYF+18
5010 CAR_END=0 :CRLEN=FLX+1 :CRB=BCL(5)
5015 IF FSN$(FOXP-1)="" THEN MX$=FIL$(3) ELSE MX$=FSN$(FOXP-1)
5020 XLP=LEN(MX$) :GOSUB *KEY_CR
5025 WAIT WAIX :MJ=MOUSE(3,0) :IF MJ>0 THEN *FIL_ACSES
5030 GOSUB *INKEY_W
5035 IF RCLICK>0 THEN CRB=BCL(10) :GOSUB *KEY_CR :GOSUB *KILL_P2 : GOSUB *FILN_SAVE :GOTO 5050
5040 IF GET_POINT=1 THEN IF MUX>MPXL-VXU+150 AND MUX<MPXL-VXU+206 THEN CAR_END=1 :IF SET_FX=FOXP THEN SET_FX=0 ELSE SET_FX=FOXP
5045 IF CAR_END=1 THEN FSN$(FOXP-1)=MX$ :GOSUB *FILN_SAVE
5050 GOSUB *BOLD_P2 :RCLICK=0
5055 RETURN
5060 '
5065 *FILN_INP2
5070 CRXF=MPXL+(FLZ+1)*8+5-VXU :CRXE=CRXF+FLX*8
5075 CRYF=MPYL+YL*18+60 :CRYE=CRYF+18
5080 CAR_END=0 :CRLEN=FLX+1 :CRB=BCL(5)
5085 MX$=FIL$(3) :XLP=LEN(MX$)
5090 GOSUB *INKEY_WP
5095 IF GET_POINT=1 THEN IF MUX>MPXL-VXU+150 AND MUX<MPXL-VXU+206 THEN CAR_END=1 :IF SET_FX=FOXP THEN SET_FX=0 ELSE SET_FX=FOXP
5100 IF CAR_END=1 THEN FOX=FOX+1 :FSN$(FOX-1)=MX$ :GOSUB *FILN_SAVE
5105 GOSUB *BOLD_P2 :RCLICK=0
5110 RETURN
5115 '
5120 *FILN_LOAD
5125 ON ERROR GOTO *FILN_LERR
5130 OPEN "I",#1,FIL$(10)
5135 INPUT #1,FOX,FLZ,FLX,SET_FX
5140 FOR A=0 TO FOX-1
5145 LINE INPUT #1,FSI$(A) :B=LEN(FSI$(A))
5150 IF B>2 THEN FSI$(A)=MID$(FSI$(A),2,B-2)
5155 LINE INPUT #1,FSN$(A) :B=LEN(FSN$(A))
5160 IF B>2 THEN FSN$(A)=MID$(FSN$(A),2,B-2)
5165 LINE INPUT #1,FSD$(A) :B=LEN(FSD$(A))
5170 IF B>2 THEN FSD$(A)=MID$(FSD$(A),2,B-2)
5175 IF EOF(1)=-1 THEN *FNLOAD_RET
5180 NEXT A
5185 *FNLOAD_RET
5190 CLOSE #1
5195 ON ERROR GOTO 0
5200 CSP2=1
5205 RETURN
5210 '
5215 *FILN_LERR
5220 IF ERR<>63 THEN *ERR_MESE
5225 FOX=0
5230 RESUME *FNLOAD_RET
5235 '
5240 *FILN_SAVE
5245 ON ERROR GOTO *FILN_SERR
5250 OPEN "O",#1,FIL$(10)
5255 PRINT #1,FOX,FLZ,FLX,SET_FX
5260 FOR A=0 TO FOX-1
5265 WRITE #1,FSI$(A)
5270 WRITE #1,FSN$(A)
5275 WRITE #1,FSD$(A)
5280 NEXT A
5285 *FNSAVE_RET
5290 CLOSE #1
5295 ON ERROR GOTO 0
5300 RETURN
5305 '
5310 *FILN_SERR
5315 IF ERR<>64 THEN *ERR_MESE
5320 KILL FIL$(10)
5325 RESUME
5330 '
5335 *FILN_SET
5340 FOX=FOX+1
5345 FSI$(FOX-1)=MX$
5350 IF FSN$(FOX-1)="" THEN
5355 A=INSTR(MX$,".")
5360 IF A=0 OR A>8 THEN A=8 ELSE A=A-1
5365 FSN$(FOX-1)=FIL$(3)+LEFT$(MX$,A)+".dat"
5370 ENDIF
5375 GOSUB *FILN_SAVE
5380 RETURN
5385 '
5390 *KILL_P2
5395 IF FOX>=CDX THEN 5425
5400 FOR A=FOXP-1 TO FOX-2
5405 SWAP FSI$(A),FSI$(A+1)
5410 SWAP FSN$(A),FSN$(A+1)
5415 SWAP FSD$(A),FSD$(A+1)
5420 NEXT A
5425 IF FOX>0 THEN FOX=FOX-1
5430 RETURN
5435 '
5440 *FSW_EXE
5445 IF MUX>MPXL-VXU+10 AND MUX<MPXL-VXU+66 THEN FSW_P=0
5450 IF MUX>MPXL-VXU+80 AND MUX<MPXL-VXU+136 THEN FSW_P=1
5455 IF MUX>MPXL-VXU+228 AND MUX<MPXL-VXU+276 THEN *NEW_DAT
5460 MOUSE 1,,,0
5465 GOSUB *BD_2P
5470 RETURN
5475 '
5480 *NEW_DAT
5485 RESTORE *NEW_MESD :GOSUB *ERMD_SET :ERP=1
5490 GOSUB *MESSAGE_P :ERP=0
5495 IF MESJ=1 THEN
5500 YM$=DATE$ :GOSUB *SET_RXY :FSW_P=1 :KFXP=0 :KFX$=""
5505 GRAP_SW=0 :PDF=0 :PDE=365 :GRAP_CSW=0
5510 ERASE KMAX,ZAN&,KIN&,KMI%,KSU%,KNE$
5515 DIM KMAX(365),ZAN&(366),KIN&(365,NSX)
5520 DIM KMI%(365,NSX),KSU%(365,NSX),KNE$(365,NSX)
5525 ENDIF
5530 GOSUB *SCR_BACK
5535 RETURN
5540 '
5545 *NEW_MESD
5550 DATA 2
5555 DATA "現在のデータを消去し",0
5560 DATA "新規ファイルを作成します",0
5565 '
5570 *FIL_ACSES
5575 MOUSE 5
5580 CRB=BCL(10) :GOSUB *KEY_CR
5585 IF FSW_P=0 THEN GOSUB *FILD_SAVE :FSW_P=1 ELSE GOSUB *FILD_LOAD :FSW_P=0
5590 GOSUB *SCR_BACK
5595 RETURN
5600 '
5605 *FILD_LOAD
5610 IF FSN$(FOXP-1)="" THEN RETURN
5615 F$=FSN$(FOXP-1) :KFX$=FSI$(FOXP-1) :KFXP=FOXP :EXPS=0
5620 ON ERROR GOTO *FILD_LERR
5625 OPEN "I",#1,F$
5630 INPUT #1,YM$
5640 FOR A=0 TO 365
5645 INPUT #1,KMAX(A)
5650 INPUT #1,KIN&(A,0),KMI%(A,0),KSU%(A,0)
5655 INPUT #1,KNE$(A,0)
5660 NEXT A
5665 FOR A=0 TO 365
5670 FOR B=1 TO NSX
5675 INPUT #1,KIN&(A,B),KMI%(A,B),KSU%(A,B)
5680 INPUT #1,KNE$(A,B)
5685 NEXT B
5690 NEXT A
5695 GOSUB *SET_RXY
5700 *LERR_BACK
5705 CLOSE #1 :X=0 :PDXS=PDX :GOSUB *ZAN_P2
5710 ON ERROR GOTO 0
5715 RETURN
5720 '
5725 *FILD_LERR
5730 IF ERR<>63 THEN *ERR_MESE
5735 RESUME *LERR_BACK
5740 '
5745 *FILD_SAVE
5750 IF FSN$(FOXP-1)="" THEN RETURN
5755 F$=FSN$(FOXP-1) :KFX$=FSI$(FOXP-1) :KFXP=FOXP :EXPS=0
5760 A$=RIGHT$(" "+STR$(RXY),2)+"/"+RIGHT$(" "+STR$(RXM),2)+"/"+ RIGHT$(" "+STR$(RXD),2)
5765 IF ZCALK_SW=1 AND DEXE_SW=1 THEN GOSUB *ZAN_P
5770 ON ERROR GOTO *FILD_SERR
5775 OPEN "O",#1,F$
5780 PRINT #1,A$
5790 FOR A=0 TO 365
5795 PRINT #1,KMAX(A)
5800 PRINT #1,KIN&(A,0),KMI%(A,0),KSU%(A,0)
5805 PRINT #1,KNE$(A,0)
5810 NEXT A
5815 FOR A=0 TO 365
5820 FOR B=1 TO NSX
5825 PRINT #1,KIN&(A,B),KMI%(A,B),KSU%(A,B)
5830 PRINT #1,KNE$(A,B)
5835 NEXT B
5840 NEXT A
5845 FSD$(FOXP-1)=DATE$+"_"+TIME$
5850 *SERR_BACK
5855 CLOSE #1
5860 ON ERROR GOTO 0
5865 IF ER=0 THEN GOSUB *FILN_SAVE
5870 RETURN
5875 '
5880 *FILD_SERR
5885 IF ERR<>64 THEN *ERR_MESE
5890 KILL F$
5895 RESUME
5900 '-------------------------------------------------------------------
5905 *CORD_P
5910 A=NP(NEXP) :GOSUB *SWAP_XY
5915 MPXL=PXL%(7) :MPYL=PYL%(7) :MPXE=PXE%(7) :MPYE=PYE%(7)
5920 GOSUB *SWAP_MD
5925 A=7 :GOSUB *OPEN_P
5930 *CORD_P2
5935 BDP=8 :CRB=BCL(5) :BPQ=0 :WKST=0
5940 GOSUB *SEL_WAKP
5945 IF JPQ=1 THEN GOTO *NEX_P
5950 RETURN
5955 '
5960 *CORD_LOAD
5965 ON ERROR GOTO *ERR_P8L
5970 OPEN "I",#1,FIL$(8)
5975 INPUT #1,COX,CLX
5980 FOR A=0 TO COX-1
5985 INPUT #1,CORD$(A)
5990 INPUT #1,CORDN%(A)
5995 IF EOF(1)=-1 THEN *CLOAD_RET
6000 NEXT A
6005 *CLOAD_RET
6010 CLOSE #1
6015 ON ERROR GOTO 0
6020 CSP8=1
6025 RETURN
6030 '
6035 *ERR_P8L
6040 IF ERR<>63 THEN *ERR_MESE
6045 COX=0
6050 RESUME *CLOAD_RET
6055 '
6060 *CORD_SAVE
6065 ON ERROR GOTO *ERR_P8S
6070 OPEN "O",#1,FIL$(8)
6075 PRINT #1,COX,CLX
6080 FOR A=0 TO COX-1
6085 PRINT #1,CORD$(A)
6090 PRINT #1,CORDN%(A)
6095 NEXT A
6100 *CSAVE_RET
6105 CLOSE #1
6110 ON ERROR GOTO 0
6115 RETURN
6120 '
6125 *ERR_P8S
6130 IF ERR<>64 THEN *ERR_MESE
6135 KILL FIL$(8)
6140 RESUME
6145 '
6150 *BD_8P
6155 IF CORP=0 THEN A$="[ 項 目 ]" ELSE A$="[ 名 称 ]"
6160 FILS$="名称コード "+A$
6165 WINDOW (MPXL+VXU+1,MPYL+17)-(MPXF+VXU-17,MPYF-17) : VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
6170 IF CORP>0 THEN *BD_8PB
6175 GOSUB *BD8A_LINE
6180 SYMBOL(MPXL+45,MPYL+20),STR$(CLX-4),.7!,.7!,%BCL(0)
6185 IF COX=0 THEN WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479) :RETURN
6190 XL=MPXL+10 :YL=MPYL+35 :X=(CLX+2)*8
6195 FOR A=CSP8 TO COX
6200 SYMBOL(XL,YL),RIGHT$(" "+STR$(A),3),1,1,%BCL(0)
6205 SYMBOL(XL+35,YL),LEFT$(CORD$(A-1),CLX-4),1,1,%BCL(0)
6210 YL=YL+18
6215 IF YL>MPYF-48 THEN XL=XL+X :YL=MPYL+35 :L=L-1 : IF L<0 THEN 6225
6220 NEXT A
6225 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
6230 LINE (MPXL+1,MPYF-33)-STEP(MPXE-18,16),XOR,%BCL(3),BF
6235 SYMBOL(MPXL+10,MPYF-33),"[編集]",1,1,%BCL(0)
6240 GOSUB *CASOL_P8 :GOSUB *CASOL_P8Z
6245 RETURN
6250 '
6255 *BD_8PB
6260 L=INT((MPXE-30)/8) :P1=KLEN(LEFT$(CORD$(CORP-1),L))
6265 IF LEN(CORD$(CORP-1))>L THEN B$=KLEFT$(CORD$(CORP-1),P1) ELSE B$=CORD$(CORP-1)
6270 SYMBOL(MPXL+10,MPYL+20),B$,1,1,%BCL(0)
6275 GOSUB *BD8B_LINE
6280 SYMBOL(MPXL+45,MPYL+40),STR$(CSX-13),.7!,.7!,%BCL(0)
6285 IF COZ=0 THEN WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479) :RETURN
6290 XL=MPXL+10 :YL=MPYL+60 :X=(CSX+2)*8
6295 FOR A=CSL8 TO COZ
6300 SYMBOL(XL,YL),RIGHT$(" "+STR$(CONX(A-1)),4),1,1,%BCL(0)
6305 SYMBOL(XL+36,YL),LEFT$(COFX$(A-1),CSX-13),1,1,%BCL(0)
6310 B$="\"+STR$(COMX(A-1))
6315 SYMBOL(XL+(CSX-LEN(B$))*8,YL),B$,1,1,%BCL(0)
6320 YL=YL+18
6325 IF YL>MPYF-48 THEN XL=XL+X :YL=MPYL+60 :L=L-1 : IF L<0 THEN 6335
6330 NEXT A
6335 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
6340 LINE (MPXL+1,MPYF-33)-STEP(MPXE-18,16),XOR,%BCL(3),BF
6345 SYMBOL(MPXL+10,MPYF-33),"[編集] <-.A.ア.サ.ナ.マ.ラ.->",1,1,%BCL(0)
6350 GOSUB *CASOL_P8B :GOSUB *CASOL_P8BZ
6355 RETURN
6360 '
6365 *BD8A_LINE
6370 IF CLX=0 THEN CLX=20
6375 XL=MPXL+5 :YL=MPYL+30 :X=(CLX+2)*8 :L=INT((MPXE-25)/X)+1
6380 IF ((MPXE-25) MOD X)>0 THEN L=L+1
6385 FOR A=1 TO L
6390 LINE (XL,YL-5)-STEP(0,7),PSET,%BCL(0)
6395 IF XL+(X-2*8)>MPXF-16 THEN XB=MPXF-XL-16 ELSE XB=X-2*8 :LINE (XL+CLX*8,YL-5)-STEP(0,7),PSET,%BCL(0)
6400 LINE (XL,YL )-STEP(XB,0),PSET,%BCL(0)
6405 LINE (XL+4*8,YL-5)-STEP(0,7),PSET,%BCL(0)
6410 XL=XL+X
6415 NEXT A
6420 RETURN
6425 '
6430 *BD8B_LINE
6435 IF CSX=0 THEN CSX=23
6440 XL=MPXL+5 :YL=MPYL+50 :X=(CSX+2)*8 :L=INT((MPXE-25)/X)+1
6445 IF ((MPXE-25) MOD X)>0 THEN L=L+1
6450 FOR A=1 TO L
6455 LINE (XL,YL-5)-STEP(0,7),PSET,%BCL(0)
6460 LINE (XL+CSX*8,YL-5)-STEP(0,7),PSET,%BCL(0)
6465 LINE (XL,YL )-STEP(X-2*8,0),PSET,%BCL(0)
6470 LINE (XL+5*8,YL-5)-STEP(0,7),PSET,%BCL(0)
6475 LINE (XL+(CSX-8)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
6480 LINE (XL+CSX*8,YL-5)-STEP(0,7),PSET,%BCL(0)
6485 XL=XL+X
6490 NEXT A
6495 RETURN
6500 '
6505 *YL_DOWN8
6510 IF CORP>0 THEN *YL_DOWN8B
6515 CSP8=CSP8+1
6520 IF CSP8>COX THEN CSP8=COX
6525 GOSUB *BD_SUBP
6530 RETURN
6535 '
6540 *YL_UP8
6545 IF CORP>0 THEN *YL_UP8B
6550 CSP8=CSP8-1
6555 IF CSP8<1 THEN CSP8=1
6560 GOSUB *BD_SUBP
6565 RETURN
6570 '
6575 *YL_DOWN8B
6580 CSL8=CSL8+1
6585 IF CSL8>COZ THEN CSL8=COZ
6590 GOSUB *BD_SUBP
6595 RETURN
6600 '
6605 *YL_UP8B
6610 CSL8=CSL8-1
6615 IF CSL8<1 THEN CSL8=1
6620 GOSUB *BD_SUBP
6625 RETURN
6630 '
6635 *XL_RIGHT8
6640 IF CORP>0 THEN *XL_LEFT8B
6645 L=INT((MPYE-67)/18)
6650 CSP8=CSP8+L
6655 IF CSP8>COX THEN CSP8=CSP8-L
6660 GOSUB *BD_SUBP
6665 RETURN
6670 '
6675 *XL_LEFT8
6680 IF CORP>0 THEN *XL_RIGHT8B
6685 L=INT((MPYE-67)/18)
6690 CSP8=CSP8-L
6695 IF CSP8<1 THEN CSP8=1
6700 GOSUB *BD_SUBP
6705 RETURN
6710 '
6715 *XL_LEFT8B
6720 L=INT((MPYE-92)/18)
6725 CSL8=CSL8+L
6730 IF CSL8>COZ THEN CSL8=CSL8-L
6735 GOSUB *BD_SUBP
6740 RETURN
6745 '
6750 *XL_RIGHT8B
6755 L=INT((MPYE-92)/18)
6760 CSL8=CSL8-L
6765 IF CSL8<1 THEN CSL8=1
6770 GOSUB *BD_SUBP
6775 RETURN
6780 '
6785 *CASOL_P8
6790 A=COX :B=CSP8
6795 GOSUB *CASOL_PX1
6800 RETURN
6805 '
6810 *CASOL_P8Z
6815 A=MPXE :B=((MPXE-48)/COX)*(CSP8-1)
6820 GOSUB *CASOL_PX2
6825 RETURN
6830 '
6835 *CASOL_P8B
6840 A=COZ :B=CSL8
6845 GOSUB *CASOL_PX1
6850 RETURN
6855 '
6860 *CASOL_P8BZ
6865 A=MPXE :B=((MPXE-48)/COZ)*(CSL8-1)
6870 GOSUB *CASOL_PX2
6875 RETURN
6880 '
6885 *CSL_S8
6890 IF CORP>0 THEN *CSL_S8B
6895 A=COX
6900 GOSUB *カーソル_SET1
6905 CSP8=P
6910 GOSUB *BD_SUBP
6915 RETURN
6920 '
6925 *CSL_D8
6930 IF CORP>0 THEN *CSL_D8B
6935 A=COX
6940 GOSUB *カーソル_SET2
6945 CSP8=P
6950 GOSUB *BD_SUBP
6955 RETURN
6960 '
6965 *CSL_S8B
6970 A=COZ
6975 GOSUB *カーソル_SET1
6980 CSL8=P
6985 GOSUB *BD_SUBP
6990 RETURN
6995 '
7000 *CSL_D8B
7005 A=COZ
7010 GOSUB *カーソル_SET2
7015 CSL8=P
7020 GOSUB *BD_SUBP
7025 RETURN
7030 '
7035 *BSCR_P8
7040 IF CORP>0 THEN *BSCR_P8B
7045 IF MUY>MPYF-32 AND MUY<MPYF-16 THEN
7050 IF MUX>MPXL+10 AND MUX<MPXL+58 THEN GOSUB *CORD_EDIT
7055 RETURN
7060 ENDIF
7065 Y=INT((MPYE-67)/18)
7070 XL=INT((MUX-MPXL-10)/((CLX+2)*8))
7075 IF ((MUX-MPXL-10) MOD ((CLX+2)*8))>0 THEN XL=XL+1
7080 YL=INT((MUY-MPYL-35)/18)
7085 IF YL<0 THEN *LINE_EXE8
7090 COXP=(XL-1)*Y+YL+CSP8
7095 *BSCR_P8X
7100 IF COXP>COX THEN *CORD_INPUT
7105 GOSUB *CORD_EXE
7110 RETURN
7115 '
7120 *BSCR_P8B
7125 IF MUY>MPYF-32 AND MUY<MPYF-16 THEN
7130 IF MUX>MPXL+10 AND MUX<MPXL+58 THEN GOSUB *CORD_EDIT
7135 IF MUX>MPXL+66 AND MUX<MPXF-16 THEN GOSUB *CORD_REFP
7140 RETURN
7145 ENDIF
7150 IF MUY<MPYL+40 THEN *RET_CORDP
7155 Y=INT((MPYE-92)/18)
7160 XL=INT((MUX-MPXL-10)/((CSX+2)*8))
7165 IF ((MUX-MPXL-10) MOD ((CSX+2)*8))>0 THEN XL=XL+1
7170 YL=INT((MUY-MPYL-78)/18)+1
7175 IF YL<0 THEN *LINE_EXE8B
7180 COZP=(XL-1)*Y+YL+CSL8
7185 IF COZP>COZ THEN *CORDNO_INPUT
7190 GOSUB *CORDNO_EXE
7195 RETURN
7200 '
7205 *LINE_EXEP
7210 XL=MPXE/2-4*8
7215 LINE (MPXL+XL-5,MPYL+35)-STEP(8*8+10,28),PSET,%BCL(0),BF,%BCL(6)
7220 LINE (MPXL+XL,MPYL+40)-STEP(8*8,18),PSET,%BCL(0),BF,%BCL(5)
7225 MX$="" :CRXF=MPXL+XL :CRYF=MPYL+41 :CRXE=CRXF+8*8 :CRYE=CRYF+16
7230 CRLEN=7 :XLP=0 :CAR_END=0 :CRB=BCL(5)
7235 GOSUB *INKEY_W
7240 RETURN
7245 '
7250 *INKEY_WP
7255 GOSUB *KEY_CR
7260 *INKEY_W
7265 WHILE MOUSE(2,0)=-1 :WEND
7270 GOSUB *INKEY_P
7275 MOUSE 5
7280 RETURN
7285 '
7290 *LINE_EXE8
7295 GOSUB *LINE_EXEP
7300 IF CAR_END=1 THEN CLX=VAL(MX$)+4
7305 GOSUB *BOLD_P2
7310 RETURN
7315 '
7320 *CORD_EXE
7325 CRXF=MPXL+(XL-1)*((CLX+2)*8)+42 :CRXE=CRXF+CLX*8
7330 CRYF=MPYL+YL*18+35 :CRYE=CRYF+18
7335 IF CRXE>MPXF-16 AND (MPXE-16)>CLX*8 THEN VXU=CRXE-MPXF+16 :GOSUB *BOLD_BACK : CRXF=CRXF-VXU :CRXE=CRXE-VXU
7340 CAR_END=0 :CRLEN=CLX-3
7345 IF REF_SW=1 THEN CRB=BCL(10) ELSE CRB=BCL(5)
7350 MX$=CORD$(COXP-1) :XLP=LEN(MX$)
7355 IF K$="" THEN GOSUB *KEY_CR :WAIT WAIX ELSE K$=""
7360 MJ=MOUSE(3,0)
7365 IF MJ>0 AND REF_SW=0 THEN VXU=0 :GOTO *CORDNO_INP
7370 IF MJ=0 AND REF_SW=1 THEN VXU=0 :GOTO *CORDNO_INP
7375 CRB=BCL(5)
7380 GOSUB *INKEY_WP
7385 IF RCLICK>0 THEN CRB=BCL(10) :GOSUB *KEY_CR :GOSUB *KILL_P8 : GOSUB *CORD_SAVE :GOTO 7395
7390 IF CAR_END=1 THEN CORD$(COXP-1)=MX$ :GOSUB *CORD_SAVE
7395 VXU=0 :GOSUB *BOLD_P2 :RCLICK=0
7400 RETURN
7405 '
7410 *CORD_INPUT
7415 IF COXP>=CDX THEN *FLL_CORD
7420 CORD$(COXP)=""
7425 CRXF=MPXL+(XL-1)*((CLX+2)*8)+42 :CRXE=CRXF+CLX*8
7430 CRYF=MPYL+YL*18+35 :CRYE=CRYF+18
7435 IF CRXE>MPXF-16 AND (MPXE-16)>CLX*8 THEN VXU=CRXE-MPXF+16 :GOSUB *BOLD_P2 : CRXF=CRXF-VXU :CRXE=CRXE-VXU
7440 CAR_END=0 :CRLEN=CLX-3 :CRB=BCL(5)
7445 MX$="" :XLP=0
7450 GOSUB *INKEY_WP
7455 IF CAR_END=1 THEN GOSUB *CORD_SP_SET
7460 VXU=0 :GOSUB *BOLD_P2 :RCLICK=0
7465 RETURN
7470 '
7475 *CORDNO_INP
7480 CRB=BCL(10) :GOSUB *KEY_CR
7485 CORP=COXP
7490 CFX$=FIL$(9)+RIGHT$("00"+MID$(STR$(CORDN%(CORP-1)),2),3)+".dat"
7495 GOSUB *CORDNO_LOAD
7500 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),CPY%
7505 MOUSE 1,,,0
7510 GOSUB *BOLD_P
7515 GOSUB *RET_W
7520 RETURN
7525 '
7530 *LINE_EXE8B
7535 GOSUB *LINE_EXEP
7540 IF CAR_END=1 THEN CSX=VAL(MX$)+13
7545 GOSUB *BOLD_P2
7550 RETURN
7555 '
7560 *CORDNO_EXE
7565 CRXF=MPXL+(XL-1)*((CSX+2)*8)+5 :CRXE=CRXF+CSX*8
7570 CRYF=MPYL+YL*18+60 :CRYE=CRYF+18
7575 IF CRXE>MPXF-16 AND (MPXE-16)>CSX*8 THEN VXU=CRXE-MPXF+32 :GOSUB *BOLD_P2 : CRXF=CRXF-VXU :CRXE=CRXE-VXU
7580 MX$=MID$(STR$(CONX(COZP-1)),2)+" "+COFX$(COZP-1)+"\"+ MID$(STR$(COMX(COZP-1)),2)
7585 XLP=LEN(MX$) :CAR_END=0 :CRLEN=CSX+1
7590 IF REF_SW=1 THEN CRB=BCL(10) ELSE CRB=BCL(5)
7595 GOSUB *KEY_CR
7600 WAIT WAIX
7605 IF MOUSE(3,0)=0 AND REF_SW=1 THEN VXU=0 :GOTO *CORDNO_PUT
7610 CRB=BCL(5)
7615 GOSUB *INKEY_WP
7620 IF RCLICK>0 THEN CRB=BCL(10) :GOSUB *KEY_CR :GOSUB *KILL_P8B : GOSUB *CORDNO_SAVE :GOTO 7630
7625 IF CAR_END=1 THEN COZP=COZP-1 :GOSUB *SET_CORDNO :GOSUB *CORDNO_SAVE
7630 VXU=0 :GOSUB *BOLD_P2 :RCLICK=0
7635 RETURN
7640 '
7645 *CORDNO_INPUT
7650 IF COZP>=CDZ THEN *FLL_CORDNO
7655 CRXF=MPXL+(XL-1)*((CSX+2)*8)+5 :CRXE=CRXF+CSX*8
7660 CRYF=MPYL+YL*18+60 :CRYE=CRYF+18
7665 IF CRXE>MPXF-16 AND (MPXE-16)>CSX*8 THEN VXU=CRXE-MPXF+32 :GOSUB *BOLD_P2 : CRXF=CRXF-VXU :CRXE=CRXE-VXU
7670 MX$=MID$(STR$(CONX(COZP-1)),2)+" "+COFX$(COZP-1)+"\"+ MID$(STR$(COMX(COZP-1)),2)
7675 MX$="" :XLP=0 :CAR_END=0 :CRLEN=CSX+1 :CRB=BCL(5)
7680 GOSUB *INKEY_WP
7685 IF CAR_END=1 THEN COZ=COZ+1 :COZP=COZ-1 :GOSUB *SET_CORDNO : GOSUB *CORDNO_SAVE
7690 VXU=0 :GOSUB *BOLD_P2 :RCLICK=0
7695 RETURN
7700 '
7705 *SET_CORDNO
7710 N=VAL(MX$)
7715 IF N>0 THEN
7720 P=INSTR(MX$," ")
7725 IF P=0 THEN CONX(COZP)=N ELSE CONX(COZP)=VAL(LEFT$(MX$,P-1))
7730 P=P+1
7735 ELSE
7740 P=1
7745 ENDIF
7750 A=INSTR(MX$,"\")
7755 IF A=0 THEN A$=MID$(MX$,P) ELSE A$=MID$(MX$,P,A-P) : COMX(COZP)=VAL(MID$(MX$,A+1))
7760 IF A$<>"" THEN COFX$(COZP)=A$
7765 RETURN
7770 '
7775 *EXE_NOP
7780 FOR A=0 TO COZ-1
7785 IF CONX(A)>N THEN *EXE_NOP2
7790 NEXT A
7795 RETURN
7800 '
7805 *EXE_NOP2
7810 FOR B=COZ-1 TO A STEP -1
7815 SWAP CONX(B),CONX(B-1)
7820 SWAP COFX$(B),COFX$(B-1)
7825 SWAP COMX(B),COMX(B-1)
7830 NEXT B
7835 RETURN
7840 '
7845 *CORDNO_PUT
7850 CODN$=COFX$(COZP-1) :CODX=COMX(COZP-1)
7855 JP=1 :GET_ON=1
7860 NEXP=NEXP-1
7865 MOUSE 5
7870 RETURN
7875 '
7880 *BSCR_P8XB
7885 FOR A=1 TO COZ
7890 IF CONX(A-1)=P THEN COZP=A :GOTO *CORDNO_PUT
7895 NEXT A
7900 RETURN
7905 '
7910 *RET_CORDP
7915 CORP=0
7920 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),CPY%
7925 MOUSE 1,,,0
7930 GOSUB *BOLD_P
7935 GOSUB *RET_W
7940 RETURN
7945 '
7950 *KILL_P8
7955 IF COXP>=CDX THEN 7980
7960 FOR A=COXP-1 TO COX-2
7965 SWAP CORD$(A) ,CORD$(A+1)
7970 SWAP CORDN%(A),CORDN%(A+1)
7975 NEXT A
7980 IF COX>0 THEN COX=COX-1
7985 RETURN
7990 '
7995 *KILL_P8B
8000 IF COZP>=CDZ THEN 8030
8005 FOR A=COZP-1 TO COZ-2
8010 SWAP CONX(A) ,CONX(A+1)
8015 SWAP COFX$(A),COFX$(A+1)
8020 SWAP COMX(A) ,COMX(A+1)
8025 NEXT A
8030 IF COZ>0 THEN COZ=COZ-1
8035 RETURN
8040 '
8045 *CORD_SP_SET
8050 COX=COX+1
8055 CORD$(COX-1)=MX$
8060 FOR A=1 TO CDX
8065 FOR B=0 TO COX-2
8070 IF CORDN%(B)=A THEN 8085
8075 NEXT B
8080 GOTO 8095
8085 NEXT A
8090 A=0
8095 CORDN%(COX-1)=A
8100 GOSUB *CORD_SAVE
8105 RETURN
8110 '
8115 *CORD_REFP
8120 P=INT((MUX-MPXL-66)/8) :'[編集] <-.A.ア.サ.ナ.マ.ラ.->
8125 IF P>16 THEN GOSUB *RET_W :RETURN
8130 IF P<2 THEN *MOVE_F
8135 IF P>14 THEN *MOVE_E
8140 IF P=2 THEN A$=" " :B$="@"
8145 IF P=3 THEN A$="A" :B$="Z"
8150 IF P=4 THEN A$="a" :B$="z"
8155 IF P>4 AND P<12 OR P=13 THEN A$=CHR$(ASC("ア")+(P-5)*5) :B$=CHR$(ASC(A$)+4)
8160 IF P=12 THEN A$="ヤ" :B$="ヨ"
8165 IF P=14 THEN A$="ワ" :B$="ン"
8170 GOSUB *REF_IND
8175 IF P>0 THEN CSL8=P :GOSUB *BOLD_BACK
8180 RETURN
8185 '
8190 *REF_IND
8195 P=0
8200 FOR A=CSL8 TO COZ-1
8205 C$=LEFT$(COFX$(A),1)
8210 IF C$>=A$ AND C$=<B$ THEN P=A+1 :RETURN
8215 NEXT A
8220 RETURN
8225 '
8230 *MOVE_F
8235 CSL8=1
8240 GOSUB *BD_SUBP
8245 RETURN
8250 '
8255 *MOVE_E
8260 CSL8=COZ
8265 GOSUB *BD_SUBP
8270 RETURN
8275 '
8280 *CORDNO_LOAD
8285 ON ERROR GOTO *ERR_NOP8L
8290 OPEN "I",#1,CFX$
8295 INPUT #1,COZ,CSX
8300 FOR A=0 TO COZ-1
8305 INPUT #1,CONX(A)
8310 INPUT #1,COFX$(A)
8315 INPUT #1,COMX(A)
8320 IF EOF(1)=-1 THEN *CLIN_RET
8325 NEXT A
8330 *CLIN_RET
8335 CLOSE #1
8340 ON ERROR GOTO 0
8345 CSL8=1
8350 RETURN
8355 '
8360 *ERR_NOP8L
8365 IF ERR<>63 THEN *ERR_MESE
8370 COZ=0
8375 RESUME *CLIN_RET
8380 '
8385 *CORDNO_SAVE
8390 ON ERROR GOTO *ERR_NOP8S
8395 OPEN "O",#1,CFX$
8400 PRINT #1,COZ,CSX
8405 FOR A=0 TO COZ-1
8410 PRINT #1,CONX(A)
8415 PRINT #1,COFX$(A)
8420 PRINT #1,COMX(A)
8425 NEXT A
8430 *CSNO_RET
8435 CLOSE #1
8440 ON ERROR GOTO 0
8445 RETURN
8450 '
8455 *ERR_NOP8S
8460 IF ERR<>64 THEN *ERR_MESE
8465 KILL CFX$
8470 RESUME
8475 '
8480 *FLL_CORD
8485 RESTORE *ERM_D1 :GOSUB *ERMD_SET
8490 GOSUB *MESSAGE_P
8495 RETURN
8500 '
8505 *FLL_CORDNO
8510 RESTORE *ERM_D2 :GOSUB *ERMD_SET
8515 GOSUB *MESSAGE_P
8520 RETURN
8525 '
8530 *ERMD_SET
8535 READ ERMX
8540 FOR A=1 TO ERMX
8545 READ ERM$(A-1),ERC(A-1)
8550 NEXT A
8555 RETURN
8560 '
8565 *ERM_D1
8570 DATA 3
8575 DATA "登録領域が一杯です",0
8580 DATA "これ以上名称を登録する事は出来ません" ,10
8585 DATA "不要な名称を削除してから登録し直してください",10
8590 '
8595 *ERM_D2
8600 DATA 3
8605 DATA "登録領域が一杯です",0
8610 DATA "これ以上名称コードを登録する事は出来ません" ,10
8615 DATA "不要な名称コードを削除してから登録し直してください",10
8620 '
8625 '------------------------------------------------------------------
8630 *CORD_EDIT
8635 X1=MPXL :Y1=MPYL :X2=MPXF :Y2=MPYF
8640 A=9 :GOSUB *SWAP_XY
8645 MPXL=PXL%(13):MPYL=PYL%(13) :MPXE=PXE%(13) :MPYE=PYE%(13)
8650 IF CORP>0 THEN EC(1)=CORP ELSE EC(1)=CSP8
8655 P=EC(1) :GOSUB *PUT_COD
8660 GOSUB *OPEN_P2
8665 BCL(1)=BCL(18) :BCL(9)=BCL(19) :EC(2)=0 :EC(3)=0 :EC(0)=1
8670 REW_X=MPXE :REW_Y=MPYE :BDP=17 :BPQ=0 :EDCS=1 :EDX=COZ
8675 MUX_S=MUX :MUY_S=MUY :EDSW=0 :SEP_SW=0 :EDCX=1
8680 GOSUB *BOLD_P
8685 GOSUB *SET_XYD
8690 GOSUB *SEL_MXY
8695 IF ER=1 THEN 8715
8700 ON JP GOSUB *RET_P,*REW_P,*DRAG_A,*YL_DOWN8I,*YL_UP8I,*XL_RIGHT8I, *XL_LEFT8I,*DRAG_B,*BSCR_P8I,*CSL_S8I,*CSL_D8I,*RET_W
8705 IF JP<>1 THEN 8690
8710 NEXP=NEXP+1
8715 GOSUB *CLOSE_P2
8720 PXL%(13)=MPXL :PYL%(13)=MPYL :PXE%(13)=MPXE :PYE%(13)=MPYE
8725 A=9 :GOSUB *SWAP_XY :MUX=MUX_S :MUY=MUY_S
8730 GOSUB *SET_XYD :GOSUB *SCR_BACK
8735 JP=9 :REW_X=PXE%(7) :REW_Y=PYE%(7)
8740 RETURN
8745 '
8750 *BD_17P
8755 FILS$="名称コード [項目編集]"
8760 WINDOW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17) : VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
8765 GOSUB *BD17_LINE
8770 XL=MPXL :YL=MPYL+55
8775 IF EC(1)>0 THEN
8780 SYMBOL(XL,YL),RIGHT$(" "+STR$(EC(1)),3),1,1,%BCL(0)
8785 SYMBOL(XL+35,YL),LEFT$(CORD$(EC(1)-1),CLX-4),1,1,%BCL(0)
8790 X=XL+CLX*8+120 :Y=YL
8795 FOR A=EC(0) TO COZ
8800 SYMBOL(X,Y),RIGHT$(" "+STR$(CONX(A-1)),4),1,1,%BCL(0)
8805 SYMBOL(X+36,Y),LEFT$(COFX$(A-1),CSX-13),1,1,%BCL(0)
8810 B$="\"+STR$(COMX(A-1))
8815 SYMBOL(X+(CSX-LEN(B$))*8,Y),B$,1,1,%BCL(0)
8820 IF EDX%(A-1)=1 THEN LINE (X,Y)-STEP(CSX*8,16), XOR,%BCL(8),BF
8825 Y=Y+18
8830 IF Y>YL+160 THEN 8840
8835 NEXT A
8840 ENDIF
8845 IF EC(2)>0 THEN
8850 SYMBOL(XL,YL+54),RIGHT$(" "+STR$(EC(2)),3),1,1,%CL3
8855 SYMBOL(XL+35,YL+54),LEFT$(CORD$(EC(2)-1),CLX-4),1,1,%CL3
8860 ENDIF
8865 IF EC(3)>0 THEN
8870 SYMBOL(XL,YL+107),RIGHT$(" "+STR$(EC(3)),3),1,1,%BCL(0)
8875 SYMBOL(XL+35,YL+107),LEFT$(CORD$(EC(3)-1),CLX-4),1,1,%BCL(0)
8880 ENDIF
8885 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
8890 GOSUB *CASOL_P8I :GOSUB *CASOL_P8IB
8895 RETURN
8900 '
8905 *BD17_LINE
8910 IF CSX=0 THEN CSX=23
8915 XL=MPXL+5 :YL=MPYL+50 :X=(CLX+2)*8
8920 LINE (XL,YL+2)-STEP(X,20),PSET,%BCL(0),B
8925 SYMBOL(XL,YL-20),"[編集項目]",1,1,%BCL(0)
8930 IF SEP_SW=0 THEN CL1=BCL(10) :CL2=BCL(2) :CL3=BCL(0) :CL4=BCL(3) ELSE CL1=BCL(2) :CL2=BCL(10) :CL3=BCL(3) :CL4=BCL(0)
8935 LINE (XL+INT(X/2),YL+23)-STEP(0,6),PSET,%CL3
8940 LINE (XL+INT(X/2)-30,YL+29)-STEP(60,20),PSET,%CL3,BF,%CL1
8945 SYMBOL(XL+INT(X/2)-20,YL+31),"結 合",1,1,%CL3
8950 LINE (XL+INT(X/2),YL+50)-STEP(0,6),PSET,%CL3
8955 LINE (XL,YL+56)-STEP(X,20),PSET,%CL3,B
8960 LINE (XL+INT(X/2)+31,YL+39)-STEP(INT(X/2)-22,0),PSET,%CL3
8965 LINE -STEP(0,44),PSET,%BCL(0)
8970 LINE -STEP(-INT(X/2)-10,0),PSET,%BCL(0)
8975 LINE -STEP(0,27),PSET,%BCL(0)
8980 SYMBOL STEP(-INT(X/2),-18),"[保存先名称]",1,1,%BCL(0)
8985 LINE STEP(0,18)-STEP(X,20),PSET,%BCL(0),B
8990 CONNECT STEP(5,0)-STEP(0,-20)-STEP(17,0)-STEP(3,3)-STEP(0,17)- STEP(-20,0),%BCL(0),PSET,F,%BCL(2)
8995 CONNECT STEP(2,-2)-STEP(0,-16)-STEP(2,0)-STEP(0,4)-STEP(12,0)- STEP(0,-4)-STEP(2,2)-STEP(0,14)-STEP(-2,0)-STEP(0,-4)- STEP(-12,0)-STEP(0,4)-STEP(-2,0),%BCL(0),PSET,F,%BCL(0)
9000 LINE STEP(10,-16)-STEP(2,2),PSET,%BCL(0),BF
9005 LINE STEP(-INT(X/2)-19,17)-STEP(0,7),PSET,%BCL(0)
9010 LINE STEP(-30,0)-STEP(60,20),PSET,%BCL(0),B
9015 SYMBOL STEP(-50,-18),"実 行",1,1,%BCL(0)
9020 LINE (XL+X,YL+12)-STEP(100,0),PSET,%BCL(0),B
9025 LINE STEP(0,-10)-STEP(CSX*8,162),PSET,%BCL(0),B
9030 LINE (XL+X+10,YL+39)-STEP(15,0),PSET,%CL4
9035 LINE STEP(0,-10)-STEP(60,20),PSET,%CL4,BF,%CL2
9040 SYMBOL STEP(-50,-18),"分 離",1,1,%CL4
9045 LINE STEP(50,8)-STEP(14,0),PSET,%CL4
9050 SYMBOL (XL+X+100,YL-20),"[編集名称]",1,1,%BCL(0)
9055 LINE (XL+X+200,YL-20)-STEP(32,16),PSET,%BCL(0),B
9060 SYMBOL (XL+X+204,YL-19),"ALL",1,1,%BCL(0)
9065 LINE (XL+X+25,YL+56)-STEP(60,20),PSET,%BCL(0),B
9070 SYMBOL STEP(-55,-18),"123 順",1,1,%BCL(0)
9075 LINE STEP(55,8)-STEP(15,0),PSET,%BCL(0)
9080 LINE (XL+X+25,YL+83)-STEP(60,20),PSET,%BCL(0),B
9085 SYMBOL STEP(-55,-18),"アイウ 順",1,1,%BCL(0)
9090 LINE STEP(55,8)-STEP(15,0),PSET,%BCL(0)
9095 RETURN
9100 '
9105 *YL_DOWN8I
9110 EC(0)=EC(0)+1
9115 IF EC(0)>EDX THEN EC(0)=EDX
9120 GOSUB *BD_SUBP
9125 RETURN
9130 '
9135 *YL_UP8I
9140 EC(0)=EC(0)-1
9145 IF EC(0)<1 THEN EC(0)=1
9150 GOSUB *BD_SUBP
9155 RETURN
9160 '
9165 *XL_RIGHT8I
9170 L=INT((MPYE-71)/18)+1
9175 EC(0)=EC(0)+L
9180 IF EC(0)>EDX THEN EC(0)=EC(0)-L
9185 GOSUB *BD_SUBP
9190 RETURN
9195 '
9200 *XL_LEFT8I
9205 L=INT((MPYE-71)/18)+1
9210 EC(0)=EC(0)-L
9215 IF EC(0)<1 THEN EC(0)=1
9220 GOSUB *BD_SUBP
9225 RETURN
9230 '
9235 *CASOL_P8I
9240 A=EDX :B=EC(0)
9245 GOSUB *CASOL_PX1
9250 RETURN
9255 '
9260 *CASOL_P8IB
9265 IF EDX<1 THEN C=1 ELSE C=EDX
9270 A=MPXE-80 :B=((MPXE-80)/C)*(EC(0)-1)
9275 GOSUB *CASOL_PX2
9280 RETURN
9285 '
9290 *CSL_S8I
9295 IF EC(0)=0 THEN GOSUB *RET_W :RETURN
9300 A=EDX
9305 GOSUB *カーソル_SET1
9310 EC(0)=P
9315 GOSUB *BD_SUBP
9320 RETURN
9325 '
9330 *CSL_D8I
9335 IF EC(0)=0 THEN GOSUB *RET_W :RETURN
9340 A=EDX
9345 GOSUB *カーソル_SET2
9350 EC(0)=P
9355 GOSUB *BD_SUBP
9360 RETURN
9365 '
9370 *BSCR_P8I
9375 XL=MPXL+5 :YL=MPYL+52 :X=(CLX+2)*8
9380 IF MUX>XL+INT(X/2)-30 AND MUX<XL+INT(X/2)+30 THEN
9385 IF MUY>YL+29 AND MUY<YL+49 THEN
9390 MOUSE 1,,,0
9395 SEP_SW=0 :GOSUB *BD_17P
9400 GOTO 9515
9405 ENDIF
9410 IF MUY>YL+134 AND MUY<YL+154 THEN GOSUB *EDIT_SP :GOTO 9515
9415 ENDIF
9420 IF MUX>XL AND MUX<XL+X THEN
9425 IF MUY>YL AND MUY<YL+20 THEN EDSW=1 :GOSUB *SUB_BSCRP8I
9430 IF MUY>YL+54 AND MUY<YL+74 THEN EDSW=2 :GOSUB *SUB_BSCRP8I
9435 IF MUY>YL+107 AND MUY<YL+127 THEN GOSUB *IK_EDP
9440 RETURN
9445 ENDIF
9450 IF MUX>XL+X+5 AND MUX<XL+X+25 AND MUY>YL+107 AND MUY<YL+127 THEN EDSW=3 :GOSUB *SUB_BSCRP8I :RETURN
9455 IF MUX>XL+CLX*8+120 AND MUX<XL+(CLX+CSX)*8+120 AND MUY>YL AND MUY<YL+160 THEN GOSUB *EDIT_NP
9460 IF MUX>XL+X+25 AND MUX<XL+X+85 THEN
9465 IF MUY>YL+29 AND MUY<YL+49 THEN SEP_SW=1 :GOSUB *BACK_B17
9470 IF MUY>YL+56 AND MUY<YL+76 THEN GOSUB *RSAVE_ED1
9475 IF MUY>YL+83 AND MUY<YL+103 THEN GOSUB *RSAVE_ED2
9480 ENDIF
9485 IF MUX>XL+X+200 AND MUX<XL+X+232 AND MUY>YL-20 AND MUY<YL-4 THEN
9490 FOR A=0 TO 99 :IF EDX%(A)=1 THEN EDXP=0 :GOTO 9505
9495 NEXT A
9500 EDXP=1
9505 GOSUB *SET_EDX :GOSUB *BACK_B17
9510 ENDIF
9515 GOSUB *RET_W
9520 RETURN
9525 '
9530 *BACK_B17
9535 MOUSE 1,,,0 :GOSUB *BD_17P :MOUSE 1,,,1
9540 RETURN
9545 '
9550 *SUB_BSCRP8I
9555 IF EDSW=2 THEN YL=YL+54 :SEP_SW=0
9560 IF EDSW=3 THEN YL=YL+107
9565 LINE (XL,YL)-STEP(X,20),XOR,%BCL(8),BF
9570 EDX=COX
9575 GOSUB *EDP_PUT
9580 WHILE MOUSE(2,0)=-1 :WEND
9585 GOSUB *EDP_MUS
9590 EDCS=EC(0) :GOSUB *BACK_B17
9595 EDX=COZ :EDSW=0
9600 RETURN
9605 '
9610 *EDP_PUT
9615 XL=MPXL+INT(MPXE/2)-INT(X/2)
9620 YL=MPYL+25
9625 LINE (XL,YL-5)-STEP(X+14,MPYE-38),PSET,%BCL(4),BF
9630 LINE (XL,YL-5)-STEP(X,MPYE-40),PSET,%BCL(0),BF,%BCL(2)
9635 FOR A=EDCX TO COX
9640 SYMBOL(XL,YL+(A-EDCX)*18),RIGHT$(" "+STR$(A),3),1,1,%BCL(0)
9645 SYMBOL(XL+35,YL+(A-EDCX)*18),LEFT$(CORD$(A-1),CLX-4),1,1,%BCL(0)
9650 IF A=EC(EDSW) THEN LINE (XL,YL+(A-EDCX)*18)-STEP(X,18), XOR,%BCL(8),BF
9655 IF (A-EDCX)*18>MPYF-YL-50 THEN 9665
9660 NEXT A
9665 A=EDX :B=EDCX :GOSUB *ED_CSP
9670 RETURN
9675 '
9680 *ED_CSP
9685 XA=MPXL+INT(MPXE/2)+INT(X/2)
9690 YA=MPYL+20
9695 LINE (XA,YA)-STEP(12,MPYE-45),PSET,%BCL(0),BF,%BCL(5)
9700 LINE (XA,YA)-STEP(12,12),PSET,%BCL(0),BF,%BCL(2)
9705 CONNECT (XA+2,YA+9)-STEP(8,0)-STEP(-4,-6)-STEP(-4,6), %BCL(0),PSET,F,%BCL(0)
9710 LINE (XA,YA+MPYE-52)-STEP(12,12),PSET,%BCL(0),BF,%BCL(2)
9715 CONNECT STEP(-10,-9)-STEP(4,6)-STEP(4,-6)-STEP(-8,0), %BCL(0),PSET,F,%BCL(0)
9720 IF A<1 THEN A=1
9725 YL=INT((MPYE-76)/A)
9730 IF A>1 THEN YR=(MPYE-76-YL)/(A-1)
9735 Y =(B-1)*YR+YA+12
9740 LINE (XA,Y)-STEP(12,YL+12),PSET,%BCL(0),BF,%BCL(1)
9745 RETURN
9750 '
9755 *EDP_MUS
9760 MX1=MPXL+INT(MPXE/2)-INT(X/2)
9765 MY1=MPYL+20
9770 MX2=MX1+X+12
9775 MY2=MY1+MPYE-45
9780 GOSUB *SEL_MXY
9785 IF ER=1 THEN MOUSE 0 :GOTO 9825
9790 IF MUX>MX2-12 AND MUX<MX2 THEN
9795 IF MUY>MY1 AND MUY<MY1+12 THEN GOSUB *DW_EDC
9800 IF MUY>MY2-12 AND MUY<MY2 THEN GOSUB *UP_EDC
9805 GOTO 9780
9810 ENDIF
9815 EC(EDSW)=INT((MUY-MPYL-25)/18)+EDCX
9820 IF EDSW=1 THEN P=EC(EDSW) :GOSUB *PUT_COD :EC(0)=1
9825 MX1=0 :MY1=0 :MX2=639 :MY2=479
9830 RETURN
9835 '
9840 *UP_EDC
9845 WHILE MOUSE(2,0)=-1
9850 EDCX=EDCX+1
9855 IF EDCX>EDX THEN EDCX=EDX
9860 GOSUB *EDP_PUT
9865 WEND
9870 RETURN
9875 '
9880 *DW_EDC
9885 WHILE MOUSE(2,0)=-1
9890 EDCX=EDCX-1
9895 IF EDCX<1 THEN EDCX=1
9900 GOSUB *EDP_PUT
9905 WEND
9910 RETURN
9915 '
9920 *PUT_COD
9925 CFX$=FIL$(9)+RIGHT$("00"+MID$(STR$(CORDN%(P-1)),2),3)+".dat"
9930 GOSUB *CORDNO_LOAD
9935 EDXP=0 :GOSUB *SET_EDX
9940 RETURN
9945 '
9950 *SET_EDX
9955 FOR A=0 TO CDZ :EDX%(A)=EDXP :NEXT A
9960 RETURN
9965 '
9970 *IK_EDP
9975 CRXF=XL+5 :CRXE=XL+X :CRYF=YL+110 :CRYE=YL+18 :CRLEN=CLX
9980 EXE_SW=0 :XLP=0 :CRB=BCL(5) :MX$=""
9985 GOSUB *INKEY_WP
9990 IF INK_END=1 OR MX$="" THEN 10010
9995 IF CAR_END=1 THEN
10000 IF COX<CDX THEN GOSUB *CORD_SP_SET :EC(3)=COX
10005 ENDIF
10010 GOSUB *BD_17P
10015 RETURN
10020 '
10025 *EDIT_NP
10030 P=INT((MUY-MPYL-55)/18)+EC(0)
10035 IF P>CDZ THEN RETURN
10040 IF EDX%(P-1)=0 THEN EDX%(P-1)=1 ELSE EDX%(P-1)=0
10045 GOSUB *BACK_B17
10050 RETURN
10055 '
10060 *EDIT_SP
10065 IF EC(3)=0 THEN RETURN
10070 B=0
10075 FOR A=0 TO COZ-1 :IF EDX%(A)=1 THEN B=B+1
10080 NEXT A
10085 IF B=0 THEN RETURN
10090 IF SEP_SW=0 THEN IF EC(2)=0 THEN RETURN ELSE GOSUB *EDIT_SAVE2 :GOTO 10105
10095 CFX$=FIL$(9)+RIGHT$("00"+MID$(STR$(CORDN%(EC(3)-1)),2),3)+".dat"
10100 GOSUB *EDIT_SAVE :P=EC(1) :GOSUB *PUT_COD
10105 LINE (MPXL+INT(MPXE/2)-65,MPYL+INT(MPYE/2)-15)-STEP(130,30), PSET,%BCL(0),BF,%BCL(3)
10110 IF ER=0 THEN A$="正常終了しました" ELSE A$="over end !!"
10115 SYMBOL STEP(-128,-25),A$,1,1,%BCL(0)
10120 X=MOUSE(9) :Y=MOUSE(10)
10125 IF MOUSE(9)=0 AND MOUSE(10)=0 THEN 10125
10130 GOSUB *BACK_B17
10135 RETURN
10140 '
10145 *EDIT_SAVE
10150 ON ERROR GOTO *ERR_EDSV
10155 OPEN "O",#1,CFX$
10160 PRINT #1,B,CSX
10165 FOR A=0 TO COZ-1
10170 IF EDX%(A)=0 THEN 10190
10175 PRINT #1,CONX(A)
10180 PRINT #1,COFX$(A)
10185 PRINT #1,COMX(A)
10190 NEXT A
10195 *EDSV_RET
10200 CLOSE #1
10205 ON ERROR GOTO 0
10210 RETURN
10215 '
10220 *ERR_EDSV
10225 IF ERR<>64 THEN *ERR_MESE
10230 KILL CFX$
10235 RESUME
10240 '
10245 *EDIT_SAVE2
10250 CFX$=FIL$(9)+"wk1.dat"
10255 GOSUB *EDIT_SAVE
10260 P=EC(2)
10265 GOSUB *PUT_COD
10270 ER=0
10275 CFX$=FIL$(9)+RIGHT$("00"+MID$(STR$(CORDN%(EC(3)-1)),2),3)+".dat"
10280 CFX1$=FIL$(9)+"wk1.dat"
10285 ON ERROR GOTO *ERR_EDSV
10290 OPEN "O",#1,CFX$
10295 OPEN "I",#2,CFX1$
10300 INPUT #2,B,CSX
10305 E=COZ+B :IF E>CDZ THEN E=CDZ :ER=1
10310 PRINT #1,E,CSX
10315 FOR A=0 TO B-1
10320 INPUT #2,C
10325 PRINT #1,C
10330 INPUT #2,A$
10335 PRINT #1,A$
10340 INPUT #2,D
10345 PRINT #1,D
10350 NEXT A
10355 B=B+1
10360 FOR A=B TO E
10365 PRINT #1,CONX(A-B)
10370 PRINT #1,COFX$(A-B)
10375 PRINT #1,COMX(A-B)
10380 NEXT A
10385 *EDSV_RET2
10390 CLOSE #1,#2 :B$=FIL$(9)+"wk1.dat" :KILL B$
10395 ON ERROR GOTO 0
10400 P=EC(1) :GOSUB *PUT_COD
10405 RETURN
10410 '
10415 *RSAVE_ED1
10420 LINE (XL+X+26,YL+55)-STEP(58,18),XOR,%BCL(8),BF
10425 GOSUB *RSAVE_MSP
10430 FOR A=0 TO COZ-2
10435 C=CONX(A)
10440 FOR B=A+1 TO COZ-1
10445 IF C>CONX(B) THEN GOSUB *SWAP_CNX :C=CONX(A)
10450 NEXT B
10455 NEXT A
10460 EC(3)=EC(1) :SEP_SW=1 :EDXP=0 :GOSUB *SET_EDX
10465 GOSUB *BACK_B17
10470 RETURN
10475 '
10480 *RSAVE_ED2
10485 LINE (XL+X+26,YL+82)-STEP(58,18),XOR,%BCL(8),BF
10490 GOSUB *RSAVE_MSP
10495 FOR A=0 TO COZ-2
10500 A$=COFX$(A)
10505 FOR B=A+1 TO COZ-1
10510 IF A$>COFX$(B) THEN GOSUB *SWAP_CNX :A$=COFX$(A)
10515 NEXT B
10520 NEXT A
10525 EC(3)=EC(1) :SEP_SW=1 :EDXP=0 :GOSUB *SET_EDX
10530 GOSUB *BACK_B17
10535 RETURN
10540 '
10545 *SWAP_CNX
10550 SWAP CONX(A),CONX(B)
10555 SWAP COFX$(A),COFX$(B)
10560 SWAP COMX(A),COMX(B)
10565 RETURN
10570 '
10575 *RSAVE_MSP
10580 LINE (XL+X+25,YL+27)-STEP(60,20),PSET,%BCL(0),BF,%BCL(10)
10585 SYMBOL STEP(-55,-18),"実行中",1,1,%BCL(0)
10590 RETURN
10595 '------------------------------------------------------------------
10600 *INKEY_P
10605 INK_END=0 :CAR_END=0 :GET_POINT=0 :LCLICK=0 :RCLICK=0 :TW=0
10610 WHILE MOUSE(2,0)=0
10615 B$=""
10620 A$=INKEY$+INKEY$
10625 IF A$<>"" THEN B$=B$+A$ :GOTO 10620
10630 IF B$<>"" THEN
10635 IF EXE_SW=1 AND B$="@" THEN LCLICK=1 :RETURN
10640 GOSUB *CAR_PUT
10645 IF CAR_END=1 THEN RETURN
10650 ENDIF
10655 IF MOUSE(2,1)=-1 THEN
10660 MUX=MOUSE(4,1) :MUY=MOUSE(5,1)
10665 INK_END=1
10670 RETURN
10675 ENDIF
10680 IF (TIME MOD 2)=TW THEN GOSUB *CR_POINT : IF TW=0 THEN TW=1 ELSE TW=0
10685 WEND
10690 MUX=MOUSE(4,0) :MUY=MOUSE(5,0) :RCLICK=MOUSE(3,1)
10695 WHILE MOUSE(2,0)=-1
10700 WEND
10705 WAIT WAIX :LCLICK=MOUSE(3,0) :RCLICK=MOUSE(3,1)
10710 IF MUX>CRXF AND MUX<CRXE AND MUY>CRYF AND MUY<CRYE THEN
10715 GOSUB *KEY_CR
10720 XLP=INT((MUX-CRXF)/8)
10725 YLP=INT((MUY-CRYF)/18)
10730 IF LCLICK>0 OR RCLICK>0 THEN RETURN ELSE *INKEY_P
10735 ENDIF
10740 GET_POINT=1
10745 RETURN
10750 '
10755 *CAR_PUT
10760 IF LEN(B$)>1 THEN IF LEN(B$) MOD 2 THEN IF ASC(RIGHT$(B$,1))<32 THEN B$=LEFT$(B$,LEN(B$)-1)
10765 IF JIS(B$)>31 AND JIS(B$)<>&H7F THEN
10770 P=LEN(MX$)
10775 IF P>XLP THEN
10780 MX$=LEFT$(MX$,XLP)+ B$+MID$(MX$,XLP+1)
10785 XLP=XLP+LEN(B$)
10790 ELSE
10795 MX$=MX$+B$
10800 XLP=LEN(MX$)
10805 ENDIF
10810 GOSUB *KEY_CR
10815 ENDIF
10820 IF B$<>"" THEN E=JIS(B$) ELSE RETURN
10825 IF (E<32 AND E>0) OR E=&H7F THEN *SUBKEY
10830 RETURN
10835 '
10840 *SUBKEY
10845 IF E=&H7F THEN A=KLEN(MID$(MX$,XLP+1,2)) :XLP=XLP+3-A :E=8
10850 IF E=13 THEN CAR_END=1 :RETURN
10855 IF E=8 THEN GOSUB *BAKSP
10860 IF E=29 AND XLP>0 THEN
10865 GOSUB *BAKSP_SUB
10870 XLP=XLP-F
10875 IF XLP<0 THEN XLP=0
10880 ENDIF
10885 IF E=28 AND XLP<LEN(MX$)+1 THEN
10890 GOSUB *BAKSP_SUB
10895 XLP=XLP+F
10900 IF XLP>LEN(MX$) THEN XLP=XLP-A
10905 ENDIF
10910 GOSUB *KEY_CR
10915 RETURN
10920 '
10925 *BAKSP
10930 GOSUB *BAKSP_SUB
10935 IF XLP-F>0 THEN A$=LEFT$(MX$,XLP-F) ELSE A$=""
10940 IF XLP=<LEN(MX$) THEN B$=MID$(MX$,XLP+1) ELSE B$=""
10945 MX$=A$+B$
10950 XLP=XLP-F
10955 IF XLP<0 THEN XLP=0
10960 RETURN
10965 '
10970 *BAKSP_SUB
10975 IF XLP>1 THEN
10980 A=KLEN(MID$(MX$,XLP-1,2))
10985 IF A=1 THEN F=2 ELSE F=1
10990 ELSE
10995 F=1
11000 ENDIF
11005 RETURN
11010 '
11015 *KEY_CR
11020 LINE (CRXF,CRYF)-STEP(CRLEN*8,16),PSET,%CRB,BF
11025 IF MX$="" THEN RETURN
11030 IF XLP>CRLEN-1 AND LEN(MX$)>CRLEN-1 THEN C$=MID$(MX$,(XLP-CRLEN+2),CRLEN-1) ELSE C$=LEFT$(MX$,CRLEN-1)
11035 SYMBOL (CRXF,CRYF),C$,1,1,%BCL(0)
11040 RETURN
11045 '
11050 *CR_POINT
11055 IF CRLEN=<XLP THEN CSW=CRLEN-1 ELSE CSW=XLP
11060 IF MX$="" THEN CSW=0
11065 LINE (CRXF+CSW*8+1,CRYF+14)-STEP(6,0),XOR,%BCL(7)
11070 RETURN
11075 '-------------------------------------------------------------------
11080 *NOTO_P
11085 A=NP(NEXP) :GOSUB *SWAP_XY
11090 MPXL=PXL%(5) :MPYL=PYL%(5) :MPXE=PXE%(5) :MPYE=PYE%(5)
11095 A=5 :GOSUB *OPEN_P
11100 *NOTO_P2
11105 BDP=6 :YLW=75 :YU=28 :BPQ=0 :WKST=1 :REF_SW=0
11110 GOSUB *SEL_WAKP
11115 IF JPQ=1 THEN GOTO *NEX_P
11120 RETURN
11125 '
11130 *KOMOK_LOAD
11135 ON ERROR GOTO *ERR_P6L
11140 OPEN "I",#1,FIL$(7)
11145 INPUT #1,KOZ,KOML
11150 FOR A=1 TO KOZ
11155 INPUT #1,KOM$(A)
11160 INPUT #1,KMT%(A)
11165 IF EOF(1)=-1 THEN *KLOAD_RET
11170 NEXT A
11175 *KLOAD_RET
11180 CLOSE #1
11185 ON ERROR GOTO 0
11190 KMCS=1
11195 RETURN
11200 '
11205 *ERR_P6L
11210 IF ERR<>63 THEN *ERR_MESE
11215 KOZ=0 :KOML=12
11220 RESUME *KLOAD_RET
11225 '
11230 *KOMOK_SAVE
11235 ON ERROR GOTO *ERR_P6S
11240 OPEN "O",#1,FIL$(7)
11245 PRINT #1,KOZ,KOML
11250 FOR A=1 TO KOZ
11255 PRINT #1,KOM$(A)
11260 PRINT #1,KMT%(A)
11265 NEXT A
11270 *KSAVE_RET
11275 CLOSE #1
11280 ON ERROR GOTO 0
11285 RETURN
11290 '
11295 *ERR_P6S
11300 IF ERR<>64 THEN *ERR_MESE
11305 KILL FIL$(7)
11310 RESUME
11315 '
11320 *BD_6P
11325 WINDOW (MPXL+VXL+1,MPYL+17)-(MPXF+VXL-17,MPYF-17)
11330 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
11335 B=(((RXY-84)+INT((RXY-84)/4)) MOD 7) :M=RXM :GOSUB *YOBI_P
11340 DPZ=((7-C+RXD) MOD 7)
11345 FILS$="家 計 簿 [登録] "+KFX$
11350 YMD$=RIGHT$(" "+STR$(RXY),2)+"年"+RIGHT$(" "+STR$(RXM),2)+"月"+ RIGHT$(" "+STR$(RXD),2)+"日 ↑↓ ["+YOBI$(DPZ)+"曜日]"
11355 SYMBOL(MPXL+10,MPYL+20),YMD$,1,1,%BCL(0)
11360 SYMBOL(MPXL-50,MPYL+YLW-20),"No",1,1,%BCL(0)
11365 GOSUB *SYOKEI_P :GOSUB *BD6_LINE
11370 SYMBOL(MPXL+110,MPYL+YLW-15),STR$(KSX-64),.7!,.7!,%BCL(0)
11375 IF KMAX(PDX)=0 THEN 11680
11380 XL=MPXL+5 :YL=MPYL+YLW :E=12 :CL=BCL(0)
11385 FOR A=CSP6 TO KMAX(PDX)
11390 SYMBOL(XL-10-LEN(STR$(A))*8,YL),STR$(A)+".",1,1,%BCL(0)
11395 A$=KOM$(KMI%(PDX,A-1)) :P=KOML :PL=0 :GOSUB *PUT_DAT
11400 A$=KNE$(PDX,A-1) :P=KSX-64 :PL=12*8 :GOSUB *PUT_DAT
11405 T=KMT%(KMI%(PDX,A-1))
11410 IF T=1 OR T=5 THEN *NEXT_P1N
11415 IF T=2 THEN *NEXT_P4N
11420 IF T=3 THEN *NEXT_P3N
11425 TA&=KIN&(PDX,A-1) :TB=KSU%(PDX,A-1)
11430 IF T=4 THEN *NEXT_P7N
11435 IF TA&*TB>=10^8 THEN *NEXT_P7N
11440 A$=STR$(TA&) :'金額
11445 P=KSX-42 :PL=(KSX-50)*8 :GOSUB *CONMA_P
11450 GOSUB *PUT_DAT
11455 ' :'数
11460 A$=STR$(TB)
11465 P=KSX-36 :PL=(KSX-42)*8 :GOSUB *CONMA_P
11470 GOSUB *PUT_DAT
11475 *NEXT_P7N :'支出
11480 TC#=TA&*TB :A$=STR$(TC#)
11485 P=KSX-24 :PL=(KSX-36)*8 :GOSUB *CONMA_P
11490 GOSUB *PUT_DAT
11495 GOTO *NEXT_P2N
11500 *NEXT_P1N :'収入
11505 A$=STR$(KIN&(PDX,A-1))
11510 P=KSX-12 :PL=(KSX-24)*8 :GOSUB *CONMA_P
11515 GOSUB *PUT_DAT
11520 *NEXT_P2N :'残高
11525 ZANX#=ZANX#-(KIN&(PDX,A-1)*KSU%(PDX,A-1))
11530 A$=STR$(ZANX#)
11535 P=KSX :PL=(KSX-12)*8 :GOSUB *CONMA_P
11540 GOSUB *PUT_DAT
11545 IF T=5 THEN *NEXT_P8N
11550 IF T<>4 THEN *NEXT_P5N
11555 *NEXT_P3N
11560 A$=STR$(KIN&(PDX,A-1))
11565 P=KSX+18 :PL=(KSX+6)*8 :GOSUB *CONMA_P
11570 GOSUB *PUT_DAT
11575 SYMBOL(XL+(KSX-50)*8,YL),"口座振込",1,1,%BCL(0)
11580 IF T=4 THEN *NEXT_P6N
11585 P=KSX-12 :PL=(KSX-24)*8
11590 GOSUB *PUT_DAT
11595 GOTO *NEXT_P6N
11600 *NEXT_P4N
11605 SYMBOL(XL+(KSX-50)*8,YL),"口座払い",1,1,%BCL(0)
11610 A$=STR$(KIN&(PDX,A-1))
11615 P=KSX-24 :PL=(KSX-36)*8 :GOSUB *CONMA_P
11620 GOSUB *PUT_DAT
11625 *NEXT_P8N
11630 A$=STR$(KIN&(PDX,A-1))
11635 P=KSX+30 :PL=(KSX+18)*8 :GOSUB *CONMA_P
11640 GOSUB *PUT_DAT
11645 *NEXT_P6N
11650 A$=LEFT$(KNE$(PDX,A-1),12)
11655 SYMBOL(XL+(KSX+30)*8+4,YL),A$,1,1,%BCL(0)
11660 *NEXT_P5N
11665 YL=YL+18
11670 IF YL>MPYF-52 THEN 11680
11675 NEXT A
11680 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
11685 GOSUB *CASOL_P6 :GOSUB *CASOL_P6B
11690 RETURN
11695 '
11700 *PUT_DAT
11705 B$=LEFT$(A$,P)
11710 IF PL>E*8 THEN PL=PL+((P-INT(PL/8))-LEN(B$))*8
11715 SYMBOL(XL+PL,YL),B$,1,1,%CL
11720 RETURN
11725 '
11730 *BD6_LINE
11735 IF KSX=0 THEN KSX=76
11740 XL=MPXL+5 :YL=MPYL+YLW-5
11745 '
11750 LINE (XL,YL-5)-STEP(0,7),PSET,%BCL(0)
11755 LINE (XL+KSX*8,YL-5)-STEP(0,7),PSET,%BCL(0)
11760 LINE (XL,YL )-STEP((KSX+2)*8-16,0),PSET,%BCL(0)
11765 SYMBOL(XL,YL-YU),"[項 目]",1,1,%BCL(0)
11770 LINE (XL+12*8,YL-5)-STEP(0,7),PSET,%BCL(0)
11775 SYMBOL(XL+12*8,YL-YU),"[名 称]",1,1,%BCL(0)
11780 LINE (XL+(KSX-52)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
11785 SYMBOL(XL+(KSX-52)*8,YL-YU),"[金 額]",1,1,%BCL(0)
11790 LINE (XL+(KSX-42)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
11795 SYMBOL(XL+(KSX-42)*8,YL-YU),"[数量]",1,1,%BCL(0)
11800 LINE (XL+(KSX-36)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
11805 SYMBOL(XL+(KSX-36)*8,YL-YU),"[支 出]",1,1,%BCL(0)
11810 LINE (XL+(KSX-24)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
11815 SYMBOL(XL+(KSX-24)*8,YL-YU),"[収 入]",1,1,%BCL(0)
11820 LINE (XL+(KSX-12)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
11825 SYMBOL(XL+(KSX-12)*8,YL-YU),"[残 高] →",1,1,%BCL(0)
11830 LINE (XL+(KSX-42)*8,YL-34)-STEP(42*8,0),PSET,%BCL(0)
11835 LINE (XL+(KSX-42)*8,YL-52)-STEP(42*8,18),XOR,%BCL(24),BF
11840 SYMBOL(XL+(KSX-42)*8+4,YL-50),"小 計",1,1,%BCL(0)
11845 LINE (XL+(KSX-36)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
11850 A$=STR$(ZAN1#) :GOSUB *CONMA_P :P=LEN(A$)
11855 SYMBOL(XL+(KSX-24-P)*8,YL-50),A$,1,1,%BCL(0)
11860 LINE (XL+(KSX-24)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
11865 A$=STR$(ZAN2#) :GOSUB *CONMA_P :P=LEN(A$)
11870 SYMBOL(XL+(KSX-12-P)*8,YL-50),A$,1,1,%BCL(0)
11875 LINE (XL+(KSX-12)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
11880 A$=STR$(ZAN3#) :GOSUB *CONMA_P :P=LEN(A$)
11885 SYMBOL(XL+(KSX-P)*8,YL-50),A$,1,1,%BCL(0)
11890 LINE (XL+KSX*8,YL-39)-STEP(0,7),PSET,%BCL(0)
11895 LINE (XL+(KSX+6 )*8,YL-51)-STEP(64,18),PSET,%BCL(0),BF,%BCL(10)
11900 SYMBOL(XL+(KSX+6 )*8,YL-50),"取扱銀行",1,1,%BCL(0)
11905 LINE (XL+(KSX+6 )*8,YL )-STEP(36*8,0),PSET,%BCL(0)
11910 LINE (XL+(KSX+6 )*8,YL-5 )-STEP(0,7),PSET,%BCL(0)
11915 LINE (XL+(KSX+18)*8,YL-5 )-STEP(0,7),PSET,%BCL(0)
11920 LINE (XL+(KSX+30)*8,YL-5 )-STEP(0,7),PSET,%BCL(0)
11925 LINE (XL+(KSX+42)*8,YL-5 )-STEP(0,7),PSET,%BCL(0)
11930 SYMBOL(XL+(KSX+ 2)*8,YL-28)," ← [口座振込]",1,1,%BCL(0)
11935 SYMBOL(XL+(KSX+18)*8,YL-28),"[口座払い]",1,1,%BCL(0)
11940 SYMBOL(XL+(KSX+30)*8,YL-28),"[名 目]",1,1,%BCL(0)
11945 LINE (XL+(KSX+48)*8,YL )-STEP(16*8,0),PSET,%BCL(0)
11950 LINE (XL+(KSX+48)*8,YL-5 )-STEP(0,7),PSET,%BCL(0)
11955 LINE (XL+(KSX+64)*8,YL-5 )-STEP(0,7),PSET,%BCL(0)
11960 SYMBOL(XL+(KSX+48)*8,YL-28),"[銀行名] ↑ ↓",1,1,%BCL(0)
11965 YL=MPYF-36
11970 LINE (XL+(KSX-42)*8,YL )-STEP(42*8,0),PSET,%BCL(0)
11975 LINE (XL+(KSX-36)*8,YL-2 )-STEP(0,7),PSET,%BCL(0)
11980 LINE (XL+(KSX-24)*8,YL-2 )-STEP(0,7),PSET,%BCL(0)
11985 LINE (XL+(KSX-12)*8,YL-2 )-STEP(0,7),PSET,%BCL(0)
11990 LINE (XL+ KSX*8 ,YL-2 )-STEP(0,7),PSET,%BCL(0)
11995 LINE (XL-4,YL+1)-STEP((KSX-42)*8+4,18),XOR,%BCL(29),BF
12000 LINE (XL+(KSX-42)*8,YL+1)-STEP(42*8,18),XOR,%BCL(21),BF
12005 SYMBOL(XL+10,YL+2),"[文頭] [文末] [挿入]",1,1,%BCL(0)
12010 SYMBOL(XL+(KSX-42)*8+4,YL+2),"合 計",1,1,%BCL(0)
12015 A$=STR$(ZAN4#+ZAN1#) :GOSUB *CONMA_P :P=LEN(A$)
12020 SYMBOL(XL+(KSX-24-P)*8,YL+3),A$,1,1,%BCL(0)
12025 A$=STR$(ZAN5#+ZAN2#) :GOSUB *CONMA_P :P=LEN(A$)
12030 SYMBOL(XL+(KSX-12-P)*8,YL+3),A$,1,1,%BCL(0)
12035 A$=STR$(BZAN1#+ZAN3#) :GOSUB *CONMA_P :P=LEN(A$)
12040 SYMBOL(XL+(KSX-P)*8,YL+3),A$,1,1,%BCL(0)
12045 IF BANKP>0 THEN SYMBOL(XL+(KSX+18)*8,MPYL+20), LEFT$(BNAME$(BANKP-1),16),1,1,%BCL(0)
12050 XL=XL+(KSX+48)*8 :YL=MPYL+YLW :GOSUB *BANKN_PUT
12055 RETURN
12060 '
12065 *YL_DOWN6
12070 CSP6=CSP6+1
12075 IF CSP6>KMAX(PDX) THEN CSP6=KMAX(PDX)
12080 GOSUB *BD_SUBP
12085 RETURN
12090 '
12095 *YL_UP6
12100 CSP6=CSP6-1
12105 IF CSP6<1 THEN CSP6=1
12110 GOSUB *BD_SUBP
12115 RETURN
12120 '
12125 *XL_LEFT6
12130 VXL=VXL-100
12135 GOSUB *BD_SUBP
12140 RETURN
12145 '
12150 *XL_RIGHT6
12155 VXL=VXL+100
12160 GOSUB *BD_SUBP
12165 RETURN
12170 '
12175 *CASOL_P6
12180 A=KMAX(PDX) :B=CSP6
12185 GOSUB *CASOL_PX1
12190 RETURN
12195 '
12200 *CASOL_P6B
12205 A=(KSX+2)*8 :B=VXL
12210 GOSUB *CASOL_PX2
12215 RETURN
12220 '
12225 *CASOL_PX2
12230 XL=INT((MPXE-80)/A)
12235 IF B=0 THEN X=MPXL ELSE X=MPXL+(ABS(B) MOD A)
12240 IF X>MPXF-64 THEN X=MPXF-64
12245 LINE (MPXL,MPYF)-STEP(MPXE-48,-16),PSET,%BCL(0),BF,%BCL(5)
12250 LINE (X,MPYF)-STEP(XL+16,-16),PSET,%BCL(0),BF,%BCL(17)
12255 CONNECT(X+XL,MPYF)-STEP(2,-2)-STEP(12,0)-STEP(0,-12)- STEP(2,-2)-STEP(0,16)-STEP(-16,0),%BCL(0),PSET,F,%BCL(0)
12260 RETURN
12265 '
12270 *CSL_S6
12275 IF KMAX(PDX)=0 THEN GOSUB *RET_W :RETURN
12280 A=KMAX(PDX)
12285 GOSUB *カーソル_SET1
12290 CSP6=P
12295 GOSUB *BD_SUBP
12300 RETURN
12305 '
12310 *BSCR_P6
12315 VXP=VXL :INTERVAL ON
12320 *BSCR_P6B
12325 CRB=BCL(5) :TIMX$="" :GOSUB *CLOCK_P
12330 IF MUX>MPXL+(KSX+30)*8+5-VXL THEN 12385
12335 YL=INT((MUY-MPYL-YLW)/18)
12340 IF MUY>MPYF-36 THEN GOSUB *SEL_6P :RETURN
12345 IF YL<0 THEN
12350 IF MUY<MPYL+YLW-5-YU THEN *YMD_EXE
12355 IF MUY<MPYL+YLW+11-YU THEN *KMD_EXE
12360 GOTO *LINE_EXE6
12365 ENDIF
12370 KOXP=YL+CSP6
12375 IF KOXP>KMAX(PDX) THEN *KMN_INPUT
12380 IF KOXP>0 THEN *KMN_EXE
12385 GOSUB *RET_W
12390 RETURN
12395 '
12400 *LINE_EXE6
12405 GOSUB *LINE_EXEP
12410 IF CAR_END=1 THEN KSX=VAL(MX$)+64
12415 GOSUB *SCR_BACK
12420 RETURN
12425 '
12430 *SEL_6P
12435 IF MUY>MPYF-16 THEN GOSUB *RET_W :RETURN
12440 IF MUX>MPXL+10 AND MUX<MPXL+6*8+10 THEN CSP6=1 :GOSUB *BD_SUBP :RETURN
12445 IF MUX>MPXL+7*8+10 AND MUX<MPXL+13*8+10 THEN CSP6=KMAX(PDX) :GOSUB *BD_SUBP :RETURN
12450 IF MUX>MPXL+14*8+10 AND MUX<MPXL+20*8+10 THEN P=CSP6-1 :GOSUB *INST_P6 :GOSUB *BOLD_P2 :RETURN
12455 GOSUB *RET_W
12460 RETURN
12465 '
12470 *KMN_EXE
12475 WHILE MOUSE(2,0)=-1 :WEND
12480 GOSUB *CRD_SET :IF ER=1 THEN ER=0 :GOTO 12620
12485 GOSUB *CRP_SET :XLP=LEN(MX$)
12490 GOSUB *KEY_CR
12495 IF KPS=1 THEN
12500 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
12505 INTERVAL OFF :MOUSE 5
12510 GOSUB *KMD_IP :JP=9
12515 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
12520 IF ER=0 THEN INK_END=0 :CAR_END=1 ELSE 12625
12525 ELSE
12530 EXE_SW=1
12535 GOSUB *INKEY_P
12540 EXE_SW=0
12545 IF RCLICK>0 THEN CRB=BCL(10) :GOSUB *KEY_CR : GOSUB *KILL_P6 :GOTO 12625
12550 IF LCLICK>0 THEN
12555 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
12560 IF KPS=2 THEN GOSUB *GET_CORD : IF GET_ON=0 THEN *BSCR_P6B
12565 IF KPS>2 THEN GOSUB *CALK_BOD : IF GET_ON=0 THEN *BSCR_P6B
12570 ENDIF
12575 ENDIF
12580 IF INK_END=0 THEN
12585 GOSUB *KMX_SET :GOSUB *KEY_CR
12590 IF CAR_END=1 THEN GOSUB *CRD_NSET
12595 GOSUB *BOLD_BACK
12600 GOTO *BSCR_P6B
12605 ELSE
12610 WHILE MOUSE(2,0)=-1 :WEND
12615 ENDIF
12620 MOUSE 5
12625 VXL=VXP :GOSUB *SCR_BACK
12630 RETURN
12635 '
12640 *BOLD_BACK
12645 MOUSE 1,,,0
12650 GOSUB *BOLD_P2
12655 MOUSE 1,,,1
12660 RETURN
12665 '
12670 *KMN_INPUT
12675 KOXP=KMAX(PDX)+1 :IF KOXP>=NSX THEN GOSUB *FLL_KMN :GOTO 12825
12680 GOSUB *CRD_SET :IF ER=1 THEN ER=0 :GOTO 12820
12685 MX$="" :GOSUB *KEY_CR
12690 WHILE MOUSE(2,0)=-1 :WEND
12695 IF KPS=1 THEN
12700 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
12705 INTERVAL OFF :MOUSE 5
12710 GOSUB *KMD_IP :JP=9
12715 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
12720 IF ER=0 THEN INK_END=0 :CAR_END=1 ELSE 12825
12725 ELSE
12730 EXE_SW=1
12735 GOSUB *INKEY_P
12740 EXE_SW=0
12745 IF LCLICK>0 THEN
12750 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
12755 IF KPS=2 THEN GOSUB *GET_CORD : IF GET_ON=0 THEN *BSCR_P6B
12760 IF KPS>2 THEN GOSUB *CALK_BOD : IF GET_ON=0 THEN *BSCR_P6B
12765 ENDIF
12770 ENDIF
12775 IF INK_END=0 THEN
12780 KMAX(PDX)=KMAX(PDX)+1 :KOXP=KMAX(PDX)
12785 GOSUB *KMX_SET :GOSUB *KEY_CR
12790 IF CAR_END=1 THEN GOSUB *CRD_NSET
12795 GOSUB *BOLD_BACK
12800 GOTO *BSCR_P6B
12805 ELSE
12810 WHILE MOUSE(2,0)=-1 :WEND
12815 ENDIF
12820 MOUSE 5
12825 VXL=VXP :GOSUB *SCR_BACK
12830 RETURN
12835 '
12840 *CRD_SET
12845 P=INT((MUX-MPXL-5+VXL)/8)
12850 IF P<0 OR P>(KSX+30) THEN ER=1 :RETURN
12855 IF P>=(KSX-12) AND P<KSX THEN ER=1 :RETURN
12860 IF P>=0 AND P<12 THEN CRXF=MPXL :CRXE=CRXF+12*8 : CRLEN=13 :KPS=1
12865 IF P>=12 AND P<(KSX-52) THEN CRXF=MPXL+12*8 :CRXE=CRXF+(KSX-64)*8 : CRLEN=KSX-63 :KPS=2
12870 IF P>=(KSX-52) AND P<(KSX-42) THEN CRXF=MPXL+(KSX-52)*8 : CRXE=CRXF+10*8 :CRLEN=11 :KPS=3
12875 IF P>=(KSX-42) AND P<(KSX-36) THEN CRXF=MPXL+(KSX-42)*8 : CRXE=CRXF+6*8 :CRLEN=7 :KPS=4
12880 IF P>=(KSX-36) AND P<(KSX-24) THEN CRXF=MPXL+(KSX-36)*8 : CRXE=CRXF+12*8 :CRLEN=13 :KPS=5
12885 IF P>=(KSX-24) AND P<(KSX-12) THEN CRXF=MPXL+(KSX-24)*8 : CRXE=CRXF+12*8 :CRLEN=13 :KPS=6
12890 IF P>=(KSX+6 ) AND P<(KSX+18) THEN CRXF=MPXL+(KSX+6 )*8 : CRXE=CRXF+12*8 :CRLEN=13 :KPS=7
12895 IF P>=(KSX+18) AND P<(KSX+30) THEN CRXF=MPXL+(KSX+18)*8 : CRXE=CRXF+12*8 :CRLEN=13 :KPS=8
12900 CRXF=CRXF+5-VXL :CRXE=CRXE+5-VXL
12905 CRYF=MPYL+YLW+(KOXP-CSP6)*18 :CRYE=CRYF+18
12910 IF CRYF>MPYF-50 THEN
12915 CSP6=CSP6+1 :MOUSE 1,,,0
12920 GOSUB *BD_6P :MOUSE 1,,,1
12925 GOTO 12905
12930 ENDIF
12935 XLP=0
12940 RETURN
12945 '
12950 *CRP_SET
12955 MX$=""
12960 IF KPS=1 THEN MX$=KOM$(KMI%(PDX,KOXP-1))
12965 IF KPS=2 THEN MX$=KNE$(PDX,KOXP-1)
12970 IF KPS=3 THEN IF KIN&(PDX,KOXP-1)>0 THEN MX$=MID$(STR$(KIN&(PDX,KOXP-1)),2)
12975 IF KPS=4 THEN IF KSU%(PDX,KOXP-1)>0 THEN MX$=MID$(STR$(KSU%(PDX,KOXP-1)),2)
12980 IF KPS=5 THEN IF KIN&(PDX,KOXP-1)>0 THEN MX$=MID$(STR$(KIN&(PDX,KOXP-1) *KSU%(PDX,KOXP-1)),2)
12985 IF KPS>=6 THEN IF KIN&(PDX,KOXP-1)>0 THEN MX$=MID$(STR$(KIN&(PDX,KOXP-1)),2)
12990 RETURN
12995 '
13000 *KMX_SET
13005 P=KMT%(KMI%(PDX,KOXP-1))
13010 IF KPS=1 THEN IF KPJ>=0 THEN KMI%(PDX,KOXP-1)=KPJ
13015 IF KPS=2 THEN KNE$(PDX,KOXP-1)=MX$
13020 IF KPS=3 THEN KIN&(PDX,KOXP-1)=VAL(MX$)
13025 IF KPS=4 THEN KSU%(PDX,KOXP-1)=VAL(MX$)
13030 IF KPS=5 THEN
13035 IF P=0 OR P=2 THEN
13040 IF KSU%(PDX,KOXP-1)=0 THEN KSU%(PDX,KOXP-1)=1
13045 KIN&(PDX,KOXP-1)=VAL(MX$)/KSU%(PDX,KOXP-1)
13050 ELSE
13055 KIN&(PDX,KOXP-1)=VAL(MX$)
13060 ENDIF
13065 ENDIF
13070 IF KPS=6 THEN KIN&(PDX,KOXP-1)=VAL(MX$) :KSU%(PDX,KOXP-1)=-1
13075 IF KPS=8 THEN KIN&(PDX,KOXP-1)=VAL(MX$) :KSU%(PDX,KOXP-1)=-1
13080 IF KPS=7 THEN KIN&(PDX,KOXP-1)=VAL(MX$) :KSU%(PDX,KOXP-1)=1
13085 IF P=1 OR P=3 OR P=5 THEN KSU%(PDX,KOXP-1)=-1
13090 IF P=0 OR P=2 OR P=4 THEN IF KIN&(PDX,KOXP-1)>0 AND KSU%(PDX,KOXP-1) <1 THEN KSU%(PDX,KOXP-1)=1
13095 IF KPS>2 THEN ZCALK_SW=1
13100 RETURN
13105 '
13110 *CRD_NSET
13115 IF KPS>6 THEN GOSUB *BANK_SUB
13120 EXPS=1
13125 IF KPS=1 THEN BLEN=12*8 :MUX=MPXL+5+BLEN :NLEN=KSX-58
13130 IF KPS=2 THEN
13135 P=KMT%(KMI%(PDX,KOXP-1))
13140 IF P=0 THEN BLEN=(KSX-58)*8 :NLEN=10
13145 IF P=1 THEN BLEN=(KSX-32)*8 :NLEN=10
13150 IF P=2 OR P=5 THEN BLEN=(KSX+6 )*8 :NLEN=12 :VXL=515
13155 IF P=3 OR P=4 THEN BLEN=(KSX-6 )*8 :NLEN=12 :VXL=515
13160 MUX=MPXL+12*8+BLEN+5
13165 ENDIF
13170 IF KPS=3 THEN BLEN=10*8 :MUX=MPXL+(KSX-48)*8+BLEN+5 :NLEN=6
13175 IF KPS=4 THEN KPS=6
13180 IF KPS=5 THEN IF P=0 OR P=2 THEN KPS=6
13185 IF KPS>5 THEN MUX=MPXL+20 :MUY=CRYF+20 :NLEN=12 :VXL=0
13190 IF MUX>MPXF-16-NLEN*8+VXL THEN VXL=VXL+NLEN*8
13195 IF MUX<MPXL+5 THEN MUX=MPXL+20
13200 IF MUY>MPYF-50 THEN CSP6=CSP6+1 :MUY=MUY-20
13205 MUX=MUX-VXL
13210 RETURN
13215 '
13220 *BANK_SUB
13225 IF BNMAX<1 THEN RETURN
13230 VXL=515 :GOSUB *BOLD_BACK
13235 SYMBOL(MPXL+(KSX+7)*8-VXL,MPYF-34), "銀行名を選択して下さい",1,1,%BCL(10)
13240 B$=""
13245 WHILE MOUSE(2,0)=0
13250 IF MOUSE(2,1)=-1 THEN 13320
13255 A$=INKEY$
13260 IF A$<>"" THEN B$=B$+A$ :GOTO 13255
13265 IF B$<>"" THEN
13270 IF B$=CHR$(13) AND BANKP>0 THEN *BNAME_SET3
13275 P=VAL(LEFT$(B$,LEN(B$)-1))
13280 IF P>0 THEN *BNAME_SET2
13285 ENDIF
13290 WEND
13295 MUX=MOUSE(4,0) :MUY=MOUSE(5,0)
13300 IF MUX>MPXL+(KSX+59)*8-VXL AND MUX<MPXL+(KSX+61)*8-VXL THEN GOSUB *BNAME_UP :GOTO 13235
13305 IF MUX>MPXL+(KSX+61)*8-VXL AND MUX<MPXL+(KSX+63)*8-VXL THEN GOSUB *BNAME_DOWN :GOTO 13235
13310 IF MUX>MPXL+(KSX+40)*8-VXL AND MUX<MPXL+(KSX+61)*8-VXL AND MUY>MPYL+YLW AND MUY<MPYF-16 THEN *BNAME_SET
13315 WHILE MOUSE(2,0)=-1 :WEND
13320 WHILE MOUSE(2,1)=-1 :WEND
13325 RETURN
13330 '
13335 *BNAME_SET
13340 YL=INT((MUY-MPYL-75)/18)
13345 P=YL+BNL
13350 *BNAME_SET2
13355 IF P>BNMAX THEN 13435
13360 BANKP=P
13365 *BNAME_SET3
13370 GOSUB *BOLD_BACK
13375 GOSUB *BANK_DLOAD
13380 PAGE1S=PAGE1(BANKP) :PAGE2S=PAGE2(BANKP)
13385 GOSUB *YMD_SET
13390 GOSUB *BANK_SARCH
13395 IF ER=1 THEN MOUSE 5 :GOSUB *FLL_6P :RETURN
13400 IF P=0 THEN BMAX=BMAX+1 :P=BMAX
13405 BYM$(P-1)=YD$
13410 BME$(P-1)=KNE$(PDX,KOXP-1)
13415 A=KMT%(KMI%(PDX,KOXP-1))
13420 IF A=2 OR A=5 THEN BOUT#(P-1)=KIN&(PDX,KOXP-1)
13425 IF A=3 OR A=4 THEN BIN#(P-1) =KIN&(PDX,KOXP-1)
13430 GOSUB *BANK_SAVE
13435 WHILE MOUSE(2,0)=-1 :WEND
13440 RETURN
13445 '
13450 *BANK_SARCH
13455 ER=0
13460 FOR A=1 TO BMAX
13465 IF BYM$(A-1)>YD$ THEN P=A :GOSUB *INST_P9 :RETURN
13470 IF INSTR(BYM$(A-1),YD$)>0 AND INSTR(BME$(A-1),KNE$(PDX,KOXP-1))>0 THEN P=A :RETURN
13475 NEXT A
13480 P=0 :IF BMAX>=BNZ THEN ER=1
13485 RETURN
13490 '
13495 *YMD_SET
13500 Y$=RIGHT$("0"+MID$(STR$(RXY),2),2)
13505 M$=RIGHT$("0"+MID$(STR$(RXM),2),2)
13510 D$=RIGHT$("0"+MID$(STR$(RXD),2),2)
13515 YD$=Y$+"-"+M$+"-"+D$
13520 RETURN
13525 '
13530 *YMD_EXE
13535 IF MUX>MPXL-VXL+(KSX-42)*8 AND MUX<MPXL-VXL+(KSX-36)*8 THEN X=0 :PDXS=PDX :ERASE ZAN& :DIM ZAN&(366) : GOSUB *ZAN_P2 :GOSUB *BOLD_BACK :RETURN
13540 IF MUX>MPXL-VXL+106 THEN *SEL_SWP
13545 REF_SW=1 :PDS=PDX
13550 GOSUB *CALENDER :CSP6=1
13555 GOSUB *SCR_BACK
13560 GOSUB *SET_XYD
13565 REF_SW=0 :REW_X=PXE%(5) :REW_Y=PYE%(5) :JP=9
13570 IF ZCALK_SW=1 AND DEXE_SW=1 THEN SWAP PDX,PDS :GOSUB *ZAN_P : SWAP PDX,PDS
13575 RETURN
13580 '
13585 *GET_CORD
13590 INTERVAL OFF :MOUSE 5
13595 REF_SW=1 :CRXF_S=CRXF :CRYF_S=CRYF :GET_ON=0
13600 A=NP(NEXP-1) :GOSUB *SWAP_XY :MUX_Q=MUX :MUY_Q=MUY
13605 GOSUB *CORD_P
13610 A=NP(NEXP-1) :GOSUB *SWAP_XY
13615 GOSUB *SCR_BACK
13620 GOSUB *SET_XYD
13625 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
13630 REW_X=PXE%(5) :REW_Y=PYE%(5) :JP=9
13635 IF GET_ON=1 THEN
13640 MX$=CODN$
13645 IF KIN&(PDX,KOXP-1)=0 THEN
13650 KIN&(PDX,KOXP-1)=CODX
13655 P=KMT%(KMI%(PDX,KOXP-1))
13660 IF (P MOD 2)=0 THEN T=1 ELSE T=-1
13665 KSU%(PDX,KOXP-1)=T
13670 ENDIF
13675 ENDIF
13680 INK_END=0 :CAR_END=1 :REF_SW=0
13685 CRXF=CRXF_S :CRYF=CRYF_S :MUX=MUX_Q :MUY=MUY_Q
13690 MOUSE 0 :MOUSE 1,MUX,MUY,1
13695 WHILE MOUSE(2,0)=-1 :WEND
13700 RETURN
13705 '
13710 *SYOKEI_P
13715 ZANX#=ZAN&(PDX) :ZAN1#=0 :ZAN2#=0 :ZAN3#=ZANX# :ZAN4#=0 :ZAN5#=0
13720 IF KMAX(PDX)<1 THEN RETURN
13725 FOR A=0 TO KMAX(PDX)-1
13730 P=KMT%(KMI%(PDX,A))
13735 IF P>1 THEN
13740 IF P=2 OR P=5 THEN ZAN4#=ZAN4#+KIN&(PDX,A)
13745 IF P=3 OR P=4 THEN ZAN5#=ZAN5#+KIN&(PDX,A)
13750 IF P<4 THEN GOTO 13775
13755 ENDIF
13760 ZAN3#=ZAN3#-KIN&(PDX,A)*KSU%(PDX,A)
13765 IF A<CSP6-1 THEN ZANX#=ZAN3#
13770 IF KSU%(PDX,A)>0 THEN ZAN1#=ZAN1#+KIN&(PDX,A)*KSU%(PDX,A) ELSE ZAN2#=ZAN2#+KIN&(PDX,A)
13775 NEXT A
13780 RETURN
13785 '
13790 *KMD_EXE
13795 IF MUX>MPXL+(KSX+59)*8-VXL AND MUX<MPXL+(KSX+61)*8-VXL THEN GOSUB *BNAME_UP :RETURN
13800 IF MUX>MPXL+(KSX+61)*8-VXL AND MUX<MPXL+(KSX+63)*8-VXL THEN GOSUB *BNAME_DOWN :RETURN
13805 IF MUX>MPXL+(KSX-3)*8-VXL AND MUX<MPXL+KSX*8-VXL THEN VXL=515 :GOSUB *BD_SUBP :RETURN
13810 IF MUX>MPXL+(KSX+4)*8-VXL AND MUX<MPXL+(KSX+6)*8-VXL THEN VXL=0 :GOSUB *BD_SUBP :RETURN
13815 IF MUX>MPXL-VXL+100 THEN WHILE MOUSE(2,0)=-1 :WEND :RETURN
13820 REF_SW=1
13825 MOUSE 5 :GOSUB *KMD_IP
13830 REF_SW=0
13835 MOUSE 1,,,0 :GOSUB *SCR_BACK :MOUSE 1,,,1
13840 REW_X=PXE%(5) :REW_Y=PYE%(5) :JP=9
13845 RETURN
13850 '
13855 *KILL_P6
13860 IF KOXP>=NSX THEN 13895
13865 FOR A=KOXP-1 TO KMAX(PDX)-2
13870 SWAP KIN&(PDX,A),KIN&(PDX,A+1)
13875 SWAP KMI%(PDX,A),KMI%(PDX,A+1)
13880 SWAP KSU%(PDX,A),KSU%(PDX,A+1)
13885 SWAP KNE$(PDX,A),KNE$(PDX,A+1)
13890 NEXT A
13895 IF KMAX(PDX)>0 THEN KMAX(PDX)=KMAX(PDX)-1
13900 RETURN
13905 '
13910 *INST_P6
13915 GOSUB *RET_W
13920 IF KMAX(PDX)=0 THEN RETURN
13925 IF P>NSX-2 THEN GOSUB *FLL_KMN :RETURN
13930 FOR A=KMAX(PDX)-1 TO P STEP-1
13935 KIN&(PDX,A+1)=KIN&(PDX,A)
13940 KMI%(PDX,A+1)=KMI%(PDX,A)
13945 KSU%(PDX,A+1)=KSU%(PDX,A)
13950 KNE$(PDX,A+1)=KNE$(PDX,A)
13955 NEXT A
13960 KIN&(PDX,P)=0
13965 KMI%(PDX,P)=0
13970 KSU%(PDX,P)=0
13975 KNE$(PDX,P)=""
13980 KMAX(PDX)=KMAX(PDX)+1
13985 RETURN
13990 '
13995 *ZAN_P
14000 X=PDX :PDXS=PDX
14005 *ZAN_P2
14010 GOSUB *ZAN_PX
14015 PDX=PDXS
14020 RETURN
14025 '
14030 *ZAN_PX
14035 FOR PDX=X TO 365+URY
14040 GOSUB *SYOKEI_P
14045 ZAN&(PDX+1)=ZAN3#
14050 NEXT PDX
14055 ZCALK_SW=0 :DEXE_SW=0
14060 RETURN
14065 '
14070 *CALK_BOD
14075 MOUSE 5 :INTERVAL OFF :REW_YS=REW_Y :REW_XS=REW_X
14080 REF_SW=1 :CRXF_S=CRXF :CRYF_S=CRYF :GET_ON=0
14085 A=NP(NEXP-1) :GOSUB *SWAP_XY :MUX_Q=MUX :MUY_Q=MUY
14090 GOSUB *CALK_P
14095 A=NP(NEXP-1) :GOSUB *SWAP_XY :BPQ=0
14100 GOSUB *SCR_BACK
14105 GOSUB *SET_XYD
14110 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
14115 JP=9 :REW_Y=REW_YS :REW_X=REW_XS
14120 IF GET_ON=1 THEN MX$=STR$(QX#)
14125 INK_END=0 :CAR_END=1 :REF_SW=0
14130 CRXF=CRXF_S :CRYF=CRYF_S :MUX=MUX_Q :MUY=MUY_Q
14135 MOUSE 0 :MOUSE 1,MUX,MUY,1
14140 WHILE MOUSE(2,0)=-1 :WEND
14145 RETURN
14150 '
14155 *SEL_SWP
14160 P=0
14165 IF MUX>MPXL-VXL+115 AND MUX<MPXL-VXL+125 THEN P=-1
14170 IF MUX>MPXL-VXL+130 AND MUX<MPXL-VXL+140 THEN P=1
14175 IF P<>0 THEN GOSUB *YMD_UDP :CSP6=1 :GOSUB *BOLD_BACK
14180 WHILE MOUSE(2,0)=-1 :WEND
14185 MOUSE 5
14190 RETURN
14195 '
14200 *YMD_UDP
14205 PDX=PDX+P
14210 RXD=RXD+P
14215 IF RXD<1 THEN
14220 RXM=RXM-1
14225 IF RXM<1 THEN RXM=12 :PDX=364+URY
14230 RXD=MONT(RXM)
14235 ENDIF
14240 IF RXD>MONT(RXM) THEN
14245 RXM=RXM+1
14250 IF RXM>12 THEN RXM=1 :PDX=0
14255 RXD=1
14260 ENDIF
14265 RETURN
14270 '
14275 *FLL_KMN
14280 RESTORE *ERM_D3
14285 *MES_6P
14290 GOSUB *ERMD_SET
14295 GOSUB *MESSAGE_P
14300 RETURN
14305 '
14310 *ERM_D3
14315 DATA 3
14320 DATA "登録領域が一杯です",0
14325 DATA "これ以上登録する事は出来ません" ,10
14330 DATA "不要な欄を削除してください",0
14335 '
14340 *FLL_6P
14345 RESTORE *ERM_D3B
14350 GOSUB *MES_6P
14355 RETURN
14360 '
14365 *ERM_D3B
14370 DATA 3
14375 DATA "登録領域が一杯で",0
14380 DATA "通帳に登録する事は出来ません" ,10
14385 DATA "家計簿のみ登録します",0
14390 '
14395 '-------------------------------------------------------------------
14400 *KMD_IP
14405 X1=MPXL :Y1=MPYL :X2=MPXF :Y2=MPYF
14410 A=9 :GOSUB *SWAP_XY
14415 MPXL=PXL%(9) :MPYL=PYL%(9) :MPXE=PXE%(9) :MPYE=PYE%(9)
14420 GOSUB *OPEN_P2
14425 BCL(1)=BCL(18) :BCL(9)=BCL(19) :GET_ON=0 :MUX_S=MUX :MUY_S=MUY
14430 REW_X=PXE%(9) :REW_Y=MPYE=PYE%(9) :BDP=10 :BPQ=0
14435 GOSUB *BOLD_P
14440 GOSUB *SET_XYD
14445 GOSUB *SEL_MXY
14450 IF ER=1 THEN 14480
14455 IF VAL(K$)>0 AND VAL(K$)=<KOZ THEN P=VAL(K$) :KPJ=P : MX$=KOM$(P) :GOTO 14480
14460 IF JP=1 THEN KPJ=0 :MX$=""
14465 ON JP GOSUB *RET_P,*REW_P,*DRAG_A,*YL_DOWN6I,*YL_UP6I,*XL_RIGHT6I, *XL_LEFT6I,*DRAG_B,*BSCR_P6I,*CSL_S6I,*CSL_D6I,*RET_W
14470 IF JP<>1 THEN 14445
14475 NEXP=NEXP+1
14480 GOSUB *CLOSE_P2
14485 PXL%(9)=MPXL :PYL%(9)=MPYL :PXE%(9)=MPXE :PYE%(9)=MPYE
14490 A=9 :GOSUB *SWAP_XY :MUX=MUX_S :MUY=MUY_S
14495 GOSUB *SET_XYD
14500 MOUSE 0 :MOUSE 1,MUX,MUY,1 :INK_END=1
14505 RETURN
14510 '
14515 *BD_10P
14520 IF REF_SW=1 THEN FILS$="[項目登録]" ELSE FILS$="[項目選択]"
14525 WINDOW (MPXL+VXU+1,MPYL+17)-(MPXF+VXU-17,MPYF-17) : VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
14530 GOSUB *BD10_LINE
14535 XL=MPXL+5 :YL=MPYL+55 :L=INT((MPXF-36)/8)
14540 FOR A=KMCS TO KOZ
14545 SYMBOL(XL,YL),STR$(A),1,1,%BCL(0)
14550 IF KMT%(A)=0 THEN CL=0
14555 IF KMT%(A)=1 THEN CL=8
14560 IF KMT%(A)=2 THEN CL=10
14565 IF KMT%(A)=3 THEN CL=1
14570 IF KMT%(A)=4 THEN CL=13
14575 IF KMT%(A)=5 THEN CL=14
14580 SYMBOL(XL+25,YL),KOM$(A),1,1,%BCL(CL)
14585 YL=YL+18
14590 IF YL>MPYF-32 THEN XL=XL+(KOML+2)*8 :YL=MPYL+55 : L=INT((MPXF-XL-36)/8)
14595 IF XL>MPXF-36 THEN 14605
14600 NEXT A
14605 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
14610 GOSUB *CASOL_P6I :GOSUB *CASOL_P6IB
14615 RETURN
14620 '
14625 *BD10_LINE
14630 IF KOML=0 THEN KOML=15
14635 XL=MPXL+5 :YL=MPYL+50 :X=(KOML+2)*8 :L=INT((MPXE-25)/X)
14640 SYMBOL(XL+3*8,YL-10),STR$(KOML-3),.7!,.7!,%BCL(0)
14645 FOR A=1 TO L
14650 LINE (XL,YL-5)-STEP(0,7),PSET,%BCL(0)
14655 LINE (XL+KOML*8,YL-5)-STEP(0,7),PSET,%BCL(0)
14660 LINE (XL,YL )-STEP(X-16,0),PSET,%BCL(0)
14665 SYMBOL(XL,YL-28),"No.",1,1,%BCL(0)
14670 LINE (XL+3*8,YL-5)-STEP(0,7),PSET,%BCL(0)
14675 SYMBOL(XL+3*8,YL-28),"[名 称]",1,1,%BCL(0)
14680 XL=XL+X
14685 NEXT A
14690 IF XL<MPXF-16 THEN 14645
14695 RETURN
14700 '
14705 *YL_DOWN6I
14710 KMCS=KMCS+1
14715 IF KMCS>KOZ THEN KMCS=KOZ
14720 GOSUB *BD_SUBP
14725 RETURN
14730 '
14735 *YL_UP6I
14740 KMCS=KMCS-1
14745 IF KMCS<1 THEN KMCS=1
14750 GOSUB *BD_SUBP
14755 RETURN
14760 '
14765 *XL_RIGHT6I
14770 L=INT((MPYE-71)/18)+1
14775 KMCS=KMCS+L
14780 IF KMCS>KOZ THEN KMCS=KMCS-L
14785 GOSUB *BD_SUBP
14790 RETURN
14795 '
14800 *XL_LEFT6I
14805 L=INT((MPYE-71)/18)+1
14810 KMCS=KMCS-L
14815 IF KMCS<1 THEN KMCS=1
14820 GOSUB *BD_SUBP
14825 RETURN
14830 '
14835 *CASOL_P6I
14840 A=KOZ :B=KMCS
14845 GOSUB *CASOL_PX1
14850 RETURN
14855 '
14860 *CASOL_P6IB
14865 A=MPXE-80 :B=((MPXE-80)/KOZ)*(KMCS-1)
14870 GOSUB *CASOL_PX2
14875 RETURN
14880 '
14885 *CSL_S6I
14890 IF KOZ=0 THEN GOSUB *RET_W
14895 A=KOZ
14900 GOSUB *カーソル_SET1
14905 KMCS=P
14910 GOSUB *BD_SUBP
14915 RETURN
14920 '
14925 *CSL_D6I
14930 IF KOZ=0 THEN GOSUB *RET_W
14935 A=KOZ
14940 GOSUB *カーソル_SET2
14945 KMCS=P
14950 GOSUB *BD_SUBP
14955 RETURN
14960 '
14965 *BSCR_P6I
14970 XL=INT((MUX-MPXL-5)/((KOML+2)*8))
14975 IF ((MUX-MPXL-5) MOD ((KOML+2)*8))>0 THEN XL=XL+1
14980 Y=INT((MPYE-87)/18)+1
14985 YL=INT((MUY-MPYL-55)/18)
14990 P=(XL-1)*Y+YL+KMCS
14995 IF YL<0 THEN *LINE_EXE6I
15000 IF P>KOZ THEN *INP_KMDP
15005 IF REF_SW=1 THEN *KMD_EXEP
15010 KPJ=P :MX$=KOM$(P) :GET_ON=1
15015 JP=1 :NEXP=NEXP-1 :MOUSE 5
15020 RETURN
15025 '
15030 *LINE_EXE6I
15035 GOSUB *LINE_EXEP
15040 IF CAR_END=1 THEN KOML=VAL(MX$)+3
15045 GOSUB *BOLD_P2
15050 RETURN
15055 '
15060 *KMD_EXEP
15065 IF MUY>MPYL+Y*18+55 THEN RETURN
15070 CRXF=MPXL+(XL-1)*((KOML+2)*8)+30 :CRXE=CRXF+KOML*8
15075 CRYF=MPYL+YL*18+55 :CRYE=CRYF+18
15080 KMDP=P
15085 MX$=KOM$(KMDP) :XLP=LEN(MX$)
15090 IF KMT%(KMDP)=1 THEN MX$=MX$+"+"
15095 IF KMT%(KMDP)=2 THEN MX$=MX$+"/"
15100 IF KMT%(KMDP)=3 THEN MX$=MX$+"*"
15105 IF KMT%(KMDP)=4 THEN MX$=MX$+"="
15110 IF KMT%(KMDP)=5 THEN MX$=MX$+"-"
15115 *INP_KMDP2
15120 CRLEN=KOML-2 :CAR_END=0 :CRB=BCL(5)
15125 GOSUB *INKEY_WP
15130 IF INK_END=1 THEN RETURN
15135 A=0
15140 IF RIGHT$(MX$,1)="+" THEN A=1
15145 IF RIGHT$(MX$,1)="/" THEN A=2
15150 IF RIGHT$(MX$,1)="*" THEN A=3
15155 IF RIGHT$(MX$,1)="=" THEN A=4
15160 IF RIGHT$(MX$,1)="-" THEN A=5
15165 IF A>0 THEN MX$=LEFT$(MX$,LEN(MX$)-1)
15170 KOM$(KMDP)=MX$ :KMT%(KMDP)=A
15175 VXU=0
15180 GOSUB *BOLD_P3
15185 GOSUB *KOMOK_SAVE
15190 RETURN
15195 '
15200 *INP_KMDP
15205 IF P>=KSZ THEN *FLL_KMD
15210 KOZ=KOZ+1
15215 KOM$(KOZ)="" :KMT%(KOZ)=0
15220 CRXF=MPXL+(XL-1)*((KOML+2)*8)+30 :CRXE=CRXF+KOML*8
15225 CRYF=MPYL+YL*18+55 :CRYE=CRYF+18
15230 MX$="" :XLP=0 :KMDP=KOZ
15235 GOSUB *INP_KMDP2
15240 IF INK_END=1 THEN KOZ=KOZ-1 :GOSUB *BOLD_P3
15245 RETURN
15250 '
15255 *FLL_KMD
15260 RESTORE *ERM_D4 :GOSUB *ERMD_SET
15265 GOSUB *MESSAGE_P
15270 RETURN
15275 '
15280 *ERM_D4
15285 DATA 4
15290 DATA "登録領域が一杯です",0
15295 DATA "これ以上項目を登録する事は出来ません" ,10
15300 DATA "不要な項目を変更してください",10
15305 DATA "この場合、すでに家計簿に登録されている項目名も変更されます",11
15310 '
15315 '-------------------------------------------------------------------
15320 *CALK_P
15325 A=NP(NEXP) :GOSUB *SWAP_XY
15330 MPXL=PXL%(6) :MPYL=PYL%(6) :MPXE=PXE%(6) :MPYE=PYE%(6)
15335 GOSUB *SWAP_MD
15340 A=6 :GOSUB *OPEN_P
15345 *CALK_P2
15350 BCL(1)=BCL(18) :BCL(9)=BCL(19) :S$="" :SX$="" :QX#=0 :GET_ON=0
15355 BDP=7 :NEXP=NEXP+1 :BPQ=2 :MRI_P=0
15360 GOSUB *BOLD_P
15365 GOSUB *SET_XYD3
15370 GOSUB *SEL_MXY
15375 IF ER=1 OR (JP=18 AND REF_SW=0) THEN 15370
15380 IF K$<>"" THEN
15385 GOSUB *KEY_GET
15390 IF JP=0 THEN 15370
15395 ENDIF
15400 IF JP=0 THEN
15405 GOSUB *NEX_XY
15410 IF JP>0 THEN
15415 IF JP=10 THEN PXL%(6)=MPXL :PYL%(6)=MPYL : PXE%(6)=MPXE :PYE%(6)=MPYE
15420 A=NP(NEXP-1) :GOSUB *SWAP_XY :GOTO *NEX_P
15425 GOTO *NEX_P
15430 ENDIF
15435 GOTO 15365
15440 ENDIF
15445 IF JP>6 THEN GOSUB *CALK :IF GET_ON=1 AND REF_SW=1 THEN JP=1
15450 IF JP=1 AND REF_SW=1 THEN
15455 MOUSE 5
15460 PXL%(6)=MPXL :PYL%(6)=MPYL :PXE%(6)=MPXE
15465 PYE%(6)=MPYE :GOSUB *CLOSE_P
15470 NEXP=NEXP-1 :A=NP(NEXP) :GOSUB *SWAP_XY
15475 RETURN
15480 ENDIF
15485 ON JP GOSUB *RET_P,*DRAG_B,*SUJI_P,*SUJI_P2,*TEN_P,*ZERO_P
15490 IF JP=1 THEN
15495 PXL%(6)=MPXL :PYL%(6)=MPYL :PXE%(6)=MPXE :PYE%(6)=MPYE
15500 GOSUB *CLOSE_P
15505 IF NEXP=0 THEN RETURN ELSE JP=BPS(NP(NEXP-1)) :NX=0 :GOTO *NEX_P
15510 ENDIF
15515 GOTO 15370
15520 '
15525 *SUJI_P
15530 X=INT((MUX-MPXL-10)/20)+1
15535 Y=INT((MUY-MPYL-60)/20)
15540 IF P>=21 AND P=<23 THEN S$=""
15545 P=Y*3+X
15550 IF Y=0 THEN S=6+X :P=X-1
15555 IF Y=1 THEN S=3+X :P=5+X
15560 IF Y=2 THEN S=X :P=11+X
15565 S$=S$+MID$(STR$(S),2)
15570 *SUJI_P1
15575 IF MRI_P=1 THEN S$=RIGHT$(S$,1) :MRI_P=0
15580 S$=LEFT$(S$,13) :SX$=S$
15585 GOSUB *BOTAN_P
15590 RETURN
15595 '
15600 *SUJI_P2
15605 IF P>=21 AND P=<23 THEN S$=""
15610 IF S$="" THEN RETURN
15615 S$=S$+"0" :P=18
15620 GOTO *SUJI_P1
15625 '
15630 *TEN_P
15635 IF P>=21 AND P=<23 THEN S$=""
15640 S$=S$+"." :P=19
15645 GOTO *SUJI_P1
15650 '
15655 *ZERO_P
15660 IF P>=21 AND P=<23 THEN S$=""
15665 IF S$="" THEN RETURN
15670 S$=S$+"000" :P=20
15675 GOTO *SUJI_P1
15680 '
15685 *SUJI_PRINT
15690 LINE (MPXL+15,MPYL+25)-STEP(110,21),PSET,%BCL(5),BF
15695 IF SX$="" THEN A$="0" ELSE A$=SX$
15700 IF VAL(SX$)>10^12 THEN A$="桁溢れです"
15705 A$=LEFT$(A$,13)
15710 SYMBOL(MPXF-LEN(A$)*8-20,MPYL+28),A$,1,1,%BCL(0)
15715 RETURN
15720 '
15725 *CALK
15730 IF JP=7 THEN S$="" :SX$="" :P=3 :GOSUB *BOTAN_P :RETURN
15735 IF JP=8 THEN S$="" :SX$="" :QX#=0 :P=4 :GOSUB *BOTAN_P :RETURN
15740 IF JP=9 THEN
15745 SX$=STR$(MR#) :IF VAL(SX$)=0 THEN S$="" ELSE S$=SX$
15750 IF MR_SW>0 AND TIMZ=TIME THEN MR_SW=0 :MR#=0
15755 P=5 :GOSUB *BOTAN_P :TIMZ=TIME :RETURN
15760 ENDIF
15765 IF C_SW=0 AND (JP>9 AND JP<15) AND JP<>12 THEN
15770 IF JP=10 THEN C_SW=1 :P=9
15775 IF JP=11 THEN C_SW=2 :P=10
15780 IF JP=13 THEN C_SW=3 :P=15
15785 IF JP=14 THEN C_SW=4 :P=16
15790 QX#=VAL(S$) :S$="" :GOSUB *BOTAN_P
15795 RETURN
15800 ENDIF
15805 IF C_SW>0 AND (JP>9 AND JP<15) AND JP<>12 THEN
15810 GOSUB *MAIN_CALK
15815 SX$=STR$(QX#) :S$=""
15820 IF JP=10 THEN C_SW=1 :P=9
15825 IF JP=11 THEN C_SW=2 :P=10
15830 IF JP=13 THEN C_SW=3 :P=15
15835 IF JP=14 THEN C_SW=4 :P=16
15840 GOSUB *BOTAN_P :RETURN
15845 ENDIF
15850 IF JP=17 OR JP=18 THEN
15855 GOSUB *MAIN_CALK
15860 C_SW=0 :S$=SX$ :MRI_P=1 :P=22
15865 IF JP=18 THEN GET_ON=1 :P=23
15870 GOSUB *BOTAN_P :RETURN
15875 ENDIF
15880 IF JP=16 THEN
15885 IF C_SW=1 THEN
15890 QX#=QX#/100*VAL(S$) :SX$=STR$(QX#)
15895 ELSE
15900 GOSUB *MAIN_CALK
15905 ENDIF
15910 C_SW=0 :P=21 :S$=SX$
15915 GOSUB *BOTAN_P :RETURN
15920 ENDIF
15925 IF JP=12 THEN MR#=MR#+VAL(S$) :MR_SW=1 :C_SW=0 :P=11 : GOSUB *BOTAN_P :MRI_P=1 :RETURN
15930 IF JP=15 THEN MR#=MR#-VAL(S$) :MR_SW=1 :C_SW=0 :P=17 : GOSUB *BOTAN_P :MRI_P=1
15935 RETURN
15940 '
15945 *KEY_GET
15950 IF VAL(K$)>0 THEN
15955 IF P>=21 AND P=<23 THEN S$=""
15960 S$=S$+K$ :A=VAL(K$)
15965 IF A>=1 AND A=<3 THEN P=A+11
15970 IF A>=4 AND A=<6 THEN P=A+2
15975 IF A>=7 AND A=<9 THEN P=A-7
15980 GOTO *SUJI_P1
15985 ENDIF
15990 IF K$="0" THEN *SUJI_P2
15995 IF K$="." THEN *TEN_P
16000 IF K$="000" THEN *ZERO_P
16005 IF K$="*" THEN JP=10
16010 IF K$="/" THEN JP=11
16015 IF K$="-" THEN JP=13
16020 IF K$="+" THEN JP=14
16025 IF K$=CHR$(8) THEN JP=7
16030 IF K$="c" OR K$="C" THEN JP=8
16035 IF K$="r" OR K$="R" THEN JP=9
16040 IF K$="p" OR K$="P" THEN JP=12
16045 IF K$="n" OR K$="N" THEN JP=15
16050 IF K$="%" THEN JP=16
16055 IF K$="=" THEN JP=17
16060 IF K$=CHR$(13) THEN JP=18
16065 RETURN
16070 '
16075 *MAIN_CALK
16080 IF C_SW=0 THEN QX#=VAL(S$)
16085 IF C_SW=1 THEN QX#=QX#*VAL(S$)
16090 IF C_SW=2 THEN IF VAL(S$)=0 THEN ER=1 ELSE QX#=QX#/VAL(S$)
16095 IF C_SW=3 THEN QX#=QX#-VAL(S$)
16100 IF C_SW=4 THEN QX#=QX#+VAL(S$)
16105 IF ER=1 THEN SX$="エラー" :QX#=0 :ER=0
16110 SX$=STR$(QX#) :S$=""
16115 RETURN
16120 '
16125 *BOTAN_P
16130 GOSUB *SUJI_PRINT
16135 Y=INT(P/6)*20+MPYL+60 :X=(P MOD 6)*20+MPXL+10
16140 LINE (X,Y)-(X+20,Y+20),XOR,%BCL(2),BF
16145 IF MOUSE(2,0)=0 THEN WAIT 20
16150 WHILE MOUSE(2,0)=-1 :WEND
16155 LINE (X,Y)-(X+20,Y+20),XOR,%BCL(2),BF
16160 RETURN
16165 '-------------------------------------------------------------------
16170 *BANK_P
16175 A=NP(NEXP) :GOSUB *SWAP_XY
16180 MPXL=PXL%(8) :MPYL=PYL%(8) :MPXE=PXE%(8) :MPYE=PYE%(8)
16185 A=8 :GOSUB *OPEN_P
16190 *BANK_P2
16195 BDP=9 :BPQ=0 :YU=28 :WKST=1 :REF_SW=0
16200 GOSUB *SEL_WAKP
16205 IF JPQ=1 THEN GOTO *NEX_P
16210 RETURN
16215 '
16220 *BD_9P
16225 WINDOW (MPXL+VHL+1,MPYL+17)-(MPXF+VHL-17,MPYF-17)
16230 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
16235 IF VHL<200 THEN A$=" [ 普 通 ]" ELSE A$=" [ 定 期 ]"
16240 FILS$="預 金 通 帳"+A$
16245 GOSUB *BD9_LINE
16250 XL=MPXL-190 :YL=MPYL+75 :GOSUB *BANKN_PUT :GOSUB *TEIKI_PUT
16255 IF BMAX=0 THEN WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479) :RETURN
16260 XL=MPXL+5 :YL=MPYL+75 :E=15 :CL=BCL(0)
16265 GOSUB *SYOKEI_P9 :BZAN2#=BZANX#
16270 FOR A=CSPB TO BMAX
16275 SYMBOL(XL-10-LEN(STR$(A))*8,YL),STR$(A)+".",1,1,%BCL(0)
16280 A$=BYM$(A-1) :P=9 :PL=0 :GOSUB *PUT_DAT
16285 IF BCD(A-1)=0 THEN A$="" ELSE A$=MID$(STR$(BCD(A-1)),2) : IF LEN(A$)<3 THEN A$=RIGHT$("00"+A$,3)
16290 P=6 :PL=9*8 :GOSUB *PUT_DAT
16295 A$=LEFT$(BME$(A-1),BSX-51) :P=BSX-36 :PL=15*8 :GOSUB *PUT_DAT
16300 BA#=BIN#(A-1)
16305 IF BA#=0 THEN A$="" ELSE A$=STR$(BA#)
16310 P=BSX-24 :PL=(BSX-36)*8 :GOSUB *CONMA_P
16315 GOSUB *PUT_DAT
16320 '
16325 BB#=BOUT#(A-1)
16330 IF BB#=0 THEN A$="" ELSE A$=STR$(BB#)
16335 P=BSX-12 :PL=(BSX-24)*8 :GOSUB *CONMA_P
16340 GOSUB *PUT_DAT
16345 '
16350 BZAN2#=BZAN2#+BA#-BB#
16355 A$=STR$(BZAN2#)
16360 P=BSX :PL=(BSX-12)*8 :GOSUB *CONMA_P
16365 GOSUB *PUT_DAT
16370 YL=YL+18
16375 IF YL>MPYF-32 THEN 16385
16380 NEXT A
16385 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
16390 GOSUB *CASOL_P9 :GOSUB *CASOL_P9B
16395 RETURN
16400 '
16405 *BANKN_PUT
16410 IF BNMAX=0 OR VHL>0 THEN RETURN
16415 FOR A=BNL TO BNMAX
16420 SYMBOL(XL-10-LEN(STR$(A))*8,YL+(A-BNL)*18), STR$(A)+".",1,1,%BCL(0)
16425 IF A=BANKP THEN LINE (XL-1,YL+(A-BNL)*18-1)- STEP(16*8,18),XOR,%BCL(0),BF,%BCL(23)
16430 SYMBOL(XL,YL+(A-BNL)*18),LEFT$(BNAME$(A-1),16),1,1,%BCL(0)
16435 IF A*18>MPYF-16 THEN RETURN
16440 NEXT A
16445 RETURN
16450 '
16455 *CONMA_P
16460 S=LEN(A$)
16465 U=INT(S/3) :IF U<1 THEN RETURN
16470 B$=""
16475 FOR U=S TO 1 STEP -1
16480 B$=MID$(A$,U,1)+B$
16485 IF ((S-U+1) MOD 3)=0 AND U>2 THEN B$=","+B$
16490 NEXT U
16495 A$=B$
16500 RETURN
16505 '
16510 *TEIKI_PUT
16515 IF TMAX<1 THEN RETURN
16520 XL=MPXL+(BSX+6)*8+4 :YL=MPYL+75 :E=15 :CL=BCL(0)
16525 FOR A=CSPT TO TMAX
16530 SYMBOL(XL-8-LEN(STR$(A))*8,YL),STR$(A)+".",1,1,%BCL(0)
16535 A$=TYD$(A-1) :P=9 :PL=0 :GOSUB *PUT_DAT
16540 A$=LEFT$(TYN$(A-1),TBX) :P=TBX+9 :PL=9*8 :GOSUB *PUT_DAT
16545 A$=STR$(TYI#(A-1)) :P=TBX+21 :PL=(TBX+9)*8 :GOSUB *CONMA_P
16550 GOSUB *PUT_DAT
16555 A$=TYK$(A-1) :P=TBX+30 :PL=(TBX+21)*8 :GOSUB *PUT_DAT
16560 A$=STR$(TYO#(A-1)) :P=TBX+42 :PL=(TBX+30)*8 :GOSUB *CONMA_P
16565 GOSUB *PUT_DAT
16570 YL=YL+18
16575 IF YL>MPYF-32 THEN RETURN
16580 NEXT A
16585 RETURN
16590 '
16595 *BD9_LINE
16600 IF BSX=<0 THEN BSX=59
16605 IF TBX=<0 THEN TBX=14
16610 XL=MPXL+5 :YL=MPYL+70
16615 GOSUB *TEIKI_ZAN
16620 IF BANKP>0 THEN BN$=LEFT$(BNAME$(BANKP-1),16) ELSE BN$="銀行名選択"
16625 SYMBOL(XL+4,YL-50),BN$,1,1,%BCL(10)
16630 LINE (XL,YL-5)-STEP(0,7),PSET,%BCL(0)
16635 LINE (XL+BSX*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16640 LINE (XL,YL )-STEP((BSX+2)*8-16,0),PSET,%BCL(0)
16645 LINE (XL-200,YL-5)-STEP(0,7),PSET,%BCL(0)
16650 LINE (XL-60 ,YL-5)-STEP(0,7),PSET,%BCL(0)
16655 LINE (XL-200,YL )-STEP(140,0),PSET,%BCL(0)
16660 SYMBOL(XL-250,YL-10),"No",1,1,%BCL(0)
16665 SYMBOL(XL-195,YL-28),"[銀行名] ↑ ↓",1,1,%BCL(0)
16670 SYMBOL(XL-50,YL-10),"No",1,1,%BCL(0)
16675 SYMBOL(XL,YL-28),"[年月日]",1,1,%BCL(0)
16680 LINE (XL+72,YL-5)-STEP(0,7),PSET,%BCL(0)
16685 SYMBOL(XL+72,YL-28),"[取扱]",1,1,%BCL(0)
16690 LINE (XL+120,YL-5)-STEP(0,7),PSET,%BCL(0)
16695 SYMBOL(XL+120,YL-10),STR$(BSX-51),.7!,.7!,%BCL(0)
16700 SYMBOL(XL+120,YL-28),"[名 目]",1,1,%BCL(0)
16705 LINE (XL+(BSX-36)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16710 SYMBOL(XL+(BSX-36)*8,YL-28),"[預 入]",1,1,%BCL(0)
16715 LINE (XL+(BSX-24)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16720 SYMBOL(XL+(BSX-24)*8,YL-28),"[引 出]",1,1,%BCL(0)
16725 LINE (XL+(BSX-12)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16730 SYMBOL(XL+(BSX-12)*8,YL-28),"[残 高] → ←",1,1,%BCL(0)
16735 LINE (XL+(BSX-42)*8,YL-34)-STEP(42*8,0),PSET,%BCL(0)
16740 LINE (XL+(BSX-42)*8,YL-50)-STEP(42*8,16),XOR,%BCL(21),BF
16745 SYMBOL(XL+(BSX-42)*8+4,YL-50),"合 計",1,1,%BCL(0)
16750 LINE (XL+(BSX-36)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
16755 A$=STR$(BIN1#) :GOSUB *CONMA_P :P=LEN(A$)
16760 SYMBOL(XL+(BSX-24-P)*8,YL-50),A$,1,1,%BCL(0)
16765 LINE (XL+(BSX-24)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
16770 A$=STR$(BOUT1#) :GOSUB *CONMA_P :P=LEN(A$)
16775 SYMBOL(XL+(BSX-12-P)*8,YL-50),A$,1,1,%BCL(0)
16780 LINE (XL+(BSX-12)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
16785 A$=STR$(BZAN1#) :GOSUB *CONMA_P :P=LEN(A$)
16790 SYMBOL(XL+(BSX-P)*8,YL-50),A$,1,1,%BCL(0)
16795 LINE (XL+BSX*8,YL-39)-STEP(0,7),PSET,%BCL(0)
16800 SYMBOL(MPXL+BSX*8+54,MPYL+20),BN$,1,1,%BCL(10)
16805 SYMBOL(XL+BSX*8+5,YL-10),"No",1,1,%BCL(0)
16810 LINE (XL+(BSX+6)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16815 LINE (XL+(BSX+6)*8,YL )-STEP((TBX+42)*8,0),PSET,%BCL(0)
16820 LINE (XL+(BSX+TBX+11)*8,YL-34 )-STEP(17*8,0),PSET,%BCL(0)
16825 LINE (XL+(BSX+TBX+32)*8,YL-34 )-STEP(16*8,0),PSET,%BCL(0)
16830 LINE (XL+(BSX+15)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16835 LINE (XL+(BSX+TBX+15)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16840 LINE (XL+(BSX+TBX+15)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
16845 LINE (XL+(BSX+TBX+27)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16850 LINE (XL+(BSX+TBX+27)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
16855 LINE (XL+(BSX+TBX+36)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16860 LINE (XL+(BSX+TBX+36)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
16865 LINE (XL+(BSX+TBX+48)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
16870 LINE (XL+(BSX+TBX+48)*8,YL-39)-STEP(0,7),PSET,%BCL(0)
16875 SYMBOL(XL+(BSX+15)*8,YL-10),STR$(TBX),.7!,.7!,%BCL(0)
16880 SYMBOL(XL+(BSX+ 6)*8,YL-28),"[預入日]",1,1,%BCL(0)
16885 SYMBOL(XL+(BSX+15)*8,YL-28),"[口座名]",1,1,%BCL(0)
16890 SYMBOL(XL+(BSX+TBX+15)*8,YL-28),"[預金額]",1,1,%BCL(0)
16895 LINE (XL+(BSX+TBX+11)*8,YL-50)-STEP(16*8,16),XOR,%BCL(21),BF
16900 SYMBOL(XL+(BSX+TBX+11)*8,YL-50),"合計",1,1,%BCL(0)
16905 A$=STR$(TZAN1#) :GOSUB *CONMA_P :P=LEN(A$)
16910 SYMBOL(XL+(BSX+TBX+27-P)*8,YL-50),A$,1,1,%BCL(0)
16915 SYMBOL(XL+(BSX+TBX+27)*8,YL-28),"[解約日]",1,1,%BCL(0)
16920 SYMBOL(XL+(BSX+TBX+36)*8,YL-28),"[受取額] ↓↑",1,1,%BCL(0)
16925 LINE (XL+(BSX+TBX+32)*8,YL-50)-STEP(16*8,16),XOR,%BCL(21),BF
16930 SYMBOL(XL+(BSX+TBX+32)*8,YL-50),"残高",1,1,%BCL(0)
16935 A$=STR$(TZAN3#) :GOSUB *CONMA_P :P=LEN(A$)
16940 SYMBOL(XL+(BSX+TBX+48-P)*8,YL-50),A$,1,1,%BCL(0)
16945 A$="["+MID$(STR$(PAGE1(BANKP)+1),2)+"頁]"
16950 SYMBOL(MPXL-50,MPYL+20),A$,1,1,%BCL(6)
16955 A$="["+MID$(STR$(PAGE2(BANKP)+1),2)+"頁]"
16960 SYMBOL(MPXL+BSX*8+5,MPYL+20),A$,1,1,%BCL(6)
16965 RETURN
16970 '
16975 *YL_DOWN9
16980 CSPB=CSPB+1
16985 IF CSPB>BMAX THEN CSPB=BMAX
16990 GOSUB *BD_SUBP
16995 RETURN
17000 '
17005 *YL_UP9
17010 CSPB=CSPB-1
17015 IF CSPB<1 THEN CSPB=1
17020 GOSUB *BD_SUBP
17025 RETURN
17030 '
17035 *XL_LEFT9
17040 VHL=VHL-100
17045 GOSUB *BD_SUBP
17050 RETURN
17055 '
17060 *XL_RIGHT9
17065 VHL=VHL+100
17070 GOSUB *BD_SUBP
17075 RETURN
17080 '
17085 *CASOL_P9
17090 A=BMAX :B=CSPB
17095 GOSUB *CASOL_PX1
17100 RETURN
17105 '
17110 *CASOL_P9B
17115 A=(BSX+2)*8 :B=VHL
17120 GOSUB *CASOL_PX2
17125 RETURN
17130 '
17135 *CSL_S9
17140 IF BMAX=0 THEN GOSUB *RET_W :RETURN
17145 A=BMAX
17150 GOSUB *カーソル_SET1
17155 CSPB=P
17160 GOSUB *BD_SUBP
17165 RETURN
17170 '
17175 *BSCR_P9
17180 VHP=VHL :CRB=BCL(5) :INTERVAL ON
17185 *BSCR_P9B
17190 TIMX$="" :GOSUB *CLOCK_P
17195 IF MUX>MPXL+BSX*8+5-VHL THEN *BSCR_P9T
17200 YL=INT((MUY-MPYL-75)/18)
17205 IF YL<0 THEN
17210 IF MUY<MPYL+42 THEN *BANK_EXE
17215 IF MUY<MPYL+58 THEN *BCOD_EXE
17220 GOTO *LINE_EXE9
17225 ENDIF
17230 IF PAGE1S<>PAGE1(BANKP) THEN *PAGE1_ERR
17235 BOXP=YL+CSPB
17240 IF BOXP>BMAX THEN *BMN_INPUT
17245 IF BOXP>0 THEN *BMN_EXE
17250 GOSUB *RET_W
17255 RETURN
17260 '
17265 *LINE_EXE9
17270 IF MUX<MPXL+120-VHL OR MUX>MPXL+120+(BSX-51)*8-VHL THEN RETURN
17275 GOSUB *LINE_EXEP
17280 IF CAR_END=1 THEN BSX=VAL(MX$)+51
17285 GOSUB *SCR_BACK
17290 RETURN
17295 '
17300 *BMN_EXE
17305 WHILE MOUSE(2,0)=-1 :WEND
17310 IF MUX<MPXL-VHL THEN *BANK_NEXE
17315 GOSUB *BCRD_SET :IF ER=1 THEN ER=0 :GOTO 17415
17320 GOSUB *BCRP_SET :XLP=LEN(MX$)
17325 GOSUB *KEY_CR
17330 EXE_SW=1
17335 GOSUB *INKEY_P
17340 EXE_SW=0
17345 IF RCLICK>0 THEN CRB=BCL(10) :GOSUB *KEY_CR : CRB=BCL(5) :GOSUB *KILL_P9 :GOTO 17420
17350 IF LCLICK>0 THEN
17355 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
17360 IF KPS=3 THEN GOSUB *BGET_CORD : IF GET_ON=0 THEN *BSCR_P9B ELSE INK_END=0 :CAR_END=1
17365 IF KPS>3 THEN GOSUB *CALK_BOD : IF GET_ON=0 THEN *BSCR_P9B
17370 ENDIF
17375 IF INK_END=0 THEN
17380 GOSUB *BMX_SET :GOSUB *KEY_CR
17385 IF CAR_END=1 THEN GOSUB *BCRD_NSET
17390 GOSUB *BOLD_BACK
17395 GOTO *BSCR_P9B
17400 ELSE
17405 WHILE MOUSE(2,1)=-1 :WEND
17410 ENDIF
17415 MOUSE 5
17420 GOSUB *BANK_SAVE :VHL=VHP :GOSUB *SCR_BACK
17425 RETURN
17430 '
17435 *BMN_INPUT
17440 IF MUX<MPXL-VHL THEN *BANK_NINP
17445 BOXP=BMAX+1 :IF BMAX>=BNZ THEN GOSUB *FLL_BMN :GOTO 17565
17450 BYM$(BMAX)="" :BCD(BMAX)=0 :BME$(BMAX)=""
17455 BIN#(BMAX)=0 :BOUT#(BMAX)=0
17460 GOSUB *BCRD_SET :IF ER=1 THEN ER=0 :GOTO 17560
17465 MX$="" :GOSUB *KEY_CR
17470 WHILE MOUSE(2,0)=-1 :WEND
17475 EXE_SW=1
17480 GOSUB *INKEY_P
17485 EXE_SW=0
17490 IF LCLICK>0 THEN
17495 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
17500 IF KPS=3 THEN GOSUB *BGET_CORD : IF GET_ON=0 THEN *BSCR_P9B ELSE INK_END=0 :CAR_END=1
17505 IF KPS>3 THEN GOSUB *CALK_BOD : IF GET_ON=0 THEN *BSCR_P9B
17510 ENDIF
17515 IF INK_END=0 THEN
17520 BMAX=BMAX+1 :BOXP=BMAX
17525 GOSUB *BMX_SET :GOSUB *KEY_CR
17530 IF CAR_END=1 THEN GOSUB *BCRD_NSET
17535 GOSUB *BOLD_BACK
17540 GOTO *BSCR_P9B
17545 ELSE
17550 WHILE MOUSE(2,1)=-1 :WEND
17555 ENDIF
17560 MOUSE 5
17565 GOSUB *BANK_SAVE :VHL=VHP :GOSUB *SCR_BACK
17570 RETURN
17575 '
17580 *BCRD_SET
17585 P=INT((MUX-MPXL-5+VHL)/8)
17590 IF P<0 OR P>(BSX-12) THEN ER=1 :RETURN
17595 IF P>=0 AND P<8 THEN CRXF=MPXL :CRXE=CRXF+8*8 : CRLEN=10 :KPS=1
17600 IF P>=8 AND P<15 THEN CRXF=MPXL+9*8 :CRXE=CRXF+15*8 : CRLEN=6 :KPS=2
17605 IF P>=15 AND P<(BSX-36) THEN CRXF=MPXL+15*8 :CRXE=CRXF+(BSX-51)*8 : CRLEN=(BSX-50) :KPS=3
17610 IF P>=(BSX-36) AND P<(BSX-24) THEN CRXF=MPXL+(BSX-36)*8 : CRXE=CRXF+12*8 :CRLEN=13 :KPS=4
17615 IF P>=(BSX-24) AND P<(BSX-12) THEN CRXF=MPXL+(BSX-24)*8 : CRXE=CRXF+12*8 :CRLEN=13 :KPS=5
17620 CRXF=CRXF+5-VHL :CRXE=CRXE+5-VHL
17625 CRYF=MPYL+75+(BOXP-CSPB)*18 :CRYE=CRYF+18
17630 IF CRYF>MPYF-32 THEN CSPB=CSPB+1 :GOSUB *BD_9P :GOTO 17625
17635 XLP=0
17640 RETURN
17645 '
17650 *BCRP_SET
17655 MX$=""
17660 IF KPS=1 THEN MX$=BYM$(BOXP-1)
17665 IF KPS=2 THEN MX$=MID$(STR$(BCD(BOXP-1)),2)
17670 IF KPS=3 THEN MX$=BME$(BOXP-1)
17675 IF KPS=4 THEN MX$=STR$(BIN#(BOXP-1))
17680 IF KPS=5 THEN MX$=STR$(BOUT#(BOXP-1))
17685 IF MX$="0" OR MX$=" 0" THEN MX$=""
17690 RETURN
17695 '
17700 *BMX_SET
17705 IF KPS=1 THEN BYM$(BOXP-1) =MX$
17710 IF KPS=2 THEN BCD(BOXP-1) =VAL(MX$)
17715 IF KPS=3 THEN BME$(BOXP-1) =MX$
17720 IF KPS=4 THEN BIN#(BOXP-1) =VAL(MX$) :BZAN1#=BZAN1#+BIN#(BOXP-1) : BIN1#=BIN1#+BIN#(BOXP-1)
17725 IF KPS=5 THEN BOUT#(BOXP-1)=VAL(MX$) :BZAN1#=BZAN1#-BOUT#(BOXP-1): BOUT1#=BOUT1#+BOUT#(BOXP-1)
17730 RETURN
17735 '
17740 *BCRD_NSET
17745 IF KPS=1 THEN BLEN=9*8 :MUX=MPXL+BLEN+5 :NLEN=6
17750 IF KPS=2 THEN BLEN=6*8 :MUX=MPXL+BLEN+9*8+5 :NLEN=(BSX-51)
17755 IF KPS=3 AND KPJ>=0 THEN
17760 MUX=MPXL+(BSX-42)*8+5 :NLEN=12
17765 IF KMT%(KPJ)=2 THEN BLEN=24*8 ELSE BLEN=12*8
17770 MUX=MUX+BLEN
17775 ENDIF
17780 IF KPS=4 THEN BLEN=12*8 :MUX=MPXL+BLEN+(BSX-30)*8+5 :NLEN=12
17785 IF KPS=5 THEN MUX=MPXL+20 :MUY=CRYF+20 :NLEN=12 :VHL=0
17790 IF MUX>MPXF-32-NLEN*8+VHL THEN VHL=VHL+NLEN*8
17795 IF MUX<MPXL+5 THEN MUX=MPXL+20
17800 IF MUY>MPYF-32 THEN CSPB=CSPB+1 :MUY=MUY-20
17805 MUX=MUX-VHL
17810 RETURN
17815 '
17820 *BGET_CORD
17825 INTERVAL OFF :MOUSE 5
17830 REF_SW=1 :CRXF_S=CRXF :CRYF_S=CRYF :GET_ON=0
17835 A=NP(NEXP-1) :GOSUB *SWAP_XY :MUX_Q=MUX :MUY_Q=MUY
17840 GOSUB *CORD_P
17845 A=NP(NEXP-1) :GOSUB *SWAP_XY
17850 GOSUB *SCR_BACK
17855 GOSUB *SET_XYD
17860 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
17865 JP=9 :REW_X=PXE%(8) :REW_Y=PYE%(8)
17870 IF GET_ON=1 THEN MX$=CODN$
17875 INK_END=0 :CAR_END=1 :REF_SW=0 :CRB=BCL(5)
17880 CRXF=CRXF_S :CRYF=CRYF_S :MUX=MUX_Q :MUY=MUY_Q
17885 MOUSE 0 :MOUSE 1,MUX,MUY,1
17890 WHILE MOUSE(2,0)=-1 :WEND
17895 RETURN
17900 '
17905 *SYOKEI_P9
17910 BZAN1#=BZAN# :BIN1#=0 :BOUT1#=0 :BZANX#=0
17915 IF BMAX<1 THEN RETURN
17920 FOR A=0 TO BMAX-1
17925 BZAN1#=BZAN1#+BIN#(A)-BOUT#(A)
17930 IF A<CSPB-1 THEN BZANX#=BZAN1#
17935 BIN1#=BIN1#+BIN#(A)
17940 BOUT1#=BOUT1#+BOUT#(A)
17945 NEXT A
17950 RETURN
17955 '
17960 *TEIKI_UP
17965 CSPT=CSPT+1
17970 IF CSPT>TMAX THEN CSPT=TMAX
17975 GOSUB *BD_SUBP
17980 RETURN
17985 '
17990 *TEIKI_DOWN
17995 CSPT=CSPT-1
18000 IF CSPT<1 THEN CSPT=1
18005 GOSUB *BD_SUBP
18010 RETURN
18015 '
18020 *BCOD_EXE
18025 IF MUX>MPXL+(BSX+TBX+46)*8-16-VHL AND MUX<MPXL+(BSX+TBX+47)*8-VHL THEN GOSUB *TEIKI_UP :RETURN
18030 IF MUX>MPXL+(BSX+TBX+48)*8-16-VHL AND MUX<MPXL+(BSX+TBX+49)*8-VHL THEN GOSUB *TEIKI_DOWN :RETURN
18035 IF MUX>MPXL+BSX*8-16-VHL AND MUX<MPXL+BSX*8-VHL THEN VHL=BSX*8+24 :GOSUB *BOLD_BACK :RETURN
18040 IF MUX>MPXL+BSX*8+32-VHL AND MUX<MPXL+BSX*8+48-VHL THEN VHL=0 :GOSUB *BOLD_BACK :RETURN
18045 IF MUX>MPXL+(BSX+15)*8-VHL AND MUX<MPXL+(BSX+TBX+15)*8-VHL THEN GOSUB *TGET_CORD2 :RETURN
18050 IF MUX>MPXL-VHL AND MUX<MPXL+8*8-VHL THEN GOSUB *BYMD_EXE :RETURN
18055 IF MUX>MPXL+(BSX+6)*8-VHL AND MUX<MPXL+(BSX+14)*8-VHL THEN GOSUB *TYMD_EXE :RETURN
18060 IF MUX>(MPXL+(BSX-50)*8+125-VHL) THEN RETURN
18065 IF MUX<(MPXL+125-VHL) THEN *BANK_CASOL
18070 REF_SW=1
18075 INTERVAL OFF
18080 GOSUB *BGET_CORD
18085 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
18090 REF_SW=0
18095 REW_X=PXE%(8) :REW_Y=PYE%(8) :JP=9
18100 RETURN
18105 '
18110 *BYMD_EXE
18115 FOR A=0 TO BMAX-2
18120 A$=BYM$(A) :GOSUB *BYM_RSET :C=P
18125 FOR B=A TO BMAX-1
18130 A$=BYM$(B) :GOSUB *BYM_RSET
18135 IF P<C THEN GOSUB *SWAP_BYM
18140 NEXT B
18145 NEXT A
18150 GOSUB *BANK_SAVE
18155 GOSUB *BOLD_BACK
18160 RETURN
18165 '
18170 *BYM_RSET
18175 P=VAL(LEFT$(A$,2))*10000+VAL(MID$(A$,4,2))*100+VAL(RIGHT$(A$,2))
18180 RETURN
18185 '
18190 *SWAP_BYM
18195 SWAP BYM$(A) ,BYM$(B)
18200 SWAP BCD(A) ,BCD(B)
18205 SWAP BME$(A) ,BME$(B)
18210 SWAP BIN#(A) ,BIN#(B)
18215 SWAP BOUT#(A),BOUT#(B)
18220 RETURN
18225 '
18230 *TYMD_EXE
18235 FOR A=0 TO TMAX-2
18240 A$=TYD$(A) :GOSUB *BYM_RSET :C=P
18245 FOR B=A TO TMAX-1
18250 A$=TYD$(B) :GOSUB *BYM_RSET
18255 IF P<C THEN GOSUB *SWAP_TYD
18260 NEXT B
18265 NEXT A
18270 GOSUB *TEIKI_SAVE
18275 GOSUB *BOLD_BACK
18280 RETURN
18285 '
18290 *SWAP_TYD
18295 SWAP TYD$(A) ,TYD$(B)
18300 SWAP TYN$(A) ,TYN$(B)
18305 SWAP TYI#(A) ,TYI#(B)
18310 SWAP TYK$(A) ,TYK$(B)
18315 SWAP TYO#(A) ,TYO#(B)
18320 RETURN
18325 '
18330 *KILL_P9
18335 IF BOXP>BNZ THEN 18375
18340 FOR A=BOXP-1 TO BMAX-2
18345 SWAP BYM$(A) ,BYM$(A+1)
18350 SWAP BCD(A) ,BCD(A+1)
18355 SWAP BME$(A) ,BME$(A+1)
18360 SWAP BIN#(A) ,BIN#(A+1)
18365 SWAP BOUT#(A),BOUT#(A+1)
18370 NEXT A
18375 IF BMAX>0 THEN BMAX=BMAX-1
18380 RETURN
18385 '
18390 *INST_P9
18395 IF BMAX<1 THEN P=1 :RETURN
18400 IF P>BNZ-2 THEN ER=1 :RETURN
18405 FOR A=BMAX-1 TO P-1 STEP-1
18410 BYM$(A+1) =BYM$(A)
18415 BCD(A+1) =BCD(A)
18420 BME$(A+1) =BME$(A)
18425 BIN#(A+1) =BIN#(A)
18430 BOUT#(A+1)=BOUT#(A)
18435 NEXT A
18440 BMAX=BMAX+1
18445 RETURN
18450 '
18455 *BANK_EXE
18460 IF BANKP>0 THEN A$=BNAME$(BANKP-1) ELSE A$=STRING$(20," ")
18465 IF MUX>MPXL+(BSX+6)*8-VHL AND MUX<MPXL+(BSX+LEN(A$)+6)*8-VHL THEN 18485
18470 IF MUX>MPXL-VHL-50 AND MUX<MPXL-VHL THEN *PAGE1_EXE
18475 IF MUX>MPXL-VHL+BSX*8+5 AND MUX<MPXL-VHL+(BSX+6)*8 THEN *PAGE2_EXE
18480 IF MUX>MPXL-VHL+120 OR MUX<MPXL-VHL THEN RETURN
18485 VHL=-250
18490 GOSUB *BD_SUBP
18495 RETURN
18500 '
18505 *PAGE1_EXE
18510 RCLICK=MOUSE(3,1)
18515 WHILE MOUSE(2,0)=-1
18520 IF MOUSE(2,1)=-1 THEN GOSUB *REW_PAGE1
18525 WEND
18530 IF MOUSE(3,1)>0 THEN MOUSE 5 :RETURN
18535 PAGE1(BANKP)=PAGE1(BANKP)+1
18540 IF PAGE1(BANKP)>10 THEN PAGE1(BANKP)=0
18545 MOUSE 5
18550 GOSUB *BANK_DLOAD
18555 GOSUB *BOLD_P2
18560 RETURN
18565 '
18570 *REW_PAGE1
18575 PAGE1(BANKP)=PAGE1(BANKP)-1
18580 IF PAGE1(BANKP)<0 THEN PAGE1(BANKP)=10
18585 GOSUB *BANK_DLOAD
18590 GOSUB *BOLD_BACK
18595 WHILE MOUSE(2,1)=-1 :WEND
18600 RETURN
18605 '
18610 *PAGE2_EXE
18615 RCLICK=MOUSE(3,1)
18620 WHILE MOUSE(2,0)=-1
18625 IF MOUSE(2,1)=-1 THEN GOSUB *REW_PAGE2
18630 WEND
18635 IF MOUSE(3,1)>0 THEN 18660
18640 PAGE2(BANKP)=PAGE2(BANKP)+1
18645 IF PAGE2(BANKP)>10 THEN PAGE2(BANKP)=0
18650 GOSUB *TEIKI_LOAD
18655 GOSUB *BOLD_BACK
18660 MOUSE 5
18665 RETURN
18670 '
18675 *REW_PAGE2
18680 PAGE2(BANKP)=PAGE2(BANKP)-1
18685 IF PAGE2(BANKP)<0 THEN PAGE2(BANKP)=10
18690 GOSUB *TEIKI_LOAD
18695 GOSUB *BOLD_BACK
18700 WHILE MOUSE(2,1)=-1 :WEND
18705 RETURN
18710 '
18715 *BANK_CASOL
18720 IF MUX>MPXL-VHL-110 AND MUX<MPXL-VHL-90 THEN GOSUB *BNAME_UP
18725 IF MUX>MPXL-VHL-88 AND MUX<MPXL-VHL-70 THEN GOSUB *BNAME_DOWN
18730 WHILE MOUSE(2,0)=-1 :WEND
18735 RETURN
18740 '
18745 *BNAME_UP
18750 BNL=BNL-1
18755 IF BNL<1 THEN BNL=1
18760 GOSUB *BOLD_BACK
18765 WHILE MOUSE(2,0)=-1 :WEND
18770 RETURN
18775 '
18780 *BNAME_DOWN
18785 BNL=BNL+1
18790 IF BNL>BNMAX THEN BNL=BNMAX
18795 GOSUB *BOLD_BACK
18800 WHILE MOUSE(2,0)=-1 :WEND
18805 RETURN
18810 '
18815 *BANK_NINP
18820 PH=BOXP-CSPB+BNL :IF BNMAX>=PH THEN *BANK_NEXE2
18825 *BANK_NINP2
18830 IF BNMAX>=26 THEN GOSUB *FLL_BANKN :GOTO 18890
18835 CRXF=MPXL-190-VHL :CRXE=CRXF+18*8-VHL :CRLEN=19
18840 CRYF=MPYL+57+PH*18 :CRYE=CRYF+18
18845 EXE_SW=1 :MX$="" :XLP=0 :GOSUB *KEY_CR
18850 GOSUB *INKEY_P
18855 EXE_SW=0
18860 IF INK_END=1 THEN GOSUB *BD_SUBP :RETURN
18865 IF MX$="" THEN GOSUB *BD_SUBP :RETURN
18870 BANKP=PH
18875 BNAME$(BNMAX)=MX$
18880 BNMAX=BNMAX+1
18885 GOSUB *BNAME_SAVE
18890 GOSUB *SCR_BACK
18895 RETURN
18900 '
18905 *BANK_NEXE
18910 PH=BOXP-CSPB+BNL :IF BNMAX<PH THEN *BANK_NINP2
18915 *BANK_NEXE2
18920 CRXF=MPXL-190-VHL :CRXE=CRXF+18*8-VHL :CRLEN=19
18925 CRYF=MPYL+57+(PH-BNL+1)*18 :CRYE=CRYF+18
18930 EXE_SW=1 :MX$=BNAME$(PH-1) :LCLICK=MOUSE(3,0)
18935 XLP=LEN(MX$) :CRB=BCL(10) :GOSUB *KEY_CR
18940 WHILE MOUSE(2,0)=-1 :WEND
18945 WAIT WAIX :LCLICK=MOUSE(3,0)
18950 IF LCLICK>0 THEN
18955 CRB=BCL(5) :GOSUB *KEY_CR :GOSUB *INKEY_P
18960 EXE_SW=0
18965 IF INK_END=1 THEN GOSUB *BD_SUBP :RETURN
18970 IF MX$="" THEN GOSUB *BD_SUBP :RETURN
18975 BNAME$(PH-1)=MX$ :GOSUB *BNAME_SAVE
18980 ELSE
18985 BANKP=PH
18990 CRB=BCL(10) :GOSUB *KEY_CR
18995 GOSUB *BANK_DLOAD :GOSUB *TEIKI_LOAD
19000 VHL=0 :CRB=BCL(5)
19005 PAGE1S=PAGE1(BANKP) :PAGE2S=PAGE2(BANKP)
19010 ENDIF
19015 GOSUB *SCR_BACK
19020 RETURN
19025 '
19030 *BNAME_LOAD
19035 ON ERROR GOTO *ERR_P9NL
19040 OPEN "I",#1,FIL$(2)
19045 INPUT #1,BNMAX
19050 FOR A=0 TO BNMAX-1
19055 INPUT #1,BNAME$(A)
19060 INPUT #1,PAGE1(A)
19065 INPUT #1,PAGE2(A)
19070 IF EOF(1)=-1 THEN *BNLOAD_RET
19075 NEXT A
19080 *BNLOAD_RET
19085 CLOSE #1
19090 ON ERROR GOTO 0
19095 BNL=1
19100 RETURN
19105 '
19110 *ERR_P9NL
19115 IF ERR<>63 THEN *ERR_MESE
19120 BNMAX=0
19125 RESUME *BNLOAD_RET
19130 '
19135 *BNAME_SAVE
19140 ON ERROR GOTO *ERR_P9NS
19145 OPEN "O",#1,FIL$(2)
19150 PRINT #1,BNMAX
19155 FOR A=0 TO BNMAX-1
19160 PRINT #1,BNAME$(A)
19165 PRINT #1,PAGE1(A)
19170 PRINT #1,PAGE2(A)
19175 NEXT A
19180 *BNSAVE_RET
19185 CLOSE #1
19190 ON ERROR GOTO 0
19195 RETURN
19200 '
19205 *ERR_P9NS
19210 IF ERR<>64 THEN *ERR_MESE
19215 KILL FIL$(2)
19220 RESUME
19225 '
19230 *BANK_DLOAD
19235 ERASE BYM$,BCD,BME$,BIN#,BOUT#
19240 DIM BYM$(BNZ),BCD(BNZ),BME$(BNZ),BIN#(BNZ),BOUT#(BNZ) :'フツウ ヨキン
19245 F$=FIL$(1)+"bank_"+CHR$(BANKP+&H40)+ RIGHT$("00"+MID$(STR$(PAGE1(BANKP)),2),2)+".dat"
19250 ON ERROR GOTO *ERR_P9L
19255 OPEN "I",#1,F$
19260 INPUT #1,BMAX,BSX,BZAN#
19265 FOR A=0 TO BMAX-1
19270 INPUT #1,BYM$(A)
19275 INPUT #1,BCD(A)
19280 INPUT #1,BME$(A)
19285 INPUT #1,BIN#(A)
19290 INPUT #1,BOUT#(A)
19295 IF EOF(1)=-1 THEN *BLOAD_RET
19300 NEXT A
19305 *BLOAD_RET
19310 CLOSE #1
19315 ON ERROR GOTO 0
19320 BZAN#=0 :GOSUB *SYOKEI_P9
19325 CSPB=BMAX-INT((MPYE-100)/18)+1
19330 IF CSPB<1 THEN CSPB=1
19335 RETURN
19340 '
19345 *ERR_P9L
19350 IF ERR<>63 THEN *ERR_MESE
19355 BMAX=0 :BSX=59
19360 RESUME *BLOAD_RET
19365 '
19370 *BANK_SAVE
19375 F$=FIL$(1)+"bank_"+CHR$(BANKP+&H40)+ RIGHT$("00"+MID$(STR$(PAGE1(BANKP)),2),2)+".dat"
19380 ON ERROR GOTO *ERR_P9S
19385 OPEN "O",#1,F$
19390 PRINT #1,BMAX,BSX,BZAN#
19395 FOR A=0 TO BMAX-1
19400 PRINT #1,BYM$(A)
19405 PRINT #1,BCD(A)
19410 PRINT #1,BME$(A)
19415 PRINT #1,BIN#(A)
19420 PRINT #1,BOUT#(A)
19425 NEXT A
19430 *BSAVE_RET
19435 CLOSE #1
19440 ON ERROR GOTO 0
19445 RETURN
19450 '
19455 *ERR_P9S
19460 IF ERR<>64 THEN *ERR_MESE
19465 KILL F$
19470 RESUME
19475 '
19480 *BSCR_P9T
19485 YL=INT((MUY-MPYL-75)/18)
19490 IF YL<0 THEN
19495 IF MUY<MPYL+42 THEN *BANK_EXE
19500 IF MUY<MPYL+58 THEN *BCOD_EXE
19505 GOTO *LINE_EXE9T
19510 ENDIF
19515 IF PAGE2S<>PAGE2(BANKP) THEN *PAGE2_ERR
19520 BTXP=YL+CSPT
19525 IF BTXP>TMAX THEN *BMT_INPUT
19530 IF BTXP>0 THEN *BMT_EXE
19535 WHILE MOUSE(2,0)=-1 :WEND :MOUSE 5
19540 RETURN
19545 '
19550 *LINE_EXE9T
19555 IF MUX<MPXL+(BSX+15)*8-VHL OR MUX>MPXL+(BSX+TBX+15)*8-VHL THEN RETURN
19560 GOSUB *LINE_EXEP
19565 IF CAR_END=1 THEN TBX=VAL(MX$)
19570 GOSUB *SCR_BACK
19575 RETURN
19580 '
19585 *BMT_EXE
19590 WHILE MOUSE(2,0)=-1 :WEND
19595 GOSUB *TCRD_SET :IF ER=1 THEN ER=0 :GOTO 19690
19600 GOSUB *TCRP_SET :XLP=LEN(MX$)
19605 GOSUB *KEY_CR
19610 EXE_SW=1
19615 GOSUB *INKEY_P
19620 EXE_SW=0
19625 IF RCLICK>0 THEN GOSUB *KILL_P9T :GOTO 19695
19630 IF LCLICK>0 THEN
19635 IF KPS=2 THEN GOSUB *TGET_CORD : IF GET_ON=0 THEN *BSCR_P9T ELSE INK_END=0 :CAR_END=1
19640 IF KPS>2 THEN GOSUB *CALK_BOD : IF GET_ON=0 THEN *BSCR_P9T
19645 ENDIF
19650 IF INK_END=0 THEN
19655 GOSUB *TMX_SET :GOSUB *KEY_CR
19660 IF CAR_END=1 THEN GOSUB *TCRD_NSET
19665 GOSUB *BOLD_BACK
19670 GOTO *BSCR_P9T
19675 ELSE
19680 WHILE MOUSE(2,1)=-1 :WEND
19685 ENDIF
19690 MOUSE 5
19695 GOSUB *TEIKI_SAVE :VHL=VHP :GOSUB *SCR_BACK
19700 RETURN
19705 '
19710 *BMT_INPUT
19715 BTXP=TMAX+1 :IF TMAX>=TYZ THEN GOSUB *FLL_BMT :GOTO 19830
19720 GOSUB *TCRD_SET :IF ER=1 THEN ER=0 :GOTO 19825
19725 TYD$(TMAX)="" :TYN$(TMAX)="" :TYI#(TMAX)=0
19730 TYK$(TMAX)="" :TYO#(TMAX)=0
19735 MX$="" :GOSUB *KEY_CR
19740 WHILE MOUSE(2,0)=-1 :WEND
19745 EXE_SW=1
19750 GOSUB *INKEY_P
19755 EXE_SW=0
19760 IF LCLICK>0 THEN
19765 IF KPS=2 THEN GOSUB *TGET_CORD : IF GET_ON=0 THEN *BSCR_P9T ELSE INK_END=0 :CAR_END=1
19770 IF KPS>2 THEN GOSUB *CALK_BOD : IF GET_ON=0 THEN *BSCR_P9T
19775 ENDIF
19780 IF INK_END=0 THEN
19785 TMAX=TMAX+1 :BTXP=TMAX
19790 GOSUB *TMX_SET :GOSUB *KEY_CR
19795 IF CAR_END=1 THEN GOSUB *TCRD_NSET
19800 GOSUB *BOLD_BACK
19805 GOTO *BSCR_P9T
19810 ELSE
19815 WHILE MOUSE(2,1)=-1 :WEND
19820 ENDIF
19825 MOUSE 5
19830 GOSUB *TEIKI_SAVE :VHL=VHP :GOSUB *SCR_BACK
19835 RETURN
19840 '
19845 *TCRD_SET
19850 A=MPXL+(BSX+6)*8 :P=INT((MUX-A+VHL)/8)
19855 IF P<0 OR P>TBX+42 THEN ER=1 :RETURN
19860 IF P>=0 AND P<9 THEN CRXF=A :CRXE=CRXF+9*8 : CRLEN=10 :KPS=1
19865 IF P>=9 AND P<TBX+9 THEN CRXF=A+9*8 :CRXE=CRXF+TBX*8 : CRLEN=TBX+1 :KPS=2
19870 IF P>=TBX+9 AND P<TBX+21 THEN CRXF=A+(TBX+9)*8 :CRXE=CRXF+12*8 : CRLEN=13 :KPS=3
19875 IF P>=TBX+21 AND P<TBX+30 THEN CRXF=A+(TBX+21)*8 :CRXE=CRXF+9*8 : CRLEN=10 :KPS=4
19880 IF P>=TBX+30 AND P<TBX+42 THEN CRXF=A+(TBX+30)*8 :CRXE=CRXF+12*8 : CRLEN=13 :KPS=5
19885 CRXF=CRXF+5-VHL :CRXE=CRXE+5-VHL
19890 CRYF=MPYL+75+(BTXP-CSPT)*18 :CRYE=CRYF+18
19895 IF CRYF>MPYF-32 THEN CSPT=CSPT+1 :GOSUB *BD_9P :GOTO 19890
19900 XLP=0 :CAR_END=0 :ER=0
19905 RETURN
19910 '
19915 *TCRP_SET
19920 MX$=""
19925 IF KPS=1 THEN MX$=TYD$(BTXP-1)
19930 IF KPS=2 THEN MX$=TYN$(BTXP-1)
19935 IF KPS=3 THEN MX$=STR$(TYI#(BTXP-1))
19940 IF KPS=4 THEN MX$=TYK$(BTXP-1)
19945 IF KPS=5 THEN MX$=STR$(TYO#(BTXP-1))
19950 IF MX$="0" OR MX$=" 0" THEN MX$=""
19955 RETURN
19960 '
19965 *TMX_SET
19970 IF KPS=1 THEN TYD$(BTXP-1) =MX$
19975 IF KPS=2 THEN TYN$(BTXP-1) =MX$
19980 IF KPS=3 THEN TYI#(BTXP-1) =VAL(MX$)
19985 IF KPS=4 THEN TYK$(BTXP-1) =MX$
19990 IF KPS=5 THEN TYO#(BTXP-1) =VAL(MX$)
19995 RETURN
20000 '
20005 *TCRD_NSET
20010 IF KPS=1 THEN BLEN=9*8 :MUX=MPXL+BLEN+(BSX+6 )*8+5 :NLEN=TBX
20015 IF KPS=2 THEN BLEN=TBX*8 :MUX=MPXL+BLEN+(BSX+15)*8+5 :NLEN=12
20020 IF KPS=3 THEN BLEN=12*8 :MUX=MPXL+BLEN+(TBX+BSX+15)*8 :NLEN=12
20025 IF KPS=4 THEN BLEN=9*8 :MUX=MPXL+BLEN+(TBX+BSX+27)*8 :NLEN=12
20030 IF KPS=5 THEN MUX=MPXL+(BSX+6)*8+5 :VHL=BSX*8+24 : MUY=CRYF+20 :NLEN=9
20035 IF MUX>MPXF-16-NLEN*8+VHL THEN VHL=VHL+NLEN*8
20040 IF MUX<MPXL+5 THEN MUX=MPXL+20
20045 IF MUY>MPYF-32 THEN CSPT=CSPT+1 :MUY=MUY-20
20050 MUX=MUX-VHL
20055 RETURN
20060 '
20065 *TGET_CORD
20070 REF_SW=1 :CRXF_S=CRXF :CRYF_S=CRYF :GET_ON=0
20075 *TGET_CORD2
20080 A=NP(NEXP-1) :GOSUB *SWAP_XY :MUX_Q=MUX :MUY_Q=MUY
20085 GOSUB *CORD_P
20090 A=NP(NEXP-1) :GOSUB *SWAP_XY
20095 GOSUB *SCR_BACK
20100 GOSUB *SET_XYD
20105 REW_X=PXE%(8) :REW_Y=PYE%(8) :JP=9
20110 IF GET_ON=1 THEN MX$=CODN$ :TYI#(BTXP-1)=CODX
20115 INK_END=0 :CAR_END=1 :REF_SW=0
20120 CRXF=CRXF_S :CRYF=CRYF_S :MUX=MUX_Q :MUY=MUY_Q
20125 MOUSE 0 :MOUSE 1,MUX,MUY,1
20130 WHILE MOUSE(2,0)=-1 :WEND
20135 RETURN
20140 '
20145 *TEIKI_LOAD
20150 ERASE TYD$,TYN$,TYI#,TYK$,TYO#
20155 DIM TYD$(TYZ),TYN$(TYZ),TYI#(TYZ),TYK$(TYZ),TYO#(TYZ) :'テイキ ヨキン
20160 F$=FIL$(1)+"teik_"+CHR$(BANKP+&H40)+ RIGHT$("00"+MID$(STR$(PAGE2(BANKP)),2),2)+".dat"
20165 ON ERROR GOTO *ERR_P9TL
20170 OPEN "I",#1,F$
20175 INPUT #1,TMAX,TBX
20180 FOR A=0 TO TMAX-1
20185 INPUT #1,TYD$(A)
20190 INPUT #1,TYN$(A)
20195 INPUT #1,TYI#(A)
20200 INPUT #1,TYK$(A)
20205 INPUT #1,TYO#(A)
20210 IF EOF(1)=-1 THEN *TLOAD_RET
20215 NEXT A
20220 *TLOAD_RET
20225 CLOSE #1
20230 ON ERROR GOTO 0
20235 GOSUB *TEIKI_ZAN
20240 CSPT=TMAX-INT((MPYE-100)/18)+1
20245 IF CSPT<1 THEN CSPT=1
20250 RETURN
20255 '
20260 *ERR_P9TL
20265 IF ERR<>63 THEN *ERR_MESE
20270 TMAX=0 :TBX=14
20275 RESUME *TLOAD_RET
20280 '
20285 *TEIKI_SAVE
20290 F$=FIL$(1)+"teik_"+CHR$(BANKP+&H40)+ RIGHT$("00"+MID$(STR$(PAGE2(BANKP)),2),2)+".dat"
20295 ON ERROR GOTO *ERR_P9TS
20300 OPEN "O",#1,F$
20305 PRINT #1,TMAX,TBX
20310 FOR A=0 TO TMAX-1
20315 PRINT #1,TYD$(A)
20320 PRINT #1,TYN$(A)
20325 PRINT #1,TYI#(A)
20330 PRINT #1,TYK$(A)
20335 PRINT #1,TYO#(A)
20340 NEXT A
20345 *TSAVE_RET
20350 CLOSE #1
20355 ON ERROR GOTO 0
20360 RETURN
20365 '
20370 *ERR_P9TS
20375 IF ERR<>64 THEN *ERR_MESE
20380 KILL F$
20385 RESUME
20390 '
20395 *TEIKI_ZAN
20400 TZAN1#=0 :TZAN2#=0
20405 FOR A=0 TO TMAX-1
20410 TZAN1#=TZAN1#+TYI#(A)
20415 TZAN2#=TZAN2#+TYO#(A)
20420 NEXT A
20425 TZAN3#=TZAN1#-TZAN2#
20430 RETURN
20435 '
20440 *KILL_P9T
20445 IF BTXP>=TYZ THEN 20485
20450 FOR A=BTXP-1 TO TMAX-2
20455 SWAP TYD$(A) ,TYD$(A+1)
20460 SWAP TYN$(A) ,TYN$(A+1)
20465 SWAP TYI#(A) ,TYI#(A+1)
20470 SWAP TYK$(A) ,TYK$(A+1)
20475 SWAP TYO#(A) ,TYO#(A+1)
20480 NEXT A
20485 IF TMAX>0 THEN TMAX=TMAX-1
20490 RETURN
20495 '
20500 *FLL_BMN
20505 RESTORE *ERM_D5 :GOSUB *ERMD_SET
20510 BNP=PAGE1(BANKP)+1 :IF BNP>10 THEN BNP=0
20515 ERM$(3)=ERM$(3)+AKCNV$(STR$(BNP+1))+"ページ目です"
20520 GOSUB *MESSAGE_P
20525 IF MESJ=1 THEN GOSUB *NEXT_PAGE1
20530 RETURN
20535 '
20540 *NEXT_PAGE1
20545 GOSUB *SYOKEI_P9
20550 GOSUB *BANK_SAVE
20555 PAGE1(BANKP)=BNP :BYMS$=BYM$(BNZ)
20560 GOSUB *BNAME_SAVE
20565 ERASE BYM$,BCD,BME$,BIN#,BOUT#
20570 DIM BYM$(BNZ),BCD(BNZ),BME$(BNZ),BIN#(BNZ),BOUT#(BNZ)
20575 BYM$(0)=BYMS$ :BMAX=1
20580 BME$(0)="繰越し"
20585 BIN#(0)=BZAN1#
20590 RETURN
20595 '
20600 *FLL_BMT
20605 RESTORE *ERM_D5 :GOSUB *ERMD_SET
20610 BNP=PAGE2(BANKP)+1 :IF BNP>10 THEN BNP=0
20615 ERM$(3)=ERM$(3)+AKCNV$(STR$(BNP+1))+"ページ目です"
20620 GOSUB *MESSAGE_P
20625 IF MESJ=1 THEN GOSUB *NEXT_PAGE2
20630 RETURN
20635 '
20640 *NEXT_PAGE2
20645 GOSUB *TEIKI_SAVE
20650 PAGE2(BANKP)=BNP
20655 GOSUB *BNAME_SAVE
20660 ERASE TYD$,TYN$,TYI#,TYK$,TYO#
20665 DIM TYD$(TYZ),TYN$(TYZ),TYI#(TYZ),TYK$(TYZ),TYO#(TYZ) :'テイキ ヨキン
20670 RETURN
20675 '
20680 *FLL_BANKN
20685 RESTORE *ERM_D7 :GOSUB *ERMD_SET
20690 GOSUB *MESSAGE_P
20695 RETURN
20700 '
20705 *ERM_D7
20710 DATA 3
20715 DATA "登録域が一杯です",0
20720 DATA "これ以上銀行名を増やす事は出来ません" ,10
20725 DATA "中止を選択してください",10
20730 '
20735 *ERM_D5
20740 DATA 4
20745 DATA "ページが一杯です",0
20750 DATA "これ以上欄を増やす事は出来ません" ,10
20755 DATA "実行でページを更新します",10
20760 DATA "次は、",11
20765 '
20770 *PAGE1_ERR
20775 RESTORE *ERM_D6 :GOSUB *ERMD_SET
20780 ERM$(2)=ERM$(2)+AKCNV$(MID$(STR$(PAGE1S+1),2))+"ページ目です"
20785 GOSUB *MESSAGE_P
20790 IF MESJ=1 THEN PAGE1(BANKP)=PAGE1S :GOSUB *BANK_DLOAD : GOSUB *BOLD_P2
20795 RETURN
20800 '
20805 *PAGE2_ERR
20810 RESTORE *ERM_D6 :GOSUB *ERMD_SET
20815 ERM$(2)=ERM$(2)+AKCNV$(MID$(STR$(PAGE2S+1),2))+"ページ目です"
20820 GOSUB *MESSAGE_P
20825 IF MESJ=1 THEN PAGE2(BANKP)=PAGE2S :GOSUB *TEIKI_LOAD : GOSUB *BOLD_P2
20830 RETURN
20835 '
20840 *ERM_D6
20845 DATA 4
20850 DATA "このページのデータを変更することは出来ません",0
20855 DATA "登録、変更の出来るのは最終ページだけです",10
20860 DATA "現在の最終ページは、",10
20865 DATA "実行で最終ページに戻ります",1
20870 '
20875 '-------------------------------------------------------------------
20880 *MESSAGE_P
20885 A=10 :GOSUB *SWAP_XY
20890 C=0
20895 FOR D=0 TO ERMX-1 :B=LEN(ERM$(D)) :IF B>C THEN C=B
20900 NEXT D
20905 MPXE=C*8+40 :MPYE=ERMX*16+80
20910 MPXL=XLS(A)+INT(XES(A)/2)-INT(MPXE/2)
20915 MPYL=YLS(A)+20
20920 BCL(1)=BCL(18) :BCL(9)=BCL(19)
20925 REW_X=200 :REW_Y=200 :BDP=11 :BPQ=0 :VML=0 :ERMC=1
20930 GOSUB *BOLD_P
20935 GOSUB *SET_XYD
20940 GOSUB *SEL_MXY
20945 IF ER=1 THEN 20965
20950 ON JP GOSUB *RET_P,*REW_P,*DRAG_A,*YL_UP11,*YL_DOWN11,*XL_LEFT11, *XL_RIGHT11, *DRAG_B,*BSCR_MS,*RET_W,*RET_W,*RET_W
20955 IF JP<>1 THEN 20940
20960 NEXP=NEXP+1
20965 A=10 :GOSUB *SWAP_XY
20970 GOSUB *SET_XYD :JP=9
20975 IF ERP=0 THEN GOSUB *SCR_BACK
20980 RETURN
20985 '
20990 *BD_11P
20995 FILS$="メッセージ"
21000 WINDOW (MPXL+VML+1,MPYL+17)-(MPXF+VML-17,MPYF-17) : VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
21005 XL=MPXL+10 :YL=MPYL+20 :ERML=0
21010 FOR A=ERMC TO ERMX
21015 SYMBOL(XL,YL+(A-ERMC)*18),ERM$(A-1),1,1,%BCL(ERC(A-1))
21020 IF LEN(ERM$(A-1))>ERML THEN ERML=LEN(ERM$(A-1))
21025 IF (A-ERMC)*18+YL>MPYF-56 THEN 21035
21030 NEXT A
21035 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
21040 LINE(XL-1,MPYF-40)-STEP(50,18),PSET,%BCL(0),BF,%BCL(5)
21045 LINE(XL+1,MPYF-39)-STEP(46,16),PSET,%BCL(12),BF,%BCL(3)
21050 LINE(MPXF-23,MPYF-40)-STEP(-50,18),PSET,%BCL(0),BF,%BCL(5)
21055 LINE(MPXF-25,MPYF-39)-STEP(-46,16),PSET,%BCL(12),BF,%BCL(3)
21060 DEF FONT "システム 12ドット"
21065 SYMBOL(XL+8,MPYF-37),"実 行",.9!,.8!,%BCL(0)
21070 SYMBOL(MPXF-64,MPYF-37),"中 止",.9!,.8!,%BCL(0)
21075 DEF FONT "システム 16ドット"
21080 GOSUB *CASOL_P11 :GOSUB *CASOL_P11B
21085 RETURN
21090 '
21095 *YL_UP11
21100 ERMC=ERMC+1
21105 IF ERMC>ERMX THEN ERMC=ERMX
21110 GOSUB *BD_SUBP
21115 RETURN
21120 '
21125 *YL_DOWN11
21130 ERMC=ERMC-1
21135 IF ERMC<1 THEN ERMC=1
21140 GOSUB *BD_SUBP
21145 RETURN
21150 '
21155 *XL_LEFT11
21160 VML=VML+100
21165 GOSUB *BD_SUBP
21170 RETURN
21175 '
21180 *XL_RIGHT11
21185 VML=VML-100
21190 GOSUB *BD_SUBP
21195 RETURN
21200 '
21205 *CASOL_P11
21210 A=ERMX :B=ERMC
21215 GOSUB *CASOL_PX1
21220 RETURN
21225 '
21230 *CASOL_P11B
21235 A=(ERML*8) :B=VML
21240 GOSUB *CASOL_PX2
21245 RETURN
21250 '
21255 *BSCR_MS
21260 MESJ=0
21265 IF MUY>MPYF-40 AND MUY<MPYF-22 THEN
21270 IF MUX>MPXL+10 AND MUX<MPXL+60 THEN MESJ=1
21275 IF MUX>MPXF-70 AND MUX<MPXF-23 THEN MESJ=0
21280 JP=1 :NEXP=NEXP-1
21285 ENDIF
21290 RETURN
21295 '-------------------------------------------------------------------
21300 *CLOCK_P
21305 IF MPXE<280 OR NEXP=0 THEN RETURN
21310 SYMBOL(MPXF-69,MPYL+4),":",.9!,.7!,%BCL(9),,XOR
21315 IF TIMX$=LEFT$(TIME$,5) THEN RETURN ELSE TIMX$=LEFT$(TIME$,5)
21320 TIMES$=TIME$
21325 TIMS=VAL(LEFT$(TIMES$,2))
21330 IF TIMS>12 THEN TIMS=TIMS-12 :TAM$=" pm" ELSE TAM$=" am"
21335 TA$=RIGHT$(" "+MID$(STR$(TIMS),2),2) :TB$=MID$(TIMES$,4,2)+TAM$
21340 LINE (MPXF-90,MPYL+1)-STEP(70,14),PSET,%BCL(12),BF,%BCL(4)
21345 LINE (MPXF-88,MPYL+2)-STEP(66,12),PSET,%BCL(2),BF,%BCL(6)
21350 SYMBOL(MPXF-69,MPYL+4),":",.9!,.7!,%BCL(9),,XOR
21355 DEF FONT "システム 12ドット"
21360 SYMBOL(MPXF-85,MPYL+4),TA$,.9!,.7!,%BCL(9)
21365 SYMBOL(MPXF-61,MPYL+4),TB$,.9!,.7!,%BCL(9)
21370 DEF FONT "システム 16ドット"
21375 RETURN
21380 '------------------------------------------------------------------
21385 *OPEN_P
21390 X1=MXY(A,0) :Y1=MXY(A,1) :X2=MXY(A,2) :Y2=MXY(A,3)
21395 *OPEN_P2
21400 XA=(MPXL-X1)/5 :YA=(MPYL-Y1)/5
21405 XB=(MPXL+MPXE-X2)/5 :YB=(MPYL+MPYE-Y2)/5
21410 FOR B=1 TO 2
21415 FOR A=0 TO 4
21420 LINE (X1+A*XA,Y1+A*YA)-(X2+A*XB,Y2+A*YB),XOR,%BCL(2),B
21425 WAIT 2
21430 NEXT A
21435 NEXT B
21440 RETURN
21445 '
21450 *CLOSE_P
21455 GOSUB *SWAP_MD
21460 A=BDP-1
21465 X1=MXY(A,0) :Y1=MXY(A,1) :X2=MXY(A,2) :Y2=MXY(A,3)
21470 *CLOSE_P2
21475 XA=(MPXL-X1)/5 :YA=(MPYL-Y1)/5
21480 XB=(MPXL+MPXE-X2)/5 :YB=(MPYL+MPYE-Y2)/5
21485 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),CPY%
21490 FOR B=1 TO 2
21495 FOR A=4 TO 0 STEP -1
21500 LINE (X1+A*XA,Y1+A*YA)-(X2+A*XB,Y2+A*YB),XOR,%BCL(2),B
21505 WAIT 2
21510 NEXT A
21515 NEXT B
21520 RETURN
21525 '-------------------------------------------------------------------
21530 *MEMO_P
21535 A=NP(NEXP) :GOSUB *SWAP_XY
21540 MPXL=PXL%(3) :MPYL=PYL%(3) :MPXE=PXE%(3) :MPYE=PYE%(3)
21545 A=3 :GOSUB *OPEN_P
21550 *MEMO_P2
21555 BDP=4 :BPQ=0 :WKST=1 :REF_SW=0 :MVX=0 :MEM_EXS=0
21560 GOSUB *SEL_WAKP
21565 IF JPQ=1 THEN GOTO *NEX_P
21570 RETURN
21575 '
21580 *MEMO_LOAD
21585 ERASE MEMO$
21590 DIM MEMO$(MSX)
21595 F$=FIL$(11)+RIGHT$("00"+MID$(STR$(MOX),2),3)+".dat"
21600 ON ERROR GOTO *ERR_P4L
21605 OPEN "I",#1,F$
21610 MOZ=0
21615 WHILE EOF(1)<>-1
21620 LINE INPUT #1,MEMO$(MOZ)
21625 MOZ=MOZ+1 :IF MOZ>MSX THEN *MLOAD_RET
21630 WEND
21635 *MLOAD_RET
21640 CLOSE #1
21645 ON ERROR GOTO 0
21650 CSP4=1
21655 RETURN
21660 '
21665 *ERR_P4L
21670 IF ERR<>63 THEN *ERR_MESE
21675 MOZ=0
21680 RESUME *MLOAD_RET
21685 '
21690 *MEMO_SAVE
21695 F$=FIL$(11)+RIGHT$("00"+MID$(STR$(MOX),2),3)+".dat"
21700 ON ERROR GOTO *ERR_P4S
21705 OPEN "O",#1,F$
21710 GOSUB *SET_MOZ
21715 FOR A=0 TO MOZ-1
21720 B$=MEMO$(A)
21725 GOSUB *DELETE_SP
21730 PRINT #1,B$
21735 NEXT A
21740 *MSAVE_RET
21745 CLOSE #1
21750 ON ERROR GOTO 0
21755 RETURN
21760 '
21765 *ERR_P4S
21770 IF ERR<>64 THEN *ERR_MESE
21775 KILL F$
21780 RESUME
21785 '
21790 *BD_4P
21795 FILS$="[メモ帳]" :GOSUB *CASOL_P4B
21800 WINDOW (MPXL+MVX+1,MPYL+17)-(MPXF+MVX-17,MPYF-17)
21805 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
21810 GOSUB *BD4_LINE
21815 IF MOZ=0 THEN WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479) :RETURN
21820 XL=MPXL+5 :YL=MPYL+18
21825 FOR A=CSP4 TO MOZ
21830 SYMBOL(XL,YL),MEMO$(A-1),1,1,%BCL(0)
21835 YL=YL+18
21840 IF YL>MPYF-50 THEN 21850
21845 NEXT A
21850 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
21855 GOSUB *CASOL_P4
21860 RETURN
21865 '
21870 *BD4_LINE
21875 XL=MPXL+5 :YL=MPYL+34 :L=INT((MPYE-50)/18)
21880 FOR A=1 TO L
21885 LINE (XL,YL+(A-1)*18)-STEP(640,0),PSET,%BCL(0)
21890 NEXT A
21895 LINE(MPXL+1,MPYF-35)-STEP(640,18),XOR,%BCL(3),BF
21900 A$="[頁"+RIGHT$("0"+MID$(STR$(MOX),2),2)+"]"
21905 SYMBOL(MPXL+5,MPYF-33),A$,1,1,%BCL(0)
21910 RETURN
21915 '
21920 *YL_DOWN4
21925 CSP4=CSP4+1
21930 IF CSP4>MOZ THEN CSP4=MOZ
21935 MOUSE 1,,,0 :GOSUB *BD_4P :MOUSE 1,,,1
21940 RETURN
21945 '
21950 *YL_UP4
21955 CSP4=CSP4-1
21960 IF CSP4<1 THEN CSP4=1
21965 MOUSE 1,,,0 :GOSUB *BD_4P :MOUSE 1,,,1
21970 RETURN
21975 '
21980 *XL_LEFT4
21985 MVX=MVX-100
21990 GOSUB *BD_SUBP
21995 RETURN
22000 '
22005 *XL_RIGHT4
22010 MVX=MVX+100
22015 GOSUB *BD_SUBP
22020 RETURN
22025 '
22030 *CASOL_P4
22035 A=MOZ :B=CSP4
22040 GOSUB *CASOL_PX1
22045 RETURN
22050 '
22055 *CASOL_P4B
22060 A=640 :B=MVX
22065 GOSUB *CASOL_PX2
22070 RETURN
22075 '
22080 *CSL_S4
22085 IF MOZ=0 THEN GOSUB *RET_W :RETURN
22090 A=MOZ
22095 GOSUB *カーソル_SET1
22100 CSP4=P
22105 GOSUB *BD_SUBP
22110 RETURN
22115 '
22120 *BSCR_P4
22125 IF MUY>MPYF-36 AND MUY<MPYF-16 THEN
22130 IF MUX>MPXL+37*8+5-MVX AND MUX<MPXL+44*8+5-MVX THEN GOSUB *PAGE_CLS
22135 IF MUX>MPXL+5-MVX AND MUX<MPXL+6*8+5-MVX THEN GOSUB *PAGE_UP
22140 GOSUB *RET_W
22145 RETURN
22150 ENDIF
22155 YL=INT((MPYE-50)/18)
22160 YP=INT((MUY-MPYL-16)/18)
22165 IF YP+CSP4>=MSX THEN GOSUB *RET_W :RETURN
22170 GOSUB *MEMO_IN
22175 RETURN
22180 '
22185 *MEMO_IN
22190 WINDOW (MPXL+MVX+1,MPYL+17)-(MPXF+MVX-17,MPYF-17)
22195 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17)
22200 TABX=80
22205 GOSUB *MEMO_EXE
22210 XLP=INT((MUX-MPXL-5+MVX)/8)
22215 GOSUB *INKEY_P2
22220 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
22225 RETURN
22230 '
22235 *INKEY_P2
22240 GOSUB *EDIT_CAR :DRAG_SW=0
22245 INK_END=0 :LCLICK=0 :RCLICK=0 :TW=0 :WAIX=10
22250 WHILE MOUSE(2,0)=0
22255 B$=""
22260 A$=INKEY$+INKEY$
22265 IF A$<>"" THEN B$=B$+A$ :GOTO 22260
22270 IF B$<>"" THEN INKEY_P=1 :GOSUB *CAR_PUT2
22275 IF MOUSE(2,1)=-1 THEN
22280 MUX=MOUSE(4,1) :MUY=MOUSE(5,1)
22285 GOSUB *BD_B4P
22290 IF INKEY_P=1 THEN GOSUB *MEMO_SAVE :INKEY_P=0
22295 RETURN
22300 ENDIF
22305 IF (TIME MOD 2)=TW THEN GOSUB *CR_POINT2 : IF TW=0 THEN TW=1 ELSE TW=0
22310 WEND
22315 MUX=MOUSE(4,0) :MUY=MOUSE(5,0) :MUZ=MOUSE(9) :MUW=MOUSE(10)
22320 XU=XLP :YU=YP :DRAG_SW=0 :RCLICK=MOUSE(3,1)
22325 WHILE MOUSE(2,0)=-1
22330 MUZ=MOUSE(9) :MUW=MOUSE(10)
22335 IF MUZ+MUW<>0 THEN GOSUB *DRAG_LINE
22340 WEND
22345 'IF YU<YP THEN DRAG_SW=0
22350 IF XU-XLP+YU-YP<>0 THEN GOSUB *LINE_SEL :GOTO *INKEY_P2
22355 WAIT WAIX :LCLICK=MOUSE(3,0) :RCLICK=MOUSE(3,1)
22360 IF MUX>MPXL AND MUX<MPXF-16 AND MUY>MPYL+16 AND MUY<MPYF-32 THEN
22365 GOSUB *KEY_CR2
22370 XLP=INT((MUX-MPXL-5+MVX)/8) :MEMO$(YP+CSP4-1)=MX$
22375 YLP=INT((MUY-MPYL-16)/18) :IF YLP+CSP4>MSX THEN *INKEY_P2
22380 IF XLP<0 THEN XLP=0
22385 YP=YLP
22390 GOSUB *MEMO_EXE :GOSUB *EDIT_CAR
22395 IF LCLICK>0 OR RCLICK>0 THEN RETURN ELSE *INKEY_P2
22400 ENDIF
22405 IF MUX>MPXL AND MUX<MPXF-16 AND MUY>MPYF-34 AND MUY<MPYF-18 THEN
22410 X=MPXL-MVX+10
22415 IF MUX>26*8+X AND MUX<32*8+X THEN GOSUB *PAST_P
22420 IF MUX>36*8+X AND MUX<42*8+X THEN GOSUB *PAGE_CLS
22425 IF MUX>X-4 AND MUX<6*8+X THEN
22430 MUSF$=""
22435 GOSUB *TEXT_REF
22440 ENDIF
22445 GOSUB *MOVE_MEMO2
22450 GOTO *INKEY_P2
22455 ENDIF
22460 GOSUB *BD_B4P
22465 IF INKEY_P=1 THEN GOSUB *MEMO_SAVE :INKEY_P=0
22470 RETURN
22475 '
22480 *BD_B4P
22485 MOUSE 1,,,0
22490 GOSUB *BD_4P
22495 MOUSE 1,,,1
22500 RETURN
22505 '
22510 *CAR_PUT2
22515 IF LEN(B$)>1 THEN IF LEN(B$) MOD 2 THEN IF ASC(RIGHT$(B$,1))<32 THEN B$=LEFT$(B$,LEN(B$)-1)
22520 IF JIS(B$)>31 AND JIS(B$)<>&H7F THEN
22525 MEM_EXS=1
22530 IF TABX>XLP THEN
22535 A$=LEFT$(MX$,XLP)+B$+MID$(MX$,XLP+1)
22540 XLP=XLP+LEN(B$)
22545 ELSE
22550 A$=MX$+B$
22555 XLP=LEN(A$)
22560 ENDIF
22565 P=YP+CSP4-1 :Q=0
22570 IF XLP>TABX THEN
22575 GOSUB *RSIFT_LINE :MX$=MEMO$(P)
22580 GOSUB *KEY_CR2 :YP=YP+1
22585 MX$=MEMO$(P+1)
22590 XLP=XLP-TABX+Z
22595 ELSE
22600 MX$=A$
22605 MEMO$(P)=MX$
22610 ENDIF
22615 IF P+1>MOZ THEN MOZ=P+1
22620 IF YP-CSP4>YL THEN
22625 CSP4=CSP4+1 :YP=YP-1 :YLS=YL
22630 GOSUB *MOVE_MEMO2
22635 YL=YLS
22640 ELSE
22645 GOSUB *KEY_CR2
22650 ENDIF
22655 ENDIF
22660 IF B$<>"" THEN E=JIS(B$) ELSE RETURN
22665 IF (E<32 AND E>0) OR E=&H7F THEN *SUBKEY2
22670 RETURN
22675 '
22680 *SUBKEY2
22685 IF E=&H7F THEN A=KLEN(MID$(MX$,XLP+1,2)) :XLP=XLP+3-A :E=8
22690 IF E=13 THEN GOSUB *LINE_END
22695 IF E=8 THEN
22700 IF XLP<1 THEN GOSUB *LSIFT_LINE ELSE GOSUB *BAKSP
22705 MEMO$(YP+CSP4-1)=MX$ :MEM_EXS=1
22710 ENDIF
22715 IF E=29 AND XLP>=0 THEN
22720 IF XLP=0 THEN XLP=-1 :GOTO 22735
22725 GOSUB *BAKSP_SUB
22730 XLP=XLP-F
22735 IF XLP<0 THEN
22740 XLP=TABX
22745 MEMO$(YP+CSP4-1)=MX$ :YP=YP-1
22750 IF YP<0 THEN IF CSP4>1 THEN CSP4=CSP4-1 :YP=0
22755 MVX=200
22760 MX$=MEMO$(YP+CSP4-1)
22765 GOSUB *MOVE_MEMO2
22770 ENDIF
22775 ENDIF
22780 IF E=28 AND XLP<TABX+1 THEN
22785 GOSUB *BAKSP_SUB
22790 XLP=XLP+F
22795 IF XLP>TABX THEN
22800 XLP=0
22805 MEMO$(YP+CSP4-1)=MX$
22810 IF (YP+5)*18<MPYE THEN
22815 YP=YP+1
22820 ELSE
22825 IF CSP4+YP<MSX THEN CSP4=CSP4+1
22830 ENDIF
22835 MVX=0
22840 MX$=MEMO$(YP+CSP4-1)
22845 GOSUB *MOVE_MEMO2
22850 ENDIF
22855 ENDIF
22860 IF E=30 AND YP+CSP4>1 THEN
22865 MEMO$(YP+CSP4-1)=MX$
22870 IF YP>0 THEN
22875 YP=YP-1
22880 ELSE
22885 IF CSP4>1 THEN CSP4=CSP4-1
22890 ENDIF
22895 GOSUB *MEMO_EXE
22900 GOSUB *MOVE_MEMO2
22905 ENDIF
22910 IF E=31 AND YP+CSP4<MSX THEN
22915 MEMO$(YP+CSP4-1)=MX$
22920 IF (YP+5)*18<MPYE THEN
22925 YP=YP+1
22930 ELSE
22935 IF CSP4<MSX THEN CSP4=CSP4+1
22940 ENDIF
22945 GOSUB *MEMO_EXE
22950 GOSUB *MOVE_MEMO2
22955 IF MOZ<YP+CSP4 THEN MOZ=YP+CSP4
22960 ENDIF
22965 GOSUB *KEY_CR2
22970 RETURN
22975 '
22980 *KEY_CR2
22985 LINE (MPXL,MPYL+(YP+1)*18-1)-STEP(650,16),PSET,%BCL(2),BF
22990 SYMBOL(MPXL+5,MPYL+(YP+1)*18),MX$,1,1,%BCL(0)
22995 GOSUB *EDIT_CAR
23000 RETURN
23005 '
23010 *EDIT_CAR
23015 X=MPXL :Y=MPYF-33
23020 LINE(MPXL+1,MPYF-35)-STEP(640,18),PSET,%6,BF
23025 SYMBOL(8+X,Y) ,"[検索]",1,1,%14
23030 IF DRAG_SW=1 THEN CL=14 ELSE CL=6
23035 SYMBOL(11*8+X,Y),"[カット]",1,1,%CL
23040 SYMBOL(18*8+X,Y),"[コピー]",1,1,%CL
23045 IF PAST_SW>0 THEN CL=14 ELSE CL=6
23050 SYMBOL(26*8+X,Y),"[ペースト]",1,1,%CL
23055 SYMBOL(37*8+X,Y),"[頁クリア]",1,1,%14
23060 SYMBOL(60*8+X,Y),"e."+MID$(STR$(MOZ),2 ),1,1,%BCL(0)
23065 SYMBOL(66*8+X,Y),"y."+MID$(STR$(YP+CSP4),2),1,1,%BCL(0)
23070 SYMBOL(72*8+X,Y),"x."+MID$(STR$(XLP+1),2 ),1,1,%BCL(0)
23075 RETURN
23080 '
23085 *CR_POINT2
23090 LINE (MPXL+XLP*8+4,MPYL+(YP+1)*18)-STEP(0,14),XOR,%BCL(7)
23095 IF MPXL+XLP*8+5>MPXF+MVX-24 THEN MVX=MVX+16 :MVX_SET=1 :GOTO 23095
23100 IF MPXL+XLP*8+5<MPXL+MVX THEN MVX=MVX-16 :MVX_SET=1 :GOTO 23095
23105 IF MVX_SET=1 THEN MVX_SET=0 :GOSUB *MOVE_MEMO
23110 RETURN
23115 '
23120 *MEMO_EXE
23125 MX$=MEMO$(YP+CSP4-1) :A=LEN(MX$)
23130 IF A<TABX THEN MX$=MX$+SPACE$(TABX-A)
23135 RETURN
23140 '
23145 *MOVE_MEMO
23150 MEMO$(YP+CSP4-1)=MX$
23155 *MOVE_MEMO2
23160 GOSUB *BD_B4P
23165 WINDOW (MPXL+MVX+1,MPYL+17)-(MPXF+MVX-17,MPYF-17)
23170 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17)
23175 RETURN
23180 '
23185 *LINE_END
23190 P=YP+CSP4
23195 MEMO$(P-1)=LEFT$(MX$,XLP)
23200 IF P<MSX-1 THEN
23205 GOSUB *SIFT_MEMO
23210 MEMO$(P)=MID$(MX$,XLP+1)
23215 GOSUB *MEMO_EXE
23220 E=31 :XLP=0 :MVX=0 :MOZ=MOZ+1
23225 IF MOZ>MSX THEN MOZ=MSX
23230 ENDIF
23235 RETURN
23240 '
23245 *SIFT_MEMO
23250 FOR A=MSX-1 TO P STEP-1
23255 MEMO$(A+1)=MEMO$(A)
23260 NEXT A
23265 RETURN
23270 '
23275 *LSIFT_LINE
23280 P=YP+CSP4-2
23285 IF P<1 THEN RETURN
23290 B$=MEMO$(P)
23295 GOSUB *DELETE_SP :MX$=B$
23300 A=LEN(MX$)
23305 IF A>=TABX THEN RETURN
23310 C=TABX-A :C$=MX$ :XLP=A
23315 B$=MEMO$(P+1)
23320 GOSUB *DELETE_SP :MX$=B$
23325 IF MID$(MX$,C+1)="" THEN K=1 :A$=MEMO$(P+2) ELSE K=0 :A$=""
23330 A=KLEN(LEFT$(MX$,C)) :B$=KLEFT$(LEFT$(MX$,C+1),A)
23335 IF LEN(B$)>C THEN C=C-1
23340 MEMO$(P+1)=MID$(MX$,C+1)+A$
23345 MX$=C$+LEFT$(MX$,C) :MEMO$(P)=MX$
23350 MX$=MEMO$(P+1)
23355 IF K=1 THEN GOSUB *KILL_LINE
23360 E=30
23365 RETURN
23370 '
23375 *KILL_LINE
23380 FOR A=P+1 TO MOZ-1
23385 SWAP MEMO$(A),MEMO$(A+1)
23390 NEXT A
23395 MOZ=MOZ-1
23400 RETURN
23405 '
23410 *DRAG_LINE
23415 DRAG_SW=1
23420 GOSUB *LINE_GET
23425 XU=INT((MOUSE(0)-MPXL-5+MVX)/8) :YU=INT((MOUSE(1)-MPYL-16)/18)
23430 IF YU*18>MPYE-64 THEN
23435 IF CSP4<MSX THEN CSP4=CSP4+1 :YP=YP-1
23440 GOSUB *MOVE_MEMO2
23445 ENDIF
23450 IF YU*18<18 THEN
23455 IF CSP4>1 THEN CSP4=CSP4-1 :YP=YP+1
23460 GOSUB *MOVE_MEMO2
23465 ENDIF
23470 GOSUB *LINE_GET
23475 RETURN
23480 '
23485 *LINE_GET
23490 CL=5
23495 IF YP=YU THEN LINE (MPXL+XLP*8+4,MPYL+YP*18+16) -STEP((XU-XLP)*8,18),XOR,%BCL(CL),BF
23500 IF YP<YU THEN LINE (MPXL+XLP*8+4,MPYL+YP*18+16) -STEP((TABX-XLP)*8,18),XOR,%BCL(CL),BF
23505 IF YP<YU THEN LINE (MPXL+4,MPYL+YU*18+16) -STEP(XU*8,18),XOR,%BCL(CL),BF
23510 A=YU-YP
23515 WHILE A>1
23520 LINE (MPXL+4,MPYL+(YP+A-1)*18+16)-STEP(TABX*8,18),XOR,%BCL(CL),BF
23525 A=A-1
23530 WEND
23535 RETURN
23540 '
23545 *LINE_SEL
23550 PAST_SW=0 :GOSUB *EDIT_CAR :DRAG_SW=0
23555 WHILE MOUSE(2,0)=0
23560 IF MOUSE(2,1)=-1 THEN GOSUB *MOVE_MEMO2 :RETURN
23565 WEND
23570 MUX=MOUSE(4,0) :MUY=MOUSE(5,0)
23575 IF MUY>MPYF-34 AND MUY<MPYF-18 THEN
23580 X=MPXL+10-MVX
23585 IF MUX>10*8+X AND MUX<16*8+X THEN GOSUB *DEL_LINE :GOTO 23640
23590 IF MUX>18*8+X AND MUX<24*8+X THEN GOSUB *COPY_LINE :GOTO 23640
23595 IF MUX>X-4 AND MUX< 6*8+X THEN
23600 WHILE MOUSE(2,0)=-1 :WEND :MOUSE 5 :MUSF$=""
23605 IF XU-XLP>0 THEN
23610 MUSF$=LEFT$(MID$(MX$,XLP+1,XU-XLP),25)
23615 TEXT_REFSW=1
23620 ENDIF
23625 GOSUB *TEXT_REF
23630 ENDIF
23635 ENDIF
23640 GOSUB *MOVE_MEMO2
23645 WHILE MOUSE(2,0)=-1 :WEND
23650 RETURN
23655 '
23660 *DEL_LINE
23665 A=YU-YP
23670 IF A<0 OR (A=0 AND XU<XLP) THEN RETURN
23675 IF A>80 THEN A=80 :YU=YP+80
23680 PAST_SW=A+1 :MEM_EXS=1 :INKEY_P=1
23685 IF A=0 THEN
23690 IF XU<XLP THEN SWAP XU,XLP
23695 MEMO$(YP+CSP4-1)=LEFT$(MX$,XLP)+MID$(MX$,XU+1)
23700 PAST$(0)=MID$(MX$,XLP+1,XU-XLP)
23705 ENDIF
23710 IF A>0 THEN
23715 MEMO$(YP+CSP4-1)=LEFT$(MX$,XLP)
23720 PAST$(0)=MID$(MX$,XLP+1) :MX$=MEMO$(YP+CSP4-1)
23725 IF XU>0 THEN PAST$(A)=LEFT$(MEMO$(YU+CSP4-1),XU)
23730 MEMO$(YU+CSP4-1)=MID$(MEMO$(YU+CSP4-1),XU+1)
23735 ENDIF
23740 B=A-1
23745 WHILE B>0
23750 P=YP+CSP4+B-1 :A=LEN(MEMO$(P))
23755 IF A<TABX THEN MEMO$(P)=MEMO$(P)+SPACE$(TABX-A)
23760 PAST$(B)=MEMO$(P) :MEMO$(P)=""
23765 P=P-1 :GOSUB *KILL_LINE
23770 B=B-1
23775 WEND
23780 IF YU-YP>0 THEN
23785 A$=MX$+MEMO$(YP+CSP4)
23790 IF LEN(A$)=<TABX THEN
23795 MEMO$(YP+CSP4-1)=A$
23800 P=YP+CSP4-1 :GOSUB *KILL_LINE
23805 ELSE
23810 MEMO$(YP+CSP4-1)=LEFT$(A$,TABX)
23815 MEMO$(YP+CSP4 )=MID$(A$,TABX+1)
23820 ENDIF
23825 ENDIF
23830 GOSUB *MEMO_EXE
23835 RETURN
23840 '
23845 *COPY_LINE
23850 A=YU-YP :IF A>80 THEN A=80
23855 PAST_SW=A+1
23860 IF A=0 THEN PAST$(0)=MID$(MX$,XLP+1,XU-XLP)
23865 IF A>0 THEN PAST$(0)=MID$(MX$,XLP+1)
23870 IF A>0 THEN PAST$(A)=LEFT$(MEMO$(YU+CSP4-1),XU)
23875 B=A-1
23880 WHILE B>0
23885 P=YP+CSP4+B-1 :A$=MEMO$(P) :A=LEN(A$)
23890 IF A<TABX THEN A$=A$+SPACE$(TABX-A)
23895 PAST$(B)=A$
23900 B=B-1
23905 WEND
23910 RETURN
23915 '
23920 *PAST_P
23925 IF PAST_SW=0 THEN RETURN
23930 Q=0 :P=YP+CSP4-1 :XLP_S=XLP :MEM_EXS=1 :INKEY_P=1
23935 IF PAST_SW=1 THEN
23940 A$=LEFT$(MX$,XLP)+PAST$(Q) :B$=MID$(MX$,XLP+1)
23945 GOSUB *DELETE_SP :A$=A$+B$
23950 IF LEN(A$)=<TABX THEN
23955 MEMO$(P)=LEFT$(A$+SPACE$(TABX),TABX)
23960 XLP=XLP+LEN(PAST$(Q))
23965 ELSE
23970 GOSUB *RSIFT_LINE
23975 XLP=XLP+LEN(PAST$(Q))
23980 IF XLP>TABX THEN XLP=XLP-TABX :YP=YP+1 :P=P+1
23985 ENDIF
23990 MX$=MEMO$(P)
23995 ELSE
24000 B$=MID$(MX$,XLP+1)
24005 IF Q<PAST_SW THEN
24010 A$=LEFT$(MX$,XLP)+PAST$(Q)
24015 IF LEN(A$)>=TABX THEN
24020 GOSUB *RSIFT_LINE
24025 MX$=KMID$(A$,C+1)
24030 XLP=LEN(MX$)+1 :P=P+1 :Q=Q+1
24035 GOTO 24005
24040 ELSE
24045 MX$=A$ :XLP=LEN(A$)+1 :Q=Q+1
24050 GOTO 24005
24055 ENDIF
24060 ENDIF
24065 XLP=LEN(MX$) :YP=P-CSP4+1
24070 MEMO$(P)=MX$+B$ :MX$=MEMO$(P)
24075 ENDIF
24080 MOZ=MOZ+PAST_SW :IF MOZ<MSX THEN MOZ=MOZ+1
24085 RETURN
24090 '
24095 *DELETE_SP
24100 C=LEN(B$) :IF C=0 THEN B$="" :RETURN
24105 FOR B=C TO 1 STEP -1
24110 IF MID$(B$,B,1)>" " THEN B$=LEFT$(B$,B) :RETURN
24115 NEXT B
24120 B$=""
24125 RETURN
24130 '
24135 *RSIFT_LINE
24140 C=KLEN(LEFT$(A$,TABX)) :Z=0
24145 MEMO$(P)=KLEFT$(A$,C)
24150 IF LEN(KRIGHT$(MEMO$(P),1))>1 THEN C=C-1 :Z=1 :MEMO$(P)=KLEFT$(A$,C)
24155 IF P<MSX-1 THEN
24160 GOSUB *SIFT_MEMO
24165 IF Q=0 THEN MEMO$(P+1)=KMID$(A$,C+1)
24170 ENDIF
24175 RETURN
24180 '
24185 *PAGE_UP
24190 IF INKEY_P=1 THEN GOSUB *MEMO_SAVE :INKEY_P=0
24195 A=MOUSE(3,1)
24200 WHILE MOUSE(2,0)=-1
24205 IF MOUSE(2,1)=-1 THEN GOSUB *PAGE_DOWN
24210 WEND
24215 IF MOUSE(3,1)>0 THEN RETURN
24220 MOX=MOX+1
24225 IF MOX>MEMO_X THEN MOX=1
24230 GOSUB *MEMO_LOAD
24235 GOSUB *BD_B4P
24240 RETURN
24245 '
24250 *PAGE_DOWN
24255 MOX=MOX-1
24260 IF MOX<1 THEN MOX=MEMO_X
24265 GOSUB *MEMO_LOAD
24270 GOSUB *BD_B4P
24275 WHILE MOUSE(2,1)=-1 :WEND
24280 RETURN
24285 '
24290 *SET_MOZ
24295 FOR MOZ=MSX-1 TO 0 STEP-1
24300 B$=MEMO$(MOZ)
24305 GOSUB *DELETE_SP
24310 IF B$<>"" THEN MOZ=MOZ+1 :MX$=B$ :RETURN
24315 NEXT MOZ
24320 MX$=B$
24325 RETURN
24330 '
24335 *PAGE_CLS
24340 P=YP+CSP4-1 :INKEY_P=1
24345 MEMO$(P)=LEFT$(MX$,XLP)
24350 FOR A=P+1 TO MOZ :MEMO$(A)="" :NEXT A :MOZ=P+1
24355 GOSUB *MEMO_EXE
24360 GOSUB *MOVE_MEMO2
24365 WHILE MOUSE(2,1)=-1 :WEND
24370 RETURN
24375 '-------------------------------------------------------------------
24380 *TEXT_REF
24385 WINDOW(0,0)-(639,479) :VIEW(0,0)-(639,479)
24390 TYRP=YP+CSP4-1 :YPS=YP :YLSP=YL
24395 TXRP=XLP
24400 MS1$="検索名称を入力してください"
24405 MS2$=""
24410 A=10 :GOSUB *SWAP_XY
24415 MUX1=0 :MUY1=0 :MUX2=639 :MUY2=479 :MU_INK=1
24420 MPXL=180 :MPYL=200 :MPXE=300 :MPYE=100
24425 MUIM_XL=46 :MUIM_YL=38 :MUIK_L=25
24430 MS3$="上方" :MS5$="下方" :MS4$="取消"
24435 GOSUB *マウス選択
24440 MU_INK=0 :MOUSX=0
24445 IF MUJP=0 OR MUSF$="" THEN 24480
24450 IF TEXT_REFSW=1 AND MUJP=2 THEN TXRP=XU
24455 IF MUJP=2 THEN TRC=TXRP+1 ELSE TRC=TXRP
24460 YP=YPS :YL=YLSP :REF$=MUSF$ :TRFX=0 :ER=0
24465 ON MUJP GOSUB *TEXT_UREF,*TEXT_DREF
24470 IF ER=0 THEN GOSUB *TEXT_REF_ZERO
24475 MOUSE 0 :MOUSE 1,MUX,MUY,1
24480 TEXT_REFSW=0
24485 RETURN
24490 '
24495 *TEXT_DREF
24500 FOR TRN=TYRP TO MOZ-1
24505 B=TRC
24510 TREFP=INSTR(B,MEMO$(TRN),REF$)
24515 IF TREFP>0 THEN
24520 GOSUB *TREF_MESEGI
24525 IF MUJP=0 THEN ER=1 :GOTO 24555
24530 TRC=TREFP+1
24535 GOTO 24505
24540 ENDIF
24545 TRC=1
24550 NEXT TRN
24555 RETURN
24560 '
24565 *TEXT_UREF
24570 DIM TRFP%(255)
24575 FOR TRN=TYRP TO 0 STEP -1
24580 TRQ=0 :B=1
24585 D=INSTR(B,MEMO$(TRN),REF$)
24590 IF D>0 THEN TRFP%(TRQ)=D :TRQ=TRQ+1 :B=D+1 :GOTO 24585
24595 IF TRQ>0 THEN
24600 FOR TRW=TRQ-1 TO 0 STEP -1
24605 TREFP=TRFP%(TRW)
24610 IF TREFP<TRC THEN
24615 GOSUB *TREF_MESEGI
24620 IF MUJP=0 THEN ER=1 :GOTO 24650
24625 ENDIF
24630 NEXT TRW
24635 ENDIF
24640 TRC=256
24645 NEXT TRN
24650 ERASE TRFP%
24655 RETURN
24660 '
24665 *TREF_MESEGI
24670 TRFX=TRFX+1
24675 IF CSP4>TRN THEN CSP4=TRN-1 :IF CSP4<1 THEN CSP4=1
24680 IF CSP4+INT((MPYF-MPYL-80)/18)=<TRN THEN
24685 CSP4=TRN-1
24690 ENDIF
24695 XA=INT((MVX+1)/8)
24700 XB=INT((MPXF-MPXL-18)/8)
24705 IF TREFP+LEN(REF$)>XA+XB THEN MVX=(TREFP-XA-XB+(XB-LEN(REF$))/4)*8
24710 IF TREFP=<XA THEN IF TREFP-XB<1 THEN MVX=0 ELSE MVX=(TREFP-XB)*8
24715 GOSUB *BD_4P
24720 Y=MPYL+((TRN-CSP4+1)*18)+17 :YP=TRN-CSP4+1
24725 X=MPXL+(TREFP-1)*8-MVX+2 :XLP=TREFP-1
24730 GOSUB *MEMO_EXE
24735 LINE (X,Y)-STEP(LEN(REF$)*8+2,16),XOR,%BCL(5),BF
24740 MS2$="["+REF$+"]" :MS1$="発見しました"
24745 MS3$="続行" :MS4$="中止" :MS5$=""
24750 A=10
24755 GOSUB *SWAP_XY :MPXE=250 :MPYE=85 :GOSUB *マウス選択
24760 MOUSX=0
24765 RETURN
24770 '
24775 *TEXT_REF_ZERO
24780 MS2$="["+REF$+"]" :MS1$="見つかりません"
24785 MS3$="" :MS4$="確認" :MS5$=""
24790 A=10
24795 GOSUB *SWAP_XY :MPXE=250 :MPYE=85 :GOSUB *マウス選択
24800 MOUSX=0
24805 RETURN
24810 '-------------------------------------------------------------------
24815 *マウス選択
24820 GOSUB *BOLD_PM
24825 MUSEL=0 :MUJP=0
24830 GOSUB *マウスX
24835 ON MOUSX GOSUB *RET,*RET,*ドラッグ
24840 IF (MOUSX=1 OR MOUSX=7)=0 THEN 24830
24845 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),U%
24850 A=10 :GOSUB *SWAP_XY
24855 RETURN
24860 '
24865 *ドラッグ
24870 MPXL_SAV=MPXL :MPYL_SAV=MPYL
24875 GOSUB *ドラッグB
24880 SWAP MPXL,MPXL_SAV :SWAP MPYL,MPYL_SAV
24885 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),U%
24890 SWAP MPXL,MPXL_SAV :SWAP MPYL,MPYL_SAV
24895 GOSUB *BOLD_PM
24900 RETURN
24905 '
24910 *マウスX
24915 MOUSE 0
24920 MOUSE 4,MUX1,MUY1,MUX2,MUY2
24925 MOUSE 1,MUX,MUY,1
24930 *マウスX2
24935 MOUSX=0
24940 WHILE MOUSE(2,0)=0
24945 MUSI$=""
24950 A$=INKEY$+INKEY$ :IF A$<>"" THEN MUSI$=MUSI$+A$ :GOTO 24950
24955 IF MUSI$<>"" AND MU_INK>0 THEN
24960 GOSUB *MOUS_INKEY
24965 IF MOUSX=1 THEN 25055
24970 ENDIF
24975 IF MOUSE(2,1)=-1 THEN *MOUSE_SUB
24980 WEND
24985 MUX=MOUSE(4,0) :MUY=MOUSE(5,0)
24990 IF MUX>MPXL AND MUX<MPXF AND MUY>MPYL AND MUY<MPYF THEN
24995 GOSUB *SUB_INPUT
25000 IF MUJP<3 THEN
25005 MOUSX=1
25010 WHILE MOUSE(2,0)=-1 :WEND
25015 RETURN
25020 ELSE
25025 MOUSX=3
25030 RETURN
25035 ENDIF
25040 ENDIF
25045 MOUSX=7 :MUJP=0
25050 WHILE MOUSE(2,0)=-1 :WEND
25055 MUXE=MOUSE(0) :MUYE=MOUSE(1) :MUZ=MOUSE(3,0)
25060 MOUSE 5
25065 RETURN
25070 '
25075 *MOUSE_SUB
25080 WHILE MOUSE(2,1)=-1 :WEND
25085 MUX=MOUSE(0) :MUY=MOUSE(1)
25090 PUT@A (MPXL,MPYL)-(MPXF+2,MPYF+2),U%
25095 WHILE MOUSE(2,1)=0 :WEND
25100 GOSUB *BOLD_PM
25105 WHILE MOUSE(2,1)=-1 :WEND
25110 MUX=MOUSE(0) :MUY=MOUSE(1)
25115 GOTO *マウスX2
25120 '
25125 *SUB_INPUT
25130 IF MUX>MPXL+20 AND MUX<MPXL+60 AND MUY>MPYF-35 AND MUY<MPYF-15 AND MS3$<>"" THEN MUJP=1 :RETURN
25135 IF MUX>MPXF-60 AND MUX<MPXF-20 AND MUY>MPYF-35 AND MUY<MPYF-15 AND MS4$<>"" THEN MUJP=0 :RETURN
25140 IF MS5$<>"" THEN
25145 IF MUX>(MPXL+(MPXF-MPXL)\2-20) AND MUX<(MPXL+(MPXF-MPXL)\2+20) AND MUY>MPYF-35 AND MUY<MPYF-15 THEN MUJP=2 :RETURN
25150 ENDIF
25155 MUJP=3
25160 RETURN
25165 '--------------------------------------------------------------------
25170 *MOUS_INKEY
25175 IF MU_INK=1 THEN XMP=254
25180 E=JIS(MUSI$)
25185 IF E<32 AND E>0 OR E=127 THEN
25190 LINE (MUIK_XL+(XP-1)*8+2,MUIK_YL+1)-STEP(8,14),XOR,%BCL(9),BF
25195 GOTO *SUBKEY_M
25200 ENDIF
25205 IF LEN(MUSI$) MOD 2 THEN IF ASC(RIGHT$(MUSI$,1))<32 THEN MUSI$=LEFT$(MUSI$,LEN(MUSI$)-1)
25210 IF MU_INK>1 THEN MID$(MUSF$,XP,LEN(MUSI$))=MUSI$
25215 IF MU_INK=1 THEN
25220 IF XP=1 THEN
25225 MUSF$=MUSF$+MUSI$
25230 ELSE
25235 A$=LEFT$(MUSF$,XP-1)+MUSI$ :B$=""
25240 IF XP=<LEN(MUSF$) THEN
25245 B$=MID$(MUSF$,XP)
25250 ENDIF
25255 MUSF$=A$+B$
25260 ENDIF
25265 ENDIF
25270 GOSUB *MU_INK_PUT
25275 XP=XP+LEN(MUSI$)
25280 IF XMP=12 AND (XP=5 OR XP=9) THEN XP=XP+2
25285 IF XMP=14 AND XP=5 THEN XP=XP+6
25290 IF XP>XMP THEN XP=XMP
25295 LINE (MUIK_XL+(XP-1)*8+2,MUIK_YL+1)-STEP(8,14),XOR,%BCL(9),BF
25300 RETURN
25305 '
25310 *SUBKEY_M
25315 IF E=13 THEN ER=1 :MUJP=1 :MOUSX=1
25320 IF E=8 THEN IF MU_INK=1 THEN *BAKSP_M
25325 IF E=127 AND MU_INK=1 AND LEN(MUSF$)>=XP THEN A=KLEN(MID$(MUSF$,XP,2)) :XP=XP+3-A :GOTO *BAKSP_M
25330 IF E=24 THEN
25335 IF MU_INK>1 THEN
25340 ER=2 :MUJP=1 :MOUSX=1
25345 ELSE
25350 MUJP=0 :MOUSX=1
25355 ENDIF
25360 ENDIF
25365 IF E=28 OR E=29 THEN
25370 IF E=28 THEN
25375 IF MU_INK=1 AND XP>LEN(MUSF$) THEN 25295
25380 XP=XP+1 :GOTO 25280
25385 ENDIF
25390 IF E=29 THEN
25395 XP=XP-1 :IF XP=0 THEN XP=1
25400 IF MU_INK>1 THEN
25405 IF XMP=12 AND (XP=6 OR XP=10) THEN XP=XP-2
25410 IF XMP=14 AND XP=10 THEN XP=XP-6
25415 ENDIF
25420 ENDIF
25425 ENDIF
25430 GOTO 25295
25435 '
25440 *BAKSP_M
25445 IF XP=1 THEN 25480
25450 GOSUB *BAKSP_SUB_M
25455 IF XP-F>0 THEN A$=LEFT$(MUSF$,XP-F-1) ELSE A$=""
25460 IF XP=<LEN(MUSF$) THEN B$=MID$(MUSF$,XP) ELSE B$=""
25465 MUSF$=A$+B$
25470 XP=XP-F
25475 IF XP<1 THEN XP=1
25480 GOSUB *MU_INK_PUT
25485 LINE (MUIK_XL+(XP-1)*8+2,MUIK_YL+1)-STEP(8,14),XOR,%BCL(9),BF
25490 RETURN
25495 '
25500 *BAKSP_SUB_M
25505 IF XP>2 THEN
25510 A=KLEN(MID$(MUSF$,XP-2,2))
25515 IF A=1 THEN F=2 ELSE F=1
25520 ELSE
25525 F=1
25530 ENDIF
25535 RETURN
25540 '
25545 *MU_INK_PUT
25550 MUIK_XL=MPXL+MUIM_XL :MUIK_YL=MPYL+MUIM_YL
25555 LINE (MUIK_XL,MUIK_YL-1)- (MUIK_XL+MUIK_L*8+4,MUIK_YL+17),PSET,%BCL(0),BF,%BCL(3)
25560 SYMBOL(MUIK_XL+2,MUIK_YL),MUSF$,1,1,%BCL(0)
25565 RETURN
25570 '--------------------------------------------------------------------
25575 *BOLD_PM
25580 A=16
25585 MPXF=MPXL+MPXE :MPYF=MPYL+MPYE
25590 GET@A (MPXL,MPYL)-(MPXF+2,MPYF+2),U%
25595 *BOLD_PM2
25600 LINE (MPXL,MPYL)-(MPXF+2,MPYF+2),PSET,%BCL(4),BF
25605 X=16 :Y=16
25610 LINE (MPXL,MPYL)-(MPXF,MPYF),PSET,%BCL(0),BF,%BCL(1)
25615 LINE (MPXL+3,MPYL+3)-(MPXF-3,MPYF-3),PSET,%BCL(0),BF,%BCL(2)
25620 IF MU_INK>0 THEN GOSUB *MU_INK_PUT :XP=1 : LINE (MUIK_XL+(XP-1)*8+2,MUIK_YL+1)-STEP(8,14),XOR,%BCL(2),BF
25625 IF MS3$<>"" THEN LINE (MPXL+20,MPYF-35)-STEP(40,20),PSET,%BCL(0),BF,%BCL(13)
25630 IF MS4$<>"" THEN LINE (MPXF-60,MPYF-35)-STEP(40,20),PSET,%BCL(0),BF,%BCL(13)
25635 IF MS5$<>"" THEN LINE (MPXL+(MPXF-MPXL)\2-20,MPYF-35)- STEP(40,20),PSET,%BCL(0),BF,%BCL(13)
25640 X=INT((INT(MPXE/8)-LEN(MS1$))/2)-1 :IF X<1 THEN X=0
25645 SYMBOL(MPXL+10,MPYL+10),SPACE$(X)+MS1$,1,1,%BCL(0)
25650 X=INT((INT(MPXE/8)-LEN(MS2$))/2)-1 :IF X<1 THEN X=0
25655 SYMBOL(MPXL+10,MPYL+30),SPACE$(X)+MS2$,1,1,%BCL(0)
25660 SYMBOL(MPXL+25,MPYF-33),MS3$,1,1,%BCL(0)
25665 SYMBOL(MPXF-55,MPYF-33),MS4$,1,1,%BCL(0)
25670 SYMBOL(MPXL+(MPXF-MPXL)\2-15,MPYF-33),MS5$,1,1,%BCL(0)
25675 RETURN
25680 '-------------------------------------------------------------------
25685 *GRAH_P
25690 A=NP(NEXP) :GOSUB *SWAP_XY
25695 MPXL=PXL%(2) :MPYL=PYL%(2) :MPXE=PXE%(2) :MPYE=PYE%(2)
25700 A=2 :GOSUB *OPEN_P
25705 *GRAH_P2
25710 BDP=3 :BPQ=0 :WKST=1 :REF_SW=0
25715 GOSUB *SEL_WAKP
25720 IF JPQ=1 THEN GOTO *NEX_P
25725 RETURN
25730 '
25735 *BD_3P
25740 FILS$="[グラフ]"
25745 GOSUB *GRAP_PUT
25750 WINDOW (MPXL+GVX+1,MPYL+GVY+17)-(MPXF+GVX-17,MPYF+GVY-17)
25755 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17)
25760 LINE(MPXL+GVX+1,MPYF+GVY-35)-STEP(640,18),PSET,%BCL(4),BF
25765 IF GRAP_SW=0 THEN CL1=0 :CL2=3 ELSE CL1=3 :CL2=0
25770 SYMBOL(MPXL+10 ,MPYF+GVY-33),"[年間]",1,1,%BCL(CL1)
25775 SYMBOL(MPXL+100,MPYF+GVY-33),"[月間]",1,1,%BCL(CL2)
25780 IF GRAP_CSW=0 THEN
25785 CL1=0 :CL2=3 :CL3=3
25790 ELSE
25795 CL1=3 :CL2=0
25800 IF GZS=1 THEN CL3=3 ELSE CL3=0
25805 ENDIF
25810 SYMBOL(MPXL+190,MPYF+GVY-33),"[描画]",1,1,%BCL(CL1)
25815 SYMBOL(MPXL+280,MPYF+GVY-33),"[縮小]",1,1,%BCL(CL2)
25820 SYMBOL(MPXL+370,MPYF+GVY-33),"[拡大]",1,1,%BCL(CL3)
25825 IF S_GRF=0 THEN CL1=3 ELSE CL1=0
25830 SYMBOL(MPXL+460,MPYF+GVY-33),"[積算]",1,1,%BCL(CL1)
25835 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
25840 GOSUB *CASOL_P3 :GOSUB *CASOL_P3B
25845 RETURN
25850 '
25855 *YL_DOWN3
25860 GVY=GVY+240
25865 GOSUB *BD_SUBP
25870 RETURN
25875 '
25880 *YL_UP3
25885 GVY=GVY-240
25890 GOSUB *BD_SUBP
25895 RETURN
25900 '
25905 *XL_LEFT3
25910 GVX=GVX-320
25915 GOSUB *BD_SUBP
25920 RETURN
25925 '
25930 *XL_RIGHT3
25935 GVX=GVX+320
25940 GOSUB *BD_SUBP
25945 RETURN
25950 '
25955 *CSL_S3
25960 A=480
25965 GOSUB *カーソル_SET1 :IF SGN(GVY)<0 THEN P=480-P
25970 GVY=INT(GVY/480)*480+P
25975 GOSUB *BD_SUBP
25980 RETURN
25985 '
25990 *CSL_D3
25995 A=640
26000 GOSUB *カーソル_SET2 :IF SGN(GVX)<0 THEN P=640-P
26005 GVX=INT(GVX/640)*640+P
26010 GOSUB *BD_SUBP
26015 RETURN
26020 '
26025 *CASOL_P3
26030 A=480 :B=GVY
26035 GOSUB *CASOL_PX3
26040 RETURN
26045 '
26050 *CASOL_P3B
26055 A=640 :B=GVX
26060 GOSUB *CASOL_PX2
26065 RETURN
26070 '
26075 *CASOL_PX3
26080 YL=16
26085 IF B=0 THEN Y=MPYL+16 ELSE Y=MPYL+(ABS(B) MOD A)*((MPYE-96)/480)+16
26090 IF Y>MPYF-64 THEN Y=MPYF-64
26095 LINE (MPXF,MPYL+16)-STEP(-16,MPYE-64),PSET,%BCL(0),BF,%BCL(5)
26100 LINE (MPXF,Y)-STEP(-16,YL+16),PSET,%BCL(0),BF,%BCL(17)
26105 CONNECT(MPXF-16,Y+YL+16)-STEP(2,-2)-STEP(12,0)-STEP(0,-YL-12)- STEP(2,-2)-STEP(0,YL+16)-STEP(-16,0),%BCL(0),PSET,F,%BCL(0)
26110 RETURN
26115 '
26120 *BSCR_P3
26125 IF MUY>MPYF-36 AND MUY<MPYF-16 THEN
26130 MOUSE 1,,,0
26135 IF MUX>MPXL+10-GVX AND MUX<MPXL+60-GVX THEN GRAP_SW=0 :PDF=0 :PDE=365 :GRAP_CSW=0
26140 IF MUX>MPXL+100-GVX AND MUX<MPXL+150-GVX THEN GOSUB *GET_DEI :RETURN
26145 IF MUX>MPXL+190-GVX AND MUX<MPXL+240-GVX THEN GOSUB *GRAP_CALK
26150 IF MUX>MPXL+280-GVX AND MUX<MPXL+330-GVX THEN A=.5! :GOSUB *GRAP_ZOOM
26155 IF MUX>MPXL+370-GVX AND MUX<MPXL+420-GVX THEN A=-.5! :GOSUB *GRAP_ZOOM
26160 IF MUX>MPXL+460-GVX AND MUX<MPXL+510-GVX THEN IF S_GRF=1 THEN S_GRF=0 ELSE S_GRF=1
26165 GOSUB *BD_3P
26170 GOSUB *RET_W
26175 RETURN
26180 ENDIF
26185 IF GRAP_CSW=0 THEN RETURN
26190 XQ=(MPXE+(GX2-GX1))/(MPXE-18) :YQ=(MPYE+(GY2-GY1))/(MPYE-34)
26195 XP=INT((MUX-MPXL+GVX/XQ-1-239/XQ)/(250/XQ))
26200 XL=INT((MUX-MPXL+GVX/XQ-1-259/XQ)/(250/XQ))
26205 YR=INT((MUY-MPYL+GVY/YQ-17-43/YQ)/(18/YQ))
26210 IF YR<0 THEN 26270
26215 IF YR>9 THEN GC=1 :YP=INT((MUY-MPYL+GVY/YQ-17-263/YQ)/(18/YQ)) ELSE GC=0 :YP=YR
26220 GTP=YP+XP*10
26225 IF GTP>=0 AND GTP<GZP%(GC) THEN
26230 IF XL=XP THEN
26235 MOUSE 1,,,0
26240 ORE_GRF=1 :GOSUB *GRAP_PUT :ORE_GRF=0
26245 GOSUB *KMG_PUT :RETURN
26250 ELSE
26255 GOSUB *KMG_COL :RETURN
26260 ENDIF
26265 ENDIF
26270 WHILE MOUSE(2,0)=-1 :WEND
26275 RETURN
26280 '
26285 *GET_DEI
26290 GRAP_SW=1 :REF_SW=2 :GRAP_CSW=0 :PDXS=PDX
26295 GOSUB *CALENDER
26300 GOSUB *SCR_BACK
26305 GOSUB *SET_XYD
26310 D=GXD :M=GXM :GOSUB *PDX_SET :PDF=PDX
26315 D=GZD :M=GZM :GOSUB *PDX_SET :PDE=PDX
26320 IF PDF>PDE THEN SWAP PDF,PDE :SWAP GXM,GZM :SWAP GXD,GZD
26325 REW_X=PXE%(2) :REW_Y=PYE%(2)
26330 BDP=3 :JP=9 :PDX=PDXS :REF_SW=0 :WKST=1
26335 RETURN
26340 '
26345 *GRAP_CALK
26350 IF KOZ<1 THEN RETURN
26355 IF PDE<PDF THEN SWAP PDE,PDF
26360 GRAP_CSW=1
26365 ERASE GKX#,GKT#,GRPZ# :DIM GKX#(365,50),GKT#(5),GRPZ#(KOZ,1)
26370 FOR A=PDF TO PDE
26375 B=KMAX(A) :D=0
26380 WHILE B>D
26385 C=KMI%(A,D)
26390 IF KMT%(C)=0 THEN K#=KIN&(A,D)*KSU%(A,D) ELSE K#=KIN&(A,D)
26395 GKX#(A,C)=GKX#(A,C)+K#
26400 GKT#(KMT%(C))=GKT#(KMT%(C))+K#
26405 D=D+1
26410 WEND
26415 NEXT A
26420 GOSUB *MAX_CALK :GOSUB *SWAP_GRPZ
26425 RETURN
26430 '
26435 *GRAP_ZOOM
26440 GZS=GZS+A
26445 IF GZS<1 THEN GZS=1
26450 GX2=(MPXE-18)*(GZS-1)/2-17
26455 GY2=(MPYE-34)*(GZS-1)/2-17
26460 SX=1/GZS :SY=1/GZS
26465 RETURN
26470 '
26475 *GRAP_PUT
26480 IF GRAP_CSW=0 THEN RETURN
26485 GVXS=GVX :GVYS=GVY
26490 IF ORE_GRF=1 AND GVY>-50 THEN GVX=0 :GVY=-370
26495 WINDOW (MPXL+GVX+GX1,MPYL+GVY+GY1)-(MPXF+GVX+GX2,MPYF+GVY+GY2)
26500 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
26505 GOSUB *EN_GRAP
26510 GOSUB *BO_GRAP
26515 IF ORE_GRF=1 THEN
26520 GOSUB *ORE_GRAP
26525 GVX=GVXS :GVY=GVYS
26530 ELSE
26535 IF S_GRF=1 THEN GOSUB *SEN_GRAP
26540 ENDIF
26545 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
26550 RETURN
26555 '
26560 *GK_CALK
26565 FOR B=PDF TO PDE
26570 GKZ#=GKZ#+GKX#(B,A)
26575 NEXT B
26580 RETURN
26585 '
26590 *EN_GRAP
26595 IF GRAP_SW=1 THEN
26600 A$=MID$(STR$(GXY),2)+"-"+MID$(STR$(GXM),2)+"-"+MID$(STR$(GXD),2)
26605 SYMBOL(MPXL+60,MPYL+20),A$+"~",SX,SY,%BCL(0)
26610 A$=MID$(STR$(GZY),2)+"-"+MID$(STR$(GZM),2)+"-"+MID$(STR$(GZD),2)
26615 SYMBOL(MPXL+140,MPYL+20),A$,SX,SY,%BCL(0)
26620 ELSE
26625 IF KFXP>0 THEN SYMBOL(MPXL+80,MPYL+20),FSI$(KFXP-1),SX,SY,%BCL(0)
26630 ENDIF
26635 GKW#=GKT#(0)+GKT#(2)+GKT#(4) :GKQ#=GKT#(1)+GKT#(3)+GKT#(5)
26640 IF GKW#+GKQ#=0 THEN RETURN
26645 G=GKW#/(GKW#+GKQ#)+.75! :IF G>1 THEN G=G-1
26650 CIRCLE(MPXL+120,MPYL+140),100,%BCL(15),,.75!,G,F,PSET
26655 CIRCLE(MPXL+120,MPYL+140),100,%BCL(16),,G,.75!,F,PSET
26660 RESTORE *KT_DAT
26665 FOR C=1 TO 0 STEP -1
26670 X=MPXL+120 :Y=MPYL+220*C+140 :R=80+C*10
26675 GKW#=GKT#(C)+GKT#(C+2)+GKT#(C+4)
26680 A$=STR$(GKW#) :GOSUB *CONMA_P
26685 SYMBOL(X+120,Y-100),"total \"+A$,SX,SY,%BCL(0)
26690 READ A$
26695 SYMBOL(X+80,Y-100),A$,SX,SY,%BCL(0)
26700 CIRCLE(X,MPYL+140),R,%BCL(2),,,,F,PSET
26705 IF GKW#=0 THEN 26795
26710 GKZ#=0 :GKN#=0 :D=.75! :GZP%(C)=0 :XL=X+120 :YL=Y-80
26715 FOR B=1 TO KOZ
26720 A=GRPZ#(B,0)
26725 IF (KMT%(A) MOD 2)=C THEN
26730 GKZ#=GKZ#+GRPZ#(B,1) :IF GKZ#=GKN# THEN 26785
26735 G=GKZ#/GKW#+.75! :GZT%(GZP%(C),C)=A
26740 IF G>1 THEN G=G-1 :IF G>.75! THEN RETURN
26745 CIRCLE(X,MPYL+140),R,%BCL(A+29),,D,G,F,PSET
26750 LINE(XL,YL)-STEP(20,15),PSET,%BCL(0),BF,%BCL(A+29)
26755 SYMBOL(XL+25,YL),KOM$(A),SX,SY,%BCL(0)
26760 IF KMT%(A)>1 THEN SYMBOL(XL-2 ,YL+1),STR$(KMT%(A)), SX,SY,%BCL(2),,XOR
26765 A$=STR$(GKZ#-GKN#) :GOSUB *CONMA_P
26770 SYMBOL(XL+220-LEN(A$)*8*SX,YL),A$,SX,SY,%BCL(0)
26775 D=G :GKN#=GKZ# :GZP%(C)=GZP%(C)+1
26780 YL=YL+18 :IF YL>Y+90 THEN YL=Y-80 :XL=XL+250
26785 ENDIF
26790 NEXT B
26795 NEXT C
26800 RETURN
26805 '
26810 *KT_DAT
26815 DATA 収入,支出
26820 '
26825 *SWAP_GRPZ
26830 FOR A=1 TO KOZ
26835 GKZ#=0
26840 GOSUB *GK_CALK
26845 GRPZ#(A,0)=A
26850 GRPZ#(A,1)=GKZ#
26855 NEXT A
26860 IF KOZ<2 THEN RETURN
26865 FOR A=1 TO KOZ-1
26870 FOR B=A+1 TO KOZ
26875 IF GRPZ#(A,1)<GRPZ#(B,1) THEN
26880 SWAP GRPZ#(A,0),GRPZ#(B,0)
26885 SWAP GRPZ#(A,1),GRPZ#(B,1)
26890 ENDIF
26895 NEXT B
26900 NEXT A
26905 RETURN
26910 '
26915 *MAX_CALK
26920 IF GRAP_SW=0 THEN GXM=1 :GZM=12 :PDF=0 :PDE=364+URY :GXD=1 :GZD=31
26925 A=GXM :X=PDF :B=GXD
26930 WHILE X=<PDE
26935 MAX_O#(A)=0 :MAX_I#(A)=0
26940 M=MONT(A) :IF A=2 THEN M=M+URY
26945 IF GZM=A THEN C=GZD ELSE C=M
26950 FOR G=B TO C
26955 E=KMAX(X) :F=0
26960 WHILE E>F
26965 T=KMI%(X,F) :K#=KIN&(X,F)
26970 IF KMT%(T)>1 THEN Z=1 ELSE Z=KSU%(X,F)
26975 IF (KMT%(T) MOD 2)=0 THEN MAX_O#(A)=MAX_O#(A)+K#*Z ELSE MAX_I#(A)=MAX_I#(A)+K#
26980 F=F+1
26985 WEND
26990 X=X+1 :IF X>PDE THEN *MAX_CALK2
26995 NEXT G
27000 A=A+1 :B=1 :IF A>12 THEN *MAX_CALK2
27005 WEND
27010 *MAX_CALK2
27015 K#=0
27020 FOR A=GXM TO GZM
27025 IF K#<MAX_I#(A) THEN K#=MAX_I#(A)
27030 IF K#<MAX_O#(A) THEN K#=MAX_O#(A)
27035 NEXT A
27040 RETURN
27045 '
27050 *BO_GRAP
27055 IF K#=0 THEN RETURN
27060 XL=MPXL+(GXM-1)*18+10 :YL=MPYL+500
27065 Y=200/K#
27070 LINE (MPXL+5,YL+5)-STEP(220,0),PSET,%BCL(0)
27075 LINE (MPXL+5,YL+5)-STEP(0,-205),PSET,%BCL(0)
27080 CL1=BCL(16) :CL2=BCL(15)
27085 FOR A=GXM TO GZM
27090 LINE(XL+(A-GXM)*18,YL)-STEP(10,Y*MAX_I#(A)*(-1)),PSET,%CL1,BF
27095 LINE(XL+(A-GXM)*18+5,YL)-STEP(10,Y*MAX_O#(A)*(-1)),PSET,%CL2,BF
27100 SYMBOL(XL+(A-GXM)*18-8,YL+20),STR$(A),SX,SY,%BCL(0)
27105 NEXT A
27110 RETURN
27115 '
27120 *SEN_GRAP
27125 IF K#=0 THEN RETURN
27130 GOSUB *GRF_LINE
27135 FOR B=1 TO KOZ
27140 C=GRPZ#(B,0) :IF GRPZ#(B,1)=0 THEN 27190
27145 E=GRPZ#(B,1)/300
27150 POINT (XL,YL-GKX#(PDF,C)/E)
27155 Y#=0
27160 FOR A=PDF+1 TO PDE
27165 Y#=Y#+GKX#(A,C)
27170 IF Y#=0 THEN POINT (XL+(A-PDF)*D,YL-Y#/E) :GOTO 27185
27175 LINE -(XL+(A-PDF)*D,YL-Y#/E),PSET,%BCL(C+29)
27180 IF Y#=GRPZ#(B,1) THEN 27190
27185 NEXT A
27190 NEXT B
27195 RETURN
27200 '
27205 *ORE_GRAP
27210 IF K#=0 THEN RETURN
27215 GOSUB *GRF_LINE
27220 FOR B=1 TO KOZ
27225 IF GRPZ#(B,0)=GZT%(GTP,GC) THEN *ORE_GRAP2
27230 NEXT B
27235 RETURN
27240 '
27245 *ORE_GRAP2
27250 IF GRPZ#(B,1)=0 THEN RETURN
27255 C=GRPZ#(B,0) :Y#=0
27260 FOR A=PDF TO PDE
27265 IF Y#<GKX#(A,C) THEN Y#=GKX#(A,C)
27270 NEXT A
27275 E=Y#/300
27280 POINT (XL,YL-GKX#(PDF,C)/E)
27285 FOR A=PDF+1 TO PDE
27290 LINE -(XL+(A-PDF)*D,YL-GKX#(A,C)/E),PSET,%BCL(C+29)
27295 NEXT A
27300 A$=STR$(Y#) :GOSUB *CONMA_P
27305 SYMBOL(XL,YL-300),"最大値 [\"+A$+"]",1,1,%BCL(0)
27310 Y#=INT(GRPZ#(B,1)/(PDE-PDF+1))
27315 A$=STR$(Y#) :GOSUB *CONMA_P
27320 A$="平均値 [\"+A$+"/日]"
27325 SYMBOL(XL,YL-270),A$,1,1,%BCL(0)
27330 LINE (XL,YL-Y#/E)-STEP(740,0),PSET,%BCL(0),,&H3838
27335 RETURN
27340 '
27345 *GRF_LINE
27350 XL=MPXL+20 :YL=MPYL-50
27355 LINE (XL-5,YL+5)-STEP(740,0),PSET,%BCL(0)
27360 LINE (XL-5,YL+5)-STEP(0,-300),PSET,%BCL(0)
27365 D=INT(740/(PDE-PDF))
27370 IF GRAP_SW=0 THEN *GRF_LINE2
27375 FOR A=XL TO 740 STEP D*7
27380 LINE (A,YL)-STEP(0,5),PSET,%BCL(0)
27385 NEXT A
27390 RETURN
27395 '
27400 *GRF_LINE2
27405 LINE (XL,YL)-STEP(0,5),PSET,%BCL(0) :M=0
27410 FOR A=1 TO 12
27415 M=M+MONT(A) :IF A=2 THEN M=M+URY
27420 LINE (XL+M*D,YL)-STEP(0,5),PSET,%BCL(0)
27425 NEXT A
27430 RETURN
27435 '-------------------------------------------------------------------
27440 *KMG_PUT
27445 X1=MPXL :Y1=MPYL :X2=MPXF :Y2=MPYF
27450 A=9 :GOSUB *SWAP_XY
27455 MPXL=PXL%(10):MPYL=PYL%(10) :MPXE=PXE%(10) :MPYE=PYE%(10)
27460 GOSUB *OPEN_P2
27465 BCL(1)=BCL(18) :BCL(9)=BCL(19) :KGCS=1 :KGC_SW=0 :GRF$=""
27470 GOSUB *SET_KGZ
27475 REW_X=PXE%(10) :REW_Y=PYE%(10) :BDP=12 :BPQ=0
27480 MUX_S=MUX :MUY_S=MUY
27485 GOSUB *BOLD_P
27490 GOSUB *SET_XYD
27495 GOSUB *SEL_MXY
27500 IF ER=1 THEN 27520
27505 ON JP GOSUB *RET_P,*REW_P,*DRAG_A,*YL_DOWN3I,*YL_UP3I,*XL_RIGHT3I, *XL_LEFT3I,*DRAG_B,*BSCR_P3I,*CSL_S3I,*CSL_D3I,*RET_W
27510 IF JP<>1 THEN 27495
27515 NEXP=NEXP+1
27520 GOSUB *CLOSE_P2
27525 PXL%(10)=MPXL :PYL%(10)=MPYL :PXE%(10)=MPXE :PYE%(10)=MPYE
27530 A=9 :GOSUB *SWAP_XY :MUX=MUX_S :MUY=MUY_S
27535 GOSUB *SET_XYD :GOSUB *SCR_BACK
27540 JP=9 :REW_X=PXE%(2) :REW_Y=PYE%(2)
27545 RETURN
27550 '
27555 *BD_12P
27560 FILS$="["+LEFT$(KOM$(GZT%(GTP,GC)),KOML)+"]"
27565 WINDOW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17) : VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
27570 GOSUB *BD12_LINE
27575 XL=MPXL+5 :YL=MPYL+55 :E=0 :F=1
27580 FOR A=PDF TO PDE
27585 B=KMAX(A) :D=0
27590 WHILE B>D
27595 C=KMI%(A,D) :IF C<>GZT%(GTP,GC) THEN 27665
27600 IF GRF$<>"" THEN IF INSTR(KNE$(A,D),GRF$)=0 THEN 27665
27605 IF KGCS>F THEN 27660
27610 P=A :GOSUB *SET_MDX
27615 A$=RIGHT$(STR$(M),2)+"/"+RIGHT$(STR$(U),2)
27620 IF U>0 THEN SYMBOL(XL,YL+E*18),A$,1,1,%BCL(0)
27625 SYMBOL(XL+6*8,YL+E*18),LEFT$(KNE$(A,D),GSX),1,1,%BCL(0)
27630 A$=STR$(KIN&(A,D)) :GOSUB *CONMA_P
27635 SYMBOL(XL+(GSX+18-LEN(A$))*8,YL+E*18),A$,1,1,%BCL(0)
27640 A$=STR$(ABS(KSU%(A,D)))
27645 SYMBOL(XL+(GSX+26-LEN(A$))*8,YL+E*18),A$,1,1,%BCL(0)
27650 E=E+1
27655 IF YL+E*18>MPYF-32 THEN 27680
27660 F=F+1
27665 D=D+1
27670 WEND
27675 NEXT A
27680 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
27685 GOSUB *CASOL_P3I :GOSUB *CASOL_P3IB
27690 RETURN
27695 '
27700 *BD12_LINE
27705 IF GSX=0 THEN GSX=20
27710 XL=MPXL+5 :YL=MPYL+50 :X=(GSX+26)*8
27715 SYMBOL(XL+6*8,YL-10),STR$(GSX),.7!,.7!,%BCL(0)
27720 LINE (XL,YL-5)-STEP(0,7),PSET,%BCL(0)
27725 LINE (XL+(GSX+26)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
27730 LINE (XL,YL )-STEP(X,0),PSET,%BCL(0)
27735 SYMBOL(XL,YL-28),"[月日]",1,1,%BCL(0)
27740 LINE (XL+6*8,YL-5)-STEP(0,7),PSET,%BCL(0)
27745 SYMBOL(XL+6*8,YL-28),"[名 称]",1,1,%BCL(0)
27750 LINE (XL+(GSX+6)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
27755 SYMBOL(XL+(GSX+6)*8,YL-28),"[金 額]",1,1,%BCL(0)
27760 LINE (XL+(GSX+18)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
27765 SYMBOL(XL+(GSX+18)*8,YL-28),"[数 量]",1,1,%BCL(0)
27770 RETURN
27775 '
27780 *SET_MDX
27785 FOR M=1 TO 12
27790 IF M=2 THEN U=MONT(M)+URY ELSE U=MONT(M)
27795 IF U<P THEN
27800 P=P-U
27805 ELSE
27810 IF U=P THEN M=M+1 :P=0
27815 U=P+1 :RETURN
27820 ENDIF
27825 NEXT M
27830 U=0
27835 RETURN
27840 '
27845 *SET_KGZ
27850 KGZ=0
27855 FOR A=PDF TO PDE
27860 B=KMAX(A) :D=0
27865 WHILE B>D
27870 C=KMI%(A,D)
27875 IF C<>GZT%(GTP,GC) THEN 27890
27880 IF GRF$<>"" THEN IF INSTR(KNE$(A,D),GRF$)=0 THEN 27890
27885 KGZ=KGZ+1
27890 D=D+1
27895 WEND
27900 NEXT A
27905 RETURN
27910 '
27915 *YL_DOWN3I
27920 KGCS=KGCS+1
27925 IF KGCS>KGZ THEN KGCS=KGZ
27930 GOSUB *BD_SUBP
27935 RETURN
27940 '
27945 *YL_UP3I
27950 KGCS=KGCS-1
27955 IF KGCS<1 THEN KGCS=1
27960 GOSUB *BD_SUBP
27965 RETURN
27970 '
27975 *XL_RIGHT3I
27980 L=INT((MPYE-71)/18)+1
27985 KGCS=KGCS+L
27990 IF KGCS>KGZ THEN KGCS=KGCS-L
27995 GOSUB *BD_SUBP
28000 RETURN
28005 '
28010 *XL_LEFT3I
28015 L=INT((MPYE-71)/18)+1
28020 KGCS=KGCS-L
28025 IF KGCS<1 THEN KGCS=1
28030 GOSUB *BD_SUBP
28035 RETURN
28040 '
28045 *CASOL_P3I
28050 A=KGZ :B=KGCS
28055 GOSUB *CASOL_PX1
28060 RETURN
28065 '
28070 *CASOL_P3IB
28075 IF KGZ<1 THEN C=1 ELSE C=KGZ
28080 A=MPXE-80 :B=((MPXE-80)/C)*(KGCS-1)
28085 GOSUB *CASOL_PX2
28090 RETURN
28095 '
28100 *CSL_S3I
28105 IF KGZ=0 THEN GOSUB *RET_W :RETURN
28110 A=KGZ
28115 GOSUB *カーソル_SET1
28120 KGCS=P
28125 GOSUB *BD_SUBP
28130 RETURN
28135 '
28140 *CSL_D3I
28145 IF KGZ=0 THEN GOSUB *RET_W :RETURN
28150 A=KGZ
28155 GOSUB *カーソル_SET2
28160 KGCS=P
28165 GOSUB *BD_SUBP
28170 RETURN
28175 '
28180 *BSCR_P3I
28185 IF MUX>MPXL+6*8+5 AND MUX<MPXL+14*8+5 AND MUY>MPYL+22 AND MUY<MPYL+40 AND KGC_SW=1 THEN GRF$="" :KGCS=KGCS_S :KGC_SW=0 :GOTO 28225
28190 IF KGC_SW=1 THEN 28230
28195 YL=INT((MUY-MPYL-55)/18)
28200 P=YL+KGCS
28205 IF YL<0 THEN *LINE_EXE3I
28210 IF P>KGZ THEN 28230
28215 GOSUB *SET_GRF :GOSUB *DRAG_SET :IF A=0 THEN 28230
28220 KGC_SW=1 :KGCS_S=KGCS :KGCS=1
28225 GOSUB *SET_KGZ :GOSUB *BD_12P
28230 WHILE MOUSE(2,0)=-1 :WEND
28235 WHILE MOUSE(2,1)=-1 :WEND
28240 MOUSE 5
28245 RETURN
28250 '
28255 *LINE_EXE3I
28260 GOSUB *LINE_EXEP
28265 IF CAR_END=1 THEN GSX=VAL(MX$)
28270 GOSUB *BOLD_P2
28275 RETURN
28280 '
28285 *SET_GRF
28290 F=0 :P=P-1
28295 FOR A=PDF TO PDE
28300 B=KMAX(A) :D=0
28305 WHILE B>D
28310 C=KMI%(A,D)
28315 IF C<>GZT%(GTP,GC) THEN 28335
28320 IF P>F THEN 28330
28325 GRF$=KNE$(A,D) :RETURN
28330 F=F+1
28335 D=D+1
28340 WEND
28345 NEXT A
28350 RETURN
28355 '
28360 *DRAG_SET
28365 A=LEN(GRF$) :IF A=0 THEN RETURN
28370 XP=INT((MUX-MPXL-6*8-5)/8)
28375 IF XP<0 OR XP>A THEN RETURN
28380 X1=MPXL+(XP+6)*8+5 :Y1=MPYL+YL*18+55 :X2=X1 :Y2=Y1+16 :B=MOUSE(9)
28385 LINE (MPXL+6*8+5,Y1)-STEP(A*8,16),PSET,%BCL(10),BF
28390 SYMBOL(MPXL+6*8+5,Y1),GRF$,1,1,%BCL(0)
28395 WHILE MOUSE(2,0)=-1
28400 IF MOUSE(2,1)=-1 THEN A=0 :RETURN
28405 IF MOUSE(9)=0 THEN 28425
28410 LINE (X1,Y1)-(X2,Y2),XOR,%BCL(2),BF
28415 X2=MOUSE(0)
28420 LINE (X1,Y1)-(X2,Y2),XOR,%BCL(2),BF
28425 WEND
28430 X=INT((X2-MPXL-6*8-5)/8)
28435 IF X=XP THEN RETURN
28440 IF X<0 THEN GRF$=LEFT$(GRF$,XP+1) :RETURN
28445 IF X>A THEN GRF$=MID$(GRF$,XP+1) :RETURN
28450 IF XP>X THEN SWAP XP,X
28455 P=X-XP+1
28460 GRF$=MID$(GRF$,XP+1,P)
28465 RETURN
28470 '-------------------------------------------------------------------
28475 *KMG_COL
28480 X1=MPXL :Y1=MPYL :X2=MPXF :Y2=MPYF
28485 A=9 :GOSUB *SWAP_XY
28490 MPXL=PXL%(11):MPYL=PYL%(11) :MPXE=PXE%(11) :MPYE=PYE%(11)
28495 GOSUB *OPEN_P2
28500 BCL(1)=BCL(18) :BCL(9)=BCL(19) :KGPS=1
28505 KGPC=GZT%(GTP,GC)+29 :KGPZ=BCL(KGPC)
28510 REW_X=PXE%(11) :REW_Y=PYE%(11) :BDP=13 :BPQ=0 :MUX_S=MUX :MUY_S=MUY
28515 GOSUB *BOLD_P
28520 GOSUB *SET_XYD
28525 GOSUB *SEL_MXY
28530 IF ER=1 THEN 28550
28535 ON JP GOSUB *RET_P,*REW_P,*DRAG_A,*YL_DOWN3C,*YL_UP3C,*XL_RIGHT3C, *XL_LEFT3C,*DRAG_B,*BSCR_P3C,*CSL_S3C,*CSL_D3C,*RET_W
28540 IF JP<>1 THEN 28525
28545 NEXP=NEXP+1
28550 GOSUB *CLOSE_P2
28555 PXL%(11)=MPXL :PYL%(11)=MPYL :PXE%(11)=MPXE :PYE%(11)=MPYE
28560 A=9 :GOSUB *SWAP_XY :MUX=MUX_S :MUY=MUY_S
28565 GOSUB *SET_XYD :GOSUB *SCR_BACK
28570 IF KGPZ<>BCL(KGPC) THEN GOSUB *BCL_SAVE
28575 JP=9 :REW_X=PXE%(2) :REW_Y=PYE%(2)
28580 RETURN
28585 '
28590 *BD_13P
28595 FILS$="["+LEFT$(KOM$(GZT%(GTP,GC)),KOML)+"] 色設定"
28600 WINDOW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17) : VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
28605 LINE (MPXL+10,MPYL+20)-STEP(20,15),PSET,%BCL(0),BF,%BCL(KGPC)
28610 SYMBOL(MPXL+40,MPYL+20),"設定色(No"+STR$(BCL(KGPC))+")",1,1,%BCL(0)
28615 XL=MPXL+5 :YL=MPYL+40 :L=INT((MPXE-25)/15)+1 :B=1
28620 FOR A=KGPS TO 256
28625 LINE(XL,YL)-STEP(15,10),PSET,%(A-1),BF
28630 XL=XL+15 :B=B+1
28635 IF B>L THEN YL=YL+10 :XL=MPXL+5 :B=1
28640 IF YL>MPYF-16 THEN 28650
28645 NEXT A
28650 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
28655 GOSUB *CASOL_P3C :GOSUB *CASOL_P3CB
28660 RETURN
28665 '
28670 *YL_DOWN3C
28675 KGPS=KGPS+1
28680 IF KGPS>255 THEN KGPS=255
28685 GOSUB *BD_SUBP
28690 RETURN
28695 '
28700 *YL_UP3C
28705 KGPS=KGPS-1
28710 IF KGPS<1 THEN KGPS=1
28715 GOSUB *BD_SUBP
28720 RETURN
28725 '
28730 *XL_RIGHT3C
28735 KGPS=KGPS+L
28740 IF KGPS>255 THEN KGPS=KGPS-L
28745 GOSUB *BD_SUBP
28750 RETURN
28755 '
28760 *XL_LEFT3C
28765 KGPS=KGPS-L
28770 IF KGPS<1 THEN KGPS=1
28775 GOSUB *BD_SUBP
28780 RETURN
28785 '
28790 *CASOL_P3C
28795 A=255 :B=KGPS
28800 GOSUB *CASOL_PX1
28805 RETURN
28810 '
28815 *CASOL_P3CB
28820 A=MPXE-80 :B=((MPXE-80)/255)*(KGPS-1)
28825 GOSUB *CASOL_PX2
28830 RETURN
28835 '
28840 *CSL_S3C
28845 A=255
28850 GOSUB *カーソル_SET1
28855 KGPS=P
28860 GOSUB *BD_SUBP
28865 RETURN
28870 '
28875 *CSL_D3C
28880 A=255
28885 GOSUB *カーソル_SET2
28890 KGPS=P
28895 GOSUB *BD_SUBP
28900 RETURN
28905 '
28910 *BSCR_P3C
28915 XL=INT((MUX-MPXL-5)/15)
28920 YL=INT((MUY-MPYL-40)/10)
28925 XP=YL*L+XL+KGPS-1
28930 IF XP<0 OR XP>255 THEN 28945
28935 BCL(KGPC)=XP
28940 MOUSE 1,,,0 :GOSUB *BD_13P
28945 WHILE MOUSE(2,0)=-1 :WEND
28950 RETURN
28955 '
28960 *BCL_LOAD
28965 ON ERROR GOTO *ERR_P13L
28970 OPEN "I",#1,FIL$(12)
28975 FOR A=30 TO 80
28980 INPUT #1,BCL(A)
28985 IF EOF(1)=-1 THEN *LBCL_RET
28990 NEXT A
28995 *LBCL_RET
29000 CLOSE #1
29005 ON ERROR GOTO 0
29010 RETURN
29015 '
29020 *ERR_P13L
29025 IF ERR<>63 THEN *ERR_MESE
29030 GOSUB *SET_BCL2
29035 RESUME *LBCL_RET
29040 '
29045 *BCL_SAVE
29050 ON ERROR GOTO *ERR_P13S
29055 OPEN "O",#1,FIL$(12)
29060 FOR A=30 TO 80
29065 PRINT #1,BCL(A)
29070 NEXT A
29075 *SBCL_RET
29080 CLOSE #1
29085 ON ERROR GOTO 0
29090 RETURN
29095 '
29100 *ERR_P13S
29105 IF ERR<>64 THEN *ERR_MESE
29110 KILL FIL$(12)
29115 RESUME
29120 '
29125 *SET_BCL2
29130 RESTORE *BCL_DAT2
29135 FOR A=30 TO 80
29140 READ BCL(A)
29145 NEXT A
29150 RETURN
29155 '
29160 '-------------------------------------------------------------------
29165 *NOTO_R
29170 A=NP(NEXP) :GOSUB *SWAP_XY
29175 MPXL=PXL%(4) :MPYL=PYL%(4) :MPXE=PXE%(4) :MPYE=PYE%(4)
29180 A=4 :GOSUB *OPEN_P
29185 *NOTO_R2
29190 BDP=5 :BPQ=0 :WKST=1 :REF_SW=0 :RVX=0
29195 GOSUB *SEL_WAKP
29200 IF JPQ=1 THEN GOTO *NEX_P
29205 RETURN
29210 '
29215 *BD_5P
29220 FILS$="家計簿 [検索]"
29225 WINDOW (MPXL+RVX+1,MPYL+17)-(MPXF+RVX-17,MPYF-17)
29230 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
29235 GOSUB *BD5_LINE
29240 IF RMAX=0 THEN 29310
29245 XL=MPXL+5 :YL=MPYL+55 :E=RKML+12
29250 FOR A=CSP5-1 TO RMAX-1
29255 SYMBOL(XL+(3-LEN(STR$(A+1)))*8,YL),STR$(A+1),1,1,%BCL(0)
29260 IF RFP_SW<2 THEN
29265 P=3*8 :PL=0
29270 CL1=RJK(A,0) :GOSUB *PUT_RJK
29275 GOSUB *RFX_PUT
29280 ELSE
29285 GOSUB *RFD_PUT
29290 ENDIF
29295 YL=YL+18
29300 IF YL>MPYF-52 THEN 29310
29305 NEXT A
29310 LINE (XL-4,MPYF-34)-STEP((RKML+RSX+33)*8+5,17),PSET,%BCL(4),BF
29315 IF RFP_SW=1 THEN CL=BCL(8) ELSE CL=BCL(0)
29320 SYMBOL(XL+5 ,MPYF-33),"[条件設定]",1,1,%CL
29325 IF RFP_SW<2 THEN SYMBOL(XL+105,MPYF-33),"[検索実行]",1,1,%BCL(0)
29330 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
29335 GOSUB *CASOL_P5 :GOSUB *CASOL_P5B
29340 RETURN
29345 '
29350 *BD5_LINE
29355 IF RSX=0 THEN RSX=20
29360 IF RKML=0 THEN RKML=20
29365 XL=MPXL+5 :YL=MPYL+50
29370 SYMBOL(XL+12*8,YL-10),STR$(RKML),.7!,.7!,%BCL(0)
29375 SYMBOL(XL+(RKML+12)*8,YL-10),STR$(RSX),.7!,.7!,%BCL(0)
29380 LINE (XL,YL-5)-STEP(0,7),PSET,%BCL(0)
29385 LINE (XL+(RKML+RSX+33)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
29390 SYMBOL(XL,YL-28),"No.",1,1,%BCL(0)
29395 LINE (XL+3*8,YL-5)-STEP(0,7),PSET,%BCL(0)
29400 LINE (XL,YL )-STEP((RKML+RSX+33)*8,0),PSET,%BCL(0)
29405 SYMBOL(XL+3*8,YL-28),"[月日]",1,1,%BCL(0)
29410 LINE (XL+11*8,YL-5)-STEP(0,7),PSET,%BCL(0)
29415 SYMBOL(XL+11*8,YL-28),"[項 目]",1,1,%BCL(0)
29420 LINE (XL+(RKML+12)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
29425 SYMBOL(XL+(RKML+12)*8,YL-28),"[名 称]",1,1,%BCL(0)
29430 LINE (XL+(RKML+RSX+13)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
29435 SYMBOL(XL+(RKML+RSX+13)*8,YL-28),"[金 額]",1,1,%BCL(0)
29440 LINE (XL+(RKML+RSX+26)*8,YL-5)-STEP(0,7),PSET,%BCL(0)
29445 SYMBOL(XL+(RKML+RSX+26)*8,YL-28),"[数量]",1,1,%BCL(0)
29450 RETURN
29455 '
29460 *RFD_PUT
29465 PDR=RFD(A) :PA=RFP(A) :P=PDR :GOSUB *SET_MDX
29470 A$=RIGHT$(STR$(M),2)+"/"+RIGHT$(STR$(U),2)
29475 P=10 :PL=4*8 :CL=BCL(0) :GOSUB *PUT_DAT
29480 A$=KOM$(KMI%(PDR,PA)) :P=RKML+11 :PL=11*8 :GOSUB *PUT_DAT
29485 A$=KNE$(PDR,PA) :P=RSX+RKML+11 :PL=(RKML+12)*8 :GOSUB *PUT_DAT
29490 T=KMT%(KMI%(PDR,PA))
29495 IF (T MOD 2)=0 THEN CL=BCL(0) ELSE CL=BCL(10)
29500 TA&=KIN&(PDR,PA) :TB=ABS(KSU%(PDR,PA))
29505 A$=STR$(TA&) :P=RKML+RSX+25 :'金額
29510 PL=(RKML+RSX+13)*8 :GOSUB *CONMA_P
29515 GOSUB *PUT_DAT
29520 CL=BCL(0) :'数
29525 A$=STR$(TB) :P=RKML+RSX+33
29530 PL=(RKML+RSX+26)*8 :GOSUB *CONMA_P
29535 GOSUB *PUT_DAT
29540 RETURN
29545 '
29550 *RFX_PUT
29555 CL=BCL(0)
29560 IF RFZ(A,0)>0 THEN
29565 P=RFZ(A,0)-1 :GOSUB *SET_MDX
29570 A$=RIGHT$(STR$(M),2)+"/"+RIGHT$(STR$(U),2)
29575 ELSE
29580 GOTO 29600
29585 ENDIF
29590 P=10 :PL=4*8 :GOSUB *PUT_DAT
29595 P=6*8 :PL=4*8 :CL1=RJK(A,1) :GOSUB *PUT_RJK
29600 A$=KOM$(RFZ(A,1)) :P=RKML+11 :PL=11*8 :GOSUB *PUT_DAT
29605 P=RKML*8 :PL=11*8 :CL1=RJK(A,2) :GOSUB *PUT_RJK
29610 A$=RFN$(A):P=RSX+RKML+11 :PL=(RKML+12)*8 :GOSUB *PUT_DAT
29615 P=RSX*8 :PL=(RKML+12)*8 :CL1=RJK(A,3) :GOSUB *PUT_RJK
29620 T=KMT%(RFZ(A,1))
29625 IF (T MOD 2)=0 THEN CL=BCL(0) ELSE CL=BCL(10)
29630 TA&=RFK&(A) :TB=ABS(RFS%(A))
29635 IF TA&=0 THEN 29665
29640 A$=STR$(TA&) :P=RKML+RSX+25 :'金額
29645 PL=(RKML+RSX+13)*8 :GOSUB *CONMA_P
29650 GOSUB *PUT_DAT
29655 P=12*8 :PL=(RKML+RSX+13)*8
29660 CL1=RJK(A,4) :GOSUB *PUT_RJK
29665 IF TB=0 THEN 29700
29670 CL=BCL(0) :'数
29675 A$=STR$(TB) :P=RKML+RSX+33
29680 PL=(RKML+RSX+26)*8 :GOSUB *CONMA_P
29685 GOSUB *PUT_DAT
29690 P=7*8 :PL=(RKML+RSX+26)*8
29695 CL1=RJK(A,5) :GOSUB *PUT_RJK
29700 RETURN
29705 '
29710 *PUT_RJK
29715 IF CL1=1 THEN RETURN
29720 LINE (XL+PL,YL)-STEP(P,16),XOR,%BCL(CL1+18),BF
29725 RETURN
29730 '
29735 *YL_DOWN5
29740 CSP5=CSP5+1
29745 IF CSP5>RMAX THEN CSP5=RMAX
29750 GOSUB *BD_SUBP
29755 RETURN
29760 '
29765 *YL_UP5
29770 CSP5=CSP5-1
29775 IF CSP5<1 THEN CSP5=1
29780 GOSUB *BD_SUBP
29785 RETURN
29790 '
29795 *XL_LEFT5
29800 RVX=RVX-250
29805 IF RVX<0 THEN RVX=0
29810 GOSUB *BD_SUBP
29815 RETURN
29820 '
29825 *XL_RIGHT5
29830 RVX=RVX+250
29835 GOSUB *BD_SUBP
29840 RETURN
29845 '
29850 *CASOL_P5
29855 A=RMAX :B=CSP5
29860 GOSUB *CASOL_PX1
29865 RETURN
29870 '
29875 *CASOL_P5B
29880 A=640 :B=RVX
29885 GOSUB *CASOL_PX2
29890 RETURN
29895 '
29900 *CSL_S5
29905 IF RMAX=0 THEN GOSUB *RET_W :RETURN
29910 A=RMAX
29915 GOSUB *カーソル_SET1
29920 CSP5=P
29925 GOSUB *BD_SUBP
29930 RETURN
29935 '
29940 *BSCR_P5
29945 VXP=RVX :INTERVAL ON
29950 *BSCR_P5B
29955 CRB=BCL(5) :TIMX$="" :GOSUB *CLOCK_P
29960 IF MUX>MPXL+(RKML+RSX+33)*8+5-RVX THEN 30125
29965 YL=INT((MUY-MPYL-55)/18)
29970 IF MUY>MPYF-36 THEN
29975 IF RFP_SW<2 THEN
29980 IF MUX>MPXL+10-RVX AND MUX<MPXL+90-RVX THEN IF RFP_SW=0 THEN RFP_SW=1 ELSE RFP_SW=0
29985 IF MUX>MPXL+110-RVX AND MUX<MPXL+190-RVX THEN
29990 GOSUB *REF_P
29995 IF RZMX>0 THEN RFP_SW=2
30000 ENDIF
30005 MOUSE 1,,,0 :GOSUB *BD_5P
30010 ENDIF
30015 IF RFP_SW=2 THEN
30020 IF MUX>MPXL+10-RVX AND MUX<MPXL+90-RVX THEN RFP_SW=0 :RMAX=RMAXS :CSP5=CSP5S
30025 MOUSE 1,,,0 :GOSUB *BD_5P
30030 ENDIF
30035 GOTO 30125
30040 ENDIF
30045 IF YL<0 THEN
30050 IF MUY>MPYL+40 AND MUY<MPYL+50 THEN
30055 IF MUX>MPXL+11*8-RVX AND MUX<MPXL+(RKML+RSX+13)*8-RVX THEN *LINE_EXE5
30060 ENDIF
30065 GOTO 30125
30070 ENDIF
30075 RFXP=YL+CSP5
30080 IF RFXP>RMAX THEN
30085 IF RFP_SW=0 THEN *RFZ_INPUT
30090 GOTO 30125
30095 ENDIF
30100 IF RFXP>0 THEN
30105 IF RFP_SW=0 THEN *RFZ_EXE
30110 IF RFP_SW=1 THEN *RFJ_EXE
30115 IF RFP_SW=2 THEN GOSUB *RFD_GET
30120 ENDIF
30125 WHILE MOUSE(2,0)=-1 :WEND
30130 RETURN
30135 '
30140 *LINE_EXE5
30145 IF MUX>MPXL+11*8-RVX AND MUX<MPXL+(RKML+12)*8-RV THEN G=1
30150 IF MUX>MPXL+(RKML+12)*8-RVX AND MUX<MPXL+(RKML+RSX+13)*8-RVX THEN G=2
30155 GOSUB *LINE_EXEP
30160 IF CAR_END=1 THEN
30165 IF G=1 THEN RKML=VAL(MX$)
30170 IF G=2 THEN RSX =VAL(MX$)
30175 ENDIF
30180 GOSUB *SCR_BACK
30185 RETURN
30190 '
30195 *RFZ_EXE
30200 WHILE MOUSE(2,0)=-1 :WEND
30205 GOSUB *CRD_SET5 :IF ER=1 THEN ER=0 :GOTO 30350
30210 GOSUB *CRP_SET5 :XLP=LEN(MX$)
30215 GOSUB *KEY_CR
30220 IF KPS=3 THEN
30225 INTERVAL OFF
30230 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
30235 MOUSE 5
30240 GOSUB *KMD_IP :JP=9
30245 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
30250 IF ER=0 THEN INK_END=0 :CAR_END=1 ELSE 30355
30255 ELSE
30260 EXE_SW=1
30265 GOSUB *INKEY_P
30270 EXE_SW=0
30275 IF RCLICK>0 THEN CRB=BCL(10) :GOSUB *KEY_CR : GOSUB *KILL_P5 :GOTO 30355
30280 IF LCLICK>0 THEN
30285 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
30290 IF KPS=4 THEN GOSUB *GET_CORD5 : IF GET_ON=0 THEN *BSCR_P5B
30295 IF KPS>4 THEN GOSUB *CALK_BOD : IF GET_ON=0 THEN *BSCR_P5B
30300 ENDIF
30305 ENDIF
30310 IF INK_END=0 THEN
30315 GOSUB *KMX_SET5 :GOSUB *KEY_CR
30320 IF CAR_END=1 THEN GOSUB *CRD_NSET5
30325 GOSUB *BOLD_BACK
30330 GOTO *BSCR_P5B
30335 ELSE
30340 WHILE MOUSE(2,0)=-1 :WEND
30345 ENDIF
30350 MOUSE 5
30355 RVX=VXP :GOSUB *SCR_BACK
30360 RETURN
30365 '
30370 *RFZ_INPUT
30375 RFXP=RMAX+1 :IF RMAX>=RJZ THEN GOSUB *FLL_KMN :GOTO 30540
30380 RFZ(RFXP-1,0)=0 :RFZ(RFXP-1,1)=0 :RFN$(RFXP-1)=""
30385 RFK&(RFXP-1)=0 :RFS%(RFXP-1)=0
30390 FOR A=0 TO 5 :RJK(RFXP-1,A)=0 :NEXT A
30395 GOSUB *CRD_SET5 :IF ER=1 THEN ER=0 :GOTO 30535
30400 MX$="" :GOSUB *KEY_CR
30405 WHILE MOUSE(2,0)=-1 :WEND
30410 IF KPS=3 THEN
30415 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
30420 INTERVAL OFF :MOUSE 5
30425 GOSUB *KMD_IP :JP=9
30430 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
30435 IF ER=0 THEN INK_END=0 :CAR_END=1 ELSE 30540
30440 ELSE
30445 EXE_SW=1
30450 GOSUB *INKEY_P
30455 EXE_SW=0
30460 IF LCLICK>0 THEN
30465 CRB=BCL(10) :GOSUB *KEY_CR :CRB=BCL(5)
30470 IF KPS=4 THEN GOSUB *GET_CORD5 : IF GET_ON=0 THEN *BSCR_P5B
30475 IF KPS>4 THEN GOSUB *CALK_BOD : IF GET_ON=0 THEN *BSCR_P5B
30480 ENDIF
30485 ENDIF
30490 IF INK_END=0 THEN
30495 RMAX=RMAX+1 :RFXP=RMAX
30500 GOSUB *KMX_SET5 :GOSUB *KEY_CR
30505 IF CAR_END=1 THEN GOSUB *CRD_NSET5
30510 GOSUB *BOLD_BACK
30515 GOTO *BSCR_P5B
30520 ELSE
30525 WHILE MOUSE(2,0)=-1 :WEND
30530 ENDIF
30535 MOUSE 5
30540 RVX=VXP :GOSUB *SCR_BACK
30545 RETURN
30550 '
30555 *CRD_SET5
30560 P=INT((MUX-MPXL-5+RVX)/8) :A=RKML+RSX
30565 IF P<0 OR P>(RKML+RSX+33) THEN ER=1 :RETURN
30570 IF P>=0 AND P<4 THEN CRXF=MPXL :CRXE=CRXF+4*8 : CRLEN=5 :KPS=1
30575 IF P>=4 AND P<11 THEN CRXF=MPXL+3*8 :CRXE=CRXF+7*8 : CRLEN=8 :KPS=2
30580 IF P>=11 AND P<(RKML+11) THEN CRXF=MPXL+11*8 : CRXE=CRXF+RKML*8 :CRLEN=RKML+1 :KPS=3
30585 IF P>=(RKML+11) AND P<(A+12) THEN CRXF=MPXL+(RKML+12)*8 : CRXE=CRXF+RSX*8 :CRLEN=RSX+1 :KPS=4
30590 IF P>=(A+12) AND P<(A+25) THEN CRXF=MPXL+(A+13)*8 : CRXE=CRXF+13*8 :CRLEN=14 :KPS=5
30595 IF P>=(A+25) AND P<(A+32) THEN CRXF=MPXL+(A+26)*8 : CRXE=CRXF+7*8 :CRLEN=8 :KPS=6
30600 CRXF=CRXF+5-RVX :CRXE=CRXE+5-RVX
30605 CRYF=MPYL+55+(RFXP-CSP5)*18 :CRYE=CRYF+18
30610 IF CRYF>MPYF-32 THEN CSP5=CSP5+1 :GOSUB *BD_5P :GOTO 30605
30615 XLP=0 :CAR_END=0 :ER=0
30620 RETURN
30625 '
30630 *CRP_SET5
30635 MX$=""
30640 IF KPS=1 THEN MX$=STR$(RFXP)
30645 IF KPS=2 THEN
30650 P=RFZ(RFXP-1,0)-1
30655 IF P<0 THEN MX$="" :RETURN
30660 GOSUB *SET_MDX
30665 MX$=RIGHT$(STR$(M),2)+"/"+RIGHT$(STR$(U),2)
30670 ENDIF
30675 IF KPS=3 THEN MX$=KOM$(RFZ(RFXP-1,1))
30680 IF KPS=4 THEN MX$=RFN$(RFXP-1)
30685 IF KPS=5 THEN MX$=STR$(RFK&(RFXP-1))
30690 IF KPS=6 THEN MX$=STR$(ABS(RFS%(RFXP-1)))
30695 RETURN
30700 '
30705 *KMX_SET5
30710 IF KPS=2 THEN GOSUB *RSET_MDX
30715 IF KPS=3 THEN IF KPJ>=0 THEN RFZ(RFXP-1,1)=KPJ
30720 IF KPS=4 THEN RFN$(RFXP-1)=MX$
30725 IF KPS=5 THEN RFK&(RFXP-1)=VAL(MX$)
30730 IF KPS=6 THEN RFS%(RFXP-1)=VAL(MX$)
30735 IF RJK(RFXP-1,KPS-1)=0 THEN RJK(RFXP-1,KPS-1)=1
30740 IF RJK(RFXP-1,0)=0 THEN RJK(RFXP-1,0)=6
30745 RETURN
30750 '
30755 *CRD_NSET5
30760 IF KPS=1 THEN BLEN=4*8 :MUX=MPXL+5+BLEN :NLEN=7
30765 IF KPS=2 THEN BLEN=11*8 :MUX=MPXL+5+BLEN :NLEN=RKML+1
30770 IF KPS=3 THEN BLEN=(RKML+12)*8 :MUX=MPXL+BLEN+5 :NLEN=RSX+1
30775 IF KPS=4 THEN BLEN=(RKML+RSX+13)*8 :MUX=MPXL+BLEN+5 :NLEN=13
30780 IF KPS=5 THEN BLEN=(RKML+RSX+26)*8 :MUX=MPXL+BLEN+5 :NLEN=7
30785 IF KPS>5 THEN RVX=0 :MUX=MPXL+4*8+5 :MUY=CRYF+20 :NLEN=7
30790 IF MUX>MPXF-16-NLEN*8+RVX THEN RVX=RVX+NLEN*8
30795 IF MUX<MPXL+5 THEN MUX=MPXL+20
30800 IF MUY>MPYF-32 THEN CSP5=CSP5+1 :MUY=MUY-20
30805 MUX=MUX-RVX
30810 RETURN
30815 '
30820 *GET_CORD5
30825 INTERVAL OFF :MOUSE 5
30830 REF_SW=1 :CRXF_S=CRXF :CRYF_S=CRYF :GET_ON=0
30835 A=NP(NEXP-1) :GOSUB *SWAP_XY :MUX_Q=MUX :MUY_Q=MUY
30840 GOSUB *CORD_P
30845 A=NP(NEXP-1) :GOSUB *SWAP_XY
30850 GOSUB *SCR_BACK
30855 GOSUB *SET_XYD
30860 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
30865 REW_X=PXE%(4) :REW_Y=PYE%(4) :JP=9
30870 IF GET_ON=1 THEN
30875 MX$=CODN$
30880 RFK&(RFXP-1)=CODX
30885 IF RJK(RFXP-1,4)=0 THEN RJK(RFXP-1,4)=1
30890 ENDIF
30895 INK_END=0 :CAR_END=1 :REF_SW=0
30900 CRXF=CRXF_S :CRYF=CRYF_S :MUX=MUX_Q :MUY=MUY_Q
30905 MOUSE 0 :MOUSE 1,MUX,MUY,1
30910 WHILE MOUSE(2,0)=-1 :WEND
30915 RETURN
30920 '
30925 *RSET_MDX
30930 A=INSTR(MX$,"/")
30935 IF A=0 THEN RETURN
30940 M=VAL(LEFT$(MX$,A-1)) :IF M=0 THEN RFZ(RFXP-1,0)=0 :RETURN
30945 D=VAL(MID$(MX$,A+1)) :IF D=0 THEN RFZ(RFXP-1,0)=0 :RETURN
30950 PDXS=PDX
30955 GOSUB *PDX_SET
30960 RFZ(RFXP-1,0)=PDX+1
30965 PDX=PDXS
30970 RETURN
30975 '
30980 *RFJ_EXE
30985 WHILE MOUSE(2,0)=-1 :WEND
30990 GOSUB *CRD_SET5 :IF ER=1 THEN ER=0 :GOTO 31060
30995 GOSUB *CRP_SET5 :XLP=LEN(MX$) :CRB=BCL(10)
31000 GOSUB *KEY_CR
31005 INTERVAL OFF :KPJ=RJK(RFXP-1,KPS-1)
31010 GOSUB *KMJ_IP :JP=9
31015 INTERVAL ON :TIMX$="" :GOSUB *CLOCK_P
31020 IF ER=0 THEN INK_END=0 :CAR_END=1 ELSE 31065
31025 '
31030 IF INK_END=0 THEN
31035 RJK(RFXP-1,KPS-1)=KPJ :GOSUB *KEY_CR
31040 IF CAR_END=1 THEN GOSUB *CRD_NSET5
31045 GOSUB *BOLD_BACK
31050 GOTO *BSCR_P5B
31055 ENDIF
31060 MOUSE 5
31065 RVX=VXP :GOSUB *SCR_BACK
31070 RETURN
31075 '
31080 *KILL_P5
31085 IF RFXP>=RMAX THEN 31130
31090 FOR A=RFXP-1 TO RMAX-2
31095 SWAP RJK(A,0),RJK(A+1,0)
31100 SWAP RJK(A,1),RJK(A+1,1) :SWAP RFZ(A,0),RFZ(A+1,0)
31105 SWAP RJK(A,2),RJK(A+1,2) :SWAP RFZ(A,1),RFZ(A+1,1)
31110 SWAP RJK(A,3),RJK(A+1,3) :SWAP RFN$(A) ,RFN$(A+1)
31115 SWAP RJK(A,4),RJK(A+1,4) :SWAP RFK&(A) ,RFK&(A+1)
31120 SWAP RJK(A,5),RJK(A+1,5) :SWAP RFS%(A) ,RFS%(A+1)
31125 NEXT A
31130 IF RMAX>0 THEN RMAX=RMAX-1
31135 RETURN
31140 '
31145 *REF_P
31150 IF RMAX=0 THEN RETURN
31155 RZMX=0
31160 FOR A=0 TO 365
31165 RZMX=RZMX+KMAX(A)
31170 NEXT A
31175 IF RZMX=0 THEN RETURN
31180 ERASE RFD ,RFP
31185 DIM RFD(RZMX),RFP(RZMX)
31190 RMAXS=RMAX :RMAX=0 :CSP5S=CSP5 :CSP5=1 :PDXS=PDX
31195 D=0 :E=365
31200 FOR A=D TO E
31205 X=KMAX(A)
31210 IF X>0 THEN
31215 FOR B=0 TO X-1
31220 FOR C=1 TO RMAXS
31225 IF RFZ(C-1,0)-1>A THEN IF RJK(C-1,1)=1 OR RJK(C-1,1)=3 THEN D=RFZ(C-1,0)-1 :GOTO 31200
31230 IF RFZ(C-1,0)>0 THEN T=0 :GOSUB *CMP_P1 : IF CMP=0 THEN *NEXT_C
31235 IF RFZ(C-1,1)>0 THEN T=0 :GOSUB *CMP_P2 : IF CMP=0 THEN *NEXT_C
31240 IF RFN$(C-1)<>"" THEN T=1 :GOSUB *CMP_P3 : IF CMP=0 THEN *NEXT_C
31245 IF RFK&(C-1)<>0 THEN T=0 :GOSUB *CMP_P4 : IF CMP=0 THEN *NEXT_C
31250 IF RFS%(C-1)>0 THEN T=0 :GOSUB *CMP_P5 : IF CMP=0 THEN *NEXT_C
31255 IF RJK(C-1,0)=6 AND CMP=1 THEN GOSUB *COMP_X : GOTO *NEXT_B
31260 *NEXT_C
31265 IF RJK(C-1,0)=7 AND CMP=0 THEN *NEXT_B
31270 NEXT C
31275 *NEXT_B
31280 NEXT B
31285 ENDIF
31290 NEXT A
31295 RETURN
31300 '
31305 *CMP_P1
31310 A$=STR$(RFZ(C-1,0)-1) :B$=STR$(A) :F=RJK(C-1,1)
31315 GOSUB *COMP1
31320 RETURN
31325 '
31330 *CMP_P2
31335 A$=STR$(RFZ(C-1,1)) :B$=STR$(KMI%(A,B)) :F=RJK(C-1,2)
31340 GOSUB *COMP1
31345 RETURN
31350 '
31355 *CMP_P3
31360 A$=RFN$(C-1) :B$=KNE$(A,B) :F=RJK(C-1,3)
31365 GOSUB *COMP1
31370 RETURN
31375 '
31380 *CMP_P4
31385 A$=STR$(RFK&(C-1)) :B$=STR$(KIN&(A,B)) :F=RJK(C-1,4)
31390 GOSUB *COMP1
31395 RETURN
31400 '
31405 *CMP_P5
31410 A$=STR$(RFS%(C-1)) :B$=STR$(KSU%(A,B)) :F=RJK(C-1,5)
31415 GOSUB *COMP1
31420 RETURN
31425 '
31430 *COMP1
31435 CMP=0
31440 ON F GOSUB *COMP1A,*COMP2A,*COMP3A,*COMP4A,*COMP5A
31445 RETURN
31450 '
31455 *COMP1A
31460 IF T=0 THEN IF A$=B$ THEN CMP=1
31465 IF T=1 THEN IF INSTR(B$,A$)>0 THEN CMP=1
31470 RETURN
31475 '
31480 *COMP2A
31485 IF A$<>B$ THEN CMP=1
31490 RETURN
31495 '
31500 *COMP3A
31505 IF T=0 THEN IF VAL(A$)=<VAL(B$) THEN CMP=1
31510 IF T=1 THEN IF A$=<B$ THEN CMP=1
31515 RETURN
31520 '
31525 *COMP4A
31530 IF T=0 THEN IF VAL(A$)>=VAL(B$) THEN CMP=1
31535 IF T=1 THEN IF A$>=B$ THEN CMP=1
31540 RETURN
31545 '
31550 *COMP5A
31555 IF T=0 THEN IF VAL(A$)>VAL(B$) THEN CMP=1
31560 IF T=1 THEN IF A$>B$ THEN CMP=1
31565 RETURN
31570 '
31575 *COMP_X
31580 RFD(RMAX)=A :RFP(RMAX)=B
31585 RMAX=RMAX+1
31590 RETURN
31595 '
31600 *RFD_GET
31605 PDX=RFD(RFXP-1)
31610 P=PDX :GOSUB *SET_MDX
31615 RXM=M :RXD=U :CSP6=RFP(RFXP-1)+1
31620 MOUSE 1,,,0
31625 GOSUB *SCR_BACK
31630 MOUSE 1,,,1
31635 RETURN
31640 '
31645 '-------------------------------------------------------------------
31650 *KMJ_IP
31655 X1=MPXL :Y1=MPYL :X2=MPXF :Y2=MPYF
31660 A=9 :GOSUB *SWAP_XY
31665 MPXL=PXL%(12) :MPYL=PYL%(12) :MPXE=PXE%(12) :MPYE=PYE%(12)
31670 GOSUB *OPEN_P2
31675 BCL(1)=BCL(18) :BCL(9)=BCL(19) :GET_ON=0
31680 REW_X=PXE%(12) :REW_Y=PYE%(12) :BDP=14 :BPQ=0 :MUX_S=MUX :MUY_S=MUY
31685 GOSUB *BOLD_P
31690 GOSUB *SET_XYD
31695 GOSUB *SEL_MXY
31700 IF ER=1 THEN 31730
31705 IF VAL(K$)>0 AND VAL(K$)=<KOJ THEN P=VAL(K$) :KPJ=P : MX$=KOM$(P) :GOTO 31730
31710 IF JP=1 THEN ER=1
31715 ON JP GOSUB *RET_P,*REW_P,*DRAG_A,*YL_DOWN5J,*YL_UP5J,*XL_RIGHT5J, *XL_LEFT5J,*DRAG_B,*BSCR_P5J,*CSL_S5J,*RET_W,*RET_W
31720 IF JP<>1 THEN 31695
31725 NEXP=NEXP+1
31730 GOSUB *CLOSE_P2
31735 PXL%(12)=MPXL :PYL%(12)=MPYL :PXE%(12)=MPXE :PYE%(12)=MPYE
31740 A=9 :GOSUB *SWAP_XY :MUX=MUX_S :MUY=MUY_S
31745 GOSUB *SET_XYD
31750 MOUSE 0 :MOUSE 1,MUX,MUY,1 :INK_END=1
31755 RETURN
31760 '
31765 *BD_14P
31770 FILS$="[条件選択]"
31775 WINDOW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17)
31780 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(2),%BCL(0)
31785 XL=MPXL+25 :YL=MPYL+20
31790 FOR A=KMCJ TO KOJ
31795 SYMBOL(XL-(LEN(STR$(A))+1)*8,YL),STR$(A)+".",1,1,%BCL(0)
31800 IF KPJ=A THEN CL=BCL(8) ELSE CL=BCL(0)
31805 SYMBOL(XL,YL),JOK$(A-1),1,1,%CL
31810 YL=YL+18
31815 IF YL>MPYF-32 THEN 31825
31820 NEXT A
31825 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
31830 GOSUB *CASOL_P5J :GOSUB *CASOL_P5JB
31835 RETURN
31840 '
31845 *SET_JOK
31850 RESTORE *JOK_DAT
31855 READ KOJ
31860 FOR A=0 TO KOJ-1
31865 READ JOK$(A)
31870 NEXT A
31875 RETURN
31880 '
31885 *JOK_DAT
31890 DATA 7,一致,以外,以上,以下,未満,"と (or line)","で (and line)"
31895 '
31900 *YL_DOWN5J
31905 KMCJ=KMCJ+1
31910 IF KMCJ>KOJ THEN KMCJ=KOJ
31915 GOSUB *BD_SUBP
31920 RETURN
31925 '
31930 *YL_UP5J
31935 KMCJ=KMCJ-1
31940 IF KMCJ<1 THEN KMCJ=1
31945 GOSUB *BD_SUBP
31950 RETURN
31955 '
31960 *XL_RIGHT5J
31965 L=INT((MPYE-71)/18)+1
31970 KMCJ=KMCJ+L
31975 IF KMCJ>KOJ THEN KMCJ=KMCJ-L
31980 GOSUB *BD_SUBP
31985 RETURN
31990 '
31995 *XL_LEFT5J
32000 L=INT((MPYE-71)/18)+1
32005 KMCJ=KMCJ-L
32010 IF KMCJ<1 THEN KMCJ=1
32015 GOSUB *BD_SUBP
32020 RETURN
32025 '
32030 *CASOL_P5J
32035 A=KOJ :B=KMCJ
32040 GOSUB *CASOL_PX1
32045 RETURN
32050 '
32055 *CASOL_P5JB
32060 A=MPXE-80 :B=((MPXE-80)/KOJ)*(KMCJ-1)
32065 GOSUB *CASOL_PX2
32070 RETURN
32075 '
32080 *CSL_S5J
32085 IF KOJ=0 THEN GOSUB *RET_W :RETURN
32090 A=KOJ
32095 GOSUB *カーソル_SET1
32100 KMCJ=P
32105 GOSUB *BD_SUBP
32110 RETURN
32115 '
32120 *BSCR_P5J
32125 YL=INT((MUY-MPYL-20)/18)
32130 P=YL+KMCJ
32135 IF YL<0 THEN 32155
32140 IF P>KOJ THEN 32155
32145 KPJ=P :MX$=JOK$(P) :GET_ON=1
32150 JP=1 :NEXP=NEXP-1
32155 WHILE MOUSE(2,0)=-1 :WEND
32160 RETURN
32165 '
32170 '--------------------------------------------------------------------
32175 *ERR_MESE
32180 GOSUB *ERR_DSET :GOSUB *ERMD_SET
32185 IF ERP=1 THEN ERM$(2)=AKCNV$(STR$(ERL))+"行 "+AKCNV$(STR$(ERR))+ "番エラー" :ERC(2)=0 :ERMX=3
32190 GOSUB *MESSAGE_P
32195 IF ERP=1 THEN END
32200 IF MESJ=1 THEN RESUME
32205 ON ERROR GOTO 0
32210 IF ERL>=325 AND ERL=<350 THEN RESUME *MSL_EBAK2
32215 IF ERL>=470 AND ERL=<490 THEN ER=1 :RESUME *MSS_EBAK
32220 IF ERL>=865 AND ERL=<890 THEN RESUME *ENDL_RET
32225 IF ERL>=1040 AND ERL=<1065 THEN RESUME *ENDS_RET
32230 IF ERL>=5130 AND ERL=<5175 THEN RESUME *FNLOAD_RET
32235 IF ERL>=5250 AND ERL=<5270 THEN RESUME *FNSAVE_RET
32240 IF ERL>=5625 AND ERL=<5680 THEN RESUME *LERR_BACK
32245 IF ERL>=5775 AND ERL=<5830 THEN ER=1 :RESUME *SERR_BACK
32250 IF ERL>=5970 AND ERL=<5995 THEN RESUME *CLOAD_RET
32255 IF ERL>=6070 AND ERL=<6090 THEN RESUME *CSAVE_RET
32260 IF ERL>=8290 AND ERL=<8320 THEN RESUME *CLIN_RET
32265 IF ERL>=8395 AND ERL=<8420 THEN RESUME *CSNO_RET
32270 IF ERL>=10155 AND ERL=<10185 THEN RESUME *EDSV_RET
32275 IF ERL>=10290 AND ERL=<10375 THEN RESUME *EDSV_RET2
32280 IF ERL>=11140 AND ERL=<11165 THEN RESUME *KLOAD_RET
32285 IF ERL>=11240 AND ERL=<11260 THEN RESUME *KSAVE_RET
32290 IF ERL>=19040 AND ERL=<19070 THEN RESUME *BNLOAD_RET
32295 IF ERL>=19145 AND ERL=<19170 THEN RESUME *BNSAVE_RET
32300 IF ERL>=19255 AND ERL=<19295 THEN RESUME *BLOAD_RET
32305 IF ERL>=19385 AND ERL=<19420 THEN RESUME *BSAVE_RET
32310 IF ERL>=20170 AND ERL=<20210 THEN RESUME *TLOAD_RET
32315 IF ERL>=20300 AND ERL=<20335 THEN RESUME *TSAVE_RET
32320 IF ERL>=21605 AND ERL=<21620 THEN RESUME *MLOAD_RET
32325 IF ERL>=21705 AND ERL=<21730 THEN RESUME *MSAVE_RET
32330 IF ERL>=28970 AND ERL=<28985 THEN RESUME *LBCL_RET
32335 IF ERL>=29055 AND ERL=<29065 THEN RESUME *SBCL_RET
32340 END
32345 '
32350 *ERR_DSET
32355 IF ERR=63 THEN RESTORE *FIL_L_ERR :RETURN
32360 IF ERR=64 THEN RESTORE *FIL_S_ERR :RETURN
32365 IF ERR=60 THEN RESTORE *DISK_ERR :RETURN
32370 IF ERR=55 THEN RESTORE *FIL_N_ERR :RETURN
32375 IF ERR=54 THEN RESTORE *FIL_E_ERR :RETURN
32380 IF ERR=53 THEN RESTORE *DRIV_ERR :RETURN
32385 IF ERR=65 THEN RESTORE *DISK_FLL :RETURN
32390 IF ERR=67 THEN RESTORE *DISK_FLL :RETURN
32395 IF ERR=72 THEN RESTORE *DISK_ERR :RETURN
32400 IF ERR=73 THEN RESTORE *FIL_P1_ERR :RETURN
32405 IF ERR=75 THEN RESTORE *FIL_P2_ERR :RETURN
32410 '
32415 RESTORE *END_ERR
32420 ERP=1
32425 RETURN
32430 '
32435 *FIL_L_ERR :'load err
32440 DATA 1
32445 DATA "指定されたファイルが有りません",0
32450 '
32455 *FIL_S_ERR :'save err
32460 DATA 1
32465 DATA "指定のファイルは既に存在しています",0
32470 '
32475 *DISK_ERR :'disk access err
32480 DATA 1
32485 DATA "指定の入出力装置は使用できません",0
32490 '
32495 *FIL_N_ERR
32500 DATA 1
32505 DATA "ファイルの記述に誤りがあります",0
32510 '
32515 *FIL_E_ERR
32520 DATA 1
32525 DATA "読み込むデータが有りません",0
32530 '
32535 *DRIV_ERR
32540 DATA 1
32545 DATA "入出力装置に異常が発生しました",0
32550 '
32555 *DISK_FLL
32560 DATA 1
32565 DATA "ディスクに空き領域が有りません",0
32570 '
32575 *FIL_P1_ERR
32580 DATA 1
32585 DATA "指定されたディスクは書き込みが禁止されています",0
32590 '
32595 *FIL_P2_ERR
32600 DATA 1
32605 DATA "デバイスまたはファイルのアクセスが拒否されました",0
32610 '
32615 *END_ERR
32620 DATA 2
32625 DATA "継続不能のエラーが発生しました",0
32630 DATA "プログラムを再起動して下さい",0
32635 '-------------------------------------------------------------------
32640 *FAST_MESE
32645 A=9 :GOSUB *SWAP_XY
32650 MPXL=200 :MPYL=180 :MPXE=210 :MPYE=100
32655 BCL(0)=0 :BCL(2)=255 :BCL(4)=113 :BCL(6)=4 :BCL(12)=182
32660 BCL(1)=70 :BCL(3)=179 :BCL(5)=218 :BCL(9)=255 :BCL(17)=142
32662 BCL(18)=70 :BCL(19)=255
32665 REW_X=200 :REW_Y=200 :BDP=15 :YM$=DATE$ :NEXP=NEXP+1
32670 GOSUB *BOLD_P :GOSUB *LOAD_MOUSE_DAT
32675 GOSUB *SET_CALKTIF :GOSUB *SET_BCL
32680 GOSUB *CORD_LOAD :GOSUB *KOMOK_LOAD :GOSUB *FILN_LOAD
32685 GOSUB *BNAME_LOAD :GOSUB *YOBID_SET :GOSUB *SET_JOK
32690 GOSUB *SET_UPFIL :GOSUB *END_LOAD
32695 RETURN
32700 '
32705 *BD_15P
32710 FILS$=VAR$
32715 WINDOW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17)
32720 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%255,%0
32725 SYMBOL(MPXL+50,MPYL+20),"[初期設定中]",1,1,%0
32730 A$="しばらくお待ち下さい"
32735 SYMBOL(MPXL+20,MPYL+40),A$,1,1,%0
32740 LINE (MPXL+20,MPYL+40)-STEP(LEN(A$)*8,16),XOR,%250,BF
32745 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
32750 RETURN
32755 '------------------------------------------------------------------
32760 *END_MESE
32765 A=9 :GOSUB *SWAP_XY
32770 MPXL=200 :MPYL=180 :MPXE=290 :MPYE=120
32775 BCL(1)=BCL(18) :BCL(9)=BCL(19) :NEXP=NEXP+1
32780 REW_X=200 :REW_Y=200 :BDP=16 :BPQ=0
32785 GOSUB *BOLD_P
32790 GOSUB *SET_XYD
32795 GOSUB *SEL_MXY
32800 IF ER=1 THEN MJ=0 :NEXP=NEXP-1 :GOTO 32815
32805 ON JP GOSUB *RET_P,*REW_P,*DRAG_A,*RET,*RET,*RET,*RET,*DRAG_B, *BSCR_EP,*RET_W
32810 IF JP<>1 THEN 32795
32815 A=9 :GOSUB *SWAP_XY
32820 RETURN
32825 '
32830 *BD_16P
32835 FILS$="終了メッセージ"
32840 WINDOW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17)
32845 VIEW (MPXL+1,MPYL+17)-(MPXF-17,MPYF-17),%BCL(19),%BCL(0)
32850 SYMBOL(MPXL+60,MPYL+25),"家計簿を終了します",1,1,%BCL(0)
32855 IF EXPS=1 THEN
32860 SYMBOL(MPXL+10,MPYL+50),"家計簿の内容が書換えられています", 1,1,%BCL(15)
32865 ENDIF
32870 SYMBOL(MPXL+30,MPYL+85) ,"[終了]",1,1,%BCL(0)
32875 SYMBOL(MPXL+200,MPYL+85),"[取消]",1,1,%BCL(0)
32880 WINDOW (0,0)-(639,479) :VIEW (0,0)-(639,479)
32885 RETURN
32890 '
32895 *BSCR_EP
32900 IF MUY>MPYL+85 AND MUY<MPYL+103 THEN
32905 IF MUX>MPXL+30 AND MUX<MPXL+78 THEN JP=1 :MJ=1 :NEXP=NEXP-1
32910 IF MUX>MPXL+200 AND MUX<MPXL+248 THEN JP=1 :MJ=0 :NEXP=NEXP-1
32915 ENDIF
32920 WHILE MOUSE(2,0)=-1 :WEND
32925 MOUSE 5
32930 RETURN
32935 '------------------------------------------------------------------
32940 *CNF_INPUT
32945 DIM CNF$(100) :A=0 :ERP=0
32950 ON ERROR GOTO *CNF_ERR
32955 OPEN "I",#1,"kakeibo.cfg"
32960 LINE INPUT #1,CNF$(A)
32965 IF EOF(1)=0 THEN A=A+1 :GOTO 32960
32970 *CNF_ERR_BAK
32975 ON ERROR GOTO 0
32980 CLOSE #1
32985 RETURN
32990 '
32995 *CNF_ERR
33000 ERP=1
33005 RESUME *CNF_ERR_BAK
33010 '
33015 *CNF_READ
33020 RESTORE *CNF_DATA
33025 FOR B=0 TO 21
33030 READ F$
33035 FOR C=0 TO A
33040 IF INSTR(CNF$(C),F$)=1 THEN GOSUB *CNF_SET :GOTO 33050
33045 NEXT C
33050 NEXT B
33055 RETURN
33060 '
33065 *CNF_DATA
33070 DATA KF1$ ,BANKF$ ,BANKNF$ ,KAKEIF$ ,CALKF$
33075 DATA MOUSEF$ ,ENDF$ ,KOMOKF$ ,CORDF$ ,CORDN$
33080 DATA FILNF$ ,MEMOF$ ,BCLF$ ,CALENF$
33085 DATA MSX ,KSZ ,NSX ,CDX ,CDZ
33090 DATA BNZ ,TYZ ,RJZ
33095 '
33100 *CNF_SET
33105 S=INSTR(CNF$(C),CHR$(&H22))
33110 IF LEN(CNF$(C))=S OR S=0 THEN RETURN
33115 E=INSTR(S+1,CNF$(C),CHR$(&H22))
33120 IF E=0 THEN RETURN ELSE E=E-S-1
33125 B$=MID$(CNF$(C),S+1,E)
33130 IF B<14 THEN FIL$(B)=B$ ELSE *CNF_SET2
33135 RETURN
33140 '
33145 *CNF_SET2
33150 D=VAL(B$)
33155 IF B=14 THEN MSX=D
33160 IF B=15 THEN KSZ=D
33165 IF B=16 THEN NSX=D
33170 IF B=17 THEN CDX=D
33175 IF B=18 THEN CDZ=D
33180 IF B=19 THEN BNZ=D
33185 IF B=20 THEN TYZ=D
33190 IF B=21 THEN RJZ=D
33195 RETURN
33200 '
33205 *CNF_SETUP
33210 GOSUB *CNF_SETUP2
33215 GOSUB *CNF_INPUT
33220 IF ERP=0 THEN GOSUB *CNF_READ ELSE ERP=0
33225 ERASE CNF$
33230 RETURN
33235 '
33240 *CNF_SETUP2
33245 DIM FIL$(13)
33250 FIL$(0)="\kakeibo\kake_scr\kakeibo.tif"
33255 FIL$(1)="\kakeibo\bank_fil\"
33260 FIL$(2)="\kakeibo\bank_fil\bank_nam.dat"
33265 FIL$(3)="\kakeibo\kake_fil\data_fil\"
33270 FIL$(4)="\kakeibo\kake_scr\calk_tif.dat"
33275 FIL$(5)="\kakeibo\kake_fil\data_fil\mous_set.dat"
33280 FIL$(6)="\kakeibo\kake_fil\data_fil\end_fil.dat"
33285 FIL$(7)="\kakeibo\kake_fil\komokfil.dat"
33290 FIL$(8)="\kakeibo\kake_fil\kakecord.dat"
33295 FIL$(9)="\kakeibo\kake_fil\cord_fil\cord_"
33300 FIL$(10)="\kakeibo\kake_fil\fil_name.dat"
33305 FIL$(11)="\kakeibo\kake_fil\memo_fil\memo_"
33310 FIL$(12)="\kakeibo\kake_fil\bcl_fil.dat"
33315 FIL$(13)="\kakeibo\kake_scr\calen_mj\calen_"
33320 MSX=100 :KSZ=50 :NSX=50 :CDX=99 :CDZ=999 :BNZ=200 :TYZ=200 :RJZ=50
33325 RETURN