VIP Professional Programmierkurs Teil 7: Templates

Den Vip-Professionals, die mich dazu motiviert haben, trotz meiner 16-stündigen Arbeitstage noch den ATARI-Ferrari anzuwerfen und den Teil 7 unseres Programmierkurses abzuliefern, meinen besten Dank. Meinem Lektor Marcelo stehen mit Sicherheit die Haare zu Berge, wenn er an seine vielfachen Motivationstelefonate, die er mit meiner Frau führte, denken muß. Doch leider bin ich eben nur ein Freizeitschreiber, der auch mal ans Geld verdienen denken muß und seinem ständigen Arbeitgeber pflichtgemäß zur Verfügung stehen sollte. Doch jetzt habt Ihr ihn ja, den Teil 7!

Wie im letzten Teil angekündigt, wollen wir uns heute mit der Programmierung eines Templates, also einer Anwendung unter der VIP-Schale beschäftigen. Vielen Leserbriefen konnte ich entnehmen, daß Vip sehr oft in kleineren Unternehmen eingesetzt wird, um Rechnungen. Tabellen und Kassenbücher zu erstellen. Ich möchte Ihnen anhand des Templates Rechnung.WKS aufzeigen, wie elegant und dennoch einfach man mit VIP eine Automatisierung solcher Rechnungsschreibungen vornehmen kann.

Die Idee für Rechnung.WKS kam aus einer Leseranfrage. Eine KFZ-Werkstatt fakturiert ihre Reparatur- und Kleinteilerechnungen mit einer VIP-Lösung. Die dabei auftretenden Probleme mit den nicht zu eliminierenden Nullen bei einer Rechenanweisung und der zu geringe Automatismus in der Anwendung waren Anlaß zu einer Weiterentwicklung.

Unser Template soll folgende Eigenschaften aufweisen:

A.) menügesteuerte Bedienerführung
B.) menügesteuerte Eingabesteuerung
C.) Archivierungsmöglichkeit mit Wiedervorlage
D.) Schnittstelle zur Textverarbeitung
E.) Endlosdruck auf Rechnungsformularen
F.) Schnittstelle zu einer offenen Postenliste (erweiterbar)
G.) einfache Bedienbarkeit

RAUM und ZEIT

Jeder Vip-Spezialist hat bei der Programmierung eines Templates seineeigene Vorgehensweise. Ich plane zunächst immer den räumlichen Aufbau meines Templates (Abb.2).

Die Bereiche: Macros, Druckerausgabe, Rechnungsdateneingabe und Menüauswahl finden ihren festen Bereich. Anwender, die bereits mehr als zehn solcher Templates entwickelt haben, wissen es zu schätzen, jedem Template einen sogenannten Lageplan der Bereiche beizulegen.

Schritt für Schritt, a little Bit

Bei unserer Anwendung soll gewährleistet sein, daß jeder Anfänger so zurecht kommt, als wäre die Anwendung Rechnung.WKS ein Front-End-Programm. Der Anwender soll mit der Vip-spezifischen Menüleistensteuerung und den Befehlen nicht konfrontiert werden. Die Menüsteuerung muß sehr durchsichtig aufgebaut und dokumentiert werden.

Das Erstellen eines Menüplanes für die Anwendung ist immer Ausgangspunkt für die ersten Macroschritte in unserem Template. Die Abbildung 3 zeigt den Menübaum, der in Rechnung.WKS seine Anwendung findet.

Laßt die Tasten klimpern

Ich habe mich lange gefragt, ob es sinnvoll sei. ein doch recht langes Programmlisting in der Zeitschrift abzudrucken. Viele Leserzuschriften haben mich ermuntert, es doch zu wagen. Immerhin vergehen so ziemlich 2-3 Stunden, bis die Spaltenbreiten eingestellt, die Bereiche benannt, die Druckersequenzen angepaßt und die Nerven am Ende sind.

