/* $VER: 1.0, ©1998 Dietmar Eilert. Send current document as fax. Requires STFax. */

options results                             /* enable return codes     */

if (left(address(), 6) ~= "GOLDED") then    /* not started by editor ? */

    address 'GOLDED.1'

'LOCK CURRENT RELEASE=0'                    /* lock GUI, gain access   */

if (RC ~= 0) then

    exit

options failat 20                           /* ignore errors           */

signal on syntax                            /* ensure clean exit       */

/* ------------------------ INSERT YOUR CODE HERE: ------------------- */

'QUERY CAT'

if (RESULT = "deutsch") then do

    STRING.sSENDFAXTO    = "FAX senden an ..."
    STRING.sNUMBER       = "FAX-Nummer oder Telefonbucheintrag:"
    STRING.sSENDING      = "FAX senden - Bitte warten ..."
    STRING.sNOTRUNNING   = "STFax nicht gestartet."
    STRING.sNOTSAVED     = "Das letzte FAX wurde nicht gespeichert !"
    STRING.sSAVEDISCARD  = "!SPEICHERN|_Verwerfen|_Abbrechen"
    STRING.sTRANSMISSION = "Übertragung fehlgeschlagen !"
    STRING.sNOTINSTALLED = "STFax nicht installiert."
end
else do

    STRING.sSENDFAXTO    = "Send FAX to ..."
    STRING.sNUMBER       = "FAX number or name from the phonebook:"
    STRING.sSENDING      = "Sending FAX - please wait ..."
    STRING.sNOTRUNNING   = "STFax not running."
    STRING.sNOTSAVED     = "The last FAX has not been saved !"
    STRING.sSAVEDISCARD  = "!SAVE|_Discard|_Cancel"
    STRING.sTRANSMISSION = "Transmission failed !"
    STRING.sNOTINSTALLED = "STFax not installed."
end


'REQUEST STRING TITLE="' || STRING.sSENDFAXTO || '" BODY="' || STRING.sNUMBER ||  '" VAR=FAXNUMBER'

if ((RC = 0) & (FAXNUMBER ~= "")) then do

    if (exists("STFax:")) then do

        /* start STFax */

        'REQUEST STATUS="' || STRING.sSENDING '"'

        if (show('P', "STFAX.1") = 0) then do

            /* run STFax */

            'QUERY SCREEN VAR=SCREEN'

            'run CMD="STFax:STFax NOINIT PUBSCREEN=*"' || SCREEN || '*"" ASYNC DIR="STFax:" WAITPORT="STFAX.1" STACK=10240 SECONDS=10'

            /* terminate STFax after sending the fax */

            TERMINATE = 'TRUE'

        end
        else
            TERMINATE = 'FALSE'

        /* see if STFax is running */

        if (show('P', "STFAX.1") = 0) then

            'REQUEST PROBLEM="' || STRING.sNOTRUNNING || '"'

        else do

            /* save text to temporary file */

            'SAVE ALL EXPORT NAME="t:sendfax.tmp"'

            /* choose name for faxfile */

            'QUERY NAME=FILE'

            'SUFFIX STRING="' || RESULT || '" SUFFIX=".stf"'

            FAXFILE = RESULT

            /* discard "current" fax */

            ADDRESS 'STFAX.1'

            'NEW'

            if (RC ~= 0) then do

                ADDRESS

                'REQUEST BODY="' || STRING.sNOTSAVED || '" BUTTON="' || STRING.sSAVEDISCARD || '"'

                if ((RESULT = 0) | (RC ~= 0)) then do

                    'REQUEST STATUS=""'

                    'UNLOCK'

                    exit
                end

                ADDRESS 'STFAX.1'

                if (RESULT = 1) then

                    'SAVE'

                'NEW FORCE'
            end

            /* convert temporary ASCII file to fax */

            'ADDTEXT t:sendfax.tmp'

            /* save fax */

            'SAVEAS "STFax:FAX_Out/' || FAXFILE || '"'

            /* initialize modem */

            'INITMODEM'

            /* check if <FAXNUMBER> is a number or a phonebook name */

            if (COMPRESS(FAXNUMBER, '+-,!#*() 0123456789') = "") then
                'SEND "' || FAXNUMBER || '"'
            else do
                'SEND PHONEBOOK "' || FAXNUMBER || '"'
            end

            SENDCODE = RC

            if (SENDCODE = 0) then do

                if (TERMINATE = 'TRUE') then do

                    'NEW FORCE'

                    'QUIT'
                end
            end

            ADDRESS

            if (SENDCODE ~= 0) then

                'REQUEST PROBLEM="' || STRING.sTRANSMISSION || '"'

            'FILE DELETE FORCE NAME="t:sendfax.tmp"'
        end

        'REQUEST STATUS=""'
    end
    else
        'REQUEST PROBLEM="' || STRING.sNOTINSTALLED || '"'
end

/* ---------------------------- END OF YOUR CODE --------------------- */

'UNLOCK' /* VERY important: unlock GUI */

exit

SYNTAX:

SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("

'UNLOCK'

exit
