Avatar

generate listing bank transactions (Sample Programs)

by DickStomp2 @, NL- SASSENHEIM, Sunday, February 22, 2015, 19:35 (1023 days ago)

Because we have to pay for periodic reports of the bank about our transactions, I wrote a Basic program to read the free download of the transactions and print it.

First the Job Control:

#! /bin/bash

# ASN Dick dagafschriften genereren; generate print banktransactions
cd /home/dick/Dropbox/Geld/Afschriften # because all is in DropBox

# read bank, format print records and saldo
basic256 -r ASND.kbs

# print with LibreOffice Writer Monospace 9
lowriter ASND.rtf

Now the Basic-256 ASND.kbs:

# Afschriften ASN genereren

# Invoer
# ASN Dick

#Layout ASN CSV 2004 separator ;
# A 00 Datum
# B 01 Rekening Debiteur
# C 02 Rekening Crediteur
# D 03 Naam
# E 04 anoniem
# F 05 anoniem
# G 06 anoniem
# H 07 Valuta
# I 08 anoniem
# J 09 anoniem
# K 10 Bedrag
# L 11 anoniem
# M 12 anoniem
# N 13 anoniem
# O 14 Type
# P 15 anoniem
# Q 16 anoniem
# R 17 Omschrijving
# S 18 anoniem

# Layout uitvoer
# A 00 Datum
# C 02 Rekening Crediteur
# D 03 Naam
# K 10 Bedrag
# O 14 Type
# R 17 Omschrijving

gosub Init
gosub VraagMaand

open (invoer, Invoer$)
if exists (Uitvoer$) then
kill (Uitvoer$)
end if
open (uitvoer, Uitvoer$)
Gosub BeginBlad

while not eof (invoer)
record$ = readline (invoer)
In = In + 1
gosub HaalVelden
gosub alinea
end while

call editnum (ref(Bij), ref(Bedrag$))
writeline (uitvoer, spatie$ + "Totaal Bij "+ Bedrag$)
call editnum (ref(Af), ref(Bedrag$))
writeline (uitvoer, spatie$ + "Totaal Af "+ Bedrag$)

close (invoer)
close (uitvoer)

print "In " + In + " > Klaar > Uit" + Uit
print "Bij " + Bij + " Af " + Af
end

VraagMaand: #
input "JaarMaand jjjjmm ",jjjjmm$
Invoer$ = "../ASND"+jjjjmm$+".csv"
print Invoer$
return

Init: #
Kopregel$ = "ASN D " + day + "/" + (month + 1) + "/" + year
invoer = 0
Uitvoer$ = "ASND.rtf"
uitvoer = 1
dim buffer$(9)
buf = 0
bufmax = 9
In = 0
Uit = 0
bedrag = 0
Af = 0
Bij = 0
Bedrag$ = " "
n = 0
regel = 0
regelmax = 62
spatie$ = " "
for n = 1 to 50
spatie$ = spatie$ + " "
next n
return

HaalVelden: #
L = length(record$)
record$ = mid(record$,2,L-1) # strip leading and traling dubbelquote
veld$ = explode (record$, '";"')
datum$ = veld$[0] + " "
AccDeb$ = veld$[1]
AccCred$ = right(spatie$+veld$[2],18)+ " "
naam$ = left(veld$[3]+spatie$,25)
# valuta$ = veld$[9] + " "
bedrag$ = right(spatie$+veld$[10]+" ",10)
bedrag = float(bedrag$)
if bedrag < 0 then
Af = Af + bedrag
else
Bij = Bij + bedrag
end if
type$ = veld$[14] + " "
oms$ = veld$[17]
return

alinea: #
buf = 1
buffer$[buf] = datum$ + AccCred$ + naam$ +" "+ type$ + bedrag$
buf = buf + 1
Uit = Uit + 1
for kol = 1 to 208 step 40
if mid(oms$,kol,40) > chr(32) then
buffer$[buf] = left(spatie$,11) + mid(oms$,kol,40)
buf = buf + 1
Uit = Uit + 1
end if
next kol
buffer$[buf] = chr(32)
bufmax = buf
if regel + buf > regelmax then
write (uitvoer, chr(12)) # FormFeed
gosub BeginBlad
end if
for buf = 1 to bufmax
writeline (uitvoer, buffer$[buf])
regel = regel + 1
next buf
return

BeginBlad: #
writeline (uitvoer, Kopregel$)
writeline (uitvoer, chr(32))
regel = 2
return

include "editnum.kbs"

And the Include Module editnum.kbs:

# EDITNUM
# omzetten van een bedrag voor afdrukken
# formatting a sum for printing
# invoer decimaal getal van maximaal 10 cijfers
# input decimal number of maximum 10 digits
# uitvoer een string van 11 posities
# output a string of 11 positions
# wordt aangeroepen met call editnum(ref(getal),ref(bedrag$))
# is called with call editnum(ref(number),ref(sum$))
# subroutine editnum(ref(getal),ref(bedrag$))
# subroutine editnum(ref(number),ref(sum$))
# next two lines for testing
#getal = -12345.678
#print getal for testing
I = int(getal)
#print I
I$ = right(" "+string(I),8)
#print I$
D = (getal - I) * 100
if D < 1 then
D = D * -1
end if
#print D
D$ = left(string(D)+"00",2)
#print D$
bedrag$ = I$ + "." + D$
#print bedrag$
end subroutine


Complete thread:

 RSS Feed of thread

powered by my little forum