home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Bonus / WSTAR2 / DISK4 / MAILCMC.WM_ / MAILCMC.bin
Encoding:
Text File  |  1994-02-28  |  39.8 KB  |  811 lines

  1. REM Description: Send current document as email note or attachment
  2. REM Filename: mailcmc.wmc
  3. REM Created by: Rich Zuris - 1/27/94
  4. REM Supports CMC (Common Messaging Calls - XAPIA) standard
  5. REM Contact your email vendor regarding CMC support
  6.  
  7. 'This macro will send the current document as an email attachment on a CMC-
  8. 'compatible email system. If the current document is in the form of an email
  9. 'note, containing recipient name(s) and a subject, it will send the document
  10. 'as a note instead of an attachment so that the message can be read by 
  11. 'recipients without WSWin.
  12.  
  13. 'The macro will search page 1 of the current document for "To:" and "Subject:"
  14. 'lines. If found, it will use these paragraphs to address the message. If an
  15. 'optional "Attachments:" line is found, it will attach these files to the
  16. 'message. If "To:" and "Subject:" lines are not found, the entire document
  17. 'will be attached to a blank message, and your email system will prompt you 
  18. 'for recipients and other options. You may customize the options below to suit
  19. 'your needs.
  20.  
  21. 'You may customize the following settings. They are used to determine whether
  22. 'the current document should be sent as a note or an attachment.
  23. CONST TO_TEXT$   = "To:"            'Text that marks the list of recipients
  24. CONST SUBJ_TEXT$ = "Subject:"        'Marks the subject text
  25. CONST ATT_TEXT$  = "Attachments:"    'Marks an optional list of attachments
  26. CONST DELIMITER$ = ";"                'Separates multiple recipients or attachments
  27. 'Note: Multiple recipients or attachments must appear in a single paragraph,
  28. 'with only the delimeter character and optional spaces in between each item.
  29. 'Should search for above keywords ignore upper/lowercase? 1 = yes, 0 = no
  30. CONST IGNORE_CASE% = 0
  31. 'Display email dialog if document is a message with subject and recipients?
  32. '    0 = Don't display dialog
  33. '    1 = Always display
  34. '    2 = Always prompt before displaying
  35. '    3 = Only prompt before displaying if there are no attachments
  36. 'Note: Microsoft Mail 3.0 will NOT paste the message text into the note field
  37. 'if you display the email dialog but do not include attachments.
  38. CONST DISPLAY_DIALOG% = 2
  39.  
  40. 'Caption for MessageBox
  41. SHARED MsgTitle$
  42. MsgTitle$ = "Mailcmc Macro"
  43. 'MessageBox flags from constant.wmc
  44. CONST OK_CANCEL% = 1
  45. CONST YES_NO_CANCEL% = 3
  46. CONST YES_NO% = 4
  47. CONST RETRY_CANCEL% = 5
  48. CONST STOP% = 16
  49. CONST QUESTION% = 32
  50. CONST EXCLAMATION% = 48
  51. CONST INFORMATION% = 64
  52. CONST OK% = 1
  53. CONST CANCEL% = 2
  54. CONST RETRY% = 4
  55. CONST YES% = 6
  56. CONST NO% = 7
  57.  
  58. 'Initialize cmc_send_document parameters
  59. SHARED To$, Subject$, NoteText$, Attachments$, FileTitle$
  60. To$            = ""
  61. Subject$        = ""
  62. NoteText$        = ""
  63. Attachments$     = ""
  64. FileTitle$        = ""
  65.  
  66. 'Screen state
  67. SHARED freeze%
  68. 'File position
  69. SHARED NotePos%
  70.  
  71. 'CMC Flags--do not modify
  72. CONST ERROR_UI_ALLOWED% = 1 * 16 ^ 6    'Do not modify this value
  73. CONST LOGON_UI_ALLOWED% = 2 * 16 ^ 6    'Do not modify this value
  74. CONST SEND_UI_REQUESTED% = 1            'Do not modify this value
  75. SHARED SENDFLAGS%
  76. SENDFLAGS% = ERROR_UI_ALLOWED% + LOGON_UI_ALLOWED%
  77.  
  78. 'APIs
  79. DECLARE FUNCTION GetTempFileName LIB "kernel" (bDriveLetter AS WORD, lpszPrefixString AS STRING, uUnique AS WORD, lpszTempFileName AS STRING) As Word
  80. DECLARE FUNCTION cmc_send_documents LIB "cmc.dll" (lpRecip AS STRING, lpSubject AS STRING, lpTextNote AS STRING, ulFlags AS INTEGER, lpFilePaths AS STRING, lpFileNames AS STRING, lpDelim AS STRING, ulUID as INTEGER) AS Integer
  81. DECLARE FUNCTION GetKeyText$ (lpKeyword$)
  82. DECLARE FUNCTION GetFurthestPos% (prevPos%)
  83. DECLARE FUNCTION DisplayDialog% (ask%, att$)
  84. DECLARE FUNCTION MakeAttachment$ (lpFileTitle$, flags%)
  85. DECLARE SUB Status (ret%)
  86. DECLARE SUB AbortMacro ()
  87.  
  88. 'Can't run if no document open
  89. IF GetDocName$() = "" THEN
  90.     Msg$ = "Please create a new document or open an existing document first."
  91.     ret% = MessageBox(Msg$, MsgTitle$, EXCLAMATION%)
  92.     STOP
  93. ENDIF
  94.  
  95. 'Ensure we're in Edit mode in the Page Editor
  96. ViewEditor 1
  97. ViewEditMode 1
  98.  
  99. 'Prevent screen updates
  100. freeze% = ViewFreezeScreen(1)
  101.  
  102. 'If not a normal text frame, send as attachment
  103. frameType% = GetTextFrameType()
  104. IF frameType% = 0 OR frameType% > 3 THEN GOTO SENDATT
  105.  
  106. 'Get recipient list, subject, attachments, and note text, if this is a memo
  107. 'Use furthest keyword position from top of file as start of note text
  108. StatusMsg "Checking document for email text . . ."
  109. NotePos%        = 0
  110. TmpFile%        = 0
  111. To$            = GetKeyText$(TO_TEXT$)
  112. NotePos%        = GetFurthestPos%(NotePos%)
  113. Subject$        = GetKeyText$(SUBJ_TEXT$)
  114. NotePos%        = GetFurthestPos%(NotePos%)
  115. Attachments$     = GetKeyText$(ATT_TEXT$)
  116. IF Attachments$ <> "" THEN NotePos% = GetFurthestPos%(NotePos%)
  117. StatusMsg ""
  118.  
  119. 'If no recipients or subject found, send doc as an attachment
  120. IF To$ = "" OR Subject$ = "" THEN GOTO SENDATT
  121.  
  122. 'Go to beginning of note text and select rest of story as the note text
  123. EditGotoOffset NotePos%,         'Go to end of keyword list
  124. WordRight                        'Go to beginning of next line
  125. EndOfStory 1                    'Select rest of document
  126. NoteText$ = GetSelection$(1)    'Get note text
  127. 'If no attachments specified and email dialog is displayed, 
  128. 'user may need to paste in the note text manually
  129. IF DisplayDialog%(DISPLAY_DIALOG%, Attachments$) THEN
  130.     SENDFLAGS% = SENDFLAGS% OR SEND_UI_REQUESTED%
  131. END IF
  132.  
  133. 'If there are dependent frames in this document, prompt whether to send current 
  134. 'selection as a text note, or entire document as an attachment
  135. IF CountFrames() <> CountPages() THEN
  136.     Msg$ = "This document contains dependent frames, and only the current frame "
  137.     Msg$ = Msg$ + "is being used for the email note. Do you wish to attach the "
  138.     Msg$ = Msg$ + "document to the email note?"
  139.     ret% = MessageBox(Msg$, MsgTitle$, YES_NO_CANCEL% + QUESTION%)
  140.     IF ret% = CANCEL% THEN AbortMacro
  141.     IF ret% = NO% THEN GOTO SENDDOC
  142. ELSE
  143.     GOTO SENDDOC
  144. END IF
  145.  
  146. 'Send entire document as an attachment
  147. SENDATT:
  148. Attachments$ = MakeAttachment$(FileTitle$, SENDFLAGS%)
  149. TmpFile% = 1
  150.  
  151. 'Call CMC.DLL to send the document or message
  152. SENDDOC:
  153. StatusMsg "Calling email system . . ."
  154. ret% = cmc_send_documents(To$, Subject$, NoteText$, SENDFLAGS%, Attachments$, FileTitle$, DELIMITER$, 0)
  155. StatusMsg ""
  156. IF TmpFile% = 1 THEN KILL Attachments$
  157. Status (ret%)
  158. EditGotoOffset NotePos%,
  159. freeze% = ViewFreezeScreen(freeze%)    'Move this up if it interferes with UI
  160.  
  161. STOP
  162.  
  163.  
  164. '*************************************
  165. 'Find keyword text for email note
  166. '
  167. 'Search the first page of the doc only
  168. '*************************************
  169. FUNCTION GetKeyText$ (lpKeyword$)
  170.  
  171. StartOfStory
  172. EndOfFrame
  173. IF (EditFind( lpKeyword$, 1, 0, 0, IGNORE_CASE%, 1, )) THEN
  174.     'Find first occurrence, searching backward
  175.     DO
  176.         ret% = EditFindNext(0)
  177.     LOOP WHILE ret% = 1
  178.     'If keyword found only once, it's highlighted.  If found more than once,
  179.     'it is unhighlighted.  Unhighlight it for consistency.
  180.     ret% = GetTextOffset(beg%, end%)
  181.     EditGotoOffset beg%, 
  182.     'Move one word to the right, then select remainder of paragraph
  183.     WordRight
  184.     EndOfPara 1
  185.     'Return selected text
  186.     GetKeyText$ = GetSelection$(1)
  187. ELSE
  188.     GetKeyText$ = ""
  189. END IF
  190.  
  191. END FUNCTION
  192.  
  193. '*************************************************
  194. 'Get furthest keyword position from start of file
  195. 'Used to determine where note text begins
  196. '
  197. 'Param:    previous position
  198. 'Returns:    greater of previous or current position
  199. '*************************************************
  200.  
  201. FUNCTION GetFurthestPos% (prevPos%)
  202.  
  203. ret% = GetTextOffSet (beg%, end%)
  204. EditGotoOffset end%, 
  205. IF prevPos% > end% THEN
  206.     GetFurthestPos% = prevPos%
  207. ELSE
  208.     GetFurthestPos% = end%
  209. END IF
  210.  
  211. END FUNCTION
  212.  
  213. '**************************************************
  214. 'Create temp file to send document as an attachment
  215. '
  216. 'Params:
  217. '    buffer to hold file title
  218. '    send flags
  219. '
  220. 'Returns:
  221. '    returns temp file name of attachment
  222. '    sets file title to name of document
  223. '    ensures flags will request email UI
  224. '**************************************************
  225. FUNCTION MakeAttachment$ (lpFileTitle$, flags%)
  226.  
  227. 'Get temporary file name and save copy of document
  228. 'Hope there's enough disk space on temp drive, etc.
  229. MKTMP:
  230. lpFileName$ = STRING$(144, " ")
  231. ret% = GetTempFileName(I2W(0), "WSW", I2W(0), lpFileName$)
  232. FileSaveAsCopy (lpFileName$)
  233. IF ACCESS(lpFileName$, 0) = 0 THEN
  234.     Msg$ = "Could not create temporary file. You may be low on disk space. "
  235.     Msg$ = Msg$ + "Delete some files and choose Retry, or choose Cancel to quit."
  236.     Flags% = RETRY_CANCEL% + EXCLAMATION%
  237.     IF MessageBox(Msg$, MsgTitle$, Flags%) = RETRY% THEN GOTO MKTMP
  238.     AbortMacro
  239. END IF
  240.  
  241. 'Get title of this document from WSWin
  242. docName$ = GetDocName$()
  243. WHILE INSTR(docName$, "\")
  244.     docName$ = MID$(docName$, INSTR(docName$, "\") + 1)
  245. WEND
  246.  
  247. 'If doc is untitled, name it Untitled (sans number)
  248. IF LEFT$(docName$, 8) = "Untitled" THEN
  249.     docName$ = "Untitled.wsd"
  250. END IF
  251.  
  252. MakeAttachment$ = lpFileName$
  253. lpFileTitle$ = docName$
  254. flags% = flags% OR SEND_UI_REQUESTED%    'Ensure email dialog will be displayed
  255.  
  256. END FUNCTION
  257.  
  258. '**********************************************************
  259. '
  260. '    Determine whether email dialog should be displayed
  261. '
  262. '    Params:    
  263. '        flag indicating whether to always prompt
  264. '        attachments (empty string if none)
  265. '
  266. '    Copies selected text to clipboard if no attachments
  267. '
  268. '    Returns:  1 if dialog should be displayed, else 0
  269. '
  270. '**********************************************************
  271. FUNCTION DisplayDialog% (ask%, att$)
  272.  
  273. IF att$ = "" THEN
  274.     EditCopy        'Copy note text to clipboard
  275.     CharLeft 1, ,    'Unhighlight the text selection
  276. END IF
  277.  
  278. SELECT CASE ask%
  279.  
  280. CASE 0    'Never display
  281.     DisplayDialog% = 0
  282.     
  283. CASE 1    'Always display
  284.     DisplayDialog% = 1
  285.  
  286. CASE 3    'Prompt before displaying if there are no attachments
  287.     IF att$ = "" THEN GOTO ASK_DISP
  288.  
  289. CASE 2    'Always prompt before displaying
  290. ASK_DISP:
  291.     Question$ = "Display email dialog before sending message?"
  292.     ret% = MessageBox (Question$, MsgTitle$, YES_NO_CANCEL% + QUESTION%)
  293.     IF ret% = CANCEL% THEN AbortMacro
  294.     IF ret% = NO% THEN
  295.         DisplayDialog% = 0
  296.     ELSE    'Yes
  297.         DisplayDialog% = 1
  298.     END IF
  299.  
  300. END SELECT
  301.  
  302. COPY_INFO:
  303. IF DisplayDialog% = 1 AND att$ = "" THEN
  304.     Msg$ = "The note text has been copied to the clipboard. If the note text "
  305.     Msg$ = Msg$ + "does not appear, you can paste it into the message body "
  306.     Msg$ = Msg$ + "from the email menu."
  307.     ret% = MessageBox (Msg$, MsgTitle$, INFORMATION%)
  308. END IF
  309.  
  310. END FUNCTION
  311.  
  312.  
  313.  
  314. '*******************************
  315. ' Abort macro
  316. '*******************************
  317. SUB AbortMacro
  318.  
  319. BEEP
  320. IF NotePos% <> 0 THEN EditGotoOffset NotePos%,
  321. Status (36)
  322. freeze% = ViewFreezeScreen (freeze%)
  323. STOP
  324.  
  325. END SUB
  326.  
  327.  
  328. '*******************************
  329. 'Display message if error occurs
  330. '*******************************
  331. SUB Status (status%)
  332.  
  333. Select Case status%
  334.     Case 0
  335.         Msg$ = "Success"
  336.     Case 1
  337.         Msg$ = "Ambiguous recipient"
  338.     Case 2
  339.         Msg$ = "Attachment not found"
  340.     Case 3
  341.         Msg$ = "Attachment open failure"
  342.     Case 4
  343.         Msg$ = "Attachment read failure"
  344.     Case 5
  345.         Msg$ = "Attachment write failure"
  346.     Case 6
  347.         Msg$ = "Counted string unsupported"
  348.     Case 7
  349.         Msg$ = "Disk full"
  350.     Case 8
  351.         Msg$ = "Failure"
  352.     Case 9
  353.         Msg$ = "Insufficient memory"
  354.     Case 10
  355.         Msg$ = "Invalid configuration"
  356.     Case 11
  357.         Msg$ = "Invalid enum"
  358.     Case 12
  359.         Msg$ = "Invalid flag"
  360.     Case 13
  361.         Msg$ = "Invalid memory"
  362.     Case 14
  363.         Msg$ = "Invalid message parameter"
  364.     Case 15
  365.         Msg$ = "Invalid message reference"
  366.     Case 16
  367.         Msg$ = "Invalid parameter"
  368.     Case 17
  369.         Msg$ = "Invalid session ID"
  370.     Case 18
  371.         Msg$ = "Invalid UI ID"
  372.     Case 19
  373.         Msg$ = "Logon failure"
  374.     Case 20
  375.         Msg$ = "Message in use"
  376.     Case 21
  377.         Msg$ = "Not supported"
  378.     Case 22
  379.         Msg$ = "Password required"
  380.     Case 23
  381.         Msg$ = "Recipient not found"
  382.     Case 24
  383.         Msg$ = "Service unavailable"
  384.     Case 25
  385.         Msg$ = "Text too large"
  386.     Case 26
  387.         Msg$ = "Too many files"
  388.     Case 27
  389.         Msg$ = "Too many recipients"
  390.     Case 28
  391.         Msg$ = "Unable to not mark as read"
  392.     Case 29
  393.         Msg$ = "Unrecognized message type"
  394.     Case 30
  395.         Msg$ = "Unsupported action"
  396.     Case 31
  397.         Msg$ = "Unsupported character set"
  398.     Case 32
  399.         Msg$ = "Unsupported data ext"
  400.     Case 33
  401.         Msg$ = "Unsupported flag"
  402.     Case 34
  403.         Msg$ = "Unsupported function ext"
  404.     Case 35
  405.         Msg$ = "Unsupported version"
  406.     Case 36
  407.         Msg$ = "Message canceled"
  408.     Case 37
  409.         Msg$ = "User not logged on"
  410.     Case Else
  411.         Msg$ = "Unknown error"
  412. End Select
  413.  
  414. IF status% <> 0 THEN ret% = MessageBox(Msg$, MsgTitle$, EXCLAMATION%)
  415.  
  416. END SUB
  417.  
  418.  
  419. 
  420. *****  WARNING *****
  421. This is a WSWin macro file.
  422. Subsequent data is binary information and should not be modified.
  423. # MF # 1.0None762570490L|ÿYrk
  424. 8    àå
  425. 8    çê
  426. 8    ëè
  427. 8    ïî
  428. 8+    Éæ
  429. 8+=    ¿¡
  430. 8=>    ⌐¡
  431. 8>?    ¬¡
  432. 8?@    ½¡
  433. 8@A    ¼¡
  434. 8AM│░▒
  435. 8MY╤╙╘
  436. â╙¡╒â
  437. 8Y[    ╓╫
  438. 8[\┘¥╪╓É┘╧┌
  439. 8\]
  440. 8]a▄Ç█▄▌
  441. 8ab߀
  442. ▐▀αß
  443. 8beπÇ
  444. Γπ«Σ
  445. 8ehµστ
  446. 8hh(
  447. ΘσΩσöâΘΩδâ
  448. 8h(i∞
  449. 8im∩εφ∩≡
  450. 8mn»
  451. 8no±
  452. 8op─à≥    ¿≥
  453. 8pq╞»»
  454. 8qr─ç≤    ⌐≤
  455. 8rs╞»»
  456. 8st─ë⌠    ½⌠
  457. 8tt ⽡÷â
  458. 8tu╞»»
  459. 8uv≈¡φ≈°
  460. 8vx!
  461. ·¿¡
  462. √⌐¡â·√ⁿâ
  463. 8x!y∞
  464. 8y|
  465. ²» 
  466. 8|}
  467. 
  468. 8}~Ç
  469. 8~Ç
  470.     ¬
  471. 8ü5
  472. ╚
  473. ½ â  â
  474. 8ü5â││▓
  475. 8âç% 
  476. 
  477.  ââ
  478. 8ç%ë    ╓
  479. 8ëè"╓    ╓
  480. 8èï"╓    ╓
  481. 8ïîô¢╪╓É╧
  482. 8îî
  483. â╧óâ
  484. 8îì╨
  485. 8ìì
  486. â╧ªâ
  487. 8ìÄ 
  488. 8ÄÉ 
  489. 8Éò
  490. ╦¼│!    ½!
  491. 8òû±Ç
  492. 8ûÜ#"φ#$
  493. 8Ü¢%║¿⌐¬│½¼ï%╧
  494. 8¢£&¡φ&'
  495. 8££
  496. â±Ç)â
  497. 8£¥'½
  498. 8¥₧*╧╬*
  499. 8₧ƒ
  500. ²»+
  501. 8ć
  502. Γ««,
  503. 8áó(─
  504. 8ó¼/0
  505. 8¼¡12
  506. 8¡¡;758696:ì;54-789:;<=â<>â
  507. 8¡;▒C6
  508. BCAD
  509. 8▒▓
  510. âA5?â
  511. 8▓╡ EFGAH
  512. 8╡╢
  513. IFJ
  514. 8╢╕
  515. KL
  516. 8╕╣N5MNO
  517. 8╣╗Q5
  518. PQRS    ─R3
  519. 8╗╜    ─T
  520. 8╜└(╞
  521. 8└╠ XYZW[
  522. 8╠═
  523. \Z]
  524. 8══âUZ_â
  525. 8═╧╞U^
  526. 8╧╤╞Z
  527. 8╤╘(╦
  528. 8╘τhfig ehijk    dj
  529. 8τΦpn
  530. mpqrsotn
  531. mtuv┤qsudwlw
  532. 8ΦΘ    ydxyz
  533. 8ΘΘ"}n {d}~
  534. â~nÇâ
  535. 8Θ"δ    üé
  536. 8δ∞"äüâ    üä
  537. 8∞φaù¥
  538. 8φφ7àüÉaçê
  539. âçúëâ
  540. 8φ7εc
  541. 8ε∩╨
  542. 8∩≤ïîì    èî
  543. 8≤⌠
  544. .âÇèÅÉâ
  545. 8⌠⌡
  546. .ôÇèÅöôæ
  547. -Æèö    èÆÄ
  548. 8⌡°'Öù òèÖÜ¢
  549. âÜÿ£â
  550. 8°'·    è¥
  551. 8·²    ╦d
  552. 8²■    `è
  553. 8■ aa▓
  554. 8 (╚
  555. 8
  556. âƒóúâ
  557. 8ñÑ
  558. 8¿º ª¿⌐
  559. 8¬₧
  560. 8
  561. ⬼¡â«
  562. 8Ȭ
  563. 8½
  564. ⬺»â░
  565. 8ȧ
  566. 8½
  567. â¬▒▓â│
  568. 8
  569. âƒó╡â
  570. 8 ╢
  571. 8 "½
  572. â¬╖╕â╣
  573. 8"$    ║╗
  574. 8$%╛ô¢╜║É╛╝┐
  575. 8%%
  576. â╝ó┴â
  577. 8%&╨
  578. 8&&
  579. â╝ª├â
  580. 8&(╚¼┬
  581. 8(*ȧ
  582. 8*/(
  583. ╞╚º
  584. ╟ƒóâ╞╟╚â
  585. 8/(1    ╔╩
  586. 812"╠╔╦    ╔╠
  587. 823"╬╔═    ╔╬
  588. 834╧ƒ╜╔É╧╝╨
  589. 847(╨
  590. 87@
  591. 8@@ â»╙╘â
  592. 8@A
  593. ╒»╓
  594. 8AB╪╫╬╪
  595. 8BC
  596. ┘««┌
  597. 8CD
  598. 8DF(╬
  599. 8FN▌█
  600. 8NO
  601. â▌▀αâß
  602. 8OP    Γπ
  603. 8PQ▐
  604. â▌Σσâµ
  605. 8QR    Γτ
  606. 8RS▐
  607. â▌ΦΘâΩ
  608. 8ST    Γδ
  609. 8TU▐
  610. â▌∞φâε
  611. 8UV    Γ∩
  612. 8VW▐
  613. â▌≡±â≥
  614. 8WX    Γ≤
  615. 8XY▐
  616. â▌⌠⌡â÷
  617. 8YZ    Γ≈
  618. 8Z[▐
  619. â▌°∙â·
  620. 8[\    Γ√
  621. 8\]▐
  622. â▌ⁿ²â■
  623. 8]^    Γ 
  624. 8^_▐
  625. â▌â
  626. 8_`    Γ
  627. 8`a▐
  628. â▌â
  629. 8ab    Γ
  630. 8bc▐
  631. â▌    â
  632. 
  633. 8cd    Γ 
  634. 8de▐
  635. â▌ 
  636. â
  637. 8ef    Γ
  638. 8fg▐
  639. â▌â
  640. 8gh    Γ
  641. 8hi▐
  642. â▌â
  643. 8ij    Γ
  644. 8jk▐
  645. â▌â
  646. 8kl    Γ
  647. 8lm▐
  648. â▌â
  649. 8mn    Γ
  650. 8no▐
  651. â▌ !â"
  652. 8op    Γ#
  653. 8pq▐
  654. â▌$%â&
  655. 8qr    Γ'
  656. 8rs▐
  657. â▌()â*
  658. 8st    Γ+
  659. 8tu▐
  660. â▌,-â.
  661. 8uv    Γ/
  662. 8vw▐
  663. â▌01â2
  664. 8wx    Γ3
  665. 8xy▐
  666. â▌45â6
  667. 8yz    Γ7
  668. 8z{▐
  669. â▌89â:
  670. 8{|    Γ;
  671. 8|}▐
  672. â▌<=â>
  673. 8}~    Γ?
  674. 8~▐
  675. â▌@AâB
  676. 8Ç    ΓC
  677. 8Çü▐
  678. â▌DEâF
  679. 8üé    ΓG
  680. 8éâ▐
  681. â▌HIâJ
  682. 8âä    ΓK
  683. 8äà▐
  684. â▌LMâN
  685. 8àå    ΓO
  686. 8åç▐
  687. â▌PQâR
  688. 8çê    ΓS
  689. 8êë▐
  690. â▌TUâV
  691. 8ëè    ΓW
  692. 8èï▐
  693. â▌XYâZ
  694. 8ïî    Γ[
  695. 8îì▐
  696. â▌\]â^
  697. 8ìÄ    Γ_
  698. 8ÄÅ▐
  699. â▌`aâb
  700. 8ÅÉ    Γc
  701. 8Éæ▐
  702. â▌deâf
  703. 8æÆ    Γg
  704. 8Æô▐
  705. â▌hiâj
  706. 8ôö    Γk
  707. 8öò▐
  708. â▌lmân
  709. 8òû    Γo
  710. 8ûù▐
  711. â▌pqâr
  712. 8ùÿ    Γs
  713. 8ÿÖ▐
  714. â▌tuâv
  715. 8ÖÜ    Γw▐
  716. 8Ü£    Γx
  717. 8£₧ â█▀zâ
  718. 8₧ƒ}¥|ΓÉ}{~
  719. 8ƒíü~┌$-U`₧╤█ÇÇÇÇÇÇÇÇÇÇÇÇÇÇ.τb.τb.τb .τb-.τb5.τb;.τbA.τbN.τb^.τb    l.τb
  720. z.τb ê.τb û.τb
  721. ñ.τb▓.τb╢.τb╣.τb╜.τb└.τb┬.τb─.τb╞.τb╔.τb╠.τb╧.τb╥.τb╘.τb╓.τb┌.τb▄.τb▐.τbα.τb Γ.τb!Σ.τb"Θ.τb#∞.τb$≡.τb%⌡.τb&ⁿ.τb'/τb(
  722. /τb)/τb*/τb+/τb,"/τb-(/τb.-/τb/3/τb06/τb1;/τb2@/τb3B/τb4E/τb5J/τb6N/τb7T/τb8Y/τb9`/τb:g/τb;l/τb<o/τb=w/τb>y/τb?{/τb@/τbAê/τbBî/τbCÅ/τbDù/τbE₧/τbFú/τbG¡/τbH┤/τbI╣/τbJ╜/τbK┬/τbL╟/τbM═/τbN╤/τbO╒/τbP▄/τbQπ/τbRΩ/τbS≡/τbT≈/τbU0τbV
  723. 0τbW0τbX$0τbY10τbZ:0τb[G0τb\P0τb]X0τb^`0τb_h0τb`q0τbav0τbb{0τbcÇ0τbdç0τbeÄ0τbfö0τbg¢0τbh¥0τbió0τbj¿0τbk«0τbl╡0τbm╛0τbn╟0τbo╦0τbp╙0τbq╫0τbr▄0τbsΓ0τbtΦ0τbuε0τbv⌠0τbw∙0τbx■0τby1τbz1τb{1τb|1τb}gb  gb+gb+    gbgbgb  gb gb
  724.           )gb+      /gb
  725.           :gb+      Egb
  726.           Ogb+      ^gb
  727.           igb+      mgb    +P  zgb    +P  ègb+  îgb
  728.     @      ûgb+      ªgb    +P  ▒gb    +P  └gb+  ┬gb    +P  ╩gb+  ╠gb    +P  ┌gb+  ▄gb    +P  Γgb+  σgb    +P   ∩gb+   ≥gb    +P  0 gb+  0gb    +P  @gb+  @gb    +P  gb    +P  gb    +P  %gb    +P  *gb+  ,gb    +P  0gb+  2gb
  729.     @      6gb
  730.     @      ?gb
  731.     @      Igb
  732.     @      Vgb
  733.     @      agb+      dgb    @      lgb    @      ugb    +P  çgb    +P  Ögb    +P  ¼gb    @      ╖gbàB╡╟gb╨gb▌gbεgb÷gbgbçB╗gb$gb,gb6gbAgbIgbUgbagbigbogb
  734. ë@6    {gb
  735. ågb    ç@p    ûgb    ƒgb    ç@ε    «gb    │gb
  736. ╕gb
  737. ë@µ    ╚gb
  738. ╒gb    ▄gbA@¬     πgb          ΦgbA@,     ≤gb
  739. ë gb  gb          gb     gb  gb
  740.           gb+      [gbç:fgb  kgb     pgbA {gb  Çgb     àgbç"Ægb  ùgb  £gb     ógbçE│gb  ╣gb     ┐gb          ╩gbç&█gb     ßgb  óµgb  ∞gb  ≥gb  ó≈gbBô gbA@    gb+      2gb      8gb     >gb          Ggb      Mgb      Sgb      Ygb  p^gb  pcgb      igb     ogb  ╛tgb  zgb  Çgb  ╛àgbABögb  Ügb     ágbA.¬gb     ░gbA1╗gb  ┴gb     ╟gb
  741. ë3╒gb  █gb      ßgb     τgb  V∞gb  ≥gb  °gb  V■gbç5
  742. gb  Bgbç8gb  !gb     'gb  -gb     3gb  49gb+      Çgb+      ┐gb      ┼gb+      πgb      Θgb  ∩gb     ⌡gb  
  743. √gb  
  744. gb  0gb  0
  745. gblÿgb      gb+      8gb      >gb     Dgb  Jgb      Pgb     Vgb  Ω\gb  Ωbgb  hgb     ngb     tgb
  746.        gbügbAGÄgb     ögbAIƒgb     Ñgb  d½gbçK┤gb+  ╢gb+  ╕gb  ╛gb  ─gb  ╩gb  ╨gb  ╓gb  ▄gb     ?Γgb  TΦgb  ¿εgb  ┌⌠gb          ∙gbçSgb   gb     gbçU gb          %gb          *gb     0gbAX?gb     EgbA[Ogb     UgbA^_gb  egb     kgb
  747. ë`ygb  gb      àgb     ïgb+      Ägb       ùgbÖgb          ₧gbçb¼gb          ▒gb          ╢gb     ╝gbAe╦gb     ╤gb  ┌╫gb  ╩▌gb
  748.        Ωgb       ±gb≤gbΩσ∙gb
  749.           gb
  750. ëh
  751. gb+  Égb+      gb  gb      !gb      'gb     -gb          2gbàm6gb+  8gb+      >gb  Dgb  Jgb     Pgb      Vgb  \gb  bgb     hgb  ngbAo}gb      âgb     ëgbçqÉgb  ûgb  £gb  ógb     ¿gb  «gb
  752.           │gb+      ⌡gb+      5    gb      ;    gbçtF    gb  L    gb  R    gb     X    gb  ^    gb
  753.           g    gb
  754. ëxs    gb      y    gb         gb  ,à    gb+      ë    gb  vÅ    gb+  æ    gb      ù    gb  ¥    gb  ú    gb
  755. ëy⌐    gb  ░»    gb+  ▒    gb+      ╝    gb  ┬    gb      ╚    gb     ╧    gb  ░╒    gb+      Σ    gb       Θ    gb
  756.        ε    gb≡    gb  6    ÷    gb+      ∙    gb  6         gbA|
  757. gb     
  758. gbA}
  759. gb+  
  760. gb  !
  761. gb     (
  762. gb  /
  763. gb  Ü
  764. 5
  765. gb+  7
  766. gb  b    =
  767. gb  Ç    C
  768. gb  Æ    I
  769. gb  ░    O
  770. gb+  Q
  771. gb  ┬    W
  772. gb  ÷    ]
  773. gb  Φ    c
  774. gb  Φ    i
  775. gb
  776. "r
  777. gb+  t
  778. gb  
  779. z
  780. gb  Ü
  781. Ç
  782. gb
  783.           è
  784. gb+      ╣
  785. gb          ╛
  786. gbçà╔
  787. gb  ╨
  788. gb     ╫
  789. gb  ^
  790. gb  ^
  791. π
  792. gb  Ü
  793. Θ
  794. gb  è
  795. gbÜ
  796. .∙
  797. gb     
  798. gb   gb  
  799. gb     gb
  800.            gb+      \ gb+      ù gb      ₧ gb+      ╡ gb      ╝ gb  ├ gb     ╩ gb╠ gb  h ╥ gb+  ╘ gb  h ┌ gbAëΘ gb     ≡ gb+  $≤ gb  · gbçî gb      gb        gb gb  # gb  ε) gb+  + gb  ┌ 1 gb  ° 7 gb
  801.           < gb+      F gb+  H gb  
  802. N gb  ( T gb+      j gb+  l gb  : r gb  X x gb+      Å gb+  æ gb  j ù gb  ê ¥ gb+      ╖ gb+  ╣ gb  Ü ┐ gb  ╕ ┼ gb+      ▀ gb+  ß gb  ╩ τ gb  Φ φ gb+      
  803. gb+  
  804.  
  805. gb  · 
  806. gb  
  807. 
  808. gb+      3
  809. gb+  5
  810. gb  *
  811. ;
  812. gb  H
  813. A
  814. gb+      M
  815. gb+  O
  816. gb  Z
  817. U
  818. gb  x
  819. [
  820. gb+      e
  821. gb+      g
  822. gb  è
  823. m
  824. gb  ¿
  825. s
  826. gb+      ë
  827. gb+  
  828. î
  829. gb  ║
  830. Æ
  831. gb  ╪
  832. ÿ
  833. gb+      ░
  834. gb+   │
  835. gb  Ω
  836. gb  ┐
  837. gb+      ╬
  838. gb+   ╤
  839. gb  ╫
  840. gb  8▌
  841. gb+      ∞
  842. gb+  
  843. ∩
  844. gb  J⌡
  845. gb  h√
  846. gb+       gb+  gb  zgb  ÿgb+      7gb+  :gb  ¬@gb  ╚Fgb+      bgb+  egb  ┌kgb  °qgb+      àgb+  êgb  
  847. Ägb  (ögb+      ⌐gb+  ¼gb  :▓gb  X╕gb+      ╚gb+  ╦gb  j╤gb  ê╫gb+      τgb+  Ωgb  Ü≡gb  ╕÷gb+      gb+  
  848. gb  ╩gb  Φgb+      &gb+  )gb  ·/gb  6gb+      Jgb+  Mgb  *Tgb  H[gb+      qgb+  tgb  Z{gb  xégb+      ÿgb+  ¢gb  èógb  ¿⌐gb+      ║gb+  ╜gb  ║─gb  ╪╦gb+      ▄gb+  ▀gb  Ωµgb  φgb+      gb+  gb  
  849. gb  8gb+      1gb+  4gb  J;gb  hBgb+      ^gb+  agb  zhgb  ÿogb+      ägb+  çgb  ¬Ägb  ╚ògb+      ▒gb+   ┤gb  ┌╗gb  °┬gb+      ┘gb+  !▄gb  
  850. πgb  (Ωgb+      ²gb+  "gb  :gb  Xgb+      )gb+  #,gb  j3gb  ê:gb+      Pgb+  $Sgb  ÜZgb  ╕agb+      tgb+  %wgb  ╩~gb  ▐àgb+      Ügb+      ¬gb  $▒gb  $╕gb          ╜gbçÄ╚gb  ╧gb     ╓gb╪gb????01CANCELERRORNUM[T1]
  851. TO_TEXT$"To:"SUBJ_TEXT$"Subject:"ATT_TEXT$"Attachments:"DELIMITER$";"IGNORE_CASE%DISPLAY_DIALOG%2MSGTITLE$"Mailcmc Macro"OK_CANCEL%YES_NO_CANCEL%3YES_NO%4RETRY_CANCEL%5STOP%16QUESTION%32EXCLAMATION%48INFORMATION%64OK%CANCEL%RETRY%YES%6NO%7TO$SUBJECT$NOTETEXT$ATTACHMENTS$FILETITLE$""FREEZE%NOTEPOS%ERROR_UI_ALLOWED%LOGON_UI_ALLOWED%SEND_UI_REQUESTED%SENDFLAGS%GETTEMPFILENAME"kernel"BDRIVELETTERLPSZPREFIXSTRINGUUNIQUELPSZTEMPFILENAMECMC_SEND_DOCUMENTS"cmc.dll"LPRECIPLPSUBJECTLPTEXTNOTEULFLAGSLPFILEPATHSLPFILENAMESLPDELIMULUIDGETKEYTEXT$LPKEYWORD$GETFURTHESTPOS%PREVPOS%DISPLAYDIALOG%ASK%ATT$MAKEATTACHMENT$LPFILETITLE$FLAGS%STATUSRET%ABORTMACROGETDOCNAME$[L1][T2][T3][L2]MSG$"Please create a new document or open an existing document first."MESSAGEBOX[T4][T5]VIEWEDITOR[T6][T7]VIEWEDITMODE[T8][T9][T10]VIEWFREEZESCREEN[T11][T12]FRAMETYPE%GETTEXTFRAMETYPE[T13][L3][T14][T15][L4]SENDATTSTATUSMSG"Checking document for email text . . ."[T16][T17]TMPFILE%[T18][T19][T20][L5][L6][T21][T22][L7][T23][T24][L8]EDITGOTOOFFSET[T25][T26]WORDRIGHT[T27]ENDOFSTORY[T28][T29]GETSELECTION$[T30][T31][T32][L9][T33][T34][L10]COUNTFRAMES[L11]COUNTPAGES[T35][T36][T37][T38][L12]"This document contains dependent frames, and only the current frame ""is being used for the email note. Do you wish to attach the "[T39]"document to the email note?"[T40][T41][T42][L13][L14][L15][L16]SENDDOC[T43]"Calling email system . . ."[T44][T45][T46][T47][T48][L17][L18][T49][T50][T51]LPKEYWORD$
  852. STARTOFSTORY[T52]ENDOFFRAME[T53][L19]EDITFIND10[T54][T55][T56][T57][T58][T59][T60][L20][L21][L22]RET%EDITFINDNEXT[T61][T62]GETTEXTOFFSETBEG%END%[T63]EDITGOTOOFFSET[T64]WORDRIGHT[T65]ENDOFPARA[T66][T67]GETSELECTION$[T68][T69][T70]""PREVPOS%
  853. RET%GETTEXTOFFSETBEG%END%[T71]EDITGOTOOFFSET[T72][L23][L24]LPFILETITLE$FLAGS%
  854. MKTMPLPFILENAME$STRING$144" "[T73][T74][T75][T76]RET%I2W0"WSW"[T77][T78][T79][T80][T81][T82][T83][T84]FILESAVEASCOPY[T85][T86]ACCESS[L25][T87][T88][T89][L26]MSG$"Could not create temporary file. You may be low on disk space. ""Delete some files and choose Retry, or choose Cancel to quit."[T90]MESSAGEBOX[L27][T91][T92][L28]DOCNAME$GETDOCNAME$[T93][T94][L29]"\"[L30]1[T95][T96][T97]LEFT$[L31]8"Untitled"[T98][T99][T100][L32]"Untitled.wsd"ASK%ATT$
  855. [L33]""[L34]EDITCOPY[T101]CHARLEFT1[T102][T103][T104][L35]0[L36][L37][L38][L39]3[L40][L41][L42][L43]ASK_DISP2[L44][L45]QUESTION$"Display email dialog before sending message?"RET%MESSAGEBOX[T105][T106][L46][L47][L48][L49]COPY_INFO[L50][T107][T108][L51]MSG$"The note text has been copied to the clipboard. If the note text ""does not appear, you can paste it into the message body "[T109]"from the email menu."[T110][T111][T112]
  856. [L52]0[L53]EDITGOTOOFFSET[T113]36[T114]VIEWFREEZESCREEN[T115]STATUS%
  857. [T116][L54]0[L55][L56]MSG$"Success"1[L57][L58]"Ambiguous recipient"2[L59][L60]"Attachment not found"3[L61][L62]"Attachment open failure"4[L63][L64]"Attachment read failure"5[L65][L66]"Attachment write failure"6[L67][L68]"Counted string unsupported"7[L69][L70]"Disk full"8[L71][L72]"Failure"9[L73][L74]"Insufficient memory"10[L75][L76]"Invalid configuration"11[L77][L78]"Invalid enum"12[L79][L80]"Invalid flag"13[L81][L82]"Invalid memory"14[L83][L84]"Invalid message parameter"15[L85][L86]"Invalid message reference"16[L87][L88]"Invalid parameter"17[L89][L90]"Invalid session ID"18[L91][L92]"Invalid UI ID"19[L93][L94]"Logon failure"20[L95][L96]"Message in use"21[L97][L98]"Not supported"22[L99][L100]"Password required"23[L101][L102]"Recipient not found"24[L103][L104]"Service unavailable"25[L105][L106]"Text too large"26[L107][L108]"Too many files"27[L109][L110]"Too many recipients"28[L111][L112]"Unable to not mark as read"29[L113][L114]"Unrecognized message type"30[L115][L116]"Unsupported action"31[L117][L118]"Unsupported character set"32[L119][L120]"Unsupported data ext"33[L121][L122]"Unsupported flag"34[L123][L124]"Unsupported function ext"35[L125][L126]"Unsupported version"36[L127][L128]"Message canceled"37[L129][L130]"User not logged on""Unknown error"[L131][L132]RET%MESSAGEBOX[T117][T118]
  858.