home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / hab4_d1.zip / HAOS2D.Z / PCW2EXP.WAS < prev    next >
Text File  |  1995-08-14  |  8KB  |  395 lines

  1. ; *
  2. ; *  $Revision: 1.2 $
  3. ; *  $Date: 1995/08/11 12:15:21 $
  4. ; *
  5.  
  6.  
  7. ; Global variables defined.
  8. ;
  9. string sPcPlusDir, sProgress1, sExportName, sTemp, sNumber
  10. integer iCount
  11.  
  12.  
  13. ;/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  14. ; * FUNCTION:
  15. ; *     main
  16. ; *
  17. ; * DESCRIPTION:
  18. ; *     This routine calls a few functions to obtain file names, then
  19. ; *     writes out a simple ascii file that can be used with Hilgraeve's
  20. ; *     convert program.  The convert program reads the ascii file produced
  21. ; *     by this script and create HA\Win session files.
  22. ; *
  23. ; * ARGUMENTS:
  24. ; *
  25. ; * RETURNS:
  26. ; *
  27. ; */
  28. proc main
  29.     integer index, nDataBits, nParity, nStopBits, nLocalEcho, nFileIndex, iLoop
  30.     string    sName, sEmulation, sPCEmu
  31.     long    lRate
  32.     string    LineOut
  33.  
  34.     SelectDirectoryFile()
  35.  
  36.     if strcmp sPcPlusDir $NULLSTR
  37.         Exit
  38.     endif
  39.  
  40.     dialcount DATA iCount
  41.     if iCount == 0
  42.         errormsg "There are no entries in this dialing directory"
  43.         Exit
  44.     endif
  45.  
  46.     GetExportFileName()
  47.  
  48.     ; Open the export file
  49.     ;
  50.     nFileIndex = 0
  51.     fopen nFileIndex sExportName CREATE TEXT
  52.     if FAILURE
  53.         strfmt sName "Can't create %s" sExportName
  54.         errormsg sName
  55.         Exit
  56.     endif
  57.  
  58.     ; Display a dialog box to show conversion progress.
  59.     ;
  60.     sProgress1 = $NULLSTR
  61.  
  62.     dialogbox 1 26 19 200 50 3 "Progress!"
  63.         text 1 10 10 197 27 sProgress1 LEFT
  64.     enddialog
  65.  
  66.     iLoop = iCount - 1
  67.     for index = 0 upto iLoop
  68.  
  69.         ; Get the name of the system based on the index.
  70.         ;
  71.         dialname DATA index sName
  72.  
  73.         ; Lock Aspect into that system.  Subsequent fetch statements
  74.         ; will work on this system.
  75.         ;
  76.         set dialentry access sName
  77.  
  78.         ; Get the phone number fields.
  79.         ;
  80.         ConstructDialString()
  81.  
  82.         ; Get port parameters.
  83.         ;
  84.         fetch port baudrate lRate
  85.         fetch port databits nDataBits
  86.         fetch port parity nParity
  87.         fetch port stopbits nStopBits
  88.         fetch port duplex nLocalEcho
  89.  
  90.         ; Determine emulation
  91.         ;
  92.         fetch terminal type sPCEmu
  93.         switch sPCEmu
  94.             case "ADDS 60"
  95.             case "ADDS 90"
  96.                 sEmulation = "Viewpoint"
  97.             endcase
  98.             case "ADM 31"
  99.             case "ADM 3a"
  100.             case "ADM 5"
  101.                 sEmulation = "ADM3A"
  102.             endcase
  103.             case "ANSI BBS"
  104.             case "IBM PC"
  105.                 sEmulation = "ANSI"
  106.             endcase
  107.             case "IBM 3101"
  108.             case "IBM 3161"
  109.                 sEmulation = "IBM 3101"
  110.             endcase
  111.             case "IBM 3270"
  112.                 sEmulation = "IBM 3270"
  113.             endcase
  114.             case "TTY"
  115.                 sEmulation = "TTY"
  116.             endcase
  117.             case "TVI 910"
  118.             case "TVI 912"
  119.             case "TVI 920"
  120.             case "TVI 922"
  121.             case "TVI 925"
  122.                 sEmulation = "TV925"
  123.             endcase
  124.             case "TVI 950"
  125.             case "TVI 955"
  126.                 sEmulation = "TV950"
  127.             endcase
  128.             case "VT-52"
  129.                 sEmulation = "VT52"
  130.             endcase
  131.             case "VT-100"
  132.                 sEmulation = "VT100"
  133.             endcase
  134.             case "VT-102"
  135.                 sEmulation = "VT102"
  136.             endcase
  137.             case "VT-220"
  138.                 sEmulation = "VT220"
  139.             endcase
  140.             case "VT-320"
  141.                 sEmulation = "VT320"
  142.             endcase
  143.             case "VIDTEX"
  144.                 sEmulation = "CompuServe"
  145.             endcase
  146.             default
  147.                 sEmulation = "TTY"
  148.             endcase
  149.         endswitch
  150.  
  151.         ; Remove any field delimiters from the string variables.
  152.         ;
  153.         strreplace sName "^" "-"
  154.         strreplace sNumber "^" "-"
  155.         strreplace sEmulation "^" "-"
  156.  
  157.         strfmt LineOut "%s^%s^%s^%ld^%d^%d^%d^%d"  \
  158.                         sName sNumber sEmulation lRate nDataBits \
  159.                         nParity nStopBits nLocalEcho
  160.  
  161.         fputs nFileIndex Lineout
  162.         strfmt sProgress1 "Converting entry %d of %d" index, iCount
  163.         dlgupdate 1 1
  164.  
  165.         mspause(100)
  166.  
  167.     endfor
  168.  
  169.     dlgdestroy 1 OK
  170.  
  171.     ; Close the export file.
  172.     ;
  173.     fclose nFileIndex
  174.  
  175.     ; Tell the user what has happened.
  176.     ;
  177. strfmt LineOut, \
  178. "Conversion of %s complete.  %d entries have been exported to the file named %s.  \
  179. You may now run Hilgraeve's Conversion program using this export file." \
  180. sPcPlusDir, iCount, sExportName
  181.  
  182.     usermsg LineOut
  183.  
  184.     Exit
  185.  
  186. endproc
  187.  
  188. ;/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  189. ; * FUNCTION:
  190. ; *     SelectDirectoryFile
  191. ; *
  192. ; * DESCRIPTION:
  193. ; *     This routine allows the user to select the Procomm for Windows
  194. ; *     dialing directory that is to be converted.
  195. ; *
  196. ; * ARGUMENTS:
  197. ; *
  198. ; * RETURNS:
  199. ; *
  200. ; */
  201. proc SelectDirectoryFile
  202.     string    sTestName, sFileSpec
  203.     integer iEvent
  204.  
  205.     dialogbox 2 26 19 200 90 3 "Enter file"
  206.         text 1 10 10 197 27 "This program converts a Procomm Plus for Windows" LEFT
  207.         text 2 10 17 197 27 "dialing directory into an export file for use with" LEFT
  208.         text 3 10 24 197 27 "Hilgraeve's Convert program." LEFT
  209.         text 4 10 38 197 27 "Dialing directory to be converted:" LEFT
  210.         editbox 5 10 48 130 12 sPcPlusDir
  211.         pushbutton 6 10 68 40 14 "OK" OK
  212.         pushbutton 7 60 68 40 14 "Cancel" CANCEL
  213.         pushbutton 8 150 48 40 14 "Browse"
  214.     enddialog
  215.  
  216.     while 1
  217.  
  218.         dlgevent 2 iEvent
  219.  
  220.         switch iEvent
  221.  
  222.             case 6              ; OK pressed!
  223.  
  224.                 ; Validate the    name by checking to see if the extension
  225.                 ; is at least ".dir"
  226.                 ;
  227.                 sTestName = sPcPlusDir
  228.                 strright sTestName sPcPlusDir 4
  229.                 strlwr sTestName
  230.  
  231.                 if not strcmp sTestname ".dir"
  232.                     errormsg "Invalid file name.  Please try again."
  233.                     sPcPlusDir = $NULLSTR
  234.                     exitwhile
  235.                 else
  236.                     ; Now make sure the file exists.
  237.                     ;
  238.                     findfirst sPcPlusDir
  239.                     if FAILURE
  240.                         errormsg "Invalid file name.  Please try again."
  241.                         sPcPlusDir = $NULLSTR
  242.                     else
  243.                         dialload sPcPlusDir
  244.                     endif
  245.                     exitwhile
  246.                 endif
  247.  
  248.             endcase
  249.  
  250.             case  7             ; Cancel was pressed
  251.                 sPcPlusDir = $NULLSTR
  252.                 exitwhile
  253.             endcase
  254.  
  255.             case 8                ; Browse was selected
  256.                 sFileSpec = "*.dir"
  257.                 sdlgfopen "Browse" sFileSpec sPcPlusDir
  258.                 dlgupdate 2 5
  259.             endcase
  260.  
  261.         endswitch
  262.  
  263.     endwhile
  264.  
  265.     dlgDestroy 2 CANCEL
  266.  
  267. endproc
  268.  
  269.  
  270. ;/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  271. ; * FUNCTION:
  272. ; *
  273. ; * DESCRIPTION:
  274. ; *
  275. ; * ARGUMENTS:
  276. ; *
  277. ; * RETURNS:
  278. ; *
  279. ; */
  280. proc GetExportFileName
  281.     integer iEvent
  282.  
  283.     ; Fully quallify the name and see if it exists.  If it does,
  284.     ; ask the user if it's OK to overwrite the file.  If OK, continue,
  285.     ; otherwise exit the script.
  286.     ;
  287.     fullpath sExportName "tohaos2.exp"
  288.  
  289.     if isfile sExportName
  290.  
  291.         strfmt sTemp "The file %s already exists." sExportName
  292.  
  293.         dialogbox 3 26 19 200 70 3 "File Exists!"
  294.             text 1 10 10 197 27 sTemp LEFT
  295.             text 2 10 24 197 27  "The file will be overwritten!" LEFT
  296.             pushbutton 3 10 40 40 14 "OK" OK
  297.             pushbutton 4 60 40 40 14 "Cancel" CANCEL
  298.         enddialog
  299.  
  300.         while 1
  301.  
  302.             dlgevent 3 iEvent
  303.  
  304.             switch iEvent
  305.  
  306.                 case 3
  307.                     exitwhile        ; OK was pressed
  308.                 endcase
  309.  
  310.                 case 4                ; Cancel pressed!
  311.                     dlgdestroy 3 OK
  312.                     Exit
  313.                 endcase
  314.  
  315.             endswitch
  316.  
  317.         endwhile
  318.  
  319.         dlgdestroy 3 OK
  320.  
  321.     endif
  322.  
  323.     return
  324.  
  325. endproc
  326.  
  327.  
  328. proc ConstructDialString
  329.  
  330.     integer iCallType, iLen
  331.     string sEntryNumber, sEntryCountryCode, sEntryAreaCode
  332.  
  333.     string sDirAreaCode, sDirCountryCode, sDirItlPrefix
  334.     string sDirLdLineOut, sDirLdPrefix, sDirLocalLineOut
  335.  
  336.     fetch dialentry calltype            iCallType
  337.  
  338.     fetch dialentry phonenumber DATA sEntryNumber EXPAND
  339.  
  340.     fetch dialentry countrycode         sEntryCountryCode
  341.     fetch dialentry areacode            sEntryAreaCode
  342.  
  343.     fetch dialdir    areacode            sDirAreaCode
  344.     fetch dialdir    countrycode         sDirCountryCode
  345.     fetch dialdir    intlprefix            sDirItlPrefix
  346.     fetch dialdir    ldlineout            sDirLdLineOut
  347.     fetch dialdir    ldprefix            sDirLdPrefix
  348.     fetch dialdir    loclineout            sDirLocalLineOut
  349.  
  350.     switch iCallType
  351.  
  352.         ; Internal
  353.         ;
  354.         case 0
  355.             strfmt sNumber "%s"                 \
  356.                             sEntryNumber
  357.         endcase
  358.  
  359.         ; Local
  360.         ;
  361.         case 1
  362.             strfmt sNumber "%s%s"                \
  363.                             sDirLocalLineOut    \
  364.                             sEntryNumber
  365.         endcase
  366.  
  367.         ; Long distance
  368.         ;
  369.         case 2
  370.             strfmt sNumber "%s%s %s %s"         \
  371.                             sDirLdLineOut        \
  372.                             sDirLdPrefix        \
  373.                             sEntryAreaCode        \
  374.                             sEntryNumber
  375.         endcase
  376.  
  377.         ; International
  378.         ;
  379.         case 3
  380.             strfmt sNumber "%s %s %s %s %s"     \
  381.                             sDirLdLineOut        \
  382.                             sDirItlPrefix        \
  383.                             sEntryCountryCode    \
  384.                             sEntryAreaCode        \
  385.                             sEntryNumber
  386.         endcase
  387.  
  388.     endswitch
  389.  
  390.     strlen sNumber iLen
  391.     if iLen == 0
  392.         strcpy sNumber "*"
  393.     endif
  394. endproc
  395.