'$include "PB35.INC" wordt niet gebruikt in dit programma '************************************************************************* '** This code is written by: Henk Broekhuizen, 01-NOV-2000 ** '** for use with PB/DOS 3.2 and later ** '************************************************************************* '** Status: this source is donated to the public domain ** '** ** '************************************************************************* '** No responsibility is assumed or accepted. Use at your own risk. ** '************************************************************************* '** ** '** Henk Broekhuizen ** '** http://www.panthouse.org ** '** http://pb.doorhet.net ** '** http://home.planet.nl/~hank ** '** ** '************************************************************************* 'Programma voor het bedrukken van acceptgiro kaarten (3 per vel) CLS printer$="LPT1:" mededeling$="Donatie 2000" 'Variabele voor stapsgewijs testen van de functionaliteit test=0 'testfase 1&2: alleen naar een bestand schrijven 'testfase 3: wel printen, maar na ‚‚n bladzijde stoppen met printen 'testfase 4: wel printen, maar stoppen na drie bladen 'testfase 5: printen pas beginnen vanaf lijstnummer >124 '++++++++++++++++++ Defini‰ren van de constanten zoals marges, aantallen +++ top=1000 'maximaal aantal namen linkermarge=19 'afstand tussen uiterst links en de plaats van NAW=lm tab1=5 'tabulatie tussen linkermarge en bedrag in guldens tab2=5 'tabulatie tussen guldens en centen tab3=5 'tabulatie tussen bedrag en mededeling bij een bedrag<>0 tab4=18 'tabulatie tussen bedrag en mededeling bij een bedrag=0 tab5=1 'tabulatie tussen voorletters en achternaam regel1=1 'regels tussen eerste bedrag en bovenkant regel2=6 'regels tussen bedrag en NAW regel3=14 'aantal regels tussen twee giro's 'benoemen waar de data staat, er wordt niet getest op het bestaan ervan 'zonodig dit doen met: if Exist(invoer$) ..... ' invoer$="c:\pb\sources\accept~1\sadres.txt" invoer$="c:\dorpshui\donateur.txt" '++++++++++++++++++ Declaraties +++++++++++++++++++++++++++++++++ DIM nummer(top),voorl$(top),naam$(top),straat$(top),plaats$(top),bedrag$(top),temp$(top) IF test>=3 OR test=0 THEN uitvoer$=printer$: 'tijdens testen uit-REM-men ELSE '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 'maak voor test een file aan ipv uitvoer meteen naar de printer 'neem het complete pad van het invoerbestand en het eerste deel 'van de bestandsnaam. Vervang de extensie door TMP a$=invoer$ a=INSTR(a$,".") IF a= 0 THEN 'bestandsnaam bevat geen punt dus deze toevoegen met als extra TMP uitvoer$=invoer$+".TMP" ELSE WHILE RIGHT$(a$,1)<>"." AND LEN(a$)>1 a$=LEFT$(a$,LEN(a$)-1) WEND uitvoer$=a$+"TMP" END IF END IF lm$=SPACE$(linkermarge) 'maak een een string van de linkermarge '============== We kunnen los: beginnen met het bronbestand ============== OPEN invoer$ FOR INPUT AS #1 OPEN "c:\temp.txt" FOR OUTPUT AS #9 aantal=0 PRINT "Inlezen NAW" WHILE (NOT EOF(1)) AND (aantal0 THEN 'bedrag staat extra naar rechts tov de linkermarge REPLACE "." WITH SPACE$(tab2) IN a$ PRINT #9,lm$+SPACE$(tab1)+a$+SPACE$(tab3)+mededeling$+" "+STR$(nummer(r)) ELSE 'geen bedrag gegeven of geen cijfers in het bedrag PRINT #9,lm$+SPACE$(tab4)+mededeling$+" "+STR$(nummer(r)) END IF FOR s=1 TO regel2 PRINT #9,"" NEXT s PRINT #9,lm$+voorl$(nummer(r))+ SPACE$(tab5)+naam$(nummer(r)) PRINT #9,lm$+straat$(nummer(r)) PRINT #9,lm$+plaats$(nummer(r)) 'na drie acceptgiro's komt het volgende vel, dus formfeed geven IF r/3=INT(r/3) THEN 'formfeed: werp de bladzijde uit PRINT #9,CHR$(12); 'FF IF test=3 THEN EXIT FOR 'stop na ‚‚n blad bij testen IF test=4 AND r=>9 THEN EXIT FOR 'stop na drie vellen LOCATE 10,1 ' delay(5): ' laat de inkt even drogen . . . PRINT "Bezig met giro's van bladzijde ";INT(r/3)+1; 'cre‰er bovenmarge op nieuwe vel FOR s=1 TO regel1 PRINT #9,"" NEXT s ELSE 'anders de scheidingsruimte tussen twee giro's op een vel FOR s=1 TO regel3 PRINT #9,"" NEXT s END IF NEXT r PRINT PRINT "Klaar met de opdrachten" PRINT CLOSE #1 CLOSE #9 CLOSE END '*********************************************************************** Sorteer: PRINT "Het bestand sorteren op plaats en straat" 'copieer eerst het sleutelveld naar een tijdelijke array voor het sorteren 'op straat ivm bezorgen door eigen mensen FOR r=1 TO aantal temp$(r)=plaats$(r)+"/"+straat$(r) NEXT r 'sorteer zonder verschil tussen 'a' en 'A' ARRAY SORT temp$() FOR aantal,COLLATE UCASE,TAGARRAY nummer() 'door deze array te gebruiken als nieuwe index wordt er op plaats en 'straat-volgorde de informatie verwerkt PRINT "Sorteren gereed"