Ob der Lerneffekt auch wirklich als solcher wie eine Bombe einschlägt, mag nunmal dahingestellt sein. Ich habe mich zu Zeiten meines Pocketcomputers PC1500A immer riesig gefreut, wenn alles ohne ERROR-Meldung funktioniert hat. Das einfache Sharp-Basic, später auch etwas Maschinensprache, habe ich ja auch nur durch Abtipperei in das seltsame Spatzenhirn (mein eigenes) transferieren können.

Mein teuerstes Listing ist übrigens auf einem Flughafen in Amsterdam entstanden. Ich war damals so eifrig, daß ich die letzte Maschine versäumt habe und eine Nacht in einem der teuersten Hotels verbringen durfte. Zum Glück gibt es bis heute noch keinen portablen Mega-ST! Für die Geldhaber und Ökonomen unter uns gibt es das Programm Rechnung.WKS auch auf der Monatsdisk von MAXON.

Abbildung 2: Räumlicher Aufbau des Templates

Lernen und die Folgen

Viele Leser unter Ihnen, die mit unserem Programmierkurs erst so richtig neugierig auf Vip-Professional gemacht wurden, wird die systematische Abtipperei und das Nachvollziehen einzelner Macrosequenzen sehr hilfreich sein. Sie lernen unter anderem auch das Eliminieren von Zelleninhalten mit dem Wert Null. Textformatierungen, Input-Deklarationen, Menüsteuerungen und Menüaufforderungen, Schnittstellen-und File-Export-Funktionen, globale Arbeitsblattsteuerungen und, und, und. Also nur Mut, es kann überhaupt nichts schiefgehen.

Wenn die Vip-Zellen schön abgetippt wurden, geht es an die Bereichsbenennung unserer Macronamen.

Die Sequenz:

/RNC(NAME)~(Bereich)~

ist Ihnen ja recht bekannt.

Die zu benennenden Bereiche im Template Rechnung.WKS sehen Sie in Abbildung 4.

    CALC            AC49        DATUM       V2
    INPUT           B22..D61    MENUA       AC9
    MENUB           AC14        MENUC       AC92
    MENUD           AC104       MENUE       AC112
    MENUF           AC122       NEU         AC18
    OUTANSCHRIFT    O10         OUTBETREFF  O20
    OUTDATA         O27..R51    OUTDATUM    R20
    OUTNUMMER       Q20         OUTPUT      O1..R60
    OUTTEXT1        O21         OUTTEXT2    O22
    PREISINDM       R27         PREISSUMM   T27..T51
    PROTOKOLL       B28..B30    RGANSCHRIFT B22..B26
    RGBETREFF       B28         RGDATA      B37..D61
    RGDATUM         B30         RGNUMMER    B29
    RGPOSANZ        C37..C61    RGPOSEPREIS D37..DG1
    RGPOSTEXT       B37..BS1    RGTEXT1     B32
    RGTEXT2         B33         SUMINPUT    F37..F61
    SUMME           F64         SUMOUTPUT   R27..R51
    NERBIN          U3..U10     WERBOUT     O53
    \0              AC3         \A          AC111
    \D              AC91        \E          AC43
    \I              AC121       \M          AC8
    \N              AC13        \S          AC103

Abbildung 4: Zu benennende Bereiche in Rechnung.WKS

Die Spaltenbreiten habe ich nach meinen Bedürfnissen auf folgende Einstellungen gebracht:

A=16,B=35,C=7,D=10, 
E-G=9,H=14,I-K=9,L=2, 
M-AZ=9

Ein kleiner Macro kann hier ja auch schon nützlich sein: /WCS.

Bei der Auflistung der Zelleninhalte werden zusätzlich einige Attribute genannt, die folgende Bedeutung haben:

AC11: U(D1) = Zelle AC11

wurde ungeschützt auf Datum1 formatiert.

BC11: U (F2) = Zelle BC11

wurde ungeschützt auf 2 Nachkommastellen formatiert. Also bitte unbedingt daran denken.

Bevor Sie mit der Eingabe beginnen, sollten Sie unbedingt prüfen ob Sie eine VIP-Version 1.1> US (englische Menüs), GEM oder TEXT besitzen. Andernfalls sind die Macros nicht lauffähig.

