home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
kzr_0899.zip
/
COTH.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1998-07-11
|
3KB
|
83 lines
/* REXX-Programm coth.cmd */
Signal on syntax name cothMsg
/* Diese Variablen müssen für jede Prozedur definiert werden, damit die */
/* Prozedur die Variable bufND kennt und die Variable ND übernehmen kann.*/
Pfd=SysSearchPath("PATH", "kzr.cmd")
lp=LastPos("\", Pfd)
Pfd=DelStr(Pfd, 1+lp)
NDAcoth=Pfd||"NDAcoth.DAT"
bufND =Pfd||"NDZahl.DAT"
bufMsg =Pfd||"Meldung.DAT"
ND = LineIn(bufND, 1)
if ND > 450 then
do
ND=450
call charout(NDAcoth) ; Call SysFileDelete NDAcoth
ret=LineOut(NDAcoth, 450)
Call Charout," Achtung, nur 450 Dezimalstellen bei der Berechnung von coth(...)"
say
Beep(444, 200); Beep(628,300) /* Hier kein EXIT ! */
end
/* Wenn ND <= 450 ist, wird ND = ND weitergegeben */
call charout(NDAcoth) ; Call SysFileDelete NDAcoth
ret=LineOut(NDAcoth, ND)
arg x,y /* y soll "illegale" Komma's im Funktions-Argument aufspüren */
p0p=x*x /* Diese Anweisung prvoziert eine Syntax-Fehlermeldung */
if length(y) > 0 then
do
call charout(NDAcoth); Call SysFileDelete NDAcoth
ret=LineOut(bufMsg, "Im Argument von coth(...) ist mindestens 1 nicht zulässiges Komma !")
/* "bufMsg" und "bufND" werden immer beim Beenden von kzr.cmd gelöscht, */
/* damit in den diesbezüglichen temporären Dateien */
/* Meldungen und ND-Werte nicht aneinandergehängt werden. */
EXIT
end
Numeric Digits ND+5
if x = 0 then
do
call charout(NDAcoth); Call SysFileDelete NDAcoth
ret=LineOut(bufMsg, " Die Funktion coth(...) ist für den Wert x=0 nicht definiert.")
/* "bufMsg" und "bufND" werden immer beim Beenden von kzr.cmd gelöscht, */
/* damit in den diesbezüglichen temporären Dateien */
/* Meldungen und ND-Werte nicht aneinandergehängt werden. */
EXIT
end
if abs(x) >= 1.0E+9 then
do
call charout(NDAcoth); Call SysFileDelete NDAcoth
ret=LineOut(bufMsg, " Der absolute Betrag des Argumentes der Funktion coth(...)",
" ",
"darf nicht größer als 1.0E+9 sein.")
/* "bufMsg" und "bufND" werden immer beim Beenden von kzr.cmd gelöscht, */
/* damit in den diesbezüglichen temporären Dateien */
/* Meldungen und ND-Werte nicht aneinandergehängt werden. */
EXIT
end
B: ep=exp(x); em=1/ep; y=(ep+em)/(ep-em)
W: numeric digits ND
return(Format(y))
cothMsg:
sf=ErrorText(RC)
if Pos("Bad arithmetic conversion", sf) > 0 then
do
call charout(NDAcoth); Call SysFileDelete NDAcoth
ret=LineOut(bufMsg, "Sie haben in coth(...) kein gültiges Argument eingegeben !")
/* "bufMsg" und "bufND" werden immer beim Beenden von kzr.cmd gelöscht, */
/* damit in den diesbezüglichen temporären Dateien */
/* Meldungen und ND-Werte nicht aneinandergehängt werden. */
EXIT
end