home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / vrac / ensmgr14.zip / ENS_MGRZ.SCR < prev    next >
Text File  |  1994-07-24  |  28KB  |  1,027 lines

  1. ;  Terry Gildea     [70511,2530]                    FILE: ENS_MGRZ.SCR
  2. ;
  3. ;  ONLINE Portion of ENS management scripts; requires ens_mgra.scr
  4. ;  Copyright (c) 1994 Terry L Gildea   Free redistribution authorized
  5. ;
  6. ;
  7. ; +++keyword-flag+++  " %v   %d"     Requires OzCIS ver 2.0c(1)
  8. ;  Version " 1:4   24-Jul-94"
  9. ;
  10.  
  11. ;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  12.    ;  CONFIGURATION OPTIONS; SEE DOCUMENTATION FOR DETAILS
  13.  
  14. define #speedlimit %true
  15. ;define #speedlimit %false
  16.  
  17. define #shortcut %true
  18. ;define #shortcut %false
  19.  
  20.    ; The variable $path MUST be the same in BOTH scripts!
  21. define $path       ""
  22. define $logfile    "ens_mgrz.log"
  23.  
  24. ;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  25.    ;  THESE CONSTANTS MAY BE CHANGED BY COMPUSERVE IN THE FUTURE
  26.  
  27. define #BrkWire   18
  28. define #MaxKey     7
  29. define #MaxFldrs   3
  30. ;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  31.  
  32. define #debug %false
  33. ;define #debug %true
  34.  
  35. define $DelName ""
  36. define $NewName ""
  37. define $ChgName ""
  38. define $expire  ""
  39. define $retain  ""
  40. define $AddWire ""
  41. define $DelWire ""
  42. define $DelKey  ""
  43. define $key1    ""
  44. define $key2    ""
  45. define $key3    ""
  46. define $key4    ""
  47. define $key5    ""
  48. define $key6    ""
  49. define $key7    ""
  50. define #phrase
  51. define #folder
  52. define #menu
  53. define #submenu
  54. define #wireMode
  55. define #NbrFolders
  56. define #NbrPhrases
  57. define #ThisFolder
  58. define #LoChgdKey
  59.  
  60. ;                            ENS_MGRZ.SCR                 Page 1 of 17
  61.  
  62. define #HiChgdKey
  63. define #lofldr
  64. define #hifldr
  65. define $filename
  66. define $folder
  67. define $name
  68. define $key
  69. define $error
  70. define $select
  71. define #parseMore
  72. define #parseAgain
  73. define $next
  74. define $this
  75. define $xmit
  76. define #overtime
  77. define $timelog "ens_scpt.log"
  78. define $result  "Normal script termination.  "
  79.  
  80. timeout 60
  81. onerror  fatal_error
  82. statline "Executing script ENS_MGRZ.SCR  (c) 1994"
  83.  
  84. capture ON $logfile /o
  85. cwrite   "ens_mgrz.scr  ON  " %date " at " %time "  " %hostbaud %cr
  86.  
  87. if #speedlimit = %false goto rateOK
  88. if %hostbaud <= 2400    goto rateOK
  89.     set $result  "Baud rate set above 2400.  "
  90.     goto alldone
  91. rateOK:
  92.  
  93.  
  94.   ; check that there is some online work to do.
  95. set       $filename $path
  96. concat    $filename "newdata1.fix"
  97. if fexist $filename  goto logon
  98. set $result "No data left by script ENS_MGRA.SCR  "
  99. goto alldone
  100.  
  101.  
  102. logon:
  103.     set #NbrFolders 0
  104.     set #ThisFolder 0
  105.     set #lofldr 5
  106.     set #hifldr 7
  107.     set #submenu %false
  108.     set #folder #lofldr
  109.  
  110.       ; create a timelog for this script
  111.     set $error  "File open"
  112.     set $filename $timelog
  113.     fappend &3    $filename
  114.     if ferror &3  goto file_error
  115.     fwrite  &3 "ens_mgrz.scr ON  " %date " at " %time "  " %hostbaud %cr
  116.     fclose  &3
  117.     set $error "File write/close"
  118.     if ferror &3  goto file_error
  119.  
  120. ; Page 2 of 17               ENS_MGRZ.SCR 
  121.  
  122. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  123. ;           BEGIN SURCHARGED ACTIVITY
  124.  
  125.   ; now we're ready to start spending $
  126. LSEND %slash "GO CIS:ENS"
  127.  
  128.   ; count number of personal folders
  129. menu_loop:
  130.     add   1 "5 Review Folders"
  131.     add   3 "Review folder"
  132.     add   9 ^J "!"
  133.     MWAIT #2
  134.     if #2 = 1   gosub submenu
  135.     inc  #folder
  136. if #2 = 3  goto menu_loop
  137. dec #folder 2
  138.  
  139.   ; now we're at main menu ! prompt; check at least one folder exists
  140. main_menu:
  141.     set #hifldr #folder
  142.     if #hifldr < #lofldr        goto finish
  143.     set #NbrFolders #hifldr
  144.     dec #NbrFolders #lofldr
  145.     inc #NbrFolders 1
  146.     cwrite %cr "Personal folders are menu items: " #lofldr "-" #hifldr
  147.     cwrite "Total number of Personal Folders is: " #NbrFolders  %cr
  148. end_main:
  149.  
  150.  
  151.  
  152.   ; Select menu item 4:  Create/Change/Delete/List a Personal Folder (E)
  153. if #debug = %true cwrite "Select menu item: 4 CREATE/CHANGE/DELETE/LIST"
  154. LSEND 4
  155. WAIT  ^J "!"
  156.  
  157.  
  158.  
  159.   ; get new folder data from files left by ENS_MGRA.SCR
  160. multi:
  161.     set #1 1
  162.     chain_loop:
  163.         set    $filename $path
  164.         concat $filename "newdata" #1 ".fix"
  165.         set  $folder $filename
  166.         if not fexist $filename             goto end_loop
  167.         cwrite "Getting data from: " $filename
  168.         gosub readdata
  169.         gosub record_data
  170.         gosub process_it
  171.         cwrite "Deleting old file: " $folder
  172.         erase $folder
  173.     end_loop:
  174.     inc #1
  175.     if  #1 <=  #MaxFldrs goto chain_loop
  176. goto finish
  177.  
  178.  
  179.  
  180. ;                            ENS_MGRZ.SCR                 Page 3 of 17
  181.  
  182.   ; now we're finished online
  183. finish:
  184.     cwrite  %cr "Personal folders are menu items: " #lofldr "-" #hifldr
  185.     cwrite "Total number of Personal Folders is: " #NbrFolders
  186.     set $filename $timelog
  187.     fappend   &3  $filename
  188.     fwrite    &3  "ens_mgrz.scr OFF " %date " at " %time %cr
  189.     fclose    &3
  190.     if ferror &3  goto file_error
  191. alldone:
  192.     writeln   $result
  193.     cwrite  %cr $result %date "  " %time
  194.     capture OFF
  195. end
  196.  
  197. parse_error:
  198.     writeln "ERROR parsing: " $1 " at " $select  " "  #parseMore
  199.     cwrite  "ERROR parsing: " $1 " at " $select  " "  #parseMore
  200. goto fatal_error
  201.  
  202. file_error:
  203.     writeln "File ERROR: " $filename " " $error
  204.     cwrite  "File ERROR: " $filename " " $error
  205. goto fatal_error
  206.  
  207.  
  208.   ; back out only to first ! prompt
  209. fatal_error:
  210.     writeln
  211.     writeln    "Aborting script after ERROR " #2
  212.     cwrite %cr "An ERROR occurred.  " %date "  " %time "  " #2 %cr
  213.     capture OFF
  214.     back:
  215.         add  8  ":"
  216.         add  9  "!"
  217.         SEND %cr
  218.         MWAIT #2
  219.     if #2 != 9 goto back
  220.     fappend &3  $timelog
  221.     fwrite  &3  "ens_mgrz.scr OFF " %date " at " %time  "  ERROR" %cr
  222.     fclose  &3
  223. fail
  224.  
  225. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  226. ; Subroutine to open submenu and reinitialize variables
  227. ; Parameters: none
  228. ; Returns:    LSEND 5, reset global variables listed below
  229. ;
  230. submenu:
  231.     WAIT ^J "!"
  232.     set #submenu %true
  233.     set #lofldr 1
  234.     set #hifldr #MaxFldrs
  235.     set #folder 0
  236.     set #2 3
  237.     LSEND 5
  238. return
  239.  
  240. ; Page 4 of 17               ENS_MGRZ.SCR  
  241. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  242. ; Subroutine to process data for one ENS personal folder
  243. ; Parameters:   Folder data structure from newdata?.fix
  244. ;
  245. process_it:
  246.  
  247. if #shortcut = %true goto skip_it
  248.       ; this misses list of $DelName if both are present
  249.     set $name ""
  250.     if $DelName != ""  set $name $DelName
  251.     if $ChgName != ""  set $name $ChgName
  252.     if $name = ""      goto skip_it
  253.     set #menu 4
  254.     gosub find_folder
  255.     if #ThisFolder = 0  goto not_found
  256.     LSEND #ThisFolder
  257.     WAIT  "<CR> !"
  258.     gosub back_out
  259. skip_it:
  260.  
  261.   ; Create/Change/Delete/List menu item 3:  Delete a Personal Folder
  262. if $DelName = ""    goto end_delete
  263.     if #debug = %true   cwrite "C/C/D/L menu item: 3 DELETE"
  264.     set $name $DelName
  265.     set #menu 3
  266.     gosub find_folder
  267.     if #ThisFolder != 0  goto del_it
  268.     gosub error_msg
  269.     cwrite  "Folder " $name " not found.  No deletion done."
  270.     writeln "Folder " $name " not found.  No deletion done."
  271.     goto skip_delete
  272.  
  273.       ; #ThisFolder now corresponds to $DelName
  274.   del_it:
  275.     if #debug = %true   cwrite "Delete folder named: " $name
  276.     LSEND #ThisFolder
  277.     delete_loop:
  278.         add 1  $name
  279.         add 2  "(Y or N) :"
  280.         MWAIT #2
  281.     if #2 = 1   goto delete_loop
  282.     LSEND "Y"
  283.     WAIT  ^J "!"
  284.  
  285.       ; Update local disk record
  286.     set    $3 $path
  287.     concat $3 $name ".KEY"
  288.     erase  $3
  289.     dec #NbrFolders
  290.     dec #hifldr
  291.  
  292.   skip_delete:
  293.     if #debug = %true cwrite "Send C/R at skip_delete: "
  294.     SEND %cr
  295.     WAIT ^J "!"
  296.  
  297.       ; Don't try to list a deleted folder; only equal if both null
  298.     if $ChgName = $NewName return     ; to chain_loop
  299. end_delete:
  300. ;                            ENS_MGRZ.SCR                 Page 5 of 17
  301.  
  302. if $NewName  = ""  goto change
  303.     set $name $NewName
  304.     gosub dupl_name
  305.     if #ThisFolder != 0 return   ; to main control loop at chain_loop
  306.  
  307.   ; Create/Change/Delete/List menu item 1:  Create a Personal Folder
  308. create:
  309.     if $ChgName != ""           goto change
  310.     if #NbrFolders = #MaxFldrs  goto too_many
  311.     if #debug = %true  cwrite "C/C/D/L menu item: 1 CREATE"
  312.     LSEND 1
  313.     WAIT  "(10 char max) :"
  314.       set $this  "(10 char max) :"
  315.       set $next  "(MM/DD/YY) :"
  316.       set $xmit  $name
  317.     gosub xmit
  318.     if #2 = 7  return            ; to main control loop at chain_loop
  319.       set $this  "(MM/DD/YY) :"
  320.       set $next  "stories :"
  321.       set $xmit  $expire
  322.     gosub xmit
  323.       set $this  "stories :"
  324.       set $next  "more wires !"
  325.       set $xmit  $retain
  326.     gosub xmit
  327.     set $1 $AddWire
  328.     gosub group1
  329.     SEND %cr
  330.     WAIT "continue !"
  331.     if $1 != ""  gosub group2
  332.  
  333.     set #NbrPhrases #MaxKey
  334.     SEND %cr
  335.     WAIT "(Example:"
  336.     WAIT  ":"
  337.     gosub new_phrases
  338.  
  339.     if #debug = %true   cwrite  %cr "At end of create folder"
  340.     inc #hifldr
  341.     inc #NbrFolders
  342. goto list_folder
  343.  
  344.     ; - - - - - - - - - - - - -
  345.     ; subroutine to send data
  346.     ;
  347.     xmit:
  348.         add 1 $next
  349.         add 7 $this
  350.         LSEND $xmit
  351.         MWAIT #2
  352.     if #2 = 1 return
  353.         gosub error_msg
  354.         add  8 ":"
  355.         add  9 "!"
  356.         SEND  %cr
  357.         MWAIT #3
  358.     return
  359.  
  360. ; Page 6 of 17               ENS_MGRZ.SCR  
  361.  
  362.   ; Create/Change/Delete/List menu item 2:  Change a Personal Folder
  363. change:
  364.     if $ChgName = ""    goto end_change
  365.     if #debug = %true   cwrite "C/C/D/L menu item: 2 CHANGE"
  366.     set $name  $ChgName
  367.     set #menu  2
  368.     gosub find_folder
  369.     if #ThisFolder = 0  goto not_found
  370.  
  371.       ; #ThisFolder now corresponds to $ChgName
  372.     if #debug = %true   cwrite "Change folder named: " $name
  373.     LSEND #ThisFolder
  374.     WAIT  ^J "!"
  375.  
  376.       ; Change folder menu item 1:  Name
  377.     if $NewName = ""    goto end_name
  378.         if #debug = %true  cwrite "Change Folder item: 1 FOLDER NAME"
  379.         LSEND 1
  380.         WAIT   "(10 chars) :"
  381.           set $this  "(10 chars) :"
  382.           set $next  "!"
  383.           set $xmit  $NewName
  384.         gosub xmit
  385.         if #2 != 9      goto end_name
  386.  
  387.           ; Update local records with new folder name
  388.         set    $3 $path
  389.         concat $3 $name ".KEY"
  390.         erase  $3
  391.         set $name    $NewName
  392.         set $ChgName $NewName
  393.         set $NewName ""
  394.     end_name:
  395.  
  396.  
  397.       ; Change folder menu item 2:  Expiration Date
  398.     if $expire = ""     goto end_expire
  399.         if #debug = %true cwrite "Change Folder item: 2 EXPIRATION DATE"
  400.         LSEND 2
  401.         WAIT  "(MM/DD/YY) :"
  402.           set $this "(MM/DD/YY) :"
  403.           set $next "!"
  404.           set $xmit $expire
  405.         gosub xmit
  406.     end_expire:
  407.  
  408.  
  409.       ; Change folder menu item 3:  Story Retention Days
  410.     if $retain = ""     goto end_retain
  411.         if #debug = %true   cwrite "Change Folder item: 3 RETENTION"
  412.         LSEND 3
  413.         WAIT  "(days) :"
  414.           set $this "(days) :"
  415.           set $next "!"
  416.           set $xmit $retain
  417.         gosub xmit
  418.     end_retain:
  419.  
  420. ;                            ENS_MGRZ.SCR                 Page 7 of 17
  421.  
  422.   ; Create/Change/Delete/List menu item 2:  Change a Personal Folder
  423.  
  424.       ; Change folder menu item 4: News Wires to Scan
  425.     if $AddWire = $DelWire   goto end_wires
  426.         if #debug = %true   cwrite "Change Folder item: 4 NEWS WIRES"
  427.         LSEND 4
  428.         WAIT  "more wires !"
  429.         set $5 $AddWire
  430.         set $6 $DelWire
  431.         set #wireMode 1
  432.  
  433.           ; First do 1-18 include & exclude; starting mode is include
  434.         include1:
  435.             if #debug = %true cwrite "Starting at label include1."
  436.             if $5 = ""       goto exclude1
  437.             set $1 $AddWire
  438.             gosub parse
  439.             if #4 > #BrkWire goto exclude1
  440.  
  441.             set $1 $AddWire
  442.             gosub group1
  443.             set $5 $1
  444.  
  445.         exclude1:
  446.             if #debug = %true cwrite "Starting at label exclude1"
  447.             if $6 = ""       goto nextGrp
  448.             set $1 $DelWire
  449.             gosub parse
  450.             if #4 > #BrkWire goto nextGrp
  451.  
  452.             LSEND "exclude"
  453.             WAIT  "more wires !"
  454.             set #wireMode -1
  455.  
  456.             set $1 $DelWire
  457.             gosub group1
  458.             set $6 $1
  459.  
  460.           ; see if we have to do any wires in group 19-
  461.         nextGrp:
  462.             if $5 != ""  goto nxtGrp
  463.             if $6  = ""  goto skip_wires
  464.           nxtGrp:
  465.             if #debug = %true cwrite "Send C/R to reach group2"
  466.             SEND %cr
  467.             WAIT "continue !"
  468.  
  469.         include2:
  470.             if #debug = %true cwrite "Starting at label include2."
  471.             if $5 = ""       goto exclude2
  472.             if #wireMode = 1 goto incl
  473.             LSEND "include"
  474.             WAIT  "continue !"
  475.             set #wireMode 1
  476.           incl:
  477.             set $1 $5
  478.             gosub group2
  479.  
  480. ; Page 8 of 17               ENS_MGRZ.SCR  
  481.   ; Create/Change/Delete/List menu item 2:  Change a Personal Folder
  482.       ; Change folder menu item 4: News Wires to Scan
  483.         exclude2:
  484.             if $6 = ""       goto skip_wires
  485.             if #wireMode = -1 goto excl
  486.             LSEND "exclude"
  487.             WAIT  "continue !"
  488.             set #wireMode -1
  489.           excl:
  490.             set $1 $6
  491.             gosub group2
  492.         skip_wires:
  493.             add 7 "continue !"
  494.             add 7 "more wires !"
  495.             add 9 ^J "!"
  496.             if #debug = %true cwrite "Send C/R at label skip_wires."
  497.             SEND  %cr
  498.             MWAIT #2
  499.         if #2 != 9 goto skip_wires
  500.     end_wires:
  501.  
  502.       ; Change folder menu item 5:  Keyphrases (Add/Delete/Change/List)
  503.     if $DelKey   != ""       goto chg_key
  504.     if #HiChgdKey > 0        goto chg_key
  505.     goto end_phrase
  506.       chg_key:
  507.         if #debug = %true cwrite "Change Folder item: 5  KEYPHRASES"
  508.         LSEND 5
  509.         WAIT ^J "!"
  510.  
  511.           ; Keyphrase menu item 2:  Delete Keyphrases
  512.         if $DelKey = ""      goto edit_key
  513.         if #debug = %true    cwrite "Keyphrase menu item: 2  DELETE"
  514.         set #menu 2
  515.         gosub count_phrases
  516.         set $1 $DelKey
  517.         del_loop:
  518.             gosub parse
  519.             if #4 <= #NbrPhrases goto do_del
  520.             gosub error_msg
  521.             cwrite  "Phrase " #4 " doesn't exist.  No deletion done."
  522.             writeln "Phrase " #4 " doesn't exist.  No deletion done."
  523.           goto  del_next
  524.           do_del:
  525.               add  2  "Illegal"
  526.               add  4  "List Key"
  527.               add  5  "Select Key"
  528.             LSEND $select
  529.             MWAIT #2
  530.             WAIT  "!"
  531.             if #2 = 2        gosub error_msg
  532.             dec #NbrPhrases
  533.           del_next:
  534.         if  #parseMore > 0   goto del_loop
  535.         if #NbrPhrases = 0   goto add_key
  536.         if #2 = 4            goto edit_key
  537.         if #debug = %true cwrite "Send C/R at end Delete Keyphrases"
  538.         SEND %cr
  539.         WAIT ^J "!"
  540. ;                            ENS_MGRZ.SCR                 Page 9 of 17
  541.  
  542.   ; Create/Change/Delete/List menu item 2:  Change a Personal Folder
  543.       ; Change folder menu item 5:  Keyphrases (Add/Delete/Change/List)
  544.  
  545.           ; Keyphrase menu item 3:  Change Keyphrases
  546.       edit_key:
  547.         if #LoChgdKey = 0             goto  end_phrase
  548.         if #debug = %true  cwrite "Keyphrase menu item: 3  CHANGE"
  549.         set #menu 3
  550.         gosub count_phrases
  551.         if #2 = 9                     goto  non_fatal
  552.         if #NbrPhrases = 0            goto  add_key
  553.         if #LoChgdKey <= #NbrPhrases  gosub new_phrases
  554.         if #debug = %true cwrite  "Send C/R at end Change Keyphrases"
  555.         SEND %cr
  556.         WAIT ^J "!"
  557.  
  558.           ; Keyphrase menu item 1:  Add Keyphrases
  559.       add_key:
  560.         if #HiChgdKey <= #NbrPhrases  goto  end_phrase
  561.         set #NbrPhrases #HiChgdKey
  562.         set $NewName    $ChgName
  563.         set $ChgName    ""
  564.         if #debug = %true  cwrite "Keyphrase menu item: 1  ADD"
  565.         LSEND 1
  566.         WAIT  "(Example:"
  567.         WAIT  ":"
  568.         gosub new_phrases
  569.     end_phrase:
  570.         gosub back_out
  571. end_change:
  572.  
  573.   ; Create/Change/Delete/List menu item 4:  List Personal Folder
  574. list_folder:
  575.     if #debug = %true   cwrite "C/C/D/L menu item: 4 LIST"
  576.     set #menu 4
  577.     gosub find_folder
  578.     if #ThisFolder = 0  goto not_found
  579.  
  580.     if #debug = %true  cwrite "Select folder named: " $name
  581.     set    $filename $path
  582.     concat $filename $name  ".KEY"
  583.     cwrite "Moving capture to " $filename
  584.  
  585.     capture ON    $filename /o
  586.     cwrite "List of Folder " #ThisFolder "  " %date "  " %time
  587.       add 2  "Illegal response"
  588.       add 7  "Press <CR> !"
  589.     LSEND #ThisFolder
  590.     MWAIT #2
  591.     capture ON    $logfile
  592.  
  593.     cwrite "Return capture fm " $filename
  594.     if #2 < 6  WAIT ^J "!"
  595.     if #2 < 6  gosub error_msg
  596.     gosub back_out
  597. return           ; to main control loop at chain_loop:
  598.  
  599.  
  600. ; Page 10 of 17              ENS_MGRZ.SCR  
  601.  
  602. too_many:
  603.     writeln "Can't create another folder; no more allowed."
  604.     cwrite %cr "ERROR: Can't create folder; only " #MaxFldrs " allowed."
  605.     gosub error_msg
  606. return           ; to main control loop at chain_loop:
  607.  
  608. not_found:
  609.     writeln     "Named personal folder " $name " not found!"
  610.     cwrite %cr  "Named personal folder " $name " not found!"
  611. non_fatal:
  612.     gosub error_msg
  613.     gosub back_out
  614. return           ; to main control loop at chain_loop:
  615.  
  616. ; - - - - - - - - -  END OF SUBROUTINE PROCESS_IT  - - - - - - -
  617.  
  618.  
  619. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  620. ; subroutine to check for unused name by trying to change it
  621. ; param:   $name        -   name being checked for duplicate
  622. ;
  623. dupl_name:
  624.     set #menu 2
  625.     gosub find_folder
  626.     if #debug = %true cwrite "Send C/R after duplicate name check "
  627.     SEND %cr
  628.     WAIT ^J "!"
  629. if #ThisFolder = 0  return
  630.     writeln    "Duplicate folder: " $NewName " already exists!"
  631.     cwrite %cr "Duplicate folder: " $NewName " already exists!"
  632.     gosub error_msg
  633. return
  634.  
  635. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  636. ; subroutine to find the named personal folder
  637. ; param:   $name        -   name of folder sought
  638. ;          #menu        -   response to ENS menu ? Select Folder
  639. ; Returns: #ThisFolder  -   folder number for $name; zero = error
  640. ;
  641. find_folder:
  642.     set  #ThisFolder -1
  643.     set  $9 " "
  644.     concat  $9  $name ^M
  645.     LSEND #menu
  646.     find_loop:
  647.         add    1 ^J " 1"
  648.         add    2 ^J " 2"
  649.         add    3 ^J " 3"
  650.         add    7  $9
  651.         add    9  ^J "!"
  652.         MWAIT #2
  653.         inc #ThisFolder
  654.     if #2  < 7   goto find_loop
  655.     if #2  = 7   WAIT ^J "!"
  656.     if #2 != 7   set  #ThisFolder 0
  657.     if #debug = %true cwrite "Folder " $name " is number " #ThisFolder
  658. return
  659.  
  660. ;                            ENS_MGRZ.SCR                 Page 11 of 17
  661.  
  662. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  663. ; Subroutine to extract numbers from sequence in string variable
  664. ; Parameters:   $1         - string containing the remaining sequence
  665. ; Returns:      $select    - string representation of next digits
  666. ;               #4         - integer representation of the number
  667. ;               #parseMore - equals 0 when no more numbers remain
  668. ;
  669. parse:
  670.       ; locate delimiter char in sequence of numbers
  671.     onerror parse_error
  672.     pos #1 ","  $1
  673.     set #parseMore  #1
  674.     set $select $1
  675.  
  676.       ; if zero this is last number
  677.     if  #1 = 0 goto last_one
  678.     if #debug = %true cwrite %cr "Remaining parse of: " $1
  679.  
  680.       ; extract number from the input sequence
  681.     dec #1
  682.     midstr $1  1  #1  $select
  683.  
  684.       ; delete current number from the string
  685.     inc #1
  686.     delstr $1  1  #1
  687.  
  688.       ; check for error, a non-digit string
  689.   last_one:
  690.     val #4  $select
  691.     if #debug = %true cwrite "Returning from parse with # " $select
  692.     onerror fatal_error
  693. return
  694.  
  695.  
  696. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  697. ; Subroutine to back out to main menu 4  C/C/D/L
  698. ;
  699. back_out:
  700.     add 1  "4 List a Per"
  701.     add 8  ":"
  702.     add 9  "!"
  703.     if #debug = %true  cwrite "Sent C/R at back_out"
  704.     SEND %cr
  705.     MWAIT #2
  706. if #2 > 1 goto back_out
  707. WAIT ^J "!"
  708. return
  709.  
  710.  
  711. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  712. ; Subroutine to record non-fatal error message
  713. ;
  714. error_msg:
  715.     cwrite  %cr "A non-fatal ERROR occurred with folder " $name %cr
  716.     set $result "A non-fatal ERROR occurred.  Check this log. "
  717. return
  718.  
  719.  
  720. ; Page 12 of 17              ENS_MGRZ.SCR  
  721.  
  722. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  723. ; Subroutines (2) to send wire service numbers to add/delete
  724. ; Parameters  $1  - remaining string to parse
  725. ;             #4  - integer value of parsed number
  726. ;             #parseMore - zero means no more wires in $1
  727. ;             $select    - string representation of parsed number
  728. ;             #BrkWire   - boundary between wire service group menus
  729. ;
  730.   ; cycle 1 wire services 1-18
  731. group1:
  732.     gosub parse
  733.     if #4 > #BrkWire  goto endGrp1
  734.       add 2  "Invalid"
  735.       add 7  "more wires !"
  736.     LSEND $select
  737.     MWAIT #2
  738.     if #2 = 2         goto errGrp1
  739. if #parseMore != 0    goto group1
  740.     set $1 ""
  741.     endGrp1:
  742. return
  743.  
  744.     errGrp1:
  745.       WAIT "more wires !"
  746.       gosub error_msg
  747.     return
  748.  
  749.  
  750.  
  751.   ; cycle 2 wire services 19-
  752. group2:
  753.     gosub parse
  754.     if #4 <= #BrkWire goto fatal_error
  755.       add 2  "Invalid"
  756.       add 7  "continue !"
  757.     LSEND $select
  758.     MWAIT #2
  759.     if #2 = 2         goto errGrp2
  760. if #parseMore != 0    goto group2
  761. return
  762.  
  763.     errGrp2:
  764.       WAIT "continue !"
  765.       gosub error_msg
  766.     return
  767.  
  768.  
  769.  
  770. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  771. ; subroutine to select which key phrase to change
  772. ;
  773. which_key:
  774.     if #debug = %true   cwrite "#phrase selected: " #phrase
  775.     LSEND #phrase
  776.     WAIT  "Keyphrase :"
  777. return
  778.  
  779.  
  780. ;                            ENS_MGRZ.SCR                 Page 13 of 17
  781.  
  782. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  783. ; Subroutine to specify new key phrases
  784. ;    set each $key "" on first pass (chg) so can repass (add)
  785. ; Parameters:   #NbrPhrases  - sets boundary between chg and add
  786. ;               $key1-$key7  - new/changed keyphrases
  787. ;
  788. new_phrases:
  789.     key1:
  790.       set #phrase 1
  791.       if $key1 = ""              goto key2
  792.       set $key $key1
  793.       set $key1 ""
  794.       if $ChgName != ""          gosub which_key
  795.       gosub key_phrase
  796.     key2:
  797.       inc #phrase
  798.       if  #phrase > #NbrPhrases  goto keydone
  799.       if $key2 = ""              goto key3
  800.       set $key $key2
  801.       set $key2 ""
  802.       if $ChgName != ""          gosub which_key
  803.       gosub key_phrase
  804.     key3:
  805.       inc #phrase
  806.       if  #phrase > #NbrPhrases  goto keydone
  807.       if $key3 = ""              goto key4
  808.       set $key $key3
  809.       set $key3 ""
  810.       if $ChgName != ""          gosub which_key
  811.       gosub key_phrase
  812.     key4:
  813.       inc #phrase
  814.       if  #phrase > #NbrPhrases  goto keydone
  815.       if $key4 = ""              goto key5
  816.       set $key $key4
  817.       set $key4 ""
  818.       if $ChgName != ""          gosub which_key
  819.       gosub key_phrase
  820.     key5:
  821.       inc #phrase
  822.       if  #phrase > #NbrPhrases  goto keydone
  823.       if $key5 = ""              goto key6
  824.       set $key $key5
  825.       set $key5 ""
  826.       if $ChgName != ""          gosub which_key
  827.       gosub key_phrase
  828.     key6:
  829.       inc #phrase
  830.       if  #phrase > #NbrPhrases  goto keydone
  831.       if $key6 = ""              goto key7
  832.       set $key $key6
  833.       set $key6 ""
  834.       if $ChgName != ""          gosub which_key
  835.       gosub key_phrase
  836.  
  837.  
  838.  
  839.  
  840. ; Page 14 of 17              ENS_MGRZ.SCR  
  841.  
  842.     key7:
  843.       inc #phrase
  844.       if  #phrase > #NbrPhrases  goto keydone
  845.       if $key7 = ""              goto keydone
  846.       set $key $key7
  847.       set $key7 ""
  848.       if $ChgName != ""          gosub which_key
  849.       gosub key_phrase
  850.     keydone:
  851.       if #2 = 9 return
  852.       set $key ""
  853.       gosub key_phrase
  854. return
  855.  
  856. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  857. ; Subroutine to send a key phrase to CIS
  858. ; Parameters:   $key, the phrase to be sent
  859. ;
  860. key_phrase:
  861.     add  1  "? Illegal"
  862.     add  2  "? Unmatched"
  863.     add  3  "? Invalid"
  864.     set #overtime %false
  865.     timeout 20
  866.     LSEND $key
  867.   send_it:
  868.     add  8   ":"
  869.     add  9   "!"
  870.     DWAIT #2
  871.     if #2 != -1 goto on_time
  872.  
  873.       ; produce wait message and extend wait time for CIS delays
  874.     if  #overtime = %true goto handle_error
  875.     set #overtime %true
  876.     timeout 240
  877.     writeln "Please be patient; CIS may take 3-4 min to process these."
  878.     cwrite  "Please be patient; CIS may take 3-4 min to process these."
  879.     goto send_it
  880.  
  881.   on_time:
  882.     timeout 60
  883. if #2 > 4  return            ; to new_phrases, $keyN
  884.  
  885.       ; recover from phrase syntax error and proceed to next phrase
  886.     WAIT  ":"
  887.     gosub error_msg
  888.     if #debug = %true   cwrite "Send C/R phrase error recovery"
  889.     SEND  %cr
  890.     WAIT  ^J "!"
  891.     if $ChgName != "" set #3 3         ; select change again
  892.     if $ChgName  = "" set #3 1         ; select add again
  893.       add 8  ":"
  894.       add 9  "!"
  895.     LSEND #3
  896.     MWAIT #2
  897. return                       ; to new_phrases, $keyN
  898.  
  899.  
  900. ;                            ENS_MGRZ.SCR                 Page 15 of 17
  901.  
  902.  
  903. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  904. ; Subroutine to count current number of key phrases
  905. ; Parameter: #menu - menu item number
  906. ; Returns:   #NbrPhrases, #2>8 for Error
  907. ;
  908. count_phrases:
  909.     set #NbrPhrases 0
  910.     LSEND #menu
  911.     count_loop:
  912.         add   1 "1"
  913.         add   2 "2"
  914.         add   3 "3"
  915.         add   4 "4"
  916.         add   5 "5"
  917.         add   6 "6"
  918.         add   7 "7"
  919.         add   8 "!"
  920.         add   9 "Illegal response"
  921.         add  10 "No Keyphrases"
  922.         MWAIT #2
  923.         if #2 < 8  set #NbrPhrases #2
  924.     if #2 < 8  goto count_loop
  925.     if #2 > 8  WAIT  "!"
  926.     if #debug = %true  cwrite "NbrPhrases has value: " #NbrPhrases
  927. return
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934. ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  935. ; Subroutine to record script input data read from disk
  936. ;
  937. record_data:
  938.     cwrite %cr
  939.     if $DelName != ""  cwrite "DEL: " $DelName
  940.     if $ChgName != ""  cwrite "CHG: " $ChgName
  941.     if $NewName != ""  cwrite "NEW: " $NewName
  942.     if $expire  != ""  cwrite "EXPIRE:  " $expire
  943.     if $retain  != ""  cwrite "RETAIN:  " $retain
  944.     if $DelWire != ""  cwrite "DEL-WIRES: " $DelWire
  945.     if $AddWire != ""  cwrite "ADD-WIRES: " $AddWire
  946.     if $DelKey  != ""  cwrite "DEL-KEYS:  " $DelKey
  947.     if #LoChgdKey != 0 cwrite "NEW/CHG KEYS:"
  948.     if $key1 != "" cwrite "1. " $key1
  949.     if $key2 != "" cwrite "2. " $key2
  950.     if $key3 != "" cwrite "3. " $key3
  951.     if $key4 != "" cwrite "4. " $key4
  952.     if $key5 != "" cwrite "5. " $key5
  953.     if $key6 != "" cwrite "6. " $key6
  954.     if $key7 != "" cwrite "7. " $key7
  955.     cwrite %cr
  956. return
  957.  
  958.  
  959.  
  960. ; Page 16 of 17              ENS_MGRZ.SCR  
  961.  
  962. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  963. ; Subroutine to read a new set of data variables
  964. ;
  965. readdata:
  966.     set $error "  File OPEN"
  967.     fopen &1  $filename
  968.     if ferror &1 goto file_error
  969.     set $error "  File READ"
  970.     freadln &1 $4
  971.     set $DelName $4
  972.     freadln &1 $4
  973.     set $ChgName $4
  974.     freadln &1 $4
  975.     set $NewName $4
  976.     freadln &1 $4
  977.     set $expire  $4
  978.     freadln &1 $4
  979.     set $retain  $4
  980.     freadln &1 $4
  981.     set $DelWire $4
  982.     freadln &1 $4
  983.     set $AddWire $4
  984.     freadln &1 $4
  985.     set $DelKey  $4
  986.     freadln &1 $4
  987.     set #LoChgdKey $4
  988.     freadln &1 $4
  989.     set #HiChgdKey $4
  990.     freadln &1 $4
  991.     set  $key1 $4
  992.     freadln &1 $4
  993.     set  $key2 $4
  994.     freadln &1 $4
  995.     set  $key3 $4
  996.     freadln &1 $4
  997.     set  $key4 $4
  998.     freadln &1 $4
  999.     set  $key5 $4
  1000.     freadln &1 $4
  1001.     set  $key6 $4
  1002.     freadln &1 $4
  1003.     set  $key7 $4
  1004.     if ferror &1 goto file_error
  1005.     set $error "  File CLOSE"
  1006.     fclose &1
  1007.     if ferror &1 goto file_error
  1008.     set $error ""
  1009. return
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016. ; END OF FILE:  ENS_MGRZ.SCR
  1017.  
  1018.  
  1019.  
  1020. ;                            ENS_MGRZ.SCR                 Page 17 of 17
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.