Alles hat einmal ein Ende

Im nächsten und vorläufig auch letzten Teil des VIP-Programmierkurses werde ich die Kombination von Arbeitsblättern sowie den Export von Zellenbereichen, das Druckaufbereiten und einige Leserfragen abschließend besprechen.

Bis bald. HDS

Macrolisting-Anfang: 1.Zelle AA1 letzte Zelle: AD127

Zelle:  Eingaben

  AA1:  'Macros
  AB1:  'Name
  AC1:  'Syntax
  AA2:  \-
  AB2:  \-
  AC2:  \-
  AD2:  \-
  AE2:  \-
  AA3:  'Start
  AB3:  '\0
  AC3:  '/WTC{HOME}
  AC4:  '/WGRM
  AC5:  '/XG\M~
  AA8:  'Menü A
  AB8:  '\M
  AC8:  '/XMMENUA-
  AC9:  'NEU
  AD9:  'EDIT
  AE9: 'ARCHIV
  AF9:  'DRÜCK
  AG9:  'SERVICE
  AH9:  'INSTAL
  AI9:  'HALT
  AJ9: 'QUIT
  AC10:   'Neue Rechnung erstellen
  AD10:   'Rechnungsdaten edieren
  AE10:   'Rechnung archivieren (PRN/WKS)
  AF10:   'Rechnung drucken
  AG10:   'Template Sichern etc.
  AH10:   'Steuersatz,Werbetexte und Datum installieren
  AI10:   'Menü verlassen
  AJ10:   'Arbeit beenden.
  AC11:   '/XG\N~
  AD11:   '/XG\E~
  AR11:   '/XG\A~
  AF11:   '/XG\D~
  AG11:   '/XG\S~
  AH11:   '/XG\I~
  AI11:   '/xq~
  AJ11:   '/fr
  AA13:   'Menu B
  AB13:   '\N
  AC13:   '/XMMENUB~
  AA14:   'neu
  AC14:   'Neu
  AD14:   'Quit
  AC15:   'Neue Rechnung erstellen
  AD15:   'zurück
  AC16:   '/XGNEU~
  AD16:   '/XG\M~
  AA18:   'Rechnung
  ABI8:   'NEU
  AC18:   '{Home}/wgra/wtc/rerganschrift~
  AC19:   '/rergposanz~
  AC20:   '/rergposepreis~
  AC21:   '/rergpostext-
  AC22:   '/reRGTEXT1~
  AC23:   '/reRGTEXT2~
  AC24:   '/cDATUM~RGDATUM~/cSUMME~D33~/wwc/wtc
  AC25:   '{HOME}{GOTO}A22~{RIGHT}/WTB
  AC26:   '/XLAnrede eingeben: ~B22~{GOTO}B23~
  AC27:   '/XLVorname/Name eingeben: ~B23~{GOTO}B24~
  AC28:   '/XLz.Hd. (Zusatz) eingeben: ~B24~{GOTO}B25~
  AC29:   '/XLStraße eingeben: ~B25~{Goto}B26~
  AC30:   '/XLPostleitzahl/Ort eingeben: ~B26~
  AC31:   '{Goto}b28~{Edit}{?}~
  AC32:   '{Goto}b29~{Edit}{?}~
  AC33:   '{Goto}b30~/ruB30~{Edit}{?}~
  AC34:   '/rpB30~
  AC35:   '{Goto}b32~
  AC36:   '/XLRechnungstext 1 eingeben: ~B32~
  AC37:   '{Goto}b33~
  AC38:   '/XLRechnungstext 2 eingeben: ~B33~
  AC39:   '{Down}{Down}{Down}{Down}/wtb
  AC40:   '/riRGDATA~
  AC41:   '/wgrm/XG\M~
  AA43:   'Edit
  AB43:   '\E
  AC43:   '/wgra/wwc/wtc
  AC44:   '/cDATUM~RGDATUM~/cSUMME~D33~
  AC45:   '{HOME}{GOTO}A22~{RIGHT}/WTB
  AC46:   '/wgrm/xq~
  AA48:   'Subroutine
  AA49:   'CALC
  AB49:   'CALC
  AC49:   '/wgrm/crganschr
  AC50:   'ift~outanschrift~/crgbetreff~outbetreff~
  AC54:   '/crgnummer~outnummer~/crgdatum~outdatum~/c
  AC58:   'rgtext1~outtext1~/crgtext2~outtext2~/crg
  AC62:   'data~outdata~/cPREISSUMM~PREISINDM~{Calc}
  AA64:   'Null
  AC64:   '/XIr27=0~/rer27~
  AA65:   'loeschen
  AC65:   '/XIr28=0~/rer28~
  AC66:   '/XIr29=0~/rer29~
  AC67:   '/XIr30=0~/rer30~
  AC68:   '/XIr31=0~/rer31~
  AC69:   '/XIr32=0~/rer32~
  AC70:   '/XIr33=0~/rer33~
  AC71:   '/XIr34=0~/rer34~
  AC72:   '/XIr35=0~/rer35~
  AC73:   '/XIr36=0~/rer36~
  AC74:   '/XIr37=0~/rer37~
  AC75:   '/XIr38=0~/rer38~
  AC76:   '/XIr39=0~/rer39~
  AC77:   '/XIr40=0~/rer40~
  AC78:   '/XIr41=0~/rer41~
  AC79:   '/XIr42=0~/rer42~
  AC80:   '/XIr43=0~/rer43~
  AC81:   '/XIr44=0~/rer44~
  AC82:   '/XIr45=0~/rer45~
  AC83:   '/XIr46=0~/rer46~
  AC84:   '/XIr47=0~/rer47~
  AC85:   '/XIr48=0~/rer48~
  AC86:   '/XIr49=0~/rer49~
  AC87:   '/XIr50=0~/rer50~
  AC88:   '/XIr51=0~/rer51~
  AC89:   '/wgra/xr-*
  AA91:   'Druck
  AB91:   '\D
  AC91:   '/XMmenuc~
  AC92:   'Druck
  AD92:   'Seite
  AE92:   'Zeile
  AF92:   'Anfang
  AG92:   'Quit
  AC93:   'Rechnung drucken
  AD93:   'Seitenvorschub
  AE93:   'Zeilenvorschub
  AF93:   'Blattanfang setzen !
  AG93:   'Menü verlassen
  AC94:   '/xcCALC~
  AD94:   '/pppq/xg\D~
  AE94:   '/ppl/xg\D~
  AF94:   '/ppaq/xg\D~
  AG94:   '/xg\M~
  AC95:   '/wtc{Goto}b70~/cprotokoll~~
  AC96:   '/ppcaroutput~oml4~mr80~mt0~mb6~
  AC97:   's\027\018-
  AC98:   'p72~qagq{home}
  AC99:   '/xg\D~
  AA103:  'Service
  AB103:  '\S
  AC103:  '/XMmenud~
  AC104:  'Ersetzen
  AD104:  'Sichern A
  AE104:  'Sichern B
  AF104:  'Pfad neu
  AG104:  'Quit
  AC105:  'Arbeitsblatt sichern und ersetzen
  AD105:  'auf A:\ sichern (neu)
  AE105:  'auf B:\ sichern (neu)
  AF105:  'Neues Directory einstellen
  AG105:  'Menü verlassen
  AC106:  '{Home}
  AD106:  '{Home}
  AE106:  '{Home}
  AF106:  '/fd{?}~/xg\S~
  AG106:  '/xq~
  AC107:  '/wtc/fs~r
  AD107:  '/wtc/fdA:\~/fs~r
  AE107:  '/wtc/fdB:\~/fs~r
  AA111:  'Archiv
  ABI11:  '\A
  AC111:  '/XMmenuE~
  AC112:  'Sichern (WKS)
  AD112:  'Archivieren (PRN)
  AE112:  'Wiedervorlage
  AF112:  'Quit
  AC113:  'Rechnung zur Wiedervorlage WKS sichern
  AD113:  'Rechnung im ASCII.PRN-Format absp.
  AE113:  'Rechnung laden (WKS)
  AF113:  'Menü verlassen
  AC114:  '/xcCALC~/WTC{GOTO}B29~
  AD114:  '/xcCALC~/WTC{GOTO}B29~
  AE114:  '/WTC{GOTO}B22~
  AC115:  '/fxv{?}~
  AD115:  '/pf{?}~
  AE115:  '/wtc
  AC116:  'input~
  AD116:  'routput~
  AE116:  '{Goto}b22~
  AC117:  '/XG\M~
  AD117:  'oouqagq
  AE117:  '/fcce{?}~
  AD118:  '/XG\M~
  AA121:  'Inst
  ABI21:  '\I
  AC121:  '/XMmenuF~
  AC122:  'Zeigen
  AD122:  'Sichern
  AE122:  'zurück
  AC123:  'Statuswerte zeigen
  AD123:  'Update
  AE123:  'Menü verlassen
  AC124:  '{Home}/wtc{Goto}v1~/
  AD124:  '/cWERBIN~WERBOUT~
  AE124:  '/xg\M~
  AC125:  'riv1.v10~
  AD125:  '{Goto}werbout~/
  AC126:  '/xg\I~
  AD126:  'rjo53.o64~
  AD127:  '/xg\S~

