home *** CD-ROM | disk | FTP | other *** search
/ c't freeware shareware 2001 January / CT_SW0101.ISO / mac / software / kommunik / misc / zoc400wg.exe / setup.fil / script / MINIHOST.ZRX < prev    next >
Text File  |  1998-09-05  |  21KB  |  666 lines

  1. /*******************************************************************
  2. *   REXX-Programm zur Simulation einer kleinen Mailbox             *
  3. *                                                                  *
  4. *   Funktionsumfang:                                               *
  5. *   + Einfache Benutzerverwaltung (siehe unten)                    *
  6. *   + Zwei Userlevel (Admin und Normal)                            *
  7. *   + Wechseln von Verzeichnissen mîglich (nur Admin)              *
  8. *   + Up-/Downloads                                                *
  9. *                                                                  *
  10. *******************************************************************/
  11.  
  12.     /* zum Debuggen des Programms bitte den Kommentar vor TRACE A entfernen */
  13.  
  14.     /* TRACE A  */
  15.  
  16.  
  17.     /***********************************/
  18.     /* nachfolgend die Userliste       */
  19.     /***********************************/
  20.  
  21.     curdrive= "C:"       /* Arbeitslaufwerk fÅr alle User */
  22.  
  23.     user.1= "ADMIN"      /* Username */
  24.     pass.1= "SECRET"     /* Pa·wort des Users */
  25.     home.1= "\"          /* Startverzeichnis des Users */
  26.     mode.1= 1            /* 1=Superuser, 0=Normaluser (Normaluser kann nicht */
  27.                          /* suchen und keine Verzeichnisse wechseln) */
  28.  
  29.     user.2= "GUEST"
  30.     pass.2= "GUEST"
  31.     home.2= "HOST\GUEST"
  32.     mode.2= 0
  33.  
  34.     user.3= "USERNAME1"
  35.     pass.3= "PASSWORD1"
  36.     home.3= "HOST\USER1"
  37.     mode.3= 0
  38.  
  39.     user.4= "USERNAME2"
  40.     pass.4= "PASSWORD2"
  41.     home.4= "HOST\USER2"
  42.     mode.4= 0
  43.  
  44.     user.5= "USERNAME3"
  45.     pass.5= "PASSWORD3"
  46.     home.5= "HOST\USER3"
  47.     mode.5= 0
  48.  
  49.  
  50.     /***********************************/
  51.     /* hier beginnt der Programmteil   */
  52.     /***********************************/
  53.  
  54.     /* Operator nach lokalem Modus fragen */
  55.     localmode= 0
  56.     x= ZocRequest("Wollen Sie MINIHOST im lokalem Modus starten?", "Ja", "Nein")
  57.     x= TRANSLATE(x)
  58.     SELECT 
  59.         WHEN x="JA" THEN localmode= 1
  60.         WHEN x="NEIN" THEN localmode= 0
  61.         WHEN x="##CANCEL##" THEN exit
  62.         OTHERWISE NOP
  63.     END /* SELECT */
  64.  
  65.  
  66.     /* MenÅpunkt "Sonstiges->REXX abbrechen" abfangen */
  67.     SIGNAL ON HALT NAME shutdown2
  68.  
  69.  
  70.     /* Variable fÅr Return definieren (CR-LF) */
  71.     CrLf= "^M^J"
  72.     
  73.     /* Bildschirm lîschen */
  74.     CALL ZocCls
  75.  
  76.     /* ÅberprÅfen, ob ein gÅltiges CD-Signal geliefert wird */
  77.     IF checkcarrier()=="##UNKNOWN##" THEN
  78.     DO
  79.         CALL ZocWrite "Bitte schalten Sie im Modem-Device die CD-PrÅfung ein"||CrLf||CrLf
  80.         EXIT
  81.     END
  82.  
  83.     /* Modemecho zur Gegenstelle ausschalten */
  84.     say "Einen Moment bitte ..."
  85.     CALL ZocSetOption "Host=no"
  86.  
  87.     IF localmode=0 THEN DO
  88.         CALL ZocSetAutoAnswer 0    
  89.         CALL ZocDelay 3
  90.     END
  91.     ELSE DO
  92.         CALL ZocMsgBox "Sie kînnen ADMIN/SECRET als Username/Pa·wort "||,
  93.                     "versuchen oder in der Online-Hilfe weitere "||,
  94.                     "Informationen Åber den MINIHOST erhalten (suchen Sie "||,
  95.                     "nach dem Stichwort MINIHOST)."
  96.     END
  97.  
  98.  
  99. /* -------------------------------------------------------------- */
  100. /* auf Verbindung warten, abheben und Pa·wort prÅfen              */
  101. /* -------------------------------------------------------------- */
  102. allover:
  103.     /***********************************/
  104.     /* auf Verbindung warten           */
  105.     /***********************************/
  106.  
  107.     IF localmode=1 THEN     /* im lokalen Modus nicht auf CONNECT warten */
  108.         SIGNAL welcome
  109.  
  110.     /* Timeout von 60 Sekunden fÅr jede Eingabe */
  111.     CALL ZocTimeout 60
  112.  
  113.     /* Anrufe annehmen */
  114.     CALL ZocSetAutoAnswer 1
  115.  
  116.     /* Infos auf dem Bilschirm anzeigen */
  117.     CALL ZocCls
  118.     CALL ZocWrite "Warte auf Anruf ...^M^J^M^J"
  119.  
  120.     
  121.     /* auf Modem, ISDN oder Fax-Connect warten */
  122.     found= ZocWaitMux("CONNECT","+FCON")
  123.     DO WHILE found = 640
  124.         found= ZocWaitMux("CONNECT","+FCON")
  125.     END
  126.  
  127.     /* auf Fax-Connect ÅberprÅfen (wird in diesem Programm nicht bearbeitet) */
  128.     IF found=1 THEN DO          /* found=1 => FAX-Connect */
  129.         CALL handle_fax_call    /* diese Routine ist ein Dummy */
  130.         signal allover          /* nach Fax-Empfang Programm neu starten */
  131.     END
  132.  
  133.     /* Connect-Nachricht Åberlesen */
  134.     CALL ZocWait "^M"
  135.     
  136.  
  137.  
  138.     /****************************************/
  139.     /* auf Backspace der Gegenstelle warten */
  140.     /****************************************/
  141.     
  142.     CALL ZocTimeout 20
  143.     CALL wsend "^[[2J^[[1H"
  144.     CALL wsend "Bitte wÑhlen Sie ANSI und Zmodem in Ihrem "||CrLf
  145.     CALL wsend "Terminalprogramm und drÅcken Sie dann die Taste "||CrLf
  146.     CALL wsend "BACKSPACE, um MINIHOST zu starten ..."||CrLf
  147.     result= ZocWait("^H")
  148.     
  149.     /* ÅberprÅfen, ob Carrier noch vorhanden */
  150.     IF checkcarrier()=="##NO##" | result\=0 THEN 
  151.         SIGNAL endit    /* Programm neu starten, wenn BS nicht gedrÅckt */
  152.  
  153. welcome:
  154.     /***********************************/
  155.     /* Startbildschirm zeigen          */
  156.     /***********************************/
  157.     CALL wsend "^[[2J^[[1H"
  158.     CALL welcome_screen
  159.  
  160.  
  161.     /***********************************/
  162.     /* name/pw lesen und ÅberprÅfen    */
  163.     /***********************************/
  164.     CALL ZocTimeout 60
  165.  
  166.     CALL ZocSetOption "Host=yes"    /* Echo fÅr Username einschalten */
  167.     CALL wsend CrLf
  168.     username= input("Username: ")
  169.     username= STRIP(username)
  170.  
  171.     IF username="##CANCEL##" THEN DO
  172.         SIGNAL shutdown2
  173.     END
  174.     ELSE DO
  175.         CALL ZocSetOption "Host=no"        /* Echo fÅr Pa·wort ausschalten */
  176.         CALL wsend CrLf
  177.         password= input("Passwort: ")
  178.         password= STRIP(password)
  179.     END
  180.  
  181.     /* Username/Pa·wort und CD-Signal prÅfen */
  182.     usridx= verify_user()
  183.     IF usridx=0 THEN DO        /* User nicht gefunden oder Pa·wort falsch */
  184.         CALL wsend CrLf||CrLf
  185.         CALL wsend "Zugang verweigert !"
  186.         CALL wsend CrLf||CrLf
  187.         SIGNAL endit
  188.     END
  189.     ELSE DO                    /* User #useridx gefunden */
  190.         IF mode.usridx=1 THEN
  191.             status= "admin"
  192.         ELSE
  193.             status= "guest"
  194.  
  195.         curdir= home.usridx
  196.     END
  197.  
  198.  
  199.     /***********************************/
  200.     /* HauptmenÅ anzeigen              */ 
  201.     /***********************************/
  202. menu:
  203.     /* Echo fÅr Gegenstelle einschalten */
  204.     CALL ZocSetOption "Host=yes"
  205.     choice= " "
  206.  
  207.     CALL showmenu
  208.     CALL wsend "^[[0m"
  209.  
  210.     /***********************************/
  211.     /* Auswahl einlesen und bearbeiten */ 
  212.     /***********************************/
  213. menuask:
  214.     CALL wsend "^[[19;12H"
  215.     IF status= "admin" THEN
  216.         choice_msg= "Ihre Wahl (W/L/S/Z/U/D/H/V): "
  217.     ELSE
  218.         choice_msg= "Ihre Wahl (L/Z/U/D/V): "
  219.  
  220.     result= input(choice_msg)
  221.  
  222.     /* Bei Carrier-Verlust Programm neu starten */
  223.     IF checkcarrier()="##NO##" THEN 
  224.         SIGNAL endit
  225.  
  226.  
  227.     /***********************************/
  228.     /* Entsprechende Subroutine rufen  */ 
  229.     /***********************************/
  230.  
  231.     /* Text-Kosmetik fÅr Benutzereingabe */
  232.     choice= TRANSLATE(STRIP(result))
  233.  
  234.     SELECT 
  235.         /* Verzeichnis auflisten */
  236.         WHEN choice="L" THEN 
  237.             CALL showdir ddir
  238.  
  239.         /* Datei anzeigen */
  240.         WHEN choice="Z" THEN 
  241.             CALL type
  242.  
  243.         /* Zmodem Upload */
  244.         WHEN choice="U" THEN 
  245.             CALL upload
  246.  
  247.         /* Zmodem Download */
  248.         WHEN choice="D" THEN 
  249.             CALL download
  250.  
  251.         /* Datei suchen (nur Superuser) */
  252.         WHEN choice="S" THEN 
  253.             CALL search
  254.  
  255.         /* Verzeichnis wechseln (nur Superuser) */
  256.         WHEN choice="W" THEN 
  257.             CALL changedir
  258.  
  259.         /* Host beenden (nur Superuser) */
  260.         WHEN choice="H" THEN 
  261.             CALL shutdown
  262.  
  263.         /* Host verlassen */
  264.         WHEN choice="V" THEN DO
  265.             CALL wsend "^[[21;12H"
  266.             CALL wsend "Schînen Tag noch ..."||CrLf
  267.             SIGNAL endit
  268.         END
  269.  
  270.         OTHERWISE SIGNAL menuask /* Unbekannter Befehl, erneut versuchen */
  271.     END /* SELECT */
  272.     
  273.     SIGNAL menu
  274.  
  275.  
  276. endit:
  277.     CALL wsend "^[[22;12H"
  278.     CALL wsend "Starte erneut ..."
  279.     CALL ZocSetOption "Host=no"
  280.     CALL ZocDisconnect
  281.     CALL ZocDelay 5    /* Pause fÅr Modem auflegen */
  282.     CALL ZocSetAutoAnswer 0
  283.     CALL ZocDelay 5    /* Pause fÅr AutoAnswer einschalten */
  284.     SIGNAL allover
  285.  
  286.  
  287.  
  288. /* ============================================================== */
  289. /*                                                                */
  290. /*   SUBROUTINEN (HOST FUNKTIONEN)                                */
  291. /*                                                                */
  292. /* ============================================================== */
  293.  
  294. /* -------------------------------------------------------------- */
  295. /* Aktuelles Verzeichnis wechseln                                 */
  296. /* -------------------------------------------------------------- */
  297. changedir:
  298.     IF status\="admin" THEN
  299.         RETURN
  300.  
  301.     CALL wsend "^[[21;12H"
  302.     result= input("Bitte vollen Pfad angeben (Laufwerk und Verz.): ")
  303.  
  304.     IF result\="##TIMEOUT##" THEN
  305.     DO
  306.         curdir= result
  307.         IF RIGHT(curdir, 1) \= "\" THEN curdir= curdir"\"
  308.         IF SUBSTR(curdir, 2, 1) = ":" THEN
  309.         DO
  310.             curdrive= SUBSTR(curdir, 1, 2)
  311.             curdir= RIGHT(curdir, length(curdir)-2)
  312.         END
  313.         IF SUBSTR(curdir, 1, 1) \= "\" THEN curdir= "\"curdir
  314.     END
  315.     
  316.     RETURN
  317.  
  318.  
  319. /* -------------------------------------------------------------- */
  320. /* Aktuelles Verzeichnis anzeigen                                 */
  321. /* -------------------------------------------------------------- */
  322. showdir: 
  323.     ADDRESS CMD "dir /-P "curdrive||curdir" >shellout.tmp"
  324.     CALL sendfile "shellout.tmp"
  325.     RETURN
  326.  
  327.  
  328. /* -------------------------------------------------------------- */
  329. /* Im aktuellen Laufwerk suchen                                   */
  330. /* -------------------------------------------------------------- */
  331. search: 
  332.     IF status\="admin" THEN
  333.         RETURN
  334.  
  335.     CALL wsend "^[[21;12H"
  336.     result= input("Dateiname zur Suche auf Laufwerk "||curdrive)
  337.     
  338.     IF result\="##TIMEOUT##" THEN
  339.     DO
  340.         sname= result
  341.         sname= STRIP(sname)
  342.     END
  343.     ELSE
  344.         RETURN
  345.     
  346.     CALL wsend "^[[22;12H"
  347.     CALL wsend "Suche auf Laufwerk "||curdrive||", bitte warten ..."
  348.     ADDRESS CMD "dir /-P "curdrive"\"sname" /s >shellout.tmp"
  349.     CALL sendfile "shellout.tmp"
  350.     RETURN
  351.  
  352.  
  353. /* -------------------------------------------------------------- */
  354. /* Datei anzeigen                                                 */
  355. /* -------------------------------------------------------------- */
  356. type: 
  357.     CALL wsend "^[[21;12H"
  358.     result= input("Welche Datei soll angezeigt werden: "||curdrive||curdir)
  359.     
  360.     IF result\="##TIMEOUT##" THEN
  361.     DO
  362.         sname= result
  363.         sname= STRIP(sname)
  364.     END
  365.     ELSE
  366.         RETURN
  367.     
  368.     ADDRESS CMD "type "curdrive||curdir||sname" >shellout.tmp"
  369.     CALL sendfile "shellout.tmp"
  370.     RETURN
  371.  
  372.  
  373. /* -------------------------------------------------------------- */
  374. /* Upload                                                         */
  375. /* -------------------------------------------------------------- */
  376. upload:
  377.     CALL wsend "^[[21;12H"
  378.     CALL wsend "Bitte starten Sie Ihren Zmodem Upload"
  379.     CALL wsend "^[[22;12H"
  380.     
  381.     IF localmode=0 THEN
  382.         CALL ZocDownload "ZMODEM", curdrive||curdir 
  383.      ELSE
  384.         CALL ZocMsgBox "Upload im lokalen Modus nicht mîglich"
  385.     RETURN
  386.  
  387.  
  388. /* -------------------------------------------------------------- */
  389. /* Download                                                       */
  390. /* -------------------------------------------------------------- */
  391. download:
  392.     CALL wsend "^[[21;12H"
  393.     file= input("Welche Datei soll empfangen werden: "||curdrive||curdir)
  394.     CALL wsend "^[[22;12H"
  395.  
  396.     TRACE i
  397.  
  398.      IF localmode=0 THEN DO    
  399.         IF file\="##TIMEOUT##" THEN DO
  400.             file= STRIP(file)
  401.             IF file \= "" THEN
  402.                 CALL ZocUpload "ZMODEM", curdrive||curdir||file
  403.         END
  404.     END
  405.     ELSE
  406.         CALL ZocMsgBox "Download im lokalen Modus nicht mîglich"
  407.  
  408.     RETURN
  409.  
  410.  
  411. /* -------------------------------------------------------------- */
  412. /* Host beenden                                                   */
  413. /* -------------------------------------------------------------- */
  414. shutdown:
  415.     IF status\="admin" THEN
  416.         RETURN
  417.  
  418. shutdown2:
  419.     CALL wsend "^[[22;0H"
  420.     CALL wsend "Beende MINIHOST ... "
  421.     CALL ZocSetOption "Host=no"
  422.     CALL ZocDisconnect
  423.     CALL ZocDelay 3
  424.     CALL ZocSetAutoAnswer 0
  425.     CALL wsend "beendet!"||CrLf
  426.     EXIT
  427.  
  428.  
  429. /* -------------------------------------------------------------- */
  430. /* öberprÅfe Usereintrag                                          */
  431. /* -------------------------------------------------------------- */
  432. verify_user: 
  433.     
  434.     ok= 0
  435.     IF username\="##TIMEOUT##" & password\="##TIMEOUT##" THEN DO
  436.         i= 1
  437.         DO WHILE user.i\="USER."||i   /* loop to end of list */
  438.             IF translate(username)=translate(user.i) & ,
  439.                 translate(password)=translate(pass.i) then do
  440.                 ok= i
  441.                 LEAVE
  442.             END
  443.  
  444.             i= i+1
  445.         END
  446.     END
  447.  
  448.     RETURN ok
  449.  
  450.  
  451. /* ============================================================== */
  452. /*                                                                */
  453. /*    SUBROUTINEN (INTERNE FUNKTIONEN)                            */
  454. /*                                                                */
  455. /* ============================================================== */
  456.  
  457. /* -------------------------------------------------------------- */
  458. /* Zeichne einen MenÅpunkt mit ARG(line, col, shortcut, name)     */
  459. /* -------------------------------------------------------------- */
  460. menuitem: PROCEDURE EXPOSE localmode
  461.     
  462.     CALL wsend "^[["ARG(1)";"ARG(2)"H"
  463.     CALL wsend "^[[1;37;47m⁄ƒƒƒ^[[0;30;47mø"
  464.     CALL wsend "^[[1;37m⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^[[0;30;47mø^[[40m"
  465.  
  466.     CALL wsend "^[["ARG(1)+1";"ARG(2)"H"
  467.     CALL wsend "^[[1;37;47m≥ ^[[0;34;47m"ARG(3)" ^[[30m≥"
  468.     CALL wsend "^[[1;37m≥^[[0;30;47m"ARG(4)"≥^[[40m"
  469.  
  470.     CALL wsend "^[["ARG(1)+2";"ARG(2)"H"
  471.     CALL wsend "^[[1;37;47m¿^[[0;30;47mƒƒƒŸ"
  472.     CALL wsend "^[[1;37m¿^[[0;30;47mƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ^[[40m"
  473.  
  474.     RETURN
  475.  
  476.  
  477. /* -------------------------------------------------------------- */
  478. /* Zeichne ein Infofeld mit ARG(line, col, text)                  */
  479. /* -------------------------------------------------------------- */
  480. infoitem: PROCEDURE EXPOSE localmode
  481.     
  482.     CALL wsend "^[["ARG(1)";"ARG(2)"H"
  483.     CALL wsend "^[[1;37;47m⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"
  484.     CALL wsend "ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ^[[0;30;47mø"
  485.  
  486.     CALL wsend "^[["ARG(1)+1";"ARG(2)"H"
  487.     CALL wsend "^[[1;37;47m≥ ^[[0;30;47m"ARG(3)" ^[[30m≥"
  488.     
  489.     CALL wsend "^[["ARG(1)+2";"ARG(2)"H"
  490.     CALL wsend "^[[1;37;47m¿^[[0;30;47mƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ"
  491.     CALL wsend "ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ"
  492.  
  493.     RETURN
  494.  
  495.  
  496. /* -------------------------------------------------------------- */
  497. /* Zeichne das gesamte MenÅ mit allen MenÅ- und Infofeldern       */
  498. /* -------------------------------------------------------------- */
  499. SHOWMENU: 
  500.     CALL wsend "^[[2J^[[1H"
  501.  
  502.     IF status= "admin" THEN
  503.     DO
  504.         CALL menuitem 2,  10, "W", " Verz. (W)echseln   "
  505.         CALL menuitem 5,  10, "L", " Verz. auf(L)isten  " 
  506.         CALL menuitem 8,  10, "S", " Datei (S)uchen     "
  507.         CALL menuitem 11, 10, "Z", " Datei an(Z)eigen   " 
  508.         CALL menuitem 2,  45, "U", " Datei (U)ploaden   "
  509.         CALL menuitem 5,  45, "D", " Datei (D)ownloaden "
  510.         CALL menuitem 8,  45, "H", " (H)ost beenden     "
  511.         CALL menuitem 11, 45, "V", " Host (V)erlassen   "
  512.      
  513.     END
  514.     ELSE
  515.     DO
  516.         CALL menuitem 3,  10, "L", " Verz. auf(L)isten  " 
  517.         CALL menuitem 6,  10, "Z", " Datei an(Z)eigen   " 
  518.         CALL menuitem 3,  45, "U", " Datei (U)ploaden   "
  519.         CALL menuitem 6,  45, "D", " Datei (D)ownloaden "
  520.         CALL menuitem 10, 27, "V", " Host (V)erlassen   "
  521.     END
  522.     
  523.     curpath= curdrive||curdir
  524.     CALL infoitem 15, 10, "^[[0;34;47mAkt.Verz.:^[[30m  "overlay(curpath,"                                              ")
  525.     RETURN
  526.  
  527.  
  528. /* -------------------------------------------------------------- */
  529. /* BegrÅ·ungstext senden                                          */
  530. /* -------------------------------------------------------------- */
  531. welcome_screen: PROCEDURE EXPOSE localmode
  532.     CrLf= "^M^J"
  533.     CALL wsend ""||CrLf
  534.     CALL wsend " ___  ___ ___    "||CrLf
  535.     CALL wsend "|__ || _ | __|   "||CrLf
  536.     CALL wsend " / /_||_|| |_     ZOC MiniHost-Script V3.0"||CrLf
  537.     CALL wsend "|____|___|___|   "||CrLf||CrLf||CrLf
  538.  
  539.     RETURN
  540.  
  541.  
  542. /* -------------------------------------------------------------- */
  543. /* gleichzeitg senden und lokal anzeigen                         */
  544. /* -------------------------------------------------------------- */
  545. wsend: PROCEDURE EXPOSE localmode
  546.  
  547.     IF localmode=0 THEN
  548.         CALL ZocSend ARG(1)
  549.  
  550.     CALL ZocWrite ARG(1)
  551.  
  552.     RETURN
  553.  
  554.  
  555. /* -------------------------------------------------------------- */
  556. /* Dateiinhalt anzeigen (Hostuser und lokaler User)               */
  557. /* -------------------------------------------------------------- */
  558. sendfile: PROCEDURE EXPOSE localmode
  559.     file= ARG(1)
  560.     CrLf= "^M^J"
  561.  
  562.     IF localmode=0 THEN DO         /* Datei zur Gegenstelle senden */
  563.         CALL wsend "^[[2J^[[1H"
  564.         CALL ZocUpload "ASCII:1+0", file 
  565.         ADDRESS CMD "del "file
  566.         CALL wsend CrLf||CrLf
  567.     END
  568.     ELSE DO                        /* Datei lokal anzeigen */
  569.         x= linein(file)
  570.         DO WHILE stream(file, "S")="READY" 
  571.             SAY x
  572.             x= linein(file)
  573.         END /* WHILE */
  574.         CALL stream file, "C", "CLOSE"
  575.         ADDRESS CMD "del "file
  576.     END
  577.  
  578.     CALL input "Bitte Enter druecken ..."
  579.  
  580.     RETURN
  581.  
  582.  
  583. /* -------------------------------------------------------------- */
  584. /* Eingabe von Hostuser und lokalem User lesen                    */
  585. /* -------------------------------------------------------------- */
  586. input: PROCEDURE EXPOSE localmode
  587.  
  588.     IF localmode=0 THEN DO         /* Input von Gegenstelle lesen */
  589.         CALL wsend arg(1)
  590.         result= "##TIMEOUT##"
  591.         IF checkcarrier()\="##NO##" THEN DO
  592.             res= ZocWait("^M")
  593.             IF res\=640 THEN
  594.                 result= ZocLastline()
  595.         END
  596.     END
  597.     ELSE DO                          /* Input lokal lesen */                
  598.         result= ZocAsk("¯"||ARG(1))  /* '¯' zeigt Fenster rechts unten */
  599.     END
  600.  
  601.     RETURN result
  602.  
  603.  
  604. /* -------------------------------------------------------------- */
  605. /* Carrier-Status zurÅckliefern (liefert OK im lokalen Modus)     */
  606. /* -------------------------------------------------------------- */
  607. checkcarrier: PROCEDURE EXPOSE localmode
  608.     IF localmode=1 THEN 
  609.         result= "##YES##"
  610.     ELSE 
  611.         result= ZocGetInfo("ONLINE")
  612.  
  613.     RETURN result
  614.  
  615.  
  616. /**************************************************************************/
  617. /* ENDE REXX-MODUL                                                        */
  618. /**************************************************************************/
  619.  
  620.  
  621.  
  622. /**************************************************************************/
  623. /*                                                                        */
  624. /*  DER NACHFOLGENDE CODE WIRD MOMENTAN NICHT AUFGERUFEN                  */
  625. /*                                                                        */
  626. /**************************************************************************/
  627.  
  628. /* -------------------------------------------------------------- */
  629. /* Modem auf FAX Klasse 2 initialisieren                          */
  630. /* -------------------------------------------------------------- */
  631. set_fax_answer_mode:
  632.     Cr = "^M"
  633.     TIMEOUT 2
  634.     CALL ZocSend "AT+fclass= 2"||Cr
  635.     result= ZocWait("OK")
  636.     IF result=0 THEN 
  637.     DO 
  638.         CALL ZocSend "AT+FCR=1"||Cr
  639.         CALL ZocWait "OK"
  640.  
  641.         CALL ZocSend "AT+FDCC=1,5,0,2,0,0,0,0"||Cr
  642.         CALL ZocWait "OK"
  643.  
  644.         CALL ZocSend "AT+FCQ=0"||Cr
  645.         CALL ZocWait "OK"
  646.  
  647.         CALL ZocSend "AT+FAA=1"||Cr
  648.         CALL ZocWait "OK"
  649.  
  650.         CALL ZocWrite Cr||"FAX-MODUS GESETZT ..."||Crlf
  651.     END
  652.  
  653.     TIMEOUT 60
  654.     RETURN
  655.  
  656.  
  657. /* -------------------------------------------------------------- */
  658. /* FAX-Anruf an ein Fax-Programm weiterleiten                     */
  659. /* -------------------------------------------------------------- */
  660. handle_fax_call:
  661.     /* Der hier benîtigte Code hÑngt vom verwendeten Fax-Programm ab. */
  662.     /* Da hier kein Fax-Programm unterstÅtzt wird, wird aufgelegt. */
  663.     CALL ZocDisconnect
  664.     RETURN
  665.  
  666.