home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR8 / READMCV.ZIP / README.MCV
Text File  |  1993-09-13  |  34KB  |  627 lines

  1.  
  2. =================================================================
  3. README.MCV                                               09/13/93
  4. =================================================================
  5.  
  6. The following information is included:
  7.  
  8. *Introduction
  9.  
  10. *Error Messages
  11.  
  12. *Conversion Warnings
  13.  
  14.  
  15.  
  16. INTRODUCTION
  17. =================================================================
  18. This README file contains information about MCV.EXE, the Macro  Conversion
  19. Program that converts macros from WordPerfect 5.1 for DOS to WordPerfect 6.0
  20. for DOS.  The Macro Conversion Program can convert one or more macros.  Once
  21. converted, the macro(s) can be retrieved (Shift+F10) into WordPerfect 6.0 as
  22. a normal document.  Since WordPerfect 6.0 macros are essentially normal
  23. documents, commands are simply words typed in the document.  This allows the
  24. user to use all of the powerful WordPerfect editing tools when writing
  25. macros.  When the macro is saved or played, WordPerfect automatically
  26. "compiles" the macro into a language WordPerfect can understand.  This
  27. compilation process causes no visual changes to the macro or macro commands. 
  28.  
  29. The Macro Conversion Program will mark problems and warnings in the resulting
  30. macro as comments, so you'll know exactly where there was a problem or
  31. concern.  If debugging help is needed, WordPerfect has an improved debugger
  32. to help you step through macro execution watching for problems.
  33.  
  34. When conversion problems or warnings occur, it is recommended that modifying
  35. the original WordPerfect 5.1 macro and reconverting it may be the easiest way
  36. to get the converted macro up and running. 
  37.  
  38. If you are familiar with the WordPerfect 5.1 macro language, adjusting to the
  39. WordPerfect 6.0 macro language may be made easier by writing a new macro
  40. first in WordPerfect 5.1, converting it, and noticing how the Macro
  41. Conversion Program converted the macro.
  42.  
  43.  
  44. =================================================================
  45. ERROR MESSAGES
  46. =================================================================
  47. This section of this file documents some error messages that may be placed in
  48. the converted WordPerfect 6.0 macro document.  
  49.  
  50.  
  51. Label already referenced with different keystrokes
  52. =================================================================
  53. This error occurs when a label that was initially referenced while
  54. WordPerfect was in one state (for example, while Block is turned on) is
  55. subsequently referenced while WordPerfect is in another state.  The Macro
  56. Conversion program flags this as a problem because the tokens that the Macro
  57. Conversion Program creates are sometimes dependant on what state or mode
  58. WordPerfect is in at the time.  Below is an example of a converted macro with
  59. this problem. (The numbers at the beginning of each line are for reference
  60. purposes only.)
  61.  
  62. Example 1: 
  63.  
  64.  Original WordPerfect 5.1 macro  Converted WordPerfect 6.0 macro
  65.  ==============================  ===============================
  66.  
  67.  {CALL}move~                      1  CALL(move) 
  68.  
  69.  {Word Left}                      2  PosWordPrevious 
  70.  {Block}{End}                     3  BlockOn(CharMode!) PosLineEnd 
  71.  {CALL}move~                      4  CALL(move
  72.  {Page Down}                      5  //*** Conversion problem ***
  73.  {CALL}move~                      6  //*** Label already referenced with
  74.  {GO}format~                      7  //different keystrokes
  75.  {LABEL}move~                     8  //{Block}{End}
  76.  {Move}12                         9  ) 
  77.  {Switch}                        10  PosPageNext 
  78.  {Home}{Home}{Down}              11  CALL(move
  79.  {Enter}                         12  //*** Conversion problem ***
  80.  {Home}{Home}{Down}              13  //*** Label already referenced with
  81.  {Enter}                         14  different keystrokes
  82.  {Switch}                        15  //{Block}{End}{Page Down}
  83.  {RETURN}                        16  )
  84.  {LABEL}format~                  17  GO(format) 
  85.                                  18  LABEL(move
  86.                                  19  //*** Conversion problem ***
  87.                                  20  //*** Ambiguous keystrokes leading
  88.                                  21  to label
  89.                                  22  ) 
  90.                                  23  BlockOn(SentenceMode!) CopyAndPaste 
  91.                                  24  Switch 
  92.                                  25  PosDocBottom 
  93.                                  26  MoveModeEnd 
  94.                                  27  PosDocBottom 
  95.                                  28  EnterKey 
  96.                                  29  Switch 
  97.                                  30  RETURN 
  98.                                  31  LABEL(format) 
  99.  
  100. In the example above, the MOVE label is first referenced on line one.  Notice
  101. that on line three the Block feature is turned on, and then on line four, the
  102. MOVE label is again referenced.  The Macro Conversion Program remembers what
  103. state WordPerfect was in when the MOVE label was first referenced on line
  104. one.  Since WordPerfect will be in a different state (BlockOn) when the MOVE
  105. label is referenced on line four, the Macro Conversion Program generates the
  106. error  "Label already referenced with different keystrokes."  On line eight
  107. the Macro Conversion Program displays the WordPerfect 5.1 commands (i.e.,
  108. {Block}{End}) that triggered the error.  Once this error has occurred, any
  109. subsequent references to that label (including references made in the same
  110. state as the first reference) will generate the error as can be seen by
  111. referring to line 11 where LABEL(move) has been referenced a third time.  To
  112. see why there is a problem, refer to line 23 and notice that the Macro
  113. Conversion Program has converted "{Move}12" to "BlockOn(SentenceMode!)
  114. CopyAndPaste" which are the proper tokens when this label was first
  115. referenced in line one.   However, when LABEL(move) is referenced the second
  116. time with block on, the BlockOn(SentenceMode!) would be an unnecessary token
  117. and would generate an error if the macro were played.  Consequently, the
  118. Macro Conversion Program has generated an additional error on line 20,
  119. "Ambiguous keystrokes leading to label," because LABEL(move) has been
  120. referenced while WordPerfect was in different states; and although the tokens
  121. created are correct for the first reference, they are likely to be incorrect
  122. for the reference made when WordPerfect was in a different state. 
  123.  
  124. There are also instances where the Macro Conversion Program will generate
  125. this error, yet the macro will execute properly. Below is an example of such
  126. a case.
  127.  
  128. Example 2:
  129.  
  130.  Original WordPerfect 5.1 Macro   Macro converted to WordPerfect 6.0
  131.  ==============================   ==================================
  132.  
  133.  {CALL}search~                     1   CALL(search) 
  134.  WordPerfect                       2   Type("WordPerfect") 
  135.  
  136.  {Page Down}                       3   PosPageNext 
  137.  {Block}                           4   BlockOn(CharMode!) 
  138.  {CALL}search~                     5   CALL(search
  139.  {Word Left}                       6   //*** Conversion problem ***
  140.  {Macro Commands}                  7   //*** Label already referenced with
  141.  3client{Enter}                    8   different keystrokes
  142.  {GO}add~                          9   //{Block}
  143.  {LABEL}search~                   10   ) 
  144.  {Search}Company:·                11   PosWordPrevious 
  145.  {Search}                         12   ASSIGN(client; ?BlockedText) 
  146.  {RETURN}                         13   GO(add) 
  147.  {LABEL}add~                      14   LABEL(search
  148.                                   15   //*** Conversion problem ***
  149.                                   16   //*** Ambiguous keystrokes leading
  150.                                   17   to label
  151.                                   18   ) 
  152.                                   19   SearchString("Company:  ") 
  153.                                   20   SearchNext(Regular!) 
  154.                                   21   RETURN 
  155.                                   22   LABEL(add) 
  156.  
  157. In this particular case, the tokens SearchString("Company:  ")
  158. SearchNext(Regular!) on lines 19 and 20 are correct whether Block is turned
  159. on or off.  Consequently, this macro will execute properly and the conversion
  160. problems can be ignored.  Why does the Macro Conversion Program still
  161. generate an error if the macro will run properly?  The Macro Conversion
  162. Program converts macros from top to bottom in a single pass.  Consequently,
  163. the keystrokes in the referenced label are not encountered until it has
  164. already passed and converted the references to it.  The Macro Conversion
  165. Program only knows that the state or mode of WordPerfect for the second
  166. reference to the label is different from the state when the label was first
  167. referenced, and that there may be a problem. 
  168.  
  169. If there are no other problems that would keep the macro from compiling or
  170. executing properly, first try ignoring the errors and play the macro to see
  171. if it will run correctly.  If that fails, edit the WordPerfect 5.1 macro and
  172. insert the actual keystrokes of the label referenced.  If that label is
  173. referenced often in different states, it may be easier to create a duplicate
  174. label, give it a different name, and reference it when in a different state. 
  175. For example, the WordPerfect 5.1 macro in Example 1 could be changed as
  176. follows: 
  177.  
  178.  Original WordPerfect   Approach A:             Approach B:
  179.  5.1 macro
  180.  =====================  ===========             ===========
  181.                         
  182.  {CALL}move~            {CALL}move~             {CALL}move~
  183.  {Word Left}            {Word Left}             {Word Left}
  184.  {Block}{End}           {Block}{End}            {Block}{End}
  185.  {CALL}move~            {Move}12                {CALL}moveblock~
  186.  {Page Down}            {Switch}                {Page Down}
  187.  {CALL}move~            {Home}{Home}{Down}      {CALL}move~
  188.  {GO}format~            {Enter}                 {GO}format~
  189.  {LABEL}move~           {Home}{Home}{Down}      {LABEL}move~
  190.  {Move}12               {Enter}                 {Move}12
  191.  {Switch}               {Switch}                {Switch}
  192.  {Home}{Home}{Down}     {Page Down}             {Home}{Home}{Down}
  193.  {Enter}                {CALL}move~             {Enter}
  194.  {Home}{Home}{Down}     {GO}format~             {Home}{Home}{Down}
  195.  {Enter}                {LABEL}move~            {Enter}
  196.  {Switch}               {Move}12                {Switch}
  197.  {RETURN}               {Switch}                {RETURN}
  198.  {LABEL}format~         {Home}{Home}{Down}      {LABEL}moveblock~
  199.                         {Enter}                 {Move}12
  200.                         {Home}{Home}{Down}      {Switch}
  201.                         {Enter}                 {Home}{Home}{Down}
  202.  
  203.                         {Switch}                {Enter}
  204.                         {RETURN}                {Home}{Home}{Down}
  205.                         {LABEL}format~          {Enter}
  206.                                                 {Switch}
  207.                                                 {RETURN}
  208.                                                 {LABEL}format~
  209.  
  210. If LABEL move is referenced only once with Block turned on, then approach A
  211. or B could be used to solve the problem.  If LABEL move is referenced often
  212. with Block on, then approach B would be the most efficient way to solve the
  213. problem.
  214.  
  215.  
  216. Ambiguous keystrokes leading to label
  217. ==================================================================
  218. This error is related to the "Label already referenced with different
  219. keystrokes" error message and occurs in the actual label that is being
  220. referenced by routines in different states or modes.  Making the changes to
  221. solve the "Label already referenced with different keystrokes" error message
  222. will also solve this problem.
  223.  
  224.  
  225. Control transfer with pending token
  226. ==================================================================
  227. The Macro Conversion Program makes one pass from top to bottom when
  228. converting macros.  Consequently, when converting a series of keystrokes to
  229. the proper token, the Macro Conversion Program cannot "jump" to another
  230. routine to convert the rest of the keystrokes needed to complete that token. 
  231. For example, if a {GO} or {CALL} is encountered while a token is yet to be
  232. completed, that token cannot be completed and this error will be generated.
  233.  
  234. Example 3:
  235.  
  236.  Original WordPerfect 5.1 Macro            Macro converted to WordPerfect 6.0
  237.  ================================          ==================================
  238.  
  239.  {Retrieve}                                 1   
  240.  {CALL}filename~{Enter}                     2   CALL(filename) Paste 
  241.  {GO}address~                               3   GO(address) 
  242.  {LABEL}filename~                           4   LABEL(filename) 
  243.  letter.doc                                 5   RETURN 
  244.  {RETURN}                                   6   //*** Conversion problem***
  245.  {LABEL}address~                            7   //*** Control transfer with
  246.                                             8   pending token
  247.                                             9   //{Retrieve}letter.doc
  248.                                            10   LABEL(address) 
  249.  
  250.  
  251. This error will also occur if a WHILE, FOR, or IF statement occurs in the
  252. middle of creating a token.  In the example below, an IF statement occurs in
  253. the middle of creating a line spacing token.
  254.  
  255. Example 4:
  256.  
  257.  Original WordPerfect 5.1 Macro            Macro converted to WordPerfect 6.0
  258.  ==============================            ==================================
  259.  
  260.  {TEXT}1~                                   1   GETSTRING(VAR1;
  261.  Please·enter·your·name:··~                 2   "Please enter your name:  ") 
  262.  {Format}16                                 3   IF(VAR1="") DISCARD(VAR1) 
  263.  {IF}"{VAR 1}"="John"~                      4   ENDIF 
  264.       2                                     5   IF(""+VAR1+""="John") 
  265.  {ELSE}                                     6   ELSE 
  266.       1.5                                   7   //*** Conversion problem ***
  267.  {END IF}                                   8   //*** Control transfer with 
  268.  {Enter}                                    9   // pending token
  269.  
  270.  {Exit}                                    10   //{Format}162
  271.                                            11   ENDIF 
  272.                                            12   LineSpacing(1.5)
  273.  
  274. In the WordPerfect 5.1 macro, replace the {GO} or {CALL} with the keystrokes
  275. of the label that is referenced.  If the problem is caused by a WHILE, FOR,
  276. or IF statement, restructure the routine so the statement is not within the
  277. series of keystrokes that would need to be converted to a token. For example,
  278. the WordPerfect 5.1 version of the macro above (Example 4) could be changed
  279. as follows:
  280.  
  281.  Original WordPerfect 5.1 macro            WordPerfect 5.1 macro after change
  282.  ==============================            ==================================
  283.  
  284.  {Format}16                                {IF}"{VAR 1}"="John"~
  285.  {IF}"{VAR 1}"="John"~                          {ASSIGN}line~2~
  286.     2                                      {ELSE}
  287.  {ELSE}                                         {ASSIGN}line~1.5~
  288.     1.5                                    {END IF}
  289.  {END IF}                                  {Format}16
  290.  {Enter}                                   {VARIABLE}line~
  291.  {Exit}                                    {Enter}
  292.                                            {Exit}
  293.  
  294. After making the changes to the WordPerfect 5.1 macro, reconvert it using the
  295. Macro Conversion Program.
  296.  
  297.  
  298. Pending tokens leading to label
  299. ==================================================================
  300. This error is related to "Control transfer with pending token" errors
  301. generated by {GO} or {CALL} commands.  This error occurs when part of the
  302. arguments (for the token being created) are found in another label being
  303. referenced by the {GO} or {CALL}.  The error will appear in the label being
  304. referenced by that {GO} or {CALL}.
  305.  
  306. Example 5:
  307.  
  308.  Original WordPerfect 5.1 Macro            Macro converted to WordPerfect 6.0
  309.  ==============================            ==================================
  310.  
  311.  {Columns/Tables}21                         1    
  312.  5{Enter}                                   2
  313.  {CALL}rows~{Enter}                         3   CALL(rows
  314.  {Exit}                                     4   //*** Conversion problem***
  315.  {QUIT}                                     5   //*** Control transfer with
  316.  {LABEL}rows~                               6   //pending token
  317.  5                                          7   //{Columns/Tables}2
  318.  {RETURN}                                   8   15{Enter}
  319.                                             9   ) TableCreate(5; 
  320.                                            10   //*** Conversion warning***
  321.                                            11   0) 
  322.                                            12   QUIT 
  323.                                            13   LABEL(rows
  324.                                            14   //***Conversion problem***
  325.                                            15   //*** Pending tokens
  326.                                            16   //leading to label
  327.                                            17   ) 
  328.                                            18   RETURN
  329.  
  330. Notice that in line three in the WordPerfect 5.1 macro, the number of rows
  331. for the table being created (which would be one of the arguments that the
  332. Macro Conversion Program would need to create the proper token) is located
  333. after {LABEL}rows~ on line 13.  This situation will cause a "Control transfer
  334. with pending token" error and the Macro Conversion Program will then generate
  335. a corresponding error "Pending tokens leading to label" at {LABEL}rows~,
  336.  
  337. showing that this LABEL was referenced when arguments for a token were not
  338. complete.  
  339.  
  340. Making the changes to solve the "Control transfer with pending token" error
  341. message will also fix this problem.
  342.  
  343.  
  344. Cannot generate matching 6.0 Search text
  345. ==================================================================
  346. This error occurs when the Macro Conversion Program is unable to create the
  347. equivalent search text or code for WordPerfect 6.0.  The reasons for this can
  348. vary from the character not existing in WordPerfect 6.0 (see line five in
  349. Example 6 below) to having a conditional statement such as an IF within the
  350. beginning and ending search commands (see line 16 in Example 6 below).
  351.  
  352. Example 6:
  353.  
  354.  Original WordPerfect 5.1 Macro          Macro converted to WordPerfect 6.0
  355.  ==============================          ===================================
  356.  
  357.  {Search}                                 1   //*** Conversion problem ***
  358.  {^A}                                     2   //*** Cannot generate matching 6.0
  359.  {Search}                                 3   //Search text
  360.  {Block}{Word Right}                      4   //{Search}
  361.  {Macro Commands}                         5   //{^A}
  362.  31{Enter}                                6   SearchString("") SearchNext(Regular!) 
  363.  {TEXT}3~Please·enter·your·last·          7   BlockOn(CharMode!) PosWordNext 
  364.  name:··~
  365.  {Search}                                 8   ASSIGN(VAR1; ?BlockedText) 
  366.  {IF}"{VAR3}"                             9   GETSTRING(VAR3; "Please enter your
  367.  ="Smith"~Smith                          10   last name: ") 
  368.  {ELSE}Contractor                        11   IF(VAR3="") DISCARD(VAR3) ENDIF 
  369.  {END IF}                                12   //*** Conversion problem ***
  370.  {Search}                                13   //*** Cannot generate matching
  371.  {Enter}{VAR 1}                          14   //6.0 Search text
  372.                                          15   //{Search}
  373.                                          16   //{IF}"{VAR 3}"
  374.                                          17   //="Smith"~Smith
  375.                                          18   //{ELSE}C
  376.                                          19   //*** Limit exceeded for commands 
  377.                                          20   //skipped
  378.                                          21   Type("ntractor") ENDIF 
  379.                                          22   //*** Conversion problem ***
  380.                                          23   //*** Not at main document at end
  381.                                          24   //of macro
  382.                                          25   //*** Cannot convert to matching
  383.                                          26   //dialog
  384.                                          27   //{Search}{Enter}{VAR 1}
  385.  
  386. When the Macro Conversion Program generates this error, it will not convert
  387. any commands until it encounters the ending {Search} code.  The commands not
  388. converted or "skipped" will be commented out (using the "//" characters) as
  389. can be seen by referring to lines 15-18.  However, there is a limit to the
  390. number of commands that will be skipped.  When this limit is reached, the
  391. Macro Conversion Program will generate a second message "Limit exceeded for
  392. commands skipped" (See line 19) and will begin converting again (See line
  393. 21).  Usually this will cause other errors to follow. 
  394.  
  395. Frequently, this error is caused when previous errors cause the Macro
  396. Conversion Program to get out of "sync."  It may be best to fix other
  397. problems first, reconvert and see if this error is also eliminated.  If not,
  398. check to see if the problem is caused by an IF or a similar statement between
  399. the beginning and ending {Search} commands.  If this is the case, then edit
  400. the WordPerfect 5.1 macro and restructure the statement so it does not occur
  401. within the {Search} commands, then reconvert the file.  For example, the
  402. search statement in Example 6 above could be changed as follows:
  403.  
  404.  Original                                  After changes
  405.  ========                                  =============
  406.  
  407.   {Search}                                 {IF}"{VAR 3}" ="Smith"~
  408.   {IF}"{VAR 3}" ="Smith"~                  {ASSIGN}4~Smith~
  409.   Smith                                    {ELSE}
  410.   {ELSE}                                   {ASSIGN}4~Contractor~
  411.   Contractor                               {END IF}
  412.   {END IF}                                 {Search}{VAR 4}{Search}
  413.   {Search}
  414.  
  415.  
  416. Limit exceeded for commands skipped
  417. ==================================================================
  418. See explanation for "Cannot generate matching 6.0 Search text" above.
  419.  
  420.  
  421. Fragmented text input
  422. ==================================================================
  423. This error will occur when conditional statements such as an {IF} or control
  424. flow statements using {CALL} or {GO} commands occur within a save routine.
  425.  
  426. Example 7:
  427.  
  428.  Original WordPerfect 5.1 Macro            Macro converted to WordPerfect 6.0
  429.  ==============================            ==================================
  430.  
  431.  {Save}test                                 1
  432.  {IF}{VAR 1}=1~                             2   IF(VAR1=1) 
  433.         .doc{Enter}                         3   //*** Conversion problem ***
  434.  {ELSE}                                     5   //*** Control transfer with 
  435.  .txt{Enter}                                6   //pending token
  436.  {END IF}                                   7   //{Save}test
  437.                                             8   //*** Conversion problem ***
  438.                                             9   //*** Fragmented text input
  439.                                            10   FileSave(".doc") 
  440.                                            11   ELSE 
  441.                                            12   //*** Conversion problem ***
  442.                                            13   //*** Fragmented text input
  443.                                            14   FileSave(".txt") 
  444.                                            15   ENDIF
  445.  
  446. To resolve this error message, edit the WordPerfect 5.1 macro and restructure
  447. the routine so the input for the save is not fragmented.  For example, the
  448. problem in Example 7 above could be eliminated by editing the WordPerfect 5.1
  449. macro, deleting the word test after {Save} on line one and then typing "test"
  450. in front of ".doc" on line 10 and again on line 14 before ".txt".  Although
  451. in most cases it will be easier for you to make the necessary changes to the
  452. WordPerfect 5.1 macro and then reconvert, the macro above illustrates a
  453. situation where editing the converted macro would be quicker and easier. 
  454. Note that by typing the word test before .doc on line 10 and before .txt on
  455. line 14 of the converted macro will also solve the problem.
  456.  
  457. Not at main document at end of macro
  458. =================================================================
  459. Cannot convert to matching dialog
  460. =================================================================
  461.  
  462. If a macro ends and leaves the user in another location other than the main
  463. document screen, the Macro Conversion Program will attempt to convert the
  464. keystrokes to the corresponding WordPerfect 6.0 dialog command.  If there is
  465. no matching WordPerfect 6.0 dialog command for the keystrokes that are
  466. encountered at the end of the macro, these error messages will be generated. 
  467.  
  468. Example 8:
  469.  
  470.  Original WordPerfect 5.1 Macro    Macro converted to WordPerfect 6.0
  471.  ==============================    ==================================
  472.  
  473.  {List}c:\wp60{Enter}              1   //*** Conversion problem ***
  474.                                    2   //*** Not at main document at end of 
  475.                                    3   //macro
  476.                                    4   //*** Cannot convert to matching
  477.                                    5   //dialog
  478.                                    6   //{List}c:\wp60{Enter}
  479.  
  480. In Example 8 above, the WordPerfect 5.1 macro leaves the user in the List
  481. Files screen.  A FileManagerDlg dialog command does exist in WordPerfect 6.0,
  482. but this would not leave the user in the List Files screen; consequently, the
  483. Macro Conversion Program has flagged this as a problem.
  484.  
  485. To resolve this error message, first verify that the WordPerfect 5.1 macro
  486. does indeed end in a screen other than the main editing screen.  Sometimes
  487. previous conversion problems can cause this error to occur.  Since there is
  488. no matching dialog in WordPerfect 6.0, there is little the user can do
  489. without some knowledge of the WordPerfect 6.0 macro language.  In the example
  490. above, the user could edit the WordPerfect 5.1 macro so it ended with only
  491. the command {List}, which the Macro Conversion Program could convert to the
  492. FileManagerDlg command.  But as was mentioned before, this would not leave
  493. the user in the List Files screen.  To get a converted macro with this
  494. problem to end exactly as it did in WordPerfect 5.1, the user would need to
  495. become familiar with the DLGINPUT command and the appropriate dialog command
  496. in 6.0.  For example, to get the converted macro above to end in the List
  497. Files screen as it did in 5.1, the following tokens would need to be inserted
  498. at the end of the converted macro:
  499.  
  500. DLGINPUT(On!)
  501. FileManagerDlg
  502. TYPE("c:\wp60")
  503. Enterkey
  504. DLGINPUT(Off!)
  505.  
  506.  
  507. Name Missing
  508. ==================================================================
  509. This error message is generated when a macro selects an item from a list, but
  510. does not do a name search.  The Macro Conversion Program is unable to
  511. generate a token, since it does not know what item the cursor was
  512. highlighting.
  513.  
  514. Example 9:
  515.  
  516.  Original WordPerfect 5.1 macro            Macro converted to WordPerfect 6.0
  517.  ==============================            ==================================
  518.  
  519.    {Font}4{Enter}12{Enter}                 SAVESTATE PERSISTALL 
  520.                                            AutoCodePlacement(OFF!) 
  521.                                            WP51CursorMovement(ON!)
  522.                                            VARERRCHK(OFF!) 
  523.                                            //*** Conversion problem ***
  524.                                            //*** Name missing
  525.                                            //{Font}4{Enter}
  526.                                            FontSize(12) 
  527.  
  528. Notice the macro presses the font key (Ctrl-F8), 4, then presses ENTER to
  529. select the currently highlighted font.
  530.  
  531. The Macro Conversion Program did not have enough information to generate a
  532. FONT("font name") token. The WordPerfect 5.1 macro just selected the default
  533. font.  In WordPerfect 6.0 it is impossible to have a token of FONT(default). 
  534. A specific value needs to be specified, for example, FONT("Times Roman").
  535.  
  536. Following is an example WordPerfect 5.1 macro that does not cause the error:
  537.  
  538.  Original WordPerfect 5.1 macro            Macro converted to WordPerfect 6.0
  539.  
  540.  ==============================            ==================================
  541.  
  542.  
  543.  {Font}4nTimes Roman                       SAVESTATE PERSISTALL 
  544.  {Enter}{Enter}12{Enter}                   AutoCodePlacement(OFF!) 
  545.                                            WP51CursorMovement(ON!)
  546.                                            VARERRCHK(OFF!) 
  547.                                            Font("Times Roman") 
  548.                                            FontSize(12) 
  549.  
  550. The Macro Conversion Program read the keystrokes during the name search to
  551. know what font to be included in generating the FONT("Times Roman") token.
  552.  
  553.  
  554. ==================================================================
  555. Conversion Warnings
  556. ==================================================================
  557.  
  558.  
  559. Warning: Some characters skipped
  560. ==================================================================
  561. This warning occurs when a label or variable name contains characters that
  562. are invalid in the WordPerfect 6.0 macro language.  The exception to this is
  563. a space that is converted to an underscore character.  When the Macro
  564. Conversion Program encounters invalid characters, they are skipped or
  565. omitted.  For example, if there was a {LABEL}file+name~ statement in the
  566. WordPerfect 5.1 macro, it would be converted to LABEL(filename) and then
  567. generate this warning.
  568.  
  569. The macro will need editing if there are label or variable names whose
  570. uniqueness is determined by invalid characters.  For example, if there were
  571. two labels in the WordPerfect 5.1 macro called file+name and file-name, both
  572. would be converted to filename and a compilation error would occur if the
  573. macro were played.  Instances where variable names are converted to the same
  574. name would usually not generate a compilation error, so it would be important
  575. to check for duplicate variable names where this error has occurred.  If
  576. there are no problems with duplicate label or variable names, then the
  577. warning can be ignored.
  578.  
  579.  
  580. May edit incorrect line
  581. ==================================================================
  582. The Macro Conversion Program generates this warning due to graphic line
  583. editing differences between WordPerfect 5.1 and WordPerfect 6.0.  When
  584. editing a graphic line in WordPerfect 5.1, the type of line, vertical or
  585. horizontal would be indicated after positioning the cursor in the correct
  586. location.  In WordPerfect 6.0, no distinction is made between vertical and
  587. horizontal as far as indicating the line to be edited.  Instead, the line
  588. number, the next line, or the previous line is indicated.  Since the Macro
  589. Conversion Program cannot indicate a line number, a GraphicsLineEditNext
  590. token will be created to indicate the line to be edited.  This may be a
  591. problem depending on cursor position and if there are both vertical lines and
  592. horizontal lines in the document. 
  593.  
  594. Example 10:
  595.  
  596.  Original WordPerfect 5.1 Macro     Macro converted to WordPerfect 6.0
  597.  ==============================     ==================================
  598.  
  599.  {Graphics}53                        1   //*** Conversion warning ***
  600.  154{Enter}                          2   //*** May edit incorrect line
  601.  {Enter}                             3   GraphicsLineEditNext
  602.  {Down}{Down}                        4   GraphicsLineType(Horizontal!)
  603.  {Down}{Down}                        5   GraphicsLineHorizontalPosition(Set!;4) 
  604.  {Graphics}53                        6   GraphicsLineEnd(Save!) 
  605.  12                                  7   PosLineDown PosLineDown 
  606.  {Enter}                             8   PosLineDown PosLineDown 
  607.                                      9   //*** Conversion warning ***
  608.                                     10   //*** May edit incorrect line
  609.                                     11   GraphicsLineEditNext
  610.                                     12   GraphicsLineType(Horizontal!)
  611.                                     13   GraphicsLineHorizontalPosition(Right!)
  612.                                     14   GraphicsLineEnd(Save!) 
  613.  
  614. The macro above edits two horizontal graphic lines.  If the cursor was
  615. initially positioned in front of the first horizontal line code, then the
  616. macro would edit the correct lines.  However, if the cursor was positioned
  617. after the first horizontal line code or if there was a vertical line code
  618. preceding the first horizontal line code, then the macro would edit the wrong
  619. lines.  To resolve the error message, play the macro and see if the correct
  620. lines are edited.  If not, turn on Reveal Codes in the document that the
  621. macro will be editing, note the line numbers of the lines to be edited, and
  622. replace the GraphicsLineEditNext token in the WordPerfect 6.0 macro with a
  623. GraphicsLineEdit token and indicate the appropriate line number as the
  624. argument for that token.  For example, suppose in example 9 above that the
  625. line numbers of the horizontal lines that the macro should edit are 2 and 5. 
  626. The GraphicsLineEditNext tokens on lines 3 and 11 would need to be changed to
  627. GraphicsLineEdit(2) and GraphicsLineEdit(5) respectively.