Das Macro-Listing

Blatt Listing Anfang: 1.Zelle B1 letzte Zelle: B79 

Zelle: Eingabe

B1:   ^Rechnungsschreibung
H1:   'CALC
I1:   'AC49
L1:   'I
M1:   'Zeilen
N1:   1
T1:   'I
U1:   'Parameter:
V1: U 0.14
W1:   '% Mehrwertsteuersatz
B2:   ^unter
H2:   'DATUM
I2:   'V2
L2:   'I
N2:   2
T2:   'I
V2: U(D1) @INT(@TODAY)
W2:   '  Datum
B3:   ^VIP-PROFESSIONAL
H3:   'INPUT
13:   'B22..D61
L3:   'I
N3:   3
T3:   'I
V3: U 'Fahren Sie unseren Renault Alpine
W3:   '— 1.Zeile Werbetext
B4:   ^bitte Taste [ALT] und [Buchstabe]
H4:   'MENUA
I4:   'AC9
L4:   'I
M4:   'Absender
N4:   4
T4:   'I
V4: U 'V6 Turbo doch einmal Probe !
W4:   '- 2.Zeile Werbetext
B5:   \-    H5:   'MENUB
I5:   'AC14
L5:   'I
N5:   5
T5:   'I
V5: U 'Bei 250 km/h zeigt sich die
W5:   '- 3.Zeile Werbetext
B6: U 'M      = MENUE
H6:   'MENUC
I6:   'AC92
L6:   'I
N6:   6
T6:   'I
V6: U 'hervorragende Strassenlage 
W6:   '- 4.Zeile Werbetext
B7: U 'N      =  - Neue Rechnung erstellen
H7:   'MENUD
I7:   'AC104
L7:   'I
N7:   7
T7:   'I
W7:   '- 5.Zeile Werbetext
B8: U 'E      =  - Neue Rechnung edieren
H8:   'MENUE
I8:   'AC112
L8:   'I
N8:   8
T8:   'I
W8:   '- 6.Zeile Werbetext
B9: U 'A      =  - archivieren (WKS + PRN)
H9:   'MENUF
I9:   'AC122
L9:   'I
N9:   9
T9:   'I
W9:   '- 7.Zeile Werbetext
B10: U 'D     =  - Druck      (direkt)
H10:  'NEU
I10:  'AC18
L10:  'I
M10:  'Anschrift
N10:  10
O10: U 'Herr T10: 'I
W10:  '- 8.Zeile Werbetext
B11: U 'S     =  - Service     (Template)
H11:  'OUTANSCHRIFT
I11:  'O10
L11:  'I
N11:  11
O11: U 'Anton Testkunde
T11:  'I
U11:  \-
V11:  \-
W11:  \-
X11:  \-
Y11:  \-
B12: U 'H = Halt
H12:  'OUTBETREFF
I12:  'O20 
L12:  'I
N12:  12
012: U 'z.Hd. Repararurabwicklung 
T12:  'I
B13: U 'Q   =    - Quit     (ENDE)
H13:  'OUTDATA
I13:  'O27..R51
L13:  'I
N13:  13
O13: U 'Ingersheimer Str. 12 
T13:  'I
B14: U 'I = INSTALLATION
H14:  'OUTDATUM
I14:  'R20
L14:  'I
N14:  14
O14: U 'D-7140 Ludwigsburg 
T14:  'I
B15:  \-  H15:   'OUTNUMMER
I15:  'Q20
L15:  'I
N15:  15
H16:  'OUTPUT
I16:  'O1..R60
L16:  'I
N16:  16
H17:  'OUTTEXT1
I17:  'O21
L17:  'I
N17:  17
H18:  'OUTTEXT2
I18:  'O22 
L18:  'I
N18:  18
H19:  'PREISINDM
I19:  'R27
L19:  'I
N19:  19
H20:  'PREISSUMM
120:  'T27..T51
L20:  'I
M20:  'BETREFF
N20:  20
O20: U 'R E C H N U N G 
P20:  'Nummer:
Q20: U "10/880201 
R20: (D1) @INT(@TODAY)
A21:  \-  B21: \-   C21: 'I
H21:  'PROTOKOLL
I21:  'B28..B30
L21:  'I
M21:  'Text 1
N21:  21
O21: U 'Reparatur Unfallschaden am
A22:  'Anrede_________>
B22: U 'Herr 
C22:  'I
H22:  'RGANSCHRIFT
I22:  'B22..B26
L22:  'I
M22:  'Text 2
N22:  22
O22: U 'Renault Alpine A310 V6 GT
A23:  'Name/Vorname___>
B23: U 'Anton Testkunde 
C23:  'I
H23:  'RGBETREFF
I23:  'B28
L23:  'I
N23:  23
O23:  \-
P23:  \-
Q23:  \-
R23:  \-
A24:  'Zusatz_________>
B24: U 'z.Hd. Reparaturabwicklung
C24:  'I
H24:  'RGDATA
I24:  'B37..D61
L24:  'I
N24:  24
O24:  'Positionsbeschreibungen
P24:  'Anzahl
Q24:  '   Preis a
R24:  '  Preis in DM
A25:  'Strasse________>
B25: U ' Ingersheimer Str. 12
C25:  'I
H25:  'RGDATUM
I25:  'B30
L25:  'I
N25:  25
O25:  \-
P25:  \-
Q25:  \-
R25:  \-
A26:  'PLZ/ORT_______>
B26: U 'D-7140 Ludwigsburg
C26:  'I
H26:  'RGNUMMER
I26:  'B29
L26:  'I
N26:  26
A27:  \-  B27: \-   C27: 'I
H27:  'RGPOSANZ
I27:  'C37..C61
L27:  'I
M27:  "1.Pos
N27:  27
O27: U 'Kotfluegel ausbessern
P27: U 1
Q27: U(F2) 850
R27: (F2) @ROUND((+Q27*P27),2)
T27: (F2) @ROUND((+S27*PREISINDM),2)
A28:  'Betreff________>
B28: U 'R E C H N U N G
C28:  'I
H28:  'RGPOSEPREIS
I28:  'D37..D61
L28:  'I
N28:  28
O28: U(F2) 'Scheinwerfereinsatz
P28: U 1
Q28: U(F2) 120
R28: (F2) @ROUND((+Q28*P28),2)
T28: (F2) @ROUND((+S28*R28),2)
A29:  'Nummer_________>
B29: U "10/880201 
C29:  'I
H29:  'RGPOSTEXT
I29:  'B37..B61
L29:  'I
N29:  29
O29: U 'Kleinteile
P29: U 5
Q29: U(F2) 28
R29: (F2) @ROUND((+Q29*P29),2)
T29: (F2) @ROUND((+S29*R29),2)
A30:  'Datum__________>
B30: (D1) @INT(@TODAY)
C30:  'I
H30:  'RGTEXT1
I30:  'B32
L30:  'I
N30:  30
T30: (F2) @ROUND((+S30*R30),2)
A31:  \-  B31: \-   C31: 'I
H31:  'RGTEXT2
I31:  'B33
L31:  'I
N31:  31
T31: (F2) @ROUND((+S31*R31) , 2)
A32:  'TEXT 1__________>
B32: U 'Reparatur Unfallschaden am
C32:  'I
D32:  'Netto-sum
H32:  'SUMINPUT
I32:  'F37..F61
L32:  'I
N32:  32
O32: U 'Bitte nutzen Sie die Vorteile eines 
T32: (F2) @ROUND((+S32*R32),2)
A33:  'TEXT 2___________>
B33: U 'Renault Alpine A310 V6 GT
C33:  'I
D33: (F2) @SUM($SUMINPUT)
H33:  'SUMME
I33:  'F64
L33:  'I
N33:  33
O33: U 'kontinuierlichen Fahrzeug-Checks. 
T33: (F2) @ROUND((+S33*R33),2)
A34:  \-
B34:  \-
C34:  \-
D34:  \-
E34:  'I
H34:  'SUMOUTPUT
I34:  'R27..R51
L34:  'I
N34:  34
O34: U 'Sicherheit geht bei uns vor !
T34: (F2) @ROUND((+S34*R34),2)
A35:  "POSITION
B35:  'TEXT
C35:  'ANZAHL
D35:  'Einz.PREIS
E35:  'I
H35:  'WERBIN
I35:  'V3..V10
L35:  'I
N35:  35
T35: (F2) @ROUND((+S35*R35),2)
A36:  \-
B36:  \-
C36:  \-
D36:  \-
E36:  'I
H36:  'WERBOUT
I36:  'O53
L36:  'I
M36:  "10.Pos
N36:  36
T36: (F2) @ROUND((+S36*R36),2)
A37:  1
B37: U 'Kotfluegel ausbessern
C37: U 1
D37: U(F2) 850
E37:  'I
F37:  @ROUND((+D37*C37),2)
H37:  '\0
I37:  'AC3
L37:  'I
N37:  37
T37: (F2) @ROUND((+S37*R37),2)
A38:  2
B38: U(F2) 'Scheinwerfereinsatz
C38: U 1    D38: U(F2) 120
E38:  'I     F38: @ROUND((+D38*C38),2)
H38:  '\A
138:  'AC111
L38:  'I
N38:  38
T38: (F2) @ROUND((+S38*R38), 2)
A39:  3
B39: U 'Kleinteile 
C39: U 5 
D39:  U(F2) 28 
E39:  'I
F39:  @ROUND((+D39*C39),2)
H39:  '\D
I39:  'AC91
L39:  'I
N39:  39
T39: (F2) @ROUND((+S39*R39) , 2)
A40:  4
E40: 'I
F40:  @ROUND((+D40*C40),2)
H40:  '\E
I40:  'AC43
L40:  'I
N40:  40
T40: (F2) @ROUND((+S40*R40),2)
A41:  5
E41:  'I
F41:  @ROUND((+D41*C41),2)
H41:  '\I
I41:  'AC121
L41:  'I
N41:  41
T41: (F2) @ROUND((+S41*R41),2)
A42:  6
B42: U 'Bitte nutzen Sie die Vorteile eines 
E42:  'I
F42:  @ROUND((+D42*C42),2)
H42:  '\M
I42:  'AC8
L42:  'I
N42:  42
T42: (F2) @ROUND((+S42*R42),2)
A43:  7
B43: U 'kontinuierlichen Fahrzeug-Checks. 
E43:  'I
F43:  @ROUND((+D43*C43),2)
H43:  '\N
I43:  'AC13
L43:  'I
N43:  43
T43: (F2) @ROUND((+S43*R43),2)
A44:  8
B44: U 'Sicherheit geht bei uns vor !
E44:  'I
F44:  @ROUND((+D44*C44),2)
H44:  '\S
I44:  'AC103
L44:  'I
N44:  44
T44: (F2) @ROUND((+S44*R44),2)
A45:  9
E45: 'I
F45: @ROUND((+D45*C45),2)
L45:  'I
N45:  45
T45: (F2) @ROUND((+S45*R45),2)
A46:  10
E46:  'I
F46:  @ROUND((+D46*C46),2)
L46:  'I
M46:  "20.Pos
N46:  46
T46: (F2) @ROUND((+S46*R46),2)
A47:  11
E47:  'I
F47:  @ROUND((+D47*C47),2)
L47:  'I
N47:  47
T47: (F2) @ROUND((+S47*R47),2)
A48:  12
E48:  'I
F48: @ROUND((+D48*C48),2)
L48:  'I
N48:  48
T48: (F2) @ROUND((+S48*R48),2)
A49:  13
E49:  'I
F49:  @ROUND((+D49*C49),2)
L49:  'I
N49:  49
T49: (F2) @ROUND((+S49*R49),2)
A50:  14
E50:  'I
F50:  @ROUND((+D50*C50),2)
L50:  'I
N50:  50
T50: (F2) @ROUND((+S50*R50),2)
A51:  15
E51:  'I
F51:  @ROUND((+D51*C51),2)
L51:  'I
M51:  "25.Pos
N51:  51
T51: (F2) @ROUND((+S51*R51),2)
A52:  16
E52:  'I
F52:  @ROUND((+D52*C52),2)
L52:  'I
N52:  52
O52:  \-
P52:  \-
Q52:  \-
R52:  \-
A53:  17
E53:  'I
F53:  @ROUND((+D53*C53),2)
L53:  'I
M53:  'Werbung
N53:  53
053: U 'Fahren Sie unseren Renault Alpine
Q53:  "Netto DM
R53: (F2) GSUM(Q27..R51)
A54:  18
E54:  'I
F54:  @ROUND((+D54*C54),2)
L54:  'I
N54:  54
O54: U 'V6 Turbo doch einmal Probe ! Bei
Q54:  \-
R54: (F2) \-
A55:  19
E55:  'I
F55:  @ROUND((+D55*C55),2)
L55:  'I   N55: 55
O55: U '250 km/h zeigt sich die
P55: (P2) +$V$1
Q55:  ' Mwst.
R55: (F2) @ROUND((+R53*P55),2)
A56:  20
E56:  'I
F56:  @ROUND((+D56*C56),2)
L56:  'I
N56:  56
O56: U 'hervorragende Strassenlage
Q56:  \-
R56: (F2) \-
A57:  21
E57:  'I
F57:  @ROUND((+D57*C57),2)
L57:  'I
N57:  57
Q57:  'Gesamt DM
R57: (F2)+R53+R55
A58:  22
E58:  'I
F58:  @ROUND((+D58*C58),2)
L58:  'I
N58:  58
A59:  23
E59:  'I
F59:  @ROUND((+D59*C59) , 2)
L59:  'I
N59:  59
A60:  24
E60:  'I
F60:  @ROUND((+D60*C60),2)
L60:  'I
N60:  60
A61:  25
E61:  'I
F61:  @ROUND((+D61*C61),2)
L61:  'I
N61:  61
A62:  \-
B62:  \-
C62:  \-
D62:  \-
E62:  'I
L62:  'I
N62:  62
L63:  'I
N63:  63
F64: (F2) @SUM($SUMINPUT)
L64:  'I
N64:  64
L65:  'I
N65:  65
B70: U 'R E C H N U N G 
B71: U "10/880200 
B72: U(D1) @INT(@TODAY) 
B76:  ^ist in Druck
B79:  ^bitte warten

Das Blatt-Listing



Aus: ST-Computer 02 / 1989, Seite 116

Links

Copyright-Bestimmungen: siehe Über diese Seite