Gesbanq : Gestion bancaire (~1986 à 1992) pour Apple IIGS (Version Basic AppleSoft)

0POKE1010,73: POKE1011,9: POKE1012,172
1PRINT CHR$ (4)"BLOAD/GESBANQ/RESET"
5PRINT CHR$ (4)"PR#3"
10 VER$ = "8.0"
30 N$ = CHR$ (14):S$ = CHR$ (24): PRINT N$S$
40 I$ = CHR$ (15):LI$ = CHR$ (29):D$ = CHR$ (4)
41PRINT D$"CLOSE"
45GOSUB10020: GOSUB10030: GOSUB10040
65 ONERR GOTO3790
70PRINT D$"OPEN/GESBANQ/CODE,L10"
80PRINT D$"READ/GESBANQ/CODE,R0"
90INPUT CC$(0)
100PRINT D$
105POKE216,0
106PRINT D$"OPEN/GESBANQ/FICHIER": PRINT D$"READ/GESBANQ/FICHIER": INPUT FI$: PRINT D$"CLOSE/GESBANQ/FICHIER"
110PRINT D$"OPEN/GESBANQ/COMPTE/"FI$",L74"
120FOR I = 1 TO 5:DO$ = DO$ + CHR$ ( PEEK (234 + I)): NEXT
130 DS$ = DO$
140POKE6,0: POKE7,0: POKE8,0: POKE9,0: POKE206,0
150GOSUB10040
155 VTAB 16: GOSUB10320
160 OP$ = A$:P = INT (( VAL ( MID$ (OP$,18,4)) - 1) * 10000 / 1894) / 100:P$ = STR$ (P): IF P < 1THEN P$ = "0" + P$
170 VTAB 24: POKE1403,0: PRINT"COMPTE No " LEFT$ (A$,12);: POKE1403,28: PRINT"DATE SYSTEME :"DO$;: POKE1403,52: PRINT P$"% PLEIN"LI$;: POKE1403,68: PRINT"GESBANQ "VER$;: VTAB 1: PRINT
180 VTAB 1: POKE1403,0: PRINT I$" No DATE TYPE OBJET CREDIT DEBIT CODE MARQ."N$
190 SU = VAL ( MID$ (OP$,18,4)): VTAB 2
195IF SU = 1THEN230
200 D = SU - 11:F = SU - 1:VB = 2
210IF SU < 12THEN D = 1:VB = 14 - SU
220GOSUB11090
230 VTAB 1: PRINT : POKE1403,0: VTAB 14:SR = ( VAL ( MID$ (OP$,35,13)) + .005) * 100:SR$ = STR$ ( INT (SR) / 100):SB = ( VAL ( MID$ (OP$,22,13)) + .005) * 100:SB$ = STR$ ( INT (SB) / 100)
235 SR = VAL (SR$):SB = VAL (SB$)
240PRINT I$"FICHIER:"N$" "FI$;: POKE1403,25: PRINT I$"SOLDE BANQUE: "SB$N$LI$;: POKE1403,54: PRINT I$"SOLDE REEL: "SR$N$LI$
250IFLEN (SR$) < 13THEN SR$ = SR$ + " ": GOTO250
260IFLEN (SB$) < 13THEN SB$ = SB$ + " ": GOTO260
270 M$(0) = "DEBIT ":M$(1) = "CREDIT ":M$(2) = "MARQUAGE ":M$(3) = "MODIFICATION":M$(4) = "RECHERCHE ":M$(5) = "LISTING ":M$(6) = "FICHIER ":M$(7) = "FIN "
280 P(0) = 0:P(1) = 20:P(2) = 40:P(3) = 60:P(4) = 0:P(5) = 20:P(6) = 40:P(7) = 60
290 VTAB 21: PRINT :C = PEEK (6):CA = 0
300 VTAB 21: POKE1403,0: PRINT M$(0);: POKE1403,20: PRINT M$(1);: POKE1403,40: PRINT M$(2);: POKE1403,60: PRINT M$(3): POKE1403,0
310 VTAB 22: PRINT M$(4);: POKE1403,20: PRINT M$(5);: POKE1403,40: PRINT M$(6);: POKE1403,60: PRINT M$(7)
330 VTAB 21 + INT (C / 4): POKE1403,P(C): PRINT I$M$(C)N$
340 CC = 0
350GOSUB10000: IF KY = 21THEN VTAB 21 + INT (C / 4): POKE1403,P(C): PRINT N$M$(C):C = C + 1 - 8 * (C = 7): GOTO330
360IF KY = 1THEN CA = 128:KY = 13: VTAB 21 + INT (C / 4): POKE1403,P(C): PRINT N$M$(C):C = PEEK (6): VTAB 21 + INT (C / 4): POKE1403,P(C): PRINT I$M$(C)N$
370IF KY = 18 AND PEEK (6) < 2THEN CA = 255:KY = 13: VTAB 21 + INT (C / 4): POKE1403,P(C): PRINT N$M$(C):C = PEEK (6): VTAB 21 + INT (C / 4): POKE1403,P(C): PRINT I$M$(C)N$:CC = 2
380IF KY = 8THEN VTAB 21 + INT (C / 4): POKE1403,P(C): PRINT N$M$(C):C = C - 1 + 8 * (C = 0): GOTO330
390IF KY = 32 OR KY = 10 OR KY = 11THEN VTAB 21 + INT (C / 4): POKE1403,P(C): PRINT M$(C):C = C + 4 - 8 * (C > 3): GOTO330
400IF KY < > 13THENCALL2355: GOTO350
410POKE6,C
420 A = FRE (0)
430ON C + 1GOSUB600,1040,450,3700,2080,2230,3410,3600
440GOSUB10010: GOTO290
450GOSUB10040: GOSUB10440: GOSUB10040
460IF C = - 1THENRETURN
470IFLEN (A$) = 80THEN VTAB 16: PRINT"LE MARQUAGE A DEJA ETE OPERE SUR CETTE DONNEE": CALL2441: RETURN
480 VTAB 19: PRINT I$A$N$
490 VTAB 15: PRINT"ENTREZ LA DATE DU MARQUAGE"LI$: GOSUB10110
500IF T$ = CHR$ (27) THENGOSUB10040: RETURN
510GOSUB10410:A$(0) = A$:L = I
520 A$ = A$(0) + " " + DA$: GOSUB10360
530 A = VAL ( MID$ (OP$,22,13)) + VAL ( MID$ (A$(0),47,8)) + VAL ( MID$ (A$(0),56,9))
540 SB$ = STR$ (A)
550IFLEN (SB$) < 13THEN SB$ = SB$ + " ": GOTO550
560 OP$ = LEFT$ (OP$,21) + SB$ + RIGHT$ (OP$,39)
570 I = 0:A$ = OP$: GOSUB10360: GOSUB10040: VTAB 15: PRINT"MARQUAGE EFFECTUE"LI$
580 POP : GOSUB10020: GOTO155
600GOSUB10040: IF SU = 1895THEN VTAB 15: PRINT"PLUS DE PLACE DISPONIBLE.": RETURN
610 X$ = "": PRINT D$
620 T$ = STR$ (SU)
630IFLEN (T$) < 4THEN T$ = T$ + " ": GOTO630
640 X$ = T$
650GOSUB10110:X$ = X$ + " " + DA$: IF T$ = CHR$ (27) THENGOSUB10040: RETURN
660GOSUB10040: VTAB 15: PRINT"DATE :";DA$
670GOSUB10980: IF C < > 0THEN T$ = PM$(C): GOTO720
680IF CA = 255THEN T$ = STR$ ( VAL (CD$) + 1):CA = 128: GOTO710
690POKE1403,0: VTAB 16: PRINT PM$(C)LI$;:VB = 16:HB = 9: GOSUB10050
700IF T$ = CHR$ (27) THENGOSUB10040: RETURN
705IFVAL (T$) < > 0THEN T$ = RIGHT$ ("0000000" + STR$ ( VAL (T$)),7)
710IFLEN (T$) > 8THEN690
720IFLEN (T$) < 8THEN T$ = T$ + " ": GOTO720
730 VTAB 16: POKE1403,0: PRINT PM$(C)LI$;: IF C = 0THENPRINT" "T$;
740 CD$ = T$
750 X$ = X$ + " " + T$: PRINT
760POKE1403,0: VTAB 17:VB = 17:HB = 26: PRINT"OBJET (25 CARACTS. MAX.)"LI$;: GOSUB10050
770IF T$ = "ANNULE"THEN AN = 12
775IF T$ = CHR$ (27) AND CC = 2THEN CD$ = STR$ ( VAL (CD$) - 1)
780IF T$ = CHR$ (27) THENGOSUB10040: RETURN
790IFLEN (T$) < 25THEN T$ = T$ + " ": GOTO790
800 T$ = LEFT$ (T$,25)
810 O$ = T$
820 X$ = X$ + " " + T$
830IF AN = 12THEN X$ = X$ + " 0 0 ANNULE " + MID$ (X$,6,5):AN = 0:C$ = "": GOTO960
840POKE1403,0: VTAB 18:VB = 18:HB = 7: PRINT"DEBIT "LI$;: GOSUB10050: IF T$ = CHR$ (27) AND CC = 2THEN CD$ = STR$ ( VAL (CD$) - 1)
845IF T$ = CHR$ (27) THENGOSUB10040: RETURN
850IFVAL (T$) > 0THEN T$ = STR$ ( - VAL (T$))
860IFLEN (T$) < 9THEN T$ = T$ + " ": GOTO860
870IFLEN (T$) > 9THEN840
880 C$ = T$:T$ = "0 " + T$
890 X$ = X$ + " " + T$
900POKE1403,0: VTAB 19:VB = 19:HB = 32: PRINT"CODE COMPTA. (9 CARACTS. MAX.)"LI$;: GOSUB10050: IF T$ = CHR$ (27) AND CC = 2THEN CD$ = STR$ ( VAL (CD$) - 1)
905IF T$ = CHR$ (27) THENGOSUB10040: RETURN
910IFLEN (T$) < 9THEN T$ = T$ + " ": GOTO910
920IFLEN (T$) > 9THEN900
930GOSUB12000
940IF T = - 1THENCALL2441: VTAB 20: PRINT"CODE COMPTA INCORRECT": GOTO900
950 X$ = X$ + " " + T$
960 A$ = X$:I = SU: GOSUB10360: GOSUB10040
970 POP :SU = SU + 1:SU$ = STR$ (SU)
980IFLEN (SU$) < 4THEN SU$ = SU$ + " ": GOTO980
990 SR = VAL (SR$):SR = SR + VAL (C$):SR$ = STR$ (SR)
1000IFLEN (SR$) < 13THEN SR$ = SR$ + " ": GOTO1000
1010 OP$ = LEFT$ (OP$,17) + SU$ + SB$ + SR$ + RIGHT$ (OP$,26)
1020 A$ = OP$:I = 0: GOSUB10360
1030GOSUB10020: GOTO150
1040GOSUB10040: IF SU = 1895THEN VTAB 15: PRINT"PLUS DE PLACE DISPONIBLE.": RETURN
1050 X$ = "": PRINT D$
1060 T$ = STR$ (SU)
1070IFLEN (T$) < 4THEN T$ = T$ + " ": GOTO1070
1080 X$ = T$
1090GOSUB10110:X$ = X$ + " " + DA$: IF T$ = CHR$ (27) THENGOSUB10040: RETURN
1100GOSUB10040: VTAB 15: PRINT"DATE :"DA$
1110GOSUB10980: IF C < > 0THEN T$ = PM$(C): GOTO1150
1120IF CA = 255THEN T$ = STR$ ( VAL (CD$) + 1):CA = 128: GOTO1140
1130POKE1403,0: VTAB 16: PRINT PM$(C)LI$;:VB = 16:HB = 9: GOSUB10050: IF T$ = CHR$ (27) THENGOSUB10040: RETURN
1140IFLEN (T$) > 8THEN1130
1150IFLEN (T$) < 8THEN T$ = T$ + " ": GOTO1150
1160 VTAB 16: POKE1403,0: PRINT PM$(C)LI$;: IF C = 0THENPRINT" "T$;
1170 CD$ = T$
1180 X$ = X$ + " " + T$: PRINT
1190POKE1403,0: VTAB 17:VB = 17:HB = 26: PRINT"OBJET (25 CARACTS. MAX.)"LI$;: GOSUB10050
1200IF T$ = "ANNULE"THEN AN = 12
1205IF T$ = CHR$ (27) AND CC = 2THEN CD$ = STR$ ( VAL (CD$) - 1)
1210IF T$ = CHR$ (27) THENGOSUB10040: RETURN
1220IFLEN (T$) < 25THEN T$ = T$ + " ": GOTO1220
1230 T$ = LEFT$ (T$,25)
1240 X$ = X$ + " " + T$
1250IF AN = 12THEN X$ = X$ + " 0 0 ANNULE " + MID$ (X$,6,5):AN = 0:C$ = "": GOTO1370
1260POKE1403,0: VTAB 18:VB = 18:HB = 8: PRINT"CREDIT "LI$;: GOSUB10050: IF T$ = CHR$ (27) AND CC = 2THEN CD$ = STR$ ( VAL (CD$) - 1)
1265IF T$ = CHR$ (27) THENGOSUB10040: RETURN
1270IFLEN (T$) < 8THEN T$ = T$ + " ": GOTO1270
1280IFLEN (T$) > 8THEN1260
1290 C$ = T$:T$ = T$ + " 0 "
1300 X$ = X$ + " " + T$
1310POKE1403,0: VTAB 19:VB = 19:HB = 32: PRINT"CODE COMPTA. (9 CARACTS. MAX.)"LI$;: GOSUB10050: IF T$ = CHR$ (27) AND CC = 2THEN CD$ = STR$ ( VAL (CD$) - 1)
1315IF T$ = CHR$ (27) THENGOSUB10040: RETURN
1320IFLEN (T$) < 9THEN T$ = T$ + " ": GOTO1320
1330IFLEN (T$) > 9THEN1310
1340GOSUB12000
1350IF T = - 1THENCALL2441: VTAB 20: PRINT"CODE COMPTA INCORRECT": GOTO1310
1360 X$ = X$ + " " + T$
1370 A$ = X$:I = SU: GOSUB10360: GOSUB10040
1380 POP :SU = SU + 1:SU$ = STR$ (SU)
1390IFLEN (SU$) < 4THEN SU$ = SU$ + " ": GOTO1390
1400 SR = VAL (SR$):SR = SR + VAL (C$):SR$ = STR$ (SR)
1410IFLEN (SR$) < 13THEN SR$ = SR$ + " ": GOTO1410
1420 OP$ = LEFT$ (OP$,17) + SU$ + SB$ + SR$ + RIGHT$ (OP$,26)
1430 A$ = OP$:I = 0: GOSUB10360
1440GOSUB10020: GOTO150
1450GOSUB10040:XE = 1: GOSUB10440:XE = 0: GOSUB10040
1460IF C = - 1THENRETURN
1470POKE206,0:CA = 0
1490 A$ = A$(1): GOSUB10360
1500 VTAB 19: PRINT I$A$(1)N$LI$: VTAB 15: PRINT LI$: VTAB 18: PRINT LI$
1510 VTAB 15: PRINT"QUE VOULEZ-VOUS MODIFIER ?"LI$
1520 PM$(0) = "DATE ":PM$(1) = "TYPE DE PAIEMENT":PM$(2) = "OBJET ":PM$(4) = "DEBIT ":PM$(3) = "CREDIT ":PM$(5) = "CODE COMPTA. ":PM$(6) = "MARQUAGE "
1530 PM$(7) = "RETOUR MENU "
1540 VTAB 16: POKE1403,0: PRINT PM$(0)LI$;: POKE1403,20: PRINT PM$(1);: POKE1403,40: PRINT PM$(2);: POKE1403,60: PRINT PM$(3)
1550 VTAB 17: POKE1403,0: PRINT PM$(4)LI$;: POKE1403,20: PRINT PM$(5);: POKE1403,40: PRINT PM$(6);: POKE1403,60: PRINT PM$(7)
1560 C = PEEK (206)
1570 VTAB 16 + INT (C / 4): POKE1403,(C - 4 * (C > 3)) * 20: PRINT I$PM$(C)N$: VTAB 18: PRINT
1580 VTAB 24: POKE1403,28: PRINT"DATE SYSTEME :"DO$;: VTAB 17: PRINT
1590GOSUB10000: IF KY = 21THEN VTAB 16 + INT (C / 4): POKE1403,(C - 4 * (C > 3)) * 20: PRINT PM$(C):C = C + 1 - 8 * (C = 7): GOTO1570
1600IF KY = 8THEN VTAB 16 + INT (C / 4): POKE1403,(C - 4 * (C > 3)) * 20: PRINT PM$(C):C = C - 1 + 8 * (C = 0): GOTO1570
1610IF KY = 32 OR KY = 10 OR KY = 11THEN VTAB 16 + INT (C / 4): POKE1403,(C - 4 * (C > 3)) * 20: PRINT PM$(C):C = C + 4 - 8 * (C > 3): GOTO1570
1620IF KY = 27THEN C = 7:KY = 13
1630IF KY < > 13THENCALL2355: GOTO1590
1640POKE206,7
1650IF C = 6 AND LEN (A$(1)) < 80THENCALL2441: GOTO1490
1660IF C < > 7THEN1690
1670IF I > SU - 12THEN POP : GOSUB10020: GOTO150
1680 POP : GOSUB10040: GOTO230
1690 B(0) = 6:Z(0) = 5:B(1) = 12:Z(1) = 8:B(2) = 21:Z(2) = 25:B(3) = 47:Z(3) = 8:B(4) = 56:Z(4) = 9:B(5) = 66:Z(5) = 9:B(6) = 76:Z(6) = 5
1700 Z$ = MID$ (A$(1),B(C),Z(C))
1710GOSUB10040: VTAB 19: PRINT I$A$(1)N$
1720 VTAB 15: PRINT"MODIFICATION DE "I$Z$N$
1730IF C = 0THENGOSUB10110:A$(1) = LEFT$ (A$(1),B(C) - 1) + DA$ + RIGHT$ (A$(1), LEN (A$(1)) - B(C) - Z(C) + 1)
1740IF C = 6THEN M = 1: GOSUB10110:A$(1) = LEFT$ (A$(1),B(C) - 1) + DA$:M = 0
1750IF (C = 6 OR C = 0) AND T$ = CHR$ (27) THENGOSUB10040: RETURN
1760IF C = 6 AND M$ = "" AND J$ = ""THEN A$(1) = LEFT$ (A$(1),B(C) - 2):SB = VAL (SB$) - VAL ( MID$ (A$(1),47,8)) - VAL ( MID$ (A$(1),56,9)):T$ = "":SR = VAL (SR$): GOTO1960
1770IF C = 6 OR C = 0THEN1490
1780IF C = 1THENGOSUB10980:T$ = PM$(C):C = 1
1790IF C < > 1THEN1840
1800IFLEN (T$) = 0THEN1490
1810IF T$ = PM$(0) THEN PM$(1) = T$: GOTO1840
1820IFLEN (T$) < 8THEN T$ = T$ + " ": GOTO1820
1830 A$(1) = LEFT$ (A$(1),B(C) - 1) + T$ + RIGHT$ (A$(1), LEN (A$(1)) - B(C) - Z(C) + 1): GOTO1490
1840IF C = 4THEN SR = VAL (SR$) - VAL ( MID$ (A$(1),56,9))
1850IF C = 3THEN SR = VAL (SR$) - VAL ( MID$ (A$(1),47,8))
1860IF C = 4 AND LEN (A$(1)) > = 80THEN SB = VAL (SB$) - VAL ( MID$ (A$(1),56,9))
1870IF C = 3 AND LEN (A$(1)) > = 80THEN SB = VAL (SB$) - VAL ( MID$ (A$(1),47,8))
1880 VTAB 17: PRINT PM$(C)LI$;:VB = 17:HB = LEN (PM$(C)) + 2:NU = 1: GOSUB10050:NU = 0
1890IF T$ = CHR$ (27) THENGOSUB10040: RETURN
1900IFLEN (T$) = 0THEN1490
1910IFVAL (T$) > 0 AND C = 4THEN T$ = STR$ ( - VAL (T$))
1920IFLEN (T$) > Z(C) THEN1880
1930IFLEN (T$) < Z(C) THEN T$ = T$ + " ": GOTO1930
1940IF C < > 3 AND C > < 4THEN2030
1950IFLEN (A$(1)) < 80THEN1980
1960 SB = SB + VAL (T$):SB$ = STR$ (SB): VTAB 14: POKE1403,25: PRINT I$"SOLDE BANQUE: "SB$N$LI$
1970IFLEN (SB$) < 13THEN SB$ = SB$ + " ": GOTO1970
1980 SR = SR + VAL (T$):SR$ = STR$ (SR): VTAB 14: POKE1403,54: PRINT I$"SOLDE REEL: "SR$N$LI$
1990IFLEN (SR$) < 13THEN SR$ = SR$ + " ": GOTO1990
2000 OP$ = LEFT$ (OP$,21) + SB$ + SR$ + RIGHT$ (OP$,26):A$ = OP$:X = I:I = 0
2010GOSUB10360
2020 I = X
2030IF C < > 5THEN2060
2040GOSUB12000: IF T = - 1THENCALL2441: VTAB 18: PRINT"CODE COMPTA INCORRECT": GOTO1880
2050IF C = 5 AND LEN (A$(1)) = 74THEN A$(1) = LEFT$ (A$(1),B(C) - 1) + T$: GOTO1490
2060IF C = 6THEN1490
2070 A$(1) = LEFT$ (A$(1),B(C) - 1) + T$ + RIGHT$ (A$(1), LEN (A$(1)) - B(C) - Z(C) + 1): GOTO1490
2080GOSUB10040:XE = 1: GOSUB10440:XE = 0: GOSUB10040
2090IF C = - 1THENRETURN
2100 VB = 2:D = I - 10: IF I < 12THEN VB = 13 - I:D = 1
2110 F = I: GOSUB10020: GOSUB11090
2120 VTAB 15: PRINT : GOSUB10000
2130IF KY = 11 AND SU < 12 AND PEEK (49249) > 127THEN I = SU - 1: GOTO2100
2140IF KY = 11 AND PEEK (49249) > 127THEN I = 11: GOTO2100
2150IF KY = 10 AND PEEK (49249) > 127THEN I = SU - 1: GOTO2100
2160IF KY = 10 AND I < > SU - 1THEN I = I + 1: GOTO2100
2170IF KY = 11 AND I < > 1THEN I = I - 1: GOTO2100
2180IF KY = 27THENRETURN
2190IF KY < > 32 OR I = SU - 1THENCALL2355: GOTO2120
2200 I = I + 11
2210IF I > = SU THEN I = SU - 1
2220GOTO2100
2230GOSUB10040:PM$(0) = "IMPRIMANTE ":PM$(1) = "ECRAN ":C = 0
2235POKE30, PEEK (48688): POKE31, PEEK (48689)
2240IF CA = 128THEN C = PEEK (8): GOTO2310
2250 VTAB 15: POKE1403,0: PRINT PM$(0);: POKE1403,20: PRINT PM$(1)
2260 VTAB 15: POKE1403,20 * (C = 1): PRINT I$PM$(C)N$
2270GOSUB10000: IF KY = 8 OR KY = 21THEN VTAB 15: POKE1403,20 * (C = 1): PRINT PM$(C):C = C + 1 - 2 * (C = 1): GOTO2260
2290IF KY = 27THENGOSUB10040: RETURN
2300IF KY < > 13THENCALL2355: GOTO2260
2310POKE8,C
2320POKE1403,0: VTAB 15:CH = C: PRINT"EDITION SUR L'"PM$(C)LI$
2330PRINT D$
2340 VTAB 16: PRINT"VOULEZ-VOUS UN TRI (O/N)";:VB = 16:HB = 26: GOSUB10050
2345 T$ = LEFT$ (T$,1)
2350IF T$ = "O" OR T$ = "o"THEN2680
2360IF T$ = CHR$ (27) THENGOSUB10040: RETURN
2370IF T$ < > "N" AND T$ < > "n"THEN2340
2380 VTAB 16: PRINT"ENTREZ LES BORNES DES INTERVALLES"LI$
2390 VTAB 17: PRINT"BORNE INFERIEURE ";:VB = 17:HB = 19: GOSUB10050
2400IF T$ = CHR$ (27) THENGOSUB10040: RETURN
2410IFVAL (T$) < 1 OR VAL (T$) > = SU THEN2390
2420 BI = VAL (T$)
2430 VTAB 18: PRINT"BORNE SUPERIEURE ";:VB = 18:HB = 19: GOSUB10050
2440IF T$ = CHR$ (27) THENGOSUB10040: RETURN
2450IFVAL (T$) < 1 OR VAL (T$) > = SU THEN2430
2460IFVAL (T$) < BI THEN2430
2470 BS = VAL (T$): GOSUB10040: VTAB 15: PRINT"EDITION SUR L'"PM$(C)LI$
2480IF CH = 0THENPOKE48688,0: POKE48689,193: PRINT : PRINT"LISTING DES LIGNES "BI" A "BS" LE :"DS$: PRINT : PRINT
2490IF CH = 0THENPRINT"No DATE TYPE OBJET CREDIT DEBIT CODE MARQ.": PRINT"---- ----- -------- ------------------------- -------- --------- --------- -----": GOTO2510
2500 VB = 2: VTAB 1: POKE1403,0: PRINT I$" No DATE TYPE OBJET CREDIT DEBIT CODE MARQ."N$
2510IF CH = 1THENGOSUB10020
2520 VB = 2
2530FOR J = 0 TO BS - BI
2540IFPEEK ( - 16384) = 155THEN I = BS: GOTO2620
2550IFINT (J / 11) = J / 11 AND J < > 0THEN VB = 2: IF CH = 1THEN2570
2560GOTO2600
2570GOSUB10000: IF KY = 27THEN J = BS: GOTO2620
2580IF KY < > 32THENCALL2355: GOTO2570
2590GOSUB10020
2600 I = J + BI: GOSUB10410
2610 VTAB VB: POKE1403,0: PRINT A$
2620 VB = VB + 1: NEXT
2630IF CH = 0THENPRINT : PRINT"SOLDE BANQUE : "SB$: PRINT"SOLDE REEL : "SR$: PRINT : PRINT : PRINT
2640IF CH = 1THENGOSUB10000: GOSUB10020
2650 VTAB 15: POKE48688, PEEK (30): POKE48689, PEEK (31)
2660PRINT : GOSUB10040
2670 POP : GOTO180
2680 T$(0) = "N. DE CHEQUE":T$(1) = "CB. ":T$(2) = "CODE COMPTA.":T$(3) = "NON DEBITE ":C = 0
2690 VTAB 16: PRINT"TRI SUR QUOI ?"LI$
2700 VTAB 17: POKE1403,0: PRINT T$(0);: POKE1403,20: PRINT T$(1);: POKE1403,40: PRINT T$(2);: POKE1403,60: PRINT T$(3)
2710 VTAB 17: POKE1403,C * 20: PRINT I$T$(C)N$
2720GOSUB10000: IF KY = 8THEN VTAB 17: POKE1403,C * 20: PRINT T$(C):C = C - 1 + 4 * (C = 0): GOTO2710
2730IF KY = 21THEN VTAB 17: POKE1403,C * 20: PRINT T$(C):C = C + 1 - 4 * (C = 3): GOTO2710
2740IF KY = 27THENGOSUB10040: RETURN
2750IF KY < > 13THENCALL2355: GOTO2720
2760 C(0) = 12:C(1) = 12:C(2) = 66:CO = 0
2770IF C < > 2THEN2810
2780GOSUB10040: VTAB 15: PRINT"TOUS LES CODES COMPTA (O/N) ? ";:VB = 15:HB = 31: GOSUB10050:T$ = LEFT$ (T$,1)
2790IF T$ = "O" OR T$ = "o"THEN3360
2795IF T$ = CHR$ (27) THENGOSUB10040: RETURN
2800IF T$ < > "N" AND T$ < > "n"THENCALL2355: GOTO2780
2810IF C = 3 OR C = 1THEN Y$ = LEFT$ (T$(C),8): GOTO2900
2820GOSUB10040
2830 VB = 15:HB = 14: VTAB VB: POKE1403,0: PRINT T$(C)LI$;: GOSUB10050
2840IF T$ = CHR$ (27) THENGOSUB10040: RETURN
2850IFLEN (T$) < 8 + 1 * (C = 2) THEN T$ = T$ + " ": GOTO2850
2860IFLEN (T$) > 8 + 1 * (C = 2) THEN2820
2870IF C = 0THEN2909
2880GOSUB12000
2890IF T = - 1THENCALL2441: VTAB 16: POKE1403,0: PRINT"CODE COMPTA INEXISTANT": GOTO2830
2895GOTO2909
2900GOSUB10040: VTAB 16:VB = 16:HB = 43: POKE1403,0: PRINT"A PARTIR DE QUEL NUMERO D'ENREGISTREMENT ?";: GOSUB10050
2901IF T$ = CHR$ (27) THENGOSUB10040: RETURN
2905IFVAL (T$) = 0 OR VAL (T$) > SU - 1THEN2900
2906 T = VAL (T$)
2907IF C = 1THEN T$ = Y$
2909IF CH = 0THENPOKE48688,0: POKE48689,193: PRINT : PRINT"TRI SUR "T$(C): PRINT"LE :"DS$
2910IF CH = 0THENPRINT : PRINT"No DATE TYPE OBJET CREDIT DEBIT CODE MARQ.": PRINT"---- ----- -------- ------------------------- -------- --------- --------- -----"
2920 CR = 0:DB = 0
2930IF C = 3THEN3120
2940 CZ = 2: IF CH = 1THENGOSUB10020
2950FOR I = T TO SU - 1
2960IFPEEK ( - 16384) = 155THEN I = SU: GOTO3050
2970GOSUB10410: IF MID$ (A$,C(C),8 + 1 * (C = 2)) < > T$THENNEXT : GOTO3060
2980IF CH = 0THEN3035
2990IF CZ < > 13THEN3030
3000GOSUB10000: IF KY = 27THEN I = SU: GOTO3050
3010IF KY < > 32THEN3000
3020 CZ = 2: GOSUB10020
3030 VTAB CZ
3035PRINT A$:CZ = CZ + 1:CO = CO + 1
3040 CR = CR + VAL ( MID$ (A$,47,8)):DB = DB + VAL ( MID$ (A$,56,9))
3050NEXT
3060IF ZZ = 123THEN ZZ = 0: RETURN
3070IF CH = 0 AND CO = 0THENPRINT"AUCUNE DONNEE TROUVEE"
3080IF CH = 0THENPRINT : PRINT"CREDIT : "CR: PRINT"DEBIT : "DB: PRINT"SOLDE : "CR + DB
3090POKE48688, PEEK (30): POKE48689, PEEK (31)
3100 VTAB 16: PRINT : GOSUB10040
3110RETURN
3120 CZ = 2: IF CH = 1THENGOSUB10020
3130FOR I = T TO SU - 1
3140IFPEEK ( - 16384) = 155THEN I = SU: GOTO3230
3150GOSUB10410: IFLEN (A$) > 79THENNEXT : GOTO3070
3160 CO = CO + 1
3170IF CH = 0THEN3225
3180IF CZ < > 13THEN3220
3190GOSUB10000: IF KY = 27THEN I = SU: GOTO3230
3200IF KY < > 32THEN3190
3210 CZ = 2: GOSUB10020
3220 VTAB CZ
3225PRINT A$:CZ = CZ + 1:CR = CR + VAL ( MID$ (A$,47,8)):DB = DB + VAL ( MID$ (A$,56,9)):CO = CO + 1
3230NEXT
3240GOTO3060
3360IF CH = 0THENPOKE48688,0: POKE48689,193: PRINT : PRINT"LISTING AVEC TRI SUR TOUS LES CODES COMPTA.": PRINT"LE :"DS$
3370IF CH = 0THENPRINT : PRINT"No DATE TYPE OBJET CREDIT DEBIT CODE MARQ.": PRINT"---- ----- -------- ------------------------- -------- --------- --------- -----"
3380 CR = 0:CO = 0:DB = 0: FOR LL = 1 TO VAL (CC$(0))
3385 I = LL: GOSUB12100: IF CH = 1THEN VTAB 16: PRINT LI$
3386IF CH = 1THEN VTAB 15: PRINT LI$"CODE COMPTA : "CC$
3390 T$ = CC$:ZZ = 123: GOSUB2940
3391IFPEEK ( - 16384) = 155THEN LL = 500: GOTO3396
3392IF CH = 1 AND CO = 0THEN VTAB 16: PRINT"AUCUNE DONNEE TROUVEE"
3395IF CH = 1THENGOSUB10000: IF KY = 27THEN LL = 500
3396NEXT
3400GOTO3070
3410GOSUB10040: VTAB 16
3420 VTAB 16:VB = 16:HB = 16: PRINT"NOM DU FICHIER";: GOSUB10050
3430IFLEN (T$) > 15THENCALL2355: GOTO3420
3435IF T$ = CHR$ (27) THENGOSUB10040: RETURN
3440 ONERR GOTO3590
3450PRINT D$"UNLOCK/GESBANQ/COMPTE/"T$
3460POKE216,0
3470 FI$ = T$
3480PRINT D$"OPEN/GESBANQ/FICHIER"
3490PRINT D$"WRITE/GESBANQ/FICHIER": PRINT FI$
3500PRINT D$"CLOSE"
3510RUN
3590CALL2345: POKE216,0: VTAB 18: PRINT"FICHIER NON EXISTANT": CALL2355
3595GOTO3420
3600GOSUB10040
3601POKE1403,0: VTAB 16: PRINT"VOULEZ-VOUS VRAIMENT QUITTER (O/N) ?";: GOSUB10000:T$ = CHR$ (KY)
3602IF T$ = "n" OR T$ = "N" OR T$ = CHR$ (27) THENGOSUB10040: RETURN
3604IF T$ < > "O" AND T$ < > "o"THENCALL2355: GOTO3601
3605GOSUB10040
3610POKE1403,0: VTAB 16: PRINT"VOULEZ-VOUS IMPRIMER L'ETAT (O/N) ?";: GOSUB10000:T$ = CHR$ (KY)
3611IF T$ = "n" OR T$ = "N"THEN3630
3612IF T$ = CHR$ (27) THENGOSUB10040: RETURN
3613IF T$ < > "O" AND T$ < > "o"THENCALL2355: GOTO3610
3615PRINT D$"PRœ1": PRINT"Etat au "DO$
3616PRINT"FICHIER: "FI$; SPC( 15 - LEN (FI$));: PRINT"SOLDE BANQUE: "SB$;: PRINT"SOLDE REEL: "SR$
3617PRINT D$"PRœ3"
3630PRINT D$"CLOSE": HOME
3635PRINT CHR$ (4)"BYE"
3700GOSUB10040: VTAB 16: PRINT"QUE VOULEZ-VOUS MODIFIER ?"
3710 PM$(0) = "DONNEE GESBANQ":PM$(1) = "CODES COMPTA. "
3715 C = 0
3720 VTAB 18: PRINT PM$(0);: POKE1403,20: PRINT PM$(1)
3730 VTAB 18: POKE1403,C * 20: PRINT I$PM$(C)N$
3745GOSUB10000
3750IF KY = 8 OR KY = 21THEN VTAB 18: POKE1403,C * 20: PRINT PM$(C):C = C + 1 - 2 * (C = 1): GOTO3730
3760IF KY = 27THENGOSUB10040: RETURN
3770IF KY < > 13THENCALL2355: GOTO3730
3780IF C = 0THEN1450
3790PRINT D$"CLOSE": PRINT D$"RUN/GESBANQ/COMPTA."
10000WAIT - 16384,128,127: POKE - 16368,0:KY = PEEK ( - 16384): RETURN
10010FOR Z = 21 TO 23: POKE1403,0: VTAB Z: PRINT LI$: NEXT : RETURN
10020FOR Z = 2 TO 13: POKE1403,0: VTAB Z: PRINT LI$: NEXT : RETURN
10030 VTAB 14: POKE1403,0: PRINT LI$: RETURN
10040FOR Z = 15 TO 20: POKE1403,0: VTAB Z: PRINT LI$: NEXT : RETURN
10050 VTAB VB: POKE1403,HB - 1: PRINT LI$;
10060CALL2082,HB,VB - 1,NU
10070 T$ = "":NU = 0
10080IFPEEK (26) = 0THEN10100
10090FOR KY = 1 TO PEEK (26):T$ = T$ + CHR$ ( PEEK (KY + 2472) - 128): NEXT
10095IF T$ = CHR$ (27) THENPOKE1403,HB - 1: VTAB VB: PRINT"==> "LI$: RETURN
10100POKE1403,HB - 1: VTAB VB: PRINT"==> "T$LI$: RETURN
10110 NU = 1: VTAB 16: POKE1403,0: PRINT"MOIS (2 CARACTS. MAX.)";:VB = 16:HB = 24: GOSUB10050
10120IF T$ = CHR$ (27) THENGOSUB10040: RETURN
10140IF T$ = "" AND M < > 1THEN T$ = RIGHT$ (DO$,2): GOTO10165
10142IF T$ = "" AND PEEK (49249) < 128THEN T$ = RIGHT$ (DO$,2): GOTO10165
10145IF T$ = ""THEN VB = VB + 1:M$ = "": GOTO10230
10150IFVAL (T$) < 1 OR VAL (T$) > 12THEN10110
10155IFLEN (T$) = 2 AND VAL (T$) < 10THEN T$ = STR$ ( VAL (T$))
10160IFLEN (T$) > 2THEN10110
10165 M$ = T$: VTAB VB: HTAB HB + 4: PRINT M$LI$
10170 NU = 1: VTAB 17: POKE1403,0: PRINT"JOUR (2 CARACTS. MAX.)";:VB = 17:HB = 24: GOSUB10050
10180IF T$ = CHR$ (27) THENGOSUB10040: RETURN
10200IF T$ = ""THEN T$ = LEFT$ (DO$,2): GOTO10230
10210IFVAL (T$) < 1 OR VAL (T$) > 31THEN10170
10215IFLEN (T$) = 2 AND VAL (T$) < 10THEN T$ = STR$ ( VAL (T$))
10220IFLEN (T$) > 2THEN10170
10230 J$ = T$: VTAB VB: HTAB HB + 4: PRINT J$LI$
10240IF J$ = "" AND M$ = ""THEN DA$ = DO$: RETURN
10270IFVAL (M$) < 10 AND LEN (M$) < > 2THEN M$ = "0" + M$
10280IFVAL (J$) < 10 AND LEN (J$) < > 2THEN J$ = "0" + J$
10290 DA$ = J$ + "/" + M$
10300DO$ = DA$
10310RETURN
10320PRINT D$"READ/GESBANQ/COMPTE/"FI$",R0"
10340INPUT A$: PRINT D$
10350RETURN
10360PRINT D$"WRITE/GESBANQ/COMPTE/"FI$",R"I
10380IF I < > 0THENGOSUB11140
10390PRINT A$: PRINT D$"FLUSH/GESBANQ/COMPTE/"FI$
10400RETURN
10410 VTAB 13: PRINT D$"READ/GESBANQ/COMPTE/"FI$",R"I
10430INPUT A$: PRINT D$: GOTO11120
10440 PM$(2) = "TYPE DE PAIEMENT ":PM$(1) = "DATE ":PM$(0) = "N. D'ENREGISTREMENT":PM$(3) = "CREDIT/DEBIT ":PM$(4) = "CODE COMPTA. "
10450 C(2) = 8:C(1) = 5:C(0) = 4:C(4) = 9
10460 B(2) = 12:B(1) = 6:B(4) = 66
10470 Z(2) = 8:Z(1) = 5:Z(4) = 9
10480IF CA = 128THEN C = PEEK (7): GOTO10590
10490 VTAB 15: POKE1403,0: PRINT"CHOISISSEZ LE MOYEN D'IDENTIFICATION"LI$
10500 VTAB 16: PRINT PM$(0);: POKE1403,20: PRINT PM$(1);: POKE1403,40: PRINT PM$(2)
10510POKE1403,0: PRINT PM$(3);: POKE1403,20: PRINT PM$(4)
10520 C = 0
10530 VTAB 16 + INT (C / 3): POKE1403,20 * (C - 3 * (C > 2)): PRINT I$PM$(C)N$: IF C < 3THENPRINT
10540GOSUB10000: IF KY = 21THEN VTAB 16 + INT (C / 3): POKE1403,20 * (C - 3 * (C > 2)): PRINT PM$(C):C = C + 1 - 5 * (C = 4): GOTO10530
10550IF KY = 8THEN VTAB 16 + INT (C / 3): POKE1403,20 * (C - 3 * (C > 2)): PRINT PM$(C):C = C - 1 + 5 * (C = 0): GOTO10530
10560IF (KY = 32 OR KY = 10 OR KY = 11) AND C > < 2THEN VTAB 16 + INT (C / 3): POKE1403,20 * (C - 3 * (C > 2)): PRINT PM$(C):C = C + 3 - 6 * (C > 2): GOTO10530
10570IF KY = 27THENGOSUB10040: POP : RETURN
10580IF KY < > 13THENCALL2355: GOTO10530
10584IF C = 0THEN10590
10585GOSUB10040: VTAB 16: POKE1403,0: PRINT"A partir de quel enregistrement ?";:VB = 16:HB = 38: GOSUB10050
10586IFVAL (T$) = 0 AND T$ < > ""THEN10585
10587 MAX = VAL (T$): IF T$ = ""THEN MAX = 1
10590POKE7,C
10600 VTAB 16: PRINT LI$: PRINT LI$
10610IF C = 2THENGOSUB10980:WX = C:C = 2: IF WX < > 0THEN T$ = PM$(WX): GOTO10770
10620GOSUB10040
10630PRINT D$:Z$(2) = "N. DE CHEQUE ":Z$(0) = PM$(0):Z$(4) = "CODE COMPTA."
10640 Z$(1) = "DATE "
10650IF C = 1THENGOSUB10110: IF T$ < > CHR$ (27) THEN T$ = DA$: GOTO10770
10660IF C = 1THENGOSUB10040: POP : RETURN
10670IF C < > 3THEN10740
10680 VTAB 15: PRINT"(C)REDIT OU (D)EBIT ?": GOSUB10000
10690IF KY = 27THENGOSUB10040: POP : RETURN
10700IF KY < > 99 AND KY < > 100THENCALL2355: GOTO10680
10710IF KY = 99THEN Z$(3) = "CREDIT ":B(3) = 47:Z(3) = 8
10720IF KY = 100THEN Z$(3) = "DEBIT ":B(3) = 56:Z(3) = 9
10730 C(3) = Z(3): GOSUB10040
10740 VTAB 15: PRINT Z$(C);:VB = 15:HB = LEN (Z$(C)) + 2: GOSUB10050
10750IFVAL (T$) > 0 AND C = 3 AND C(3) = 9THEN T$ = STR$ ( - VAL (T$))
10760IF T$ = CHR$ (27) THENGOSUB10040: POP : RETURN
10765IFVAL (T$) < > 0 AND C = 2THEN T$ = RIGHT$ ("0000000" + STR$ ( VAL (T$)),7)
10770GOSUB10040: POKE1403,0: VTAB 15: PRINT Z$(C)" ==> "T$LI$: PRINT LI$
10780IFLEN (T$) > C(C) THEN10610
10790IFLEN (T$) < C(C) THEN T$ = T$ + " ": GOTO10790
10795IF C < > 4THEN10800
10796 T1$ = "": FOR L = 1 TO LEN (T$):L1 = 0: IFASC ( MID$ (T$,L,1)) > 96THEN L1 = 32
10797 T1$ = T1$ + CHR$ ( ASC ( MID$ (T$,L,1)) - L1): NEXT
10798 T$ = T1$
10800IF C = 0 AND ( VAL (T$) > = SU OR VAL (T$) < 1) THEN10610
10810IF C = 0THEN I = VAL (T$): GOSUB10410:A$(1) = A$: RETURN
10830 I = SU - 1: IF SU = 1THEN10900
10840PRINT D$"READ/GESBANQ/COMPTE/"FI$",R"I
10850INPUT A$: PRINT D$: GOSUB11120: IF MID$ (A$,B(C),Z(C)) = T$THENGOSUB10910
10860 VTAB 17: PRINT A$LI$
10870IFPEEK ( - 16384) = 155THENGOSUB10040: POP : RETURN
10880 I = I - 1: IF I > = MAX THEN10840
10890PRINT D$
10900CALL2441: GOSUB10040: VTAB 15: PRINT"LA DONNEE RECHERCHEE N'A PAS ETE TROUVEE.": POP : RETURN
10910IFLEN (A$) > = 80 AND XE < > 1THENRETURN
10920 VTAB 15: POKE1403,0: PRINT A$: VTAB 17: PRINT LI$: VTAB 16
10925 M$ = T$
10930PRINT"Est-ce la bonne fiche (O/N)";:VB = 16:HB = 29: GOSUB10050
10935IF T$ = CHR$ (27) THENGOSUB10040: POP : POP : RETURN
10936 T$ = LEFT$ (T$,1)
10940IF T$ = "N" OR T$ = "n"THENGOSUB10040:T$ = M$: VTAB 15: PRINT Z$(C)"==> "T$LI$: RETURN
10950IF T$ < > "O" AND T$ < > "o"THENCALL2355: GOTO10920
10970 A$(1) = A$: POP : RETURN
10980POKE1403,0: VTAB 16: PRINT"TYPE DE PAIEMENT"
10990 PM$(0) = "CHEQUE ":PM$(1) = "CB. ":PM$(2) = "PREL. ":PM$(3) = "VIR. ":PM$(4) = "AUTRE "
11000IF CA < > 0THEN C = PEEK (9): GOTO11080
11010 C = 0: PRINT I$PM$(0)N$;: POKE1403,18: PRINT PM$(1);: POKE1403,36: PRINT PM$(2);: POKE1403,54: PRINT PM$(3);: POKE1403,72: PRINT PM$(4)
11020 VTAB 17: POKE1403,18 * C: PRINT I$PM$(C)N$
11030GOSUB10000
11040IF KY = 21THEN VTAB 17: POKE1403,18 * C: PRINT N$PM$(C):C = C + 1 - 5 * (C = 4): GOTO11020
11050IF KY = 8THEN VTAB 17: POKE1403,18 * C: PRINT N$PM$(C):C = C - 1 + 5 * (C = 0): GOTO11020
11060IF KY = 27THEN C = - 1: POP : GOSUB10040: RETURN
11070IF KY < > 13THENCALL2355: GOTO11030
11080POKE9,C: VTAB 17: POKE1403,0: PRINT LI$: RETURN
11090FOR Z = D TO F
11095 VTAB 23
11100PRINT D$"READ/GESBANQ/COMPTE/"FI$",R"Z: INPUT A$: GOSUB11120: VTAB Z - D + VB: PRINT A$: NEXT
11110 VTAB 23: PRINT D$: RETURN
11120 B$ = LEFT$ (A$,4) + " " + MID$ (A$,5,5) + " " + MID$ (A$,10,8) + " " + MID$ (A$,18,25) + " " + MID$ (A$,43,8) + " " + MID$ (A$,51,9) + " " + MID$ (A$,60,9): IFLEN (A$) = 73THEN B$ = B$ + " " + RIGHT$ (A$,5)
11130 A$ = B$: RETURN
11140 B$ = LEFT$ (A$,4) + MID$ (A$,6,5) + MID$ (A$,12,8) + MID$ (A$,21,25) + MID$ (A$,47,8) + MID$ (A$,56,9) + MID$ (A$,66,9): IFLEN (A$) = 80THEN B$ = B$ + RIGHT$ (A$,5)
11150 A$ = B$: RETURN
12000 IN = 1:SI = VAL (CC$(0)):T = 0
12002 T1$ = "": FOR L = 1 TO LEN (T$):L1 = 0: IFASC ( MID$ (T$,L,1)) > 96THEN L1 = 32
12003 T1$ = T1$ + CHR$ ( ASC ( MID$ (T$,L,1)) - L1): NEXT
12010IF IN > SI THEN T = - 1: RETURN
12020 MI = INT ((IN + SI) / 2)
12030PRINT D$"READ/GESBANQ/CODE,R"MI: INPUT CC$: PRINT D$
12040IF T1$ = CC$THEN T$ = T1$: RETURN
12050IF T1$ < CC$THEN SI = MI - 1: GOTO12010
12060IF T1$ > CC$THEN IN = MI + 1: GOTO12010
12100PRINT D$"READ/GESBANQ/CODE,R"I
12120INPUT CC$: PRINT D$
12130RETURN
50010 D$ = CHR$ (4)
50020PRINT D$"open ges1"
50030PRINT D$"write ges1"
50040 LIST
50050PRINT D$"close": END