home *** CD-ROM | disk | FTP | other *** search
/ PC Direct 1996 May / PCDMAY.ISO / software / clarion / 3rdparty / tools / library / twfix2.exe / TCTLBRW4.TPW < prev    next >
Encoding:
Text File  |  1995-04-23  |  26.5 KB  |  852 lines

  1. #!###########################################################################
  2. #!  TCtlBrw4.TPW
  3. #!
  4. #!
  5. #!  Code Templates
  6. #!  ------------------
  7. #!  TCountTags            -  Count the Number of Tagged Records in a given
  8. #!                           Tag Set Number
  9. #!  TCopyTags             -  Copy Tags from one Tag Set to Another
  10. #!  TTagCurrentRecord     -  Tags or Flips the Current Record
  11. #!  TUnTagCurrentRecord   -  UnTag Current Record
  12. #!  TClearTags            -  Clear All the tags for the given Tag Set
  13. #!  TProcessTags          -  Writes code to loop through all tags, and
  14. #!                           do some sort of processing with each record.
  15. #!
  16. #!###########################################################################
  17. #!
  18. #!
  19. #!
  20. #!**************************************************************************
  21. #!  Name ............: TCountTags
  22. #!  Description......: This Code Template calls the tag library function
  23. #!                     Process Tags to get the number of tagged records...
  24. #!**************************************************************************
  25. #CODE(TCountTags,'TABOGA-Counts The Number of Tagged Records')
  26. #RESTRICT
  27. #ENDRESTRICT
  28. #DISPLAY('This Code Template is used to COUNT the Number of')
  29. #DISPLAY('Tagged Records in the Given Tag Set Number.')
  30. #DISPLAY('')
  31. #DISPLAY('')
  32. #PROMPT ('Show Message w/Count?:', CHECK), %TABShowMessage,DEFAULT(1)
  33. #DISPLAY('')
  34. #PROMPT ('&Tagging To:', DROP ('To a File|To a Memory Queue|File FIELD')), %TABTagging, DEFAULT('To a File')
  35. #BOXED(''), AT( ,72), WHERE(%TABTagging <> 'File FIELD'), CLEAR
  36.     #PROMPT ('File Positio&n Type:', DROP ('Pointer|Position')), %TABPosition, DEFAULT('Pointer')
  37.     #PROMPT ('Ta&g Set No. :', @n04), %TABTagSet,REQ
  38.     #DISPLAY('Enter UserID Number, or the variable to use as')
  39.     #DISPLAY('UserID, or leave it Blank for a single User')
  40.     #PROMPT ('User &ID     :', @S60), %TABUserID
  41. #ENDBOXED
  42. #BOXED(''), AT( ,72), WHERE(%TABTagging = 'File FIELD'), CLEAR
  43.     #PROMPT ('&Field to Hold Tags', FIELD(%Primary)), %TABTagField, REQ
  44.     #PROMPT ('Fil&e to Use', FILE), %TABFile2Use, REQ
  45. #ENDBOXED
  46. #DISPLAY('')
  47. #DISPLAY('')
  48. #DISPLAY('This code templates introduces a variable called TABLong which  ')
  49. #DISPLAY('is set to the NUMBER OF TAGGED RECORDS.  If desired, a MESSAGE  ')
  50. #DISPLAY('appears showing that number...')
  51. #!
  52. #LOCALDATA
  53. TABShort               SHORT          !  Multi purpose SHORT variable
  54. TABLong                LONG           !  Multi purpose LONG variable
  55. #ENDLOCALDATA
  56. #!
  57. #ATSTART
  58. #DECLARE(%TABCountEquates)
  59. #DECLARE(%TABUsingFile)
  60. #IF (%TABTagging = 'To a File')
  61.    #IF(%TABPosition = 'Pointer')
  62. #SET(%TABUsingFile, 5)
  63.    #ELSE
  64. #SET(%TABUsingFile, 9)
  65.    #ENDIF
  66. #ELSIF (%TABTagging = 'To a Memory Queue')
  67.    #IF(%TABPosition = 'Pointer')
  68. #SET(%TABUsingFile, 6)
  69.    #ELSE
  70. #SET(%TABUsingFile, 10)
  71.    #ENDIF
  72. #ENDIF
  73. #IF(~%TABUserID)
  74.    #SET(%TABUserID, '0')
  75. #ENDIF
  76. #ENDAT
  77. #!
  78. #AT (%DataSectionBeforeWindow), WHERE(%TABCountEquates = %Null AND %TABTagging <> 'File FIELD')
  79. ! Count Tags Function codes...
  80. eCountTags          EQUATE(1)   #<! Count Tags
  81.  #SET(%TABCountEquates, %True)
  82. #ENDAT
  83. #!
  84. #!
  85. #!
  86. #!
  87. #IF(%ControlEvent='Accepted')
  88.     #IF(%TABTagging <> 'File FIELD')
  89. TABLong = ProcessTags(eCountTags, %TABUsingFile, %TABUserID, %TABTagSet)
  90.     #ELSE
  91. TABLong = 0
  92. SET(%TABFile2Use)
  93. LOOP
  94.    NEXT(%TABFile2Use)
  95.    IF ERRORCODE() THEN BREAK.
  96.    IF %TABTagField
  97.       TABLong += 1
  98.    .
  99. .
  100.     #ENDIF    #! IF TABTagging <> 'File FIELD'
  101.     #IF(%TABShowMessage)
  102. TABShort = MESSAGE('No of Records Tagged: ' & TABLong,'Records Tagged', ICON:Exclamation, Button:OK, BUTTON:OK,0)
  103.     #ENDIF
  104. #ELSE
  105.   #ERROR('Count Tags Code Template must be used for Accepted Control Events!')
  106. #ENDIF
  107. #!
  108. #!
  109. #!
  110. #!**************************************************************************
  111. #!  Name ............: TCopyTags
  112. #!  Description......: This Code Template copies tags from one TagSetNo
  113. #!                     to another.
  114. #!**************************************************************************
  115. #CODE(TCopyTags,'TABOGA-Copies a Set of Tagged Records to Another Set')
  116. #RESTRICT
  117. #ENDRESTRICT
  118. #DISPLAY('This Code Template is used to COPY the Tags from')
  119. #DISPLAY('one TagSet to Another...')
  120. #DISPLAY('')
  121. #PROMPT ('&Erase Destination Tags?:', DROP('Yes|No|Ask User')), %TABEraseTags,DEFAULT('Ask User')
  122. #ENABLE(%TABEraseTags = 'Ask User'),CLEAR
  123.    #PROMPT ('Question to Ask User?:',@S40), %TABTagAskQuestion, REQ, DEFAULT('Would You Like to Remove Existing Tags From Destination?')
  124.    #PROMPT ('Message Icon?:',DROP('ICON:Question|ICON:Exclamation|ICON:Asterisk')), %TABTagAskICON, DEFAULT('ICON:Question')
  125. #ENDENABLE
  126. #DISPLAY('')
  127. #PROMPT ('File Being Used:', FILE),%TABFile2Use,REQ
  128. #BOXED('Original Tag Set')
  129. #PROMPT ('&Tagged To         :', DROP ('To a File|To a Memory Queue|File FIELD')), %TABOrigTagging, DEFAULT('To a File')
  130.   #BOXED(''), AT( ,108), WHERE(%TABOrigTagging <> 'File FIELD'), CLEAR
  131.     #PROMPT ('File Positio&n Type:', DROP ('Pointer|Position')), %TABOrigPosition, DEFAULT('Pointer')
  132.     #PROMPT ('Ta&g Set No. :', @n04), %TABOrigTagSet,REQ
  133.     #PROMPT ('User &ID     :', @S60), %TABOrigUserID
  134.   #ENDBOXED
  135.   #BOXED(''), AT( ,108), WHERE(%TABOrigTagging = 'File FIELD'), CLEAR
  136.     #PROMPT ('&Field to Hold Tags', FIELD(%TABFile2Use)), %TABOrigTagField, REQ
  137.   #ENDBOXED
  138. #ENDBOXED
  139. #BOXED('Destination Tag Set')
  140. #PROMPT ('&Tagged To         :', DROP ('To a File|To a Memory Queue|File FIELD')), %TABDestTagging, DEFAULT('To a File')
  141.   #BOXED(''), AT( ,182), WHERE(%TABDestTagging <> 'File FIELD'), CLEAR
  142.     #PROMPT ('File Positio&n Type:', DROP ('Pointer|Position')), %TABDestPosition, DEFAULT('Pointer')
  143.     #PROMPT ('Ta&g Set No. :', @n04), %TABDestTagSet,REQ
  144.     #PROMPT ('User &ID     :', @S60), %TABDestUserID
  145.   #ENDBOXED
  146.   #BOXED(''), AT( ,182), WHERE(%TABDestTagging = 'File FIELD'), CLEAR
  147.     #PROMPT ('&Field to Hold Tags', FIELD(%TABFile2Use)), %TABDestTagField, REQ
  148.   #ENDBOXED
  149. #ENDBOXED
  150. #!
  151. #!
  152. #LOCALDATA
  153. TABShort               SHORT          !  Multi purpose SHORT variable
  154. TABLong                LONG           !  Multi purpose LONG variable
  155. #ENDLOCALDATA
  156. #!
  157. #ATSTART
  158. #DECLARE(%TABOrigUsingFile)
  159. #DECLARE(%TABDestUsingFile)
  160. #DECLARE(%TABCopyEquates)
  161. #IF (%TABOrigTagging = 'To a File')
  162.    #IF(%TABOrigPosition = 'Pointer')
  163. #SET(%TABOrigUsingFile, 5)
  164.    #ELSE
  165. #SET(%TABOrigUsingFile, 9)
  166.    #ENDIF
  167. #ELSIF (%TABOrigTagging = 'To a Memory Queue')
  168.    #IF(%TABOrigPosition = 'Pointer')
  169. #SET(%TABOrigUsingFile, 6)
  170.    #ELSE
  171. #SET(%TABOrigUsingFile, 10)
  172.    #ENDIF
  173. #ELSIF (%TABOrigTagging = 'File FIELD')
  174. #SET(%TABOrigUsingFile, 16)
  175. #ENDIF
  176. #IF (%TABDestTagging = 'To a File')
  177.    #IF(%TABDestPosition = 'Pointer')
  178. #SET(%TABDestUsingFile, 5)
  179.    #ELSE
  180. #SET(%TABDestUsingFile, 9)
  181.    #ENDIF
  182. #ELSIF (%TABDestTagging = 'To a Memory Queue')
  183.    #IF(%TABDestPosition = 'Pointer')
  184. #SET(%TABDestUsingFile, 6)
  185.    #ELSE
  186. #SET(%TABDestUsingFile, 10)
  187.    #ENDIF
  188. #ELSIF (%TABDestTagging = 'File FIELD')
  189. #SET(%TABDestUsingFile, 16)
  190. #ENDIF
  191. #IF(~%TABOrigUserID)
  192.    #SET(%TABOrigUserID, '0')
  193. #ENDIF
  194. #IF(~%TABDestUserID)
  195.    #SET(%TABDestUserID, '0')
  196. #ENDIF
  197.   #DECLARE(%TABFieldType)
  198.   #DECLARE(%TABIsString)
  199.   #IF (%TABOrigTagging = 'File FIELD')
  200.      #DECLARE(%TABOrigIsString)
  201.      #FIND(%Field,%TABOrigTagField)
  202.      #INSERT(%TABCheckIfString,%FieldType,%TABIsString)
  203.      #SET(%TABOrigIsString, %TABIsString)
  204.   #ENDIF
  205.   #IF (%TABDestTagging = 'File FIELD')
  206.      #DECLARE(%TABDestIsString)
  207.      #FIND(%Field,%TABDestTagField)
  208.      #INSERT(%TABCheckIfString,%FieldType,%TABIsString)
  209.      #SET(%TABDestIsString, %TABIsString)
  210.   #ENDIF
  211. #ENDAT
  212. #!
  213. #AT (%DataSectionBeforeWindow), WHERE(%TABCopyEquates = %Null)
  214. ! Copy Tags Function codes...
  215. eCopyTags          EQUATE(2)   #<! Copy Tags
  216.     #SET(%TABCopyEquates, %True)
  217. #ENDAT
  218. #!
  219. #!
  220. #!-----------------------------------
  221. #IF(%ControlEvent='Accepted')
  222. #!-----------------------------------
  223. #!
  224. #!--------- #! If neither is to a File Field...
  225. #IF(%TABOrigUsingFile <> 16 AND %TABDestUsingFile <> 16)
  226. #!---------
  227. #!
  228.   #CASE(%TABEraseTags)
  229.   #OF('Yes')
  230. ClearTags(%TABDestUsingFile, %TABDestUserID, %TABDestTagSet)
  231.   #OF('No')
  232.   #OF('Ask User')
  233. IF Tags(%TABDestUsingFile, %TABDestUserID, %TABDestTagSet)
  234.    IF MESSAGE('%TABTagAskQuestion','Erase Destination Tags?', %TABTagAskICON, Button:Yes+Button:No, BUTTON:No,0) = Button:Yes
  235.        ClearTags(%TABDestUsingFile, %TABDestUserID, %TABDestTagSet)
  236. .  .
  237.   #ENDCASE
  238. TABLong = ProcessTags(eCopyTags, %TABOrigUsingFile, %TABOrigUserID, %TABOrigTagSet, %TABDestUsingFile, %TABDestUserID, %TABDestTagSet, %TABFile2Use)
  239. #!
  240. #!----------
  241. #ELSIF (%TABOrigUsingFile = 16 AND %TABDestUsingFile <> 16)
  242. #!----------
  243. #!
  244.   #CASE(%TABEraseTags)
  245.   #OF('Yes')
  246. ClearTags(%TABDestUsingFile, %TABDestUserID, %TABDestTagSet)
  247.   #OF('No')
  248.   #OF('Ask User')
  249. IF Tags(%TABDestUsingFile, %TABDestUserID, %TABDestTagSet)
  250.    IF MESSAGE('%TABTagAskQuestion','Erase Destination Tags?', %TABTagAskICON, Button:Yes+Button:No, BUTTON:No,0) = Button:Yes
  251.        ClearTags(%TABDestUsingFile, %TABDestUserID, %TABDestTagSet)
  252. .  .
  253.   #ENDCASE
  254. SET(%TABFile2Use)
  255. LOOP
  256.    NEXT(%TABFile2Use)
  257.    IF ERRORCODE() then BREAK.   ! EOF()
  258.    IF ~%TABOrigTagField THEN CYCLE. ! Cycle those that are not tagged...
  259.      #IF(%TABDestPosition = 'Pointer')
  260.    SetTag(%TABDestUsingFile, %TABDestUserID, %TABDestTagSet, POINTER(%TABFile2Use), 1)
  261.      #ELSE
  262.    SetTagPos(%TABDestUsingFile, %TABDestUserID, %TABDestTagSet, POSITION(%TABFile2Use), 1)
  263.      #ENDIF
  264. .
  265. #!
  266. #!-------- #! Destination is to a File Field
  267. #ELSIF (%TABOrigUsingFile <> 16 AND %TABDestUsingFile = 16)
  268. #!---------
  269. #!
  270.   #CASE(%TABEraseTags)
  271.   #OF('Yes')
  272. SET(%TABFile2Use)
  273. LOOP
  274.    NEXT(%TABFile2Use)
  275.    IF ERRORCODE() then BREAK.        #<! EOF()
  276.    IF ~%TABDestTagField THEN CYCLE.  #<! Cycle those that are not tagged...
  277.      #IF(%TABDestIsString)
  278.    %TABDestTagField = ''
  279.      #ELSE
  280.    %TABDestTagField = 0
  281.      #ENDIF
  282.    PUT(%TABFile2Use)
  283. .
  284.   #OF('No')
  285.   #OF('Ask User')
  286. TABShort = FALSE
  287. SET(%TABFile2Use)
  288. LOOP
  289.    NEXT(%TABFile2Use)
  290.    IF ERRORCODE() then BREAK.       #<! EOF()
  291.    IF %TABDestTagField
  292.       TABShort = TRUE
  293.       BREAK
  294. .  .
  295. IF TABShort
  296.    IF MESSAGE('%TABTagAskQuestion','Erase Destination Tags?', %TABTagAskICON, Button:Yes+Button:No, BUTTON:No,0) = Button:Yes
  297.       SET(%TABFile2Use)
  298.       LOOP
  299.          NEXT(%TABFile2Use)
  300.          IF ERRORCODE() then BREAK.       #<! EOF()
  301.          IF ~%TABDestTagField THEN CYCLE. #<! Cycle those that are not tagged...
  302.            #IF(%TABDestIsString)
  303.          %TABDestTagField = ''
  304.            #ELSE
  305.          %TABDestTagField = 0
  306.            #ENDIF
  307.          PUT(%TABFile2Use)
  308.       .
  309. .  .
  310.   #ENDCASE
  311. #IF (%TABOrigTagging = 'To a File')
  312.    #IF(%TABOrigPosition = 'Pointer')
  313. CLEAR(Tag:RECORD)
  314. Tag:UserID    = %TABOrigUserID
  315. Tag:TagSetNo  = %TABOrigTagSet
  316. SET(Tag:By_FilePTR,Tag:By_FilePTR)
  317. LOOP
  318.    NEXT(TagFILE)
  319.    IF ERRORCODE() then BREAK.   ! EOF()
  320.    IF Tag:UserID <> UserID     OR  Tag:TagSetNo <> TagSetNo then BREAK.
  321.    GET(%TABFile2Use, TAG:FilePtr)
  322.    IF ERRORCODE() then CYCLE.   ! Record Not There Anymore
  323.      #IF(%TABDestIsString)
  324.    %TABDestTagField = 'Tagged'
  325.      #ELSE
  326.    %TABDestTagField = 1
  327.      #ENDIF
  328.    PUT(%TABFile2Use)
  329. .
  330.    #!
  331.    #ELSE
  332.    #!
  333. CLEAR(TaP:RECORD)
  334. TaP:UserID    = %TABUserID
  335. TaP:TagSetNo  = %TABTagSet
  336. SET(TaP:By_FilePTR,TaP:By_FilePTR)
  337. LOOP
  338.    NEXT(TagFILEPOS)
  339.    IF ERRORCODE() then BREAK.   ! EOF()
  340.    IF TaP:UserID <> UserID     OR  TaP:TagSetNo <> TagSetNo then BREAK.
  341.    REGET(%TABFile2Use, TaP:FilePtr)
  342.    IF ERRORCODE() then CYCLE.   ! Record Not There Anymore
  343.      #IF(%TABDestIsString)
  344.    %TABDestTagField = 'Tagged'
  345.      #ELSE
  346.    %TABDestTagField = 1
  347.      #ENDIF
  348.    PUT(%TABFile2Use)
  349. .
  350.    #!
  351.    #ENDIF
  352.    #!
  353. #ELSIF (%TABOrigTagging = 'To a Memory Queue')
  354.    #IF(%TABOrigPosition = 'Pointer')
  355. #! eExternalProcess = 3
  356. TABLong = 1            #<! Set to start processing...
  357. LOOP
  358.    IF ~ProcessTags(3, %TABOrigUsingFile, %TABOrigUserID, %TABOrigTagSet,TABLong,,,%TABFile2Use) THEN BREAK.
  359.      #IF(%TABDestIsString)
  360.    %TABDestTagField = 'Tagged'   #<! Tag the Tag Field on the current record.
  361.      #ELSE
  362.    %TABDestTagField = 1          #<! Tag the Tag Field on the current record.
  363.      #ENDIF
  364.    PUT(%TABFile2Use)
  365.    TABLong = 0         #<! turn starting flag OFF
  366. .
  367.    #ELSE
  368. #! eExternalProcess = 3
  369. TABLong = 1            #<! Set to start processing...
  370. LOOP
  371.    IF ~ProcessTags(3, %TABOrigUsingFile, %TABOrigUserID, %TABOrigTagSet,TABLong,,,%TABFile2Use) THEN BREAK.
  372.      #IF(%TABDestIsString)
  373.    %TABDestTagField = 'Tagged'     #<! Tag the Tag Field on the current record.
  374.      #ELSE
  375.    %TABDestTagField = 1            #<! Tag the Tag Field on the current record.
  376.      #ENDIF
  377.    PUT(%TABFile2Use)
  378.    TABLong = 0         #<! turn starting flag OFF
  379. .
  380.    #ENDIF    #! Pointer or Position
  381. #ENDIF       #! File or Queue
  382. #!
  383. #!----------#! Original and Destination are File Field
  384. #ELSIF (%TABOrigUsingFile = 16 AND %TABDestUsingFile = 16)
  385. #!----------
  386. #!
  387.   #CASE(%TABEraseTags)
  388.   #OF('Yes')
  389. SET(%TABFile2Use)
  390. LOOP
  391.    NEXT(%TABFile2Use)
  392.    IF ERRORCODE() then BREAK.   ! EOF()
  393.    IF ~%TABDestTagField THEN CYCLE. ! Cycle those that are not tagged...
  394.      #IF(%TABDestIsString)
  395.    %TABDestTagField = ''
  396.      #ELSE
  397.    %TABDestTagField = 0
  398.      #ENDIF
  399.    PUT(%TABFile2Use)
  400. .
  401.   #OF('No')
  402.   #OF('Ask User')
  403. TABShort = FALSE
  404. SET(%TABFile2Use)
  405. LOOP
  406.    NEXT(%TABFile2Use)
  407.    IF ERRORCODE() then BREAK.       #<! EOF()
  408.    IF %TABDestTagField
  409.       TABShort = TRUE
  410.       BREAK
  411. .  .
  412. IF TABShort
  413.    IF MESSAGE('%TABTagAskQuestion','Erase Destination Tags?', %TABTagAskICON, Button:Yes+Button:No, BUTTON:No,0) = Button:Yes
  414.       SET(%TABFile2Use)
  415.       LOOP
  416.          NEXT(%TABFile2Use)
  417.          IF ERRORCODE() then BREAK.   ! EOF()
  418.          IF ~%TABDestTagField THEN CYCLE. ! Cycle those that are not tagged...
  419.            #IF(%TABDestIsString)
  420.          %TABDestTagField = ''
  421.            #ELSE
  422.          %TABDestTagField = 0
  423.            #ENDIF
  424.          PUT(%TABFile2Use)
  425.       .
  426. .  .
  427.   #ENDCASE
  428. SET(%TABFile2Use)
  429. LOOP
  430.    NEXT(%TABFile2Use)
  431.    IF ERRORCODE() then BREAK.   ! EOF()
  432.    IF ~%TABOrigTagField THEN CYCLE. ! Cycle those that are not tagged...
  433.      #IF(%TABDestIsString)
  434.    %TABDestTagField = 'Tagged'
  435.      #ELSE
  436.    %TABDestTagField = 1
  437.      #ENDIF
  438.    PUT(%TABFile2Use)
  439. .
  440. #!
  441. #!
  442. #ENDIF
  443. #!
  444. #!
  445. #!-----------------------------------
  446.        #ELSE
  447. #!-----------------------------------
  448.   #ERROR('Copy Tags Code Template must be used for Accepted Control Events!')
  449. #ENDIF
  450. #!
  451. #!
  452. #!
  453. #!**************************************************************************
  454. #!  Name ............: TTagOneRecord
  455. #!  Description......: This Code Template Tags, or Flips the Current Record
  456. #!**************************************************************************
  457. #CODE(TTagOneRecord,'TABOGA-Tags or Flips the Current Record')
  458. #!
  459. #DISPLAY('This Code Template Tags or Flips the Current Record')
  460. #DISPLAY('')
  461. #PROMPT ('Tagging Mode:', DROP('Tag Only|Flip Record')),%TABTagMode,DEFAULT('Tag Only')
  462. #DISPLAY('')
  463. #PROMPT ('File Being Used:', FILE),%TABFile2Use,REQ
  464. #PROMPT ('&Tagging To:', DROP ('To a File|To a Memory Queue|File FIELD')), %TABTagging, DEFAULT('To a File')
  465. #BOXED(''), AT( ,64), WHERE(%TABTagging <> 'File FIELD'), CLEAR
  466.     #PROMPT ('File Positio&n Type:', DROP ('Pointer|Position')), %TABPosition, DEFAULT('Pointer')
  467.     #PROMPT ('Ta&g Set No. :', @n04), %TABTagSet,REQ
  468.     #DISPLAY('Enter UserID Number, or the variable to use as')
  469.     #DISPLAY('UserID, or leave it Blank for a single User')
  470.     #PROMPT ('User &ID     :', @S60), %TABUserID
  471.     #PROMPT ('User Provided Order?',CHECK),%TABTagProvideOrder
  472.     #ENABLE (%TABTagProvideOrder),CLEAR
  473.        #PROMPT('&Order to Use',@s80),%TABTagOrder
  474.     #ENDENABLE
  475. #ENDBOXED
  476. #BOXED(''), AT( ,64), WHERE(%TABTagging = 'File FIELD'), CLEAR
  477.     #PROMPT ('&Field to Hold Tags', FIELD(%Primary)), %TABTagField, REQ
  478. #ENDBOXED
  479. #DISPLAY('')
  480. #!
  481. #ATSTART
  482. #DECLARE(%TABTagModeCode)
  483. #IF(%TABTagMode = 'Tag Only')
  484.    #SET(%TABTagModeCode , 1)
  485. #ELSE
  486.    #SET(%TABTagModeCode , 4)
  487. #ENDIF
  488. #DECLARE(%TABUsingFile)
  489. #IF (%TABTagging = 'To a File')
  490.    #IF(%TABPosition = 'Pointer')
  491. #SET(%TABUsingFile, 5)
  492.    #ELSE
  493. #SET(%TABUsingFile, 9)
  494.    #ENDIF
  495. #ELSIF (%TABTagging = 'To a Memory Queue')
  496.    #IF(%TABPosition = 'Pointer')
  497. #SET(%TABUsingFile, 6)
  498.    #ELSE
  499. #SET(%TABUsingFile, 10)
  500.    #ENDIF
  501. #ELSIF (%TABTagging = 'File FIELD')
  502. #SET(%TABUsingFile, 16)
  503. #ENDIF
  504. #IF(~%TABUserID)
  505.    #SET(%TABUserID, '0')
  506. #ENDIF
  507.   #DECLARE(%TABFieldType)
  508.   #DECLARE(%TABIsString)
  509.   #IF (%TABTagging = 'File FIELD')
  510.      #FIND(%Field,%TABTagField)
  511.      #INSERT(%TABCheckIfString,%FieldType,%TABIsString)
  512.   #ENDIF
  513. #ENDAT
  514. #!
  515. #!  eTagRecord   1
  516. #!  eUnTagRecord 2
  517. #!  eFlip        4
  518. #!
  519. #!
  520.       #IF(%TABTagging <> 'File FIELD')
  521. #IF(%TABPosition = 'Pointer')
  522.    #IF(%TABTagProvideOrder)
  523. SetTag(%TABUsingFile, %TABUserID, %TABTagSet, POINTER(%TABFile2Use), %TABTagModeCode, %TABTagOrder)
  524.    #ELSE
  525. SetTag(%TABUsingFile, %TABUserID, %TABTagSet, POINTER(%TABFile2Use), %TABTagModeCode)
  526.    #ENDIF
  527. #ELSE
  528.    #IF(%TABTagProvideOrder)
  529. SetTagPos(%TABUsingFile, %TABUserID, %TABTagSet, POSITION(%TABFile2Use), %TABTagModeCode, %TABTagOrder)
  530.    #ELSE
  531. SetTagPos(%TABUsingFile, %TABUserID, %TABTagSet, POSITION(%TABFile2Use), %TABTagModeCode)
  532.    #ENDIF
  533. #ENDIF
  534.       #ELSE   #! IF %TABTagging = 'File FIELD'
  535. #IF(%TABTagMode = 'Tag Only')
  536.    #IF (%TABIsString)
  537. %TABTagField = 'Tagged'
  538.    #ELSE
  539. %TABTagField = 1
  540.    #ENDIF
  541. #ELSE     #! Allow flips...
  542.    #IF (%TABIsString)
  543. IF %TABTagField
  544.    %TABTagField = ''
  545. ELSE
  546.    %TABTagField = 'Tagged'
  547. .
  548.    #ELSE
  549. %TABTagField = BXOR(%TABTagField,1)
  550.    #ENDIF
  551. #ENDIF
  552. PUT(%TABFile2Use)     #<! Save the changed record
  553.       #ENDIF   #! IF TABTagging = <> 'File FIELD'
  554. #!
  555. #!
  556. #!**************************************************************************
  557. #!  Name ............: TUnTagOneRecord
  558. #!  Description......: This Code Template untags the current record
  559. #!**************************************************************************
  560. #CODE(TUnTagOneRecord,'TABOGA-UnTags the Current Record')
  561. #!
  562. #DISPLAY('This Code Template UnTags the Current Record')
  563. #DISPLAY('')
  564. #PROMPT ('File Being Used:', FILE),%TABFile2Use,REQ
  565. #PROMPT ('&Tagging To:', DROP ('To a File|To a Memory Queue|File FIELD')), %TABTagging, DEFAULT('To a File')
  566. #BOXED(''), AT( ,48), WHERE(%TABTagging <> 'File FIELD'), CLEAR
  567.     #PROMPT ('File Positio&n Type:', DROP ('Pointer|Position')), %TABPosition, DEFAULT('Pointer')
  568.     #PROMPT ('Ta&g Set No. :', @n04), %TABTagSet,REQ
  569.     #DISPLAY('Enter UserID Number, or the variable to use as')
  570.     #DISPLAY('UserID, or leave it Blank for a single User')
  571.     #PROMPT ('User &ID     :', @S60), %TABUserID
  572. #ENDBOXED
  573. #BOXED(''), AT( ,48), WHERE(%TABTagging = 'File FIELD'), CLEAR
  574.     #PROMPT ('&Field to Hold Tags', FIELD(%Primary)), %TABTagField, REQ
  575. #ENDBOXED
  576. #DISPLAY('')
  577. #!
  578. #!
  579. #ATSTART
  580. #DECLARE(%TABTagModeCode)
  581. #SET(%TABTagModeCode , 2)
  582. #DECLARE(%TABUsingFile)
  583. #IF (%TABTagging = 'To a File')
  584.    #IF(%TABPosition = 'Pointer')
  585. #SET(%TABUsingFile, 5)
  586.    #ELSE
  587. #SET(%TABUsingFile, 9)
  588.    #ENDIF
  589. #ELSIF (%TABTagging = 'To a Memory Queue')
  590.    #IF(%TABPosition = 'Pointer')
  591. #SET(%TABUsingFile, 6)
  592.    #ELSE
  593. #SET(%TABUsingFile, 10)
  594.    #ENDIF
  595. #ENDIF
  596. #IF(~%TABUserID)
  597.    #SET(%TABUserID, '0')
  598. #ENDIF
  599.   #IF (%TABTagging = 'File FIELD')
  600.      #FIND(%Field,%TABTagField)
  601.      #INSERT(%TABCheckIfString,%FieldType,%TABIsString)
  602.   #ENDIF
  603. #ENDAT
  604. #!
  605. #!  eTagRecord   1
  606. #!  eUnTagRecord 2
  607. #!  eFlip        4
  608. #!
  609. #!
  610. #IF(%TABTagging <> 'File FIELD')
  611.    #IF(%TABPosition = 'Pointer')
  612. SetTag(%TABUsingFile, %TABUserID, %TABTagSet, POINTER(%TABFile2Use), %TABTagModeCode)
  613.    #ELSE
  614. SetTagPos(%TABUsingFile, %TABUserID, %TABTagSet, POSITION(%TABFile2Use), %TABTagModeCode)
  615.    #ENDIF
  616. #ELSIF (%TABTagging = 'File FIELD')
  617.    #IF (%TABIsString)
  618. %TABTagField = ''
  619.    #ELSE
  620. %TABTagField = 0
  621.    #ENDIF
  622. PUT(%TABFile2Use)
  623. #ENDIF
  624. #!
  625. #!
  626. #!
  627. #!
  628. #!**************************************************************************
  629. #!  Name ............: TClearTags
  630. #!  Description......: This Code Template Clears all the given TagSet tags
  631. #!**************************************************************************
  632. #CODE(TClearTags,'TABOGA-Clears all the Given TagSet tags')
  633. #!
  634. #DISPLAY('This Code Template Clears all the Given TagSet Tags')
  635. #DISPLAY('')
  636. #PROMPT ('&Tagging To:', DROP ('To a File|To a Memory Queue|File FIELD')), %TABTagging, DEFAULT('To a File')
  637. #BOXED(''), AT( ,40), WHERE(%TABTagging <> 'File FIELD'), CLEAR
  638.     #PROMPT ('File Positio&n Type:', DROP ('Pointer|Position')), %TABPosition, DEFAULT('Pointer')
  639.     #PROMPT ('Ta&g Set No. :', @n04), %TABTagSet,REQ
  640.     #DISPLAY('Enter UserID Number, or the variable to use as')
  641.     #DISPLAY('UserID, or leave it Blank for a single User')
  642.     #PROMPT ('User &ID     :', @S60), %TABUserID
  643. #ENDBOXED
  644. #BOXED(''), AT( ,40), WHERE(%TABTagging = 'File FIELD'), CLEAR
  645.     #PROMPT ('&Field to Hold Tags', FIELD(%Primary)), %TABTagField, REQ
  646.     #PROMPT ('Fil&e to Use', FILE), %TABFile2Use, REQ
  647. #ENDBOXED
  648. #DISPLAY('')
  649. #!
  650. #!
  651. #ATSTART
  652. #DECLARE(%TABUsingFile)
  653. #IF (%TABTagging = 'To a File')
  654.    #IF(%TABPosition = 'Pointer')
  655. #SET(%TABUsingFile, 5)
  656.    #ELSE
  657. #SET(%TABUsingFile, 9)
  658.    #ENDIF
  659. #ELSIF (%TABTagging = 'To a Memory Queue')
  660.    #IF(%TABPosition = 'Pointer')
  661. #SET(%TABUsingFile, 6)
  662.    #ELSE
  663. #SET(%TABUsingFile, 10)
  664.    #ENDIF
  665. #ENDIF
  666. #IF(~%TABUserID)
  667.    #SET(%TABUserID, '0')
  668. #ENDIF
  669.   #DECLARE(%TABFieldType)
  670.   #DECLARE(%TABIsString)
  671.   #IF (%TABTagging = 'File FIELD')
  672.      #FIND(%Field,%TABTagField)
  673.      #INSERT(%TABCheckIfString,%FieldType,%TABIsString)
  674.   #ENDIF
  675. #ENDAT
  676. #!
  677. #!
  678. #!
  679. #IF(%TABTagging <> 'File FIELD')
  680. ClearTags(%TABUsingFile, %TABUserID, %TABTagSet)
  681. #ELSE
  682. SET(%TABFile2Use)
  683. LOOP
  684.    NEXT(%TABFile2Use)
  685.    IF ERRORCODE() THEN BREAK.
  686.    IF %TABTagField
  687.        #IF (%TABIsString)
  688.       %TABTagField = ''
  689.        #ELSE
  690.       %TABTagField = 0
  691.        #ENDIF
  692.       PUT(%TABFile2Use)
  693.    .
  694. .
  695. #ENDIF
  696. #!
  697. #!
  698. #!**************************************************************************
  699. #!  Name ............: TProcessTags
  700. #!  Description......: This Code Template sets up a Loop that will go
  701. #!                     through all the tags, and allow for some processing.
  702. #!**************************************************************************
  703. #CODE(TProcessTags,'TABOGA-Go Through All Tags for the Given TagSet')
  704. #!
  705. #DISPLAY('This Code Template Goes Through all the given TagSet Tags')
  706. #DISPLAY('   If you need to perform some CODE for each of the Tags,')
  707. #DISPLAY('   set this code up in the two prompts provided for this.')
  708. #DISPLAY('')
  709. #PROMPT ('File Being Used:', FILE),%TABFile2Use,REQ
  710. #PROMPT ('&Tagging To:', DROP ('To a File|To a Memory Queue|File FIELD')), %TABTagging, DEFAULT('To a File')
  711. #BOXED(''), AT( ,64), WHERE(%TABTagging <> 'File FIELD'), CLEAR
  712.     #PROMPT ('File Positio&n Type:', DROP ('Pointer|Position')), %TABPosition, DEFAULT('Pointer')
  713.     #PROMPT ('Ta&g Set No. :', @n04), %TABTagSet
  714.     #ENABLE(~%TABTagSet),CLEAR
  715.       #PROMPT('Variable as Tag Set:',@S25),%TABTagSetVar
  716.     #ENDENABLE
  717.     #DISPLAY('Enter UserID Number, or the variable to use as')
  718.     #DISPLAY('UserID, or leave it Blank for a single User')
  719.     #PROMPT ('User &ID     :', @S60), %TABUserID
  720. #ENDBOXED
  721. #BOXED(''), AT( ,64), WHERE(%TABTagging = 'File FIELD'), CLEAR
  722.     #PROMPT ('&Field to Hold Tags', FIELD(%Primary)), %TABTagField, REQ
  723. #ENDBOXED
  724. #DISPLAY('Use the following two Prompts to enter the Code'),AT(10,,175)
  725. #DISPLAY('to execute for Processing Tagged Records...:'),AT(10,,175)
  726. #PROMPT ('', @s255),%ProcessTaggedRecords1,AT(10,,250)
  727. #PROMPT ('', @s255),%ProcessTaggedRecords2,AT(10,,250)
  728. #DISPLAY('')
  729. #DISPLAY('')
  730. #!
  731. #!
  732. #LOCALDATA
  733. TABLong                LONG           !  Multi purpose LONG variable
  734. #ENDLOCALDATA
  735. #!
  736. #ATSTART
  737. #DECLARE(%TABTagSetNo)
  738. #IF(~%TABUserID)
  739.    #SET(%TABUserID, '0')
  740. #ENDIF
  741. #IF(%TABTagSet)
  742.    #SET(%TABTagSetNo, %TABTagSet)
  743. #ELSE
  744.    #SET(%TABTagSetNo, %TABTagSetVar)
  745. #ENDIF
  746. #!
  747. #DECLARE(%TABUsingFile)
  748. #IF (%TABTagging = 'To a File')
  749.    #IF(%TABPosition = 'Pointer')
  750. #SET(%TABUsingFile, 5)
  751.    #ELSE
  752. #SET(%TABUsingFile, 9)
  753.    #ENDIF
  754. #ELSIF (%TABTagging = 'To a Memory Queue')
  755.    #IF(%TABPosition = 'Pointer')
  756. #SET(%TABUsingFile, 6)
  757.    #ELSE
  758. #SET(%TABUsingFile, 10)
  759.    #ENDIF
  760. #ENDIF
  761. #!
  762. #ENDAT
  763. #!
  764. #!
  765. #IF (%TABTagging = 'To a File')
  766.    #IF(%TABPosition = 'Pointer')
  767. CLEAR(Tag:RECORD)
  768. Tag:UserID    = %TABUserID
  769. Tag:TagSetNo  = %TABTagSetNo
  770. SET(Tag:By_FilePTR,Tag:By_FilePTR)
  771. LOOP
  772.    NEXT(TagFILE)
  773.    IF ERRORCODE() then BREAK.   ! EOF()
  774.    IF Tag:UserID <> %TABUserID     OR  Tag:TagSetNo <> %TABTagSetNo then BREAK.
  775.    GET(%TABFile2Use, TAG:FilePtr)
  776.    IF ERRORCODE() then CYCLE.   ! Record Not There Anymore
  777.      #IF(%ProcessTaggedRecords1)
  778.    %ProcessTaggedRecords1
  779.      #ENDIF
  780.      #IF(%ProcessTaggedRecords2)
  781.    %ProcessTaggedRecords2
  782.      #ENDIF
  783. .
  784.    #!
  785.    #ELSE
  786.    #!
  787. CLEAR(TaP:RECORD)
  788. TaP:UserID    = %TABUserID
  789. TaP:TagSetNo  = %TABTagSetNo
  790. SET(TaP:By_FilePTR,TaP:By_FilePTR)
  791. LOOP
  792.    NEXT(TagFILEPOS)
  793.    IF ERRORCODE() then BREAK.   ! EOF()
  794.    IF TaP:UserID <> %TABUserID     OR  TaP:TagSetNo <> %TABTagSetNo then BREAK.
  795.    REGET(%TABFile2Use, TaP:FilePtr)
  796.    IF ERRORCODE() then CYCLE.   ! Record Not There Anymore
  797.      #IF(%ProcessTaggedRecords1)
  798.    %ProcessTaggedRecords1
  799.      #ENDIF
  800.      #IF(%ProcessTaggedRecords2)
  801.    %ProcessTaggedRecords2
  802.      #ENDIF
  803. .
  804.    #!
  805.    #ENDIF
  806.    #!
  807. #ELSIF (%TABTagging = 'To a Memory Queue')
  808.    #IF(%TABPosition = 'Pointer')
  809. #! eExternalProcess = 3
  810. TABLong = 1            #<! Set to start processing...
  811. LOOP
  812.    IF ~ProcessTags(3, %TABUsingFile, %TABUserID, %TABTagSet,TABLong,,,%TABFile2Use) THEN BREAK.
  813.       #IF(%ProcessTaggedRecords1)
  814.    %ProcessTaggedRecords1
  815.       #ENDIF
  816.       #IF(%ProcessTaggedRecords2)
  817.    %ProcessTaggedRecords2
  818.       #ENDIF
  819.    TABLong = 0         #<! turn starting flag OFF
  820. .
  821.    #ELSE
  822. #! eExternalProcess = 3
  823. TABLong = 1            #<! Set to start processing...
  824. LOOP
  825.    IF ~ProcessTags(3, %TABUsingFile, %TABUserID, %TABTagSet,TABLong,,,%TABFile2Use) THEN BREAK.
  826.      #IF(%ProcessTaggedRecords1)
  827.    %ProcessTaggedRecords1
  828.      #ENDIF
  829.      #IF(%ProcessTaggedRecords2)
  830.    %ProcessTaggedRecords2
  831.      #ENDIF
  832.    TABLong = 0         #<! turn starting flag OFF
  833. .
  834.    #ENDIF
  835. #ELSIF (%TABTagging = 'File FIELD')
  836. SET(%TABFile2Use)
  837. LOOP
  838.    NEXT(%TABFile2Use)
  839.    IF ERRORCODE() then BREAK.   ! EOF()
  840.    IF ~%TABTagField THEN CYCLE. ! Cycle those that are not tagged...
  841.      #IF(%ProcessTaggedRecords1)
  842.    %ProcessTaggedRecords1
  843.      #ENDIF
  844.      #IF(%ProcessTaggedRecords2)
  845.    %ProcessTaggedRecords2
  846.      #ENDIF
  847. .
  848. #ENDIF
  849. #!
  850. #!
  851. #!
  852.