home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / kzr_0899.zip / MINNDA.CMD < prev    next >
OS/2 REXX Batch file  |  1998-08-10  |  6KB  |  146 lines

  1. /* REXX_Programm MinNDA.CMD zur Ermittlung des kleinsten Wertes der */
  2. /* Zahl ND, wenn mehrere oder auch nur eines der "externen"         */
  3. /* mathematischen Funktionen von kzr.cmd verwendet werden.          */
  4.  
  5. /* In diesem Programm MinNDA.CMD sind für alle Funktionen, deren Rechen-  */
  6. /* genauigkeit begrenzt ist, die mit Pfad "Pfd" versehenen Dateinamen     */
  7. /* festgelegt. In diese Dateien werden, sofern deren begrenzte Zahl ND    */
  8. /* wirksam wird, die jeweilige maximale Zahl ND abgespeichert.            */
  9. /* sqrt.cmd und root3.cmd haben keine interne Begrenzung für ND...        */
  10.  
  11.    /* Wird bei der Ausführung einer REXX-Anweisung ein Syntaxfehler */
  12.    /* festgestellt, so wird zur Prozedur "Fehlermeldung" verzweigt. */
  13.    signal on syntax name Fehlermsg
  14.  
  15.    /* Die Datei "Ergebnis.DAT" wird in dem Verzeichnis abgelegt, */
  16.    /* in dem auch die Datei "kzr.CMD" abgelegt ist.              */
  17.    Call RxFuncAdd 'SysLoadFuncs', RexxUtil, 'SysLoadFuncs'
  18.    Call SysLoadFuncs
  19.    Pfd=SysSearchPath("PATH", "kzr.cmd")
  20.    lp=LastPos("\", Pfd)
  21.    Pfd=DelStr(Pfd, 1+lp)
  22.    bufND =Pfd||"NDZahl.DAT"
  23.    bufMsg=Pfd||"Meldung.DAT"
  24.    /* Hier wird die in der "Kernfunktion" kzr.cmd festgelegte Zahl ND */
  25.    /* der zu verwendenden Dezimalstellen übernommen.                  */
  26.    ND = LineIn(bufND, 1)
  27.  
  28. /* Wenn Funktionen mit begrenzter Rechengenauigkeit hinzukommen, */
  29. /* hier ergänzen.                                                */
  30.    NDAsin      = Pfd||"NDAsin.DAT"
  31.    NDAcos      = Pfd||"NDAcos.DAT"
  32.    NDAtan      = Pfd||"NDAtan.DAT"
  33.    NDAcot      = Pfd||"NDAcot.DAT"
  34.    NDAexp      = Pfd||"NDAexp.DAT"
  35.    NDAln       = Pfd||"NDAln.DAT"
  36.    NDAlog      = Pfd||"NDAlog.DAT"
  37.    NDAld       = Pfd||"NDAld.DAT"
  38.    NDAn!       = Pfd||"NDAn!.DAT"
  39.    NDAnbin     = Pfd||"NDAbin.DAT"
  40.    NDAphi      = Pfd||"NDAphi.DAT"
  41.    NDAp_       = Pfd||"NDAp_.DAT"
  42.    NDAq_       = Pfd||"NDAq_.DAT"
  43.    NDAerf      = Pfd||"NDAerf.DAT"
  44.    NDAerfc     = Pfd||"NDAerfc.DAT"
  45.    NDAarcsin   = Pfd||"NDAarcsin.DAT"
  46.    NDAarccos   = Pfd||"NDAarccos.DAT"
  47.    NDAarctan   = Pfd||"NDAarctan.DAT"
  48.    NDAarccot   = Pfd||"NDAarccot.DAT"
  49.    NDApot      = Pfd||"NDApot.DAT"
  50.    NDAga       = Pfd||"NDAga.DAT"
  51.    NDAsinh     = Pfd||"NDAsinh.DAT"
  52.    NDAcosh     = Pfd||"NDAcosh.DAT"
  53.    NDAtanh     = Pfd||"NDAtanh.DAT"
  54.    NDAcoth     = Pfd||"NDAcoth.DAT"
  55.    NDAarsinh   = Pfd||"NDAarsinh.DAT"
  56.    NDAarcosh   = Pfd||"NDAarcosh.DAT"
  57.    NDAartanh   = Pfd||"NDAartanh.DAT"
  58.    NDAarcoth   = Pfd||"NDAarcoth.DAT"
  59.    NDApi       = Pfd||"NDApi.DAT"
  60.  
  61. /* Wenn Funktionen mit begrenzter Rechengenauigkeit hinzukommen, */
  62. /* hier ergänzen.                                                */
  63.    NDA.1 =LineIn(NDAsin     , 1)
  64.    NDA.2 =LineIn(NDAcos     , 1)
  65.    NDA.3 =LineIn(NDAtan     , 1)
  66.    NDA.4 =LineIn(NDAcot     , 1)
  67.    NDA.5 =LineIn(NDAexp     , 1)
  68.    NDA.6 =LineIn(NDAln      , 1)
  69.    NDA.7 =LineIn(NDAlog     , 1)
  70.    NDA.8 =LineIn(NDAld      , 1)
  71.    NDA.9 =LineIn(NDAphi     , 1)
  72.    NDA.10=LineIn(NDAp_      , 1)
  73.    NDA.11=LineIn(NDAq_      , 1)
  74.    NDA.12=LineIn(NDAerf     , 1)
  75.    NDA.13=LineIn(NDAerfc    , 1)
  76.    NDA.14=LineIn(NDAarcsin  , 1)
  77.    NDA.15=LineIn(NDAarccos  , 1)
  78.    NDA.16=LineIn(NDAarctan  , 1)
  79.    NDA.17=LineIn(NDAarccot  , 1)
  80.    NDA.18=LineIn(NDApot     , 1)
  81.    NDA.19=LineIn(NDAga      , 1)
  82.    NDA.20=LineIn(NDAsinh    , 1)
  83.    NDA.21=LineIn(NDAcosh    , 1)
  84.    NDA.22=LineIn(NDAtanh    , 1)
  85.    NDA.23=LineIn(NDAcoth    , 1)
  86.    NDA.24=LineIn(NDAarsinh  , 1)
  87.    NDA.25=LineIn(NDAarcosh  , 1)
  88.    NDA.26=LineIn(NDAartanh  , 1)
  89.    NDA.27=LineIn(NDAarcoth  , 1)
  90.    NDA.28=LineIn(NDApi      , 1)
  91.  
  92.  
  93. /* Wenn Funktionen mit begrenzter Rechengenauigkeit hinzukommen, */
  94. /* hier ergänzen.                                                */
  95.    Call Charout(NDAsin)    ;  Call SysFileDelete NDAsin
  96.    Call Charout(NDAcos)    ;  Call SysFileDelete NDAcos
  97.    Call Charout(NDAtan)    ;  Call SysFileDelete NDAtan
  98.    Call Charout(NDAcot)    ;  Call SysFileDelete NDAcot
  99.    Call Charout(NDAexp)    ;  Call SysFileDelete NDAexp
  100.    Call Charout(NDAln )    ;  Call SysFileDelete NDAln
  101.    Call Charout(NDAlog)    ;  Call SysFileDelete NDAlog
  102.    Call Charout(NDAld )    ;  Call SysFileDelete NDAld
  103.    Call Charout(NDAphi)    ;  Call SysFileDelete NDAphi
  104.    Call Charout(NDAp_ )    ;  Call SysFileDelete NDAp_
  105.    Call Charout(NDAq_ )    ;  Call SysFileDelete NDAq_
  106.    Call Charout(NDAerf)    ;  Call SysFileDelete NDAerf
  107.    Call Charout(NDAerfc)   ; Call SysFileDelete NDAerfc
  108.    Call Charout(NDAarcsin) ; Call SysFileDelete NDAarcsin
  109.    Call Charout(NDAarccos) ; Call SysFileDelete NDAarccos
  110.    Call Charout(NDAarctan) ; Call SysFileDelete NDAarctan
  111.    Call Charout(NDAarccot) ; Call SysFileDelete NDAarccot
  112.    Call Charout(NDApot)    ; Call SysFileDelete NDApot
  113.    Call Charout(NDAga)     ; Call SysFileDelete NDAga
  114.    Call Charout(NDAsinh)   ; Call SysFileDelete NDAsinh
  115.    Call Charout(NDAcosh)   ; Call SysFileDelete NDAcosh
  116.    Call Charout(NDAtanh)   ; Call SysFileDelete NDAtanh
  117.    Call Charout(NDAcoth)   ; Call SysFileDelete NDAcoth
  118.    Call Charout(NDAarsinh) ; Call SysFileDelete NDAarsinh
  119.    Call Charout(NDAarcosh) ; Call SysFileDelete NDAarcosh
  120.    Call Charout(NDAartanh) ; Call SysFileDelete NDAartanh
  121.    Call Charout(NDAarcoth) ; Call SysFileDelete NDAarcoth
  122.    Call charout(NDApi)     ; Call SysFileDelete NDApi
  123.  
  124.    /* Ein String mit Zahlen, denen jeweils ein Komma folgt, wird erzeugt. */
  125.    i=1; NDAstr=""
  126.    do while i<=28
  127.      if NDA.i > 0 then NDAstr=NDAstr||NDA.i||","
  128.      i=i+1
  129.    end
  130.    /* Das letzte Komma dieses Strings wird wieder entfernt. */
  131.    lp=LastPos(",", NDAstr)
  132.    if lp > 0 then  NDAstr=DelStr(NDAstr, lp)
  133.    say
  134.  
  135.    /* Wenn keine mathematischen Funktionen mit begrenzter     */
  136.    /* Rechengenauigkeit verwendet werden, Weitergabe von ND.  */
  137.    if length(NDAstr)=0 then do; NDAmin=ND; Signal WW; end
  138.    /* Da die Funktion offenbar einen String der Form "12,45,6,890,3"  */
  139.    /* so ohne weiteres nicht verarbeiten kann, ist die folgende       */
  140.    /* Anweisung erforderlich:                                         */
  141.    interpret "NDAmin=Min("NDAstr")"
  142.  
  143. WW:
  144.    return(NDAmin)
  145.  
  146.