home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
coders
/
jËzyki_programowania
/
pascal
/
wwg-crt
/
nettolohn.p
< prev
next >
Wrap
Text File
|
1997-07-14
|
3KB
|
109 lines
program netto;
{$I "include:utils/crt.i"}
const
kv = 0.12; { Krankenversicherungssatz }
av = 0.065; { Arbeitslosenversicherungssatz }
pv = 0.017; { Pflegeversicherungssatz }
rv = 0.202; { Rentenversicherungssatz }
ls = 0.2; { Fiktiver Lohnsteuersatz }
sz = 0.075; { Solidaritätszuschlagssatz }
t1 = 3; { Tabulator 1 }
t2 = 30; { Tabulator 2 }
var
kirche_ja : boolean;
stunden : integer;
stundenlohn, lohnsteuer, brutto, sozi, ks : real;
key : char;
function WritePrompt(spalte : integer; str : string) : integer;
begin
GotoXY(t1, spalte); Write(str);
GotoX(t2-3); Write(" > ");
WritePrompt := WhereX;
end;
procedure WriteLnBetrag(str : string; betrag : real; prozent : real);
begin
GotoX(t1); Write(str);
GotoX(t2-3); Write(" : ");
if prozent >= 0 then WriteLn((betrag*prozent):10:2, " DM [", (prozent*100):2:2, "%]")
else WriteLn(betrag:10:2, " DM");
end;
function JaNein(spalte : integer; str : string) : boolean;
var
antwort : char;
zeile : integer;
begin
zeile := WhereY;
spalte := WritePrompt(spalte, str);
Write("j oder n");
GotoX(spalte);
repeat
antwort := ReadKey;
until (antwort = char($0D)) or (antwort = 'j') or (antwort = 'n');
if antwort = char($0D) then antwort := 'j';
GotoX(spalte); WriteLn(antwort, " ");
JaNein := (antwort = 'j');
end;
begin
ClrScr;
ConBackground(1);
repeat
TextColor(0);
GotoXY(t1+2, 2); Write("Berechnung des monatlichen Nettolohnes");
GotoXY(t1+2, 3); Write("¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
TextColor(4);
CursorOn;
GotoX(WritePrompt(4, " Anzahl Arbeitsstunden")); ReadLn(stunden);
GotoX(WritePrompt(5, " Stundenlohn")); ReadLn(stundenlohn);
TextColor(2);
kirche_ja := JaNein(6, " Kirchenmitglied");
brutto := stundenlohn * stunden;
TextColor(4);
WriteLnBetrag(" Bruttolohn", brutto, -1);
lohnsteuer := brutto * ls;
TextColor(3);
WriteLnBetrag("- Lohnsteuer", brutto, ls);
WriteLnBetrag("- Solizuschlag", lohnsteuer, sz);
if (kirche_ja = true) then begin
ks := 0.09;
WriteLnBetrag("- Kirchensteuer", lohnsteuer, ks);
end else ks := 0;
WriteLnBetrag("- Rentenversicherung", brutto, rv/2);
WriteLnBetrag("- Krankenversicherung", brutto, kv/2);
WriteLnBetrag("- Arbeitslosenvers.", brutto, av/2);
WriteLnBetrag("- Pflegeversicherung", brutto, pv/2);
TextColor(4);
WriteLnBetrag("= Nettolohn", (brutto - lohnsteuer*(1+sz+ks) - brutto*((rv+kv+av+pv)/2)), -1);
CursorOff;
key := ReadKey;
ClrScr;
until key = 'q';
ConReset;
end.