home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / allbooks.sgm < prev    next >
Text File  |  1997-12-10  |  12MB  |  217,399 lines

  1. <RBW-DOC><!--
  2.  
  3.  
  4.  
  5.  
  6.  
  7. CONVERTING SOURCE FILE ../../sources/common/tab_list.mif
  8.  
  9.  
  10. --><B.BODY></B.BODY
  11. ><B.BODY></B.BODY
  12. ><B.BODY></B.BODY
  13. ><B.BODY></B.BODY
  14. ><B.BODY></B.BODY
  15. ><PRODUCT><PH.PRODUCT.HEAD>List of ObjectTeam Books</PH.PRODUCT.HEAD
  16. ><!--
  17.  
  18.  
  19.  
  20.  
  21.  
  22. CONVERTING SOURCE FILE ../../sources/common/copyrght.mif
  23.  
  24.  
  25. --><B.BODY></B.BODY
  26. ><B.BODY></B.BODY
  27. ><B.BODY></B.BODY
  28. ><B.BODY></B.BODY
  29. ><B.BODY></B.BODY
  30. ><COPYRIGHT><COPYRIGHT.BODY>Copyright ©1997 Cayenne Software, Inc. All rights reserved.</COPYRIGHT.BODY
  31. ><COPYRIGHT.BODY>Cayenne Software, Inc. </COPYRIGHT.BODY
  32. ><COPYRIGHT.BODY>14 Crosby Drive </COPYRIGHT.BODY
  33. ><COPYRIGHT.BODY>Bedford, MA 01730 </COPYRIGHT.BODY
  34. ><COPYRIGHT.BODY>The information in this document is subject to change without notice. Cayenne Software, Inc. makes no warranty of any kind regarding this material and assumes no responsibility for any errors that may appear in this document. </COPYRIGHT.BODY
  35. ><COPYRIGHT.BODY>Terrain, S&truehy;CASE, and BACHMAN are registered trademarks of Cayenne Software, Inc. </COPYRIGHT.BODY
  36. ><COPYRIGHT.BODY>Cayenne, Cayenne Software, Cayenne Software, Inc., the Cayenne logo, Cayenne 2000, Cayenne DB2 Catalog Extract, Cayenne/GroundWorks Capture, Cayenne/GroundWorks Link, Cayenne/Business Rules Capture, Cayenne/DDL Generator, Cayenne/Function Point Analyst, Cayenne/Generator, Cayenne/Production DBA, Cayenne/Reports, Cayenne/Shared Work Manager, GroundWorks, Serveyor, Terrain 100/O, Terrain 100/S, Terrain AppGen for PowerBuilder, Terrain for DB2, TerrainMap, Terrain.net, and PepperSeed are trademarks of Cayenne Software, Inc. </COPYRIGHT.BODY
  37. ><COPYRIGHT.BODY>Cadre, Cadre Technologies, Inc., CASEteam, CodeMap, Data Driven Re&truehy;Engineering, DB Data Analyzer, Design by Example, DocConnect, Ensemble, ObjectTeam, PathMap, SoftAnalyst, SymTrace, TeamWork, the TeamWorklogo, TeamWork/ACCESS, TeamWork/Ada, TeamWork/C Rev, TeamWork/C Source Builder, TeamWork/DocGen, TeamWork/DSE, TeamWork/FORTRAN Rev, TeamWork/IM, TeamWork/IPSE_toolkit, TeamWork/RqT, TeamWork/RT, TeamWork/SA, TeamWork/SD, TeamWork/SIM, TeamWork/TestCase, and Unified CASE are registered trademarks of Cadre Technologies Inc., a wholly owned subsidiary of Cayenne Software, Inc. </COPYRIGHT.BODY
  38. ><COPYRIGHT.BODY>VantageTeam is a trademark of Cadre Technologies Inc., a wholly owned subsidiary of Cayenne Software, Inc. </COPYRIGHT.BODY
  39. ><COPYRIGHT.BODY>Any other company and product names used herein may be the trademarks or registered trademarks of their respective companies. </COPYRIGHT.BODY
  40. ><COPYRIGHT.BODY>RESTRICTED RIGHTS: Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFAR 252.227&truehy;7013 (48 CFR). Contractor/Manufacturer is Cayenne Software, Inc., 14 Crosby Drive, Bedford, Massachusetts 01730. </COPYRIGHT.BODY
  41. ><COPYRIGHT.BODY>NOTICE: Notwithstanding any other lease or license agreement that may pertain to or accompany the delivery of this restricted computer software, the rights of the Government regarding use, reproduction, and disclosure are as set forth in subparagraph (c)(1) and (2) of Commercial Computer Software&truehy;Restricted Rights clause at FAR 52.227&truehy;19.</COPYRIGHT.BODY
  42. ></COPYRIGHT
  43. ><!--
  44.  
  45.  
  46.  
  47.  
  48.  
  49. CONVERTING SOURCE FILE ../../sources/common/booklist.mif
  50.  
  51.  
  52. --><B.BODY></B.BODY
  53. ><B.BODY></B.BODY
  54. ><B.BODY></B.BODY
  55. ><B.BODY></B.BODY
  56. ><B.BODY></B.BODY
  57. ><SECTION><S.SECTION.HEAD>List of Book Titles</S.SECTION.HEAD
  58. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59. >Introduction</L.LABEL
  60. ><B.BODY>The collection of ObjectTeam online books is divided into seven sets. When you open the ObjectTeam online book collection, DynaText displays the seven set titles. When you open a set, DynaText displays all the books in that set.</B.BODY
  61. ><B.BODY>Below is a brief description of the books that appear in each set.</B.BODY
  62. ></LABEL
  63. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64. >Installation Set</L.LABEL
  65. ><B.BODY>These books are most useful to the ObjectTeam administrator. </B.BODY
  66. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67. ></RBW-AUTOGEN
  68. ></RBW-MARKER
  69. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Installation Guide</CX5FX5FFILE.NAME
  70. >. Describes how to install the ObjectTeam software on both server and client computers.</RBW-PARABODY
  71. ></LB.LIST.BULLET
  72. ></LABEL
  73. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74. >System Administrator’s Set</L.LABEL
  75. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76. ></RBW-AUTOGEN
  77. ></RBW-MARKER
  78. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam System Administrator’s Guide</CX5FX5FFILE.NAME
  79. >. Describes the architecture of the ObjectTeam product; the backup, restore and conversion tools provided with the product; and how to maintain the ObjectTeam environment.</RBW-PARABODY
  80. ></LB.LIST.BULLET
  81. ></LABEL
  82. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83. >User Set</L.LABEL
  84. ><B.BODY>These books are intended for all ObjectTeam users.</B.BODY
  85. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86. ></RBW-AUTOGEN
  87. ></RBW-MARKER
  88. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Getting Started</CX5FX5FFILE.NAME
  89. >. Describes the primary features of ObjectTeam and provides a brief tutorial of the product. If you are a new user, this book is strongly recommended as your starting point.</RBW-PARABODY
  90. ></LB.LIST.BULLET
  91. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92. ></RBW-AUTOGEN
  93. ></RBW-MARKER
  94. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Modeling Guide</CX5FX5FFILE.NAME
  95. >. Describes the core features of the product: the ObjectTeam Browser, diagram editors, Check utility, Reports, and Class Browser.</RBW-PARABODY
  96. ></LB.LIST.BULLET
  97. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  98. ></RBW-AUTOGEN
  99. ></RBW-MARKER
  100. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Project Management Guide</CX5FX5FFILE.NAME
  101. >. Describes the project management features of the product: version and configuration management, user environment settings, use of corporate groups, and access control.</RBW-PARABODY
  102. ></LB.LIST.BULLET
  103. ></LABEL
  104. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  105. >Document Generation Set</L.LABEL
  106. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  107. ></RBW-AUTOGEN
  108. ></RBW-MARKER
  109. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Document Generation Guide</CX5FX5FFILE.NAME
  110. >. Describes how to use the document generation tools to generate complete, formatted project documentation.</RBW-PARABODY
  111. ></LB.LIST.BULLET
  112. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  113. ></RBW-AUTOGEN
  114. ></RBW-MARKER
  115. ><RBW-PARABODY><CX5FX5FFILE.NAME>DocExpress User Guide</CX5FX5FFILE.NAME
  116. >. Describes how to use DocExpress.</RBW-PARABODY
  117. ></LB.LIST.BULLET
  118. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  119. ></RBW-AUTOGEN
  120. ></RBW-MARKER
  121. ><RBW-PARABODY><CX5FX5FFILE.NAME>DocExpress Utilities Guide</CX5FX5FFILE.NAME
  122. >. Describes the DocExpress utilities.</RBW-PARABODY
  123. ></LB.LIST.BULLET
  124. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  125. ></RBW-AUTOGEN
  126. ></RBW-MARKER
  127. ><RBW-PARABODY><CX5FX5FFILE.NAME>DocIt User Guide</CX5FX5FFILE.NAME
  128. >. Describes how to use DocIt.</RBW-PARABODY
  129. ></LB.LIST.BULLET
  130. ></LABEL
  131. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  132. >Code Generation Set</L.LABEL
  133. ><B.BODY>These books are intended for ObjectTeam users who are generating code. Use the book appropriate for your target language.</B.BODY
  134. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  135. ></RBW-AUTOGEN
  136. ></RBW-MARKER
  137. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Ada Professional Developer’s Toolkit</CX5FX5FFILE.NAME
  138. > </RBW-PARABODY
  139. ></LB.LIST.BULLET
  140. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  141. ></RBW-AUTOGEN
  142. ></RBW-MARKER
  143. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for C++</CX5FX5FFILE.NAME
  144. > </RBW-PARABODY
  145. ></LB.LIST.BULLET
  146. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  147. ></RBW-AUTOGEN
  148. ></RBW-MARKER
  149. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for CORBA IDL</CX5FX5FFILE.NAME
  150. > </RBW-PARABODY
  151. ></LB.LIST.BULLET
  152. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  153. ></RBW-AUTOGEN
  154. ></RBW-MARKER
  155. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for Delphi</CX5FX5FFILE.NAME
  156. > </RBW-PARABODY
  157. ></LB.LIST.BULLET
  158. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  159. ></RBW-AUTOGEN
  160. ></RBW-MARKER
  161. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for Forté</CX5FX5FFILE.NAME
  162. > </RBW-PARABODY
  163. ></LB.LIST.BULLET
  164. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  165. ></RBW-AUTOGEN
  166. ></RBW-MARKER
  167. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for Java</CX5FX5FFILE.NAME
  168. > </RBW-PARABODY
  169. ></LB.LIST.BULLET
  170. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  171. ></RBW-AUTOGEN
  172. ></RBW-MARKER
  173. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for Informix New Era</CX5FX5FFILE.NAME
  174. > </RBW-PARABODY
  175. ></LB.LIST.BULLET
  176. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  177. ></RBW-AUTOGEN
  178. ></RBW-MARKER
  179. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for PowerBuilder</CX5FX5FFILE.NAME
  180. > </RBW-PARABODY
  181. ></LB.LIST.BULLET
  182. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  183. ></RBW-AUTOGEN
  184. ></RBW-MARKER
  185. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for Smalltalk</CX5FX5FFILE.NAME
  186. > </RBW-PARABODY
  187. ></LB.LIST.BULLET
  188. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  189. ></RBW-AUTOGEN
  190. ></RBW-MARKER
  191. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Code Generation Guide for Visual Basic</CX5FX5FFILE.NAME
  192. > </RBW-PARABODY
  193. ></LB.LIST.BULLET
  194. ></LABEL
  195. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  196. >Programmer’s Set</L.LABEL
  197. ><B.BODY>These books are intended for ObjectTeam users who are customizing the ObjectTeam product:</B.BODY
  198. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  199. ></RBW-AUTOGEN
  200. ></RBW-MARKER
  201. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Customization Guide.</CX5FX5FFILE.NAME
  202. > Describes how to use M4_ variables, customization files, and Tcl files to customize ObjectTeam.</RBW-PARABODY
  203. ></LB.LIST.BULLET
  204. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  205. ></RBW-AUTOGEN
  206. ></RBW-MARKER
  207. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Programming Interface Guide.</CX5FX5FFILE.NAME
  208. > Describes the interface of the Cayenne repository and the syntax of the object&truehy;oriented Tcl extensions used to access the repository.</RBW-PARABODY
  209. ></LB.LIST.BULLET
  210. ></LABEL
  211. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  212. >Integrations Set</L.LABEL
  213. ><B.BODY>These books are intended for users of ObjectTeam integrations. Use the book appropriate for your product.</B.BODY
  214. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  215. ></RBW-AUTOGEN
  216. ></RBW-MARKER
  217. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam RTM Integration Guide.</CX5FX5FFILE.NAME
  218. > Describes the integration of ObjectTeam with RTM, a requirements traceability management tool.</RBW-PARABODY
  219. ></LB.LIST.BULLET
  220. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  221. ></RBW-AUTOGEN
  222. ></RBW-MARKER
  223. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam DOORS Integration Guide.</CX5FX5FFILE.NAME
  224. > Describes the integration of ObjectTeam with DOORS, a requirements traceability management tool.</RBW-PARABODY
  225. ></LB.LIST.BULLET
  226. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  227. ></RBW-AUTOGEN
  228. ></RBW-MARKER
  229. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam ClearCase Integration Guide.</CX5FX5FFILE.NAME
  230. > Describes the integration of ObjectTeam with ClearCase, a version control management tool.</RBW-PARABODY
  231. ></LB.LIST.BULLET
  232. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  233. ></RBW-AUTOGEN
  234. ></RBW-MARKER
  235. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Continuus Integration Guide.</CX5FX5FFILE.NAME
  236. > Describes the integration of ObjectTeam with Continuus, a version control management tool.</RBW-PARABODY
  237. ></LB.LIST.BULLET
  238. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  239. ></RBW-AUTOGEN
  240. ></RBW-MARKER
  241. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam Razor Integration Guide.</CX5FX5FFILE.NAME
  242. > Describes the integration of ObjectTeam with Razor, a version control management tool.</RBW-PARABODY
  243. ></LB.LIST.BULLET
  244. ></LABEL
  245. ></SECTION
  246. ><SECTION><S.SECTION.HEAD>About the Documentation</S.SECTION.HEAD
  247. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  248. >Platform differences</L.LABEL
  249. ><B.BODY>Most ObjectTeam features are available on both UNIX and Microsoft Windows. Where a guide applies to both platforms, paths are represented in the Microsoft style, in which a backslash (<CX5FX5FPROCEDURE.NAME>\</CX5FX5FPROCEDURE.NAME
  250. >) separates individual directories. For instance:</B.BODY
  251. ><E.EXAMPLE><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  252. >\bin</E.EXAMPLE
  253. ><B.BODY>If you are working on a UNIX&truehy;based platform, replace all backslashes in paths with slash marks (/).</B.BODY
  254. ><B.BODY>The screen shots in this manual may have been taken on a different platform from the one you are using.</B.BODY
  255. ></LABEL
  256. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  257. >Typographical conventions</L.LABEL
  258. ><B.BODY>This manual uses the following typographical conventions:</B.BODY
  259. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="175p"><COLSPEC COLNAME="3" COLWIDTH="144p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Convention</CELLHEADING
  260. ></ENTRY
  261. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  262. ></ENTRY
  263. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>example</CELLHEADING
  264. ></ENTRY
  265. ></RBW-ROW
  266. ></THEAD
  267. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>bold</CX5FX5FPROCEDURE.NAME
  268. > </CELLBODY
  269. ></ENTRY
  270. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>File names and commands</CELLBODY
  271. ></ENTRY
  272. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>desk.mnu</CX5FX5FFILE.NAME
  273. > </CELLBODY
  274. ></ENTRY
  275. ></RBW-ROW
  276. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>italic</CX5FX5FTERM
  277. > </CELLBODY
  278. ></ENTRY
  279. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Document titles; first use of new terms; variables; procedure results</CELLBODY
  280. ></ENTRY
  281. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>A <CX5FX5FTERM>role right</CX5FX5FTERM
  282. > is a set of....</CELLBODY
  283. ></ENTRY
  284. ></RBW-ROW
  285. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>courier</CX5FX5FINPUT
  286. > </CELLBODY
  287. ></ENTRY
  288. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>User input and system output</CELLBODY
  289. ></ENTRY
  290. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>expand_file</CX5FX5FINPUT
  291. > </CELLBODY
  292. ></ENTRY
  293. ></RBW-ROW
  294. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Initial Capitals</CELLBODY
  295. ></ENTRY
  296. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object names and user interface features, such as commands, window titles, buttons, and field labels</CELLBODY
  297. ></ENTRY
  298. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The Class Diagram editor...</CELLBODY
  299. ></ENTRY
  300. ></RBW-ROW
  301. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pipe symbol ( | )</CELLBODY
  302. ></ENTRY
  303. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Successive menu items</CELLBODY
  304. ></ENTRY
  305. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Select File | New.</CELLBODY
  306. ></ENTRY
  307. ></RBW-ROW
  308. ></TBODY
  309. ></TGROUP
  310. ></RBW-TABLE
  311. ></LABEL
  312. ></SECTION
  313. ><SECTION><S.SECTION.HEAD>Support for Cayenne Products</S.SECTION.HEAD
  314. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  315. >Resources</L.LABEL
  316. ><B.BODY>If you have questions or are interested in other Cayenne products, consider the following resources:</B.BODY
  317. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  318. ></RBW-AUTOGEN
  319. ></RBW-MARKER
  320. ><RBW-PARABODY>Cayenne Technical Support is available to answer any questions you might have about Cayenne products.</RBW-PARABODY
  321. ></LB.LIST.BULLET
  322. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  323. ></RBW-AUTOGEN
  324. ></RBW-MARKER
  325. ><RBW-PARABODY>Cayenne Training/Consulting Services can help you get the most out of Cayenne products by providing information about training courses and consulting services.</RBW-PARABODY
  326. ></LB.LIST.BULLET
  327. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  328. ></RBW-AUTOGEN
  329. ></RBW-MARKER
  330. ><RBW-PARABODY>Your sales representative can provide information about or additional copies of any Cayenne product.</RBW-PARABODY
  331. ></LB.LIST.BULLET
  332. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  333. ></RBW-AUTOGEN
  334. ></RBW-MARKER
  335. ><RBW-PARABODY>Cayenne’s World Wide Web page, <CX5FX5FFILE.NAME>http://www.cayennesoft.com</CX5FX5FFILE.NAME
  336. >, provides contact numbers for the resources listed above, as well as up&truehy;to&truehy;date product information.</RBW-PARABODY
  337. ></LB.LIST.BULLET
  338. ><B.BODY></B.BODY
  339. ><!--
  340.  
  341.  
  342.  
  343.  
  344.  
  345. CONVERTING SOURCE FILE ../../sources/common/tab_inst.mif
  346.  
  347.  
  348. --><B.BODY></B.BODY
  349. ><B.BODY></B.BODY
  350. ><B.BODY></B.BODY
  351. ><B.BODY></B.BODY
  352. ><B.BODY></B.BODY
  353. ></LABEL
  354. ></SECTION
  355. ></PRODUCT
  356. ><PRODUCT><PH.PRODUCT.HEAD>Installation Set</PH.PRODUCT.HEAD
  357. ><!--
  358.  
  359.  
  360.  
  361.  
  362.  
  363. CONVERTING SOURCE FILE ../../sources/igun/igunbk.mif
  364.  
  365.  
  366. --><B.BODY></B.BODY
  367. ><B.BODY></B.BODY
  368. ><B.BODY></B.BODY
  369. ><B.BODY></B.BODY
  370. ><B.BODY></B.BODY
  371. ><BOOK><BH.BOOK.HEAD>Installation Guide for UNIX&truehy;Based Systems</BH.BOOK.HEAD
  372. ><!--
  373.  
  374.  
  375.  
  376.  
  377.  
  378. CONVERTING SOURCE FILE ../../sources/igun/igunprep.fm5.mif
  379.  
  380.  
  381. --><B.BODY></B.BODY
  382. ><B.BODY></B.BODY
  383. ><B.BODY></B.BODY
  384. ><B.BODY></B.BODY
  385. ><B.BODY></B.BODY
  386. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  387. ></RBW-AUTOGEN
  388. >Preparing for Installation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  389. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  390. ></RBW-SYSOBJ
  391. ></C.CHAPTER.HEAD
  392. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  393. >Introduction</L.LABEL
  394. ><B.BODY>This chapter describes the steps that you should take before you install ObjectTeam.</B.BODY
  395. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  396. ></RBW-AUTOGEN
  397. ></RBW-MARKER
  398. ><RBW-PARABODY>Check the contents of your installation package.</RBW-PARABODY
  399. ></LB.LIST.BULLET
  400. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  401. ></RBW-AUTOGEN
  402. ></RBW-MARKER
  403. ><RBW-PARABODY>Determine the type of installation required for ObjectTeam at your site.</RBW-PARABODY
  404. ></LB.LIST.BULLET
  405. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  406. ></RBW-AUTOGEN
  407. ></RBW-MARKER
  408. ><RBW-PARABODY>Ensure that the targeted workstation(s) meet all the hardware and software requirements for installing the product.</RBW-PARABODY
  409. ></LB.LIST.BULLET
  410. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  411. ></RBW-AUTOGEN
  412. ></RBW-MARKER
  413. ><RBW-PARABODY>Determine what other software you need to install.</RBW-PARABODY
  414. ></LB.LIST.BULLET
  415. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  416. ></RBW-AUTOGEN
  417. ></RBW-MARKER
  418. ><RBW-PARABODY>Preview the installation workflow.</RBW-PARABODY
  419. ></LB.LIST.BULLET
  420. ></LABEL
  421. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  422. >What do you need?</L.LABEL
  423. ><B.BODY>Before you can install ObjectTeam you must have the following items:</B.BODY
  424. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  425. ></RBW-AUTOGEN
  426. ></RBW-MARKER
  427. ><RBW-PARABODY>The ObjectTeam CD</RBW-PARABODY
  428. ></LB.LIST.BULLET
  429. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  430. ></RBW-AUTOGEN
  431. ></RBW-MARKER
  432. ><RBW-PARABODY>A valid license</RBW-PARABODY
  433. ></LB.LIST.BULLET
  434. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  435. ></RBW-AUTOGEN
  436. ></RBW-MARKER
  437. ><RBW-PARABODY>The Informix OnLine CD (if you are using Informix as your repository)</RBW-PARABODY
  438. ></LB.LIST.BULLET
  439. ><B.BODY>In addition, to complete the installation successfully, for the computer onto which you intend to install the ObjectTeam server software, you should have the following:</B.BODY
  440. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  441. ></RBW-AUTOGEN
  442. ></RBW-MARKER
  443. ><RBW-PARABODY>The password for a user account that has superuser privileges (you must perform some steps while logged in as root)</RBW-PARABODY
  444. ></LB.LIST.BULLET
  445. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  446. ></RBW-AUTOGEN
  447. ></RBW-MARKER
  448. ><RBW-PARABODY>The username and password of the database administrator account, where applicable</RBW-PARABODY
  449. ></LB.LIST.BULLET
  450. ></LABEL
  451. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  452. >In this chapter</L.LABEL
  453. ><B.BODY>This chapter contains the following sections:</B.BODY
  454. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  455. ></ENTRY
  456. ></RBW-ROW
  457. ></THEAD
  458. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31881" TYPE="XREF-TEXTCOPY">Choosing an Installation Type&rbwtab;1–2</RBW-XREF
  459. ></SB.SECTION.BLOCK.TABLE
  460. ></ENTRY
  461. ></RBW-ROW
  462. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21051" TYPE="XREF-TEXTCOPY">Requirements&rbwtab;1–6</RBW-XREF
  463. ></SB.SECTION.BLOCK.TABLE
  464. ></ENTRY
  465. ></RBW-ROW
  466. ></TBODY
  467. ></TGROUP
  468. ></RBW-TABLE
  469. ></LABEL
  470. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="31881"></RBW-ANCHOR
  471. >Choosing an Installation Type</S.SECTION.HEAD
  472. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  473. >Introduction</L.LABEL
  474. ><B.BODY>A complete ObjectTeam installation contains the following components:</B.BODY
  475. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  476. ></RBW-AUTOGEN
  477. ></RBW-MARKER
  478. ><RBW-PARABODY>ObjectTeam server software</RBW-PARABODY
  479. ></LB.LIST.BULLET
  480. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  481. ></RBW-AUTOGEN
  482. ></RBW-MARKER
  483. ><RBW-PARABODY>ObjectTeam client software</RBW-PARABODY
  484. ></LB.LIST.BULLET
  485. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  486. ></RBW-AUTOGEN
  487. ></RBW-MARKER
  488. ><RBW-PARABODY>DBMS software</RBW-PARABODY
  489. ></LB.LIST.BULLET
  490. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  491. ></RBW-AUTOGEN
  492. ></RBW-MARKER
  493. ><RBW-PARABODY>License management software</RBW-PARABODY
  494. ></LB.LIST.BULLET
  495. ><B.BODY>To decide the type of installation that you want to perform, you must first determine which computers will be running each of these sets of software.</B.BODY
  496. ><B.BODY>This section helps you answer these questions. </B.BODY
  497. ></LABEL
  498. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  499. >ObjectTeam client and server software</L.LABEL
  500. ><B.BODY>ObjectTeam has a <CX5FX5FTERM>client/server</CX5FX5FTERM
  501. > design. This means that the software can be distributed over a network of computers, with client computers and server computers executing different types of processes.</B.BODY
  502. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00001.tif" origseq="1" origtype="I" origdoc="../../sources/igun/igunprep.fm5.mif"></RBW-GRAPHIC
  503. ></FA.FIGURE.ANCHOR
  504. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  505. >Client computers</SL.SUBLABEL
  506. ><B.BODY>Client computers run the ObjectTeam <CX5FX5FTERM>client software</CX5FX5FTERM
  507. >. End&truehy;users use the client software, for example, to edit diagrams, run reports, and generate code. Model data created by users is stored centrally in a database on the server. Generated code and documents are stored on a user’s own machine.</B.BODY
  508. ><B.BODY>A client computer can be a UNIX workstation or a PC running Windows 95 or Windows NT.</B.BODY
  509. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  510. >Server computers</SL.SUBLABEL
  511. ><B.BODY>A server computer runs the ObjectTeam <CX5FX5FTERM>server software</CX5FX5FTERM
  512. >, and database software for storing users’ project data. The server software is usually started at system boot time, and does things like interact with the database and coordinate requests from clients. Users generally do not directly invoke server software.</B.BODY
  513. ><B.BODY>A server computer is a UNIX workstation. </B.BODY
  514. ><B.BODY>A client/server configuration allows multiple users to work simultaneously with ObjectTeam, and thus share data. </B.BODY
  515. ></LABEL
  516. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  517. >ObjectTeam database</L.LABEL
  518. ><B.BODY>ObjectTeam stores project data in a database. The database management system (DBMS) used is either Informix or Oracle. You must install the database software before installing ObjectTeam. </B.BODY
  519. ><B.BODY>If you are using Informix, then the Informix OnLine software is supplied on a separate CD in your package. Oracle software is not supplied with ObjectTeam. </B.BODY
  520. ></LABEL
  521. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  522. >ObjectTeam license manager</L.LABEL
  523. ><B.BODY>The various features of ObjectTeam, such as browsers and code generators, are all licensed individually. In ObjectTeam, a licensing system maintains a count of the usage of each feature. The license management system used by ObjectTeam is FLEXlm from Globetrotter Software. </B.BODY
  524. ></LABEL
  525. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  526. >Installation types</L.LABEL
  527. ><B.BODY>ObjectTeam distinguishes between the following types of machine:</B.BODY
  528. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="132p"><COLSPEC COLNAME="2" COLWIDTH="315p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Configuration</CELLHEADING
  529. ></ENTRY
  530. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  531. ></ENTRY
  532. ></RBW-ROW
  533. ></THEAD
  534. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>Master Server</CX5FX5FTERM
  535. ></CELLBODY
  536. ></ENTRY
  537. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This is a machine that runs all the ObjectTeam server software as well as the client software. There must always be a single Master server present in your network. </CELLBODY
  538. ><CELLBODY>The Master server can also run the DBMS software and the License server software.</CELLBODY
  539. ></ENTRY
  540. ></RBW-ROW
  541. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>Slave Server</CX5FX5FTERM
  542. ></CELLBODY
  543. ></ENTRY
  544. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This is an optional server running on a separate machine from the Master server. You can choose to install one or more Slave servers to distribute the server load. </CELLBODY
  545. ><CELLBODY>A Slave server runs a subset of the ObjectTeam server and DBMS software as well as the ObjectTeam client software.</CELLBODY
  546. ></ENTRY
  547. ></RBW-ROW
  548. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>Client</CX5FX5FTERM
  549. ></CELLBODY
  550. ></ENTRY
  551. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This is a machine that only runs the client software. </CELLBODY
  552. ></ENTRY
  553. ></RBW-ROW
  554. ></TBODY
  555. ></TGROUP
  556. ></RBW-TABLE
  557. ></LABEL
  558. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  559. >Example configurations</L.LABEL
  560. ><B.BODY>Which installation you perform on a machine depends on what kind of overall configuration in which you want to run ObjectTeam. The following examples show some default configurations covered by the instructions in this guide.</B.BODY
  561. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  562. >Standalone</SL.SUBLABEL
  563. ><B.BODY>This is the simplest configuration. A single machine is configured as Master server, and is running the ObjectTeam server software, ObjectTeam client software, DBMS software and FLEXlm license software. </B.BODY
  564. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00002.tif" origseq="3" origtype="I" origdoc="../../sources/igun/igunprep.fm5.mif"></RBW-GRAPHIC
  565. ></FA.FIGURE.ANCHOR
  566. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  567. >Client/server</SL.SUBLABEL
  568. ><B.BODY>In this example, a machine configured as Master server is running the ObjectTeam server and client software and is serving multiple client machines. The DBMS software and FLEXlm license software been installed on separate machines from the ObjectTeam Master server.</B.BODY
  569. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00003.tif" origseq="12" origtype="I" origdoc="../../sources/igun/igunprep.fm5.mif"></RBW-GRAPHIC
  570. ></FA.FIGURE.ANCHOR
  571. ><B.BODY>The easiest way to configure an ObjectTeam client is to mount the ObjectTeam product files from the Master server on the client machine. Alternatively you can install a separate set of product files on the client.</B.BODY
  572. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  573. >Distributed Master and Slave servers</SL.SUBLABEL
  574. ><FA.FIGURE.ANCHOR>In this example, to spread the load on the Master server, a separate machine has been configured as an ObjectTeam Slave server and is serving several of its own clients. </FA.FIGURE.ANCHOR
  575. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00004.tif" origseq="5" origtype="I" origdoc="../../sources/igun/igunprep.fm5.mif"></RBW-GRAPHIC
  576. ></FA.FIGURE.ANCHOR
  577. ><B.BODY>The easiest way to configure a Slave server is to mount both the ObjectTeam product files from the Master server and the DBMS files from the machine running the DBMS. This is useful where you want to reduce the load on the Master server’s CPU, but your network is not a bottleneck. Alternatively, to further reduce network traffic between the Master and Slave, you can install a separate set of ObjectTeam product files on the Slave server and configure the Slave server as a DBMS <CX5FX5FTERM>client</CX5FX5FTERM
  578. >.</B.BODY
  579. ><B.BODY>ObjectTeam client machines can run off either the Master or Slave server. By default, the maximum number of client computers you can attach to a server is unlimited.</B.BODY
  580. ></LABEL
  581. ></SECTION
  582. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21051"></RBW-ANCHOR
  583. >Requirements</S.SECTION.HEAD
  584. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  585. >Product requirements</L.LABEL
  586. ><B.BODY>ObjectTeam uses or integrates with various other software packages, such as:</B.BODY
  587. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  588. ></RBW-AUTOGEN
  589. ></RBW-MARKER
  590. ><RBW-PARABODY>Repository DBMS’s</RBW-PARABODY
  591. ></LB.LIST.BULLET
  592. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  593. ></RBW-AUTOGEN
  594. ></RBW-MARKER
  595. ><RBW-PARABODY>Software development tools, such as compilers, class libraries, etc.</RBW-PARABODY
  596. ></LB.LIST.BULLET
  597. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  598. ></RBW-AUTOGEN
  599. ></RBW-MARKER
  600. ><RBW-PARABODY>Version and configuration management products</RBW-PARABODY
  601. ></LB.LIST.BULLET
  602. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  603. ></RBW-AUTOGEN
  604. ></RBW-MARKER
  605. ><RBW-PARABODY>Document publishing packages</RBW-PARABODY
  606. ></LB.LIST.BULLET
  607. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  608. ></RBW-AUTOGEN
  609. ></RBW-MARKER
  610. ><RBW-PARABODY>Requirements tracking packages</RBW-PARABODY
  611. ></LB.LIST.BULLET
  612. ><B.BODY>For details on the requirements for these packages, read the Certification matrix. Hardware requirements for your workstation are displayed during the installation procedure. </B.BODY
  613. ><B.BODY>You should also read the ObjectTeam Read Me First Notes before starting installation. These contain last&truehy;minute product information that may affect the installation. </B.BODY
  614. ></LABEL
  615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  616. >Reading the ObjectTeam Certification matrix and Read Me First Notes</L.LABEL
  617. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  618. ></RBW-AUTOGEN
  619. ></RBW-MARKER
  620. ><RBW-PARABODY>To read the Certification matrix and Read Me First Notes:</RBW-PARABODY
  621. ></P.PROCEDURE
  622. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  623. ></RBW-AUTOGEN
  624. ></RBW-MARKER
  625. ><RBW-PARABODY>Log in as root and mount the CD on your file system:</RBW-PARABODY
  626. ></LN.LIST.NUM
  627. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  628. ></RBW-AUTOGEN
  629. ></RBW-MARKER
  630. ><RBW-PARABODY><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  631. > </RBW-PARABODY
  632. ></LN.LIST.NUM
  633. ><EM.EXAMPLE.MONO>mount &truehy;F hsfs &truehy;o ro /dev/sr0 /cdrom </EM.EXAMPLE.MONO
  634. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  635. > </LT.LIST.TEXT
  636. ><EM.EXAMPLE.MONO>/etc/mount &truehy;F cdfs /dev/dsk/c1t2d0 /cdrom </EM.EXAMPLE.MONO
  637. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  638. > </LT.LIST.TEXT
  639. ><EM.EXAMPLE.MONO>/usr/sbin/mount &truehy;v 'cdrfs' &truehy;r /dev/cd0 /cdrom </EM.EXAMPLE.MONO
  640. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  641. > </LT.LIST.TEXT
  642. ><EM.EXAMPLE.MONO>/usr/sbin/mount &truehy;t cdfs &truehy;o ro /dev/rz0c /cdrom</EM.EXAMPLE.MONO
  643. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  644. ></RBW-AUTOGEN
  645. ></RBW-MARKER
  646. ><RBW-PARABODY>Open the file /cdrom/readme.txt in a text editor, or open the file /cdrom/readme.htm in a Web browser.</RBW-PARABODY
  647. ></LN.LIST.NUM
  648. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  649. ></RBW-AUTOGEN
  650. ></RBW-MARKER
  651. ><RBW-PARABODY>Open the file /cdrom/certify.htm in a Web browser.</RBW-PARABODY
  652. ></LN.LIST.NUM
  653. ></LABEL
  654. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29090"></RBW-ANCHOR
  655. >Network Software and Daemon Processes</SS.SUBSEC.HEAD
  656. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  657. >Network Software</L.LABEL
  658. ><B.BODY>If the installation is taking place in a multi&truehy;computer environment, i.e., if files need to be sent over a network, the correct network software must be installed and working. Most of the checks also apply to standalone installations. The correct daemon processes must also be active. The following network software and daemon processes are needed:</B.BODY
  659. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  660. ></RBW-AUTOGEN
  661. ></RBW-MARKER
  662. ><RBW-PARABODY>NFS and ethernet TCP/IP</RBW-PARABODY
  663. ></LB.LIST.BULLET
  664. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  665. ></RBW-AUTOGEN
  666. ></RBW-MARKER
  667. ><RBW-PARABODY>NFS server daemon</RBW-PARABODY
  668. ></LB.LIST.BULLET
  669. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  670. ></RBW-AUTOGEN
  671. ></RBW-MARKER
  672. ><RBW-PARABODY>Input/output daemon</RBW-PARABODY
  673. ></LB.LIST.BULLET
  674. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  675. ></RBW-AUTOGEN
  676. ></RBW-MARKER
  677. ><RBW-PARABODY>Internet Services Daemon</RBW-PARABODY
  678. ></LB.LIST.BULLET
  679. ></LABEL
  680. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  681. >Network Check </L.LABEL
  682. ><B.BODY>Check whether the network is working properly. Create a remote shell on the host machine on which the database server runs:</B.BODY
  683. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  684. ></RBW-AUTOGEN
  685. ></RBW-MARKER
  686. ><RBW-PARABODY>If you are running ObjectTeam under Solaris, AIX or D&truehy;UX:</RBW-PARABODY
  687. ></P.PROCEDURE
  688. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  689. ></RBW-AUTOGEN
  690. ></RBW-MARKER
  691. ><RBW-PARABODY>Enter the following:</RBW-PARABODY
  692. ></LN.LIST.NUM
  693. ><EM.EXAMPLE.MONO>rsh <CX5FX5FTERM>name_platform_db_server</CX5FX5FTERM
  694. ></EM.EXAMPLE.MONO
  695. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  696. ></RBW-AUTOGEN
  697. ></RBW-MARKER
  698. ><RBW-PARABODY>If you are running ObjectTeam under HP&truehy;UX:</RBW-PARABODY
  699. ></P.PROCEDURE
  700. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  701. ></RBW-AUTOGEN
  702. ></RBW-MARKER
  703. ><RBW-PARABODY>Enter the following:</RBW-PARABODY
  704. ></LN.LIST.NUM
  705. ><EM.EXAMPLE.MONO>remsh <CX5FX5FTERM>name_platform_db_server</CX5FX5FTERM
  706. ></EM.EXAMPLE.MONO
  707. ><B.BODY>If you do not receive an error message, the network is properly installed.</B.BODY
  708. ></LABEL
  709. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  710. >Check Hosts</L.LABEL
  711. ><B.BODY>You must check whether all the (host) machines intended to be used to run ObjectTeam are part of the network:</B.BODY
  712. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  713. ></RBW-AUTOGEN
  714. ></RBW-MARKER
  715. ><RBW-PARABODY>If NIS is installed, log in as root on the Network Information Server (NIS) and enter <CX5FX5FINPUT>ypcat hosts</CX5FX5FINPUT
  716. > and check that all hosts that are to run ObjectTeam are present.</RBW-PARABODY
  717. ></LB.LIST.BULLET
  718. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  719. ></RBW-AUTOGEN
  720. ></RBW-MARKER
  721. ><RBW-PARABODY>If NIS is not installed, on each machine that is to run ObjectTeam, check that the /etc/inet/hosts file (Solaris) or the /etc/hosts file (HP&truehy;UX, AIX, D&truehy;UX) exists and that it contains entries for each host running ObjectTeam.</RBW-PARABODY
  722. ></LB.LIST.BULLET
  723. ></LABEL
  724. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  725. >Check Users</L.LABEL
  726. ><B.BODY>Check whether the users are known on the platforms used by the product:</B.BODY
  727. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  728. ></RBW-AUTOGEN
  729. ></RBW-MARKER
  730. ><RBW-PARABODY>If NIS is installed, check if all platforms used with ObjectTeam are in the NIS system.</RBW-PARABODY
  731. ></LB.LIST.BULLET
  732. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  733. ></RBW-AUTOGEN
  734. ></RBW-MARKER
  735. ><RBW-PARABODY>If NIS is not installed, check if all users are the same for every platform used with ObjectTeam.</RBW-PARABODY
  736. ></LB.LIST.BULLET
  737. ><RBWAUTO-0001></RBWAUTO-0001
  738. ><!--
  739.  
  740.  
  741.  
  742.  
  743.  
  744. CONVERTING SOURCE FILE ../../sources/igun/iguninst.fm5.mif
  745.  
  746.  
  747. --><B.BODY></B.BODY
  748. ><B.BODY></B.BODY
  749. ><B.BODY></B.BODY
  750. ><B.BODY></B.BODY
  751. ><B.BODY></B.BODY
  752. ></LABEL
  753. ></SUBSECTION
  754. ></SECTION
  755. ></CHAPTER
  756. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  757. ></RBW-AUTOGEN
  758. ><RBWAUTO-0003></RBWAUTO-0003
  759. >Installing <RBW-ANCHOR ID="38865"></RBW-ANCHOR
  760. >ObjectTeam Software<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  761. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  762. ></RBW-SYSOBJ
  763. ></C.CHAPTER.HEAD
  764. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  765. >Introduction</L.LABEL
  766. ><B.BODY>This chapter describes how to carry out a standard installation of ObjectTeam on UNIX machines. </B.BODY
  767. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  768. >Upgrading</SL.SUBLABEL
  769. ><B.BODY>If you are upgrading from a previous ObjectTeam installation, go to Chapter 3, Upgrading from a Previous Release, instead.</B.BODY
  770. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  771. >Installing on Windows</SL.SUBLABEL
  772. ><B.BODY>For details on how to install ObjectTeam on PCs running Windows 95 or Windows NT, refer to the <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  773. ><CX5FX5FTITLE></CX5FX5FTITLE
  774. > <CX5FX5FTERM>for Microsoft Windows</CX5FX5FTERM
  775. >.</B.BODY
  776. ></LABEL
  777. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  778. >Which installation to perform</L.LABEL
  779. ><B.BODY>This chapter covers the following installations:</B.BODY
  780. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  781. ></RBW-AUTOGEN
  782. ></RBW-MARKER
  783. ><RBW-PARABODY>Master server installation</RBW-PARABODY
  784. ></LB.LIST.BULLET
  785. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  786. ></RBW-AUTOGEN
  787. ></RBW-MARKER
  788. ><RBW-PARABODY>Slave server installation</RBW-PARABODY
  789. ></LB.LIST.BULLET
  790. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  791. ></RBW-AUTOGEN
  792. ></RBW-MARKER
  793. ><RBW-PARABODY>Client installation</RBW-PARABODY
  794. ></LB.LIST.BULLET
  795. ><B.BODY>Before you install ObjectTeam, you must decide which machine you want to make Master server. There can only be one Master server in your system. The Master server can also run the client software. </B.BODY
  796. ><B.BODY>In this chapter the installation directory is indicated as <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  797. >. The recommended location is /usr/cayenne/objectteam. </B.BODY
  798. ></LABEL
  799. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  800. >Reading the Read Me First Notes</L.LABEL
  801. ><B.BODY>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You must read these notes before starting installation.</B.BODY
  802. ><B.BODY>To read the Read Me First Notes, open the file /cdrom/readme.txt in a text editor, or open the file /cdrom/readme.htm in a Web browser.</B.BODY
  803. ><B.BODY>For details of the supported Operating Systems and DBMS versions, open the file /cdrom/certify.htm in a web browser.</B.BODY
  804. ></LABEL
  805. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  806. >Before you start</L.LABEL
  807. ><B.BODY>Before you start, you should have created a user cayenne and installed DynaText as described in the CD insert.</B.BODY
  808. ></LABEL
  809. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  810. >In this chapter</L.LABEL
  811. ><B.BODY>This chapter contains the following sections:</B.BODY
  812. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  813. ></ENTRY
  814. ></RBW-ROW
  815. ></THEAD
  816. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17595" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Master Server&rbwtab;2–3</RBW-XREF
  817. ></SB.SECTION.BLOCK.TABLE
  818. ></ENTRY
  819. ></RBW-ROW
  820. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29343" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Slave Server&rbwtab;2–18</RBW-XREF
  821. ></SB.SECTION.BLOCK.TABLE
  822. ></ENTRY
  823. ></RBW-ROW
  824. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28366" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Client&rbwtab;2–29</RBW-XREF
  825. ></SB.SECTION.BLOCK.TABLE
  826. ></ENTRY
  827. ></RBW-ROW
  828. ></TBODY
  829. ></TGROUP
  830. ></RBW-TABLE
  831. ></LABEL
  832. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17595"></RBW-ANCHOR
  833. >Installing an ObjectTeam Master Server</S.SECTION.HEAD
  834. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  835. >Introduction</L.LABEL
  836. ><B.BODY>This section describes how to install an ObjectTeam Master server.</B.BODY
  837. ></LABEL
  838. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  839. >Steps</L.LABEL
  840. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  841. ></RBW-AUTOGEN
  842. ></RBW-MARKER
  843. ><RBW-PARABODY>Installation of an ObjectTeam Master server involves the following steps:</RBW-PARABODY
  844. ></P.PROCEDURE
  845. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="37p"><COLSPEC COLNAME="2" COLWIDTH="103p"><COLSPEC COLNAME="3" COLWIDTH="304p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  846. ></ENTRY
  847. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Done as user</CELLHEADING
  848. ></ENTRY
  849. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  850. ></ENTRY
  851. ></RBW-ROW
  852. ></THEAD
  853. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1a</CELLBODY
  854. ></ENTRY
  855. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Informix</CELLBODY
  856. ></ENTRY
  857. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Informix users only:</CX5FX5FFILE.NAME
  858. > <RBW-XREF REFID="19396" TYPE="XREF-TEXTCOPY">Install Informix</RBW-XREF
  859. ></CELLBODY
  860. ></ENTRY
  861. ></RBW-ROW
  862. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1b</CELLBODY
  863. ></ENTRY
  864. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oracle</CELLBODY
  865. ></ENTRY
  866. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Oracle users only: <RBW-XREF REFID="28079" TYPE="XREF-TEXTCOPY">Create an Oracle User and Tablespace</RBW-XREF
  867. ></CX5FX5FFILE.NAME
  868. ></CELLBODY
  869. ></ENTRY
  870. ></RBW-ROW
  871. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  872. ></ENTRY
  873. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne </CELLBODY
  874. ></ENTRY
  875. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="38599" TYPE="XREF-TEXTCOPY">Install Your License</RBW-XREF
  876. ></CELLBODY
  877. ></ENTRY
  878. ></RBW-ROW
  879. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  880. ></ENTRY
  881. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  882. ></ENTRY
  883. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13560" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  884. ></CELLBODY
  885. ></ENTRY
  886. ></RBW-ROW
  887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  888. ></ENTRY
  889. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>root</CELLBODY
  890. ></ENTRY
  891. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39599" TYPE="XREF-TEXTCOPY">Create an ObjectTeam Service</RBW-XREF
  892. ></CELLBODY
  893. ></ENTRY
  894. ></RBW-ROW
  895. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  896. ></ENTRY
  897. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  898. ></ENTRY
  899. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="18567" TYPE="XREF-TEXTCOPY">Set ObjectTeam Environment Variables</RBW-XREF
  900. ></CELLBODY
  901. ></ENTRY
  902. ></RBW-ROW
  903. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  904. ></ENTRY
  905. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  906. ></ENTRY
  907. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="32806" TYPE="XREF-TEXTCOPY">Create a Cayenne Repository</RBW-XREF
  908. ></CELLBODY
  909. ></ENTRY
  910. ></RBW-ROW
  911. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  912. ></ENTRY
  913. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>root</CELLBODY
  914. ></ENTRY
  915. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="15479" TYPE="XREF-TEXTCOPY">Update The Startup Files</RBW-XREF
  916. ></CELLBODY
  917. ></ENTRY
  918. ></RBW-ROW
  919. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>8</CELLBODY
  920. ></ENTRY
  921. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  922. ></ENTRY
  923. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Optional:</CX5FX5FFILE.NAME
  924. > Configure modules as described in Chapter 4, Activating Modules.</CELLBODY
  925. ></ENTRY
  926. ></RBW-ROW
  927. ></TBODY
  928. ></TGROUP
  929. ></RBW-TABLE
  930. ><B.BODY></B.BODY
  931. ></LABEL
  932. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19396"></RBW-ANCHOR
  933. >Install Informix</SS.SUBSEC.HEAD
  934. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  935. >Installing Informix</L.LABEL
  936. ><B.BODY>This step only applies if you are using Informix as your repository database.</B.BODY
  937. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  938. >If you do not have an Informix installation</SL.SUBLABEL
  939. ><B.BODY>A version of Informix for your UNIX platform is supplied with your ObjectTeam package. For details on how to install Informix, refer to Appendix C, Installing Informix.</B.BODY
  940. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  941. >If you already have an Informix installation</SL.SUBLABEL
  942. ><B.BODY>If you already have Informix installed, read Appendix C, Installing Informix, for details on configuring your Informix installation to work with ObjectTeam.</B.BODY
  943. ><B.BODY>Once you have installed or configured Informix, proceed to <RBW-XREF REFID="38599" TYPE="XREF-TEXTCOPY">Install Your License</RBW-XREF
  944. >.</B.BODY
  945. ></LABEL
  946. ></SUBSECTION
  947. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28079"></RBW-ANCHOR
  948. >Create an Oracle User and Tablespace</SS.SUBSEC.HEAD
  949. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  950. >Introduction</L.LABEL
  951. ><B.BODY>This step only applies if you are using Oracle as your repository database. This section assumes you already have Oracle installed.</B.BODY
  952. ></LABEL
  953. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  954. >Checking your Oracle installation</L.LABEL
  955. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  956. ></RBW-AUTOGEN
  957. ></RBW-MARKER
  958. ><RBW-PARABODY>Log in as “oracle” to the UNIX system.</RBW-PARABODY
  959. ></LN.LIST.NUM
  960. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  961. ></RBW-AUTOGEN
  962. ></RBW-MARKER
  963. ><RBW-PARABODY>If you are not using SQL*Net, enter:</RBW-PARABODY
  964. ></LN.LIST.NUM
  965. ><EM.EXAMPLE.MONO>%sqlplus system/manager</EM.EXAMPLE.MONO
  966. ><LT.LIST.TEXT>where system is an account and manager is the password.</LT.LIST.TEXT
  967. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  968. ></RBW-AUTOGEN
  969. ></RBW-MARKER
  970. ><RBW-PARABODY>If you are using SQL*Net, enter:</RBW-PARABODY
  971. ></LN.LIST.NUM
  972. ><EM.EXAMPLE.MONO>%sqlplus system/manager@Demo</EM.EXAMPLE.MONO
  973. ><LT.LIST.TEXT>where Demo is the SQL*Net database specification string.</LT.LIST.TEXT
  974. ><LT.LIST.TEXT>A successful connection results in a prompt like the following:</LT.LIST.TEXT
  975. ><EM.EXAMPLE.MONO>sql></EM.EXAMPLE.MONO
  976. ></LABEL
  977. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  978. >Creating an Oracle tablespace</L.LABEL
  979. ><B.BODY>You must create a new Oracle tablespace. This tablespace will be used as the default tablespace of the Oracle User to be created. The Oracle User will contain the Cayenne repository. Otherwise the Cayenne repository will be created in the “system” tablespace reserved for system data.</B.BODY
  980. ><B.BODY>The following shows an example of creating a new tablespace:</B.BODY
  981. ><EWM.EXAMPLEW.MONO>SQL> create tablespace cayennesp datafile ‘/home/oracle/dbs/oradata/demo/cayennesp01.dbf’ size 128m;</EWM.EXAMPLEW.MONO
  982. ><B.BODY>This creates a tablespace called “cayennesp”. In addition, the file cayennesp01.dbf is created in your oradata directory. The oradata directory is created at Oracle installation time. Its location can vary.</B.BODY
  983. ></LABEL
  984. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  985. >How to create an Oracle User</L.LABEL
  986. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  987. ></RBW-AUTOGEN
  988. ></RBW-MARKER
  989. ><RBW-PARABODY>To create an Oracle User:</RBW-PARABODY
  990. ></P.PROCEDURE
  991. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  992. ></RBW-AUTOGEN
  993. ></RBW-MARKER
  994. ><RBW-PARABODY>While logged in as oracle, use either the Create User dialog box of SQL*DBA or the SQL command CREATE USER.</RBW-PARABODY
  995. ></LN.LIST.NUM
  996. ><LT.LIST.TEXT>The following shows an example of the second option. </LT.LIST.TEXT
  997. ><EM.EXAMPLE.MONO>SQL> create user cayenne identified by password default tablespace cayennesp;</EM.EXAMPLE.MONO
  998. ><EM.EXAMPLE.MONO>SQL> grant connect, resource to cayenne;</EM.EXAMPLE.MONO
  999. ><EM.EXAMPLE.MONO>SQL> quit</EM.EXAMPLE.MONO
  1000. ><B.BODY>For more details, refer to the Oracle Server Administrator’s Guide.</B.BODY
  1001. ></LABEL
  1002. ></SUBSECTION
  1003. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38599"></RBW-ANCHOR
  1004. >Install Your License</SS.SUBSEC.HEAD
  1005. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1006. >Licensing</L.LABEL
  1007. ><B.BODY>To install ObjectTeam 7.1.1, you must configure licensing. How you do this depends on whether you have a temporary or permanent license:</B.BODY
  1008. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1009. >Temporary license</SL.SUBLABEL
  1010. ><B.BODY>You must install your ObjectTeam license as described in this section.</B.BODY
  1011. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1012. >Permanent license</SL.SUBLABEL
  1013. ><B.BODY>You must install a license server, as decribed in Appendix B, Configuring a License Server. After you have done that, continue to <RBW-XREF REFID="13560" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  1014. >.</B.BODY
  1015. ></LABEL
  1016. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1017. >How to install your license</L.LABEL
  1018. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1019. ></RBW-AUTOGEN
  1020. ></RBW-MARKER
  1021. ><RBW-PARABODY>To install your temporary license file:</RBW-PARABODY
  1022. ></P.PROCEDURE
  1023. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1024. ></RBW-AUTOGEN
  1025. ></RBW-MARKER
  1026. ><RBW-PARABODY>Log in as cayenne.</RBW-PARABODY
  1027. ></LN.LIST.NUM
  1028. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1029. ></RBW-AUTOGEN
  1030. ></RBW-MARKER
  1031. ><RBW-PARABODY>Make a FLEXlm license directory:</RBW-PARABODY
  1032. ></LN.LIST.NUM
  1033. ><EM.EXAMPLE.MONO>mkdir &truehy;p /usr/cayenne/flexlm/license</EM.EXAMPLE.MONO
  1034. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  1035. ></RBW-AUTOGEN
  1036. ></RBW-MARKER
  1037. ><RBW-PARABODY>If you received the license:</RBW-PARABODY
  1038. ></LN.LIST.NUM
  1039. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  1040. ></RBW-MARKER
  1041. ><RBW-PARABODY>On a floppy or CD, copy the license to <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  1042. ></RBW-PARABODY
  1043. ></LB2.LIST.BULLET.2
  1044. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  1045. ></RBW-MARKER
  1046. ><RBW-PARABODY>Via email, copy and paste the new feature information into an empty text file and save it as <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  1047. ></RBW-PARABODY
  1048. ></LB2.LIST.BULLET.2
  1049. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  1050. ></RBW-MARKER
  1051. ><RBW-PARABODY>Via fax, enter the new feature information by hand into an empty text file, and save it as <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  1052. ></RBW-PARABODY
  1053. ></LB2.LIST.BULLET.2
  1054. ></LABEL
  1055. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1056. >Obtaining a permanent license</L.LABEL
  1057. ><B.BODY>Your temporary license allows you to install and run ObjectTeam for a limited period. </B.BODY
  1058. ><B.BODY>If after installing ObjectTeam, you decide you want to make your installation permanent, you need to obtain a permanent license. For details on how to obtain a permanent license, see Appendix B, Configuring a License Server. </B.BODY
  1059. ></LABEL
  1060. ></SUBSECTION
  1061. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13560"></RBW-ANCHOR
  1062. >Install the ObjectTeam Product Files</SS.SUBSEC.HEAD
  1063. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1064. >How to install the ObjectTeam software</L.LABEL
  1065. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1066. ></RBW-AUTOGEN
  1067. ></RBW-MARKER
  1068. ><RBW-PARABODY>To install the ObjectTeam software:</RBW-PARABODY
  1069. ></P.PROCEDURE
  1070. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1071. ></RBW-AUTOGEN
  1072. ></RBW-MARKER
  1073. ><RBW-PARABODY>While logged in as user cayenne, run the ObjectTeam install script.</RBW-PARABODY
  1074. ></LN.LIST.NUM
  1075. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  1076. > </LT.LIST.TEXT
  1077. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/sol/objecttm</EM.EXAMPLE.MONO
  1078. ><EM.EXAMPLE.MONO>./instot</EM.EXAMPLE.MONO
  1079. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  1080. > </LT.LIST.TEXT
  1081. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/HPUX/OBJECTTM</EM.EXAMPLE.MONO
  1082. ><EM.EXAMPLE.MONO>./INSTOT</EM.EXAMPLE.MONO
  1083. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  1084. > </LT.LIST.TEXT
  1085. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/aix/objecttm</EM.EXAMPLE.MONO
  1086. ><EM.EXAMPLE.MONO>./instot</EM.EXAMPLE.MONO
  1087. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  1088. > </LT.LIST.TEXT
  1089. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/DUX/OBJECTTM</EM.EXAMPLE.MONO
  1090. ><EM.EXAMPLE.MONO>./INSTOT</EM.EXAMPLE.MONO
  1091. ><LR.LIST.RESULT>The ObjectTeam product files are installed.</LR.LIST.RESULT
  1092. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1093. ></RBW-AUTOGEN
  1094. ></RBW-MARKER
  1095. ><RBW-PARABODY>You are asked if you want the <CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  1096. ><CX5FX5FTERM></CX5FX5FTERM
  1097. > <CX5FX5FTERM>Product Documentation </CX5FX5FTERM
  1098. >to be installed. Enter yes or no.</RBW-PARABODY
  1099. ></LN.LIST.NUM
  1100. ></LABEL
  1101. ></SUBSECTION
  1102. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39599"></RBW-ANCHOR
  1103. >Create an ObjectTeam Service </SS.SUBSEC.HEAD
  1104. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1105. >Services file</L.LABEL
  1106. ><B.BODY>On every (UNIX) machine on which ObjectTeam is used, an internet service must be configured for communication with Broker processes. This is done using the services file. </B.BODY
  1107. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operating System</CELLHEADING
  1108. ></ENTRY
  1109. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Location</CELLHEADING
  1110. ></ENTRY
  1111. ></RBW-ROW
  1112. ></THEAD
  1113. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Solaris</CELLBODY
  1114. ></ENTRY
  1115. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> /etc/inet/services </CELLBODY
  1116. ></ENTRY
  1117. ></RBW-ROW
  1118. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>HP&truehy;UX, AIX and D&truehy;UX</CELLBODY
  1119. ></ENTRY
  1120. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> /etc/services</CELLBODY
  1121. ></ENTRY
  1122. ></RBW-ROW
  1123. ></TBODY
  1124. ></TGROUP
  1125. ></RBW-TABLE
  1126. ><B.BODY>The services file defines the service/port number combination. </B.BODY
  1127. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1128. >Contents of the services file</SL.SUBLABEL
  1129. ><B.BODY>The services file contains a single entry for each known service on the network. Each line in the file contains the following information:</B.BODY
  1130. ><EWM.EXAMPLEW.MONO>servicename    port_number/protocol    name_aliases    # some comments</EWM.EXAMPLEW.MONO
  1131. ><B.BODY>Although <CX5FX5FVARIABLE>servicename</CX5FX5FVARIABLE
  1132. > and <CX5FX5FVARIABLE>port_number</CX5FX5FVARIABLE
  1133. > are arbitrary, they must be unique within the file and they must be identical on all computers running ObjectTeam server or client software. </B.BODY
  1134. ><B.BODY>To prevent conflicts, most computers running in a network are installed with a Network Information System. In such a system all network information is stored centrally in the services file. Computers can access the information by sending a request to the Network Information Server (NIS). </B.BODY
  1135. ><B.BODY>In the format shown above for the services file, <CX5FX5FVARIABLE>name_aliases</CX5FX5FVARIABLE
  1136. > is optional and can be added. However, this facility is not supported in ObjectTeam. All text after the “<CX5FX5FFILE.NAME>#”</CX5FX5FFILE.NAME
  1137. > is interpreted as comments and can be used to specify for which utility the service has been added.</B.BODY
  1138. ></LABEL
  1139. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1140. >How to add a service</L.LABEL
  1141. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1142. ></RBW-AUTOGEN
  1143. ></RBW-MARKER
  1144. ><RBW-PARABODY>To add a service for ObjectTeam:</RBW-PARABODY
  1145. ></P.PROCEDURE
  1146. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1147. ></RBW-AUTOGEN
  1148. ></RBW-MARKER
  1149. ><RBW-PARABODY>Log in as root.</RBW-PARABODY
  1150. ></LN.LIST.NUM
  1151. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1152. ></RBW-AUTOGEN
  1153. ></RBW-MARKER
  1154. ><RBW-PARABODY>Add the following service:</RBW-PARABODY
  1155. ></LN.LIST.NUM
  1156. ><EM.EXAMPLE.MONO>ot_broker    1825/udp    # Cayenne Repository broker</EM.EXAMPLE.MONO
  1157. ><B.BODY>Your UNIX version may have an administration tool to do this (for example, on Solaris you can use admintool.)</B.BODY
  1158. ></LABEL
  1159. ></SUBSECTION
  1160. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18567"></RBW-ANCHOR
  1161. >Set ObjectTeam Environment Variables</SS.SUBSEC.HEAD
  1162. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1163. >Introduction</L.LABEL
  1164. ><B.BODY>Before you can use ObjectTeam, you must set various ObjectTeam environment variables. This is done by running the m4create_env script.</B.BODY
  1165. ></LABEL
  1166. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1167. >How to run m4create_env</L.LABEL
  1168. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1169. ></RBW-AUTOGEN
  1170. ></RBW-MARKER
  1171. ><RBW-PARABODY>To run m4create_env:</RBW-PARABODY
  1172. ></P.PROCEDURE
  1173. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1174. ></RBW-AUTOGEN
  1175. ></RBW-MARKER
  1176. ><RBW-PARABODY>Log in as cayenne.</RBW-PARABODY
  1177. ></LN.LIST.NUM
  1178. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1179. ></RBW-AUTOGEN
  1180. ></RBW-MARKER
  1181. ><RBW-PARABODY>Set the necessary database environment variables for your DBMS in your current shell:</RBW-PARABODY
  1182. ></LN.LIST.NUM
  1183. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  1184. ></RBW-MARKER
  1185. ><RBW-PARABODY>INFORMIXDIR and INFORMIXSERVER for Informix</RBW-PARABODY
  1186. ></LB2.LIST.BULLET.2
  1187. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  1188. ></RBW-MARKER
  1189. ><RBW-PARABODY>ORACLE_HOME and ORACLE_SID for Oracle</RBW-PARABODY
  1190. ></LB2.LIST.BULLET.2
  1191. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  1192. ></RBW-AUTOGEN
  1193. ></RBW-MARKER
  1194. ><RBW-PARABODY>Change to the ObjectTeam bin directory:</RBW-PARABODY
  1195. ></LN.LIST.NUM
  1196. ><EM.EXAMPLE.MONO>cd /usr/cayenne/objectteam/bin</EM.EXAMPLE.MONO
  1197. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  1198. ></RBW-AUTOGEN
  1199. ></RBW-MARKER
  1200. ><RBW-PARABODY>Enter the following at the command line:</RBW-PARABODY
  1201. ></LN.LIST.NUM
  1202. ><EM.EXAMPLE.MONO>./m4create_env</EM.EXAMPLE.MONO
  1203. ></LABEL
  1204. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1205. >Running m4create_env</L.LABEL
  1206. ><B.BODY>While running, m4create_env asks you to specify various options.</B.BODY
  1207. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1208. ></RBW-AUTOGEN
  1209. ></RBW-MARKER
  1210. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  1211. ></LN.LIST.NUM
  1212. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  1213. ></RBW-AUTOGEN
  1214. ></RBW-MARKER
  1215. ><RBW-PARABODY>If you are running the license server software on this machine, or your license file is stored locally, the default is /usr/cayenne/flexlm/license/cayenne.dat. </RBW-PARABODY
  1216. ></LN2.LIST.NUM.2
  1217. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  1218. ></RBW-AUTOGEN
  1219. ></RBW-MARKER
  1220. ><RBW-PARABODY>If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  1221. ></LN2.LIST.NUM.2
  1222. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  1223. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  1224. ></RBW-AUTOGEN
  1225. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a colon (:).</N2.NOTE.2
  1226. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1227. ></RBW-AUTOGEN
  1228. ></RBW-MARKER
  1229. ><RBW-PARABODY>You are asked to specify the type of installation. Options are Master server, Slave server, or Client. Accept the default of Master.</RBW-PARABODY
  1230. ></LN.LIST.NUM
  1231. ><LR.LIST.RESULT>A warning is displayed that various environment files are created by the script.</LR.LIST.RESULT
  1232. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  1233. ></RBW-AUTOGEN
  1234. ></RBW-MARKER
  1235. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  1236. ></LN.LIST.NUM
  1237. ><LR.LIST.RESULT>The m4create_env script displays a summary of your operating system and repository DBMS. </LR.LIST.RESULT
  1238. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  1239. ></RBW-AUTOGEN
  1240. ></RBW-MARKER
  1241. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  1242. ></LN.LIST.NUM
  1243. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  1244. ></RBW-AUTOGEN
  1245. ></RBW-MARKER
  1246. ><RBW-PARABODY>You are asked to specify the value of the LC_CTYPE environment variable. The default is C. Press return to accept the default or specify a value.</RBW-PARABODY
  1247. ></LN.LIST.NUM
  1248. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  1249. ></RBW-AUTOGEN
  1250. ></RBW-MARKER
  1251. ><RBW-PARABODY>You are asked to specify the value of the LC_COLLATE environment variable. The default is C. Press return to accept the default or specify a value.</RBW-PARABODY
  1252. ></LN.LIST.NUM
  1253. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  1254. ></RBW-AUTOGEN
  1255. ></RBW-MARKER
  1256. ><RBW-PARABODY><CX5FX5FFILE.NAME>IBM AIX only:</CX5FX5FFILE.NAME
  1257. > You are asked to specify the value of the LC_NUMERIC environment variable. The default is C. Press return to accept the default or specify a value. Note that this may affect other numeric&truehy;based applications.</RBW-PARABODY
  1258. ></LN.LIST.NUM
  1259. ><LR.LIST.RESULT>The default printer is displayed. </LR.LIST.RESULT
  1260. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  1261. ></RBW-AUTOGEN
  1262. ></RBW-MARKER
  1263. ><RBW-PARABODY>You are asked if you want to change the default printer or printer command for ASCII printing. Specify the printer command or change the default printer. </RBW-PARABODY
  1264. ></LN.LIST.NUM
  1265. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  1266. ></RBW-AUTOGEN
  1267. ></RBW-MARKER
  1268. ><RBW-PARABODY>You are asked if you want to change the default printer or printer command for graphical (PostScript) printing. Specify the printer command or change the default printer. </RBW-PARABODY
  1269. ></LN.LIST.NUM
  1270. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  1271. ></RBW-AUTOGEN
  1272. ></RBW-MARKER
  1273. ><RBW-PARABODY>For FrameMaker users, you are asked if you want to accept the default version of FrameMaker (International English) or if you want to change to the US English version. Press Return to accept the default or type N to change to the US version.</RBW-PARABODY
  1274. ></LN.LIST.NUM
  1275. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  1276. ></RBW-AUTOGEN
  1277. ></RBW-MARKER
  1278. ><RBW-PARABODY>You are asked what kind of license you have. Press Return if you have a Temporary license or type 2 if you have a Permanent license.</RBW-PARABODY
  1279. ></LN.LIST.NUM
  1280. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  1281. ></RBW-AUTOGEN
  1282. ></RBW-MARKER
  1283. ><RBW-PARABODY>You are asked for the name of your repository DBMS home directory. The default is the directory you set in INFORMIXDIR or ORACLE_HOME. Press Return to accept the default.</RBW-PARABODY
  1284. ></LN.LIST.NUM
  1285. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  1286. ></RBW-AUTOGEN
  1287. ></RBW-MARKER
  1288. ><RBW-PARABODY>If you are using Oracle as your repository, you are asked to specify the Oracle SID. The default is the value you set in ORACLE_SID. Press Return to accept the default.</RBW-PARABODY
  1289. ></LN2.LIST.NUM.2
  1290. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  1291. ></RBW-AUTOGEN
  1292. ></RBW-MARKER
  1293. ><RBW-PARABODY>If you are using Informix as your repository, you are asked to specify the name of the Informix server. The default is the value you set in INFORMIXSERVER. Press Return to accept the default or type 2 to change the server.</RBW-PARABODY
  1294. ></LN2.LIST.NUM.2
  1295. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  1296. ></RBW-AUTOGEN
  1297. ></RBW-MARKER
  1298. ><RBW-PARABODY>The location of the DynaText installation. The default is /usr/cayenne/dtext23/bin<CX5FX5FTERM>platform</CX5FX5FTERM
  1299. > where <CX5FX5FTERM>platform</CX5FX5FTERM
  1300. > is one of sun5, hp, ibm, or decosf.</RBW-PARABODY
  1301. ></LN.LIST.NUM
  1302. ></LABEL
  1303. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1304. >Result of m4create_env</L.LABEL
  1305. ><B.BODY>M4create_env creates the following initial files: </B.BODY
  1306. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="229p"><COLSPEC COLNAME="2" COLWIDTH="231p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File</CELLHEADING
  1307. ></ENTRY
  1308. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Use</CELLHEADING
  1309. ></ENTRY
  1310. ></RBW-ROW
  1311. ></THEAD
  1312. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/usr/cayenne/.m4_login</CELLBODY
  1313. ></ENTRY
  1314. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Login file sourced by .login</CELLBODY
  1315. ></ENTRY
  1316. ></RBW-ROW
  1317. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/usr/cayenne/.m4_profile</CELLBODY
  1318. ></ENTRY
  1319. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Login file sourced by .profile</CELLBODY
  1320. ></ENTRY
  1321. ></RBW-ROW
  1322. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  1323. >/etc/objservers.objservers</CELLBODY
  1324. ></ENTRY
  1325. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne Repository definition file</CELLBODY
  1326. ></ENTRY
  1327. ></RBW-ROW
  1328. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  1329. ><RBWAUTO-0004>/</RBWAUTO-0004
  1330. >etc/m4env.m4env</CELLBODY
  1331. ></ENTRY
  1332. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam environment variable file</CELLBODY
  1333. ></ENTRY
  1334. ></RBW-ROW
  1335. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  1336. ><RBWAUTO-0004>/</RBWAUTO-0004
  1337. >bin/ot</CELLBODY
  1338. ></ENTRY
  1339. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Browser startup script</CELLBODY
  1340. ></ENTRY
  1341. ></RBW-ROW
  1342. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  1343. >/bin/starthelp</CELLBODY
  1344. ></ENTRY
  1345. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Help tool startup script</CELLBODY
  1346. ></ENTRY
  1347. ></RBW-ROW
  1348. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  1349. >/bin/otreptool</CELLBODY
  1350. ></ENTRY
  1351. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne Repository tool startup script</CELLBODY
  1352. ></ENTRY
  1353. ></RBW-ROW
  1354. ></TBODY
  1355. ></TGROUP
  1356. ></RBW-TABLE
  1357. ></LABEL
  1358. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1359. >Configuring your Xdefaults</L.LABEL
  1360. ><B.BODY>ObjectTeam is provided with a set of sample Xdefaults. </B.BODY
  1361. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  1362. ></RBW-AUTOGEN
  1363. ></RBW-MARKER
  1364. ><RBW-PARABODY>If you have a $HOME/.Xdefaults file, merge the file /usr/cayenne/objectteam/etc/Xdefaults with your existing .Xdefaults file. </RBW-PARABODY
  1365. ></LB.LIST.BULLET
  1366. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  1367. ></RBW-AUTOGEN
  1368. ></RBW-MARKER
  1369. ><RBW-PARABODY>If you do not have a $HOME/.Xdefaults file, copy the sample .Xdefaults file to your home directory, as follows:</RBW-PARABODY
  1370. ></LB.LIST.BULLET
  1371. ><EM.EXAMPLE.MONO>cd $HOME</EM.EXAMPLE.MONO
  1372. ><EM.EXAMPLE.MONO>cp /usr/cayenne/objectteam/etc/Xdefaults .Xdefaults</EM.EXAMPLE.MONO
  1373. ></LABEL
  1374. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1375. >Setting your environment</L.LABEL
  1376. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1377. ></RBW-AUTOGEN
  1378. ></RBW-MARKER
  1379. ><RBW-PARABODY>To set your environment variables, log out and log in again as cayenne.</RBW-PARABODY
  1380. ></P.PROCEDURE
  1381. ></LABEL
  1382. ></SUBSECTION
  1383. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32806"></RBW-ANCHOR
  1384. >Create a Cayenne Repository</SS.SUBSEC.HEAD
  1385. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1386. >Introduction</L.LABEL
  1387. ><B.BODY>After you have installed the ObjectTeam Master server software from the CD, create a repository for your corporate data. </B.BODY
  1388. ></LABEL
  1389. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1390. >Before you begin</L.LABEL
  1391. ><B.BODY>Before you begin creating a repository, make sure that you have</B.BODY
  1392. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  1393. ></RBW-AUTOGEN
  1394. ></RBW-MARKER
  1395. ><RBW-PARABODY><CX5FX5FFILE.NAME>Informix:</CX5FX5FFILE.NAME
  1396. > Sufficient privileges to create a database.</RBW-PARABODY
  1397. ></LB.LIST.BULLET
  1398. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  1399. ></RBW-AUTOGEN
  1400. ></RBW-MARKER
  1401. ><RBW-PARABODY>A writable directory for storing the file system part of the repository. The recommended location is /usr/cayenne/repos.</RBW-PARABODY
  1402. ></LB.LIST.BULLET
  1403. ></LABEL
  1404. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1405. >How to create a repository</L.LABEL
  1406. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1407. ></RBW-AUTOGEN
  1408. ></RBW-MARKER
  1409. ><RBW-PARABODY>To create a repository:</RBW-PARABODY
  1410. ></P.PROCEDURE
  1411. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1412. ></RBW-AUTOGEN
  1413. ></RBW-MARKER
  1414. ><RBW-PARABODY>While logged on to the Master server as cayenne, check that the Cayenne Repository Broker service (ot_broker) is running. If it is not, enter:</RBW-PARABODY
  1415. ></LN.LIST.NUM
  1416. ><EM.EXAMPLE.MONO>ot_broker &</EM.EXAMPLE.MONO
  1417. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1418. ></RBW-AUTOGEN
  1419. ></RBW-MARKER
  1420. ><RBW-PARABODY>Start the Repository tool by entering the following:</RBW-PARABODY
  1421. ></LN.LIST.NUM
  1422. ><EM.EXAMPLE.MONO>otreptool &</EM.EXAMPLE.MONO
  1423. ><LR.LIST.RESULT>The Repository tool appears.</LR.LIST.RESULT
  1424. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  1425. ></RBW-AUTOGEN
  1426. ></RBW-MARKER
  1427. ><RBW-PARABODY>Double&truehy;click on the Corporate Management tool.</RBW-PARABODY
  1428. ></LN.LIST.NUM
  1429. ><LR.LIST.RESULT>The Corporate Management tool appears.</LR.LIST.RESULT
  1430. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  1431. ></RBW-AUTOGEN
  1432. ></RBW-MARKER
  1433. ><RBW-PARABODY>Select File | New.</RBW-PARABODY
  1434. ></LN.LIST.NUM
  1435. ><LR.LIST.RESULT>The New Repository dialog appears.</LR.LIST.RESULT
  1436. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00005.unk" origfile="pics/newrep.gif" origtype="X" origdoc="../../sources/igun/iguninst.fm5.mif"></RBW-GRAPHIC
  1437. ></FA2.FIGURE.ANCHOR.2
  1438. ><LT.LIST.TEXT>All fields are explained below.</LT.LIST.TEXT
  1439. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  1440. ></RBW-AUTOGEN
  1441. ></RBW-MARKER
  1442. ><RBW-PARABODY>Fill in the fields, then click OK.</RBW-PARABODY
  1443. ></LN.LIST.NUM
  1444. ><LR.LIST.RESULT>A Monitor window is started which runs the dbserver command to create the repository. If the repository is created successfully, it becomes selected in the Corporate Management tool.</LR.LIST.RESULT
  1445. ></LABEL
  1446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1447. >Fields</L.LABEL
  1448. ><B.BODY>The New Repository dialog always contains the following fields:</B.BODY
  1449. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="138p"><COLSPEC COLNAME="2" COLWIDTH="309p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Field</CELLHEADING
  1450. ></ENTRY
  1451. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  1452. ></ENTRY
  1453. ></RBW-ROW
  1454. ></THEAD
  1455. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate name</CELLBODY
  1456. ></ENTRY
  1457. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of your repository. This will appear as the corporate object (that is the top level) in the ObjectTeam Browser.</CELLBODY
  1458. ></ENTRY
  1459. ></RBW-ROW
  1460. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make this repository the default</CELLBODY
  1461. ></ENTRY
  1462. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This makes this repository the one that will be displayed in your Browser.</CELLBODY
  1463. ></ENTRY
  1464. ></RBW-ROW
  1465. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Directory in which to create the repository</CELLBODY
  1466. ></ENTRY
  1467. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The full pathname of the directory in which the file&truehy;system part of the repository is stored. The recommended location is /usr/cayenne/repos.</CELLBODY
  1468. ></ENTRY
  1469. ></RBW-ROW
  1470. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>User Environment Root directory</CELLBODY
  1471. ></ENTRY
  1472. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional. The directory in which all generated files, such as code files, are stored. The value specified here is assigned to the corporate&truehy;level File System Path Part property. Cayenne strongly recommends that you specify a directory on a network drive.</CELLBODY
  1473. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  1474. > See the discussion of the <CX5FX5FTERM>user environment</CX5FX5FTERM
  1475. > in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  1476. ><CX5FX5FTITLE></CX5FX5FTITLE
  1477. > for more information about the File System Path Part property.</CELLBODY
  1478. ></ENTRY
  1479. ></RBW-ROW
  1480. ></TBODY
  1481. ></TGROUP
  1482. ></RBW-TABLE
  1483. ><B.BODY>It also contains a number of database&truehy;specific fields:</B.BODY
  1484. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="138p"><COLSPEC COLNAME="2" COLWIDTH="309p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Field</CELLHEADING
  1485. ></ENTRY
  1486. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  1487. ></ENTRY
  1488. ></RBW-ROW
  1489. ></THEAD
  1490. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database name</CELLBODY
  1491. ></ENTRY
  1492. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Informix</CX5FX5FFILE.NAME
  1493. >. This is the name of the database to be created.</CELLBODY
  1494. ></ENTRY
  1495. ></RBW-ROW
  1496. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database server</CELLBODY
  1497. ></ENTRY
  1498. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Informix</CX5FX5FFILE.NAME
  1499. >. This is the name of the machine on which Informix is running (referred to elsewhere in this guide as the Repository server).</CELLBODY
  1500. ></ENTRY
  1501. ></RBW-ROW
  1502. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database connect string</CELLBODY
  1503. ></ENTRY
  1504. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Oracle</CX5FX5FFILE.NAME
  1505. >. If SQL*Net is installed, specify the Oracle database specification string (ORACLE_SID), e.g., oracle7. </CELLBODY
  1506. ><CELLBODY>If SQL*Net is not installed, enter “default” in this field and set the ORACLE_SID environment variable to the system identifier of the database that you want to use.</CELLBODY
  1507. ></ENTRY
  1508. ></RBW-ROW
  1509. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database user</CELLBODY
  1510. ></ENTRY
  1511. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Oracle</CX5FX5FFILE.NAME
  1512. >. This is the schema id of the Oracle user. </CELLBODY
  1513. ></ENTRY
  1514. ></RBW-ROW
  1515. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database password</CELLBODY
  1516. ></ENTRY
  1517. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Oracle</CX5FX5FFILE.NAME
  1518. >. Enter the password using the Enter button. This opens an entry dialog in which you can enter the password.</CELLBODY
  1519. ></ENTRY
  1520. ></RBW-ROW
  1521. ></TBODY
  1522. ></TGROUP
  1523. ></RBW-TABLE
  1524. ></LABEL
  1525. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1526. >Test Your Installation</L.LABEL
  1527. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1528. ></RBW-AUTOGEN
  1529. ></RBW-MARKER
  1530. ><RBW-PARABODY>To test your installation, start the Browser:</RBW-PARABODY
  1531. ></P.PROCEDURE
  1532. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1533. ></RBW-AUTOGEN
  1534. ></RBW-MARKER
  1535. ><RBW-PARABODY>Start the Browser by entering:</RBW-PARABODY
  1536. ></LN.LIST.NUM
  1537. ><EM.EXAMPLE.MONO>ot &</EM.EXAMPLE.MONO
  1538. ><LR.LIST.RESULT>The Browser window appears.</LR.LIST.RESULT
  1539. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1540. ></RBW-AUTOGEN
  1541. ></RBW-MARKER
  1542. ><RBW-PARABODY>To access the product documentation, select Help | Product Documentation in the ObjectTeam Browser.</RBW-PARABODY
  1543. ></P.PROCEDURE
  1544. ></LABEL
  1545. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1546. >Troubleshooting</L.LABEL
  1547. ><B.BODY>If anything goes wrong during the creation of the repository or testing your installation, refer to Appendix D, Troubleshooting.</B.BODY
  1548. ></LABEL
  1549. ></SUBSECTION
  1550. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15479"></RBW-ANCHOR
  1551. >Update The Startup Files</SS.SUBSEC.HEAD
  1552. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1553. >Configuring the Broker </L.LABEL
  1554. ><B.BODY>Once you have tested your installation, it is convenient to configure the Cayenne Repository broker and license server to start automatically at boot time. </B.BODY
  1555. ></LABEL
  1556. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1557. >Setting your startup file</L.LABEL
  1558. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1559. ></RBW-AUTOGEN
  1560. ></RBW-MARKER
  1561. ><RBW-PARABODY>To set your startup file:</RBW-PARABODY
  1562. ></P.PROCEDURE
  1563. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1564. ></RBW-AUTOGEN
  1565. ></RBW-MARKER
  1566. ><RBW-PARABODY>Log in as root.</RBW-PARABODY
  1567. ></LN.LIST.NUM
  1568. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1569. ></RBW-AUTOGEN
  1570. ></RBW-MARKER
  1571. ><RBW-PARABODY>Copy the default startup file:</RBW-PARABODY
  1572. ></LN.LIST.NUM
  1573. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  1574. > </LT.LIST.TEXT
  1575. ><EM.EXAMPLE.MONO>cp /usr/cayenne/objectteam/etc/ot /etc/init.d/ot </EM.EXAMPLE.MONO
  1576. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  1577. > </LT.LIST.TEXT
  1578. ><EM.EXAMPLE.MONO>cp /usr/cayenne/objectteam/etc/ot /sbin/init.d/ot</EM.EXAMPLE.MONO
  1579. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  1580. > </LT.LIST.TEXT
  1581. ><EM.EXAMPLE.MONO>cp /usr/cayenne/objectteam/etc/ot /etc/rc.ot</EM.EXAMPLE.MONO
  1582. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  1583. > </LT.LIST.TEXT
  1584. ><EM.EXAMPLE.MONO>cp /usr/cayenne/objectteam/etc/ot /etc/init.d/ot</EM.EXAMPLE.MONO
  1585. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  1586. ></RBW-AUTOGEN
  1587. ></RBW-MARKER
  1588. ><RBW-PARABODY>Make links to the startup file</RBW-PARABODY
  1589. ></LN.LIST.NUM
  1590. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  1591. > </LT.LIST.TEXT
  1592. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/ot /etc/rc3.d/S19ot</EM.EXAMPLE.MONO
  1593. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/ot /etc/rc0.d/K19ot</EM.EXAMPLE.MONO
  1594. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  1595. > </LT.LIST.TEXT
  1596. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc2.d/S719ot</EM.EXAMPLE.MONO
  1597. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc0.d/K719ot</EM.EXAMPLE.MONO
  1598. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  1599. > Add the following lines to /etc/inittab:</LT.LIST.TEXT
  1600. ><EM.EXAMPLE.MONO>ot:2:once: sh /etc/rc.ot start</EM.EXAMPLE.MONO
  1601. ><EM.EXAMPLE.MONO>ot:0:once: sh /etc/rc.ot stop</EM.EXAMPLE.MONO
  1602. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  1603. > </LT.LIST.TEXT
  1604. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc3.d/S19ot</EM.EXAMPLE.MONO
  1605. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc2.d/K19ot</EM.EXAMPLE.MONO
  1606. ><B.BODY>You can enter any numbers after S and K as long as startup and shutdown are done in the correct order. It is important that the DBMS server start before the ot_broker starts, and that the ot_broker stop before the DBMS server stops.</B.BODY
  1607. ></LABEL
  1608. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1609. >Editing the startup file</L.LABEL
  1610. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1611. ></RBW-AUTOGEN
  1612. ></RBW-MARKER
  1613. ><RBW-PARABODY>To have the ot_broker start automatically at boot time:</RBW-PARABODY
  1614. ></P.PROCEDURE
  1615. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1616. ></RBW-AUTOGEN
  1617. ></RBW-MARKER
  1618. ><RBW-PARABODY>Open the ot file you just copied in a text editor.</RBW-PARABODY
  1619. ></LN.LIST.NUM
  1620. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1621. ></RBW-AUTOGEN
  1622. ></RBW-MARKER
  1623. ><RBW-PARABODY>If the license server is running on this machine, check the location of the FLEXlm installation and the ObjectTeam license file:</RBW-PARABODY
  1624. ></LN.LIST.NUM
  1625. ><EM.EXAMPLE.MONO>LMHOME=/usr/cayenne/flexlm</EM.EXAMPLE.MONO
  1626. ><EM.EXAMPLE.MONO>LM_LICENSE_FILE=$LMHOME/license/cayenne.dat</EM.EXAMPLE.MONO
  1627. ><LT.LIST.TEXT>If the license server is running on another machine, set the location of the ObjectTeam license server:</LT.LIST.TEXT
  1628. ><EM.EXAMPLE.MONO>LM_LICENSE_FILE=<CX5FX5FTERM>port</CX5FX5FTERM
  1629. >@<CX5FX5FTERM>host</CX5FX5FTERM
  1630. ></EM.EXAMPLE.MONO
  1631. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  1632. ></RBW-AUTOGEN
  1633. ></RBW-MARKER
  1634. ><RBW-PARABODY>Check the following line points to the root directory of the installation:</RBW-PARABODY
  1635. ></LN.LIST.NUM
  1636. ><EM.EXAMPLE.MONO>M4_home=/usr/cayenne/objectteam</EM.EXAMPLE.MONO
  1637. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  1638. ></RBW-AUTOGEN
  1639. ></RBW-MARKER
  1640. ><RBW-PARABODY>If you did not install ObjectTeam as user cayenne, look for the following line:</RBW-PARABODY
  1641. ></LN.LIST.NUM
  1642. ><EM.EXAMPLE.MONO>CAYNID=${CAYNID:&truehy;”cayenne”}</EM.EXAMPLE.MONO
  1643. ><LT.LIST.TEXT>and replace cayenne with the name of the user you used to install ObjectTeam.</LT.LIST.TEXT
  1644. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  1645. ></RBW-AUTOGEN
  1646. ></RBW-MARKER
  1647. ><RBW-PARABODY>If this host is the license server, look for the following text:</RBW-PARABODY
  1648. ></LN.LIST.NUM
  1649. ><EWM.EXAMPLEW.MONO># If this script is run on the host used as license server,</EWM.EXAMPLEW.MONO
  1650. ><EWM.EXAMPLEW.MONO># uncomment one of the next two start&truehy;up instructions and</EWM.EXAMPLEW.MONO
  1651. ><EWM.EXAMPLEW.MONO># uncomment the line with ‘lmdown’ at the end of this file.</EWM.EXAMPLEW.MONO
  1652. ><LT.LIST.TEXT>and uncomment the appropriate lines depending on whether you want the license server to run with logging (default) or not. Do not uncomment these lines if you have a temporary license.</LT.LIST.TEXT
  1653. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  1654. ></RBW-AUTOGEN
  1655. ></RBW-MARKER
  1656. ><RBW-PARABODY>If this host is the license server, look for the following text:</RBW-PARABODY
  1657. ></LN.LIST.NUM
  1658. ><EWM.EXAMPLEW.MONO># If this script is run on the host used as license server,</EWM.EXAMPLEW.MONO
  1659. ><EWM.EXAMPLEW.MONO># uncomment the next line to stop the daemon automatically.</EWM.EXAMPLEW.MONO
  1660. ><LT.LIST.TEXT>and uncomment the indicated line. Do not uncomment this line if you have a temporary license.</LT.LIST.TEXT
  1661. ></LABEL
  1662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1663. >Restarting the broker </L.LABEL
  1664. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1665. ></RBW-AUTOGEN
  1666. ></RBW-MARKER
  1667. ><RBW-PARABODY>To restart the broker (and license server if you installed FLEXlm on the Master server), reboot your machine.</RBW-PARABODY
  1668. ></P.PROCEDURE
  1669. ></LABEL
  1670. ></SUBSECTION
  1671. ></SECTION
  1672. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29343"></RBW-ANCHOR
  1673. >Installing an ObjectTeam Slave Server</S.SECTION.HEAD
  1674. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1675. >Choosing an installation method</L.LABEL
  1676. ><B.BODY>On the ObjectTeam Master server, the product files are installed in the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  1677. > directory (by default /usr/cayenne/objectteam). </B.BODY
  1678. ><B.BODY>There are two ways to install a Slave server:</B.BODY
  1679. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  1680. ></RBW-AUTOGEN
  1681. ></RBW-MARKER
  1682. ><RBW-PARABODY>Access the Master server’s <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  1683. > directory and the DBMS installation by mounting them using NFS. This is useful where you want to reduce the load on the Master server’s CPU, but your network is not a bottleneck.</RBW-PARABODY
  1684. ></LB.LIST.BULLET
  1685. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  1686. ></RBW-AUTOGEN
  1687. ></RBW-MARKER
  1688. ><RBW-PARABODY>Install the ObjectTeam product files and a DBMS client locally on the Slave server machine. This has the advantage of further reducing network traffic between the Master and Slave.</RBW-PARABODY
  1689. ></LB.LIST.BULLET
  1690. ><B.BODY>If <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  1691. > is mounted, the directory hierarchy, including the location of the repository directory (the directory where all repository files reside), is automatically the same on both the Master server and Slave server. If the ObjectTeam product files are installed locally on the Slave server, the repository directory on the Master server must be mounted on the Slave in the same location.</B.BODY
  1692. ><B.BODY>For example:</B.BODY
  1693. ><EM.EXAMPLE.MONO>mount Master:/usr/cayenne/repos /usr/cayenne/repos</EM.EXAMPLE.MONO
  1694. ><B.BODY>where <CX5FX5FTERM>Master </CX5FX5FTERM
  1695. >is the name of the Master server.</B.BODY
  1696. ></LABEL
  1697. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1698. >Requirements</L.LABEL
  1699. ><B.BODY>Before you can install an ObjectTeam Slave server, you must have installed an ObjectTeam Master server, as described in <RBW-XREF REFID="17595" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Master Server</RBW-XREF
  1700. >.</B.BODY
  1701. ><B.BODY>The user cayenne must also be known on the Slave server.</B.BODY
  1702. ></LABEL
  1703. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1704. >In this section</L.LABEL
  1705. ><B.BODY>This section covers the following topics:</B.BODY
  1706. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  1707. ></ENTRY
  1708. ></RBW-ROW
  1709. ></THEAD
  1710. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29700" TYPE="XREF-TEXTCOPY">Accessing a Mounted Installation from the Slave Server&rbwtab;2–19</RBW-XREF
  1711. ></SB.SECTION.BLOCK.TABLE
  1712. ></ENTRY
  1713. ></RBW-ROW
  1714. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28210" TYPE="XREF-TEXTCOPY">Installing the Product Files on the Slave Server&rbwtab;2–22</RBW-XREF
  1715. ></SB.SECTION.BLOCK.TABLE
  1716. ></ENTRY
  1717. ></RBW-ROW
  1718. ></TBODY
  1719. ></TGROUP
  1720. ></RBW-TABLE
  1721. ><B.BODY></B.BODY
  1722. ></LABEL
  1723. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29700"></RBW-ANCHOR
  1724. >Accessing a Mounted Installation from the Slave Server</SS.SUBSEC.HEAD
  1725. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1726. >Introduction</L.LABEL
  1727. ><B.BODY>This is the simplest way of installing a Slave server. With this type of installation, you access the ObjectTeam installation on the Master server.</B.BODY
  1728. ><B.BODY>The Master must be configured as an NFS server and the file system to be mounted must be exported.</B.BODY
  1729. ></LABEL
  1730. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1731. >Mount the ObjectTeam Product Files </L.LABEL
  1732. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1733. ></RBW-AUTOGEN
  1734. ></RBW-MARKER
  1735. ><RBW-PARABODY>Log in to the Slave server as root and mount the ObjectTeam /usr/cayenne/objectteam directory. </RBW-PARABODY
  1736. ></P.PROCEDURE
  1737. ></LABEL
  1738. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1739. >Setting your startup file on the Slave server</L.LABEL
  1740. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1741. ></RBW-AUTOGEN
  1742. ></RBW-MARKER
  1743. ><RBW-PARABODY>To set your startup file:</RBW-PARABODY
  1744. ></P.PROCEDURE
  1745. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1746. ></RBW-AUTOGEN
  1747. ></RBW-MARKER
  1748. ><RBW-PARABODY>Log in to the Slave server as root.</RBW-PARABODY
  1749. ></LN.LIST.NUM
  1750. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1751. ></RBW-AUTOGEN
  1752. ></RBW-MARKER
  1753. ><RBW-PARABODY>Copy the default startup file:</RBW-PARABODY
  1754. ></LN.LIST.NUM
  1755. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  1756. > </LT.LIST.TEXT
  1757. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/init.d/ot </EM.EXAMPLE.MONO
  1758. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  1759. > </LT.LIST.TEXT
  1760. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /sbin/init.d/ot</EM.EXAMPLE.MONO
  1761. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  1762. > </LT.LIST.TEXT
  1763. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/rc.ot</EM.EXAMPLE.MONO
  1764. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  1765. > </LT.LIST.TEXT
  1766. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/init.d/ot</EM.EXAMPLE.MONO
  1767. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  1768. ></RBW-AUTOGEN
  1769. ></RBW-MARKER
  1770. ><RBW-PARABODY>Make links to the startup file</RBW-PARABODY
  1771. ></LN.LIST.NUM
  1772. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  1773. > </LT.LIST.TEXT
  1774. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/ot /etc/rc3.d/S19ot</EM.EXAMPLE.MONO
  1775. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/ot /etc/rc0.d/K19ot</EM.EXAMPLE.MONO
  1776. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  1777. > </LT.LIST.TEXT
  1778. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc2.d/S719ot</EM.EXAMPLE.MONO
  1779. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc0.d/K719ot</EM.EXAMPLE.MONO
  1780. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  1781. > Add the following lines to /etc/inittab:</LT.LIST.TEXT
  1782. ><EM.EXAMPLE.MONO>ot:2:once: sh /etc/rc.ot start</EM.EXAMPLE.MONO
  1783. ><EM.EXAMPLE.MONO>ot:0:once: sh /etc/rc.ot stop</EM.EXAMPLE.MONO
  1784. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  1785. > </LT.LIST.TEXT
  1786. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc3.d/S19ot</EM.EXAMPLE.MONO
  1787. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc2.d/K19ot</EM.EXAMPLE.MONO
  1788. ><B.BODY>You can enter any numbers after S and K as long as startup and shutdown are done in the correct order. It is important that the DBMS server start before the ot_broker starts, and that the ot_broker stop before the DBMS server stops.</B.BODY
  1789. ></LABEL
  1790. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1791. >Editing the startup file</L.LABEL
  1792. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1793. ></RBW-AUTOGEN
  1794. ></RBW-MARKER
  1795. ><RBW-PARABODY>To have the ot_broker start automatically at boot time:</RBW-PARABODY
  1796. ></P.PROCEDURE
  1797. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1798. ></RBW-AUTOGEN
  1799. ></RBW-MARKER
  1800. ><RBW-PARABODY>While logged in as root, open the ot file you just copied in a text editor.</RBW-PARABODY
  1801. ></LN.LIST.NUM
  1802. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1803. ></RBW-AUTOGEN
  1804. ></RBW-MARKER
  1805. ><RBW-PARABODY>Check the following line points to the root directory of the installation:</RBW-PARABODY
  1806. ></LN.LIST.NUM
  1807. ><EM.EXAMPLE.MONO>M4_home=/usr/cayenne/objectteam</EM.EXAMPLE.MONO
  1808. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  1809. ></RBW-AUTOGEN
  1810. ></RBW-MARKER
  1811. ><RBW-PARABODY>Check the following lines point to the location of the FLEXlm installation and the license file:</RBW-PARABODY
  1812. ></LN.LIST.NUM
  1813. ><EM.EXAMPLE.MONO>LMHOME=/usr/cayenne/flexlm</EM.EXAMPLE.MONO
  1814. ><EM.EXAMPLE.MONO>LM_LICENSE_FILE=$LMHOME/license/cayenne.dat</EM.EXAMPLE.MONO
  1815. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  1816. ></RBW-AUTOGEN
  1817. ></RBW-MARKER
  1818. ><RBW-PARABODY>If you did not install ObjectTeam as user cayenne, look for the following line:</RBW-PARABODY
  1819. ></LN.LIST.NUM
  1820. ><EM.EXAMPLE.MONO>CAYNID=${CAYNID:&truehy;”cayenne”}</EM.EXAMPLE.MONO
  1821. ><LT.LIST.TEXT>and replace cayenne with the name of the user you used to install ObjectTeam.</LT.LIST.TEXT
  1822. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  1823. ></RBW-AUTOGEN
  1824. ></RBW-MARKER
  1825. ><RBW-PARABODY>If this host is the license server, look for the following text:</RBW-PARABODY
  1826. ></LN.LIST.NUM
  1827. ><EWM.EXAMPLEW.MONO># If this script is run on the host used as license server,</EWM.EXAMPLEW.MONO
  1828. ><EWM.EXAMPLEW.MONO># uncomment one of the next two start&truehy;up instructions and</EWM.EXAMPLEW.MONO
  1829. ><EWM.EXAMPLEW.MONO># uncomment the line with ‘lmdown’ at the end of this file.</EWM.EXAMPLEW.MONO
  1830. ><LT.LIST.TEXT>and uncomment the appropriate lines depending on whether you want the license server to run with logging (default) or not. Do not uncomment these lines if you have a temporary license.</LT.LIST.TEXT
  1831. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  1832. ></RBW-AUTOGEN
  1833. ></RBW-MARKER
  1834. ><RBW-PARABODY>If this host is the license server, look for the following text:</RBW-PARABODY
  1835. ></LN.LIST.NUM
  1836. ><EWM.EXAMPLEW.MONO># If this script is run on the host used as license server,</EWM.EXAMPLEW.MONO
  1837. ><EWM.EXAMPLEW.MONO># uncomment the next line to stop the daemon automatically.</EWM.EXAMPLEW.MONO
  1838. ><LT.LIST.TEXT>and uncomment the indicated line. Do not uncomment this line if you have a temporary license.</LT.LIST.TEXT
  1839. ></LABEL
  1840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1841. >Restarting the broker </L.LABEL
  1842. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1843. ></RBW-AUTOGEN
  1844. ></RBW-MARKER
  1845. ><RBW-PARABODY>To restart the broker (and the license server if you installed FLEXlm on the Slave server), reboot your machine.</RBW-PARABODY
  1846. ></P.PROCEDURE
  1847. ></LABEL
  1848. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1849. >Starting ObjectTeam as user cayenne</L.LABEL
  1850. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1851. ></RBW-AUTOGEN
  1852. ></RBW-MARKER
  1853. ><RBW-PARABODY>To start the ObjectTeam Browser:</RBW-PARABODY
  1854. ></P.PROCEDURE
  1855. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1856. ></RBW-AUTOGEN
  1857. ></RBW-MARKER
  1858. ><RBW-PARABODY>In your shell window, enter:</RBW-PARABODY
  1859. ></LN.LIST.NUM
  1860. ><EM.EXAMPLE.MONO>ot &</EM.EXAMPLE.MONO
  1861. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1862. ></RBW-AUTOGEN
  1863. ></RBW-MARKER
  1864. ><RBW-PARABODY>To access the product documentation, select Help | Product Documentation in the ObjectTeam Browser.</RBW-PARABODY
  1865. ></P.PROCEDURE
  1866. ></LABEL
  1867. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1868. >Running ObjectTeam as a normal user on the Slave server</L.LABEL
  1869. ><B.BODY>If you want to work on the Slave server as a normal user, you must configure a client, as described in <RBW-XREF REFID="12020" TYPE="XREF-TEXTCOPY">Accessing a Mounted Installation from the Client</RBW-XREF
  1870. >.</B.BODY
  1871. ></LABEL
  1872. ></SUBSECTION
  1873. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28210"></RBW-ANCHOR
  1874. >Installing the Product Files on the Slave Server</SS.SUBSEC.HEAD
  1875. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1876. >Introduction</L.LABEL
  1877. ><B.BODY>With this type of installation you install the ObjectTeam product files on the Slave server. </B.BODY
  1878. ></LABEL
  1879. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1880. >Installation Steps</L.LABEL
  1881. ><B.BODY>To install ObjectTeam, perform the following steps:</B.BODY
  1882. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="52p"><COLSPEC COLNAME="2" COLWIDTH="391p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>step</CELLHEADING
  1883. ></ENTRY
  1884. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>task</CELLHEADING
  1885. ></ENTRY
  1886. ></RBW-ROW
  1887. ></THEAD
  1888. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  1889. ></ENTRY
  1890. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Mount the repository directory from the Master server</CELLBODY
  1891. ></ENTRY
  1892. ></RBW-ROW
  1893. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  1894. ></ENTRY
  1895. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Install an RDBMS client on the Slave</CELLBODY
  1896. ></ENTRY
  1897. ></RBW-ROW
  1898. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  1899. ></ENTRY
  1900. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create /usr/cayenne</CELLBODY
  1901. ></ENTRY
  1902. ></RBW-ROW
  1903. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  1904. ></ENTRY
  1905. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Install the DynaText reader</CELLBODY
  1906. ></ENTRY
  1907. ></RBW-ROW
  1908. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  1909. ></ENTRY
  1910. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Install the ObjectTeam product files on the Slave</CELLBODY
  1911. ></ENTRY
  1912. ></RBW-ROW
  1913. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  1914. ></ENTRY
  1915. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set ObjectTeam environment variables using the m4create_env script. </CELLBODY
  1916. ></ENTRY
  1917. ></RBW-ROW
  1918. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  1919. ></ENTRY
  1920. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set the broker to start automatically</CELLBODY
  1921. ></ENTRY
  1922. ></RBW-ROW
  1923. ></TBODY
  1924. ></TGROUP
  1925. ></RBW-TABLE
  1926. ></LABEL
  1927. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1928. >Mount the repository directory</L.LABEL
  1929. ><B.BODY>Mount the repository directory from the Master server. The repository directory must be mounted on the Slave in the same location as on the Master server.</B.BODY
  1930. ><B.BODY>For example:</B.BODY
  1931. ><EM.EXAMPLE.MONO>mount Master:/usr/cayenne/repos /usr/cayenne/repos</EM.EXAMPLE.MONO
  1932. ><B.BODY>where <CX5FX5FTERM>Master </CX5FX5FTERM
  1933. >is the name of the Master server.</B.BODY
  1934. ></LABEL
  1935. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1936. >Install an RDBMS client </L.LABEL
  1937. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1938. >Oracle</SL.SUBLABEL
  1939. ><B.BODY>For details on how to install an Oracle client, see your Oracle system documentation.</B.BODY
  1940. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1941. >Informix</SL.SUBLABEL
  1942. ><B.BODY>See <RBW-XREF REFID="17638" TYPE="XREF-TEXTCOPY">Setting Up Informix Client</RBW-XREF
  1943. >.</B.BODY
  1944. ></LABEL
  1945. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1946. >Create a home directory</L.LABEL
  1947. ><B.BODY>You must create the home directory of user cayenne.</B.BODY
  1948. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1949. ></RBW-AUTOGEN
  1950. ></RBW-MARKER
  1951. ><RBW-PARABODY>Log in as root.</RBW-PARABODY
  1952. ></LN.LIST.NUM
  1953. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1954. ></RBW-AUTOGEN
  1955. ></RBW-MARKER
  1956. ><RBW-PARABODY>Create the directory /usr/cayenne.</RBW-PARABODY
  1957. ></LN.LIST.NUM
  1958. ></LABEL
  1959. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1960. >How to install the ObjectTeam product files</L.LABEL
  1961. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  1962. ></RBW-AUTOGEN
  1963. ></RBW-MARKER
  1964. ><RBW-PARABODY>To install the ObjectTeam product files:</RBW-PARABODY
  1965. ></P.PROCEDURE
  1966. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  1967. ></RBW-AUTOGEN
  1968. ></RBW-MARKER
  1969. ><RBW-PARABODY>While logged in as cayenne, run the ObjectTeam install script.</RBW-PARABODY
  1970. ></LN.LIST.NUM
  1971. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  1972. > </LT.LIST.TEXT
  1973. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/sol/objecttm</EM.EXAMPLE.MONO
  1974. ><EM.EXAMPLE.MONO>./instot</EM.EXAMPLE.MONO
  1975. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  1976. > </LT.LIST.TEXT
  1977. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/HPUX/OBJECTTM</EM.EXAMPLE.MONO
  1978. ><EM.EXAMPLE.MONO>./INSTOT</EM.EXAMPLE.MONO
  1979. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  1980. > </LT.LIST.TEXT
  1981. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/aix/objecttm</EM.EXAMPLE.MONO
  1982. ><EM.EXAMPLE.MONO>./instot</EM.EXAMPLE.MONO
  1983. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  1984. > </LT.LIST.TEXT
  1985. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/DUX/OBJECTTM</EM.EXAMPLE.MONO
  1986. ><EM.EXAMPLE.MONO>./INSTOT</EM.EXAMPLE.MONO
  1987. ><LR.LIST.RESULT>The ObjectTeam product files are installed.</LR.LIST.RESULT
  1988. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  1989. ></RBW-AUTOGEN
  1990. ></RBW-MARKER
  1991. ><RBW-PARABODY>You are asked if you want the <CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  1992. ><CX5FX5FTERM></CX5FX5FTERM
  1993. > <CX5FX5FTERM>Product Documentation </CX5FX5FTERM
  1994. >to be installed. Enter yes or no.</RBW-PARABODY
  1995. ></LN.LIST.NUM
  1996. ></LABEL
  1997. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  1998. >How to install DynaText</L.LABEL
  1999. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2000. ></RBW-AUTOGEN
  2001. ></RBW-MARKER
  2002. ><RBW-PARABODY>If you have installed the ObjectTeam documentation, you must install the DynaText reader:</RBW-PARABODY
  2003. ></P.PROCEDURE
  2004. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2005. ></RBW-AUTOGEN
  2006. ></RBW-MARKER
  2007. ><RBW-PARABODY>While logged in as cayenne, enter the following:</RBW-PARABODY
  2008. ></LN.LIST.NUM
  2009. ><EM.EXAMPLE.MONO>mkdir /usr/cayenne/dtext23</EM.EXAMPLE.MONO
  2010. ><EM.EXAMPLE.MONO>cd /usr/cayenne/dtext23</EM.EXAMPLE.MONO
  2011. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2012. ></RBW-AUTOGEN
  2013. ></RBW-MARKER
  2014. ><RBW-PARABODY>Untar the DynaText files:</RBW-PARABODY
  2015. ></LN.LIST.NUM
  2016. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris/AIX:</CX5FX5FFILE.NAME
  2017. > </LT.LIST.TEXT
  2018. ><EM.EXAMPLE.MONO>tar xvf /cdrom/dynatext/unix/dtext23c.tar</EM.EXAMPLE.MONO
  2019. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX/D&truehy;UX:</CX5FX5FFILE.NAME
  2020. > </LT.LIST.TEXT
  2021. ><EM.EXAMPLE.MONO>tar xvf /cdrom/DYNATEXT/UNIX/DTEXT23C.TAR</EM.EXAMPLE.MONO
  2022. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2023. ></RBW-AUTOGEN
  2024. ></RBW-MARKER
  2025. ><RBW-PARABODY>Run install.full </RBW-PARABODY
  2026. ></LN.LIST.NUM
  2027. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  2028. ></RBW-AUTOGEN
  2029. ></RBW-MARKER
  2030. ><RBW-PARABODY>DynaText installs by default into the current directory. Follow the </RBW-PARABODY
  2031. ></LN.LIST.NUM
  2032. ><LN.LIST.NUM>instructions:</LN.LIST.NUM
  2033. ><EM.EXAMPLE.MONO>“Would you like to install as an evaluation copy?”</EM.EXAMPLE.MONO
  2034. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  2035. ></RBW-AUTOGEN
  2036. ></RBW-MARKER
  2037. ><RBW-PARABODY>Enter “n” (for No). </RBW-PARABODY
  2038. ></LN2.LIST.NUM.2
  2039. ><EM.EXAMPLE.MONO>“Do you need to run the EBT Server?” </EM.EXAMPLE.MONO
  2040. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  2041. ></RBW-AUTOGEN
  2042. ></RBW-MARKER
  2043. ><RBW-PARABODY>Enter “n”.</RBW-PARABODY
  2044. ></LN2.LIST.NUM.2
  2045. ><EM.EXAMPLE.MONO>“Do you want to install as a run&truehy;time version of DynaText?” </EM.EXAMPLE.MONO
  2046. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  2047. ></RBW-AUTOGEN
  2048. ></RBW-MARKER
  2049. ><RBW-PARABODY>Enter “y”.</RBW-PARABODY
  2050. ></LN2.LIST.NUM.2
  2051. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  2052. ></RBW-AUTOGEN
  2053. ></RBW-MARKER
  2054. ><RBW-PARABODY>You are asked which binaries and libraries to install. Enter “y” for your operating system and “n” for others. </RBW-PARABODY
  2055. ></LN.LIST.NUM
  2056. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  2057. ></RBW-AUTOGEN
  2058. ></RBW-MARKER
  2059. ><RBW-PARABODY>Copy the DynaText resource file to your home directory:</RBW-PARABODY
  2060. ></LN.LIST.NUM
  2061. ><EWM.EXAMPLEW.MONO>cp /usr/cayenne/dtext23/examples/ebtrc/.ebtrc /usr/cayenne </EWM.EXAMPLEW.MONO
  2062. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  2063. ></RBW-AUTOGEN
  2064. ></RBW-MARKER
  2065. ><RBW-PARABODY>Open the file /usr/cayenne/.ebtrc in a text editor and add the following line:</RBW-PARABODY
  2066. ></LN.LIST.NUM
  2067. ><EWM.EXAMPLEW.MONO>COLLECTION /usr/cayenne/objectteam/doc=ObjectTeam 7.1.1 Books</EWM.EXAMPLEW.MONO
  2068. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  2069. ></RBW-AUTOGEN
  2070. ></RBW-MARKER
  2071. ><RBW-PARABODY>To start DynaText, run /usr/cayenne/dtext23/bin<CX5FX5FTERM>platform</CX5FX5FTERM
  2072. >/dtext& where <CX5FX5FTERM>platform</CX5FX5FTERM
  2073. > is one of sun5, hp, ibm or decosf.</RBW-PARABODY
  2074. ></LN.LIST.NUM
  2075. ></LABEL
  2076. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2077. >How to add a service</L.LABEL
  2078. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2079. ></RBW-AUTOGEN
  2080. ></RBW-MARKER
  2081. ><RBW-PARABODY>When you installed the Master server, you added a service in the services file on the Master service. If NIS is not used, you must add a service for ObjectTeam on the Slave server also:</RBW-PARABODY
  2082. ></P.PROCEDURE
  2083. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2084. ></RBW-AUTOGEN
  2085. ></RBW-MARKER
  2086. ><RBW-PARABODY>Log in as root.</RBW-PARABODY
  2087. ></LN.LIST.NUM
  2088. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2089. ></RBW-AUTOGEN
  2090. ></RBW-MARKER
  2091. ><RBW-PARABODY>Add the following service:</RBW-PARABODY
  2092. ></LN.LIST.NUM
  2093. ><EM.EXAMPLE.MONO>ot_broker    1825/udp    # Cayenne Repository broker</EM.EXAMPLE.MONO
  2094. ><B.BODY>Your UNIX version may have an administration tool to do this (for example, on Solaris you can use admintool.)</B.BODY
  2095. ></LABEL
  2096. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2097. >How to run m4create_env</L.LABEL
  2098. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2099. ></RBW-AUTOGEN
  2100. ></RBW-MARKER
  2101. ><RBW-PARABODY>To run m4create_env:</RBW-PARABODY
  2102. ></P.PROCEDURE
  2103. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2104. ></RBW-AUTOGEN
  2105. ></RBW-MARKER
  2106. ><RBW-PARABODY>Log in as cayenne.</RBW-PARABODY
  2107. ></LN.LIST.NUM
  2108. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2109. ></RBW-AUTOGEN
  2110. ></RBW-MARKER
  2111. ><RBW-PARABODY>Set the necessary database environment variables for your DBMS in your current shell:</RBW-PARABODY
  2112. ></LN.LIST.NUM
  2113. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  2114. ></RBW-MARKER
  2115. ><RBW-PARABODY>INFORMIXDIR and INFORMIXSERVER for Informix</RBW-PARABODY
  2116. ></LB2.LIST.BULLET.2
  2117. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  2118. ></RBW-MARKER
  2119. ><RBW-PARABODY>ORACLE_HOME and ORACLE_SID for Oracle</RBW-PARABODY
  2120. ></LB2.LIST.BULLET.2
  2121. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2122. ></RBW-AUTOGEN
  2123. ></RBW-MARKER
  2124. ><RBW-PARABODY>Change to the ObjectTeam bin directory:</RBW-PARABODY
  2125. ></LN.LIST.NUM
  2126. ><EM.EXAMPLE.MONO>cd /usr/cayenne/objectteam/bin</EM.EXAMPLE.MONO
  2127. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  2128. ></RBW-AUTOGEN
  2129. ></RBW-MARKER
  2130. ><RBW-PARABODY>Enter the following at the command line:</RBW-PARABODY
  2131. ></LN.LIST.NUM
  2132. ><EM.EXAMPLE.MONO>./m4create_env</EM.EXAMPLE.MONO
  2133. ></LABEL
  2134. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2135. >Running m4create_env</L.LABEL
  2136. ><B.BODY>While running, m4create_env asks you to specify various options.</B.BODY
  2137. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2138. ></RBW-AUTOGEN
  2139. ></RBW-MARKER
  2140. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  2141. ></LN.LIST.NUM
  2142. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  2143. ></RBW-AUTOGEN
  2144. ></RBW-MARKER
  2145. ><RBW-PARABODY>If you are running the license server software on this machine, or your license file is stored locally, the default is /usr/cayenne/flexlm/license/cayenne.dat. </RBW-PARABODY
  2146. ></LN2.LIST.NUM.2
  2147. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  2148. ></RBW-AUTOGEN
  2149. ></RBW-MARKER
  2150. ><RBW-PARABODY>If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  2151. ></LN2.LIST.NUM.2
  2152. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  2153. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  2154. ></RBW-AUTOGEN
  2155. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a colon (:).</N2.NOTE.2
  2156. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2157. ></RBW-AUTOGEN
  2158. ></RBW-MARKER
  2159. ><RBW-PARABODY>You are asked to specify the type of installation. Options are Master server, Slave server, or Client. Select Slave server.</RBW-PARABODY
  2160. ></LN.LIST.NUM
  2161. ><LR.LIST.RESULT>A warning is displayed that various environment files are created by the script.</LR.LIST.RESULT
  2162. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2163. ></RBW-AUTOGEN
  2164. ></RBW-MARKER
  2165. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  2166. ></LN.LIST.NUM
  2167. ><LR.LIST.RESULT>The m4create_env script displays a summary of your operating system and repository DBMS. </LR.LIST.RESULT
  2168. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  2169. ></RBW-AUTOGEN
  2170. ></RBW-MARKER
  2171. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  2172. ></LN.LIST.NUM
  2173. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  2174. ></RBW-AUTOGEN
  2175. ></RBW-MARKER
  2176. ><RBW-PARABODY>You are asked to specify the value of the LC_CTYPE environment variable. The default is C. Press return to accept the default or specify a value.</RBW-PARABODY
  2177. ></LN.LIST.NUM
  2178. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  2179. ></RBW-AUTOGEN
  2180. ></RBW-MARKER
  2181. ><RBW-PARABODY>You are asked to specify the value of the LC_COLLATE environment variable. The default is C. Press return to accept the default or specify a value.</RBW-PARABODY
  2182. ></LN.LIST.NUM
  2183. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  2184. ></RBW-AUTOGEN
  2185. ></RBW-MARKER
  2186. ><RBW-PARABODY><CX5FX5FFILE.NAME>IBM AIX only:</CX5FX5FFILE.NAME
  2187. > You are asked to specify the value of the LC_NUMERIC environment variable. The default is C. Press return to accept the default or specify a value. Note that this may affect other numeric&truehy;based applications.</RBW-PARABODY
  2188. ></LN.LIST.NUM
  2189. ><LR.LIST.RESULT>The default printer is displayed. </LR.LIST.RESULT
  2190. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  2191. ></RBW-AUTOGEN
  2192. ></RBW-MARKER
  2193. ><RBW-PARABODY>You are asked if you want to change the default printer or printer command for ASCII printing. Specify the printer command or change the default printer. </RBW-PARABODY
  2194. ></LN.LIST.NUM
  2195. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  2196. ></RBW-AUTOGEN
  2197. ></RBW-MARKER
  2198. ><RBW-PARABODY>You are asked if you want to change the default printer or printer command for graphical (PostScript) printing. Specify the printer command or change the default printer. </RBW-PARABODY
  2199. ></LN.LIST.NUM
  2200. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  2201. ></RBW-AUTOGEN
  2202. ></RBW-MARKER
  2203. ><RBW-PARABODY>For FrameMaker users, you are asked if you want to accept the default version of FrameMaker (International English) or if you want to change to the US English version. Press Return to accept the default or type N to change to the US version.</RBW-PARABODY
  2204. ></LN.LIST.NUM
  2205. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  2206. ></RBW-AUTOGEN
  2207. ></RBW-MARKER
  2208. ><RBW-PARABODY>You are asked for the name of the Master server.</RBW-PARABODY
  2209. ></LN.LIST.NUM
  2210. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  2211. ></RBW-AUTOGEN
  2212. ></RBW-MARKER
  2213. ><RBW-PARABODY>You are asked what kind of license you have. Press Return if you have a Temporary license or type 2 if you have a Permanent license.</RBW-PARABODY
  2214. ></LN.LIST.NUM
  2215. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  2216. ></RBW-AUTOGEN
  2217. ></RBW-MARKER
  2218. ><RBW-PARABODY>You are asked for the name of your repository DBMS home directory. The default is the directory you set in INFORMIXDIR or ORACLE_HOME. Press Return to accept the default.</RBW-PARABODY
  2219. ></LN.LIST.NUM
  2220. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  2221. ></RBW-AUTOGEN
  2222. ></RBW-MARKER
  2223. ><RBW-PARABODY>If you are using Oracle as your repository, you are asked to specify the Oracle SID. The default is the value you set in ORACLE_SID. Press Return to accept the default.</RBW-PARABODY
  2224. ></LN2.LIST.NUM.2
  2225. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  2226. ></RBW-AUTOGEN
  2227. ></RBW-MARKER
  2228. ><RBW-PARABODY>If you are using Informix as your repository, you are asked to specify the name of the Informix server. The default is the value you set in INFORMIXSERVER. Press Return to accept the default or type 2 to change the server.</RBW-PARABODY
  2229. ></LN2.LIST.NUM.2
  2230. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  2231. ></RBW-AUTOGEN
  2232. ></RBW-MARKER
  2233. ><RBW-PARABODY>You are asked for the broker port which you set during installation of the Master server. The default is 1825.</RBW-PARABODY
  2234. ></LN.LIST.NUM
  2235. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  2236. ></RBW-AUTOGEN
  2237. ></RBW-MARKER
  2238. ><RBW-PARABODY>The location of the DynaText installation. Enter /usr/cayenne/dtext23/bin<CX5FX5FTERM>platform</CX5FX5FTERM
  2239. > where <CX5FX5FTERM>platform</CX5FX5FTERM
  2240. > is one of sun5, hp, ibm, or decosf.</RBW-PARABODY
  2241. ></LN.LIST.NUM
  2242. ></LABEL
  2243. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2244. >Result of m4create_env</L.LABEL
  2245. ><B.BODY>M4create_env creates the following initial files: </B.BODY
  2246. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="229p"><COLSPEC COLNAME="2" COLWIDTH="231p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File</CELLHEADING
  2247. ></ENTRY
  2248. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Use</CELLHEADING
  2249. ></ENTRY
  2250. ></RBW-ROW
  2251. ></THEAD
  2252. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/usr/cayenne/.m4_login</CELLBODY
  2253. ></ENTRY
  2254. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Login file sourced by .login</CELLBODY
  2255. ></ENTRY
  2256. ></RBW-ROW
  2257. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/usr/cayenne/.m4_profile</CELLBODY
  2258. ></ENTRY
  2259. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Login file sourced by .profile</CELLBODY
  2260. ></ENTRY
  2261. ></RBW-ROW
  2262. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2263. >/etc/objservers.objservers</CELLBODY
  2264. ></ENTRY
  2265. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne Repository definition file</CELLBODY
  2266. ></ENTRY
  2267. ></RBW-ROW
  2268. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2269. ><RBWAUTO-0004>/</RBWAUTO-0004
  2270. >etc/m4env.m4env</CELLBODY
  2271. ></ENTRY
  2272. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam environment variable file</CELLBODY
  2273. ></ENTRY
  2274. ></RBW-ROW
  2275. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2276. ><RBWAUTO-0004>/</RBWAUTO-0004
  2277. >bin/ot</CELLBODY
  2278. ></ENTRY
  2279. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Browser startup script</CELLBODY
  2280. ></ENTRY
  2281. ></RBW-ROW
  2282. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2283. >/bin/starthelp</CELLBODY
  2284. ></ENTRY
  2285. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Help tool startup script</CELLBODY
  2286. ></ENTRY
  2287. ></RBW-ROW
  2288. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2289. >/bin/otreptool</CELLBODY
  2290. ></ENTRY
  2291. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne Repository tool startup script</CELLBODY
  2292. ></ENTRY
  2293. ></RBW-ROW
  2294. ></TBODY
  2295. ></TGROUP
  2296. ></RBW-TABLE
  2297. ></LABEL
  2298. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2299. >Configuring your Xdefaults</L.LABEL
  2300. ><B.BODY>ObjectTeam is provided with a set of sample Xdefaults. </B.BODY
  2301. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  2302. ></RBW-AUTOGEN
  2303. ></RBW-MARKER
  2304. ><RBW-PARABODY>If you have a $HOME/.Xdefaults file, merge the file <CX5FX5FTERM>M4_home</CX5FX5FTERM
  2305. >/etc/Xdefaults with your existing .Xdefaults file. </RBW-PARABODY
  2306. ></LB.LIST.BULLET
  2307. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  2308. ></RBW-AUTOGEN
  2309. ></RBW-MARKER
  2310. ><RBW-PARABODY>If you do not have a $HOME/.Xdefaults file, copy the sample .Xdefaults file to your home directory, as follows:</RBW-PARABODY
  2311. ></LB.LIST.BULLET
  2312. ><EM.EXAMPLE.MONO>cd $HOME</EM.EXAMPLE.MONO
  2313. ><EM.EXAMPLE.MONO>cp /usr/cayenne/objectteam/etc/Xdefaults .Xdefaults</EM.EXAMPLE.MONO
  2314. ></LABEL
  2315. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2316. >Setting your startup file on the Slave server</L.LABEL
  2317. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2318. ></RBW-AUTOGEN
  2319. ></RBW-MARKER
  2320. ><RBW-PARABODY>To set your startup file:</RBW-PARABODY
  2321. ></P.PROCEDURE
  2322. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2323. ></RBW-AUTOGEN
  2324. ></RBW-MARKER
  2325. ><RBW-PARABODY>Log in to the Slave server as root.</RBW-PARABODY
  2326. ></LN.LIST.NUM
  2327. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2328. ></RBW-AUTOGEN
  2329. ></RBW-MARKER
  2330. ><RBW-PARABODY>Copy the default startup file:</RBW-PARABODY
  2331. ></LN.LIST.NUM
  2332. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  2333. > </LT.LIST.TEXT
  2334. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/init.d/ot </EM.EXAMPLE.MONO
  2335. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  2336. > </LT.LIST.TEXT
  2337. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /sbin/init.d/ot</EM.EXAMPLE.MONO
  2338. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  2339. > </LT.LIST.TEXT
  2340. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/rc.ot</EM.EXAMPLE.MONO
  2341. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  2342. > </LT.LIST.TEXT
  2343. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/init.d/ot</EM.EXAMPLE.MONO
  2344. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2345. ></RBW-AUTOGEN
  2346. ></RBW-MARKER
  2347. ><RBW-PARABODY>Make links to the startup file</RBW-PARABODY
  2348. ></LN.LIST.NUM
  2349. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  2350. > </LT.LIST.TEXT
  2351. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/ot /etc/rc3.d/S19ot</EM.EXAMPLE.MONO
  2352. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/ot /etc/rc0.d/K19ot</EM.EXAMPLE.MONO
  2353. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  2354. > </LT.LIST.TEXT
  2355. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc2.d/S719ot</EM.EXAMPLE.MONO
  2356. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc0.d/K719ot</EM.EXAMPLE.MONO
  2357. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  2358. > Add the following lines to /etc/inittab:</LT.LIST.TEXT
  2359. ><EM.EXAMPLE.MONO>ot:2:once: sh /etc/rc.ot start</EM.EXAMPLE.MONO
  2360. ><EM.EXAMPLE.MONO>ot:0:once: sh /etc/rc.ot stop</EM.EXAMPLE.MONO
  2361. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  2362. > </LT.LIST.TEXT
  2363. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc3.d/S19ot</EM.EXAMPLE.MONO
  2364. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc2.d/K19ot</EM.EXAMPLE.MONO
  2365. ><B.BODY>You can enter any numbers after S and K as long as startup and shutdown are done in the correct order. It is important that the DBMS server start before the ot_broker starts, and that the ot_broker stop before the DBMS server stops.</B.BODY
  2366. ></LABEL
  2367. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2368. >Editing the startup file</L.LABEL
  2369. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2370. ></RBW-AUTOGEN
  2371. ></RBW-MARKER
  2372. ><RBW-PARABODY>To have the ot_broker start automatically at boot time:</RBW-PARABODY
  2373. ></P.PROCEDURE
  2374. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2375. ></RBW-AUTOGEN
  2376. ></RBW-MARKER
  2377. ><RBW-PARABODY>Open the ot file you just copied in a text editor.</RBW-PARABODY
  2378. ></LN.LIST.NUM
  2379. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2380. ></RBW-AUTOGEN
  2381. ></RBW-MARKER
  2382. ><RBW-PARABODY>Check the following line points to the root directory of the installation:</RBW-PARABODY
  2383. ></LN.LIST.NUM
  2384. ><EM.EXAMPLE.MONO>M4_home=/usr/cayenne/objectteam</EM.EXAMPLE.MONO
  2385. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2386. ></RBW-AUTOGEN
  2387. ></RBW-MARKER
  2388. ><RBW-PARABODY>If the license server is running on this machine, check the location of the FLEXlm installation and the ObjectTeam license file:</RBW-PARABODY
  2389. ></LN.LIST.NUM
  2390. ><EM.EXAMPLE.MONO>LMHOME=/usr/cayenne/flexlm</EM.EXAMPLE.MONO
  2391. ><EM.EXAMPLE.MONO>LM_LICENSE_FILE=$LMHOME/license/cayenne.dat</EM.EXAMPLE.MONO
  2392. ><LT.LIST.TEXT>If the license server is running on another machine, set the location of the ObjectTeam license server:</LT.LIST.TEXT
  2393. ><EM.EXAMPLE.MONO>LM_LICENSE_FILE=<CX5FX5FTERM>port</CX5FX5FTERM
  2394. >@<CX5FX5FTERM>host</CX5FX5FTERM
  2395. ></EM.EXAMPLE.MONO
  2396. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  2397. ></RBW-AUTOGEN
  2398. ></RBW-MARKER
  2399. ><RBW-PARABODY>If you did not install ObjectTeam as user cayenne, look for the following line:</RBW-PARABODY
  2400. ></LN.LIST.NUM
  2401. ><EM.EXAMPLE.MONO>CAYNID=${CAYNID:&truehy;”cayenne”}</EM.EXAMPLE.MONO
  2402. ><LT.LIST.TEXT>and replace cayenne with the name of the user you used to install ObjectTeam.</LT.LIST.TEXT
  2403. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  2404. ></RBW-AUTOGEN
  2405. ></RBW-MARKER
  2406. ><RBW-PARABODY>If this host is the license server, look for the following text:</RBW-PARABODY
  2407. ></LN.LIST.NUM
  2408. ><EWM.EXAMPLEW.MONO># If this script is run on the host used as license server,</EWM.EXAMPLEW.MONO
  2409. ><EWM.EXAMPLEW.MONO># uncomment one of the next two start&truehy;up instructions and</EWM.EXAMPLEW.MONO
  2410. ><EWM.EXAMPLEW.MONO># uncomment the line with ‘lmdown’ at the end of this file.</EWM.EXAMPLEW.MONO
  2411. ><LT.LIST.TEXT>and uncomment the appropriate lines depending on whether you want the license server to run with logging (default) or not. Do not uncomment these lines if you have a temporary license.</LT.LIST.TEXT
  2412. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  2413. ></RBW-AUTOGEN
  2414. ></RBW-MARKER
  2415. ><RBW-PARABODY>If this host is the license server, look for the following text:</RBW-PARABODY
  2416. ></LN.LIST.NUM
  2417. ><EWM.EXAMPLEW.MONO># If this script is run on the host used as license server,</EWM.EXAMPLEW.MONO
  2418. ><EWM.EXAMPLEW.MONO># uncomment the next line to stop the daemon automatically.</EWM.EXAMPLEW.MONO
  2419. ><LT.LIST.TEXT>and uncomment the indicated line. Do not uncomment this line if you have a temporary license.</LT.LIST.TEXT
  2420. ></LABEL
  2421. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2422. >Restarting the broker </L.LABEL
  2423. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2424. ></RBW-AUTOGEN
  2425. ></RBW-MARKER
  2426. ><RBW-PARABODY>To restart the broker (and the license server if you installed FLEXlm on the Slave server), reboot your machine.</RBW-PARABODY
  2427. ></P.PROCEDURE
  2428. ><B.BODY>The installation is now finished. </B.BODY
  2429. ></LABEL
  2430. ></SUBSECTION
  2431. ></SECTION
  2432. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28366"></RBW-ANCHOR
  2433. >Installing an ObjectTeam Client</S.SECTION.HEAD
  2434. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2435. >Choosing an installation method</L.LABEL
  2436. ><B.BODY>On the ObjectTeam Master server, the product files are installed in the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  2437. > directory (by default /usr/cayenne/objectteam). </B.BODY
  2438. ><B.BODY>There are two ways to install a client:</B.BODY
  2439. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  2440. ></RBW-AUTOGEN
  2441. ></RBW-MARKER
  2442. ><RBW-PARABODY>Access the server’s <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  2443. > directory by mounting it using NFS.</RBW-PARABODY
  2444. ></LB.LIST.BULLET
  2445. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  2446. ></RBW-AUTOGEN
  2447. ></RBW-MARKER
  2448. ><RBW-PARABODY>Install the ObjectTeam product files locally on the client machine.</RBW-PARABODY
  2449. ></LB.LIST.BULLET
  2450. ></LABEL
  2451. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2452. >Requirements</L.LABEL
  2453. ><B.BODY>Before you can install an ObjectTeam client, you must have:</B.BODY
  2454. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  2455. ></RBW-AUTOGEN
  2456. ></RBW-MARKER
  2457. ><RBW-PARABODY>Installed an ObjectTeam Master server, as described in <RBW-XREF REFID="17595" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Master Server</RBW-XREF
  2458. >.</RBW-PARABODY
  2459. ></LB.LIST.BULLET
  2460. ></LABEL
  2461. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2462. >In this section</L.LABEL
  2463. ><B.BODY>This section covers the following topics:</B.BODY
  2464. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  2465. ></ENTRY
  2466. ></RBW-ROW
  2467. ></THEAD
  2468. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12020" TYPE="XREF-TEXTCOPY">Accessing a Mounted Installation from the Client&rbwtab;2–30</RBW-XREF
  2469. ></SB.SECTION.BLOCK.TABLE
  2470. ></ENTRY
  2471. ></RBW-ROW
  2472. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18541" TYPE="XREF-TEXTCOPY">Installing the Product Files on the Client&rbwtab;2–32</RBW-XREF
  2473. ></SB.SECTION.BLOCK.TABLE
  2474. ></ENTRY
  2475. ></RBW-ROW
  2476. ></TBODY
  2477. ></TGROUP
  2478. ></RBW-TABLE
  2479. ></LABEL
  2480. ><SUBSECTION><SS.SUBSEC.HEAD>Accessing a <RBW-ANCHOR ID="12020"></RBW-ANCHOR
  2481. >Mounted Installation from the Client</SS.SUBSEC.HEAD
  2482. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2483. >Introduction</L.LABEL
  2484. ><B.BODY>This is the simplest way of installing a client. With this type of installation, you access the ObjectTeam installation on the Master server or Slave server. </B.BODY
  2485. ><B.BODY>The Master must be configured as an NFS server and the file system to be mounted must be exported.</B.BODY
  2486. ></LABEL
  2487. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2488. >How to access the mounted Master server installation</L.LABEL
  2489. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2490. ></RBW-AUTOGEN
  2491. ></RBW-MARKER
  2492. ><RBW-PARABODY>To access the mounted Master server installation:</RBW-PARABODY
  2493. ></P.PROCEDURE
  2494. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2495. ></RBW-AUTOGEN
  2496. ></RBW-MARKER
  2497. ><RBW-PARABODY>Log in to the client as yourself, and copy either of the environment files .m4_profile or .m4_login from /usr/cayenne to your home directory, depending on which shell you use.</RBW-PARABODY
  2498. ></LN.LIST.NUM
  2499. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2500. ></RBW-AUTOGEN
  2501. ></RBW-MARKER
  2502. ><RBW-PARABODY>Add the following line to the file you copied:</RBW-PARABODY
  2503. ></LN.LIST.NUM
  2504. ><EM.EXAMPLE.MONO>setenv M4_imphost <CX5FX5FTERM>server_name</CX5FX5FTERM
  2505. ></EM.EXAMPLE.MONO
  2506. ><LT.LIST.TEXT>where <CX5FX5FTERM>server_name</CX5FX5FTERM
  2507. > is the name of the Master server.</LT.LIST.TEXT
  2508. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2509. ></RBW-AUTOGEN
  2510. ></RBW-MARKER
  2511. ><RBW-PARABODY>Add the following line to your .login file:</RBW-PARABODY
  2512. ></LN.LIST.NUM
  2513. ><EM.EXAMPLE.MONO>source <CX5FX5FTERM>user_home</CX5FX5FTERM
  2514. >/.m4_login</EM.EXAMPLE.MONO
  2515. ><LT.LIST.TEXT>or the following line to your .profile file:</LT.LIST.TEXT
  2516. ><EM.EXAMPLE.MONO>. <CX5FX5FTERM>user_home</CX5FX5FTERM
  2517. >/.m4_profile</EM.EXAMPLE.MONO
  2518. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  2519. ></RBW-AUTOGEN
  2520. ></RBW-MARKER
  2521. ><RBW-PARABODY>Create a file called .Meta4UserEnv in your home directory containing the line:</RBW-PARABODY
  2522. ></LN.LIST.NUM
  2523. ><EM.EXAMPLE.MONO>M4_levelpath=/<CX5FX5FTERM>corporate_name</CX5FX5FTERM
  2524. >;RW</EM.EXAMPLE.MONO
  2525. ><LT.LIST.TEXT>where <CX5FX5FTERM>corporate_name</CX5FX5FTERM
  2526. > is the name of your repository.</LT.LIST.TEXT
  2527. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  2528. ></RBW-AUTOGEN
  2529. ></RBW-MARKER
  2530. ><RBW-PARABODY>Source your .login or .profile file.</RBW-PARABODY
  2531. ></LN.LIST.NUM
  2532. ><B.BODY>The installation is now finished. </B.BODY
  2533. ></LABEL
  2534. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2535. >Configure DynaText</L.LABEL
  2536. ><B.BODY>Before you can access the <CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  2537. ><CX5FX5FTERM> Product Documentation</CX5FX5FTERM
  2538. >, you must configure your DynaText installation.</B.BODY
  2539. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2540. ></RBW-AUTOGEN
  2541. ></RBW-MARKER
  2542. ><RBW-PARABODY>Set the environment variable EBTRC to point to the .ebtrc file, as follows:</RBW-PARABODY
  2543. ></P.PROCEDURE
  2544. ><LT2.LIST.TEXT.2><CX5FX5FFILE.NAME>.login:</CX5FX5FFILE.NAME
  2545. > </LT2.LIST.TEXT.2
  2546. ><EM.EXAMPLE.MONO>setenv EBTRC /usr/cayenne/.ebtrc</EM.EXAMPLE.MONO
  2547. ><LT2.LIST.TEXT.2><CX5FX5FFILE.NAME>.profile:</CX5FX5FFILE.NAME
  2548. > </LT2.LIST.TEXT.2
  2549. ><EM.EXAMPLE.MONO>EBTRC=/usr/cayenne/.ebtrc</EM.EXAMPLE.MONO
  2550. ><EM.EXAMPLE.MONO>export EBTRC</EM.EXAMPLE.MONO
  2551. ></LABEL
  2552. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2553. >Starting ObjectTeam</L.LABEL
  2554. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2555. ></RBW-AUTOGEN
  2556. ></RBW-MARKER
  2557. ><RBW-PARABODY>To start the ObjectTeam Browser:</RBW-PARABODY
  2558. ></P.PROCEDURE
  2559. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2560. ></RBW-AUTOGEN
  2561. ></RBW-MARKER
  2562. ><RBW-PARABODY>In your shell window, enter:</RBW-PARABODY
  2563. ></LN.LIST.NUM
  2564. ><EM.EXAMPLE.MONO>ot &</EM.EXAMPLE.MONO
  2565. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2566. ></RBW-AUTOGEN
  2567. ></RBW-MARKER
  2568. ><RBW-PARABODY>To access the product documentation, select Help | Product Documentation in the ObjectTeam Browser.</RBW-PARABODY
  2569. ></P.PROCEDURE
  2570. ></LABEL
  2571. ></SUBSECTION
  2572. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18541"></RBW-ANCHOR
  2573. >Installing the Product Files on the Client</SS.SUBSEC.HEAD
  2574. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2575. >Introduction</L.LABEL
  2576. ><B.BODY>With this type of installation you install the ObjectTeam product files on the client machine. </B.BODY
  2577. ></LABEL
  2578. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2579. >Installation Steps</L.LABEL
  2580. ><B.BODY>To install ObjectTeam, perform the following steps:</B.BODY
  2581. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="52p"><COLSPEC COLNAME="2" COLWIDTH="391p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>step</CELLHEADING
  2582. ></ENTRY
  2583. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>task</CELLHEADING
  2584. ></ENTRY
  2585. ></RBW-ROW
  2586. ></THEAD
  2587. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  2588. ></ENTRY
  2589. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create /usr/cayenne</CELLBODY
  2590. ></ENTRY
  2591. ></RBW-ROW
  2592. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  2593. ></ENTRY
  2594. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Install the ObjectTeam product files</CELLBODY
  2595. ></ENTRY
  2596. ></RBW-ROW
  2597. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  2598. ></ENTRY
  2599. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Install the DynaText reader</CELLBODY
  2600. ></ENTRY
  2601. ></RBW-ROW
  2602. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  2603. ></ENTRY
  2604. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set ObjectTeam environment variables using the m4create_env script. </CELLBODY
  2605. ></ENTRY
  2606. ></RBW-ROW
  2607. ></TBODY
  2608. ></TGROUP
  2609. ></RBW-TABLE
  2610. ></LABEL
  2611. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2612. >Create a home directory</L.LABEL
  2613. ><B.BODY>You must create the home directory of user cayenne.</B.BODY
  2614. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2615. ></RBW-AUTOGEN
  2616. ></RBW-MARKER
  2617. ><RBW-PARABODY>Log in as root.</RBW-PARABODY
  2618. ></LN.LIST.NUM
  2619. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2620. ></RBW-AUTOGEN
  2621. ></RBW-MARKER
  2622. ><RBW-PARABODY>Create the directory /usr/cayenne.</RBW-PARABODY
  2623. ></LN.LIST.NUM
  2624. ></LABEL
  2625. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2626. >How to install the ObjectTeam product files</L.LABEL
  2627. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2628. ></RBW-AUTOGEN
  2629. ></RBW-MARKER
  2630. ><RBW-PARABODY>To install the ObjectTeam product files:</RBW-PARABODY
  2631. ></P.PROCEDURE
  2632. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2633. ></RBW-AUTOGEN
  2634. ></RBW-MARKER
  2635. ><RBW-PARABODY>Log in as cayenne, run the ObjectTeam install script.</RBW-PARABODY
  2636. ></LN.LIST.NUM
  2637. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  2638. > </LT.LIST.TEXT
  2639. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/sol/objecttm</EM.EXAMPLE.MONO
  2640. ><EM.EXAMPLE.MONO>./instot</EM.EXAMPLE.MONO
  2641. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  2642. > </LT.LIST.TEXT
  2643. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/HPUX/OBJECTTM</EM.EXAMPLE.MONO
  2644. ><EM.EXAMPLE.MONO>./INSTOT</EM.EXAMPLE.MONO
  2645. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  2646. > </LT.LIST.TEXT
  2647. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/aix/objecttm</EM.EXAMPLE.MONO
  2648. ><EM.EXAMPLE.MONO>./instot</EM.EXAMPLE.MONO
  2649. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  2650. > </LT.LIST.TEXT
  2651. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/DUX/OBJECTTM</EM.EXAMPLE.MONO
  2652. ><EM.EXAMPLE.MONO>./INSTOT</EM.EXAMPLE.MONO
  2653. ><LR.LIST.RESULT>The ObjectTeam product files are installed.</LR.LIST.RESULT
  2654. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2655. ></RBW-AUTOGEN
  2656. ></RBW-MARKER
  2657. ><RBW-PARABODY>You are asked if you want the <CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  2658. ><CX5FX5FTERM></CX5FX5FTERM
  2659. > <CX5FX5FTERM>Product Documentation </CX5FX5FTERM
  2660. >to be installed. Enter yes or no.</RBW-PARABODY
  2661. ></LN.LIST.NUM
  2662. ></LABEL
  2663. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2664. >How to install DynaText</L.LABEL
  2665. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2666. ></RBW-AUTOGEN
  2667. ></RBW-MARKER
  2668. ><RBW-PARABODY>If you have installed the ObjectTeam documentation, you must install the DynaText reader:</RBW-PARABODY
  2669. ></P.PROCEDURE
  2670. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2671. ></RBW-AUTOGEN
  2672. ></RBW-MARKER
  2673. ><RBW-PARABODY>While logged in as cayenne, enter the following:</RBW-PARABODY
  2674. ></LN.LIST.NUM
  2675. ><EM.EXAMPLE.MONO>mkdir /usr/cayenne/dtext23</EM.EXAMPLE.MONO
  2676. ><EM.EXAMPLE.MONO>cd /usr/cayenne/dtext23</EM.EXAMPLE.MONO
  2677. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2678. ></RBW-AUTOGEN
  2679. ></RBW-MARKER
  2680. ><RBW-PARABODY>Untar the DynaText files:</RBW-PARABODY
  2681. ></LN.LIST.NUM
  2682. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris/AIX:</CX5FX5FFILE.NAME
  2683. > </LT.LIST.TEXT
  2684. ><EM.EXAMPLE.MONO>tar xvf /cdrom/dynatext/unix/dtext23c.tar</EM.EXAMPLE.MONO
  2685. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX/D&truehy;UX:</CX5FX5FFILE.NAME
  2686. > </LT.LIST.TEXT
  2687. ><EM.EXAMPLE.MONO>tar xvf /cdrom/DYNATEXT/UNIX/DTEXT23C.TAR</EM.EXAMPLE.MONO
  2688. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2689. ></RBW-AUTOGEN
  2690. ></RBW-MARKER
  2691. ><RBW-PARABODY>Run install.full </RBW-PARABODY
  2692. ></LN.LIST.NUM
  2693. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  2694. ></RBW-AUTOGEN
  2695. ></RBW-MARKER
  2696. ><RBW-PARABODY>DynaText installs by default into the current directory. Follow the </RBW-PARABODY
  2697. ></LN.LIST.NUM
  2698. ><LN.LIST.NUM>instructions:</LN.LIST.NUM
  2699. ><EM.EXAMPLE.MONO>“Would you like to install as an evaluation copy?”</EM.EXAMPLE.MONO
  2700. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  2701. ></RBW-AUTOGEN
  2702. ></RBW-MARKER
  2703. ><RBW-PARABODY>Enter “n” (for No). </RBW-PARABODY
  2704. ></LN2.LIST.NUM.2
  2705. ><EM.EXAMPLE.MONO>“Do you need to run the EBT Server?” </EM.EXAMPLE.MONO
  2706. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  2707. ></RBW-AUTOGEN
  2708. ></RBW-MARKER
  2709. ><RBW-PARABODY>Enter “n”.</RBW-PARABODY
  2710. ></LN2.LIST.NUM.2
  2711. ><EM.EXAMPLE.MONO>“Do you want to install as a run&truehy;time version of DynaText?” </EM.EXAMPLE.MONO
  2712. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  2713. ></RBW-AUTOGEN
  2714. ></RBW-MARKER
  2715. ><RBW-PARABODY>Enter “y”.</RBW-PARABODY
  2716. ></LN2.LIST.NUM.2
  2717. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  2718. ></RBW-AUTOGEN
  2719. ></RBW-MARKER
  2720. ><RBW-PARABODY>You are asked which binaries and libraries to install. Enter “y” for your operating system and “n” for others. </RBW-PARABODY
  2721. ></LN.LIST.NUM
  2722. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  2723. ></RBW-AUTOGEN
  2724. ></RBW-MARKER
  2725. ><RBW-PARABODY>Copy the DynaText resource file to your home directory:</RBW-PARABODY
  2726. ></LN.LIST.NUM
  2727. ><EWM.EXAMPLEW.MONO>cp /usr/cayenne/dtext23/examples/ebtrc/.ebtrc /usr/cayenne </EWM.EXAMPLEW.MONO
  2728. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  2729. ></RBW-AUTOGEN
  2730. ></RBW-MARKER
  2731. ><RBW-PARABODY>Open the file /usr/cayenne/.ebtrc in a text editor and add the following line:</RBW-PARABODY
  2732. ></LN.LIST.NUM
  2733. ><EWM.EXAMPLEW.MONO>COLLECTION /usr/cayenne/objectteam/doc=ObjectTeam 7.1.1 Books</EWM.EXAMPLEW.MONO
  2734. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  2735. ></RBW-AUTOGEN
  2736. ></RBW-MARKER
  2737. ><RBW-PARABODY>To start DynaText, run /usr/cayenne/dtext23/bin<CX5FX5FTERM>platform</CX5FX5FTERM
  2738. >/dtext& where <CX5FX5FTERM>platform</CX5FX5FTERM
  2739. > is one of sun5, hp, ibm or decosf.</RBW-PARABODY
  2740. ></LN.LIST.NUM
  2741. ></LABEL
  2742. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2743. >How to run m4create_env</L.LABEL
  2744. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2745. ></RBW-AUTOGEN
  2746. ></RBW-MARKER
  2747. ><RBW-PARABODY>To run m4create_env:</RBW-PARABODY
  2748. ></P.PROCEDURE
  2749. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2750. ></RBW-AUTOGEN
  2751. ></RBW-MARKER
  2752. ><RBW-PARABODY>Set the necessary database environment variables for your DBMS in your current shell:</RBW-PARABODY
  2753. ></LN.LIST.NUM
  2754. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  2755. ></RBW-MARKER
  2756. ><RBW-PARABODY>INFORMIXDIR and INFORMIXSERVER for Informix</RBW-PARABODY
  2757. ></LB2.LIST.BULLET.2
  2758. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  2759. ></RBW-MARKER
  2760. ><RBW-PARABODY>ORACLE_HOME and ORACLE_SID for Oracle</RBW-PARABODY
  2761. ></LB2.LIST.BULLET.2
  2762. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2763. ></RBW-AUTOGEN
  2764. ></RBW-MARKER
  2765. ><RBW-PARABODY>Change to the ObjectTeam bin directory:</RBW-PARABODY
  2766. ></LN.LIST.NUM
  2767. ><EM.EXAMPLE.MONO>cd /usr/cayenne/objectteam/bin</EM.EXAMPLE.MONO
  2768. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2769. ></RBW-AUTOGEN
  2770. ></RBW-MARKER
  2771. ><RBW-PARABODY>Enter the following at the command line:</RBW-PARABODY
  2772. ></LN.LIST.NUM
  2773. ><EM.EXAMPLE.MONO>./m4create_env</EM.EXAMPLE.MONO
  2774. ></LABEL
  2775. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2776. >Running m4create_env</L.LABEL
  2777. ><B.BODY>While running, m4create_env asks you to specify various options.</B.BODY
  2778. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2779. ></RBW-AUTOGEN
  2780. ></RBW-MARKER
  2781. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  2782. ></LN.LIST.NUM
  2783. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  2784. ></RBW-AUTOGEN
  2785. ></RBW-MARKER
  2786. ><RBW-PARABODY>If you are running the license server software on this machine, or your license file is stored locally, the default is /usr/cayenne/flexlm/license/cayenne.dat. If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  2787. ></LN2.LIST.NUM.2
  2788. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  2789. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  2790. ></RBW-AUTOGEN
  2791. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a colon (:).</N2.NOTE.2
  2792. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  2793. ></RBW-AUTOGEN
  2794. ></RBW-MARKER
  2795. ><RBW-PARABODY>You are asked to specify the type of installation. Options are Master server, Slave server, or Client. Select Client.</RBW-PARABODY
  2796. ></LN.LIST.NUM
  2797. ><LR.LIST.RESULT>A warning is displayed that various environment files are created by the script.</LR.LIST.RESULT
  2798. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  2799. ></RBW-AUTOGEN
  2800. ></RBW-MARKER
  2801. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  2802. ></LN.LIST.NUM
  2803. ><LR.LIST.RESULT>The m4create_env script displays a summary of your operating system and repository DBMS. </LR.LIST.RESULT
  2804. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  2805. ></RBW-AUTOGEN
  2806. ></RBW-MARKER
  2807. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  2808. ></LN.LIST.NUM
  2809. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  2810. ></RBW-AUTOGEN
  2811. ></RBW-MARKER
  2812. ><RBW-PARABODY>You are asked to specify the value of the LC_CTYPE environment variable. The default is C. Press return to accept the default or specify a value.</RBW-PARABODY
  2813. ></LN.LIST.NUM
  2814. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  2815. ></RBW-AUTOGEN
  2816. ></RBW-MARKER
  2817. ><RBW-PARABODY>You are asked to specify the value of the LC_COLLATE environment variable. The default is C. Press return to accept the default or specify a value.</RBW-PARABODY
  2818. ></LN.LIST.NUM
  2819. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  2820. ></RBW-AUTOGEN
  2821. ></RBW-MARKER
  2822. ><RBW-PARABODY><CX5FX5FFILE.NAME>IBM AIX only:</CX5FX5FFILE.NAME
  2823. > You are asked to specify the value of the LC_NUMERIC environment variable. The default is C. Press return to accept the default or specify a value. Note that this may affect other numeric&truehy;based applications.</RBW-PARABODY
  2824. ></LN.LIST.NUM
  2825. ><LR.LIST.RESULT>The default printer is displayed. </LR.LIST.RESULT
  2826. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  2827. ></RBW-AUTOGEN
  2828. ></RBW-MARKER
  2829. ><RBW-PARABODY>You are asked if you want to change the default printer or printer command for ASCII printing. Specify the printer command or change the default printer. </RBW-PARABODY
  2830. ></LN.LIST.NUM
  2831. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  2832. ></RBW-AUTOGEN
  2833. ></RBW-MARKER
  2834. ><RBW-PARABODY>You are asked if you want to change the default printer or printer command for graphical (PostScript) printing. Specify the printer command or change the default printer. </RBW-PARABODY
  2835. ></LN.LIST.NUM
  2836. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  2837. ></RBW-AUTOGEN
  2838. ></RBW-MARKER
  2839. ><RBW-PARABODY>For FrameMaker users, you are asked if you want to accept the default version of FrameMaker (International English) or if you want to change to the US English version. Press Return to accept the default or type N to change to the US version.</RBW-PARABODY
  2840. ></LN.LIST.NUM
  2841. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  2842. ></RBW-AUTOGEN
  2843. ></RBW-MARKER
  2844. ><RBW-PARABODY>You are asked what kind of license you have. Press Return if you have a Temporary license or type 2 if you have a Permanent license.</RBW-PARABODY
  2845. ></LN.LIST.NUM
  2846. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  2847. ></RBW-AUTOGEN
  2848. ></RBW-MARKER
  2849. ><RBW-PARABODY>You are asked for the name of the Master server or Slave server to which this client is attached.</RBW-PARABODY
  2850. ></LN.LIST.NUM
  2851. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  2852. ></RBW-AUTOGEN
  2853. ></RBW-MARKER
  2854. ><RBW-PARABODY>You are asked for the name of the default repository. </RBW-PARABODY
  2855. ></LN.LIST.NUM
  2856. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  2857. ></RBW-AUTOGEN
  2858. ></RBW-MARKER
  2859. ><RBW-PARABODY>You are asked for the broker port used to connect to the server. The default is 1825. This must agree with the number you specified when installing the Master server.</RBW-PARABODY
  2860. ></LN.LIST.NUM
  2861. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  2862. ></RBW-AUTOGEN
  2863. ></RBW-MARKER
  2864. ><RBW-PARABODY>The location of the DynaText installation. Enter /usr/cayenne/dtext23/bin<CX5FX5FTERM>platform</CX5FX5FTERM
  2865. > where <CX5FX5FTERM>platform</CX5FX5FTERM
  2866. > is one of sun5, hp, ibm, or decosf.</RBW-PARABODY
  2867. ></LN.LIST.NUM
  2868. ></LABEL
  2869. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2870. >Result of m4create_env</L.LABEL
  2871. ><B.BODY>M4create_env creates the following initial files: </B.BODY
  2872. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="229p"><COLSPEC COLNAME="2" COLWIDTH="231p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File</CELLHEADING
  2873. ></ENTRY
  2874. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Use</CELLHEADING
  2875. ></ENTRY
  2876. ></RBW-ROW
  2877. ></THEAD
  2878. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/usr/cayenne/.m4_login</CELLBODY
  2879. ></ENTRY
  2880. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Login file sourced by .login</CELLBODY
  2881. ></ENTRY
  2882. ></RBW-ROW
  2883. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/usr/cayenne/.m4_profile</CELLBODY
  2884. ></ENTRY
  2885. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Login file sourced by .profile</CELLBODY
  2886. ></ENTRY
  2887. ></RBW-ROW
  2888. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2889. >/etc/objservers.objservers</CELLBODY
  2890. ></ENTRY
  2891. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne Repository definition file</CELLBODY
  2892. ></ENTRY
  2893. ></RBW-ROW
  2894. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2895. ><RBWAUTO-0004>/</RBWAUTO-0004
  2896. >etc/m4env.m4env</CELLBODY
  2897. ></ENTRY
  2898. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam environment variable file</CELLBODY
  2899. ></ENTRY
  2900. ></RBW-ROW
  2901. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2902. ><RBWAUTO-0004>/</RBWAUTO-0004
  2903. >bin/ot</CELLBODY
  2904. ></ENTRY
  2905. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Browser startup script</CELLBODY
  2906. ></ENTRY
  2907. ></RBW-ROW
  2908. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2909. >/bin/starthelp</CELLBODY
  2910. ></ENTRY
  2911. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Help tool startup script</CELLBODY
  2912. ></ENTRY
  2913. ></RBW-ROW
  2914. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  2915. >/bin/otreptool</CELLBODY
  2916. ></ENTRY
  2917. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne Repository tool startup script</CELLBODY
  2918. ></ENTRY
  2919. ></RBW-ROW
  2920. ></TBODY
  2921. ></TGROUP
  2922. ></RBW-TABLE
  2923. ></LABEL
  2924. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2925. >Configuring your Xdefaults</L.LABEL
  2926. ><B.BODY>ObjectTeam is provided with a set of sample Xdefaults. </B.BODY
  2927. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  2928. ></RBW-AUTOGEN
  2929. ></RBW-MARKER
  2930. ><RBW-PARABODY>If you have a $HOME/.Xdefaults file, merge the file <CX5FX5FTERM>M4_home</CX5FX5FTERM
  2931. >/etc/Xdefaults with your existing .Xdefaults file. </RBW-PARABODY
  2932. ></LB.LIST.BULLET
  2933. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  2934. ></RBW-AUTOGEN
  2935. ></RBW-MARKER
  2936. ><RBW-PARABODY>If you do not have a $HOME/.Xdefaults file, copy the sample .Xdefaults file to your home directory, as follows:</RBW-PARABODY
  2937. ></LB.LIST.BULLET
  2938. ><EM.EXAMPLE.MONO>cd $HOME</EM.EXAMPLE.MONO
  2939. ><EM.EXAMPLE.MONO>cp /usr/cayenne/objectteam/etc/Xdefaults .Xdefaults</EM.EXAMPLE.MONO
  2940. ></LABEL
  2941. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2942. >Setting your environment</L.LABEL
  2943. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2944. ></RBW-AUTOGEN
  2945. ></RBW-MARKER
  2946. ><RBW-PARABODY>To set your environment variables, log out and log in again.</RBW-PARABODY
  2947. ></P.PROCEDURE
  2948. ></LABEL
  2949. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2950. >Starting ObjectTeam</L.LABEL
  2951. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2952. ></RBW-AUTOGEN
  2953. ></RBW-MARKER
  2954. ><RBW-PARABODY>To start the ObjectTeam Browser:</RBW-PARABODY
  2955. ></P.PROCEDURE
  2956. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  2957. ></RBW-AUTOGEN
  2958. ></RBW-MARKER
  2959. ><RBW-PARABODY>In your shell window, enter:</RBW-PARABODY
  2960. ></LN.LIST.NUM
  2961. ><EM.EXAMPLE.MONO>ot &</EM.EXAMPLE.MONO
  2962. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  2963. ></RBW-AUTOGEN
  2964. ></RBW-MARKER
  2965. ><RBW-PARABODY>To access the product documentation, select Help | Product Documentation in the ObjectTeam Browser.</RBW-PARABODY
  2966. ></P.PROCEDURE
  2967. ><RBWAUTO-0002></RBWAUTO-0002
  2968. ><!--
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974. CONVERTING SOURCE FILE ../../sources/igun/igunupgr.fm5.mif
  2975.  
  2976.  
  2977. --><B.BODY></B.BODY
  2978. ><B.BODY></B.BODY
  2979. ><B.BODY></B.BODY
  2980. ><B.BODY></B.BODY
  2981. ><B.BODY></B.BODY
  2982. ></LABEL
  2983. ></SUBSECTION
  2984. ></SECTION
  2985. ></CHAPTER
  2986. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  2987. ></RBW-AUTOGEN
  2988. >Upgrading <RBW-ANCHOR ID="17129"></RBW-ANCHOR
  2989. >from a Previous Release<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  2990. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  2991. ></RBW-SYSOBJ
  2992. ></C.CHAPTER.HEAD
  2993. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2994. >Introduction</L.LABEL
  2995. ><B.BODY>This chapter describes how to upgrade an existing installation of ObjectTeam from versions 5.1.1, 5.2.1 or 6.1.1 to version 7.1.1 on UNIX machines.</B.BODY
  2996. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  2997. >Upgrading on Windows</SL.SUBLABEL
  2998. ><B.BODY>For details on how to upgrade ObjectTeam on PCs running Windows 95 or Windows NT, refer to the <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  2999. ><CX5FX5FTITLE></CX5FX5FTITLE
  3000. > <CX5FX5FTERM>for Microsoft Windows</CX5FX5FTERM
  3001. >.</B.BODY
  3002. ></LABEL
  3003. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3004. >Before you start</L.LABEL
  3005. ><B.BODY>Before starting this upgrade procedure, you must have:</B.BODY
  3006. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  3007. ></RBW-AUTOGEN
  3008. ></RBW-MARKER
  3009. ><RBW-PARABODY>A working ObjectTeam installation. </RBW-PARABODY
  3010. ></LB.LIST.BULLET
  3011. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  3012. ></RBW-AUTOGEN
  3013. ></RBW-MARKER
  3014. ><RBW-PARABODY>Installed the DynaText browser software as described in the CD insert.</RBW-PARABODY
  3015. ></LB.LIST.BULLET
  3016. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  3017. ></RBW-AUTOGEN
  3018. ></RBW-MARKER
  3019. ><RBW-PARABODY>A new license file</RBW-PARABODY
  3020. ></LB.LIST.BULLET
  3021. ></LABEL
  3022. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3023. >Default directory</L.LABEL
  3024. ><B.BODY>In this chapter, the installation directory for the ObjectTeam product files is indicated as <CX5FX5FTERM>M4_home</CX5FX5FTERM
  3025. >. By default, this is /usr/cayenne/objectteam, however you can install ObjectTeam elsewhere on your machine.</B.BODY
  3026. ></LABEL
  3027. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3028. >Reading the Read Me First Notes</L.LABEL
  3029. ><B.BODY>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You must read these notes before starting installation.</B.BODY
  3030. ><B.BODY>To read the Read Me First Notes, open the file /cdrom/readme.txt in a text editor, or open the file /cdrom/readme.htm in a Web browser.</B.BODY
  3031. ><B.BODY>For details of the supported Operating Systems and DBMS versions, open the file /cdrom/certify.htm in a web browser.</B.BODY
  3032. ></LABEL
  3033. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3034. >In this chapter</L.LABEL
  3035. ><B.BODY>This chapter contains the following sections:</B.BODY
  3036. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  3037. ></ENTRY
  3038. ></RBW-ROW
  3039. ></THEAD
  3040. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22752" TYPE="XREF-TEXTCOPY">Upgrading an ObjectTeam Master Server&rbwtab;3–3</RBW-XREF
  3041. ></SB.SECTION.BLOCK.TABLE
  3042. ></ENTRY
  3043. ></RBW-ROW
  3044. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36915" TYPE="XREF-TEXTCOPY">Upgrading an ObjectTeam Slave Server&rbwtab;3–24</RBW-XREF
  3045. ></SB.SECTION.BLOCK.TABLE
  3046. ></ENTRY
  3047. ></RBW-ROW
  3048. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11115" TYPE="XREF-TEXTCOPY">Upgrading an ObjectTeam Client&rbwtab;3–25</RBW-XREF
  3049. ></SB.SECTION.BLOCK.TABLE
  3050. ></ENTRY
  3051. ></RBW-ROW
  3052. ></TBODY
  3053. ></TGROUP
  3054. ></RBW-TABLE
  3055. ><B.BODY></B.BODY
  3056. ></LABEL
  3057. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22752"></RBW-ANCHOR
  3058. >Upgrading an ObjectTeam Master Server</S.SECTION.HEAD
  3059. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3060. >Introduction</L.LABEL
  3061. ><B.BODY>This section describes how to upgrade an ObjectTeam Master server from versions 5.1.1, 5.2.1 or 6.1.1.</B.BODY
  3062. ></LABEL
  3063. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3064. >Steps</L.LABEL
  3065. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3066. ></RBW-AUTOGEN
  3067. ></RBW-MARKER
  3068. ><RBW-PARABODY>Upgrading an ObjectTeam Master server on UNIX consists of the following steps:</RBW-PARABODY
  3069. ></P.PROCEDURE
  3070. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="37p"><COLSPEC COLNAME="2" COLWIDTH="103p"><COLSPEC COLNAME="3" COLWIDTH="307p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  3071. ></ENTRY
  3072. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Done as user</CELLHEADING
  3073. ></ENTRY
  3074. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  3075. ></ENTRY
  3076. ></RBW-ROW
  3077. ></THEAD
  3078. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  3079. ></ENTRY
  3080. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ot4omt</CELLBODY
  3081. ></ENTRY
  3082. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39623" TYPE="XREF-TEXTCOPY">Dump Your Repository Data</RBW-XREF
  3083. ></CELLBODY
  3084. ></ENTRY
  3085. ></RBW-ROW
  3086. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  3087. ></ENTRY
  3088. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>root</CELLBODY
  3089. ></ENTRY
  3090. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40016" TYPE="XREF-TEXTCOPY">Back Up Your ObjectTeam Installation</RBW-XREF
  3091. ></CELLBODY
  3092. ></ENTRY
  3093. ></RBW-ROW
  3094. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  3095. ></ENTRY
  3096. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>root</CELLBODY
  3097. ></ENTRY
  3098. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31802" TYPE="XREF-TEXTCOPY">Upgrade Your Operating System</RBW-XREF
  3099. ></CELLBODY
  3100. ></ENTRY
  3101. ></RBW-ROW
  3102. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  3103. ></ENTRY
  3104. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>root</CELLBODY
  3105. ></ENTRY
  3106. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40343" TYPE="XREF-TEXTCOPY">Upgrade Your DBMS</RBW-XREF
  3107. ></CELLBODY
  3108. ></ENTRY
  3109. ></RBW-ROW
  3110. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  3111. ></ENTRY
  3112. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oracle</CELLBODY
  3113. ></ENTRY
  3114. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Oracle users only: <RBW-XREF REFID="32991" TYPE="XREF-TEXTCOPY">Create an Oracle User and Tablespace</RBW-XREF
  3115. ></CX5FX5FFILE.NAME
  3116. ></CELLBODY
  3117. ></ENTRY
  3118. ></RBW-ROW
  3119. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  3120. ></ENTRY
  3121. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne </CELLBODY
  3122. ></ENTRY
  3123. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="37637" TYPE="XREF-TEXTCOPY">Install Your License</RBW-XREF
  3124. ></CELLBODY
  3125. ></ENTRY
  3126. ></RBW-ROW
  3127. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  3128. ></ENTRY
  3129. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  3130. ></ENTRY
  3131. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="15578" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  3132. ></CELLBODY
  3133. ></ENTRY
  3134. ></RBW-ROW
  3135. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>8</CELLBODY
  3136. ></ENTRY
  3137. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  3138. ></ENTRY
  3139. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34520" TYPE="XREF-TEXTCOPY">Set ObjectTeam Environment Variables</RBW-XREF
  3140. ></CELLBODY
  3141. ></ENTRY
  3142. ></RBW-ROW
  3143. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>9</CELLBODY
  3144. ></ENTRY
  3145. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  3146. ></ENTRY
  3147. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="26225" TYPE="XREF-TEXTCOPY">Move Your Repository Directory and Convert Your Data</RBW-XREF
  3148. ></CELLBODY
  3149. ></ENTRY
  3150. ></RBW-ROW
  3151. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>10</CELLBODY
  3152. ></ENTRY
  3153. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  3154. ></ENTRY
  3155. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13441" TYPE="XREF-TEXTCOPY">Test Your Installation</RBW-XREF
  3156. ></CELLBODY
  3157. ></ENTRY
  3158. ></RBW-ROW
  3159. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>11</CELLBODY
  3160. ></ENTRY
  3161. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>root</CELLBODY
  3162. ></ENTRY
  3163. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31132" TYPE="XREF-TEXTCOPY">Update The Startup Files</RBW-XREF
  3164. ></CELLBODY
  3165. ></ENTRY
  3166. ></RBW-ROW
  3167. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>12</CELLBODY
  3168. ></ENTRY
  3169. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cayenne</CELLBODY
  3170. ></ENTRY
  3171. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Optional:</CX5FX5FFILE.NAME
  3172. > Configure modules as decribed in Chapter 4, Activating Modules.</CELLBODY
  3173. ></ENTRY
  3174. ></RBW-ROW
  3175. ></TBODY
  3176. ></TGROUP
  3177. ></RBW-TABLE
  3178. ><B.BODY>These steps are described in the rest of this section.</B.BODY
  3179. ></LABEL
  3180. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39623"></RBW-ANCHOR
  3181. >Dump Your Repository Data</SS.SUBSEC.HEAD
  3182. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3183. >Introduction</L.LABEL
  3184. ><B.BODY>In ObjectTeam, a repository consists of a database part and a file system part. The directory in which the file system part is stored is called the repository directory. This contains individual directories for each repository, called corporate directories. </B.BODY
  3185. ><B.BODY>To convert your repository data to ObjectTeam 7.1.1, you must first dump the data from each repository to disk. The ObjectTeam dump facility dumps data from a single repository into its corresponding corporate directory. The result is a structure like the following:</B.BODY
  3186. ><EM.EXAMPLE.MONO><CX5FX5FTERM>M4_home</CX5FX5FTERM
  3187. >/</EM.EXAMPLE.MONO
  3188. ><EM.EXAMPLE.MONO>    corproot/</EM.EXAMPLE.MONO
  3189. ><EM.EXAMPLE.MONO>        <CX5FX5FTERM>repository_name</CX5FX5FTERM
  3190. >/</EM.EXAMPLE.MONO
  3191. ><EM.EXAMPLE.MONO>            DBDUMP/</EM.EXAMPLE.MONO
  3192. ><EM.EXAMPLE.MONO>                <CX5FX5FTERM>tables</CX5FX5FTERM
  3193. ></EM.EXAMPLE.MONO
  3194. ><EM.EXAMPLE.MONO>            <CX5FX5FTERM>project_id</CX5FX5FTERM
  3195. >/</EM.EXAMPLE.MONO
  3196. ><EM.EXAMPLE.MONO>                DBDUMP/</EM.EXAMPLE.MONO
  3197. ><EM.EXAMPLE.MONO>                        <CX5FX5FTERM>tables</CX5FX5FTERM
  3198. ></EM.EXAMPLE.MONO
  3199. ><B.BODY>The dumped database data is reloaded into a new database when you run the convert program.</B.BODY
  3200. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  3201. ></RBW-AUTOGEN
  3202. >By default, your 5.x or 6.1.1 repositories were created in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  3203. >\corproot<CX5FX5FFILE.NAME> </CX5FX5FFILE.NAME
  3204. >directory. If you created a repository in some other directory, either within or outside <CX5FX5FTERM>M4_home</CX5FX5FTERM
  3205. >, you can choose to dump the database part to that directory instead. Make sure you also back up that directory after dumping your repository. </N.NOTE
  3206. ></LABEL
  3207. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3208. >Upload user environment files</L.LABEL
  3209. ><B.BODY>Before you dump your repository you should make sure it is complete by uploading the working versions of files in the file system, such as generated source files.</B.BODY
  3210. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3211. ></RBW-AUTOGEN
  3212. ></RBW-MARKER
  3213. ><RBW-PARABODY>To upload your files from the user environment:</RBW-PARABODY
  3214. ></P.PROCEDURE
  3215. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3216. ></RBW-AUTOGEN
  3217. ></RBW-MARKER
  3218. ><RBW-PARABODY>Log on as ot4omt.</RBW-PARABODY
  3219. ></LN.LIST.NUM
  3220. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3221. ></RBW-AUTOGEN
  3222. ></RBW-MARKER
  3223. ><RBW-PARABODY>Start the ObjectTeam Repository Tool.</RBW-PARABODY
  3224. ></LN.LIST.NUM
  3225. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  3226. ></RBW-AUTOGEN
  3227. ></RBW-MARKER
  3228. ><RBW-PARABODY>Double&truehy;click on the User Environment Tool.</RBW-PARABODY
  3229. ></LN.LIST.NUM
  3230. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  3231. ></RBW-AUTOGEN
  3232. ></RBW-MARKER
  3233. ><RBW-PARABODY>In the User Environment Tool, select your repository.</RBW-PARABODY
  3234. ></LN.LIST.NUM
  3235. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  3236. ></RBW-AUTOGEN
  3237. ></RBW-MARKER
  3238. ><RBW-PARABODY>Select View | Refresh to collate a list of all working versions of repository files in the file system.</RBW-PARABODY
  3239. ></LN.LIST.NUM
  3240. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  3241. ></RBW-AUTOGEN
  3242. ></RBW-MARKER
  3243. ><RBW-PARABODY>Select all the files which are unfrozen and select File | Upload.</RBW-PARABODY
  3244. ></LN.LIST.NUM
  3245. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  3246. ></RBW-AUTOGEN
  3247. ></RBW-MARKER
  3248. ><RBW-PARABODY>The files are loaded into the repository.</RBW-PARABODY
  3249. ></LN.LIST.NUM
  3250. ></LABEL
  3251. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3252. >How to dump your repository data from ObjectTeam 5.x or 6.1.1</L.LABEL
  3253. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3254. ></RBW-AUTOGEN
  3255. ></RBW-MARKER
  3256. ><RBW-PARABODY>To dump a repository from ObjectTeam 5.x or 6.1.1:</RBW-PARABODY
  3257. ></P.PROCEDURE
  3258. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3259. ></RBW-AUTOGEN
  3260. ></RBW-MARKER
  3261. ><RBW-PARABODY>While logged in as ot4omt, in the ObjectTeam Repository Tool, double&truehy;click on the Corporate Management Tool.</RBW-PARABODY
  3262. ></LN.LIST.NUM
  3263. ><LR.LIST.RESULT>The Corporate Management Tool starts up.</LR.LIST.RESULT
  3264. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3265. ></RBW-AUTOGEN
  3266. ></RBW-MARKER
  3267. ><RBW-PARABODY>In the Corporate Management Tool, select your repository.</RBW-PARABODY
  3268. ></LN.LIST.NUM
  3269. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  3270. ></RBW-AUTOGEN
  3271. ></RBW-MARKER
  3272. ><RBW-PARABODY>Select File | Backup.</RBW-PARABODY
  3273. ></LN.LIST.NUM
  3274. ><LR.LIST.RESULT>The Backup Repository dialog appears.</LR.LIST.RESULT
  3275. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00006.unk" origfile="pics/backrep611.gif" origtype="X" origdoc="../../sources/igun/igunupgr.fm5.mif"></RBW-GRAPHIC
  3276. ></FA2.FIGURE.ANCHOR.2
  3277. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  3278. ></RBW-AUTOGEN
  3279. ></RBW-MARKER
  3280. ><RBW-PARABODY>Select the Dump Database option, and deselect the Archive Repository option.</RBW-PARABODY
  3281. ></LN.LIST.NUM
  3282. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  3283. ></RBW-AUTOGEN
  3284. ></RBW-MARKER
  3285. ><RBW-PARABODY>Click Shutdown to shut down any running dbservers. </RBW-PARABODY
  3286. ></LN.LIST.NUM
  3287. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  3288. ></RBW-AUTOGEN
  3289. >The dbservers will only shut down after all users have exited ObjectTeam.</N2.NOTE.2
  3290. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  3291. ></RBW-AUTOGEN
  3292. ></RBW-MARKER
  3293. ><RBW-PARABODY>Click OK to proceed with the dump.</RBW-PARABODY
  3294. ></LN.LIST.NUM
  3295. ><LR.LIST.RESULT>The repository is dumped to the DBDUMP directory in the corporate directory. </LR.LIST.RESULT
  3296. ></LABEL
  3297. ></SUBSECTION
  3298. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40016"></RBW-ANCHOR
  3299. >Back Up Your ObjectTeam Installation</SS.SUBSEC.HEAD
  3300. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3301. >Introduction</L.LABEL
  3302. ><B.BODY>Once you have dumped and backed up all repositories, you should make a complete backup of your ObjectTeam installation AND your repository databases. If for any reason you want to go back to your previous installation you can then restore your entire environment.</B.BODY
  3303. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3304. >6.1.1 upgrade only</SL.SUBLABEL
  3305. ><B.BODY>The upgrade also requires that you move your ObjectTeam installation to a separate location on the same disk.</B.BODY
  3306. ></LABEL
  3307. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3308. >Backing up your ObjectTeam installation </L.LABEL
  3309. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3310. ></RBW-AUTOGEN
  3311. ></RBW-MARKER
  3312. ><RBW-PARABODY>Once you have dumped and backed up all repositories:</RBW-PARABODY
  3313. ></P.PROCEDURE
  3314. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3315. ></RBW-AUTOGEN
  3316. ></RBW-MARKER
  3317. ><RBW-PARABODY>Log in as root.</RBW-PARABODY
  3318. ></LN.LIST.NUM
  3319. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3320. ></RBW-AUTOGEN
  3321. ></RBW-MARKER
  3322. ><RBW-PARABODY>Back up the entire <CX5FX5FTERM>M4_home</CX5FX5FTERM
  3323. > directory and DBMS databases to separate media, such as tape. </RBW-PARABODY
  3324. ></LN.LIST.NUM
  3325. ><LT.LIST.TEXT>Once you have successfully completed the upgrade, you can remove the backup if you wish.</LT.LIST.TEXT
  3326. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  3327. ></RBW-AUTOGEN
  3328. >If you have dumped any repositories to directories outside <CX5FX5FTERM>M4_home</CX5FX5FTERM
  3329. >, be sure to back up these directories as well.</N.NOTE
  3330. ></LABEL
  3331. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3332. >Copying your ObjectTeam installation to a separate location</L.LABEL
  3333. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3334. >6.1.1 upgrade only</SL.SUBLABEL
  3335. ><B.BODY>ObjectTeam 7.1.1 installs by default into /usr/cayenne/objectteam. If you are upgrading from ObjectTeam 6.1.1, and your installation is in /usr/cayenne/objectteam, you need to move your installation to a separate location for the upgrade to work properly.</B.BODY
  3336. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3337. ></RBW-AUTOGEN
  3338. ></RBW-MARKER
  3339. ><RBW-PARABODY>While logged in as root, move your <CX5FX5FTERM>M4_home</CX5FX5FTERM
  3340. >:</RBW-PARABODY
  3341. ></LN.LIST.NUM
  3342. ><EWM.EXAMPLEW.MONO>mv /usr/cayenne/objectteam /usr/cayenne/objectteam_old</EWM.EXAMPLEW.MONO
  3343. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3344. ></RBW-AUTOGEN
  3345. ></RBW-MARKER
  3346. ><RBW-PARABODY>Change the ownership of /usr/cayenne:</RBW-PARABODY
  3347. ></LN.LIST.NUM
  3348. ><EM.EXAMPLE.MONO>chown cayenne /usr/cayenne</EM.EXAMPLE.MONO
  3349. ></LABEL
  3350. ></SUBSECTION
  3351. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31802"></RBW-ANCHOR
  3352. >Upgrade Your Operating System</SS.SUBSEC.HEAD
  3353. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3354. >Upgrading your operating system</L.LABEL
  3355. ><B.BODY>Upgrade your operating system as described in your system manufacturer’s documentation.</B.BODY
  3356. ></LABEL
  3357. ></SUBSECTION
  3358. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40343"></RBW-ANCHOR
  3359. >Upgrade Your DBMS</SS.SUBSEC.HEAD
  3360. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3361. >Installing Informix 7.2</L.LABEL
  3362. ><B.BODY>Install Informix 7.2 as described in Appendix C, Installing Informix.</B.BODY
  3363. ><B.BODY>You can install Informix 7.2 on the same node on which Informix 7.1 was installed. Before installing Informix 7.2, shut down any ObjectTeam and Informix processes. It is recommended that you do not delete the Informix 7.1 directory structure and database until you are sure the upgrade has been successful.</B.BODY
  3364. ></LABEL
  3365. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3366. >Installing Oracle 7.3.x</L.LABEL
  3367. ><B.BODY>Install Oracle 7.3.x as described in your Oracle documentation.</B.BODY
  3368. ><B.BODY>For the exact version number, refer to the certification matrix on the CD.</B.BODY
  3369. ></LABEL
  3370. ></SUBSECTION
  3371. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32991"></RBW-ANCHOR
  3372. >Create an Oracle User and Tablespace</SS.SUBSEC.HEAD
  3373. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3374. >Introduction</L.LABEL
  3375. ><B.BODY>This step only applies if you are using Oracle as your repository database.</B.BODY
  3376. ><B.BODY>Before you can convert your old repository data, you must make a new Oracle user for each repository you want to convert.</B.BODY
  3377. ></LABEL
  3378. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3379. >Checking your Oracle installation</L.LABEL
  3380. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3381. ></RBW-AUTOGEN
  3382. ></RBW-MARKER
  3383. ><RBW-PARABODY>Log in as “oracle” to the UNIX system.</RBW-PARABODY
  3384. ></LN.LIST.NUM
  3385. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3386. ></RBW-AUTOGEN
  3387. ></RBW-MARKER
  3388. ><RBW-PARABODY>If you are not using SQL*Net, enter:</RBW-PARABODY
  3389. ></LN.LIST.NUM
  3390. ><EM.EXAMPLE.MONO>%sqlplus system/manager</EM.EXAMPLE.MONO
  3391. ><LT.LIST.TEXT>where system is the user and manager is the password.</LT.LIST.TEXT
  3392. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  3393. ></RBW-AUTOGEN
  3394. ></RBW-MARKER
  3395. ><RBW-PARABODY>If you are using SQL*Net, enter:</RBW-PARABODY
  3396. ></LN.LIST.NUM
  3397. ><EM.EXAMPLE.MONO>%sqlplus system/manager@Demo</EM.EXAMPLE.MONO
  3398. ><LT.LIST.TEXT>where Demo is the SQL*Net database specification string.</LT.LIST.TEXT
  3399. ><LT.LIST.TEXT>A successful connection results in a prompt like the following:</LT.LIST.TEXT
  3400. ><EM.EXAMPLE.MONO>sql></EM.EXAMPLE.MONO
  3401. ></LABEL
  3402. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3403. >Creating an Oracle tablespace</L.LABEL
  3404. ><B.BODY>You must create a new Oracle tablespace. This tablespace will be used as the default tablespace of the Oracle User to be created. Otherwise the ObjectTeam repository will be created in the “system” tablespace reserved for system data.</B.BODY
  3405. ><B.BODY>The following shows an example of creating a new tablespace:</B.BODY
  3406. ><EWM.EXAMPLEW.MONO>SQL> create tablespace cayennesp datafile ‘/home/oracle/dbs/oradata/demo/cayennesp01.dbf’ size 128m;</EWM.EXAMPLEW.MONO
  3407. ><B.BODY>This creates a tablespace called “cayennesp”. In addition, the file cayennesp01.dbf is created in your oradata directory. The oradata directory is created at Oracle installation time. Its location can vary.</B.BODY
  3408. ></LABEL
  3409. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3410. >How to create an Oracle User</L.LABEL
  3411. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3412. ></RBW-AUTOGEN
  3413. ></RBW-MARKER
  3414. ><RBW-PARABODY>To create an Oracle User:</RBW-PARABODY
  3415. ></P.PROCEDURE
  3416. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3417. ></RBW-AUTOGEN
  3418. ></RBW-MARKER
  3419. ><RBW-PARABODY>While logged in as oracle, use either the Create User dialog box of SQL*DBA or the SQL command CREATE USER.</RBW-PARABODY
  3420. ></LN.LIST.NUM
  3421. ><LT.LIST.TEXT>The following shows an example of the second option. </LT.LIST.TEXT
  3422. ><EM.EXAMPLE.MONO>SQL> create user cayenne identified by password default tablespace cayennesp;</EM.EXAMPLE.MONO
  3423. ><EM.EXAMPLE.MONO>SQL> grant connect, resource to cayenne;</EM.EXAMPLE.MONO
  3424. ><EM.EXAMPLE.MONO>SQL> quit</EM.EXAMPLE.MONO
  3425. ><B.BODY>For more details, refer to the Oracle Server Administrator’s Guide.</B.BODY
  3426. ></LABEL
  3427. ></SUBSECTION
  3428. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37637"></RBW-ANCHOR
  3429. >Install Your License</SS.SUBSEC.HEAD
  3430. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3431. >Licensing</L.LABEL
  3432. ><B.BODY>To upgrade to ObjectTeam 7.1.1, you must configure licensing. How you do this depends on whether you have a temporary or permanent license:</B.BODY
  3433. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3434. >Temporary license</SL.SUBLABEL
  3435. ><B.BODY>You must install your ObjectTeam license as described in this section</B.BODY
  3436. ><B.BODY><CX5FX5FFILE.NAME>Permanent license:</CX5FX5FFILE.NAME
  3437. > </B.BODY
  3438. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  3439. ></RBW-AUTOGEN
  3440. ></RBW-MARKER
  3441. ><RBW-PARABODY><CX5FX5FFILE.NAME>5.x upgrades:</CX5FX5FFILE.NAME
  3442. > You must install a license server, as decribed in Appendix B, Configuring a License Server. After you have done that, continue to <RBW-XREF REFID="15578" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  3443. >.</RBW-PARABODY
  3444. ></LB.LIST.BULLET
  3445. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  3446. ></RBW-AUTOGEN
  3447. ></RBW-MARKER
  3448. ><RBW-PARABODY><CX5FX5FFILE.NAME>6.1.1 upgrades:</CX5FX5FFILE.NAME
  3449. > You should already have a license server installed. If you have received a permanent license with your ObjectTeam 7.1.1 package, make sure you have write permission to /usr/cayenne/flexlm/license, then follow the instructions in <RBW-XREF REFID="21534" TYPE="XREF-TEXTCOPY">Installing a Permanent License on page B–10</RBW-XREF
  3450. >, then proceed to <RBW-XREF REFID="15578" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  3451. >.</RBW-PARABODY
  3452. ></LB.LIST.BULLET
  3453. ></LABEL
  3454. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3455. >Copying your temporary license</L.LABEL
  3456. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3457. ></RBW-AUTOGEN
  3458. ></RBW-MARKER
  3459. ><RBW-PARABODY>To install your temporary license file:</RBW-PARABODY
  3460. ></P.PROCEDURE
  3461. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3462. ></RBW-AUTOGEN
  3463. ></RBW-MARKER
  3464. ><RBW-PARABODY>Log in as cayenne.</RBW-PARABODY
  3465. ></LN.LIST.NUM
  3466. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3467. ></RBW-AUTOGEN
  3468. ></RBW-MARKER
  3469. ><RBW-PARABODY><CX5FX5FFILE.NAME>5.x upgrades:</CX5FX5FFILE.NAME
  3470. > Make a FLEXlm license directory:</RBW-PARABODY
  3471. ></LN.LIST.NUM
  3472. ><EM.EXAMPLE.MONO>mkdir &truehy;p /usr/cayenne/flexlm/license</EM.EXAMPLE.MONO
  3473. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  3474. ></RBW-AUTOGEN
  3475. ></RBW-MARKER
  3476. ><RBW-PARABODY><CX5FX5FFILE.NAME>6.1.1 upgrades:</CX5FX5FFILE.NAME
  3477. > Make sure you have write permission to /usr/cayenne/flexlm/license.</RBW-PARABODY
  3478. ></LN.LIST.NUM
  3479. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  3480. ></RBW-AUTOGEN
  3481. ></RBW-MARKER
  3482. ><RBW-PARABODY>If you received the license:</RBW-PARABODY
  3483. ></LN.LIST.NUM
  3484. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  3485. ></RBW-MARKER
  3486. ><RBW-PARABODY>On a floppy or CD, copy the license to <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  3487. ></RBW-PARABODY
  3488. ></LB2.LIST.BULLET.2
  3489. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  3490. ></RBW-MARKER
  3491. ><RBW-PARABODY>Via email, copy and paste the new feature information into an empty text file and save it as <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  3492. ></RBW-PARABODY
  3493. ></LB2.LIST.BULLET.2
  3494. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  3495. ></RBW-MARKER
  3496. ><RBW-PARABODY>Via fax, enter the new feature information by hand into an empty text file, and save it as <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  3497. ></RBW-PARABODY
  3498. ></LB2.LIST.BULLET.2
  3499. ></LABEL
  3500. ></SUBSECTION
  3501. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15578"></RBW-ANCHOR
  3502. >Install the ObjectTeam Product Files</SS.SUBSEC.HEAD
  3503. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3504. >How to install the ObjectTeam software</L.LABEL
  3505. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3506. ></RBW-AUTOGEN
  3507. ></RBW-MARKER
  3508. ><RBW-PARABODY>To install the ObjectTeam software:</RBW-PARABODY
  3509. ></P.PROCEDURE
  3510. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3511. ></RBW-AUTOGEN
  3512. ></RBW-MARKER
  3513. ><RBW-PARABODY>Mount the ObjectTeam CD, as described in the CD insert.</RBW-PARABODY
  3514. ></LN.LIST.NUM
  3515. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3516. ></RBW-AUTOGEN
  3517. ></RBW-MARKER
  3518. ><RBW-PARABODY>Log in to the workstation as user cayenne.</RBW-PARABODY
  3519. ></LN.LIST.NUM
  3520. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  3521. ></RBW-AUTOGEN
  3522. ></RBW-MARKER
  3523. ><RBW-PARABODY>Run the ObjectTeam install script.</RBW-PARABODY
  3524. ></LN.LIST.NUM
  3525. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  3526. > </LT.LIST.TEXT
  3527. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/sol/objecttm</EM.EXAMPLE.MONO
  3528. ><EM.EXAMPLE.MONO>./instot</EM.EXAMPLE.MONO
  3529. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  3530. > </LT.LIST.TEXT
  3531. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/HPUX/OBJECTTM</EM.EXAMPLE.MONO
  3532. ><EM.EXAMPLE.MONO>./INSTOT</EM.EXAMPLE.MONO
  3533. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  3534. > </LT.LIST.TEXT
  3535. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/aix/objecttm</EM.EXAMPLE.MONO
  3536. ><EM.EXAMPLE.MONO>./instot</EM.EXAMPLE.MONO
  3537. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  3538. > </LT.LIST.TEXT
  3539. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/DUX/OBJECTTM</EM.EXAMPLE.MONO
  3540. ><EM.EXAMPLE.MONO>./INSTOT</EM.EXAMPLE.MONO
  3541. ><LR.LIST.RESULT>The ObjectTeam product files are installed.</LR.LIST.RESULT
  3542. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  3543. ></RBW-AUTOGEN
  3544. ></RBW-MARKER
  3545. ><RBW-PARABODY>You are asked if you want the <CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  3546. ><CX5FX5FTERM></CX5FX5FTERM
  3547. > <CX5FX5FTERM>Product Documentation </CX5FX5FTERM
  3548. >to be installed. Enter yes or no.</RBW-PARABODY
  3549. ></LN.LIST.NUM
  3550. ></LABEL
  3551. ></SUBSECTION
  3552. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34520"></RBW-ANCHOR
  3553. >Set ObjectTeam Environment Variables</SS.SUBSEC.HEAD
  3554. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3555. >Introduction</L.LABEL
  3556. ><B.BODY>Before you can use ObjectTeam, you must set various ObjectTeam environment variables. This is done by running the m4create_env script.</B.BODY
  3557. ></LABEL
  3558. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3559. >How to run m4create_env</L.LABEL
  3560. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3561. ></RBW-AUTOGEN
  3562. ></RBW-MARKER
  3563. ><RBW-PARABODY>To run m4create_env:</RBW-PARABODY
  3564. ></P.PROCEDURE
  3565. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3566. ></RBW-AUTOGEN
  3567. ></RBW-MARKER
  3568. ><RBW-PARABODY>Log in as cayenne.</RBW-PARABODY
  3569. ></LN.LIST.NUM
  3570. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3571. ></RBW-AUTOGEN
  3572. ></RBW-MARKER
  3573. ><RBW-PARABODY>Set the necessary database environment variables for your DBMS in your current shell:</RBW-PARABODY
  3574. ></LN.LIST.NUM
  3575. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  3576. ></RBW-MARKER
  3577. ><RBW-PARABODY>INFORMIXDIR and INFORMIXSERVER for Informix</RBW-PARABODY
  3578. ></LB2.LIST.BULLET.2
  3579. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  3580. ></RBW-MARKER
  3581. ><RBW-PARABODY>ORACLE_HOME and ORACLE_SID for Oracle</RBW-PARABODY
  3582. ></LB2.LIST.BULLET.2
  3583. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  3584. ></RBW-AUTOGEN
  3585. ></RBW-MARKER
  3586. ><RBW-PARABODY>Change to the ObjectTeam bin directory:</RBW-PARABODY
  3587. ></LN.LIST.NUM
  3588. ><EM.EXAMPLE.MONO>cd /usr/cayenne/objectteam/bin</EM.EXAMPLE.MONO
  3589. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  3590. ></RBW-AUTOGEN
  3591. ></RBW-MARKER
  3592. ><RBW-PARABODY>Enter the following at the command line:</RBW-PARABODY
  3593. ></LN.LIST.NUM
  3594. ><EM.EXAMPLE.MONO>./m4create_env</EM.EXAMPLE.MONO
  3595. ></LABEL
  3596. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3597. >Running m4create_env</L.LABEL
  3598. ><B.BODY>While running, m4create_env asks you to specify various options.</B.BODY
  3599. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3600. ></RBW-AUTOGEN
  3601. ></RBW-MARKER
  3602. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  3603. ></LN.LIST.NUM
  3604. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  3605. ></RBW-AUTOGEN
  3606. ></RBW-MARKER
  3607. ><RBW-PARABODY>If you are running the license server software on the Master server, the default is your existing setting of LM_LICENSE_FILE. If you do not have this variable set, the default is /usr/cayenne/flexlm/license/cayenne.dat. </RBW-PARABODY
  3608. ></LN2.LIST.NUM.2
  3609. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  3610. ></RBW-AUTOGEN
  3611. ></RBW-MARKER
  3612. ><RBW-PARABODY>If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  3613. ></LN2.LIST.NUM.2
  3614. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  3615. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  3616. ></RBW-AUTOGEN
  3617. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a colon (:).</N2.NOTE.2
  3618. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3619. ></RBW-AUTOGEN
  3620. ></RBW-MARKER
  3621. ><RBW-PARABODY>You are asked to specify the type of installation. Options are Master server, Slave server, or Client. Accept the default of Master.</RBW-PARABODY
  3622. ></LN.LIST.NUM
  3623. ><LR.LIST.RESULT>A warning is displayed that various environment files are created by the script.</LR.LIST.RESULT
  3624. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  3625. ></RBW-AUTOGEN
  3626. ></RBW-MARKER
  3627. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  3628. ></LN.LIST.NUM
  3629. ><LR.LIST.RESULT>The m4create_env script displays a summary of your operating system and repository DBMS. </LR.LIST.RESULT
  3630. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  3631. ></RBW-AUTOGEN
  3632. ></RBW-MARKER
  3633. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  3634. ></LN.LIST.NUM
  3635. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  3636. ></RBW-AUTOGEN
  3637. ></RBW-MARKER
  3638. ><RBW-PARABODY>You are asked to specify the value of the LC_CTYPE environment variable. The default is C. Press return to accept the default or specify a value.</RBW-PARABODY
  3639. ></LN.LIST.NUM
  3640. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  3641. ></RBW-AUTOGEN
  3642. ></RBW-MARKER
  3643. ><RBW-PARABODY>You are asked to specify the value of the LC_COLLATE environment variable. The default is C. Press return to accept the default or specify a value.</RBW-PARABODY
  3644. ></LN.LIST.NUM
  3645. ><LR.LIST.RESULT>The default printer is displayed. </LR.LIST.RESULT
  3646. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  3647. ></RBW-AUTOGEN
  3648. ></RBW-MARKER
  3649. ><RBW-PARABODY>You are asked if you want to change the default printer or printer command for ASCII printing. Specify the printer command or change the default printer. </RBW-PARABODY
  3650. ></LN.LIST.NUM
  3651. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  3652. ></RBW-AUTOGEN
  3653. ></RBW-MARKER
  3654. ><RBW-PARABODY>You are asked if you want to change the default printer or printer command for graphical (PostScript) printing. Specify the printer command or change the default printer. </RBW-PARABODY
  3655. ></LN.LIST.NUM
  3656. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  3657. ></RBW-AUTOGEN
  3658. ></RBW-MARKER
  3659. ><RBW-PARABODY>For FrameMaker users, you are asked if you want to accept the default version of FrameMaker (International English) or if you want to change to the US English version. Press Return to accept the default or type N to change to the US version.</RBW-PARABODY
  3660. ></LN.LIST.NUM
  3661. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  3662. ></RBW-AUTOGEN
  3663. ></RBW-MARKER
  3664. ><RBW-PARABODY>You are asked what kind of license you have. Press Return if you have a Temporary license or type 2 if you have a Permanent license.</RBW-PARABODY
  3665. ></LN.LIST.NUM
  3666. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  3667. ></RBW-AUTOGEN
  3668. ></RBW-MARKER
  3669. ><RBW-PARABODY>You are asked for the name of your repository DBMS home directory. The default is the directory you set in INFORMIXDIR or ORACLE_HOME. Press Return to accept the default.</RBW-PARABODY
  3670. ></LN.LIST.NUM
  3671. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  3672. ></RBW-AUTOGEN
  3673. ></RBW-MARKER
  3674. ><RBW-PARABODY>If you are using Oracle as your repository, you are asked to specify the Oracle SID. The default is the value you set in ORACLE_SID. Press Return to accept the default.</RBW-PARABODY
  3675. ></LN2.LIST.NUM.2
  3676. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  3677. ></RBW-AUTOGEN
  3678. ></RBW-MARKER
  3679. ><RBW-PARABODY>If you are using Informix as your repository, you are asked to specify the name of the Informix server. The default is the value you set in INFORMIXSERVER. Press Return to accept the default or type 2 to change the server.</RBW-PARABODY
  3680. ></LN2.LIST.NUM.2
  3681. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  3682. ></RBW-AUTOGEN
  3683. ></RBW-MARKER
  3684. ><RBW-PARABODY>The location of the DynaText installation. The default is /usr/cayenne/dtext23/bin<CX5FX5FTERM>platform</CX5FX5FTERM
  3685. > where <CX5FX5FTERM>platform</CX5FX5FTERM
  3686. > is one of sun5, hp, ibm, or decosf.</RBW-PARABODY
  3687. ></LN.LIST.NUM
  3688. ></LABEL
  3689. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3690. >Result of m4create_env</L.LABEL
  3691. ><B.BODY>M4create_env creates the following initial files: </B.BODY
  3692. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="235p"><COLSPEC COLNAME="2" COLWIDTH="241p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File</CELLHEADING
  3693. ></ENTRY
  3694. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Use</CELLHEADING
  3695. ></ENTRY
  3696. ></RBW-ROW
  3697. ></THEAD
  3698. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/usr/cayenne/.m4_login</CELLBODY
  3699. ></ENTRY
  3700. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Login file sourced by .login</CELLBODY
  3701. ></ENTRY
  3702. ></RBW-ROW
  3703. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/usr/cayenne/.m4_profile</CELLBODY
  3704. ></ENTRY
  3705. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Login file sourced by .profile</CELLBODY
  3706. ></ENTRY
  3707. ></RBW-ROW
  3708. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  3709. >/etc/objservers.objservers</CELLBODY
  3710. ></ENTRY
  3711. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Repository definition file</CELLBODY
  3712. ></ENTRY
  3713. ></RBW-ROW
  3714. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  3715. ><RBWAUTO-0004>/</RBWAUTO-0004
  3716. >etc/m4env.m4env</CELLBODY
  3717. ></ENTRY
  3718. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam environment variable file</CELLBODY
  3719. ></ENTRY
  3720. ></RBW-ROW
  3721. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  3722. ><RBWAUTO-0004>/</RBWAUTO-0004
  3723. >bin/ot</CELLBODY
  3724. ></ENTRY
  3725. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Browser startup script</CELLBODY
  3726. ></ENTRY
  3727. ></RBW-ROW
  3728. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  3729. >/bin/starthelp</CELLBODY
  3730. ></ENTRY
  3731. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Help tool startup script</CELLBODY
  3732. ></ENTRY
  3733. ></RBW-ROW
  3734. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>M4_home</CX5FX5FTERM
  3735. >/bin/otreptool</CELLBODY
  3736. ></ENTRY
  3737. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam Repository tool startup script</CELLBODY
  3738. ></ENTRY
  3739. ></RBW-ROW
  3740. ></TBODY
  3741. ></TGROUP
  3742. ></RBW-TABLE
  3743. ></LABEL
  3744. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3745. >Setting your environment</L.LABEL
  3746. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3747. ></RBW-AUTOGEN
  3748. ></RBW-MARKER
  3749. ><RBW-PARABODY>To set your environment variables, log out and log in again as cayenne.</RBW-PARABODY
  3750. ></P.PROCEDURE
  3751. ></LABEL
  3752. ></SUBSECTION
  3753. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26225"></RBW-ANCHOR
  3754. >Move Your Repository Directory and Convert Your Data</SS.SUBSEC.HEAD
  3755. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3756. >Before you start</L.LABEL
  3757. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  3758. ></RBW-AUTOGEN
  3759. ></RBW-MARKER
  3760. ><RBW-PARABODY>If you have a permanent license, make sure your license server is running. If not, start it as follows:</RBW-PARABODY
  3761. ></LB.LIST.BULLET
  3762. ><EWM.EXAMPLEW.MONO>/usr/cayenne/flexlm/bin/lmgrd &truehy;c /usr/cayenne/flexlm/license/cayenne.dat</EWM.EXAMPLEW.MONO
  3763. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  3764. ></RBW-AUTOGEN
  3765. ></RBW-MARKER
  3766. ><RBW-PARABODY>Make sure the Cayenne broker (ot_broker) is running. If not, start it as follows:</RBW-PARABODY
  3767. ></LB.LIST.BULLET
  3768. ><EM.EXAMPLE.MONO>ot_broker &</EM.EXAMPLE.MONO
  3769. ></LABEL
  3770. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3771. >Moving your repository directory</L.LABEL
  3772. ><B.BODY>Make sure you are logged on as user cayenne.</B.BODY
  3773. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3774. >Upgrade from 5.x</SL.SUBLABEL
  3775. ><B.BODY>Your repositories should be in /usr/ot4omt/corproot. Move the contents of the corproot directory to the new default location:</B.BODY
  3776. ><EM.EXAMPLE.MONO>mkdir /usr/cayenne/repos</EM.EXAMPLE.MONO
  3777. ><EM.EXAMPLE.MONO>cp &truehy;r /usr/ot4omt/corproot/* /usr/cayenne/repos</EM.EXAMPLE.MONO
  3778. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3779. >Upgrade from 6.1.1</SL.SUBLABEL
  3780. ><B.BODY>Your 6.1.1 repositories should be in /usr/cayenne/objectteam_old/corproot. Move the contents of the corproot directory to the new default location:</B.BODY
  3781. ><EWM.EXAMPLEW.MONO>mkdir /usr/cayenne/repos</EWM.EXAMPLEW.MONO
  3782. ><EWM.EXAMPLEW.MONO>cp &truehy;r /usr/cayenne/objectteam_old/corproot/* /usr/cayenne/repos</EWM.EXAMPLEW.MONO
  3783. ></LABEL
  3784. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3785. >How to convert your <CX5FX5FFILE.NAME>Informix repository</CX5FX5FFILE.NAME
  3786. ></L.LABEL
  3787. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3788. ></RBW-AUTOGEN
  3789. ></RBW-MARKER
  3790. ><RBW-PARABODY>To convert your Informix repository:</RBW-PARABODY
  3791. ></P.PROCEDURE
  3792. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3793. ></RBW-AUTOGEN
  3794. ></RBW-MARKER
  3795. ><RBW-PARABODY>Enter the following command.</RBW-PARABODY
  3796. ></LN.LIST.NUM
  3797. ><EWM.EXAMPLEW.MONO>$M4_home/bin/convert61to71 &truehy;s <CX5FX5FTERM>server</CX5FX5FTERM
  3798. > <CX5FX5FTERM>dbname</CX5FX5FTERM
  3799. > <CX5FX5FTERM>corporateDir</CX5FX5FTERM
  3800. > </EWM.EXAMPLEW.MONO
  3801. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="132p"><COLSPEC COLNAME="2" COLWIDTH="304p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  3802. ></ENTRY
  3803. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  3804. ></ENTRY
  3805. ></RBW-ROW
  3806. ></THEAD
  3807. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>server</CX5FX5FTERM
  3808. ></CELLBODY
  3809. ></ENTRY
  3810. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the Informix database server host</CELLBODY
  3811. ></ENTRY
  3812. ></RBW-ROW
  3813. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>dbname</CX5FX5FTERM
  3814. ></CELLBODY
  3815. ></ENTRY
  3816. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the ObjectTeam 5.x or 6.1.1 corporate database</CELLBODY
  3817. ></ENTRY
  3818. ></RBW-ROW
  3819. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>corporateDir</CX5FX5FTERM
  3820. ></CELLBODY
  3821. ></ENTRY
  3822. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The full pathname of the corporate directory (not the repository directory)</CELLBODY
  3823. ></ENTRY
  3824. ></RBW-ROW
  3825. ></TBODY
  3826. ></TGROUP
  3827. ></RBW-TABLE
  3828. ><LT.LIST.TEXT>For example (Informix):</LT.LIST.TEXT
  3829. ><EWM.EXAMPLEW.MONO>$M4_home/bin/convert61to71 &truehy;s neptune repos_db /usr/cayenne/repos/my_repos</EWM.EXAMPLEW.MONO
  3830. ></LABEL
  3831. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3832. >How to <CX5FX5FFILE.NAME>convert your Oracle repository</CX5FX5FFILE.NAME
  3833. ></L.LABEL
  3834. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3835. ></RBW-AUTOGEN
  3836. ></RBW-MARKER
  3837. ><RBW-PARABODY>To run convert61to71 for Oracle:</RBW-PARABODY
  3838. ></P.PROCEDURE
  3839. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3840. ></RBW-AUTOGEN
  3841. ></RBW-MARKER
  3842. ><RBW-PARABODY>Enter the following command.</RBW-PARABODY
  3843. ></LN.LIST.NUM
  3844. ><EWM.EXAMPLEW.MONO>$M4_home/bin/convert61to71 &truehy;u <CX5FX5FTERM>user</CX5FX5FTERM
  3845. > &truehy;P <CX5FX5FTERM>password</CX5FX5FTERM
  3846. > <CX5FX5FTERM>dbname</CX5FX5FTERM
  3847. > <CX5FX5FTERM>corporateDir</CX5FX5FTERM
  3848. > </EWM.EXAMPLEW.MONO
  3849. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="145p"><COLSPEC COLNAME="2" COLWIDTH="286p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  3850. ></ENTRY
  3851. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  3852. ></ENTRY
  3853. ></RBW-ROW
  3854. ></THEAD
  3855. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;u <CX5FX5FTERM>user</CX5FX5FTERM
  3856. ></CELLBODY
  3857. ></ENTRY
  3858. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>User/schema name for accessing the database </CELLBODY
  3859. ></ENTRY
  3860. ></RBW-ROW
  3861. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;P <CX5FX5FTERM>password</CX5FX5FTERM
  3862. ></CELLBODY
  3863. ></ENTRY
  3864. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Password for accessing the database</CELLBODY
  3865. ></ENTRY
  3866. ></RBW-ROW
  3867. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>dbname</CX5FX5FTERM
  3868. ></CELLBODY
  3869. ></ENTRY
  3870. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the Oracle database specification string. If SQL*Net is installed, specify for dbname the Oracle SID. If running this program on an installation without SQL*Net, specify as dbname “default” and make sure the ORACLE_SID environment variable is set to the system identifier of the database to connect.</CELLBODY
  3871. ></ENTRY
  3872. ></RBW-ROW
  3873. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>corporateDir</CX5FX5FTERM
  3874. ></CELLBODY
  3875. ></ENTRY
  3876. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The full pathname of the corporate directory (not the repository directory)</CELLBODY
  3877. ></ENTRY
  3878. ></RBW-ROW
  3879. ></TBODY
  3880. ></TGROUP
  3881. ></RBW-TABLE
  3882. ><LT.LIST.TEXT>For example, if you have made a user my_repos and you are using SQL*Net, you would enter the following:</LT.LIST.TEXT
  3883. ><EWM.EXAMPLEW.MONO>$M4_home/bin/convert61to71 &truehy;u my_repos &truehy;P my_db oracle7 /usr/cayenne/repos/my_repos</EWM.EXAMPLEW.MONO
  3884. ></LABEL
  3885. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3886. >Troubleshooting</L.LABEL
  3887. ><B.BODY>If anything goes wrong during the creation of the repository, refer to Appendix D, Troubleshooting.</B.BODY
  3888. ></LABEL
  3889. ></SUBSECTION
  3890. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13441"></RBW-ANCHOR
  3891. >Test Your Installation</SS.SUBSEC.HEAD
  3892. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3893. >Testing your installation</L.LABEL
  3894. ><B.BODY>You should test your installation before going further. </B.BODY
  3895. ><B.BODY>If anything goes wrong during while testing your installation, refer to Appendix D, Troubleshooting.</B.BODY
  3896. ></LABEL
  3897. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3898. >Setting your default repository</L.LABEL
  3899. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3900. ></RBW-AUTOGEN
  3901. ></RBW-MARKER
  3902. ><RBW-PARABODY>To make your converted repository the default repository, you must set the M4_levelpath variable:</RBW-PARABODY
  3903. ></P.PROCEDURE
  3904. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3905. ></RBW-AUTOGEN
  3906. ></RBW-MARKER
  3907. ><RBW-PARABODY>Open the ObjectTeam environment variables file $M4_home/etc/m4env.m4env.</RBW-PARABODY
  3908. ></LN.LIST.NUM
  3909. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3910. ></RBW-AUTOGEN
  3911. ></RBW-MARKER
  3912. ><RBW-PARABODY>Add the following line:</RBW-PARABODY
  3913. ></LN.LIST.NUM
  3914. ><EM.EXAMPLE.MONO>M4_levelpath=/<CX5FX5FTERM>my_repos</CX5FX5FTERM
  3915. >;RW</EM.EXAMPLE.MONO
  3916. ><LT.LIST.TEXT>where <CX5FX5FTERM>my_repos</CX5FX5FTERM
  3917. > is the name of your converted repository.</LT.LIST.TEXT
  3918. ></LABEL
  3919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3920. >Test your installation</L.LABEL
  3921. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3922. ></RBW-AUTOGEN
  3923. ></RBW-MARKER
  3924. ><RBW-PARABODY>To test your installation, start the Browser:</RBW-PARABODY
  3925. ></P.PROCEDURE
  3926. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3927. ></RBW-AUTOGEN
  3928. ></RBW-MARKER
  3929. ><RBW-PARABODY>Enter:</RBW-PARABODY
  3930. ></LN.LIST.NUM
  3931. ><EM.EXAMPLE.MONO>ot &</EM.EXAMPLE.MONO
  3932. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3933. ></RBW-AUTOGEN
  3934. ></RBW-MARKER
  3935. ><RBW-PARABODY>To access the product documentation, select Help | Product Documentation in the ObjectTeam Browser.</RBW-PARABODY
  3936. ></P.PROCEDURE
  3937. ></LABEL
  3938. ></SUBSECTION
  3939. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31132"></RBW-ANCHOR
  3940. >Update The Startup Files</SS.SUBSEC.HEAD
  3941. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3942. >Configuring the Broker </L.LABEL
  3943. ><B.BODY>Once you have finished the upgrade, it is convenient to configure the ObjectTeam broker and license server to start automatically at boot time. </B.BODY
  3944. ></LABEL
  3945. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  3946. >Setting your startup file</L.LABEL
  3947. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  3948. ></RBW-AUTOGEN
  3949. ></RBW-MARKER
  3950. ><RBW-PARABODY>To set your startup file:</RBW-PARABODY
  3951. ></P.PROCEDURE
  3952. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  3953. ></RBW-AUTOGEN
  3954. ></RBW-MARKER
  3955. ><RBW-PARABODY>Log in as root.</RBW-PARABODY
  3956. ></LN.LIST.NUM
  3957. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  3958. ></RBW-AUTOGEN
  3959. ></RBW-MARKER
  3960. ><RBW-PARABODY>Remove links to the old startup file:</RBW-PARABODY
  3961. ></LN.LIST.NUM
  3962. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  3963. > </LT.LIST.TEXT
  3964. ><EM.EXAMPLE.MONO>rm /etc/rc0.d/K19ot4omt </EM.EXAMPLE.MONO
  3965. ><EM.EXAMPLE.MONO>rm /etc/rc3.d/S19ot4omt.</EM.EXAMPLE.MONO
  3966. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  3967. > </LT.LIST.TEXT
  3968. ><EM.EXAMPLE.MONO>rm /sbin/rc0.d/K719ot4omt </EM.EXAMPLE.MONO
  3969. ><EM.EXAMPLE.MONO>rm /sbin/rc2.d/S719ot4omt.</EM.EXAMPLE.MONO
  3970. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  3971. > Remove the following lines from /etc/inittab:</LT.LIST.TEXT
  3972. ><EM.EXAMPLE.MONO>ot4omt:2:once: sh /etc/rc.ot start</EM.EXAMPLE.MONO
  3973. ><EM.EXAMPLE.MONO>ot4omt:0:once: sh /etc/rc.ot stop</EM.EXAMPLE.MONO
  3974. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  3975. > </LT.LIST.TEXT
  3976. ><EM.EXAMPLE.MONO>rm /sbin/rc2.d/K19ot4omt</EM.EXAMPLE.MONO
  3977. ><EM.EXAMPLE.MONO>rm /sbin/rc3.d/S19ot4omt.</EM.EXAMPLE.MONO
  3978. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  3979. ></RBW-AUTOGEN
  3980. ></RBW-MARKER
  3981. ><RBW-PARABODY>Copy the default startup file:</RBW-PARABODY
  3982. ></LN.LIST.NUM
  3983. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  3984. > </LT.LIST.TEXT
  3985. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/init.d/ot </EM.EXAMPLE.MONO
  3986. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  3987. > </LT.LIST.TEXT
  3988. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /sbin/init.d/ot</EM.EXAMPLE.MONO
  3989. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  3990. > </LT.LIST.TEXT
  3991. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/rc.ot</EM.EXAMPLE.MONO
  3992. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  3993. > </LT.LIST.TEXT
  3994. ><EM.EXAMPLE.MONO>cp $M4_home/etc/ot /etc/init.d/ot</EM.EXAMPLE.MONO
  3995. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  3996. ></RBW-AUTOGEN
  3997. ></RBW-MARKER
  3998. ><RBW-PARABODY>Make links to the startup file</RBW-PARABODY
  3999. ></LN.LIST.NUM
  4000. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  4001. > </LT.LIST.TEXT
  4002. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/ot /etc/rc3.d/S19ot</EM.EXAMPLE.MONO
  4003. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/ot /etc/rc0.d/K19ot</EM.EXAMPLE.MONO
  4004. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  4005. > </LT.LIST.TEXT
  4006. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc2.d/S719ot</EM.EXAMPLE.MONO
  4007. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc0.d/K719ot</EM.EXAMPLE.MONO
  4008. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  4009. > Add the following lines to /etc/inittab:</LT.LIST.TEXT
  4010. ><EM.EXAMPLE.MONO>ot:2:once: sh /etc/rc.ot start</EM.EXAMPLE.MONO
  4011. ><EM.EXAMPLE.MONO>ot:0:once: sh /etc/rc.ot stop</EM.EXAMPLE.MONO
  4012. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  4013. > </LT.LIST.TEXT
  4014. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc3.d/S19ot</EM.EXAMPLE.MONO
  4015. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/ot /sbin/rc2.d/K19ot</EM.EXAMPLE.MONO
  4016. ><B.BODY>You can enter any numbers after S and K as long as startup and shutdown are done in the correct order. It is important that the DBMS server start before the ot_broker starts, and that the ot_broker stop before the DBMS server stops.</B.BODY
  4017. ></LABEL
  4018. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4019. >Editing the startup file</L.LABEL
  4020. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  4021. ></RBW-AUTOGEN
  4022. ></RBW-MARKER
  4023. ><RBW-PARABODY>To have the ot_broker start automatically at boot time:</RBW-PARABODY
  4024. ></P.PROCEDURE
  4025. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  4026. ></RBW-AUTOGEN
  4027. ></RBW-MARKER
  4028. ><RBW-PARABODY>Open the ot file you just copied in a text editor.</RBW-PARABODY
  4029. ></LN.LIST.NUM
  4030. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  4031. ></RBW-AUTOGEN
  4032. ></RBW-MARKER
  4033. ><RBW-PARABODY>Check the following lines point to the location of the FLEXlm installation and the license file:</RBW-PARABODY
  4034. ></LN.LIST.NUM
  4035. ><EM.EXAMPLE.MONO>LMHOME=/usr/cayenne/flexlm</EM.EXAMPLE.MONO
  4036. ><EM.EXAMPLE.MONO>LM_LICENSE_FILE=$LMHOME/license/cayenne.dat</EM.EXAMPLE.MONO
  4037. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  4038. ></RBW-AUTOGEN
  4039. ></RBW-MARKER
  4040. ><RBW-PARABODY>Check the following line points to the root directory of the installation:</RBW-PARABODY
  4041. ></LN.LIST.NUM
  4042. ><EM.EXAMPLE.MONO>M4_home=/usr/cayenne/objectteam</EM.EXAMPLE.MONO
  4043. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  4044. ></RBW-AUTOGEN
  4045. ></RBW-MARKER
  4046. ><RBW-PARABODY>If you did not install ObjectTeam as user cayenne, look for the following line:</RBW-PARABODY
  4047. ></LN.LIST.NUM
  4048. ><EM.EXAMPLE.MONO>CAYNID=${CAYNID:&truehy;”cayenne”}</EM.EXAMPLE.MONO
  4049. ><LT.LIST.TEXT>and replace cayenne with the name of the user you used to install ObjectTeam.</LT.LIST.TEXT
  4050. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  4051. ></RBW-AUTOGEN
  4052. ></RBW-MARKER
  4053. ><RBW-PARABODY>If this host is the license server, look for the following text:</RBW-PARABODY
  4054. ></LN.LIST.NUM
  4055. ><EWM.EXAMPLEW.MONO># If this script is run on the host used as license server,</EWM.EXAMPLEW.MONO
  4056. ><EWM.EXAMPLEW.MONO># uncomment one of the next two start&truehy;up instructions and</EWM.EXAMPLEW.MONO
  4057. ><EWM.EXAMPLEW.MONO># uncomment the line with ‘lmdown’ at the end of this file.</EWM.EXAMPLEW.MONO
  4058. ><LT.LIST.TEXT>and uncomment the appropriate lines depending on whether you want the license server to run with logging (default) or not. Do not uncomment these lines if you have a temporary license.</LT.LIST.TEXT
  4059. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  4060. ></RBW-AUTOGEN
  4061. ></RBW-MARKER
  4062. ><RBW-PARABODY>If this host is the license server, look for the following text:</RBW-PARABODY
  4063. ></LN.LIST.NUM
  4064. ><EWM.EXAMPLEW.MONO># If this script is run on the host used as license server,</EWM.EXAMPLEW.MONO
  4065. ><EWM.EXAMPLEW.MONO># uncomment the next line to stop the daemon automatically.</EWM.EXAMPLEW.MONO
  4066. ><LT.LIST.TEXT>and uncomment the indicated line. Do not uncomment this line if you have a temporary license.</LT.LIST.TEXT
  4067. ></LABEL
  4068. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4069. >Restarting the broker </L.LABEL
  4070. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  4071. ></RBW-AUTOGEN
  4072. ></RBW-MARKER
  4073. ><RBW-PARABODY>To restart the broker (and license server if you installed FLEXlm on the Master server), reboot your machine.</RBW-PARABODY
  4074. ></P.PROCEDURE
  4075. ></LABEL
  4076. ></SUBSECTION
  4077. ><SUBSECTION><SS.SUBSEC.HEAD>Next Steps</SS.SUBSEC.HEAD
  4078. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4079. >Configuring modules</L.LABEL
  4080. ><B.BODY>Now your new installation is working, you should activate the modules for which your site is licensed. For more details, see Chapter 4, Activating Modules.</B.BODY
  4081. ></LABEL
  4082. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4083. >Customization files</L.LABEL
  4084. ><B.BODY>Due to the addition of new features in this version of ObjectTeam, customizations made in previous versions may no longer work. If you have customized any Tcl files in <CX5FX5FTERM>M4_home</CX5FX5FTERM
  4085. >/tcl, It is recommended that you recreate your customizations based on the new Tcl files.</B.BODY
  4086. ><B.BODY>Note that some Tcl files have now moved and can be found in various modules. Note also that the names of some customization files have changed from previous versions. For more information on customizations and on modules, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  4087. ><CX5FX5FTITLE></CX5FX5FTITLE
  4088. >.</B.BODY
  4089. ></LABEL
  4090. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4091. >User roles</L.LABEL
  4092. ><B.BODY>If you had assigned roles to user ot4omt in your previous version of ObjectTeam, you should assign these roles to user cayenne in ObjectTeam 7.1.1. You should also remove the user ot4omt from ObjectTeam 7.1.1.</B.BODY
  4093. ><B.BODY>For details on adding and deleting users in ObjectTeam, refer to the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  4094. ><CX5FX5FTITLE></CX5FX5FTITLE
  4095. >.</B.BODY
  4096. ></LABEL
  4097. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4098. >Removing your old installation</L.LABEL
  4099. ><B.BODY><CX5FX5FFILE.NAME>Upgrade from 5.x:</CX5FX5FFILE.NAME
  4100. > If your old ObjectTeam installation was in /usr/ot4omt, then if you are satisfied that the new installation is working correctly, you can remove the directory tree. Log in as ot4omt and enter the following command:</B.BODY
  4101. ><EM.EXAMPLE.MONO>rm &truehy;r /usr/ot4omt</EM.EXAMPLE.MONO
  4102. ><B.BODY><CX5FX5FFILE.NAME>Upgrade from 6.1.1:</CX5FX5FFILE.NAME
  4103. > If your old ObjectTeam installation was in /usr/cayenne, then if you are satisfied that the new installation is working correctly, you can remove the directory tree. Log in as ot4omt and enter the following command:</B.BODY
  4104. ><EM.EXAMPLE.MONO>rm &truehy;r /usr/cayenne/objectteam_old</EM.EXAMPLE.MONO
  4105. ></LABEL
  4106. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4107. >Removing old databases</L.LABEL
  4108. ><B.BODY>Since the old databases are created by user ot4omt, these cannot be removed as cayenne. This should be done by user Informix or user system in the case of Oracle. </B.BODY
  4109. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  4110. ></RBW-AUTOGEN
  4111. >Do not remove databases until after you have fully tested your installation.</W.WARNING
  4112. ></LABEL
  4113. ></SUBSECTION
  4114. ></SECTION
  4115. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36915"></RBW-ANCHOR
  4116. >Upgrading an ObjectTeam Slave Server</S.SECTION.HEAD
  4117. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4118. >Steps</L.LABEL
  4119. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  4120. ></RBW-AUTOGEN
  4121. ></RBW-MARKER
  4122. ><RBW-PARABODY>To upgrade a local Slave server installation:</RBW-PARABODY
  4123. ></P.PROCEDURE
  4124. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  4125. ></RBW-AUTOGEN
  4126. ></RBW-MARKER
  4127. ><RBW-PARABODY>Log in to the Slave server as root.</RBW-PARABODY
  4128. ></LN.LIST.NUM
  4129. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  4130. ></RBW-AUTOGEN
  4131. ></RBW-MARKER
  4132. ><RBW-PARABODY>Stop the broker.</RBW-PARABODY
  4133. ></LN.LIST.NUM
  4134. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  4135. ></RBW-AUTOGEN
  4136. ></RBW-MARKER
  4137. ><RBW-PARABODY>Remove links to the old startup file and the links to it:</RBW-PARABODY
  4138. ></LN.LIST.NUM
  4139. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  4140. > </LT.LIST.TEXT
  4141. ><EM.EXAMPLE.MONO>rm /etc/init.d/ot4omt</EM.EXAMPLE.MONO
  4142. ><EM.EXAMPLE.MONO>rm /etc/rc0.d/K19ot4omt </EM.EXAMPLE.MONO
  4143. ><EM.EXAMPLE.MONO>rm /etc/rc3.d/S19ot4omt.</EM.EXAMPLE.MONO
  4144. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  4145. > </LT.LIST.TEXT
  4146. ><EM.EXAMPLE.MONO>rm /sbin/init.d/ot4omt</EM.EXAMPLE.MONO
  4147. ><EM.EXAMPLE.MONO>rm /sbin/rc0.d/K719ot4omt </EM.EXAMPLE.MONO
  4148. ><EM.EXAMPLE.MONO>rm /sbin/rc2.d/S719ot4omt.</EM.EXAMPLE.MONO
  4149. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  4150. > Remove the following lines from /etc/inittab:</LT.LIST.TEXT
  4151. ><EM.EXAMPLE.MONO>rm /etc/rc.ot4omt</EM.EXAMPLE.MONO
  4152. ><EM.EXAMPLE.MONO>ot4omt:2:once: sh /etc/rc.ot start</EM.EXAMPLE.MONO
  4153. ><EM.EXAMPLE.MONO>ot4omt:0:once: sh /etc/rc.ot stop</EM.EXAMPLE.MONO
  4154. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  4155. > </LT.LIST.TEXT
  4156. ><EM.EXAMPLE.MONO>rm /etc/init.d/ot4omt</EM.EXAMPLE.MONO
  4157. ><EM.EXAMPLE.MONO>rm /sbin/rc2.d/K19ot4omt</EM.EXAMPLE.MONO
  4158. ><EM.EXAMPLE.MONO>rm /sbin/rc3.d/S19ot4omt.</EM.EXAMPLE.MONO
  4159. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  4160. ></RBW-AUTOGEN
  4161. ></RBW-MARKER
  4162. ><RBW-PARABODY>Remove the entire ObjectTeam product directory tree (/usr/cayenne or /usr/ot4omt).</RBW-PARABODY
  4163. ></LN.LIST.NUM
  4164. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  4165. ></RBW-AUTOGEN
  4166. ></RBW-MARKER
  4167. ><RBW-PARABODY>Do a new Slave server install, as described in <RBW-XREF REFID="29343" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Slave Server on page 2–18</RBW-XREF
  4168. >.</RBW-PARABODY
  4169. ></LN.LIST.NUM
  4170. ></LABEL
  4171. ></SECTION
  4172. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="11115"></RBW-ANCHOR
  4173. >Upgrading an ObjectTeam Client</S.SECTION.HEAD
  4174. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4175. >Steps</L.LABEL
  4176. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  4177. ></RBW-AUTOGEN
  4178. ></RBW-MARKER
  4179. ><RBW-PARABODY>To upgrade a local client installation:</RBW-PARABODY
  4180. ></P.PROCEDURE
  4181. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  4182. ></RBW-AUTOGEN
  4183. ></RBW-MARKER
  4184. ><RBW-PARABODY>Log in to the client as root.</RBW-PARABODY
  4185. ></LN.LIST.NUM
  4186. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  4187. ></RBW-AUTOGEN
  4188. ></RBW-MARKER
  4189. ><RBW-PARABODY>Remove the entire ObjectTeam product directory tree (/usr/cayenne or /usr/ot4omt).</RBW-PARABODY
  4190. ></LN.LIST.NUM
  4191. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  4192. ></RBW-AUTOGEN
  4193. ></RBW-MARKER
  4194. ><RBW-PARABODY>Do a new client install, as described in <RBW-XREF REFID="28366" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Client on page 2–29</RBW-XREF
  4195. >.</RBW-PARABODY
  4196. ></LN.LIST.NUM
  4197. ><RBWAUTO-0002></RBWAUTO-0002
  4198. ><!--
  4199.  
  4200.  
  4201.  
  4202.  
  4203.  
  4204. CONVERTING SOURCE FILE ../../sources/igun/igunmods.fm5.mif
  4205.  
  4206.  
  4207. --><B.BODY></B.BODY
  4208. ><B.BODY></B.BODY
  4209. ><B.BODY></B.BODY
  4210. ><B.BODY></B.BODY
  4211. ><B.BODY></B.BODY
  4212. ></LABEL
  4213. ></SECTION
  4214. ></CHAPTER
  4215. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  4216. ></RBW-AUTOGEN
  4217. >Activating <RBW-ANCHOR ID="38042"></RBW-ANCHOR
  4218. >Modules<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  4219. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  4220. ></RBW-SYSOBJ
  4221. ></C.CHAPTER.HEAD
  4222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4223. >Introduction</L.LABEL
  4224. ><B.BODY>This chapter describes how to activate optional ObjectTeam functionality provided in licensed modules.</B.BODY
  4225. ></LABEL
  4226. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4227. >In this chapter</L.LABEL
  4228. ><B.BODY>This chapter contains the following sections:</B.BODY
  4229. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  4230. ></ENTRY
  4231. ></RBW-ROW
  4232. ></THEAD
  4233. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27316" TYPE="XREF-TEXTCOPY">ObjectTeam Modules&rbwtab;4–2</RBW-XREF
  4234. ></SB.SECTION.BLOCK.TABLE
  4235. ></ENTRY
  4236. ></RBW-ROW
  4237. ></TBODY
  4238. ></TGROUP
  4239. ></RBW-TABLE
  4240. ><B.BODY></B.BODY
  4241. ></LABEL
  4242. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27316"></RBW-ANCHOR
  4243. >ObjectTeam Modules</S.SECTION.HEAD
  4244. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4245. >Introduction</L.LABEL
  4246. ><B.BODY>ObjectTeam consists of a base product and a number of optional features. Each optional feature is implemented as an ObjectTeam module. To use the feature, you must activate the module. </B.BODY
  4247. ></LABEL
  4248. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4249. >Licensing</L.LABEL
  4250. ><B.BODY>Most modules require a valid license. If ObjectTeam displays license&truehy;related error messages, you may not have a valid license. </B.BODY
  4251. ><B.BODY>Refer to <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  4252. > for more information.</B.BODY
  4253. ></LABEL
  4254. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4255. >Modules and repository levels</L.LABEL
  4256. ><B.BODY>The instructions here cover how to activate modules on Corporate level for an entire corporate repository. You must have root access to do this. Modules activated on Corporate level are available by default for all users of this repository on every level.</B.BODY
  4257. ><B.BODY>You do not have to activate all modules on Corporate level. Users can activate them on any other level in the repository, as long as they are licensed.</B.BODY
  4258. ></LABEL
  4259. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4260. >Which ObjectTeam modules are available</L.LABEL
  4261. ><B.BODY>A <CX5FX5FTERM>module</CX5FX5FTERM
  4262. > is a directory of files that implement an optional ObjectTeam feature. The directory name is the module name. By default, all modules are stored in the modules directory of your <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  4263. > directory.</B.BODY
  4264. ><B.BODY>Modules on the following features are supplied with ObjectTeam. </B.BODY
  4265. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="150p"><COLSPEC COLNAME="2" COLWIDTH="198p"><COLSPEC COLNAME="3" COLWIDTH="279p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Feature</CELLHEADING
  4266. ></ENTRY
  4267. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module</CELLHEADING
  4268. ></ENTRY
  4269. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam Guide</CELLHEADING
  4270. ></ENTRY
  4271. ></RBW-ROW
  4272. ></THEAD
  4273. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Code Generation</CELLBODY
  4274. ></ENTRY
  4275. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ADA83 Code generation</CELLBODY
  4276. ></ENTRY
  4277. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  4278. ><CX5FX5FTERM> Ada</CX5FX5FTERM
  4279. ><CX5FX5FTITLE> Professional Developers Toolkit</CX5FX5FTITLE
  4280. > </CELLBODY
  4281. ></ENTRY
  4282. ></RBW-ROW
  4283. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4284. ></ENTRY
  4285. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ADA95 Code generation</CELLBODY
  4286. ></ENTRY
  4287. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  4288. ><CX5FX5FTERM> Ada Professional Developers Toolkit</CX5FX5FTERM
  4289. > </CELLBODY
  4290. ></ENTRY
  4291. ></RBW-ROW
  4292. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4293. ></ENTRY
  4294. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C++ Code Generation</CELLBODY
  4295. ></ENTRY
  4296. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4297. ><CX5FX5FTITLE></CX5FX5FTITLE
  4298. > <CX5FX5FTERM>for</CX5FX5FTERM
  4299. > <CX5FX5FTERM>C++</CX5FX5FTERM
  4300. ></CELLBODY
  4301. ></ENTRY
  4302. ></RBW-ROW
  4303. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4304. ></ENTRY
  4305. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CORBA IDL Code Generation</CELLBODY
  4306. ></ENTRY
  4307. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4308. ><CX5FX5FTITLE></CX5FX5FTITLE
  4309. > <CX5FX5FTITLE>for CORBA IDL</CX5FX5FTITLE
  4310. ></CELLBODY
  4311. ></ENTRY
  4312. ></RBW-ROW
  4313. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4314. ></ENTRY
  4315. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delphi Code Generation</CELLBODY
  4316. ></ENTRY
  4317. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4318. ><CX5FX5FTITLE></CX5FX5FTITLE
  4319. > <CX5FX5FTITLE>for Delphi</CX5FX5FTITLE
  4320. ></CELLBODY
  4321. ></ENTRY
  4322. ></RBW-ROW
  4323. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4324. ></ENTRY
  4325. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Forte Code Generation</CELLBODY
  4326. ></ENTRY
  4327. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4328. ><CX5FX5FTITLE></CX5FX5FTITLE
  4329. > <CX5FX5FTITLE>for Forté</CX5FX5FTITLE
  4330. ></CELLBODY
  4331. ></ENTRY
  4332. ></RBW-ROW
  4333. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4334. ></ENTRY
  4335. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Java Code Generation</CELLBODY
  4336. ></ENTRY
  4337. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4338. ><CX5FX5FTITLE></CX5FX5FTITLE
  4339. > <CX5FX5FTITLE>for Java</CX5FX5FTITLE
  4340. ></CELLBODY
  4341. ></ENTRY
  4342. ></RBW-ROW
  4343. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4344. ></ENTRY
  4345. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NewEra Code Generation</CELLBODY
  4346. ></ENTRY
  4347. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4348. ><CX5FX5FTITLE></CX5FX5FTITLE
  4349. > <CX5FX5FTITLE>for Informix NewEra</CX5FX5FTITLE
  4350. ></CELLBODY
  4351. ></ENTRY
  4352. ></RBW-ROW
  4353. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4354. ></ENTRY
  4355. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent C++ Generation</CELLBODY
  4356. ></ENTRY
  4357. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4358. ><CX5FX5FTITLE></CX5FX5FTITLE
  4359. > <CX5FX5FTERM>for</CX5FX5FTERM
  4360. > <CX5FX5FTERM>C++</CX5FX5FTERM
  4361. ></CELLBODY
  4362. ></ENTRY
  4363. ></RBW-ROW
  4364. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4365. ></ENTRY
  4366. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PowerBuilder Code Generation</CELLBODY
  4367. ></ENTRY
  4368. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4369. ><CX5FX5FTITLE></CX5FX5FTITLE
  4370. > <CX5FX5FTITLE>for PowerBuilder</CX5FX5FTITLE
  4371. ></CELLBODY
  4372. ></ENTRY
  4373. ></RBW-ROW
  4374. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4375. ></ENTRY
  4376. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Smalltalk Code Generation</CELLBODY
  4377. ></ENTRY
  4378. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4379. ><CX5FX5FTITLE></CX5FX5FTITLE
  4380. > <CX5FX5FTITLE>for Smalltalk</CX5FX5FTITLE
  4381. ></CELLBODY
  4382. ></ENTRY
  4383. ></RBW-ROW
  4384. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4385. ></ENTRY
  4386. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Visual Basic Code generation</CELLBODY
  4387. ></ENTRY
  4388. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4389. ><CX5FX5FTITLE></CX5FX5FTITLE
  4390. > <CX5FX5FTITLE>for Visual Basic</CX5FX5FTITLE
  4391. ></CELLBODY
  4392. ></ENTRY
  4393. ></RBW-ROW
  4394. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version Control</CELLBODY
  4395. ><CELLBODY>integration</CELLBODY
  4396. ></ENTRY
  4397. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ClearCase Integration</CELLBODY
  4398. ></ENTRY
  4399. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam ClearCase Integration Guide</CX5FX5FTITLE
  4400. ><CX5FX5FTITLE></CX5FX5FTITLE
  4401. ></CELLBODY
  4402. ></ENTRY
  4403. ></RBW-ROW
  4404. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4405. ></ENTRY
  4406. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Continuus Integration</CELLBODY
  4407. ></ENTRY
  4408. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Continuus Integration Guide</CX5FX5FTITLE
  4409. ><CX5FX5FTITLE></CX5FX5FTITLE
  4410. ></CELLBODY
  4411. ></ENTRY
  4412. ></RBW-ROW
  4413. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4414. ></ENTRY
  4415. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Razor Integration</CELLBODY
  4416. ></ENTRY
  4417. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Razor Integration Guide</CX5FX5FTITLE
  4418. ><CX5FX5FTITLE></CX5FX5FTITLE
  4419. ></CELLBODY
  4420. ></ENTRY
  4421. ></RBW-ROW
  4422. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Requirement </CELLBODY
  4423. ><CELLBODY>engineering integration</CELLBODY
  4424. ></ENTRY
  4425. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>DOORS Integration</CELLBODY
  4426. ></ENTRY
  4427. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam DOORS Integration Guide</CX5FX5FTITLE
  4428. ><CX5FX5FTITLE></CX5FX5FTITLE
  4429. ></CELLBODY
  4430. ></ENTRY
  4431. ></RBW-ROW
  4432. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4433. ></ENTRY
  4434. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>RTM Integration</CELLBODY
  4435. ></ENTRY
  4436. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam RTM Integration Guide</CX5FX5FTITLE
  4437. ><CX5FX5FTITLE></CX5FX5FTITLE
  4438. ></CELLBODY
  4439. ></ENTRY
  4440. ></RBW-ROW
  4441. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Document Generation</CELLBODY
  4442. ></ENTRY
  4443. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>FrameMaker 5.0</CELLBODY
  4444. ></ENTRY
  4445. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  4446. ><CX5FX5FTITLE></CX5FX5FTITLE
  4447. ></CELLBODY
  4448. ></ENTRY
  4449. ></RBW-ROW
  4450. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4451. ></ENTRY
  4452. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interleaf</CELLBODY
  4453. ></ENTRY
  4454. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  4455. ><CX5FX5FTITLE></CX5FX5FTITLE
  4456. ></CELLBODY
  4457. ></ENTRY
  4458. ></RBW-ROW
  4459. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4460. ></ENTRY
  4461. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT FrameMaker 5.0</CELLBODY
  4462. ></ENTRY
  4463. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  4464. ><CX5FX5FTITLE></CX5FX5FTITLE
  4465. ></CELLBODY
  4466. ></ENTRY
  4467. ></RBW-ROW
  4468. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4469. ></ENTRY
  4470. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT Word</CELLBODY
  4471. ></ENTRY
  4472. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  4473. ><CX5FX5FTITLE></CX5FX5FTITLE
  4474. ></CELLBODY
  4475. ></ENTRY
  4476. ></RBW-ROW
  4477. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4478. ></ENTRY
  4479. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT Word 97</CELLBODY
  4480. ></ENTRY
  4481. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  4482. ><CX5FX5FTITLE></CX5FX5FTITLE
  4483. ></CELLBODY
  4484. ></ENTRY
  4485. ></RBW-ROW
  4486. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4487. ></ENTRY
  4488. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Word</CELLBODY
  4489. ></ENTRY
  4490. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  4491. ><CX5FX5FTITLE></CX5FX5FTITLE
  4492. ></CELLBODY
  4493. ></ENTRY
  4494. ></RBW-ROW
  4495. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4496. ></ENTRY
  4497. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Word 97</CELLBODY
  4498. ></ENTRY
  4499. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  4500. ><CX5FX5FTITLE></CX5FX5FTITLE
  4501. ></CELLBODY
  4502. ></ENTRY
  4503. ></RBW-ROW
  4504. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Miscellaneous</CELLBODY
  4505. ></ENTRY
  4506. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate modeling</CELLBODY
  4507. ></ENTRY
  4508. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  4509. ><CX5FX5FTITLE></CX5FX5FTITLE
  4510. ></CELLBODY
  4511. ></ENTRY
  4512. ></RBW-ROW
  4513. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4514. ></ENTRY
  4515. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Groundworks (VAR) interface</CELLBODY
  4516. ></ENTRY
  4517. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  4518. ><CX5FX5FTITLE></CX5FX5FTITLE
  4519. ></CELLBODY
  4520. ></ENTRY
  4521. ></RBW-ROW
  4522. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4523. ></ENTRY
  4524. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT</CELLBODY
  4525. ></ENTRY
  4526. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  4527. ><CX5FX5FTITLE></CX5FX5FTITLE
  4528. ></CELLBODY
  4529. ></ENTRY
  4530. ></RBW-ROW
  4531. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4532. ></ENTRY
  4533. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Microsoft Repository Interface</CELLBODY
  4534. ></ENTRY
  4535. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  4536. ><CX5FX5FTITLE></CX5FX5FTITLE
  4537. ></CELLBODY
  4538. ></ENTRY
  4539. ></RBW-ROW
  4540. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4541. ></ENTRY
  4542. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Security</CELLBODY
  4543. ></ENTRY
  4544. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  4545. ><CX5FX5FTITLE></CX5FX5FTITLE
  4546. ></CELLBODY
  4547. ></ENTRY
  4548. ></RBW-ROW
  4549. ></TBODY
  4550. ></TGROUP
  4551. ><RBW-ICONIZE></RBW-TABLE
  4552. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  4553. ></RBW-AUTOGEN
  4554. >Not all modules are available on all platforms. </N.NOTE
  4555. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4556. >Code Generation</SL.SUBLABEL
  4557. ><B.BODY>In previous releases of ObjectTeam, target language for code generation was set using the variables M4_package and M4_target_lang. This mechanism has been replaced by modules. These variables are no longer used. </B.BODY
  4558. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  4559. ></RBW-AUTOGEN
  4560. >The C++ code generation implemented in the <CX5FX5FFILE.NAME>C++ Code Generation</CX5FX5FFILE.NAME
  4561. > module is different from previous versions of ObjectTeam. The previous implementation of C++ code generation is available in the compatibility module <CX5FX5FFILE.NAME>Persistent C++ Generation</CX5FX5FFILE.NAME
  4562. >. For more details, see chapter on compatibility in the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  4563. ><CX5FX5FTITLE></CX5FX5FTITLE
  4564. > for C++.</N.NOTE
  4565. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4566. >User&truehy;defined modules</SL.SUBLABEL
  4567. ><B.BODY>You can create your own ObjectTeam modules. For details, see <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  4568. ><CX5FX5FTITLE></CX5FX5FTITLE
  4569. >.</B.BODY
  4570. ></LABEL
  4571. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4572. ><RBW-ANCHOR ID="13855"></RBW-ANCHOR
  4573. >How to Activate a Module on Corporate level</L.LABEL
  4574. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  4575. ></RBW-AUTOGEN
  4576. ></RBW-MARKER
  4577. ><RBW-PARABODY>To activate a module:</RBW-PARABODY
  4578. ></P.PROCEDURE
  4579. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  4580. ></RBW-AUTOGEN
  4581. ></RBW-MARKER
  4582. ><RBW-PARABODY>In the Browser, open the <customization files> pseudo&truehy;object on Corporate level.</RBW-PARABODY
  4583. ></LN.LIST.NUM
  4584. ><LR.LIST.RESULT>The objects etc and tcl appear.</LR.LIST.RESULT
  4585. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  4586. ></RBW-AUTOGEN
  4587. ></RBW-MARKER
  4588. ><RBW-PARABODY>Open the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  4589. > object.</RBW-PARABODY
  4590. ></LN.LIST.NUM
  4591. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  4592. ></RBW-AUTOGEN
  4593. ></RBW-MARKER
  4594. ><RBW-PARABODY>A list of all customization files on Corporate level appear. </RBW-PARABODY
  4595. ></LN.LIST.NUM
  4596. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  4597. ></RBW-AUTOGEN
  4598. ></RBW-MARKER
  4599. ><RBW-PARABODY>Double&truehy;click on the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4600. > object. </RBW-PARABODY
  4601. ></LN.LIST.NUM
  4602. ><LR.LIST.RESULT>The Modules Availability Editor starts up.</LR.LIST.RESULT
  4603. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00007.unk" origfile="../shared_files/pics/modedit.gif" origtype="X" origdoc="../../sources/igun/igunmods.fm5.mif"></RBW-GRAPHIC
  4604. ></FAR.FIGURE.ANCHOR.RIGHT
  4605. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  4606. ></RBW-AUTOGEN
  4607. ></RBW-MARKER
  4608. ><RBW-PARABODY>Select Edit | New. </RBW-PARABODY
  4609. ></LN.LIST.NUM
  4610. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  4611. ></RBW-AUTOGEN
  4612. ></RBW-MARKER
  4613. ><RBW-PARABODY>The Select Module dialog appears, displaying a list of all available modules.</RBW-PARABODY
  4614. ></LN.LIST.NUM
  4615. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  4616. ></RBW-AUTOGEN
  4617. >If your modules directory is not the modules directory of your <CX5FX5FTERM>M4_home </CX5FX5FTERM
  4618. >directory, click the Browse button to locate the module directory in the file system. </N2.NOTE.2
  4619. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  4620. ></RBW-AUTOGEN
  4621. ></RBW-MARKER
  4622. ><RBW-PARABODY>Select the name of the module you wish to activate and click OK.</RBW-PARABODY
  4623. ></LN.LIST.NUM
  4624. ><LR.LIST.RESULT>The new module has been added to the list of active modules</LR.LIST.RESULT
  4625. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  4626. ></RBW-AUTOGEN
  4627. ></RBW-MARKER
  4628. ><RBW-PARABODY>Save the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4629. > file and exit the Module Availability Editor.</RBW-PARABODY
  4630. ></LN.LIST.NUM
  4631. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  4632. ></RBW-AUTOGEN
  4633. >If an error message on conflicting modules appears, refer to Resolving Conflicting Modules on page –1 for details.</N2.NOTE.2
  4634. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  4635. ></RBW-AUTOGEN
  4636. ></RBW-MARKER
  4637. ><RBW-PARABODY>Select Utilities | Clone</RBW-PARABODY
  4638. ></LN.LIST.NUM
  4639. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  4640. ></RBW-AUTOGEN
  4641. >Because of the way customization files are read by ObjectTeam, you have to clone (or restart) the Browser if you want the changes made to <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4642. > files on Corporate level and User Customization level to take effect.</N2.NOTE.2
  4643. ><B.BODY>Customization files on these levels are only read at start&truehy;up.</B.BODY
  4644. ></LABEL
  4645. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4646. ><RBW-ANCHOR ID="10485"></RBW-ANCHOR
  4647. >Checking if a module is active</L.LABEL
  4648. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  4649. ></RBW-AUTOGEN
  4650. ></RBW-MARKER
  4651. ><RBW-PARABODY>To check which modules are active on a particular Browser level:</RBW-PARABODY
  4652. ></P.PROCEDURE
  4653. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  4654. ></RBW-AUTOGEN
  4655. ></RBW-MARKER
  4656. ><RBW-PARABODY>Move to the Browser level of your choice</RBW-PARABODY
  4657. ></LN.LIST.NUM
  4658. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  4659. ></RBW-AUTOGEN
  4660. ></RBW-MARKER
  4661. ><RBW-PARABODY>Select Utilities | Show Active Modules</RBW-PARABODY
  4662. ></LN.LIST.NUM
  4663. ><LR.LIST.RESULT>The Active Modules dialog box appears, listing all the modules that are active on the current Browser level.</LR.LIST.RESULT
  4664. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00008.unk" origfile="../shared_files/pics/actmod.gif" origtype="X" origdoc="../../sources/igun/igunmods.fm5.mif"></RBW-GRAPHIC
  4665. ></FA2.FIGURE.ANCHOR.2
  4666. ></LABEL
  4667. ><SUBSECTION><SS.SUBSEC.HEAD>ObjectTeam Module Specifications</SS.SUBSEC.HEAD
  4668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4669. >Introduction</L.LABEL
  4670. ><B.BODY>A <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4671. > customization file contains one or more module specifications. Each module specification activates or deactivates a module. A <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4672. > customization file can exist at any Browser level, from corporate level through user level</B.BODY
  4673. ></LABEL
  4674. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4675. >How module specifications are read</L.LABEL
  4676. ><B.BODY>The module specifications in<CX5FX5FFILE.NAME> modules.modules</CX5FX5FFILE.NAME
  4677. > files are incrementally read by ObjectTeam. The specifications in a <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4678. > file on Corporate level, for example, are read when a user starts ObjectTeam, whereas those in a <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4679. > file on Project level are read when a user opens the Project in the ObjectTeam Browser.</B.BODY
  4680. ><B.BODY>The set of module specifications on a certain Browser level is the result of ObjectTeam’s adding module specifications from all the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4681. > files on higher levels.</B.BODY
  4682. ><B.BODY>This implies that if you want the changes made in a certain <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4683. > file to take effect, you first have to make ObjectTeam read the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4684. > file. </B.BODY
  4685. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  4686. ></RBW-AUTOGEN
  4687. >If you made changes to a <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4688. > file on Corporate level or User Customization level, you cannot move up one level anymore; the changes only take effect if you either clone or restart the Browser.</N.NOTE
  4689. ></LABEL
  4690. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4691. >Example</L.LABEL
  4692. ><B.BODY>If the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4693. > file was changed on Project level, in a project called ProjectX, for example, you should first move up (by selecting the Corporate object in the Navigation Area, for example). If you then open ProjectX again, ObjectTeam adds the module specifications in this file to the current set of module specifications.</B.BODY
  4694. ></LABEL
  4695. ></SUBSECTION
  4696. ></SECTION
  4697. ><SECTION><S.SECTION.HEAD>The Module Availability Editor</S.SECTION.HEAD
  4698. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4699. >Introduction</L.LABEL
  4700. ><B.BODY>The Module Availability Editor is the tool with which you create, activate, delete and manipulate ObjectTeam module specifications. It starts up if you edit the customization file <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4701. >.</B.BODY
  4702. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00009.unk" origfile="../shared_files/pics/modedtr.gif" origtype="X" origdoc="../../sources/igun/igunmods.fm5.mif"></RBW-GRAPHIC
  4703. ></FAR.FIGURE.ANCHOR.RIGHT
  4704. ></LABEL
  4705. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4706. >Menus</L.LABEL
  4707. ><B.BODY>The following menus and menu entries are available in the Module Availability Editor:</B.BODY
  4708. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="57p"><COLSPEC COLNAME="2" COLWIDTH="150p"><COLSPEC COLNAME="3" COLWIDTH="240p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Menu</CELLHEADING
  4709. ></ENTRY
  4710. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Menu Entry</CELLHEADING
  4711. ></ENTRY
  4712. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  4713. ></ENTRY
  4714. ></RBW-ROW
  4715. ></THEAD
  4716. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File</CELLBODY
  4717. ></ENTRY
  4718. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reload</CELLBODY
  4719. ></ENTRY
  4720. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Rereads the module specifications</CELLBODY
  4721. ></ENTRY
  4722. ></RBW-ROW
  4723. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4724. ></ENTRY
  4725. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Save</CELLBODY
  4726. ></ENTRY
  4727. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Saves the changes made in the Module Availability Editor</CELLBODY
  4728. ></ENTRY
  4729. ></RBW-ROW
  4730. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4731. ></ENTRY
  4732. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Exit</CELLBODY
  4733. ></ENTRY
  4734. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Quits the Module Availability Editor</CELLBODY
  4735. ></ENTRY
  4736. ></RBW-ROW
  4737. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit</CELLBODY
  4738. ></ENTRY
  4739. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>New</CELLBODY
  4740. ></ENTRY
  4741. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Adds a new module specification</CELLBODY
  4742. ><CELLBODY>See How to Activate a Module on Corporate level on page –7</CELLBODY
  4743. ></ENTRY
  4744. ></RBW-ROW
  4745. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4746. ></ENTRY
  4747. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Add Required Modules</CELLBODY
  4748. ></ENTRY
  4749. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Adds to the selected module the modules that are specified as requiredModules </CELLBODY
  4750. ><CELLBODY>See Required Modules on page –13</CELLBODY
  4751. ></ENTRY
  4752. ></RBW-ROW
  4753. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4754. ></ENTRY
  4755. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Change | Select State</CELLBODY
  4756. ></ENTRY
  4757. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Activates the selected module: it changes its state from <CX5FX5FEMPHASIS>off</CX5FX5FEMPHASIS
  4758. > to <CX5FX5FEMPHASIS>on</CX5FX5FEMPHASIS
  4759. > or vice versa</CELLBODY
  4760. ></ENTRY
  4761. ></RBW-ROW
  4762. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4763. ></ENTRY
  4764. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Change | Location</CELLBODY
  4765. ></ENTRY
  4766. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use this option if the location of a module has changed</CELLBODY
  4767. ></ENTRY
  4768. ></RBW-ROW
  4769. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4770. ></ENTRY
  4771. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Info</CELLBODY
  4772. ></ENTRY
  4773. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Brings up an information dialog box listing details, such as module type, module directory location and required modules</CELLBODY
  4774. ></ENTRY
  4775. ></RBW-ROW
  4776. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4777. ></ENTRY
  4778. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delete</CELLBODY
  4779. ></ENTRY
  4780. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deletes the selected module specification(s) </CELLBODY
  4781. ></ENTRY
  4782. ></RBW-ROW
  4783. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>View</CELLBODY
  4784. ></ENTRY
  4785. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ToolBar</CELLBODY
  4786. ></ENTRY
  4787. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Turns the Tool Bar on or off</CELLBODY
  4788. ></ENTRY
  4789. ></RBW-ROW
  4790. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4791. ></ENTRY
  4792. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Context Area</CELLBODY
  4793. ></ENTRY
  4794. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Turns the Context Area on or off</CELLBODY
  4795. ></ENTRY
  4796. ></RBW-ROW
  4797. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4798. ></ENTRY
  4799. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Message Area</CELLBODY
  4800. ></ENTRY
  4801. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Turns the Message Area on or off</CELLBODY
  4802. ></ENTRY
  4803. ></RBW-ROW
  4804. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Options</CELLBODY
  4805. ></ENTRY
  4806. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Font</CELLBODY
  4807. ></ENTRY
  4808. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use this option to change the font or font size used in the Display Area</CELLBODY
  4809. ></ENTRY
  4810. ></RBW-ROW
  4811. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check</CELLBODY
  4812. ></ENTRY
  4813. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Requirements</CELLBODY
  4814. ></ENTRY
  4815. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checks if all the modules required by the modules in the Display Area have been added</CELLBODY
  4816. ><CELLBODY>See Required Modules on page –13</CELLBODY
  4817. ></ENTRY
  4818. ></RBW-ROW
  4819. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4820. ></ENTRY
  4821. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Conflicts</CELLBODY
  4822. ></ENTRY
  4823. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checks if there are any modules that conflict with other modules</CELLBODY
  4824. ><CELLBODY>See Conflicting Modules on page –15</CELLBODY
  4825. ></ENTRY
  4826. ></RBW-ROW
  4827. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4828. ></ENTRY
  4829. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Existence</CELLBODY
  4830. ></ENTRY
  4831. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checks if all the module directories exist</CELLBODY
  4832. ></ENTRY
  4833. ></RBW-ROW
  4834. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  4835. ></ENTRY
  4836. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>All</CELLBODY
  4837. ></ENTRY
  4838. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checks on requirements, conflicts and existence</CELLBODY
  4839. ></ENTRY
  4840. ></RBW-ROW
  4841. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Filter</CELLBODY
  4842. ></ENTRY
  4843. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Filter on Current </CELLBODY
  4844. ><CELLBODY>File Entries</CELLBODY
  4845. ></ENTRY
  4846. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use this option if you only want to see those module specifications in the Display Area that can be edited on the current level.</CELLBODY
  4847. ></ENTRY
  4848. ></RBW-ROW
  4849. ></TBODY
  4850. ></TGROUP
  4851. ></RBW-TABLE
  4852. ><B.BODY></B.BODY
  4853. ></LABEL
  4854. ></SECTION
  4855. ><SECTION><S.SECTION.HEAD>How ObjectTeam Modules Interrelate</S.SECTION.HEAD
  4856. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4857. >Introduction</L.LABEL
  4858. ><B.BODY>Certain ObjectTeam modules require other modules to work properly, others are only supporting other modules, and some modules exclude each other. </B.BODY
  4859. ><B.BODY>Every module directory contains a file called <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  4860. >. This file contains certain fields through which dependencies between modules and module types are specified. These fields are discussed in this section.</B.BODY
  4861. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4862. >For more information</SL.SUBLABEL
  4863. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  4864. ><CX5FX5FTITLE></CX5FX5FTITLE
  4865. > for details on the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  4866. > file.</B.BODY
  4867. ></LABEL
  4868. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4869. >In this section</L.LABEL
  4870. ><B.BODY>This section contains the following subsections:</B.BODY
  4871. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  4872. ></ENTRY
  4873. ></RBW-ROW
  4874. ></THEAD
  4875. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32587" TYPE="XREF-TEXTCOPY">Required Modules&rbwtab;4–10</RBW-XREF
  4876. ></SB.SECTION.BLOCK.TABLE
  4877. ></ENTRY
  4878. ></RBW-ROW
  4879. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28274" TYPE="XREF-TEXTCOPY">Conflicting Modules&rbwtab;4–12</RBW-XREF
  4880. ></SB.SECTION.BLOCK.TABLE
  4881. ></ENTRY
  4882. ></RBW-ROW
  4883. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14623" TYPE="XREF-TEXTCOPY">Resolving Conflicting Modules&rbwtab;4–14</RBW-XREF
  4884. ></SB.SECTION.BLOCK.TABLE
  4885. ></ENTRY
  4886. ></RBW-ROW
  4887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22656" TYPE="XREF-TEXTCOPY">Supporting Modules&rbwtab;4–15</RBW-XREF
  4888. ></SB.SECTION.BLOCK.TABLE
  4889. ></ENTRY
  4890. ></RBW-ROW
  4891. ></TBODY
  4892. ></TGROUP
  4893. ></RBW-TABLE
  4894. ><B.BODY></B.BODY
  4895. ></LABEL
  4896. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32587"></RBW-ANCHOR
  4897. >Required Modules</SS.SUBSEC.HEAD
  4898. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4899. >Introduction</L.LABEL
  4900. ><B.BODY>If a particular module require other modules in order to operate properly, the following fields can be used in the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  4901. > file to specify required modules:</B.BODY
  4902. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  4903. ></RBW-AUTOGEN
  4904. ></RBW-MARKER
  4905. ><RBW-PARABODY>requiredModules</RBW-PARABODY
  4906. ></LB.LIST.BULLET
  4907. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  4908. ></RBW-AUTOGEN
  4909. ></RBW-MARKER
  4910. ><RBW-PARABODY>requiredModuleTypes</RBW-PARABODY
  4911. ></LB.LIST.BULLET
  4912. ></LABEL
  4913. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4914. >Viewing required module (types)</L.LABEL
  4915. ><B.BODY>Users of the Module Availability Editor can see which modules and module types are required by a module by selecting Edit | Info. for that module. The Information Box that appears lists, among other things, the required modules and module types, if applicable.</B.BODY
  4916. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00010.unk" origfile="../shared_files/pics/info.gif" origtype="X" origdoc="../../sources/igun/igunmods.fm5.mif"></RBW-GRAPHIC
  4917. ></FA.FIGURE.ANCHOR
  4918. ></LABEL
  4919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4920. >requiredModules</L.LABEL
  4921. ><B.BODY>In this field, a list of required modules, separated by spaces, can be specified. If a module that requires other modules is selected in the Module Editor, the required module(s) will be automatically added to the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4922. > file too.</B.BODY
  4923. ></LABEL
  4924. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4925. >requiredModuleTypes</L.LABEL
  4926. ><B.BODY>If a module requires another module, but there is more than one module of that type available, a list of required module <CX5FX5FEMPHASIS>types</CX5FX5FEMPHASIS
  4927. > is specified. If a module that requires other module types is selected in the Module Editor, a dialog box appears, listing all the available modules of that type. After a user of the Module Editor selects the module of his choice, this module is added to the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4928. > file.</B.BODY
  4929. ><B.BODY>In the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  4930. > file of the module C++ Code Generation, for example, the following module types are specified as requiredModuleTypes:</B.BODY
  4931. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  4932. ></RBW-AUTOGEN
  4933. ></RBW-MARKER
  4934. ><RBW-PARABODY>DevelEnv (C++ compilers)</RBW-PARABODY
  4935. ></LB.LIST.BULLET
  4936. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  4937. ></RBW-AUTOGEN
  4938. ></RBW-MARKER
  4939. ><RBW-PARABODY>CppClassLib (Class Libraries)</RBW-PARABODY
  4940. ></LB.LIST.BULLET
  4941. ></LABEL
  4942. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4943. >Checking for requirements</L.LABEL
  4944. ><B.BODY>You can check if all the requirements have been met for all the modules by selecting Check | Requirements in the Module Availability Editor. If there are any requirements missing, an Information dialog box will list them.</B.BODY
  4945. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  4946. ></RBW-AUTOGEN
  4947. >Check | All runs a more extensive check: on required modules, conflicting modules, and the existence of module directories.</T.TIP
  4948. ></LABEL
  4949. ></SUBSECTION
  4950. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28274"></RBW-ANCHOR
  4951. >Conflicting Modules</SS.SUBSEC.HEAD
  4952. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4953. >Introduction</L.LABEL
  4954. ><B.BODY>Certain modules exclude each other: if the module C++ Code Generation is active for a particular system, for example, the module Java Code Generation cannot be active at the same time.</B.BODY
  4955. ><B.BODY>The following fields in the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  4956. > file can be used to specify conflicting modules:</B.BODY
  4957. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  4958. ></RBW-AUTOGEN
  4959. ></RBW-MARKER
  4960. ><RBW-PARABODY>conflictingModules</RBW-PARABODY
  4961. ></LB.LIST.BULLET
  4962. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  4963. ></RBW-AUTOGEN
  4964. ></RBW-MARKER
  4965. ><RBW-PARABODY>conflictingModuleTypes</RBW-PARABODY
  4966. ></LB.LIST.BULLET
  4967. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  4968. ></RBW-AUTOGEN
  4969. >A user of the Module Editor is still able to add a module that conflicts with another module, but will get an error message when he attempts to save the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4970. > file.</N.NOTE
  4971. ></LABEL
  4972. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4973. >Saving a conflicting modules.modules file</L.LABEL
  4974. ><B.BODY>When you try to save a <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4975. > file that contains conflicts, the following dialog box appears.</B.BODY
  4976. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00011.unk" origfile="../shared_files/pics/savemod.gif" origtype="X" origdoc="../../sources/igun/igunmods.fm5.mif"></RBW-GRAPHIC
  4977. ></FA.FIGURE.ANCHOR
  4978. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4979. >Yes</SL.SUBLABEL
  4980. ><B.BODY>The file is not saved. You should correct the conflict(s) by deactivating one of the conflicting modules (see Resolving Conflicting Modules on page –1 for details). </B.BODY
  4981. ><B.BODY>Use Check | Conflicts to find out which modules are conflicting.</B.BODY
  4982. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4983. >No</SL.SUBLABEL
  4984. ><B.BODY>All the modules in the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  4985. > file that cause a conflict are deactivated, after which the file is saved.</B.BODY
  4986. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4987. >Cancel</SL.SUBLABEL
  4988. ><B.BODY>Cancels the operation.</B.BODY
  4989. ></LABEL
  4990. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4991. >Viewing conflicting module (types)</L.LABEL
  4992. ><B.BODY>Users of the Module Availability Editor can see which modules or module types are defined as conflicting with the module by selecting Edit | Info for that module. The Information Box that appears lists, among other things, the conflicting modules and module types, if applicable.</B.BODY
  4993. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00012.unk" origfile="../shared_files/pics/info.gif" origtype="X" origdoc="../../sources/igun/igunmods.fm5.mif"></RBW-GRAPHIC
  4994. ></FA.FIGURE.ANCHOR
  4995. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4996. >conflictingModules</SL.SUBLABEL
  4997. ><B.BODY>In this field, a list of modules that are supposed to conflict with the current module can be specified. The list is separated by commas.</B.BODY
  4998. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  4999. >conflictingModuleTypes</SL.SUBLABEL
  5000. ><B.BODY>In this field, a list of module <CX5FX5FEMPHASIS>types</CX5FX5FEMPHASIS
  5001. > that are supposed to conflict with the current module are listed. The list is separated by commas.</B.BODY
  5002. ></LABEL
  5003. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5004. >Checking for conflicts</L.LABEL
  5005. ><B.BODY>You can check for conflicts in the Module Availability Editor by selecting Check | Conflicts. If there are any conflicts, an Information dialog box will list them.</B.BODY
  5006. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  5007. ></RBW-AUTOGEN
  5008. >Check | All runs a more extensive check: on required modules, conflicting modules, and the existence of module directories.</T.TIP
  5009. ></LABEL
  5010. ></SUBSECTION
  5011. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14623"></RBW-ANCHOR
  5012. >Resolving Conflicting Modules</SS.SUBSEC.HEAD
  5013. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5014. >Module specifications and browser levels</L.LABEL
  5015. ><B.BODY>The Module Availability Editor displays the current set of module specifications: the result of incrementally read <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  5016. > files (see Checking if a module is active on page –1). You can only edit or delete the modules that have been added on the current level</B.BODY
  5017. ></LABEL
  5018. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5019. >Example of a module conflict</L.LABEL
  5020. ><B.BODY>You could encounter a situation in which you would like to add and activate a module that conflicts with a module that has been added and activated on a higher level. For example, the C++ Code Generation module is activated on Corporate level, but for one particular Project you would like to generate Java code.</B.BODY
  5021. ></LABEL
  5022. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5023. >How to resolve a module conflict</L.LABEL
  5024. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5025. ></RBW-AUTOGEN
  5026. ></RBW-MARKER
  5027. ><RBW-PARABODY>To resolve a module conflict:</RBW-PARABODY
  5028. ></P.PROCEDURE
  5029. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5030. ></RBW-AUTOGEN
  5031. ></RBW-MARKER
  5032. ><RBW-PARABODY>Open the customization file <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  5033. > on the Browser level of your choice.</RBW-PARABODY
  5034. ></LN.LIST.NUM
  5035. ><LT.LIST.TEXT>The specifications you are going to add to this file will be valid on the current Browser level and below. (Project level and below, for example)</LT.LIST.TEXT
  5036. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5037. ></RBW-AUTOGEN
  5038. ></RBW-MARKER
  5039. ><RBW-PARABODY>In the Module Availability Editor, add the same module as the one on a higher level that is causing the conflict (C++ Code Generation, for example)</RBW-PARABODY
  5040. ></LN.LIST.NUM
  5041. ><LT.LIST.TEXT>Use Edit | New to bring up the Select Module dialog box. Select the module of your choice from this box.</LT.LIST.TEXT
  5042. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5043. ></RBW-AUTOGEN
  5044. ></RBW-MARKER
  5045. ><RBW-PARABODY>Deactivate the newly added module using Edit | Change | Select State </RBW-PARABODY
  5046. ></LN.LIST.NUM
  5047. ><LR.LIST.RESULT>The module’s state is now <CX5FX5FEMPHASIS>off</CX5FX5FEMPHASIS
  5048. >.</LR.LIST.RESULT
  5049. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  5050. ></RBW-AUTOGEN
  5051. ></RBW-MARKER
  5052. ><RBW-PARABODY>Add the module that would conflict if the conflicting module on a higher level were not deactivated (Java Code generation, for example).</RBW-PARABODY
  5053. ></LN.LIST.NUM
  5054. ><LT.LIST.TEXT>Make sure its state is <CX5FX5FEMPHASIS>on</CX5FX5FEMPHASIS
  5055. >.</LT.LIST.TEXT
  5056. ><B.BODY>The new module is now only active for the configuration, phase, project or system for which the customization file <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  5057. > was added.</B.BODY
  5058. ></LABEL
  5059. ></SUBSECTION
  5060. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22656"></RBW-ANCHOR
  5061. >Supporting Modules</SS.SUBSEC.HEAD
  5062. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5063. >Introduction</L.LABEL
  5064. ><B.BODY>Supporting modules are modules that are required by other modules, but are not useful independently. As users usually do not need to know about supporting modules, they are, by default, not listed in the Select Module dialog box. This box appears if a user of the Module Editor selects Edit | New.</B.BODY
  5065. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  5066. ></RBW-AUTOGEN
  5067. >With the check button Show Supporting Modules in the Select Module dialog box, supporting modules can be included in the list.</T.TIP
  5068. ></LABEL
  5069. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5070. >isSupportingModule</L.LABEL
  5071. ><B.BODY>The field isSupportingModule in the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  5072. > file is used to identify a module as supporting. The only possible values are <CX5FX5FEMPHASIS>yes </CX5FX5FEMPHASIS
  5073. >or<CX5FX5FEMPHASIS> no</CX5FX5FEMPHASIS
  5074. >. An empty value defaults to <CX5FX5FEMPHASIS>no</CX5FX5FEMPHASIS
  5075. >.</B.BODY
  5076. ><B.BODY></B.BODY
  5077. ></LABEL
  5078. ></SUBSECTION
  5079. ></SECTION
  5080. ><SECTION><S.SECTION.HEAD></S.SECTION.HEAD
  5081. ><!--
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087. CONVERTING SOURCE FILE ../../sources/igun/igunata.fm5.mif
  5088.  
  5089.  
  5090. --><B.BODY></B.BODY
  5091. ><B.BODY></B.BODY
  5092. ><B.BODY></B.BODY
  5093. ><B.BODY></B.BODY
  5094. ><B.BODY></B.BODY
  5095. ></SECTION
  5096. ></CHAPTER
  5097. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  5098. ></RBW-AUTOGEN
  5099. >Installing DocExpress<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  5100. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  5101. ></RBW-SYSOBJ
  5102. ></A.APPENDIX.HEAD
  5103. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5104. >Introduction</L.LABEL
  5105. ><B.BODY>This chapter describes how to install DocExpress for ObjectTeam.</B.BODY
  5106. ></LABEL
  5107. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5108. >In this chapter</L.LABEL
  5109. ><B.BODY>This chapter contains the following sections:</B.BODY
  5110. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  5111. ></ENTRY
  5112. ></RBW-ROW
  5113. ></THEAD
  5114. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41240" TYPE="XREF-TEXTCOPY">Installing DocExpress&rbwtab;A–2</RBW-XREF
  5115. ></SB.SECTION.BLOCK.TABLE
  5116. ></ENTRY
  5117. ></RBW-ROW
  5118. ></TBODY
  5119. ></TGROUP
  5120. ></RBW-TABLE
  5121. ></LABEL
  5122. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="41240"></RBW-ANCHOR
  5123. >Installing DocExpress</S.SECTION.HEAD
  5124. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5125. >Introduction</L.LABEL
  5126. ><B.BODY>This section describes how to install DocExpress under UNIX.</B.BODY
  5127. ><B.BODY>For a list of platforms and document publishing packages supported by DocExpress, open the file /cdrom/certify.htm in a web browser.</B.BODY
  5128. ></LABEL
  5129. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5130. >Requirements</L.LABEL
  5131. ><B.BODY>Before you install DocExpress, make sure:</B.BODY
  5132. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5133. ></RBW-AUTOGEN
  5134. ></RBW-MARKER
  5135. ><RBW-PARABODY>You have installed ObjectTeam.</RBW-PARABODY
  5136. ></LB.LIST.BULLET
  5137. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5138. ></RBW-AUTOGEN
  5139. ></RBW-MARKER
  5140. ><RBW-PARABODY>You have a DocExpress feature line in your ObjectTeam license file. DocExpress also uses the FLEXlm license management software. For more details on FLEXlm licensing, and how to add features to your license file, see <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  5141. >.</RBW-PARABODY
  5142. ></LB.LIST.BULLET
  5143. ></LABEL
  5144. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5145. >Reading the DocExpress online manuals</L.LABEL
  5146. ><B.BODY>The DocExpress documentation is part of the ObjectTeam product documentation and is installed with ObjectTeam. </B.BODY
  5147. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5148. ></RBW-AUTOGEN
  5149. ></RBW-MARKER
  5150. ><RBW-PARABODY>To access the online DocExpress documentation:</RBW-PARABODY
  5151. ></P.PROCEDURE
  5152. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5153. ></RBW-AUTOGEN
  5154. ></RBW-MARKER
  5155. ><RBW-PARABODY>Start DynaText as described in the CD insert.</RBW-PARABODY
  5156. ></LN.LIST.NUM
  5157. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5158. ></RBW-AUTOGEN
  5159. ></RBW-MARKER
  5160. ><RBW-PARABODY>In the DynaText Collection window, select the ObjectTeam collection and double&truehy;click on the DocExpress Set.</RBW-PARABODY
  5161. ></LN.LIST.NUM
  5162. ><LR.LIST.RESULT>The DocExpress books are opened in the reader window.</LR.LIST.RESULT
  5163. ></LABEL
  5164. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5165. >Installation workflow</L.LABEL
  5166. ><B.BODY>Installing DocExpress consists of the following tasks:</B.BODY
  5167. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="22p"><COLSPEC COLNAME="2" COLWIDTH="307p"><COLSPEC COLNAME="3" COLWIDTH="114p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  5168. ></ENTRY
  5169. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  5170. ></ENTRY
  5171. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  5172. ></ENTRY
  5173. ></RBW-ROW
  5174. ></THEAD
  5175. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  5176. ></ENTRY
  5177. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Uninstall any existing DocExpress installation.</CELLBODY
  5178. ></ENTRY
  5179. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  5180. ></ENTRY
  5181. ></RBW-ROW
  5182. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  5183. ></ENTRY
  5184. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make the installation directory.</CELLBODY
  5185. ></ENTRY
  5186. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  5187. ></ENTRY
  5188. ></RBW-ROW
  5189. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  5190. ></ENTRY
  5191. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set up the installation directory and extract the installation utilities.</CELLBODY
  5192. ></ENTRY
  5193. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  5194. ></ENTRY
  5195. ></RBW-ROW
  5196. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  5197. ></ENTRY
  5198. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Extract the DocExpress software.</CELLBODY
  5199. ></ENTRY
  5200. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  5201. ></ENTRY
  5202. ></RBW-ROW
  5203. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  5204. ></ENTRY
  5205. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Install the DocExpress templates.</CELLBODY
  5206. ></ENTRY
  5207. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  5208. ></ENTRY
  5209. ></RBW-ROW
  5210. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  5211. ></ENTRY
  5212. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>FrameMaker users:</CX5FX5FFILE.NAME
  5213. > Configure DocExpress for use with FrameMaker.</CELLBODY
  5214. ></ENTRY
  5215. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  5216. ></ENTRY
  5217. ></RBW-ROW
  5218. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  5219. ></ENTRY
  5220. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>International FrameMaker Users:</CX5FX5FFILE.NAME
  5221. > Configure DocExpress for use with International FrameMaker</CELLBODY
  5222. ></ENTRY
  5223. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  5224. ></ENTRY
  5225. ></RBW-ROW
  5226. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  5227. ></ENTRY
  5228. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set up the user environment.</CELLBODY
  5229. ></ENTRY
  5230. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  5231. ></ENTRY
  5232. ></RBW-ROW
  5233. ></TBODY
  5234. ></TGROUP
  5235. ></RBW-TABLE
  5236. ></LABEL
  5237. ><SUBSECTION><SS.SUBSEC.HEAD>How to Uninstall DocExpress</SS.SUBSEC.HEAD
  5238. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5239. >Introduction</L.LABEL
  5240. ><B.BODY>If you have an older version of DocExpress, the installation for Version 2.3.9 will automatically rename the current directory to doc_<CX5FX5FTERM>xxx</CX5FX5FTERM
  5241. >, where <CX5FX5FTERM>xxx</CX5FX5FTERM
  5242. > is a dynamic process number allocated by the operating system to the installation script at run time.</B.BODY
  5243. ><B.BODY>However, you can also choose to remove the current version of DocExpress instead.</B.BODY
  5244. ></LABEL
  5245. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5246. >How to uninstall DocExpress</L.LABEL
  5247. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5248. ></RBW-AUTOGEN
  5249. ></RBW-MARKER
  5250. ><RBW-PARABODY>To uninstall DocExpress:</RBW-PARABODY
  5251. ></P.PROCEDURE
  5252. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5253. ></RBW-AUTOGEN
  5254. ></RBW-MARKER
  5255. ><RBW-PARABODY>While still logged in as an authorized user, change to the /ata directory:</RBW-PARABODY
  5256. ></LN.LIST.NUM
  5257. ><EM.EXAMPLE.MONO>cd /ata</EM.EXAMPLE.MONO
  5258. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5259. ></RBW-AUTOGEN
  5260. ></RBW-MARKER
  5261. ><RBW-PARABODY>Delete the older installation of DocExpress:</RBW-PARABODY
  5262. ></LN.LIST.NUM
  5263. ><EM.EXAMPLE.MONO>rm &truehy;r doc</EM.EXAMPLE.MONO
  5264. ><EM.EXAMPLE.MONO>rm &truehy;r install</EM.EXAMPLE.MONO
  5265. ><B.BODY>You are now ready to install the new DocExpress version.</B.BODY
  5266. ></LABEL
  5267. ></SUBSECTION
  5268. ><SUBSECTION><SS.SUBSEC.HEAD>How to Make the Installation Directory</SS.SUBSEC.HEAD
  5269. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5270. >Introduction</L.LABEL
  5271. ><B.BODY>You must make an installation directory, if one doesn’t already exist. The recommended installation directory is /usr/ata, although you can install elsewhere. </B.BODY
  5272. ></LABEL
  5273. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5274. >How to make the installation directory</L.LABEL
  5275. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5276. ></RBW-AUTOGEN
  5277. ></RBW-MARKER
  5278. ><RBW-PARABODY>To make the installation directory:</RBW-PARABODY
  5279. ></P.PROCEDURE
  5280. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5281. ></RBW-AUTOGEN
  5282. ></RBW-MARKER
  5283. ><RBW-PARABODY>Log in as an authorized user.</RBW-PARABODY
  5284. ></LN.LIST.NUM
  5285. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  5286. ></RBW-AUTOGEN
  5287. >You must be running in a C&truehy;shell and have a .cshrc file in your $HOME directory.</N2.NOTE.2
  5288. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5289. ></RBW-AUTOGEN
  5290. ></RBW-MARKER
  5291. ><RBW-PARABODY>Make the installation directory, for example:</RBW-PARABODY
  5292. ></LN.LIST.NUM
  5293. ><EM.EXAMPLE.MONO>cd /usr</EM.EXAMPLE.MONO
  5294. ><EM.EXAMPLE.MONO>mkdir ata</EM.EXAMPLE.MONO
  5295. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5296. ></RBW-AUTOGEN
  5297. ></RBW-MARKER
  5298. ><RBW-PARABODY>Create a symbolic link /ata that points to the installation directory. For example, if your installation directory is /usr/ata, create the following link:</RBW-PARABODY
  5299. ></LN.LIST.NUM
  5300. ><EM.EXAMPLE.MONO>ln &truehy;s /usr/ata /ata</EM.EXAMPLE.MONO
  5301. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  5302. ></RBW-AUTOGEN
  5303. ></RBW-MARKER
  5304. ><RBW-PARABODY>Check the link is correct:</RBW-PARABODY
  5305. ></LN.LIST.NUM
  5306. ><EM.EXAMPLE.MONO>ls &truehy;l /ata</EM.EXAMPLE.MONO
  5307. ><EM.EXAMPLE.MONO># lrwxrwxrwx  1  root 22 May 8 17:05 /ata &truehy;> /usr/ata</EM.EXAMPLE.MONO
  5308. ></LABEL
  5309. ></SUBSECTION
  5310. ><SUBSECTION><SS.SUBSEC.HEAD>How to Set Up the Installation Directory</SS.SUBSEC.HEAD
  5311. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5312. >How to set up the installation directory</L.LABEL
  5313. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5314. ></RBW-AUTOGEN
  5315. ></RBW-MARKER
  5316. ><RBW-PARABODY>To set up the installation directory:</RBW-PARABODY
  5317. ></P.PROCEDURE
  5318. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5319. ></RBW-AUTOGEN
  5320. ></RBW-MARKER
  5321. ><RBW-PARABODY>While still logged in as an authorized user, change to the installation directory. </RBW-PARABODY
  5322. ></LN.LIST.NUM
  5323. ><EM.EXAMPLE.MONO>cd /ata</EM.EXAMPLE.MONO
  5324. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5325. ></RBW-AUTOGEN
  5326. ></RBW-MARKER
  5327. ><RBW-PARABODY>Mount the CD&truehy;ROM:</RBW-PARABODY
  5328. ></LN.LIST.NUM
  5329. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  5330. > </LT.LIST.TEXT
  5331. ><EM.EXAMPLE.MONO>mount &truehy;F hsfs &truehy;o ro /dev/sr0 /cdrom</EM.EXAMPLE.MONO
  5332. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  5333. > </LT.LIST.TEXT
  5334. ><EM.EXAMPLE.MONO>/etc/mount &truehy;F cdfs /dev/dsk/c1t2d0 /cdrom</EM.EXAMPLE.MONO
  5335. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5336. ></RBW-AUTOGEN
  5337. ></RBW-MARKER
  5338. ><RBW-PARABODY>Extract the installation scripts:</RBW-PARABODY
  5339. ></LN.LIST.NUM
  5340. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  5341. > </LT.LIST.TEXT
  5342. ><EM.EXAMPLE.MONO>tar xvf /cdrom/objecttm/sol/doc/install.tar</EM.EXAMPLE.MONO
  5343. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  5344. > </LT.LIST.TEXT
  5345. ><EM.EXAMPLE.MONO>tar xvf /cdrom/OBJECTTM/HPUX/DOC/”INSTALL.TAR;1”</EM.EXAMPLE.MONO
  5346. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  5347. ></RBW-AUTOGEN
  5348. ></RBW-MARKER
  5349. ><RBW-PARABODY>Run the install script:</RBW-PARABODY
  5350. ></LN.LIST.NUM
  5351. ><EM.EXAMPLE.MONO>cd $ATAHOME/install</EM.EXAMPLE.MONO
  5352. ><EM.EXAMPLE.MONO>./ata_install_cdrom</EM.EXAMPLE.MONO
  5353. ><LT.LIST.TEXT>Follow the instructions.</LT.LIST.TEXT
  5354. ></LABEL
  5355. ></SUBSECTION
  5356. ><SUBSECTION><SS.SUBSEC.HEAD>How to Install the DocExpress Templates</SS.SUBSEC.HEAD
  5357. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5358. >Introduction</L.LABEL
  5359. ><B.BODY>If you are using a temporary ObjectTeam license, the DocExpress installation will only install sample templates for FrameMaker and Interleaf. These templates include:</B.BODY
  5360. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5361. ></RBW-AUTOGEN
  5362. ></RBW-MARKER
  5363. ><RBW-PARABODY>DOD&truehy;STD&truehy;2167A SRS</RBW-PARABODY
  5364. ></LB.LIST.BULLET
  5365. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5366. ></RBW-AUTOGEN
  5367. ></RBW-MARKER
  5368. ><RBW-PARABODY>MIL&truehy;STD&truehy;498 SRS</RBW-PARABODY
  5369. ></LB.LIST.BULLET
  5370. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5371. ></RBW-AUTOGEN
  5372. ></RBW-MARKER
  5373. ><RBW-PARABODY>MIL&truehy;STD&truehy;498 SDD</RBW-PARABODY
  5374. ></LB.LIST.BULLET
  5375. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5376. ></RBW-AUTOGEN
  5377. ></RBW-MARKER
  5378. ><RBW-PARABODY>ANSI/IEEE SDD</RBW-PARABODY
  5379. ></LB.LIST.BULLET
  5380. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5381. ></RBW-AUTOGEN
  5382. ></RBW-MARKER
  5383. ><RBW-PARABODY>DOD&truehy;STD&truehy;2167A SDD</RBW-PARABODY
  5384. ></LB.LIST.BULLET
  5385. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5386. ></RBW-AUTOGEN
  5387. ></RBW-MARKER
  5388. ><RBW-PARABODY>ISO 9000/6592 PS</RBW-PARABODY
  5389. ></LB.LIST.BULLET
  5390. ><B.BODY>If you have a permanent ObjectTeam license including a feature license for DocExpress, you can install the full set of DocExpress templates.</B.BODY
  5391. ><B.BODY>For more details on temporary and permanent licenses, refer to <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  5392. >.</B.BODY
  5393. ></LABEL
  5394. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5395. >How to install the DocExpress templates:</L.LABEL
  5396. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5397. ></RBW-AUTOGEN
  5398. ></RBW-MARKER
  5399. ><RBW-PARABODY>To install the DocExpress templates:</RBW-PARABODY
  5400. ></P.PROCEDURE
  5401. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5402. ></RBW-AUTOGEN
  5403. ></RBW-MARKER
  5404. ><RBW-PARABODY>While still logged in as an authorized user, set the ATAHOME variable:</RBW-PARABODY
  5405. ></LN.LIST.NUM
  5406. ><EM.EXAMPLE.MONO>setenv ATAHOME /ata</EM.EXAMPLE.MONO
  5407. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5408. ></RBW-AUTOGEN
  5409. ></RBW-MARKER
  5410. ><RBW-PARABODY>Change to the $ATAHOME/doc/admin directory:</RBW-PARABODY
  5411. ></LN.LIST.NUM
  5412. ><EM.EXAMPLE.MONO>cd $ATAHOME/doc/admin</EM.EXAMPLE.MONO
  5413. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5414. ></RBW-AUTOGEN
  5415. ></RBW-MARKER
  5416. ><RBW-PARABODY>Run the templates_install utility:</RBW-PARABODY
  5417. ></LN.LIST.NUM
  5418. ><EM.EXAMPLE.MONO>./templates_install</EM.EXAMPLE.MONO
  5419. ><LR.LIST.RESULT>The DocExpress templates are installed and configured.</LR.LIST.RESULT
  5420. ></LABEL
  5421. ></SUBSECTION
  5422. ><SUBSECTION><SS.SUBSEC.HEAD>Configuring DocExpress for Use With FrameMaker</SS.SUBSEC.HEAD
  5423. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5424. >Introduction</L.LABEL
  5425. ><B.BODY>By default, DocExpress is set up at installation to work with FrameMaker 5.1. If you wish to use DocExpress with FrameMaker 4 or 5.0, you must configure it.</B.BODY
  5426. ></LABEL
  5427. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5428. >How to configure DocExpress for use with FrameMaker</L.LABEL
  5429. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5430. ></RBW-AUTOGEN
  5431. ></RBW-MARKER
  5432. ><RBW-PARABODY>To configure DocExpress for use with a version of FrameMaker other than 5.1:</RBW-PARABODY
  5433. ></P.PROCEDURE
  5434. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5435. ></RBW-AUTOGEN
  5436. ></RBW-MARKER
  5437. ><RBW-PARABODY>While still logged in as an authorized user, create a symbolic link to your FrameMaker installation. For example, if you want to work with FrameMaker 5.01, carry out the following steps:</RBW-PARABODY
  5438. ></LN.LIST.NUM
  5439. ><EM.EXAMPLE.MONO>cd $ATAHOME/doc/bin</EM.EXAMPLE.MONO
  5440. ><EM.EXAMPLE.MONO>mv frame_builder frame_builder51</EM.EXAMPLE.MONO
  5441. ><EM.EXAMPLE.MONO>ln &truehy;s frame_builder501 frame_builder</EM.EXAMPLE.MONO
  5442. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5443. ></RBW-AUTOGEN
  5444. ></RBW-MARKER
  5445. ><RBW-PARABODY>Verify the link:</RBW-PARABODY
  5446. ></LN.LIST.NUM
  5447. ><EM.EXAMPLE.MONO>ls &truehy;l frame_builder</EM.EXAMPLE.MONO
  5448. ><EM.EXAMPLE.MONO># lrwxrwxrwx root frame_builder &truehy;> frame_builder501</EM.EXAMPLE.MONO
  5449. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5450. ></RBW-AUTOGEN
  5451. ></RBW-MARKER
  5452. ><RBW-PARABODY>Log out as authorized user.</RBW-PARABODY
  5453. ></LN.LIST.NUM
  5454. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  5455. ></RBW-AUTOGEN
  5456. >If you are using International FrameMaker, you must also configure DocExpress, as described in Using DocExpress with International FrameMaker on page A–10 before you set up your user environment.</N.NOTE
  5457. ></LABEL
  5458. ></SUBSECTION
  5459. ><SUBSECTION><SS.SUBSEC.HEAD>Setting Up the User Environment </SS.SUBSEC.HEAD
  5460. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5461. >Introduction</L.LABEL
  5462. ><B.BODY>All users must set up their environment before using DocExpress.</B.BODY
  5463. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  5464. ></RBW-AUTOGEN
  5465. >It is recommended that users run DocExpress from a C&truehy;shell, so that the .cshrc file is read. You should also have a .Xdefaults file in their home directory. HP&truehy;UX users should also read the chapter on customization in the <CX5FX5FTERM>DocExpress User Guide </CX5FX5FTERM
  5466. >for additional information.</N.NOTE
  5467. ></LABEL
  5468. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5469. >How to Set Up the User Environment</L.LABEL
  5470. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5471. ></RBW-AUTOGEN
  5472. ></RBW-MARKER
  5473. ><RBW-PARABODY>To set up the user environment.</RBW-PARABODY
  5474. ></P.PROCEDURE
  5475. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5476. ></RBW-AUTOGEN
  5477. ></RBW-MARKER
  5478. ><RBW-PARABODY>Log in as a regular user.</RBW-PARABODY
  5479. ></LN.LIST.NUM
  5480. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5481. ></RBW-AUTOGEN
  5482. ></RBW-MARKER
  5483. ><RBW-PARABODY>Run the user_install utility:</RBW-PARABODY
  5484. ></LN.LIST.NUM
  5485. ><EM.EXAMPLE.MONO>cd $ATAHOME/install</EM.EXAMPLE.MONO
  5486. ><EM.EXAMPLE.MONO>./user_install</EM.EXAMPLE.MONO
  5487. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5488. ></RBW-AUTOGEN
  5489. ></RBW-MARKER
  5490. ><RBW-PARABODY>Log out and log back in again.</RBW-PARABODY
  5491. ></LN.LIST.NUM
  5492. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  5493. ></RBW-AUTOGEN
  5494. ></RBW-MARKER
  5495. ><RBW-PARABODY>Verify the environment setup:</RBW-PARABODY
  5496. ></LN.LIST.NUM
  5497. ><EM.EXAMPLE.MONO>$ATAHOME/doc/admin/verify</EM.EXAMPLE.MONO
  5498. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  5499. ></RBW-AUTOGEN
  5500. ></RBW-MARKER
  5501. ><RBW-PARABODY>If there are any warnings or errors, rerun the user setup.</RBW-PARABODY
  5502. ></LN.LIST.NUM
  5503. ></LABEL
  5504. ></SUBSECTION
  5505. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="30237"></RBW-ANCHOR
  5506. >Using DocExpress with International FrameMaker</SS.SUBSEC.HEAD
  5507. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5508. >Introduction</L.LABEL
  5509. ><B.BODY>If you intend using DocExpress with the International English version of FrameMaker, you must make some extra configurations to the DocExpress environment:</B.BODY
  5510. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5511. ></RBW-AUTOGEN
  5512. ></RBW-MARKER
  5513. ><RBW-PARABODY>Modify the DocExpress configuration file.</RBW-PARABODY
  5514. ></LN.LIST.NUM
  5515. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5516. ></RBW-AUTOGEN
  5517. ></RBW-MARKER
  5518. ><RBW-PARABODY>Establish links for templates</RBW-PARABODY
  5519. ></LN.LIST.NUM
  5520. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5521. ></RBW-AUTOGEN
  5522. ></RBW-MARKER
  5523. ><RBW-PARABODY>Establish links for DocExpress API Clients.</RBW-PARABODY
  5524. ></LN.LIST.NUM
  5525. ></LABEL
  5526. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5527. >How to modify the DocExpress configuration file</L.LABEL
  5528. ><B.BODY>Some aspects of DocExpress operations are controlled by settings in a DocExpress configuration file. When DocExpress initiates any of its operations (e.g., Load, Build, etc.) it examines this file. To run DocExpress with International FrameMaker, you must modify the configuration file. </B.BODY
  5529. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5530. ></RBW-AUTOGEN
  5531. ></RBW-MARKER
  5532. ><RBW-PARABODY>To modify the DocExpress configuration file</RBW-PARABODY
  5533. ></P.PROCEDURE
  5534. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5535. ></RBW-AUTOGEN
  5536. ></RBW-MARKER
  5537. ><RBW-PARABODY>While still logged in as an authorized user, open the file $ATAHOME/doc/ata_config in a text editor.</RBW-PARABODY
  5538. ></LN.LIST.NUM
  5539. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5540. ></RBW-AUTOGEN
  5541. ></RBW-MARKER
  5542. ><RBW-PARABODY>Change the value of the following variables:</RBW-PARABODY
  5543. ></LN.LIST.NUM
  5544. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="204p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  5545. ></ENTRY
  5546. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set to value</CELLHEADING
  5547. ></ENTRY
  5548. ></RBW-ROW
  5549. ></THEAD
  5550. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DEFAULT_DOCUMENT_SYSTEM</CELLBODY
  5551. ></ENTRY
  5552. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>imaker</CELLBODY
  5553. ></ENTRY
  5554. ></RBW-ROW
  5555. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>FRAME_PRODUCT</CELLBODY
  5556. ></ENTRY
  5557. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>imaker</CELLBODY
  5558. ></ENTRY
  5559. ></RBW-ROW
  5560. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>FRAME_BUILDER_FREE</CELLBODY
  5561. ></ENTRY
  5562. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>TRUE</CELLBODY
  5563. ></ENTRY
  5564. ></RBW-ROW
  5565. ></TBODY
  5566. ></TGROUP
  5567. ></RBW-TABLE
  5568. ></LABEL
  5569. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5570. >How to establish links for templates</L.LABEL
  5571. ><B.BODY>DocExpress supplies templates for FrameMaker and FrameBuilder. DocExpress needs to know where these templates for International FrameMaker are located. </B.BODY
  5572. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5573. ></RBW-AUTOGEN
  5574. ></RBW-MARKER
  5575. ><RBW-PARABODY>Change to the templates directory.</RBW-PARABODY
  5576. ></LN.LIST.NUM
  5577. ><EM.EXAMPLE.MONO>cd $ATAHOME/doc/templates</EM.EXAMPLE.MONO
  5578. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5579. ></RBW-AUTOGEN
  5580. ></RBW-MARKER
  5581. ><RBW-PARABODY>Establish a symbolic link for imaker:</RBW-PARABODY
  5582. ></LN.LIST.NUM
  5583. ><EM.EXAMPLE.MONO>ln &truehy;s frame imaker</EM.EXAMPLE.MONO
  5584. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5585. ></RBW-AUTOGEN
  5586. ></RBW-MARKER
  5587. ><RBW-PARABODY>Check the result using ls &truehy;la.</RBW-PARABODY
  5588. ></LN.LIST.NUM
  5589. ></LABEL
  5590. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5591. >How to establish links for DocExpress API Clients</L.LABEL
  5592. ><B.BODY>Doc Express operates as an API client to FrameMaker. </B.BODY
  5593. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5594. ></RBW-AUTOGEN
  5595. ></RBW-MARKER
  5596. ><RBW-PARABODY>Change to the fminit directory:</RBW-PARABODY
  5597. ></LN.LIST.NUM
  5598. ><EM.EXAMPLE.MONO>cd $HOME/.ata/fminit</EM.EXAMPLE.MONO
  5599. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5600. ></RBW-AUTOGEN
  5601. ></RBW-MARKER
  5602. ><RBW-PARABODY>Establish a symbolic link for ukenglish</RBW-PARABODY
  5603. ></LN.LIST.NUM
  5604. ><EM.EXAMPLE.MONO>ln &truehy;s usenglish ukenglish</EM.EXAMPLE.MONO
  5605. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5606. ></RBW-AUTOGEN
  5607. ></RBW-MARKER
  5608. ><RBW-PARABODY>Check the result with ls &truehy;la</RBW-PARABODY
  5609. ></LN.LIST.NUM
  5610. ><RBWAUTO-0002></RBWAUTO-0002
  5611. ><!--
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617. CONVERTING SOURCE FILE ../../sources/igun/igunflex.fm5.mif
  5618.  
  5619.  
  5620. --><B.BODY></B.BODY
  5621. ><B.BODY></B.BODY
  5622. ><B.BODY></B.BODY
  5623. ><B.BODY></B.BODY
  5624. ><B.BODY></B.BODY
  5625. ></LABEL
  5626. ></SUBSECTION
  5627. ></SECTION
  5628. ></APPENDIX
  5629. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix B&rbwtab;</CX5FX5FZCHAPTER.NUM
  5630. ></RBW-AUTOGEN
  5631. ><RBWAUTO-0003></RBWAUTO-0003
  5632. >Configuring a License <RBW-ANCHOR ID="19159"></RBW-ANCHOR
  5633. >Server<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  5634. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  5635. ></RBW-SYSOBJ
  5636. ></A.APPENDIX.HEAD
  5637. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5638. >Introduction</L.LABEL
  5639. ><B.BODY>ObjectTeam uses FLEXlm, a license management product from Globetrotter Software, Inc. to control licensing.</B.BODY
  5640. ><B.BODY>This chapter describes:</B.BODY
  5641. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5642. ></RBW-AUTOGEN
  5643. ></RBW-MARKER
  5644. ><RBW-PARABODY>How licensing works in ObjectTeam</RBW-PARABODY
  5645. ></LB.LIST.BULLET
  5646. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5647. ></RBW-AUTOGEN
  5648. ></RBW-MARKER
  5649. ><RBW-PARABODY>How to set up a license server under UNIX</RBW-PARABODY
  5650. ></LB.LIST.BULLET
  5651. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5652. ></RBW-AUTOGEN
  5653. ></RBW-MARKER
  5654. ><RBW-PARABODY>How to obtain a permanent license</RBW-PARABODY
  5655. ></LB.LIST.BULLET
  5656. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5657. >Master server</SL.SUBLABEL
  5658. ><B.BODY>You must follow the instructions in this chapter before you install or upgrade an ObjectTeam Master server. If you are installing a Slave server or Client, you must already have installed a Master server, so you can skip this chapter.</B.BODY
  5659. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5660. >Demo installation</SL.SUBLABEL
  5661. ><B.BODY>If you only want to install a demonstration copy of ObjectTeam for trial purposes, you can skip this chapter. A demo installation does not need a license server.</B.BODY
  5662. ></LABEL
  5663. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5664. >Related documentation</L.LABEL
  5665. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5666. >Required reading</SL.SUBLABEL
  5667. ><B.BODY>You should read the <CX5FX5FTITLE>FLEXlm End User Manual</CX5FX5FTITLE
  5668. > before installing the FLEXlm license software. The FLEXlm manual provides valuable information on network license management and site customization; for example, it provides details about the license file and various license administration tools. </B.BODY
  5669. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5670. >Recommended reading:</SL.SUBLABEL
  5671. ><B.BODY>For more information on network license management and UNIX system administration, read the <CX5FX5FTITLE>FLEXlm Programmer’s Guide</CX5FX5FTITLE
  5672. > (available from Globetrotter Software, Inc.) and <CX5FX5FTITLE>Essential System Administration</CX5FX5FTITLE
  5673. > by Aeleen Frisch (published by O’Reilly & Associates, ISBN 0&truehy;937175&truehy;80&truehy;3).</B.BODY
  5674. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5675. ><CX5FX5FBULLET.EMPHASIS>Online information</CX5FX5FBULLET.EMPHASIS
  5676. ></SL.SUBLABEL
  5677. ><B.BODY>To obtain the most current information about FLEXlm, you can access Globetrotter Software’s World Wide Web page:</B.BODY
  5678. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>http://www.globetrotter.com</CX5FX5FFILE.NAME
  5679. > </LT.LIST.TEXT
  5680. ><B.BODY>This home page provides access to</B.BODY
  5681. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5682. ></RBW-AUTOGEN
  5683. ></RBW-MARKER
  5684. ><RBW-PARABODY>An online version of the <CX5FX5FTITLE>FLEXlm End User Manual</CX5FX5FTITLE
  5685. ></RBW-PARABODY
  5686. ></LB.LIST.BULLET
  5687. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5688. ></RBW-AUTOGEN
  5689. ></RBW-MARKER
  5690. ><RBW-PARABODY>FLEXlm end&truehy;user technical support, and answers to frequently asked questions (FAQs)</RBW-PARABODY
  5691. ></LB.LIST.BULLET
  5692. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5693. ></RBW-AUTOGEN
  5694. ></RBW-MARKER
  5695. ><RBW-PARABODY>A question&truehy;and&truehy;answer server via the FLEXlm wizard</RBW-PARABODY
  5696. ></LB.LIST.BULLET
  5697. ></LABEL
  5698. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5699. >In this chapter</L.LABEL
  5700. ><B.BODY>This chapter contains the following sections:</B.BODY
  5701. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  5702. ></ENTRY
  5703. ></RBW-ROW
  5704. ></THEAD
  5705. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14820" TYPE="XREF-TEXTCOPY">Licensing in ObjectTeam&rbwtab;B–3</RBW-XREF
  5706. ></SB.SECTION.BLOCK.TABLE
  5707. ></ENTRY
  5708. ></RBW-ROW
  5709. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37096" TYPE="XREF-TEXTCOPY">Installing the License Server Software&rbwtab;B–7</RBW-XREF
  5710. ></SB.SECTION.BLOCK.TABLE
  5711. ></ENTRY
  5712. ></RBW-ROW
  5713. ></TBODY
  5714. ></TGROUP
  5715. ></RBW-TABLE
  5716. ></LABEL
  5717. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="14820"></RBW-ANCHOR
  5718. >Licensing in ObjectTeam</S.SECTION.HEAD
  5719. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5720. >Introduction</L.LABEL
  5721. ><B.BODY>This section explains the use of licensing in ObjectTeam, and the difference between temporary and permanent licenses. </B.BODY
  5722. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  5723. ></RBW-AUTOGEN
  5724. >If you are not interested in how licensing works and just want to get on with installation, skip to Installing the License Server Software on page B–7.</T.TIP
  5725. ></LABEL
  5726. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5727. >License components</L.LABEL
  5728. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5729. >License server</SL.SUBLABEL
  5730. ><B.BODY>In an ObjectTeam installation, a single machine in the network acts as <CX5FX5FTERM>license server</CX5FX5FTERM
  5731. >. By default, this is the same machine as the ObjectTeam Master server. The license server consists of the following components:</B.BODY
  5732. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5733. ></RBW-AUTOGEN
  5734. ></RBW-MARKER
  5735. ><RBW-PARABODY>A license manager daemon, <CX5FX5FTERM>lmgrd</CX5FX5FTERM
  5736. >, that is started automatically when the machine is booted. This daemon receives requests for features from other workstations on the network and assigns them to the Cayenne daemon.</RBW-PARABODY
  5737. ></LB.LIST.BULLET
  5738. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5739. ></RBW-AUTOGEN
  5740. ></RBW-MARKER
  5741. ><RBW-PARABODY>A Cayenne daemon, <CX5FX5FTERM>cayenne</CX5FX5FTERM
  5742. >, that controls the usage of ObjectTeam features according to the number of licenses available in the license file</RBW-PARABODY
  5743. ></LB.LIST.BULLET
  5744. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5745. ></RBW-AUTOGEN
  5746. ></RBW-MARKER
  5747. ><RBW-PARABODY>A license file, <CX5FX5FTERM>cayenne.dat</CX5FX5FTERM
  5748. > </RBW-PARABODY
  5749. ></LB.LIST.BULLET
  5750. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5751. ></RBW-AUTOGEN
  5752. ></RBW-MARKER
  5753. ><RBW-PARABODY>A license file variable, <CX5FX5FTERM>LM_LICENSE_FILE</CX5FX5FTERM
  5754. >, that points to the location of the license file. </RBW-PARABODY
  5755. ></LB.LIST.BULLET
  5756. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5757. >Other machines</SL.SUBLABEL
  5758. ><B.BODY>On machines running ObjectTeam software, the following component is necessary:</B.BODY
  5759. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5760. ></RBW-AUTOGEN
  5761. ></RBW-MARKER
  5762. ><RBW-PARABODY>A license file variable, <CX5FX5FTERM>LM_LICENSE_FILE</CX5FX5FTERM
  5763. >, that points to the address of the license server</RBW-PARABODY
  5764. ></LB.LIST.BULLET
  5765. ></LABEL
  5766. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5767. >Temporary licenses</L.LABEL
  5768. ><B.BODY>To use ObjectTeam, you must obtain a license from Cayenne. Licenses are keyed to the id of the machine on which you are running the license server. So before we can supply a license, you must inform us of this <CX5FX5FTERM>hostid</CX5FX5FTERM
  5769. > using the license request form.</B.BODY
  5770. ><B.BODY>Issuing the license can take a day or so, so to get you started in the meantime, Cayenne supplies a <CX5FX5FTERM>temporary license</CX5FX5FTERM
  5771. > that is not linked to a hostid. This temporary license is valid for a limited period and usually comes on a floppy in your ObjectTeam package, though you may also receive it via email or fax.</B.BODY
  5772. ><B.BODY>The temporary license file is made up of <CX5FX5FTERM>feature lines</CX5FX5FTERM
  5773. >, each controlling the use of a single ObjectTeam feature. This is an example of a feature line:</B.BODY
  5774. ><EWM.EXAMPLEW.MONO>FEATURE OT_BROWSER_UNIX cayenne 7.100 11&truehy;jan&truehy;98 0 2CF2F7D2EF08C75F701F ““ DEMO</EWM.EXAMPLEW.MONO
  5775. ><B.BODY>Until you receive the permanent license, you must install a copy of the temporary license on every workstation on which you install ObjectTeam software. The temporary license then controls access to all features on that machine itself; you cannot run a license server with a temporary license. </B.BODY
  5776. ><B.BODY>During installation of ObjectTeam, you are prompted to set the LM_LICENSE_FILE variable to point to the location of your local temporary license file.</B.BODY
  5777. ></LABEL
  5778. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5779. >Permanent licenses</L.LABEL
  5780. ><B.BODY>A permanent license is what Globetrotter refers to in the <CX5FX5FTERM>FLEXlm End User Manual</CX5FX5FTERM
  5781. > as a <CX5FX5FTERM>floating license</CX5FX5FTERM
  5782. >. This means it is installed on a particular machine in the network that acts as a license server. The license server controls the usage of ObjectTeam features by any workstation connected to the license server.</B.BODY
  5783. ></LABEL
  5784. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5785. >Contents of a permanent license file</L.LABEL
  5786. ><B.BODY>A license file is made up of a <CX5FX5FTERM>server line</CX5FX5FTERM
  5787. >, a <CX5FX5FTERM>daemon line</CX5FX5FTERM
  5788. > and a number of <CX5FX5FTERM>feature lines</CX5FX5FTERM
  5789. >. This is an example of a floating license:</B.BODY
  5790. ><EWM.EXAMPLEW.MONO>SERVER neptune 008005a88359e 7126</EWM.EXAMPLEW.MONO
  5791. ><EWM.EXAMPLEW.MONO>DAEMON cayenne /usr/cayenne/flexlm/bin/cayenne</EWM.EXAMPLEW.MONO
  5792. ><EWM.EXAMPLEW.MONO>FEATURE OT_BROWSER_UNIX cayenne 7.100 11&truehy;jan&truehy;98 10 2CF2F7D2EF08C75F701F ““</EWM.EXAMPLEW.MONO
  5793. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5794. ></RBW-AUTOGEN
  5795. ></RBW-MARKER
  5796. ><RBW-PARABODY>The server line identifies the name and (encrypted) hostid of the license server, and the port on which it receives license requests.</RBW-PARABODY
  5797. ></LB.LIST.BULLET
  5798. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5799. ></RBW-AUTOGEN
  5800. ></RBW-MARKER
  5801. ><RBW-PARABODY>The daemon line identifies the name and location of the cayenne daemon, responsible for managing ObjectTeam licenses.</RBW-PARABODY
  5802. ></LB.LIST.BULLET
  5803. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5804. ></RBW-AUTOGEN
  5805. ></RBW-MARKER
  5806. ><RBW-PARABODY>A feature line identifies a particular ObjectTeam licensed feature, the version of ObjectTeam for which it is valid, the expiry date and the number of workstations that can use it simultaneously. If this is a nodelocked feature, the hostid is also specified.</RBW-PARABODY
  5807. ></LB.LIST.BULLET
  5808. ></LABEL
  5809. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5810. >Replacing a temporary license with a permanent license</L.LABEL
  5811. ><B.BODY>Once you receive your permanent license, you:</B.BODY
  5812. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5813. ></RBW-AUTOGEN
  5814. ></RBW-MARKER
  5815. ><RBW-PARABODY>Install it on the license server.</RBW-PARABODY
  5816. ></LB.LIST.BULLET
  5817. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5818. ></RBW-AUTOGEN
  5819. ></RBW-MARKER
  5820. ><RBW-PARABODY>Start the license server.</RBW-PARABODY
  5821. ></LB.LIST.BULLET
  5822. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5823. ></RBW-AUTOGEN
  5824. ></RBW-MARKER
  5825. ><RBW-PARABODY>Remove the temporary licenses installed on each machine running ObjectTeam.</RBW-PARABODY
  5826. ></LB.LIST.BULLET
  5827. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5828. ></RBW-AUTOGEN
  5829. ></RBW-MARKER
  5830. ><RBW-PARABODY>Reset LM_LICENSE_FILE on each machine running ObjectTeam to point to the license server. On a machine other than the license server, LM_LICENSE_FILE has the format <CX5FX5FTERM>port</CX5FX5FTERM
  5831. >@<CX5FX5FTERM>server</CX5FX5FTERM
  5832. >, where <CX5FX5FTERM>port</CX5FX5FTERM
  5833. > is the TCP/IP port being used by the license server, and <CX5FX5FVARIABLE>server</CX5FX5FVARIABLE
  5834. > is the host name of the server running the license service. These are identified in the server line of the license file. </RBW-PARABODY
  5835. ></LB.LIST.BULLET
  5836. ></LABEL
  5837. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5838. >Licensing process</L.LABEL
  5839. ><B.BODY>Once the license server is running, it controls the use of ObjectTeam features. When a user tries to start an ObjectTeam feature, such as a Browser, ObjectTeam:</B.BODY
  5840. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5841. ></RBW-AUTOGEN
  5842. ></RBW-MARKER
  5843. ><RBW-PARABODY>Examines LM_LICENSE_FILE to find the address of the license server. On a client for example, this has the format <CX5FX5FTERM>port</CX5FX5FTERM
  5844. >@<CX5FX5FTERM>server</CX5FX5FTERM
  5845. >.</RBW-PARABODY
  5846. ></LB.LIST.BULLET
  5847. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5848. ></RBW-AUTOGEN
  5849. ></RBW-MARKER
  5850. ><RBW-PARABODY>Makes a request for a feature with the appropriate name (such as, OT_BROWSER_UNIX). The request is passed to the license server at the specified address. </RBW-PARABODY
  5851. ></LB.LIST.BULLET
  5852. ><B.BODY>The license manager daemon on the license server:</B.BODY
  5853. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5854. ></RBW-AUTOGEN
  5855. ></RBW-MARKER
  5856. ><RBW-PARABODY>Receives the request on the specified port.</RBW-PARABODY
  5857. ></LB.LIST.BULLET
  5858. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5859. ></RBW-AUTOGEN
  5860. ></RBW-MARKER
  5861. ><RBW-PARABODY>Searches the license file for the feature with the specified name. On the feature line is also listed the name of the daemon which is responsible for controlling this feature, namely <CX5FX5FTERM>cayenne</CX5FX5FTERM
  5862. >.</RBW-PARABODY
  5863. ></LB.LIST.BULLET
  5864. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5865. ></RBW-AUTOGEN
  5866. ></RBW-MARKER
  5867. ><RBW-PARABODY>Passes the request to the cayenne daemon, which then grants or denies a license based on the number of licenses available.</RBW-PARABODY
  5868. ></LB.LIST.BULLET
  5869. ></LABEL
  5870. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5871. >Editing license files</L.LABEL
  5872. ><B.BODY>Normally, your license file contains all the features that you need to use ObjectTeam. If you subsequently decide that you would like to use additional features of ObjectTeam, you can order additional licenses for each feature. To make a new license available, you simply add a new feature line to your existing license file.</B.BODY
  5873. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5874. ></RBW-AUTOGEN
  5875. ></RBW-MARKER
  5876. ><RBW-PARABODY>To edit the license file:</RBW-PARABODY
  5877. ></P.PROCEDURE
  5878. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5879. ></RBW-AUTOGEN
  5880. ></RBW-MARKER
  5881. ><RBW-PARABODY>Make a copy of your current license file.</RBW-PARABODY
  5882. ></LN.LIST.NUM
  5883. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5884. ></RBW-AUTOGEN
  5885. ></RBW-MARKER
  5886. ><RBW-PARABODY>Open the license file (/usr/cayenne/flexlm/license/cayenne.dat) using a text editor.</RBW-PARABODY
  5887. ></LN.LIST.NUM
  5888. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5889. ></RBW-AUTOGEN
  5890. ></RBW-MARKER
  5891. ><RBW-PARABODY>Edit the license file as needed:</RBW-PARABODY
  5892. ></LN.LIST.NUM
  5893. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  5894. ></RBW-MARKER
  5895. ><RBW-PARABODY>To add a new feature, type (or copy and paste) the new feature line into the file. If you are typing the license information, be careful to avoid typing mistakes.</RBW-PARABODY
  5896. ></LB2.LIST.BULLET.2
  5897. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  5898. ></RBW-MARKER
  5899. ><RBW-PARABODY>To deactivate a feature, comment it out by typing a hash character (#) at the start of the line. </RBW-PARABODY
  5900. ></LB2.LIST.BULLET.2
  5901. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  5902. ></RBW-MARKER
  5903. ><RBW-PARABODY>To replace a feature, deactivate the old line and add the new one as described above.</RBW-PARABODY
  5904. ></LB2.LIST.BULLET.2
  5905. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  5906. ></RBW-AUTOGEN
  5907. ></RBW-MARKER
  5908. ><RBW-PARABODY>Save the edited file.</RBW-PARABODY
  5909. ></LN.LIST.NUM
  5910. ></LABEL
  5911. ></SECTION
  5912. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37096"></RBW-ANCHOR
  5913. >Installing the License Server Software</S.SECTION.HEAD
  5914. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5915. >Introduction</L.LABEL
  5916. ><B.BODY>Before you install or upgrade an ObjectTeam Master server, you must configure a machine in your network as a license server. This can be the same machine as the Master server, or some other machine. </B.BODY
  5917. ><B.BODY>This section assumes you are installing the license software on the ObjectTeam Master server. </B.BODY
  5918. ></LABEL
  5919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5920. ><RBW-ANCHOR ID="32637"></RBW-ANCHOR
  5921. >How to install the license management software</L.LABEL
  5922. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5923. ></RBW-AUTOGEN
  5924. ></RBW-MARKER
  5925. ><RBW-PARABODY>To install the license management software on UNIX:</RBW-PARABODY
  5926. ></P.PROCEDURE
  5927. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5928. ></RBW-AUTOGEN
  5929. ></RBW-MARKER
  5930. ><RBW-PARABODY>Mount the ObjectTeam CD, as described in the CD insert.</RBW-PARABODY
  5931. ></LN.LIST.NUM
  5932. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5933. ></RBW-AUTOGEN
  5934. ></RBW-MARKER
  5935. ><RBW-PARABODY>Log in to the machine designated as license server as user cayenne.</RBW-PARABODY
  5936. ></LN.LIST.NUM
  5937. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  5938. ></RBW-AUTOGEN
  5939. ></RBW-MARKER
  5940. ><RBW-PARABODY>Run the FLEXlm install script:</RBW-PARABODY
  5941. ></LN.LIST.NUM
  5942. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris:</CX5FX5FFILE.NAME
  5943. ></LT.LIST.TEXT
  5944. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/sol/flexlm</EM.EXAMPLE.MONO
  5945. ><EM.EXAMPLE.MONO>./instflex</EM.EXAMPLE.MONO
  5946. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  5947. ></LT.LIST.TEXT
  5948. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/HPUX/FLEXLM</EM.EXAMPLE.MONO
  5949. ><EM.EXAMPLE.MONO>./INSTFLEX</EM.EXAMPLE.MONO
  5950. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  5951. ></LT.LIST.TEXT
  5952. ><EM.EXAMPLE.MONO>cd /cdrom/objecttm/aix/flexlm</EM.EXAMPLE.MONO
  5953. ><EM.EXAMPLE.MONO>./instflex</EM.EXAMPLE.MONO
  5954. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  5955. > </LT.LIST.TEXT
  5956. ><EM.EXAMPLE.MONO>cd /cdrom/OBJECTTM/DUX/FLEXLM</EM.EXAMPLE.MONO
  5957. ><EM.EXAMPLE.MONO>./INSTFLEX</EM.EXAMPLE.MONO
  5958. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  5959. ></RBW-AUTOGEN
  5960. ></RBW-MARKER
  5961. ><RBW-PARABODY>You are asked in which directory you wish to install FLEXlm. The default is /usr/cayenne/flexlm. Press Return to accept this default or enter a location of your choosing. (The rest of this chapter assumes you accept the default location.)</RBW-PARABODY
  5962. ></LN.LIST.NUM
  5963. ><LR.LIST.RESULT>Once installation is complete, the /usr/cayenne/flexlm/bin directory contains the FLEXlm daemon and a collection of FLEXlm utilities. For more information about the utilities, see the FLEXlm End User Manual.</LR.LIST.RESULT
  5964. ></LABEL
  5965. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5966. >Next steps</L.LABEL
  5967. ><B.BODY>If you have a:</B.BODY
  5968. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5969. ></RBW-AUTOGEN
  5970. ></RBW-MARKER
  5971. ><RBW-PARABODY>Temporary license, you need to obtain a permanent license, as described in Obtaining a Permanent License on page B–9.</RBW-PARABODY
  5972. ></LB.LIST.BULLET
  5973. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  5974. ></RBW-AUTOGEN
  5975. ></RBW-MARKER
  5976. ><RBW-PARABODY>Permanent license, install the permanent license and start the license server, as described in Installing a Permanent License on page B–10.</RBW-PARABODY
  5977. ></LB.LIST.BULLET
  5978. ></LABEL
  5979. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="41721"></RBW-ANCHOR
  5980. >Obtaining a Permanent License</SS.SUBSEC.HEAD
  5981. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  5982. >Obtain a permanent ObjectTeam license</L.LABEL
  5983. ><B.BODY>To obtain a permanent license, you must find out the host ID of your machine and submit it to Cayenne using the License Request Form. </B.BODY
  5984. ><B.BODY>Carry out the steps in this section while logged into the license server as cayenne.</B.BODY
  5985. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  5986. ></RBW-AUTOGEN
  5987. ></RBW-MARKER
  5988. ><RBW-PARABODY>To order a license:</RBW-PARABODY
  5989. ></P.PROCEDURE
  5990. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  5991. ></RBW-AUTOGEN
  5992. ></RBW-MARKER
  5993. ><RBW-PARABODY>At the command prompt, type the following:</RBW-PARABODY
  5994. ></LN.LIST.NUM
  5995. ><EM.EXAMPLE.MONO>/usr/cayenne/flexlm/bin/lmutil lmhostid</EM.EXAMPLE.MONO
  5996. ><LR.LIST.RESULT>The system displays the host ID of the UNIX server.</LR.LIST.RESULT
  5997. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  5998. ></RBW-AUTOGEN
  5999. ></RBW-MARKER
  6000. ><RBW-PARABODY>Submit a license request a license in either of the following ways:</RBW-PARABODY
  6001. ></LN.LIST.NUM
  6002. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  6003. ></RBW-MARKER
  6004. ><RBW-PARABODY>Go to the license request form provided on Cayenne Software’s World Wide Web page at: <CX5FX5FFILE.NAME>http://www.cayennesoft.com/license</CX5FX5FFILE.NAME
  6005. >. </RBW-PARABODY
  6006. ></LB2.LIST.BULLET.2
  6007. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  6008. ></RBW-MARKER
  6009. ><RBW-PARABODY>Print out the form provided on the CD&truehy;ROM (/cdrom/lic_req.txt or /cdrom/lic_req.htm), fill it in and fax it to us at 617&truehy;273&truehy;0618.</RBW-PARABODY
  6010. ></LB2.LIST.BULLET.2
  6011. ><LT.LIST.TEXT>If you are ordering from outside the United States, contact your Cayenne sales office.</LT.LIST.TEXT
  6012. ><B.BODY>Cayenne will send you a new license for the product by electronic mail or by fax. </B.BODY
  6013. ><B.BODY>Once you receive a permanent license, carry out the instructions in Installing a Permanent License on page B–10. </B.BODY
  6014. ></LABEL
  6015. ></SUBSECTION
  6016. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21534"></RBW-ANCHOR
  6017. >Installing a Permanent License</SS.SUBSEC.HEAD
  6018. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6019. >Introduction</L.LABEL
  6020. ><B.BODY>Once you receive a permanent license, you can start the license server. Carry out the steps in this section while logged into the license server as cayenne.</B.BODY
  6021. ></LABEL
  6022. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6023. >Install your permanent license file</L.LABEL
  6024. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6025. ></RBW-AUTOGEN
  6026. ></RBW-MARKER
  6027. ><RBW-PARABODY>To install your permanent license file:</RBW-PARABODY
  6028. ></P.PROCEDURE
  6029. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6030. ></RBW-AUTOGEN
  6031. ></RBW-MARKER
  6032. ><RBW-PARABODY>If you received a permanent license:</RBW-PARABODY
  6033. ></LN.LIST.NUM
  6034. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  6035. ></RBW-MARKER
  6036. ><RBW-PARABODY>On a floppy, copy the license to <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  6037. ></RBW-PARABODY
  6038. ></LB2.LIST.BULLET.2
  6039. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  6040. ></RBW-MARKER
  6041. ><RBW-PARABODY>Via email, copy and paste the new feature information into an empty text file and save it as <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  6042. ></RBW-PARABODY
  6043. ></LB2.LIST.BULLET.2
  6044. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  6045. ></RBW-MARKER
  6046. ><RBW-PARABODY>Via fax, enter the new feature information by hand into an empty text file, and save it as <CX5FX5FFILE.NAME>/usr/cayenne/flexlm/license/cayenne.dat</CX5FX5FFILE.NAME
  6047. ></RBW-PARABODY
  6048. ></LB2.LIST.BULLET.2
  6049. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6050. ></RBW-AUTOGEN
  6051. ></RBW-MARKER
  6052. ><RBW-PARABODY>Open the license file in a text editor and check that the DAEMON line points to the correct location of the cayenne daemon, for example:</RBW-PARABODY
  6053. ></LN.LIST.NUM
  6054. ><EM.EXAMPLE.MONO>DAEMON cayenne /usr/cayenne/flexlm/bin/cayenne</EM.EXAMPLE.MONO
  6055. ></LABEL
  6056. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6057. >How to set LM_LICENSE_FILE on the license server</L.LABEL
  6058. ><B.BODY>You must now set the license file environment variable, LM_LICENSE_FILE, to point to the permanent license:</B.BODY
  6059. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6060. ></RBW-AUTOGEN
  6061. ></RBW-MARKER
  6062. ><RBW-PARABODY>To set the LM_LICENSE_FILE variable on the license server:</RBW-PARABODY
  6063. ></P.PROCEDURE
  6064. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6065. ></RBW-AUTOGEN
  6066. ></RBW-MARKER
  6067. ><RBW-PARABODY>Open your environment settings file in a text editor and add a line to point to the license file.</RBW-PARABODY
  6068. ></LN.LIST.NUM
  6069. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>.login:</CX5FX5FFILE.NAME
  6070. ></LT.LIST.TEXT
  6071. ><EWM.EXAMPLEW.MONO>setenv LM_LICENSE_FILE /usr/cayenne/flexlm/license/cayenne.dat</EWM.EXAMPLEW.MONO
  6072. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>.profile:</CX5FX5FFILE.NAME
  6073. ></LT.LIST.TEXT
  6074. ><EWM.EXAMPLEW.MONO>LM_LICENSE_FILE=/usr/cayenne/flexlm/license/cayenne.dat</EWM.EXAMPLEW.MONO
  6075. ><EWM.EXAMPLEW.MONO>export LM_LICENSE_FILE</EWM.EXAMPLEW.MONO
  6076. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  6077. ></RBW-AUTOGEN
  6078. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, add the above path to the end of the line, separated from the previous path by a colon (:).</N2.NOTE.2
  6079. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6080. ></RBW-AUTOGEN
  6081. ></RBW-MARKER
  6082. ><RBW-PARABODY>Source your environment file.</RBW-PARABODY
  6083. ></LN.LIST.NUM
  6084. ></LABEL
  6085. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6086. >How to set LM_LICENSE_FILE on other machines</L.LABEL
  6087. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6088. ></RBW-AUTOGEN
  6089. ></RBW-MARKER
  6090. ><RBW-PARABODY>To set the LM_LICENSE_FILE variable on other machines running ObjectTeam:</RBW-PARABODY
  6091. ></P.PROCEDURE
  6092. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6093. ></RBW-AUTOGEN
  6094. ></RBW-MARKER
  6095. ><RBW-PARABODY>Identify the port being used by the License Service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  6096. ></LN.LIST.NUM
  6097. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  6098. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6099. ></RBW-AUTOGEN
  6100. ></RBW-MARKER
  6101. ><RBW-PARABODY>Open your environment settings file in a text editor and add the following line, replacing <CX5FX5FTERM>server</CX5FX5FTERM
  6102. > with the name of your license server:</RBW-PARABODY
  6103. ></LN.LIST.NUM
  6104. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>.login:</CX5FX5FFILE.NAME
  6105. ></LT.LIST.TEXT
  6106. ><EM.EXAMPLE.MONO>setenv LM_LICENSE_FILE 7126@<CX5FX5FTERM>server</CX5FX5FTERM
  6107. ></EM.EXAMPLE.MONO
  6108. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>.profile:</CX5FX5FFILE.NAME
  6109. ></LT.LIST.TEXT
  6110. ><EM.EXAMPLE.MONO>LM_LICENSE_FILE=7126@<CX5FX5FTERM>server</CX5FX5FTERM
  6111. ></EM.EXAMPLE.MONO
  6112. ><EM.EXAMPLE.MONO>export LM_LICENSE_FILE</EM.EXAMPLE.MONO
  6113. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  6114. ></RBW-AUTOGEN
  6115. >If LM_LICENSE_FILE is already set in your environment, add “7126@<CX5FX5FTERM>server”</CX5FX5FTERM
  6116. > to the end of the line, separated from the previous path by a colon (:).</N2.NOTE.2
  6117. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6118. ></RBW-AUTOGEN
  6119. ></RBW-MARKER
  6120. ><RBW-PARABODY>Source your environment file.</RBW-PARABODY
  6121. ></LN.LIST.NUM
  6122. ></LABEL
  6123. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6124. ><RBW-ANCHOR ID="36930"></RBW-ANCHOR
  6125. >Start the license manager daemon</L.LABEL
  6126. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6127. ></RBW-AUTOGEN
  6128. ></RBW-MARKER
  6129. ><RBW-PARABODY>To start the license manager daemon, enter the following:</RBW-PARABODY
  6130. ></P.PROCEDURE
  6131. ><EWM.EXAMPLEW.MONO>/usr/cayenne/flexlm/bin/lmgrd &truehy;c /usr/cayenne/flexlm/license/cayenne.dat &</EWM.EXAMPLEW.MONO
  6132. ><B.BODY>Once you have installed ObjectTeam, you will configure the license server to start automatically as a service.</B.BODY
  6133. ><B.BODY>For more information on using the FLEXlm utilities, see the <CX5FX5FTERM>FLEXlm End User Manual</CX5FX5FTERM
  6134. >.</B.BODY
  6135. ><RBWAUTO-0001></RBWAUTO-0001
  6136. ><!--
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142. CONVERTING SOURCE FILE ../../sources/igun/informix.fm5.mif
  6143.  
  6144.  
  6145. --><B.BODY></B.BODY
  6146. ><B.BODY></B.BODY
  6147. ><B.BODY></B.BODY
  6148. ><B.BODY></B.BODY
  6149. ><B.BODY></B.BODY
  6150. ></LABEL
  6151. ></SUBSECTION
  6152. ></SECTION
  6153. ></APPENDIX
  6154. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix C&rbwtab;</CX5FX5FZCHAPTER.NUM
  6155. ></RBW-AUTOGEN
  6156. >Installing <RBW-ANCHOR ID="30785"></RBW-ANCHOR
  6157. >Informix<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  6158. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  6159. ></RBW-SYSOBJ
  6160. ></A.APPENDIX.HEAD
  6161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6162. >Introduction</L.LABEL
  6163. ><B.BODY>This chapter describes how to install the Informix software. It contains the following sections:</B.BODY
  6164. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  6165. ></RBW-AUTOGEN
  6166. ></RBW-MARKER
  6167. ><RBW-PARABODY>How to install and configure an Informix server</RBW-PARABODY
  6168. ></LB.LIST.BULLET
  6169. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  6170. ></RBW-MARKER
  6171. ><RBW-PARABODY>How to configure your Informix server installation for use with an ObjectTeam installation</RBW-PARABODY
  6172. ></LB2.LIST.BULLET.2
  6173. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  6174. ></RBW-MARKER
  6175. ><RBW-PARABODY>How to troubleshoot an Informix server installation</RBW-PARABODY
  6176. ></LB2.LIST.BULLET.2
  6177. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  6178. ></RBW-AUTOGEN
  6179. ></RBW-MARKER
  6180. ><RBW-PARABODY>How to install and configure an Informix client</RBW-PARABODY
  6181. ></LB.LIST.BULLET
  6182. ></LABEL
  6183. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6184. >Installing Informix for the First Time</L.LABEL
  6185. ><B.BODY>If you are installing ObjectTeam for the first time, Informix license cards with Serial Numbers and Keys are included. A license Serial Number and Key are required to complete the Informix installation. </B.BODY
  6186. ></LABEL
  6187. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6188. >In this chapter</L.LABEL
  6189. ><B.BODY>This chapter contains the following sections:</B.BODY
  6190. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  6191. ></ENTRY
  6192. ></RBW-ROW
  6193. ></THEAD
  6194. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42424" TYPE="XREF-TEXTCOPY">Installing Informix Product Files&rbwtab;C–2</RBW-XREF
  6195. ></SB.SECTION.BLOCK.TABLE
  6196. ></ENTRY
  6197. ></RBW-ROW
  6198. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21549" TYPE="XREF-TEXTCOPY">Setting Up Informix Server&rbwtab;C–5</RBW-XREF
  6199. ></SB.SECTION.BLOCK.TABLE
  6200. ></ENTRY
  6201. ></RBW-ROW
  6202. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17638" TYPE="XREF-TEXTCOPY">Setting Up Informix Client&rbwtab;C–19</RBW-XREF
  6203. ></SB.SECTION.BLOCK.TABLE
  6204. ></ENTRY
  6205. ></RBW-ROW
  6206. ></TBODY
  6207. ></TGROUP
  6208. ></RBW-TABLE
  6209. ></LABEL
  6210. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="42424"></RBW-ANCHOR
  6211. >Installing Informix Product Files</S.SECTION.HEAD
  6212. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6213. >How to <RBW-ANCHOR ID="28805"></RBW-ANCHOR
  6214. >install Informix files</L.LABEL
  6215. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6216. ></RBW-AUTOGEN
  6217. ></RBW-MARKER
  6218. ><RBW-PARABODY>To install Informix files:</RBW-PARABODY
  6219. ></P.PROCEDURE
  6220. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6221. ></RBW-AUTOGEN
  6222. ></RBW-MARKER
  6223. ><RBW-PARABODY>Log in as root.</RBW-PARABODY
  6224. ></LN.LIST.NUM
  6225. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6226. ></RBW-AUTOGEN
  6227. ></RBW-MARKER
  6228. ><RBW-PARABODY>Create a new group called informix (e.g., with group number 100).</RBW-PARABODY
  6229. ></LN.LIST.NUM
  6230. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6231. ></RBW-AUTOGEN
  6232. ></RBW-MARKER
  6233. ><RBW-PARABODY>Add a new user called informix and assign it to the group informix.</RBW-PARABODY
  6234. ></LN.LIST.NUM
  6235. ><LT.LIST.TEXT>User informix should be the only member of the group informix.</LT.LIST.TEXT
  6236. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  6237. ></RBW-AUTOGEN
  6238. ></RBW-MARKER
  6239. ><RBW-PARABODY>Create a new directory for the Informix product (e.g., /usr/informix) and change ownership and group to user informix.</RBW-PARABODY
  6240. ></LN.LIST.NUM
  6241. ><EM.EXAMPLE.MONO>mkdir /usr/informix</EM.EXAMPLE.MONO
  6242. ><EM.EXAMPLE.MONO>chown informix /usr/informix</EM.EXAMPLE.MONO
  6243. ><EM.EXAMPLE.MONO>chgrp informix /usr/informix</EM.EXAMPLE.MONO
  6244. ><LT.LIST.TEXT>Note that the last part of the path must end in “informix”.</LT.LIST.TEXT
  6245. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  6246. ></RBW-AUTOGEN
  6247. ></RBW-MARKER
  6248. ><RBW-PARABODY>Set the INFORMIXDIR and PATH environment variables at the command line as follows:</RBW-PARABODY
  6249. ></LN.LIST.NUM
  6250. ><LT.LIST.TEXT>Bourne shell:</LT.LIST.TEXT
  6251. ><EM.EXAMPLE.MONO>INFORMIXDIR=/usr/informix</EM.EXAMPLE.MONO
  6252. ><EM.EXAMPLE.MONO>export INFORMIXDIR</EM.EXAMPLE.MONO
  6253. ><EM.EXAMPLE.MONO>PATH=$PATH:$INFORMIXDIR/bin</EM.EXAMPLE.MONO
  6254. ><EM.EXAMPLE.MONO>export PATH</EM.EXAMPLE.MONO
  6255. ><LT.LIST.TEXT>C shell:</LT.LIST.TEXT
  6256. ><EM.EXAMPLE.MONO>setenv INFORMIXDIR /usr/informix</EM.EXAMPLE.MONO
  6257. ><EM.EXAMPLE.MONO>setenv PATH ${PATH}:${INFORMIXDIR}/bin</EM.EXAMPLE.MONO
  6258. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  6259. ></RBW-AUTOGEN
  6260. ></RBW-MARKER
  6261. ><RBW-PARABODY>Change directory by entering the following command:</RBW-PARABODY
  6262. ></LN.LIST.NUM
  6263. ><EM.EXAMPLE.MONO>cd $INFORMIXDIR</EM.EXAMPLE.MONO
  6264. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  6265. ></RBW-AUTOGEN
  6266. ></RBW-MARKER
  6267. ><RBW-PARABODY>Mount the CD on your file system, as described in the CD insert.</RBW-PARABODY
  6268. ></LN.LIST.NUM
  6269. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  6270. ></RBW-AUTOGEN
  6271. ></RBW-MARKER
  6272. ><RBW-PARABODY>Read the Informix CD by entering the command:</RBW-PARABODY
  6273. ></LN.LIST.NUM
  6274. ><EM.EXAMPLE.MONO>tar xvf <CX5FX5FTERM>devicename</CX5FX5FTERM
  6275. >/<CX5FX5FTERM>platform_directory</CX5FX5FTERM
  6276. >/online.tar</EM.EXAMPLE.MONO
  6277. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris 2.5.1:</CX5FX5FFILE.NAME
  6278. > </LT.LIST.TEXT
  6279. ><EM.EXAMPLE.MONO>tar xvf /cdrom/sol25inf/online.tar</EM.EXAMPLE.MONO
  6280. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX:</CX5FX5FFILE.NAME
  6281. > </LT.LIST.TEXT
  6282. ><EM.EXAMPLE.MONO>tar xvf /cdrom/HP102INF/ONLINE.TAR</EM.EXAMPLE.MONO
  6283. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>AIX:</CX5FX5FFILE.NAME
  6284. > </LT.LIST.TEXT
  6285. ><EM.EXAMPLE.MONO>tar xvf /cdrom/aix42inf/online.tar</EM.EXAMPLE.MONO
  6286. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>D&truehy;UX:</CX5FX5FFILE.NAME
  6287. > </LT.LIST.TEXT
  6288. ><EM.EXAMPLE.MONO>tar xvf /cdrom/DUX40INF/ONLINE.TAR</EM.EXAMPLE.MONO
  6289. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  6290. ></RBW-AUTOGEN
  6291. ></RBW-MARKER
  6292. ><RBW-PARABODY>To install Informix&truehy;OnLine on any platform, enter the command:</RBW-PARABODY
  6293. ></LN.LIST.NUM
  6294. ><EM.EXAMPLE.MONO>./installonline</EM.EXAMPLE.MONO
  6295. ><LR.LIST.RESULT>The following messages appear on the screen:</LR.LIST.RESULT
  6296. ><EWM.EXAMPLEW.MONO>Installation Script</EWM.EXAMPLEW.MONO
  6297. ><EWM.EXAMPLEW.MONO>This installation procedure must be run by root (super&truehy;user)</EWM.EXAMPLEW.MONO
  6298. ><EWM.EXAMPLEW.MONO>It will change</EWM.EXAMPLEW.MONO
  6299. ><EWM.EXAMPLEW.MONO>.</EWM.EXAMPLEW.MONO
  6300. ><EWM.EXAMPLEW.MONO>.</EWM.EXAMPLEW.MONO
  6301. ><EWM.EXAMPLEW.MONO>.</EWM.EXAMPLEW.MONO
  6302. ><EWM.EXAMPLEW.MONO>Press RETURN to continue,</EWM.EXAMPLEW.MONO
  6303. ><EWM.EXAMPLEW.MONO>or the interrupt key (usually CTRL&truehy;C or DEL) to abort.</EWM.EXAMPLEW.MONO
  6304. ><EWM.EXAMPLEW.MONO>You need the Informix Serial number and Key which are included</EWM.EXAMPLEW.MONO
  6305. ><EWM.EXAMPLEW.MONO>on the license card included with your shipment.</EWM.EXAMPLEW.MONO
  6306. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  6307. ></RBW-AUTOGEN
  6308. ></RBW-MARKER
  6309. ><RBW-PARABODY>Press Return to continue the installation procedure.</RBW-PARABODY
  6310. ></LN.LIST.NUM
  6311. ><LR.LIST.RESULT>The following prompt appears:</LR.LIST.RESULT
  6312. ><EM.EXAMPLE.MONO>Enter your serial number (for example, INF#X999999) ></EM.EXAMPLE.MONO
  6313. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  6314. ></RBW-AUTOGEN
  6315. ></RBW-MARKER
  6316. ><RBW-PARABODY>Enter the 11&truehy;character serial number, and press Return.</RBW-PARABODY
  6317. ></LN.LIST.NUM
  6318. ><LR.LIST.RESULT>The following prompt appears:</LR.LIST.RESULT
  6319. ><EWM.EXAMPLEW.MONO>Enter your serial number KEY (uppercase letters only) ></EWM.EXAMPLEW.MONO
  6320. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  6321. ></RBW-AUTOGEN
  6322. ></RBW-MARKER
  6323. ><RBW-PARABODY>Enter the 6&truehy;character software serial number, and press Return.</RBW-PARABODY
  6324. ></LN.LIST.NUM
  6325. ><LR.LIST.RESULT>You will see a message and a prompt similar to the following example:</LR.LIST.RESULT
  6326. ><EWM.EXAMPLEW.MONO>WARNING:</EWM.EXAMPLEW.MONO
  6327. ><EWM.EXAMPLEW.MONO>This software, and its authorized use and number of users....</EWM.EXAMPLEW.MONO
  6328. ><EWM.EXAMPLEW.MONO>Press RETURN to continue,or the interrupt key (usually CTRL&truehy;C or DEL) </EWM.EXAMPLEW.MONO
  6329. ><EWM.EXAMPLEW.MONO>to abort.</EWM.EXAMPLEW.MONO
  6330. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  6331. ></RBW-AUTOGEN
  6332. ></RBW-MARKER
  6333. ><RBW-PARABODY>Press Return to continue the installation.</RBW-PARABODY
  6334. ></LN.LIST.NUM
  6335. ><LR.LIST.RESULT>The installation will show messages similar to the following, until completion:</LR.LIST.RESULT
  6336. ><EWM.EXAMPLEW.MONO>Installing directory .</EWM.EXAMPLEW.MONO
  6337. ><EWM.EXAMPLEW.MONO>Installing directory aaodir</EWM.EXAMPLEW.MONO
  6338. ><EWM.EXAMPLEW.MONO>.</EWM.EXAMPLEW.MONO
  6339. ><EWM.EXAMPLEW.MONO>.</EWM.EXAMPLEW.MONO
  6340. ><EWM.EXAMPLEW.MONO>.</EWM.EXAMPLEW.MONO
  6341. ><EWM.EXAMPLEW.MONO>Installation of Informix&truehy;OnLine Dynamic Server complete.</EWM.EXAMPLEW.MONO
  6342. ></LABEL
  6343. ></SECTION
  6344. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21549"></RBW-ANCHOR
  6345. >Setting Up Informix Server</S.SECTION.HEAD
  6346. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6347. >How to set up Informix Server</L.LABEL
  6348. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6349. ></RBW-AUTOGEN
  6350. ></RBW-MARKER
  6351. ><RBW-PARABODY>Log in as informix</RBW-PARABODY
  6352. ></LN.LIST.NUM
  6353. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6354. ></RBW-AUTOGEN
  6355. ></RBW-MARKER
  6356. ><RBW-PARABODY>Add the following variables to your environment variables file:</RBW-PARABODY
  6357. ></LN.LIST.NUM
  6358. ><LT.LIST.TEXT>Bourne shell: </LT.LIST.TEXT
  6359. ><EM.EXAMPLE.MONO>INFORMIXDIR=/usr/informix</EM.EXAMPLE.MONO
  6360. ><EM.EXAMPLE.MONO>export INFORMIXDIR</EM.EXAMPLE.MONO
  6361. ><EM.EXAMPLE.MONO>PATH=$PATH:$INFORMIXDIR/bin</EM.EXAMPLE.MONO
  6362. ><EM.EXAMPLE.MONO>export PATH</EM.EXAMPLE.MONO
  6363. ><EM.EXAMPLE.MONO>INFORMIXSERVER=<CX5FX5FTERM>server</CX5FX5FTERM
  6364. ></EM.EXAMPLE.MONO
  6365. ><EM.EXAMPLE.MONO>export INFORMIXSERVER</EM.EXAMPLE.MONO
  6366. ><LT.LIST.TEXT>C shell:</LT.LIST.TEXT
  6367. ><EM.EXAMPLE.MONO>setenv INFORMIXDIR /usr/informix</EM.EXAMPLE.MONO
  6368. ><EM.EXAMPLE.MONO>setenv PATH ${PATH}:${INFORMIXDIR}/bin</EM.EXAMPLE.MONO
  6369. ><EM.EXAMPLE.MONO>setenv INFORMIXSERVER <CX5FX5FTERM>server</CX5FX5FTERM
  6370. ></EM.EXAMPLE.MONO
  6371. ><LT.LIST.TEXT>Replace <CX5FX5FTERM>server</CX5FX5FTERM
  6372. > with the name of the machine on which you installed the Informix files. </LT.LIST.TEXT
  6373. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6374. ></RBW-AUTOGEN
  6375. ></RBW-MARKER
  6376. ><RBW-PARABODY>Activate these settings by:</RBW-PARABODY
  6377. ></LN.LIST.NUM
  6378. ><LT.LIST.TEXT>Bourne shell:</LT.LIST.TEXT
  6379. ><EM.EXAMPLE.MONO>. ./.profile</EM.EXAMPLE.MONO
  6380. ><LT.LIST.TEXT>C shell:</LT.LIST.TEXT
  6381. ><EM.EXAMPLE.MONO>source .cshrc</EM.EXAMPLE.MONO
  6382. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  6383. ></RBW-AUTOGEN
  6384. ></RBW-MARKER
  6385. ><RBW-PARABODY>Make sure that the file system containing the Informix installation has enough free disk space to store the informix database by using:</RBW-PARABODY
  6386. ></LN.LIST.NUM
  6387. ><EM.EXAMPLE.MONO>cd $INFORMIXDIR</EM.EXAMPLE.MONO
  6388. ><EM.EXAMPLE.MONO>df &truehy;k .</EM.EXAMPLE.MONO
  6389. ><LT.LIST.TEXT>There should be at least 100 MB available disk space.</LT.LIST.TEXT
  6390. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  6391. ></RBW-AUTOGEN
  6392. ></RBW-MARKER
  6393. ><RBW-PARABODY>Prepare the Informix dataspace with the following commands:</RBW-PARABODY
  6394. ></LN.LIST.NUM
  6395. ><EM.EXAMPLE.MONO>mkdir $INFORMIXDIR/data</EM.EXAMPLE.MONO
  6396. ><EM.EXAMPLE.MONO>touch $INFORMIXDIR/data/data1</EM.EXAMPLE.MONO
  6397. ><EM.EXAMPLE.MONO>chmod 660 $INFORMIXDIR/data/data1</EM.EXAMPLE.MONO
  6398. ><LT.LIST.TEXT>Informix will reserve the space that will be allocated later. The space is determined by the Root Size field as described in Setting Up Informix Client on page C–19. The default setting for ObjectTeam is 100 MB. </LT.LIST.TEXT
  6399. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  6400. ></RBW-AUTOGEN
  6401. ></RBW-MARKER
  6402. ><RBW-PARABODY><CX5FX5FFILE.NAME>Solaris only:</CX5FX5FFILE.NAME
  6403. > The preferred network connection type between Informix and the database server is onipcstr. To set this up, edit the $INFORMIXDIR/etc/onconfig file and add the line:</RBW-PARABODY
  6404. ></LN.LIST.NUM
  6405. ><EM.EXAMPLE.MONO>NETTYPE &rbwtab;&rbwtab;ipcstr,,, #Configure poll thread(s) for nettype</EM.EXAMPLE.MONO
  6406. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  6407. ></RBW-AUTOGEN
  6408. ></RBW-MARKER
  6409. ><RBW-PARABODY>Edit the $INFORMIXDIR/etc/sqlhosts file and add the following line:</RBW-PARABODY
  6410. ></LN.LIST.NUM
  6411. ><EM.EXAMPLE.MONO><CX5FX5FTERM>server     </CX5FX5FTERM
  6412. > <CX5FX5FTERM>nettype     </CX5FX5FTERM
  6413. ><CX5FX5FTERM> hostname     </CX5FX5FTERM
  6414. ><CX5FX5FTERM> service_name</CX5FX5FTERM
  6415. ></EM.EXAMPLE.MONO
  6416. ><LT.LIST.TEXT>where:</LT.LIST.TEXT
  6417. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  6418. ></RBW-AUTOGEN
  6419. ></RBW-MARKER
  6420. ><RBW-PARABODY>The first column is the server name (default is the hostname).</RBW-PARABODY
  6421. ></LN2.LIST.NUM.2
  6422. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  6423. ></RBW-AUTOGEN
  6424. ></RBW-MARKER
  6425. ><RBW-PARABODY>The second column is the nettype. For Solaris, this is onipcstr. For HP&truehy;UX, D&truehy;UX and AIX, it is onsoctcp.</RBW-PARABODY
  6426. ></LN2.LIST.NUM.2
  6427. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  6428. ></RBW-AUTOGEN
  6429. ></RBW-MARKER
  6430. ><RBW-PARABODY>The third column is the hostname where the Informix server will run.</RBW-PARABODY
  6431. ></LN2.LIST.NUM.2
  6432. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>d&rbwtab;</CX5FX5FZLIST.NUMBER
  6433. ></RBW-AUTOGEN
  6434. ></RBW-MARKER
  6435. ><RBW-PARABODY>The fourth column is the service name, which is placed in /etc/services.</RBW-PARABODY
  6436. ></LN2.LIST.NUM.2
  6437. ><LT.LIST.TEXT>Example for Solaris:</LT.LIST.TEXT
  6438. ><EM.EXAMPLE.MONO>poseidon      onipcstr      poseidon      sqlexec</EM.EXAMPLE.MONO
  6439. ><LT.LIST.TEXT>where <CX5FX5FTERM>poseidon</CX5FX5FTERM
  6440. > is the name of the server. The name must be the host name of the server, and not its nickname.</LT.LIST.TEXT
  6441. ><LT.LIST.TEXT>Example for HP&truehy;UX, D&truehy;UX, and AIX:</LT.LIST.TEXT
  6442. ><EM.EXAMPLE.MONO>poseidon      onsoctcp      poseidon      sqlexec</EM.EXAMPLE.MONO
  6443. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  6444. ></RBW-AUTOGEN
  6445. ></RBW-MARKER
  6446. ><RBW-PARABODY>Add the following line to the /etc/services or /etc/inet/services file:</RBW-PARABODY
  6447. ></LN.LIST.NUM
  6448. ><EM.EXAMPLE.MONO>sqlexec      1225/tcp       # Informix Server</EM.EXAMPLE.MONO
  6449. ><LT.LIST.TEXT>If you are running NIS or NIS+, this file may be on another node in your network, the one that maintains a global services file.</LT.LIST.TEXT
  6450. ><LT.LIST.TEXT>You should verify that socket 1225 is not being used for another service.</LT.LIST.TEXT
  6451. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  6452. ></RBW-AUTOGEN
  6453. ></RBW-MARKER
  6454. ><RBW-PARABODY>Check if you are user informix by the command id or whoami. </RBW-PARABODY
  6455. ></LN.LIST.NUM
  6456. ><LT.LIST.TEXT>This is very important because the following menu&truehy;driven program must be started as user informix (otherwise errors will occur). On some platforms, specific settings are needed to allow Informix utilities to display properly.</LT.LIST.TEXT
  6457. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Solaris (cmdtool):</CX5FX5FFILE.NAME
  6458. > </LT.LIST.TEXT
  6459. ><LT.LIST.TEXT>Bourne shell:</LT.LIST.TEXT
  6460. ><EM.EXAMPLE.MONO>TERM=vt100; export TERM</EM.EXAMPLE.MONO
  6461. ><LT.LIST.TEXT>C shell:</LT.LIST.TEXT
  6462. ><EM.EXAMPLE.MONO>setenv TERM vt100</EM.EXAMPLE.MONO
  6463. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>HP&truehy;UX (hpterm), AIX (aixterm), or D&truehy;UX (dxterm):</CX5FX5FFILE.NAME
  6464. > </LT.LIST.TEXT
  6465. ><LT.LIST.TEXT>Bourne shell:</LT.LIST.TEXT
  6466. ><EM.EXAMPLE.MONO>TERM=vt100</EM.EXAMPLE.MONO
  6467. ><EM.EXAMPLE.MONO>TERMCAP=$INFORMIXDIR/etc/termcap</EM.EXAMPLE.MONO
  6468. ><EM.EXAMPLE.MONO>export TERM; export TERMCAP</EM.EXAMPLE.MONO
  6469. ><LT.LIST.TEXT>C shell:</LT.LIST.TEXT
  6470. ><EM.EXAMPLE.MONO>setenv TERM vt100</EM.EXAMPLE.MONO
  6471. ><EM.EXAMPLE.MONO>setenv TERMCAP $INFORMIXDIR/etc/termcap</EM.EXAMPLE.MONO
  6472. ><LT.LIST.TEXT>As an alternative to vt100, you can use xterm for TERM. TERMCAP should be set to $INFORMIXDIR/etc/termcap.</LT.LIST.TEXT
  6473. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  6474. ></RBW-AUTOGEN
  6475. ></RBW-MARKER
  6476. ><RBW-PARABODY>Continue to Configuring Your Server Installation on page C–8.</RBW-PARABODY
  6477. ></LN.LIST.NUM
  6478. ></LABEL
  6479. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13524"></RBW-ANCHOR
  6480. >Configuring Your Server Installation</SS.SUBSEC.HEAD
  6481. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6482. >How to configure your installation</L.LABEL
  6483. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6484. ></RBW-AUTOGEN
  6485. ></RBW-MARKER
  6486. ><RBW-PARABODY>To configure your installation:</RBW-PARABODY
  6487. ></P.PROCEDURE
  6488. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6489. ></RBW-AUTOGEN
  6490. ></RBW-MARKER
  6491. ><RBW-PARABODY>Configure the Informix installation by executing the following command:</RBW-PARABODY
  6492. ></LN.LIST.NUM
  6493. ><EM.EXAMPLE.MONO>onmonitor</EM.EXAMPLE.MONO
  6494. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6495. ></RBW-AUTOGEN
  6496. ></RBW-MARKER
  6497. ><RBW-PARABODY>Choose option Parameters, then Initialize.</RBW-PARABODY
  6498. ></LN.LIST.NUM
  6499. ><LT.LIST.TEXT>Using the tab or return keys, it is possible to switch between fields. A backtab can be done using an up&truehy;arrow. The following shows values which can be used for a new installation. After installation, these parameters can be changed.</LT.LIST.TEXT
  6500. ><LT.LIST.TEXT>These settings assume that INFORMIXDIR is /usr/informix. Replace /usr/informix with the correct full path of your Informix installation. Your screen should look similar to the following when complete:</LT.LIST.TEXT
  6501. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00013.unk" origfile="pics/inf_init.gif" origtype="X" origdoc="../../sources/igun/informix.fm5.mif"></RBW-GRAPHIC
  6502. ></FA2.FIGURE.ANCHOR.2
  6503. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6504. ></RBW-AUTOGEN
  6505. ></RBW-MARKER
  6506. ><RBW-PARABODY>Press ESC to record the changes.</RBW-PARABODY
  6507. ></LN.LIST.NUM
  6508. ><LT.LIST.TEXT>The onmonitor utility will indicate that the space for rootdbs will be allocated with the following message:</LT.LIST.TEXT
  6509. ><EM.EXAMPLE.MONO>Verifying physical disk space, please wait ...</EM.EXAMPLE.MONO
  6510. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  6511. ></RBW-AUTOGEN
  6512. ></RBW-MARKER
  6513. ><RBW-PARABODY>The Shared Memory form will now be shown.</RBW-PARABODY
  6514. ></LN.LIST.NUM
  6515. ><LT.LIST.TEXT>The Server Name field must be set. The default is the hostname of the machine you are installing on. If you do not know your machine's host name, use the <CX5FX5FINPUT>hostname</CX5FX5FINPUT
  6516. > or <CX5FX5FINPUT>uname &truehy;n</CX5FX5FINPUT
  6517. > UNIX commands. </LT.LIST.TEXT
  6518. ><LT.LIST.TEXT>For ObjectTeam, you also need to increase the default number of LOCKS. The number of locks at the field Max # of Locks must be increased to at least 5000. The recommended starting value is 16394. Depending on the product usage, you may need to increase this number further. The maximum number of locks is 256,000. The Max # of Logical Logs must also be changed to 256.</LT.LIST.TEXT
  6519. ><LT.LIST.TEXT>Your screen should look similar to the following when complete:</LT.LIST.TEXT
  6520. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00014.unk" origfile="pics/inf_shm.gif" origtype="X" origdoc="../../sources/igun/informix.fm5.mif"></RBW-GRAPHIC
  6521. ></FA2.FIGURE.ANCHOR.2
  6522. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  6523. ></RBW-AUTOGEN
  6524. >For D&truehy;UX, the Stack Size should be 64.</N2.NOTE.2
  6525. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  6526. ></RBW-AUTOGEN
  6527. ></RBW-MARKER
  6528. ><RBW-PARABODY>Press ESC again to record the changes.</RBW-PARABODY
  6529. ></LN.LIST.NUM
  6530. ><LT.LIST.TEXT>The onmonitor utility will respond with:</LT.LIST.TEXT
  6531. ><EWM.EXAMPLEW.MONO>Do you want to keep these changes to the parameters? (y/n)</EWM.EXAMPLEW.MONO
  6532. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  6533. ></RBW-AUTOGEN
  6534. ></RBW-MARKER
  6535. ><RBW-PARABODY>Respond y.</RBW-PARABODY
  6536. ></LN.LIST.NUM
  6537. ><LT.LIST.TEXT>Onmonitor will show messages similar to the following:</LT.LIST.TEXT
  6538. ><EWM.EXAMPLEW.MONO>WARNING: A critical shared memory parameter has just been modified.</EWM.EXAMPLEW.MONO
  6539. ><EWM.EXAMPLEW.MONO>Please make note of the changes made.</EWM.EXAMPLEW.MONO
  6540. ><EWM.EXAMPLEW.MONO>Press Return to continue.</EWM.EXAMPLEW.MONO
  6541. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  6542. ></RBW-AUTOGEN
  6543. ></RBW-MARKER
  6544. ><RBW-PARABODY>Press Return to continue.</RBW-PARABODY
  6545. ></LN.LIST.NUM
  6546. ><LT.LIST.TEXT>The <RBWAUTO-0005>Performance</RBWAUTO-0005
  6547. > screen will come up. There are no parameters to change here.</LT.LIST.TEXT
  6548. ><LT.LIST.TEXT>The screen looks like this:</LT.LIST.TEXT
  6549. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00015.unk" origfile="pics/inf_perf.gif" origtype="X" origdoc="../../sources/igun/informix.fm5.mif"></RBW-GRAPHIC
  6550. ></FA2.FIGURE.ANCHOR.2
  6551. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  6552. ></RBW-AUTOGEN
  6553. >For D&truehy;UX, the Num of LRUS queues should be 8.</N2.NOTE.2
  6554. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  6555. ></RBW-AUTOGEN
  6556. ></RBW-MARKER
  6557. ><RBW-PARABODY>Hit escape.</RBW-PARABODY
  6558. ></LN.LIST.NUM
  6559. ><LT.LIST.TEXT>The next screen is data replication. Change Lost & Found to the proper directory for your Informix installation, (or any valid directory), and hit Return.</LT.LIST.TEXT
  6560. ><LT.LIST.TEXT>The screen looks like this:</LT.LIST.TEXT
  6561. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00016.unk" origfile="pics/inf_drep.gif" origtype="X" origdoc="../../sources/igun/informix.fm5.mif"></RBW-GRAPHIC
  6562. ></FA2.FIGURE.ANCHOR.2
  6563. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  6564. ></RBW-AUTOGEN
  6565. ></RBW-MARKER
  6566. ><RBW-PARABODY>Press Escape</RBW-PARABODY
  6567. ></LN.LIST.NUM
  6568. ><LT.LIST.TEXT>Onmonitor will show the following message:</LT.LIST.TEXT
  6569. ><EWM.EXAMPLEW.MONO>Do you want to keep these changes to the parameters? (y/n)</EWM.EXAMPLEW.MONO
  6570. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  6571. ></RBW-AUTOGEN
  6572. ></RBW-MARKER
  6573. ><RBW-PARABODY>Respond y.</RBW-PARABODY
  6574. ></LN.LIST.NUM
  6575. ><LT.LIST.TEXT>The next screen is <RBWAUTO-0005>Diagnostics</RBWAUTO-0005
  6576. >. The Console Msgs. parameters should be changed so that messages written to console will instead be written to a file, (e.g. /usr/informix/console.log).</LT.LIST.TEXT
  6577. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00017.unk" origfile="pics/inf_diag.gif" origtype="X" origdoc="../../sources/igun/informix.fm5.mif"></RBW-GRAPHIC
  6578. ></FA2.FIGURE.ANCHOR.2
  6579. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  6580. ></RBW-AUTOGEN
  6581. ></RBW-MARKER
  6582. ><RBW-PARABODY>Press Escape.</RBW-PARABODY
  6583. ></LN.LIST.NUM
  6584. ><LT.LIST.TEXT>Onmonitor will show the following message:</LT.LIST.TEXT
  6585. ><EWM.EXAMPLEW.MONO>Do you want to keep these changes to the parameters? (y/n)</EWM.EXAMPLEW.MONO
  6586. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  6587. ></RBW-AUTOGEN
  6588. ></RBW-MARKER
  6589. ><RBW-PARABODY>Respond y</RBW-PARABODY
  6590. ></LN.LIST.NUM
  6591. ><LT.LIST.TEXT>The next screen is <RBWAUTO-0005>PDQ</RBWAUTO-0005
  6592. >. No changes are necessary in this screen. The screen looks like this:</LT.LIST.TEXT
  6593. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00018.unk" origfile="pics/inf_pdq.gif" origtype="X" origdoc="../../sources/igun/informix.fm5.mif"></RBW-GRAPHIC
  6594. ></FA2.FIGURE.ANCHOR.2
  6595. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  6596. ></RBW-AUTOGEN
  6597. ></RBW-MARKER
  6598. ><RBW-PARABODY>Press ESC</RBW-PARABODY
  6599. ></LN.LIST.NUM
  6600. ><LT.LIST.TEXT>Onmonitor will show the following message:</LT.LIST.TEXT
  6601. ><EM.EXAMPLE.MONO>Do you really want to continue? (y/n)</EM.EXAMPLE.MONO
  6602. ><EM.EXAMPLE.MONO>WARNING: The ROOT DBspace will be initialized.</EM.EXAMPLE.MONO
  6603. ><EM.EXAMPLE.MONO>All previous data will be destroyed.</EM.EXAMPLE.MONO
  6604. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  6605. ></RBW-AUTOGEN
  6606. >If you are reinstalling, and some databases exist, answering <RBWAUTO-0005>yes</RBWAUTO-0005
  6607. > will destroy them. For a new install, it is safe to answer <RBWAUTO-0005>yes</RBWAUTO-0005
  6608. >, because no data was created before.</N.NOTE
  6609. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  6610. ></RBW-AUTOGEN
  6611. ></RBW-MARKER
  6612. ><RBW-PARABODY>Respond y.</RBW-PARABODY
  6613. ></LN.LIST.NUM
  6614. ><LT.LIST.TEXT>Onmonitor will show the following message:</LT.LIST.TEXT
  6615. ><EM.EXAMPLE.MONO>Initializing, please wait...</EM.EXAMPLE.MONO
  6616. ><EM.EXAMPLE.MONO>Press Return to continue.</EM.EXAMPLE.MONO
  6617. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  6618. ></RBW-AUTOGEN
  6619. ></RBW-MARKER
  6620. ><RBW-PARABODY>Press Return.</RBW-PARABODY
  6621. ></LN.LIST.NUM
  6622. ><LT.LIST.TEXT>Onmonitor will show the following message:</LT.LIST.TEXT
  6623. ><EM.EXAMPLE.MONO>Recovering please wait...</EM.EXAMPLE.MONO
  6624. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>16&rbwtab;</CX5FX5FZLIST.NUMBER
  6625. ></RBW-AUTOGEN
  6626. ></RBW-MARKER
  6627. ><RBW-PARABODY>Onmonitor will return to the Parameters menu and Informix will be in quiescent mode. (See the status bar &truehy;&truehy;&truehy;&truehy;&truehy;). </RBW-PARABODY
  6628. ></LN.LIST.NUM
  6629. ><LT.LIST.TEXT>To bring Informix from Quiescent to Online, make the following menu choices: Exit, Mode, On&truehy;Line. Informix will now be in On&truehy;Line mode. (See the status bar &truehy;&truehy;&truehy;&truehy;&truehy;).</LT.LIST.TEXT
  6630. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>17&rbwtab;</CX5FX5FZLIST.NUMBER
  6631. ></RBW-AUTOGEN
  6632. ></RBW-MARKER
  6633. ><RBW-PARABODY>Exit onmonitor with the following two menu choices:</RBW-PARABODY
  6634. ></LN.LIST.NUM
  6635. ><EM.EXAMPLE.MONO>Exit, Exit</EM.EXAMPLE.MONO
  6636. ><LT.LIST.TEXT>Note: All the parameter values are stored in the $INFORMIXDIR/etc/onconfig file. After installation some of these parameters can be changed, manually or through onmonitor.</LT.LIST.TEXT
  6637. ></LABEL
  6638. ></SUBSECTION
  6639. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15947"></RBW-ANCHOR
  6640. >Testing Informix Online</SS.SUBSEC.HEAD
  6641. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6642. >How to test Informix Online</L.LABEL
  6643. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6644. ></RBW-AUTOGEN
  6645. ></RBW-MARKER
  6646. ><RBW-PARABODY>To test Informix OnLine:</RBW-PARABODY
  6647. ></P.PROCEDURE
  6648. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6649. ></RBW-AUTOGEN
  6650. ></RBW-MARKER
  6651. ><RBW-PARABODY>Start up dbaccess (found in $INFORMIXDIR/bin)</RBW-PARABODY
  6652. ></LN.LIST.NUM
  6653. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6654. ></RBW-AUTOGEN
  6655. ></RBW-MARKER
  6656. ><RBW-PARABODY>Create an empty database by selecting Database | Create.</RBW-PARABODY
  6657. ></LN.LIST.NUM
  6658. ><LT.LIST.TEXT>Fill in “test” and press Return.</LT.LIST.TEXT
  6659. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6660. ></RBW-AUTOGEN
  6661. ></RBW-MARKER
  6662. ><RBW-PARABODY>Select Exit from the Create Database menu</RBW-PARABODY
  6663. ></LN.LIST.NUM
  6664. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  6665. ></RBW-AUTOGEN
  6666. ></RBW-MARKER
  6667. ><RBW-PARABODY>Select Create&truehy;New&truehy;Database.</RBW-PARABODY
  6668. ></LN.LIST.NUM
  6669. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  6670. ></RBW-AUTOGEN
  6671. ></RBW-MARKER
  6672. ><RBW-PARABODY>Select Exit</RBW-PARABODY
  6673. ></LN.LIST.NUM
  6674. ><LT.LIST.TEXT>The status bar shows that the database test is currently being used.</LT.LIST.TEXT
  6675. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  6676. ></RBW-AUTOGEN
  6677. ></RBW-MARKER
  6678. ><RBW-PARABODY>Close the database by selecting Close.</RBW-PARABODY
  6679. ></LN.LIST.NUM
  6680. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  6681. ></RBW-AUTOGEN
  6682. ></RBW-MARKER
  6683. ><RBW-PARABODY>To drop the test database, select Drop.</RBW-PARABODY
  6684. ></LN.LIST.NUM
  6685. ><LT.LIST.TEXT>Select the test database and press Return.</LT.LIST.TEXT
  6686. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  6687. ></RBW-AUTOGEN
  6688. ></RBW-MARKER
  6689. ><RBW-PARABODY>You are asked if you want to drop the database. Answer Yes. </RBW-PARABODY
  6690. ></LN.LIST.NUM
  6691. ><LT.LIST.TEXT>The dbaccess utility answers with “Database Dropped”.</LT.LIST.TEXT
  6692. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  6693. ></RBW-AUTOGEN
  6694. >Do NOT drop the sysmaster database. This will destroy your informix installation.</N.NOTE
  6695. ><B.BODY>If you see any error messages during this test, or if this test fails for any reason, please check the installation steps and the Informix OnLine release notes. The Informix OnLine release notes are listed in the $INFORMIXDIR/release/ONLINE_7.x file. Most errors are a result of operating system resource limitations (e.g., shared memory)</B.BODY
  6696. ></LABEL
  6697. ></SUBSECTION
  6698. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22747"></RBW-ANCHOR
  6699. >Shutting Down Informix On&truehy;Line</SS.SUBSEC.HEAD
  6700. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6701. >How to shut down Informix OnLine</L.LABEL
  6702. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6703. ></RBW-AUTOGEN
  6704. ></RBW-MARKER
  6705. ><RBW-PARABODY>To shut down Informix On&truehy;Line:</RBW-PARABODY
  6706. ></P.PROCEDURE
  6707. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6708. ></RBW-AUTOGEN
  6709. ></RBW-MARKER
  6710. ><RBW-PARABODY>Enter the following command:</RBW-PARABODY
  6711. ></LN.LIST.NUM
  6712. ><EM.EXAMPLE.MONO>$INFORMIXDIR/bin/onmode &truehy;ky</EM.EXAMPLE.MONO
  6713. ><LT.LIST.TEXT>Or in onmonitor, select Mode | Graceful&truehy;Shutdown. </LT.LIST.TEXT
  6714. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6715. ></RBW-AUTOGEN
  6716. ></RBW-MARKER
  6717. ><RBW-PARABODY>Onmonitor asks if you want to shut down. Answer Yes.</RBW-PARABODY
  6718. ></LN.LIST.NUM
  6719. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6720. ></RBW-AUTOGEN
  6721. ></RBW-MARKER
  6722. ><RBW-PARABODY>Select Take&truehy;Offline.</RBW-PARABODY
  6723. ></LN.LIST.NUM
  6724. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  6725. ></RBW-AUTOGEN
  6726. ></RBW-MARKER
  6727. ><RBW-PARABODY>Onmonitor asks if you want to shutdown. Answer Yes.</RBW-PARABODY
  6728. ></LN.LIST.NUM
  6729. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  6730. ></RBW-AUTOGEN
  6731. ></RBW-MARKER
  6732. ><RBW-PARABODY>Select Exit, Exit to exit onmonitor.</RBW-PARABODY
  6733. ></LN.LIST.NUM
  6734. ></LABEL
  6735. ></SUBSECTION
  6736. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35914"></RBW-ANCHOR
  6737. >Bringing Informix Online</SS.SUBSEC.HEAD
  6738. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6739. >How to bring Informix online</L.LABEL
  6740. ><B.BODY>You can bring Informix online via the command line or using onmonitor.</B.BODY
  6741. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6742. ></RBW-AUTOGEN
  6743. ></RBW-MARKER
  6744. ><RBW-PARABODY>To bring Informix online via the command line:</RBW-PARABODY
  6745. ></P.PROCEDURE
  6746. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6747. ></RBW-AUTOGEN
  6748. ></RBW-MARKER
  6749. ><RBW-PARABODY>Enter either of the following commands:</RBW-PARABODY
  6750. ></LN.LIST.NUM
  6751. ><EM.EXAMPLE.MONO>$INFORMIXDIR/bin/oninit &truehy;y</EM.EXAMPLE.MONO
  6752. ><LT.LIST.TEXT>Or </LT.LIST.TEXT
  6753. ><EM.EXAMPLE.MONO>$INFORMIXDIR/bin/<CX5FX5FCODE>oninit &truehy;s</CX5FX5FCODE
  6754. ></EM.EXAMPLE.MONO
  6755. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6756. ></RBW-AUTOGEN
  6757. ></RBW-MARKER
  6758. ><RBW-PARABODY>Enter $INFORMIXDIR/bin/onmode &truehy;m</RBW-PARABODY
  6759. ></LN.LIST.NUM
  6760. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  6761. ></RBW-AUTOGEN
  6762. ></RBW-MARKER
  6763. ><RBW-PARABODY>To bring Informix online via onmonitor:</RBW-PARABODY
  6764. ></P.PROCEDURE
  6765. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6766. ></RBW-AUTOGEN
  6767. ></RBW-MARKER
  6768. ><RBW-PARABODY>Select Mode | Startup.</RBW-PARABODY
  6769. ></LN.LIST.NUM
  6770. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6771. ></RBW-AUTOGEN
  6772. ></RBW-MARKER
  6773. ><RBW-PARABODY>Press Return to continue and then select On&truehy;Line.</RBW-PARABODY
  6774. ></LN.LIST.NUM
  6775. ></LABEL
  6776. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6777. >How to start and stop the Informix server automatically (Solaris)</L.LABEL
  6778. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6779. ></RBW-AUTOGEN
  6780. ></RBW-MARKER
  6781. ><RBW-PARABODY>After you install ObjectTeam, login as root and copy the file M4_home/etc/informix to /etc/init.d/informix.</RBW-PARABODY
  6782. ></LN.LIST.NUM
  6783. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6784. ></RBW-AUTOGEN
  6785. ></RBW-MARKER
  6786. ><RBW-PARABODY>Edit /etc/init.d/informix and set the value of INFORMIXDIR.</RBW-PARABODY
  6787. ></LN.LIST.NUM
  6788. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6789. ></RBW-AUTOGEN
  6790. ></RBW-MARKER
  6791. ><RBW-PARABODY>Create executable links to your informix file:</RBW-PARABODY
  6792. ></LN.LIST.NUM
  6793. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/informix /etc/rc3.d/S18informix</EM.EXAMPLE.MONO
  6794. ><EM.EXAMPLE.MONO>ln &truehy;s /etc/init.d/informix /etc/rc0.d/K20informix</EM.EXAMPLE.MONO
  6795. ></LABEL
  6796. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6797. >How to start and stop the Informix server automatically (HP&truehy;UX)</L.LABEL
  6798. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6799. ></RBW-AUTOGEN
  6800. ></RBW-MARKER
  6801. ><RBW-PARABODY>After you install ObjectTeam, login as root and copy the file M4_home/etc/informix to /sbin/init.d </RBW-PARABODY
  6802. ></LN.LIST.NUM
  6803. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6804. ></RBW-AUTOGEN
  6805. ></RBW-MARKER
  6806. ><RBW-PARABODY>Edit /sbin/init.d/informix and set the value of INFORMIXDIR.</RBW-PARABODY
  6807. ></LN.LIST.NUM
  6808. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6809. ></RBW-AUTOGEN
  6810. ></RBW-MARKER
  6811. ><RBW-PARABODY>Create executable links to your informix file:</RBW-PARABODY
  6812. ></LN.LIST.NUM
  6813. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/informix /sbin/rc2.d/S718informix</EM.EXAMPLE.MONO
  6814. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/informix /sbin/rc0.d/K720informix</EM.EXAMPLE.MONO
  6815. ></LABEL
  6816. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6817. >How to start and stop the Informix server automatically (AIX)</L.LABEL
  6818. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6819. ></RBW-AUTOGEN
  6820. ></RBW-MARKER
  6821. ><RBW-PARABODY>After you install ObjectTeam, login as root and copy the file M4_home/etc/informix to /etc/rc.informix. </RBW-PARABODY
  6822. ></LN.LIST.NUM
  6823. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6824. ></RBW-AUTOGEN
  6825. ></RBW-MARKER
  6826. ><RBW-PARABODY>Edit /etc/rc.informix and set the value of INFORMIXDIR.</RBW-PARABODY
  6827. ></LN.LIST.NUM
  6828. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6829. ></RBW-AUTOGEN
  6830. ></RBW-MARKER
  6831. ><RBW-PARABODY>Add the following lines to /etc/inittab:</RBW-PARABODY
  6832. ></LN.LIST.NUM
  6833. ><EM.EXAMPLE.MONO>informix:2:once: sh /etc/rc.informix start</EM.EXAMPLE.MONO
  6834. ><EM.EXAMPLE.MONO>informix:0:once: sh /etc/rc.informix stop</EM.EXAMPLE.MONO
  6835. ></LABEL
  6836. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6837. >How to start and stop the Informix server automatically (D&truehy;UX)</L.LABEL
  6838. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6839. ></RBW-AUTOGEN
  6840. ></RBW-MARKER
  6841. ><RBW-PARABODY>After you install ObjectTeam, login as root and copy the file M4_home/etc/informix to /sbin/init.d </RBW-PARABODY
  6842. ></LN.LIST.NUM
  6843. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6844. ></RBW-AUTOGEN
  6845. ></RBW-MARKER
  6846. ><RBW-PARABODY>Edit /sbin/init.d/informix and set the value of INFORMIXDIR.</RBW-PARABODY
  6847. ></LN.LIST.NUM
  6848. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6849. ></RBW-AUTOGEN
  6850. ></RBW-MARKER
  6851. ><RBW-PARABODY>Create executable links to your informix file:</RBW-PARABODY
  6852. ></LN.LIST.NUM
  6853. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/informix /sbin/rc3.d/S18informix</EM.EXAMPLE.MONO
  6854. ><EM.EXAMPLE.MONO>ln &truehy;s /sbin/init.d/informix /sbin/rc0.d/K20informix</EM.EXAMPLE.MONO
  6855. ></LABEL
  6856. ></SUBSECTION
  6857. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33681"></RBW-ANCHOR
  6858. >Troubleshooting</SS.SUBSEC.HEAD
  6859. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6860. >Situation</L.LABEL
  6861. ><B.BODY>If you get the error:</B.BODY
  6862. ><EM.EXAMPLE.MONO>fatal error in shared memory initialization </EM.EXAMPLE.MONO
  6863. ><B.BODY>check the error log ~informix/online.log for more information.</B.BODY
  6864. ></LABEL
  6865. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6866. >Situation</L.LABEL
  6867. ><B.BODY>You get the following error when starting the Informix server either from within onmonitor or on the command line with the oninit &truehy;y command:</B.BODY
  6868. ><EM.EXAMPLE.MONO>Fatal error in shared memory initialization.</EM.EXAMPLE.MONO
  6869. ><B.BODY>Check the following items:</B.BODY
  6870. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6871. ></RBW-AUTOGEN
  6872. ></RBW-MARKER
  6873. ><RBW-PARABODY>On Solaris, add the following statements to the etc/system file (if they are not already in it), and reboot the node.</RBW-PARABODY
  6874. ></LN.LIST.NUM
  6875. ><EM.EXAMPLE.MONO>set enable_sm_wa = 1</EM.EXAMPLE.MONO
  6876. ><EM.EXAMPLE.MONO>set shmsys:shminfo_shmmax=268435456</EM.EXAMPLE.MONO
  6877. ><EM.EXAMPLE.MONO>set semsys:seminfo_semmap=64</EM.EXAMPLE.MONO
  6878. ><EM.EXAMPLE.MONO>set semsys:seminfo_semmni=4096</EM.EXAMPLE.MONO
  6879. ><EM.EXAMPLE.MONO>set semsys:seminfo_semmns=4096</EM.EXAMPLE.MONO
  6880. ><EM.EXAMPLE.MONO>set semsys:seminfo_semmnu=4096</EM.EXAMPLE.MONO
  6881. ><EM.EXAMPLE.MONO>set semsys:seminfo_semume=64</EM.EXAMPLE.MONO
  6882. ><EM.EXAMPLE.MONO>set shmsys:shminfo_shmmin=100</EM.EXAMPLE.MONO
  6883. ><EM.EXAMPLE.MONO>set shmsys:shminfo_shmmni=100</EM.EXAMPLE.MONO
  6884. ><EM.EXAMPLE.MONO>set shmsys:shminfo_shmseg=100</EM.EXAMPLE.MONO
  6885. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  6886. ></RBW-AUTOGEN
  6887. >You can copy these lines from the ~informix/release/ONLINE_7.x file.</N.NOTE
  6888. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6889. ></RBW-AUTOGEN
  6890. ></RBW-MARKER
  6891. ><RBW-PARABODY>Check that the INFORMIXSERVER environment variable is set.</RBW-PARABODY
  6892. ></LN.LIST.NUM
  6893. ></LABEL
  6894. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6895. >Situation</L.LABEL
  6896. ><B.BODY>You get the following message after running ./installonline, or running any Informix utilities like tbinit, tbmonitor, or dbaccess:</B.BODY
  6897. ><EWM.EXAMPLEW.MONO>Unknown error message number '32766' Installation failed. </EWM.EXAMPLEW.MONO
  6898. ><B.BODY>You don't have the environment variable INFORMIXDIR set. This variable should point to the Informix directory that was created during the installation. You should also ensure that the informix/bin directory is in the path. See How to install Informix files on page C–2 for details on setting these variables. </B.BODY
  6899. ></LABEL
  6900. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6901. >Situation</L.LABEL
  6902. ><B.BODY>When trying to bring Informix online you get an error message that the network is down OR when running dbaccess you get an error that the network is not trusted.</B.BODY
  6903. ><B.BODY>To fix this, add the node names for the server (and clients, if applicable) to the /etc/hosts.equiv file on the machine running the Informix server.</B.BODY
  6904. ><B.BODY>Note that the entries should contain the fully qualified name of the machine.</B.BODY
  6905. ></LABEL
  6906. ></SUBSECTION
  6907. ></SECTION
  6908. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17638"></RBW-ANCHOR
  6909. >Setting Up Informix Client</S.SECTION.HEAD
  6910. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6911. >Configuring the Informix Client</L.LABEL
  6912. ><B.BODY>Machines set up as an ObjectTeam Master server or Slave server need to be configured as an Informix client if the Informix server installation is located on another host. </B.BODY
  6913. ><B.BODY>If you are installing ObjectTeam under Solaris or HP&truehy;UX, you can either mount the Informix file system on the Master server and any Slave servers, or install the Informix product files on the Master server and any Slave servers.</B.BODY
  6914. ><B.BODY>If you are installing ObjectTeam under D&truehy;UX or AIX, you must install the Informix product files on the ObjectTeam Master server and any Slave servers.</B.BODY
  6915. ><B.BODY>This section describes how to set up a locally installed Informix client.</B.BODY
  6916. ></LABEL
  6917. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6918. >Before you start</L.LABEL
  6919. ><B.BODY>The Master server must have an entry in its .rhosts or /etc/hosts.equiv file that permits the user informix on the Slave server to start a remote shell on the Master server. </B.BODY
  6920. ></LABEL
  6921. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  6922. >How to set up an Informix Client</L.LABEL
  6923. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  6924. ></RBW-AUTOGEN
  6925. ></RBW-MARKER
  6926. ><RBW-PARABODY>Log in to the Slave server as informix</RBW-PARABODY
  6927. ></LN.LIST.NUM
  6928. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  6929. ></RBW-AUTOGEN
  6930. ></RBW-MARKER
  6931. ><RBW-PARABODY>Add the following variables to your environment variables file:</RBW-PARABODY
  6932. ></LN.LIST.NUM
  6933. ><LT.LIST.TEXT>Bourne shell: </LT.LIST.TEXT
  6934. ><EM.EXAMPLE.MONO>INFORMIXDIR=/usr/informix</EM.EXAMPLE.MONO
  6935. ><EM.EXAMPLE.MONO>export INFORMIXDIR</EM.EXAMPLE.MONO
  6936. ><EM.EXAMPLE.MONO>PATH=$PATH:$INFORMIXDIR/bin</EM.EXAMPLE.MONO
  6937. ><EM.EXAMPLE.MONO>export PATH</EM.EXAMPLE.MONO
  6938. ><EM.EXAMPLE.MONO>INFORMIXSERVER=<CX5FX5FTERM>server</CX5FX5FTERM
  6939. ></EM.EXAMPLE.MONO
  6940. ><EM.EXAMPLE.MONO>export INFORMIXSERVER</EM.EXAMPLE.MONO
  6941. ><LT.LIST.TEXT>C shell:</LT.LIST.TEXT
  6942. ><EM.EXAMPLE.MONO>setenv INFORMIXDIR /usr/informix</EM.EXAMPLE.MONO
  6943. ><EM.EXAMPLE.MONO>setenv PATH ${PATH}:${INFORMIXDIR}/bin</EM.EXAMPLE.MONO
  6944. ><EM.EXAMPLE.MONO>setenv INFORMIXSERVER <CX5FX5FTERM>server</CX5FX5FTERM
  6945. ></EM.EXAMPLE.MONO
  6946. ><LT.LIST.TEXT>Replace <CX5FX5FTERM>server</CX5FX5FTERM
  6947. > with the name of the machine on which you installed the Informix files. </LT.LIST.TEXT
  6948. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  6949. ></RBW-AUTOGEN
  6950. ></RBW-MARKER
  6951. ><RBW-PARABODY>Activate these settings by:</RBW-PARABODY
  6952. ></LN.LIST.NUM
  6953. ><LT.LIST.TEXT>Bourne shell:</LT.LIST.TEXT
  6954. ><EM.EXAMPLE.MONO>. ./.profile</EM.EXAMPLE.MONO
  6955. ><LT.LIST.TEXT>C shell:</LT.LIST.TEXT
  6956. ><EM.EXAMPLE.MONO>source .cshrc</EM.EXAMPLE.MONO
  6957. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  6958. ></RBW-AUTOGEN
  6959. ></RBW-MARKER
  6960. ><RBW-PARABODY><CX5FX5FFILE.NAME>Solaris only:</CX5FX5FFILE.NAME
  6961. > The preferred network connection type between Informix and the database server is onipcstr. To set this up, edit the $INFORMIXDIR/etc/onconfig file and add the line:</RBW-PARABODY
  6962. ></LN.LIST.NUM
  6963. ><EM.EXAMPLE.MONO>NETTYPE &rbwtab;&rbwtab;ipcstr,,, #Configure poll thread(s) for nettype</EM.EXAMPLE.MONO
  6964. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  6965. ></RBW-AUTOGEN
  6966. ></RBW-MARKER
  6967. ><RBW-PARABODY>Edit the $INFORMIXDIR/etc/sqlhosts file and add the following line:</RBW-PARABODY
  6968. ></LN.LIST.NUM
  6969. ><EM.EXAMPLE.MONO><CX5FX5FTERM>server     </CX5FX5FTERM
  6970. > <CX5FX5FTERM>nettype     </CX5FX5FTERM
  6971. ><CX5FX5FTERM> hostname     </CX5FX5FTERM
  6972. ><CX5FX5FTERM> service_name</CX5FX5FTERM
  6973. ></EM.EXAMPLE.MONO
  6974. ><LT.LIST.TEXT>where:</LT.LIST.TEXT
  6975. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  6976. ></RBW-AUTOGEN
  6977. ></RBW-MARKER
  6978. ><RBW-PARABODY>The first column is the server name (default is the hostname).</RBW-PARABODY
  6979. ></LN2.LIST.NUM.2
  6980. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  6981. ></RBW-AUTOGEN
  6982. ></RBW-MARKER
  6983. ><RBW-PARABODY>The second column is the nettype. For Solaris, this is onipcstr. For HP&truehy;UX, D&truehy;UX and AIX, it is onsoctcp.</RBW-PARABODY
  6984. ></LN2.LIST.NUM.2
  6985. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  6986. ></RBW-AUTOGEN
  6987. ></RBW-MARKER
  6988. ><RBW-PARABODY>The third column is the hostname where the Informix server will run.</RBW-PARABODY
  6989. ></LN2.LIST.NUM.2
  6990. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>d&rbwtab;</CX5FX5FZLIST.NUMBER
  6991. ></RBW-AUTOGEN
  6992. ></RBW-MARKER
  6993. ><RBW-PARABODY>The fourth column is the service name, which is placed in /etc/services.</RBW-PARABODY
  6994. ></LN2.LIST.NUM.2
  6995. ><LT.LIST.TEXT>Example for Solaris:</LT.LIST.TEXT
  6996. ><EM.EXAMPLE.MONO>poseidon      onipcstr      poseidon      sqlexec</EM.EXAMPLE.MONO
  6997. ><LT.LIST.TEXT>where <CX5FX5FTERM>poseidon</CX5FX5FTERM
  6998. > is the name of the server. The name must be the host name of the server, and not its nickname.</LT.LIST.TEXT
  6999. ><LT.LIST.TEXT>Example for HP&truehy;UX, D&truehy;UX, and AIX:</LT.LIST.TEXT
  7000. ><EM.EXAMPLE.MONO>poseidon      onsoctcp      poseidon      sqlexec</EM.EXAMPLE.MONO
  7001. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  7002. ></RBW-AUTOGEN
  7003. ></RBW-MARKER
  7004. ><RBW-PARABODY>Add the following line to the /etc/services or /etc/inet/services file:</RBW-PARABODY
  7005. ></LN.LIST.NUM
  7006. ><EM.EXAMPLE.MONO>sqlexec      1225/tcp       # Informix Server</EM.EXAMPLE.MONO
  7007. ><LT.LIST.TEXT>If you are running NIS or NIS+, this file may be on another node in your network, the one that maintains a global services file.</LT.LIST.TEXT
  7008. ><LT.LIST.TEXT>You should verify that socket 1225 is not being used for another service.</LT.LIST.TEXT
  7009. ><LR.LIST.RESULT>Set up of the Informix client is complete.</LR.LIST.RESULT
  7010. ><RBWAUTO-0001></RBWAUTO-0001
  7011. ><!--
  7012.  
  7013.  
  7014.  
  7015.  
  7016.  
  7017. CONVERTING SOURCE FILE ../../sources/igun/iguntrbl.fm5.mif
  7018.  
  7019.  
  7020. --><B.BODY></B.BODY
  7021. ><B.BODY></B.BODY
  7022. ><B.BODY></B.BODY
  7023. ><B.BODY></B.BODY
  7024. ><B.BODY></B.BODY
  7025. ></LABEL
  7026. ></SECTION
  7027. ></APPENDIX
  7028. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix D&rbwtab;</CX5FX5FZCHAPTER.NUM
  7029. ></RBW-AUTOGEN
  7030. ><RBW-ANCHOR ID="20431"></RBW-ANCHOR
  7031. >Troubleshooting</A.APPENDIX.HEAD
  7032. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7033. >Introduction</L.LABEL
  7034. ><B.BODY>If something fails during the installation, the best solution is to uninstall ObjectTeam and run the setup program again. </B.BODY
  7035. ></LABEL
  7036. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7037. >Error messages</L.LABEL
  7038. ><B.BODY>Many errors start with the message “Cannot initialize client context”. The important lines to look at are the last two or three lines. These usually contain some clear indication of the cause of the problem.</B.BODY
  7039. ><B.BODY>When troubleshooting, be aware that some error messages only pop up after a timeout limit has been reached. These are usually set to one minute. If nothing happens, wait at least this time before taking action.</B.BODY
  7040. ></LABEL
  7041. ><SECTION><S.SECTION.HEAD>Changes Made During Installation</S.SECTION.HEAD
  7042. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7043. >Introduction</L.LABEL
  7044. ><B.BODY>Depending on the installation:</B.BODY
  7045. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7046. ></RBW-AUTOGEN
  7047. ></RBW-MARKER
  7048. ><RBW-PARABODY>Environment variables are set in your login file.</RBW-PARABODY
  7049. ></LB.LIST.BULLET
  7050. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7051. ></RBW-AUTOGEN
  7052. ></RBW-MARKER
  7053. ><RBW-PARABODY>ObjectTeam configuration files are created</RBW-PARABODY
  7054. ></LB.LIST.BULLET
  7055. ></LABEL
  7056. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7057. >Changes made in a Master server or standalone installation</L.LABEL
  7058. ><B.BODY>Edit your .M4_login or .M4_profile file in a text editor. The following settings are made for a Master server installation:</B.BODY
  7059. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7060. ></RBW-AUTOGEN
  7061. ></RBW-MARKER
  7062. ><RBW-PARABODY>The variable M4_home is set as an environment variable. All ObjectTeam tools use this variable. The default value is /usr/cayenne/objectteam.</RBW-PARABODY
  7063. ></LB.LIST.BULLET
  7064. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7065. ></RBW-AUTOGEN
  7066. ></RBW-MARKER
  7067. ><RBW-PARABODY>$M4_home/bin is added to your PATH.</RBW-PARABODY
  7068. ></LB.LIST.BULLET
  7069. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7070. ></RBW-AUTOGEN
  7071. ></RBW-MARKER
  7072. ><RBW-PARABODY>The file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  7073. >/etc/objservers.objservers is modified when you create a repository. For more details, see the <CX5FX5FTITLE>ObjectTeam System Administrator’s Guide</CX5FX5FTITLE
  7074. ><CX5FX5FTITLE></CX5FX5FTITLE
  7075. ><CX5FX5FTERM> for UNIX&truehy;based Systems</CX5FX5FTERM
  7076. >.</RBW-PARABODY
  7077. ></LB.LIST.BULLET
  7078. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7079. ></RBW-AUTOGEN
  7080. ></RBW-MARKER
  7081. ><RBW-PARABODY>The file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  7082. >/etc/m4env.m4env is created with the following ObjectTeam M4 variables:</RBW-PARABODY
  7083. ></LB.LIST.BULLET
  7084. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="174p"><COLSPEC COLNAME="2" COLWIDTH="255p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  7085. ></ENTRY
  7086. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set to</CELLHEADING
  7087. ></ENTRY
  7088. ></RBW-ROW
  7089. ></THEAD
  7090. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_levelpath</CELLBODY
  7091. ></ENTRY
  7092. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of your repository</CELLBODY
  7093. ></ENTRY
  7094. ></RBW-ROW
  7095. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_brokerport</CELLBODY
  7096. ></ENTRY
  7097. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Port on which broker is contacted. Default is 1825.</CELLBODY
  7098. ></ENTRY
  7099. ></RBW-ROW
  7100. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_imphost</CELLBODY
  7101. ></ENTRY
  7102. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Machine running the ObjectTeam software.</CELLBODY
  7103. ></ENTRY
  7104. ></RBW-ROW
  7105. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_fm_international </CELLBODY
  7106. ><CELLBODY>M4_ps_page_h</CELLBODY
  7107. ><CELLBODY>M4_ps_page_w</CELLBODY
  7108. ><CELLBODY>M4_a_printer_plen</CELLBODY
  7109. ><CELLBODY>M4_lc_ctype</CELLBODY
  7110. ><CELLBODY>M4_lc_collate</CELLBODY
  7111. ><CELLBODY>M4_ps_printer </CELLBODY
  7112. ></ENTRY
  7113. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Various internationalization and printing&truehy;related variables.</CELLBODY
  7114. ></ENTRY
  7115. ></RBW-ROW
  7116. ></TBODY
  7117. ></TGROUP
  7118. ></RBW-TABLE
  7119. ></LABEL
  7120. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7121. >Changes made in a Slave server installation</L.LABEL
  7122. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7123. ></RBW-AUTOGEN
  7124. ></RBW-MARKER
  7125. ><RBW-PARABODY>The variable M4_home is set as an environment variable. All ObjectTeam tools use this variable. The default value is /usr/cayenne/obejctteam.</RBW-PARABODY
  7126. ></LB.LIST.BULLET
  7127. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7128. ></RBW-AUTOGEN
  7129. ></RBW-MARKER
  7130. ><RBW-PARABODY>The file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  7131. >/etc/m4env.m4env is created with the following ObjectTeam M4 variables:</RBW-PARABODY
  7132. ></LB.LIST.BULLET
  7133. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="174p"><COLSPEC COLNAME="2" COLWIDTH="255p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  7134. ></ENTRY
  7135. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set to</CELLHEADING
  7136. ></ENTRY
  7137. ></RBW-ROW
  7138. ></THEAD
  7139. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_levelpath</CELLBODY
  7140. ></ENTRY
  7141. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of your repository</CELLBODY
  7142. ></ENTRY
  7143. ></RBW-ROW
  7144. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_nameserverhost</CELLBODY
  7145. ></ENTRY
  7146. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The machine running as Master server.</CELLBODY
  7147. ></ENTRY
  7148. ></RBW-ROW
  7149. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_brokerport</CELLBODY
  7150. ></ENTRY
  7151. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Port on which broker is contacted. Default is 1825.</CELLBODY
  7152. ></ENTRY
  7153. ></RBW-ROW
  7154. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_imphost</CELLBODY
  7155. ></ENTRY
  7156. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Machine running the ObjectTeam software.</CELLBODY
  7157. ></ENTRY
  7158. ></RBW-ROW
  7159. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_fm_international </CELLBODY
  7160. ><CELLBODY>M4_ps_page_h</CELLBODY
  7161. ><CELLBODY>M4_ps_page_w</CELLBODY
  7162. ><CELLBODY>M4_a_printer_plen</CELLBODY
  7163. ><CELLBODY>M4_lc_ctype</CELLBODY
  7164. ><CELLBODY>M4_lc_collate</CELLBODY
  7165. ><CELLBODY>M4_ps_printer </CELLBODY
  7166. ></ENTRY
  7167. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Various internationalization and printing&truehy;related variables.</CELLBODY
  7168. ></ENTRY
  7169. ></RBW-ROW
  7170. ></TBODY
  7171. ></TGROUP
  7172. ></RBW-TABLE
  7173. ></LABEL
  7174. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7175. >Client</L.LABEL
  7176. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7177. ></RBW-AUTOGEN
  7178. ></RBW-MARKER
  7179. ><RBW-PARABODY>The variable M4_home is set as an environment variable. All ObjectTeam tools use this variable. The default value is /usr/cayenne/obejctteam.</RBW-PARABODY
  7180. ></LB.LIST.BULLET
  7181. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7182. ></RBW-AUTOGEN
  7183. ></RBW-MARKER
  7184. ><RBW-PARABODY>The file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  7185. >/etc/m4env.m4env is created with the following ObjectTeam M4 variables:</RBW-PARABODY
  7186. ></LB.LIST.BULLET
  7187. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="174p"><COLSPEC COLNAME="2" COLWIDTH="255p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  7188. ></ENTRY
  7189. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set to</CELLHEADING
  7190. ></ENTRY
  7191. ></RBW-ROW
  7192. ></THEAD
  7193. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_levelpath</CELLBODY
  7194. ></ENTRY
  7195. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of your repository</CELLBODY
  7196. ></ENTRY
  7197. ></RBW-ROW
  7198. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_brokerport</CELLBODY
  7199. ></ENTRY
  7200. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Port on which broker is contacted. Default is 1825.</CELLBODY
  7201. ></ENTRY
  7202. ></RBW-ROW
  7203. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_imphost</CELLBODY
  7204. ></ENTRY
  7205. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Machine running the ObjectTeam software.</CELLBODY
  7206. ></ENTRY
  7207. ></RBW-ROW
  7208. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_fm_international </CELLBODY
  7209. ><CELLBODY>M4_ps_page_h</CELLBODY
  7210. ><CELLBODY>M4_ps_page_w</CELLBODY
  7211. ><CELLBODY>M4_a_printer_plen</CELLBODY
  7212. ><CELLBODY>M4_lc_ctype</CELLBODY
  7213. ><CELLBODY>M4_lc_collate</CELLBODY
  7214. ><CELLBODY>M4_ps_printer </CELLBODY
  7215. ></ENTRY
  7216. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Various internationalization and printing&truehy;related variables.</CELLBODY
  7217. ></ENTRY
  7218. ></RBW-ROW
  7219. ></TBODY
  7220. ></TGROUP
  7221. ></RBW-TABLE
  7222. ></LABEL
  7223. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7224. >Error messages</L.LABEL
  7225. ><B.BODY>When troubleshooting, be aware that some error messages only pop up after a timeout limit has been reached. These are usually set to five minutes. If nothing happens, wait at least this time before taking action.</B.BODY
  7226. ></LABEL
  7227. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7228. >General troubleshooting</L.LABEL
  7229. ><B.BODY>In the event of problems, check the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  7230. >/logs/ot_brok.log file as well as the status of the ObjectTeam broker service.</B.BODY
  7231. ></LABEL
  7232. ></SECTION
  7233. ><SECTION><S.SECTION.HEAD>Problems</S.SECTION.HEAD
  7234. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7235. >Starting the browser</L.LABEL
  7236. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘levelpath’.</EWM.EXAMPLEW.MONO
  7237. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘levelpath’ not invoked.</EWM.EXAMPLEW.MONO
  7238. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  7239. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  7240. ><EWM.EXAMPLEW.MONO>ERROR [120072]: Remote implementation ‘levelpath’ not found. </EWM.EXAMPLEW.MONO
  7241. ><EWM.EXAMPLEW.MONO>ERROR [121001]: Implementation with id ‘levelpath’ not registered in implementation repository</EWM.EXAMPLEW.MONO
  7242. ><B.BODY>The M4_levelpath is not set correctly.</B.BODY
  7243. ><B.BODY>Set the ObjectTeam variable M4_levelpath to point to an existing repository, for example, <CX5FX5FINPUT>M4_levelpath=/corporate;RW</CX5FX5FINPUT
  7244. >.</B.BODY
  7245. ><B.BODY>This variable is defined in <CX5FX5FTERM>M4_home</CX5FX5FTERM
  7246. >/etc/m4env.m4env or in the .Meta4UserEnv file in your login directory. </B.BODY
  7247. ></LABEL
  7248. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7249. >Starting the DynaText browser</L.LABEL
  7250. ><EWM.EXAMPLEW.MONO>Error : Can’t find config file ‘.ebtrc’.</EWM.EXAMPLEW.MONO
  7251. ><EWM.EXAMPLEW.MONO>Could not open DATA_DIR (check your .ebtrc).</EWM.EXAMPLEW.MONO
  7252. ><B.BODY>The EBTRC variable is not set correctly or there is no .ebtrc file in your login directory. </B.BODY
  7253. ><B.BODY>Set the environment variable EBTRC to point to the .ebtrc file. By default, this file is located at: /usr/cayenne/.ebtrc</B.BODY
  7254. ><B.BODY>Alternatively, copy the file /usr/cayenne/.ebtrc to your login directory.</B.BODY
  7255. ></LABEL
  7256. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7257. >Starting the browser</L.LABEL
  7258. ><EWM.EXAMPLEW.MONO>FATAL[120041]: M4_brokerport not set and no definition for service named ot_broker on host ‘<hostname>’</EWM.EXAMPLEW.MONO
  7259. ><B.BODY>Add an ot_broker service in the services file. See Set ObjectTeam Environment Variables on page 2–10.</B.BODY
  7260. ></LABEL
  7261. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7262. >Starting the browser</L.LABEL
  7263. ><EWM.EXAMPLEW.MONO>210048 Tcl Error: ‘ERROR [210048]: Tcl Error: ‘ERROR[220001]; Pixmap ‘wmt’ not found”</EWM.EXAMPLEW.MONO
  7264. ><B.BODY>The XBMLANGPATH variable is not set correctly.</B.BODY
  7265. ><B.BODY>Set XBMLANGPATH to $M4_home/%T/%B:$M4_home/%T/%B.xpm</B.BODY
  7266. ><B.BODY>Alternatively, you may have run out of colors. If you are running color&truehy;intensive applications, quit them and start ObjectTeam again.</B.BODY
  7267. ></LABEL
  7268. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7269. >Starting the browser </L.LABEL
  7270. ><EWM.EXAMPLEW.MONO>ld.so.1: /usr23/cayenne/objectteam/bin/otk: fatal: libcyntcl.so: can’t open file: errno=2</EWM.EXAMPLEW.MONO
  7271. ><B.BODY>The LD_LIBRARY_PATH variable is not set correctly.</B.BODY
  7272. ><B.BODY>Set LD_LIBRARY_PATH (only for platforms supporting shared libraries). The ObjectTeam shared libraries are in <CX5FX5FTERM>M4_home</CX5FX5FTERM
  7273. >/lib.</B.BODY
  7274. ></LABEL
  7275. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7276. >Starting the browser</L.LABEL
  7277. ><EWM.EXAMPLEW.MONO>/usr23/cayenne/objectteam/bin/ot: /usr23/cayenne/objecttea/bin/otk: not found</EWM.EXAMPLEW.MONO
  7278. ><B.BODY>The M4_home variable is not set correctly.</B.BODY
  7279. ><B.BODY>Set the ObjectTeam environment variable M4_home to point to the installation directory of ObjectTeam. The default is /usr/cayenne/objectteam.</B.BODY
  7280. ></LABEL
  7281. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7282. >Starting the browser</L.LABEL
  7283. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘corporate’.</EWM.EXAMPLEW.MONO
  7284. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘corporate’ not invoked.</EWM.EXAMPLEW.MONO
  7285. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  7286. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  7287. ><EWM.EXAMPLEW.MONO>ERROR [120072]: Remote implementation ‘corporate’ not found. </EWM.EXAMPLEW.MONO
  7288. ><EWM.EXAMPLEW.MONO>ERROR [120048]: Operation ‘Broker::getImpByName(String const & name, ImpDescriptor & descrip)’ not invoked.</EWM.EXAMPLEW.MONO
  7289. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  7290. ><B.BODY>The M4_home variable is not set correctly.</B.BODY
  7291. ><B.BODY>Set the ObjectTeam environment variable M4_home to point to the installation directory of ObjectTeam. The default: is /usr/cayenne/objectteam.</B.BODY
  7292. ></LABEL
  7293. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7294. >Starting the browser</L.LABEL
  7295. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘levelpath’.</EWM.EXAMPLEW.MONO
  7296. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘levelpath’ not invoked.</EWM.EXAMPLEW.MONO
  7297. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  7298. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  7299. ><EWM.EXAMPLEW.MONO>ERROR [120072]: Remote implementation ‘wronglevelpath’ not found. </EWM.EXAMPLEW.MONO
  7300. ><EWM.EXAMPLEW.MONO>ERROR [120057]: No response from server ‘ot_broker’ on host ‘hostname’</EWM.EXAMPLEW.MONO
  7301. ><EWM.EXAMPLEW.MONO>ERROR [120013]: ORB communication failure</EWM.EXAMPLEW.MONO
  7302. ><EWM.EXAMPLEW.MONO>ERROR [000146]: Connection refused</EWM.EXAMPLEW.MONO
  7303. ><B.BODY>Check if the ot_broker is running on the server. If not start the broker by entering $M4_home/bin/ot_broker &</B.BODY
  7304. ><B.BODY>Check if the value for the broker port (M4_brokerport) is correct. Set the ObjectTeam environment variable M4_brokerport to a number via which the broker can be reached. This variable is defined in <CX5FX5FTERM>M4_home</CX5FX5FTERM
  7305. >/etc/m4env.m4env or in the .Meta4UserEnv file in your login directory. The default value is 1825.</B.BODY
  7306. ></LABEL
  7307. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7308. >Starting the browser</L.LABEL
  7309. ><EWM.EXAMPLEW.MONO>ERROR [123002]: Could not checkout license for OT_BROWSER_UNIX</EWM.EXAMPLEW.MONO
  7310. ><EWM.EXAMPLEW.MONO>ERROR [123001]: FLEXlm: Cannot find license file (&truehy;1,73:2) No such file or directory</EWM.EXAMPLEW.MONO
  7311. ><B.BODY>The LM_LICENSE_FILE variable is not set correctly.</B.BODY
  7312. ><B.BODY>Set the FLEXlm system environment variable LM_LICENSE_FILE to point to:</B.BODY
  7313. ><B.BODY>a. A valid local license file, e.g., /usr/cayenne/flexlm/license/cayenne.dat</B.BODY
  7314. ><B.BODY>b. <CX5FX5FTERM>port</CX5FX5FTERM
  7315. >@<CX5FX5FTERM>host</CX5FX5FTERM
  7316. >, if you are running a license server on another machine. To identify the port, log on to your machine running the license server and open the license file cayenne.dat The port appears as the last field on the server line, e.g. 7126@capella</B.BODY
  7317. ><B.BODY>Note: If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended on the end, separated from the previous path by a colon (:).</B.BODY
  7318. ></LABEL
  7319. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7320. >Starting the browser</L.LABEL
  7321. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘corporate’.</EWM.EXAMPLEW.MONO
  7322. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘corporate’ not invoked.</EWM.EXAMPLEW.MONO
  7323. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  7324. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  7325. ><EWM.EXAMPLEW.MONO>ERROR [121013]: Server ‘dbserver’ reports failure:</EWM.EXAMPLEW.MONO
  7326. ><EWM.EXAMPLEW.MONO>ERROR [123002]: Could not checkout license for OT_SERVER_UNIX</EWM.EXAMPLEW.MONO
  7327. ><EWM.EXAMPLEW.MONO>ERROR [123001]: FLEXlm: cannot find license file (&truehy;1,72:2) No such file or directory</EWM.EXAMPLEW.MONO
  7328. ><B.BODY>The LM_LICENSE_FILE variable was not set correctly at the time the ot_broker was started.</B.BODY
  7329. ><B.BODY>Set the LM_LICENSE_FILE correctly as explained below, kill the broker, then start it again by entering $M4_home/bin/ot_broker &.</B.BODY
  7330. ><B.BODY>Set the FLEXlm system environment variable LM_LICENSE_FILE pointing to:</B.BODY
  7331. ><B.BODY>a. A valid local license file, e.g., /usr/cayenne/flexlm/license/cayenne.dat</B.BODY
  7332. ><B.BODY>b. <CX5FX5FTERM>port</CX5FX5FTERM
  7333. >@<CX5FX5FTERM>host</CX5FX5FTERM
  7334. >, if you are running a license server on another machine. To identify the port, log on to your machine running the license server and open the license file cayenne.dat The port appears as the last field on the server line, e.g. 7126@capella.</B.BODY
  7335. ><B.BODY>Note: If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended on the end, separated from the previous path by a colon (:).</B.BODY
  7336. ></LABEL
  7337. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7338. >Starting the browser</L.LABEL
  7339. ><EWM.EXAMPLEW.MONO>ERROR [115001]: Cannot initialize client context. </EWM.EXAMPLEW.MONO
  7340. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘corporate’.</EWM.EXAMPLEW.MONO
  7341. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘corporate’ not invoked.</EWM.EXAMPLEW.MONO
  7342. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  7343. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  7344. ><EWM.EXAMPLEW.MONO>ERROR [121013]: Server ‘dbserver’ reports failure:</EWM.EXAMPLEW.MONO
  7345. ><EWM.EXAMPLEW.MONO>ERROR [112152]: Error occurred while opening a repository</EWM.EXAMPLEW.MONO
  7346. ><EWM.EXAMPLEW.MONO>ERROR [110032]: Failed to execute query: ‘CONNECT TO <name@server>’</EWM.EXAMPLEW.MONO
  7347. ><EWM.EXAMPLEW.MONO>ERROR [000146]: Unable to load locale categories</EWM.EXAMPLEW.MONO
  7348. ><B.BODY>The INFORMIXDIR variable was not set correctly at the time the ot_broker was started.</B.BODY
  7349. ><B.BODY>Set the INFORMIXDIR variable to point to the Informix installation directory and kill the broker, then start it again by entering $M4_home/bin/ot_broker &. The default value is /usr/informix.</B.BODY
  7350. ></LABEL
  7351. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7352. >Starting commands in a shell (dbdump etc.)</L.LABEL
  7353. ><EWM.EXAMPLEW.MONO>ERROR [210040]: (Message not available)</EWM.EXAMPLEW.MONO
  7354. ><EWM.EXAMPLEW.MONO>ERROR [001004]: Module 210 not initialized.</EWM.EXAMPLEW.MONO
  7355. ><EWM.EXAMPLEW.MONO>ERROR [001001]: Error while reading message file ‘etc/message/message.210’.</EWM.EXAMPLEW.MONO
  7356. ><EWM.EXAMPLEW.MONO>SYSERR [000002]: No such file or directory</EWM.EXAMPLEW.MONO
  7357. ><B.BODY>The M4_home variable is not set correctly</B.BODY
  7358. ><B.BODY>Set the ObjectTeam environment variable M4_home to point to the installation directory of ObjectTeam. The default is /usr/cayenne/objectteam.</B.BODY
  7359. ><B.BODY></B.BODY
  7360. ><RBWAUTO-0001></RBWAUTO-0001
  7361. ><!--
  7362.  
  7363.  
  7364.  
  7365.  
  7366.  
  7367. CONVERTING SOURCE FILE ../../sources/ignt/igntbk.mif
  7368.  
  7369.  
  7370. --><B.BODY></B.BODY
  7371. ><B.BODY></B.BODY
  7372. ><B.BODY></B.BODY
  7373. ><B.BODY></B.BODY
  7374. ><B.BODY></B.BODY
  7375. ></LABEL
  7376. ></SECTION
  7377. ></APPENDIX
  7378. ></BOOK
  7379. ><BOOK><BH.BOOK.HEAD>Installation Guide for Microsoft Windows</BH.BOOK.HEAD
  7380. ><!--
  7381.  
  7382.  
  7383.  
  7384.  
  7385.  
  7386. CONVERTING SOURCE FILE ../../sources/ignt/igntprep.fm5.mif
  7387.  
  7388.  
  7389. --><B.BODY></B.BODY
  7390. ><B.BODY></B.BODY
  7391. ><B.BODY></B.BODY
  7392. ><B.BODY></B.BODY
  7393. ><B.BODY></B.BODY
  7394. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  7395. ></RBW-AUTOGEN
  7396. >Preparing <RBW-ANCHOR ID="16080"></RBW-ANCHOR
  7397. >for Installation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  7398. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  7399. ></RBW-SYSOBJ
  7400. ></C.CHAPTER.HEAD
  7401. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7402. >Introduction</L.LABEL
  7403. ><B.BODY>This chapter describes the steps that you should take before you install ObjectTeam.</B.BODY
  7404. ></LABEL
  7405. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7406. >In this chapter</L.LABEL
  7407. ><B.BODY>This chapter contains the following sections:</B.BODY
  7408. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  7409. ></ENTRY
  7410. ></RBW-ROW
  7411. ></THEAD
  7412. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12336" TYPE="XREF-TEXTCOPY">Choosing an Installation Type&rbwtab;1–2</RBW-XREF
  7413. ></SB.SECTION.BLOCK.TABLE
  7414. ></ENTRY
  7415. ></RBW-ROW
  7416. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21051" TYPE="XREF-TEXTCOPY">Requirements&rbwtab;1–6</RBW-XREF
  7417. ></SB.SECTION.BLOCK.TABLE
  7418. ></ENTRY
  7419. ></RBW-ROW
  7420. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18160" TYPE="XREF-TEXTCOPY">Network Software&rbwtab;1–7</RBW-XREF
  7421. ></SB.SECTION.BLOCK.TABLE
  7422. ></ENTRY
  7423. ></RBW-ROW
  7424. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32992" TYPE="XREF-TEXTCOPY">Backing Up Your System&rbwtab;1–8</RBW-XREF
  7425. ></SB.SECTION.BLOCK.TABLE
  7426. ></ENTRY
  7427. ></RBW-ROW
  7428. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18228" TYPE="XREF-TEXTCOPY">Creating a User Directory (Windows 95 Only)&rbwtab;1–10</RBW-XREF
  7429. ></SB.SECTION.BLOCK.TABLE
  7430. ></ENTRY
  7431. ></RBW-ROW
  7432. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34684" TYPE="XREF-TEXTCOPY">Checking Virtual Memory&rbwtab;1–11</RBW-XREF
  7433. ></SB.SECTION.BLOCK.TABLE
  7434. ></ENTRY
  7435. ></RBW-ROW
  7436. ></TBODY
  7437. ></TGROUP
  7438. ></RBW-TABLE
  7439. ></LABEL
  7440. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12336"></RBW-ANCHOR
  7441. >Choosing an Installation Type</S.SECTION.HEAD
  7442. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7443. >Introduction</L.LABEL
  7444. ><B.BODY>A complete ObjectTeam installation contains the following components:</B.BODY
  7445. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7446. ></RBW-AUTOGEN
  7447. ></RBW-MARKER
  7448. ><RBW-PARABODY>ObjectTeam server software</RBW-PARABODY
  7449. ></LB.LIST.BULLET
  7450. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7451. ></RBW-AUTOGEN
  7452. ></RBW-MARKER
  7453. ><RBW-PARABODY>ObjectTeam client software</RBW-PARABODY
  7454. ></LB.LIST.BULLET
  7455. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7456. ></RBW-AUTOGEN
  7457. ></RBW-MARKER
  7458. ><RBW-PARABODY>DBMS software</RBW-PARABODY
  7459. ></LB.LIST.BULLET
  7460. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7461. ></RBW-AUTOGEN
  7462. ></RBW-MARKER
  7463. ><RBW-PARABODY>License management software</RBW-PARABODY
  7464. ></LB.LIST.BULLET
  7465. ><B.BODY>To decide the type of installation that you want to perform, you must first determine which computers will be running each of these sets of software.</B.BODY
  7466. ><B.BODY>This section helps you answer these questions. </B.BODY
  7467. ></LABEL
  7468. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7469. >Client/server Architecture</L.LABEL
  7470. ><B.BODY>ObjectTeam has a <CX5FX5FTERM>client/server</CX5FX5FTERM
  7471. > design. This means that the software can be distributed over a network of computers, with client computers and server computers executing different types of processes.</B.BODY
  7472. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00019.tif" origseq="1" origtype="I" origdoc="../../sources/ignt/igntprep.fm5.mif"></RBW-GRAPHIC
  7473. ></FA.FIGURE.ANCHOR
  7474. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7475. >Client computers</SL.SUBLABEL
  7476. ><B.BODY>Client computers run the ObjectTeam <CX5FX5FTERM>client software</CX5FX5FTERM
  7477. >. End&truehy;users use the client software, for example, to edit diagrams, run reports, and generate code. Model data created by users is stored centrally in a database on the server. Generated code and documents are stored on a user’s own machine.</B.BODY
  7478. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7479. >Server computers</SL.SUBLABEL
  7480. ><B.BODY>A server computer runs the ObjectTeam <CX5FX5FTERM>server software</CX5FX5FTERM
  7481. >, and database software for storing users’ project data. The server software usually starts up at system boot time, and does things like interact with the database and coordinate requests from clients. Users generally do not directly invoke server software. By default, the maximum number of client computers you can attach to a server is unlimited.</B.BODY
  7482. ><B.BODY>A client/server configuration allows multiple users to work simultaneously with ObjectTeam, and thus share data. </B.BODY
  7483. ></LABEL
  7484. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7485. >ObjectTeam database</L.LABEL
  7486. ><B.BODY>ObjectTeam stores project data in a database. The database management system (DBMS) used is Sybase SQL Anywhere. By default, the installation program automatically installs the database software on the server.</B.BODY
  7487. ></LABEL
  7488. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7489. >ObjectTeam license manager</L.LABEL
  7490. ><B.BODY>The various features of ObjectTeam, such as browsers and code generators, are all licensed individually. In ObjectTeam, a licensing system maintains a count of the usage of each feature. The license management system used by ObjectTeam is FLEXlm from Globetrotter Software. </B.BODY
  7491. ></LABEL
  7492. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7493. >Installation types</L.LABEL
  7494. ><B.BODY>ObjectTeam distinguishes between the following types of machine:</B.BODY
  7495. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="132p"><COLSPEC COLNAME="2" COLWIDTH="315p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Configuration</CELLHEADING
  7496. ></ENTRY
  7497. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  7498. ></ENTRY
  7499. ></RBW-ROW
  7500. ></THEAD
  7501. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>Master Server</CX5FX5FTERM
  7502. ></CELLBODY
  7503. ></ENTRY
  7504. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This is a machine that runs all the ObjectTeam server software as well as the client software. There must always be a single Master server present in your network. </CELLBODY
  7505. ><CELLBODY>In a default installation, the Master server also runs the SQL Anywhere software and the License server software.</CELLBODY
  7506. ></ENTRY
  7507. ></RBW-ROW
  7508. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>Slave Server</CX5FX5FTERM
  7509. ></CELLBODY
  7510. ></ENTRY
  7511. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This is an optional server running on a separate machine from the Master server. You can choose to install one or more Slave servers to distribute the load of the Master server. </CELLBODY
  7512. ><CELLBODY>A Slave server runs a subset of the ObjectTeam server and SQL Anywhere software. You can also choose to install the client software together with the Slave server software. </CELLBODY
  7513. ></ENTRY
  7514. ></RBW-ROW
  7515. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>Client</CX5FX5FTERM
  7516. ></CELLBODY
  7517. ></ENTRY
  7518. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This is a machine that only runs the client software. </CELLBODY
  7519. ></ENTRY
  7520. ></RBW-ROW
  7521. ></TBODY
  7522. ></TGROUP
  7523. ></RBW-TABLE
  7524. ></LABEL
  7525. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7526. >Example configurations</L.LABEL
  7527. ><B.BODY>Which installation you perform on a machine depends on what kind of overall configuration in which you want to run ObjectTeam. The following examples show some default configurations covered by the instructions in this guide.</B.BODY
  7528. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7529. >Standalone</SL.SUBLABEL
  7530. ><B.BODY>This is the simplest configuration. A single machine is configured as Master server, and is running the ObjectTeam server software, ObjectTeam client software, SQL Anywhere software and FLEXlm license software. You might use this if you are working on a laptop for example.</B.BODY
  7531. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00020.tif" origseq="3" origtype="I" origdoc="../../sources/ignt/igntprep.fm5.mif"></RBW-GRAPHIC
  7532. ></FA.FIGURE.ANCHOR
  7533. ><B.BODY>You can run a standalone ObjectTeam installation under Windows 95 or Windows NT. </B.BODY
  7534. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7535. >Client/server</SL.SUBLABEL
  7536. ><B.BODY>In this example, a machine configured as Master server is running the ObjectTeam server and client software and is serving multiple client machines. The SQL Anywhere software and FLEXlm license software are also installed on the Master server. </B.BODY
  7537. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00021.tif" origseq="5" origtype="I" origdoc="../../sources/ignt/igntprep.fm5.mif"></RBW-GRAPHIC
  7538. ></FA.FIGURE.ANCHOR
  7539. ><B.BODY>In a client/server installation, the server only runs on Windows NT. Client software runs on both Windows 95 and Windows NT.</B.BODY
  7540. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7541. >Distributed Master and Slave servers</SL.SUBLABEL
  7542. ><FA.FIGURE.ANCHOR>In this example, to spread the load on the Master server, a separate machine has been configured as an ObjectTeam Slave server and is serving several of its own clients. </FA.FIGURE.ANCHOR
  7543. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00022.tif" origseq="11" origtype="I" origdoc="../../sources/ignt/igntprep.fm5.mif"></RBW-GRAPHIC
  7544. ></FA.FIGURE.ANCHOR
  7545. ><B.BODY>In a Master/Slave configuration, the Master and Slave must be running under Windows NT Server rather than Windows NT Workstation.</B.BODY
  7546. ><B.BODY>The Master server runs SQL Anywhere <CX5FX5FTERM>server</CX5FX5FTERM
  7547. > software. Slave servers run SQL Anywhere <CX5FX5FTERM>client</CX5FX5FTERM
  7548. > software. The correct database software is installed along with the ObjectTeam software when you install a Master or Slave server. ObjectTeam clients do not run any SQL Anywhere software.</B.BODY
  7549. ><B.BODY>ObjectTeam client machines can run off either the Master or Slave server. By default, the maximum number of client computers you can attach to a server is unlimited.</B.BODY
  7550. ></LABEL
  7551. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7552. >Custom installations</L.LABEL
  7553. ><B.BODY>The default ObjectTeam installation automates where components such as the database and license manager software are installed. Depending on the size of your ObjectTeam installation, you may want to customize your installation to improve performance.</B.BODY
  7554. ><B.BODY>For example, you can:</B.BODY
  7555. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7556. ></RBW-AUTOGEN
  7557. ></RBW-MARKER
  7558. ><RBW-PARABODY>Run the license management software on a separate machine from the Master server.</RBW-PARABODY
  7559. ></LB.LIST.BULLET
  7560. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7561. ></RBW-AUTOGEN
  7562. ></RBW-MARKER
  7563. ><RBW-PARABODY>Run the database software on a separate machine from the Master server.</RBW-PARABODY
  7564. ></LB.LIST.BULLET
  7565. ></LABEL
  7566. ></SECTION
  7567. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21051"></RBW-ANCHOR
  7568. >Requirements</S.SECTION.HEAD
  7569. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7570. >Product requirements</L.LABEL
  7571. ><B.BODY>ObjectTeam uses or integrates with various other software packages, such as:</B.BODY
  7572. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7573. ></RBW-AUTOGEN
  7574. ></RBW-MARKER
  7575. ><RBW-PARABODY>Repository DBMS’s</RBW-PARABODY
  7576. ></LB.LIST.BULLET
  7577. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7578. ></RBW-AUTOGEN
  7579. ></RBW-MARKER
  7580. ><RBW-PARABODY>Software development tools, such as compilers, class libraries, etc.</RBW-PARABODY
  7581. ></LB.LIST.BULLET
  7582. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7583. ></RBW-AUTOGEN
  7584. ></RBW-MARKER
  7585. ><RBW-PARABODY>Version and configuration management products</RBW-PARABODY
  7586. ></LB.LIST.BULLET
  7587. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7588. ></RBW-AUTOGEN
  7589. ></RBW-MARKER
  7590. ><RBW-PARABODY>Document publishing packages</RBW-PARABODY
  7591. ></LB.LIST.BULLET
  7592. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7593. ></RBW-AUTOGEN
  7594. ></RBW-MARKER
  7595. ><RBW-PARABODY>Requirements tracking packages</RBW-PARABODY
  7596. ></LB.LIST.BULLET
  7597. ><B.BODY>For details on the requirements for these packages, read the Certification matrix. Hardware requirements for your workstation are displayed during the installation procedure. </B.BODY
  7598. ><B.BODY>You should also read the ObjectTeam Read Me First Notes before starting installation. These contain last&truehy;minute product information that may affect the installation. </B.BODY
  7599. ></LABEL
  7600. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7601. >Reading the ObjectTeam Certification matrix and Read Me First Notes</L.LABEL
  7602. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  7603. ></RBW-AUTOGEN
  7604. ></RBW-MARKER
  7605. ><RBW-PARABODY>To read the Certification matrix and Read Me First Notes, open the file <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  7606. >:\certify.htm and <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  7607. >:\readme.htm in a web browser.</RBW-PARABODY
  7608. ></P.PROCEDURE
  7609. ></LABEL
  7610. ></SECTION
  7611. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18160"></RBW-ANCHOR
  7612. >Network Software</S.SECTION.HEAD
  7613. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7614. >Introduction</L.LABEL
  7615. ><B.BODY>The ObjectTeam client software requires the system to be configured with Microsoft TCP/IP network software. Note that your PC must have a static IP address.</B.BODY
  7616. ><B.BODY>Refer to your operating system documentation (from Microsoft) for information on how to enable the TCP/IP protocol.</B.BODY
  7617. ></LABEL
  7618. ></SECTION
  7619. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32992"></RBW-ANCHOR
  7620. >Backing Up Your System</S.SECTION.HEAD
  7621. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7622. >Introduction</L.LABEL
  7623. ><B.BODY>Before you perform any installation, it is best to do a backup of all important data on your system, including the registries. If your backup software doesn’t support backing up registries, back these up separately following the instructions below.</B.BODY
  7624. ></LABEL
  7625. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7626. >The Windows Registry</L.LABEL
  7627. ><B.BODY>When you perform an installation on Windows NT or 95, various changes are made to the registry. This file is used by Windows to set its environment at start up. If this file becomes corrupted—for example, because of a problem during an installation—Windows will not be able to start up. </B.BODY
  7628. ><B.BODY>It is therefore recommended that you save your registry to a file and back it up both <CX5FX5FTERM>before</CX5FX5FTERM
  7629. > and <CX5FX5FTERM>after</CX5FX5FTERM
  7630. > installing or upgrading ObjectTeam (or any other software). That way, if something goes wrong during the installation, and the registry becomes corrupted, you can restore it.</B.BODY
  7631. ></LABEL
  7632. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7633. >How to back up your registry</L.LABEL
  7634. ><B.BODY>Usually when you install an application, information about that application is written to the registry, and the previous contents of the registry are copied to a backup file. Windows keeps several backups. You can force Windows to make a backup of the current registry using the Repair Disk Utility.</B.BODY
  7635. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  7636. ></RBW-AUTOGEN
  7637. ></RBW-MARKER
  7638. ><RBW-PARABODY>To back up your registry:</RBW-PARABODY
  7639. ></P.PROCEDURE
  7640. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  7641. ></RBW-AUTOGEN
  7642. ></RBW-MARKER
  7643. ><RBW-PARABODY>In a DOS prompt, run RDISK.</RBW-PARABODY
  7644. ></LN.LIST.NUM
  7645. ><LR.LIST.RESULT>The Repair Disk Utility window appears.</LR.LIST.RESULT
  7646. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  7647. ></RBW-AUTOGEN
  7648. ></RBW-MARKER
  7649. ><RBW-PARABODY>Click on Update Repair info.</RBW-PARABODY
  7650. ></LN.LIST.NUM
  7651. ><LR.LIST.RESULT>This makes a copy of the current registry information in a file.</LR.LIST.RESULT
  7652. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  7653. ></RBW-AUTOGEN
  7654. ></RBW-MARKER
  7655. ><RBW-PARABODY>Click on Create Emergency Disk.</RBW-PARABODY
  7656. ></LN.LIST.NUM
  7657. ><LR.LIST.RESULT>A dialog appears prompting you to insert a floppy. This option creates a floppy from which you can boot, in the event that your registry becomes completely corrupted.</LR.LIST.RESULT
  7658. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  7659. ></RBW-AUTOGEN
  7660. ></RBW-MARKER
  7661. ><RBW-PARABODY>When the emergency disk is created, click Exit.</RBW-PARABODY
  7662. ></LN.LIST.NUM
  7663. ></LABEL
  7664. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7665. >How to restore your registry</L.LABEL
  7666. ><B.BODY>If your registry becomes corrupted for any reason, you can restore it from the backed up copy.</B.BODY
  7667. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  7668. ></RBW-AUTOGEN
  7669. ></RBW-MARKER
  7670. ><RBW-PARABODY>To restore your registry:</RBW-PARABODY
  7671. ></P.PROCEDURE
  7672. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  7673. ></RBW-AUTOGEN
  7674. ></RBW-MARKER
  7675. ><RBW-PARABODY>Reboot the machine.</RBW-PARABODY
  7676. ></LN.LIST.NUM
  7677. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  7678. ></RBW-AUTOGEN
  7679. ></RBW-MARKER
  7680. ><RBW-PARABODY>During the start&truehy;up sequence, the following sentence is displayed:</RBW-PARABODY
  7681. ></LN.LIST.NUM
  7682. ><EM.EXAMPLE.MONO>Press space bar NOW to invoke last known good menu.</EM.EXAMPLE.MONO
  7683. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  7684. ></RBW-AUTOGEN
  7685. ></RBW-MARKER
  7686. ><RBW-PARABODY>Press the space bar and follow the instructions to restore the previous configuration.</RBW-PARABODY
  7687. ></LN.LIST.NUM
  7688. ><B.BODY>If your registry is completely corrupted and all copies have been lost, you must boot from the emergency floppy you made earlier.</B.BODY
  7689. ></LABEL
  7690. ></SECTION
  7691. ><SECTION><S.SECTION.HEAD>Creating a <RBW-ANCHOR ID="18228"></RBW-ANCHOR
  7692. >User Directory (Windows 95 Only)</S.SECTION.HEAD
  7693. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7694. >Introduction</L.LABEL
  7695. ><B.BODY>ObjectTeam reads and writes environment variables to and from a file in the user’s home directory. In order to startup, users must have their own directory.</B.BODY
  7696. ><B.BODY>Under Windows NT, this is set by default. Under Windows 95, you must set this option.</B.BODY
  7697. ></LABEL
  7698. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7699. >Creating a User Profile on Windows 95</L.LABEL
  7700. ><B.BODY>Before users can use the ObjectTeam product on Windows 95, a profiles environment must be created. A user profile allows a user to customize his or her own preferences and desktop settings. </B.BODY
  7701. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  7702. ></RBW-AUTOGEN
  7703. ></RBW-MARKER
  7704. ><RBW-PARABODY>To check whether a user has a profile:</RBW-PARABODY
  7705. ></P.PROCEDURE
  7706. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  7707. ></RBW-AUTOGEN
  7708. ></RBW-MARKER
  7709. ><RBW-PARABODY>Select Start | Settings | Control Panel.</RBW-PARABODY
  7710. ></LN.LIST.NUM
  7711. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  7712. ></RBW-AUTOGEN
  7713. ></RBW-MARKER
  7714. ><RBW-PARABODY>Double&truehy;click on the Passwords control panel. </RBW-PARABODY
  7715. ></LN.LIST.NUM
  7716. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  7717. ></RBW-AUTOGEN
  7718. ></RBW-MARKER
  7719. ><RBW-PARABODY>Under User Profiles, select the option “Users can customize their preferences and desktop settings.” </RBW-PARABODY
  7720. ></LN.LIST.NUM
  7721. ><LT.LIST.TEXT>You do not have to select the individual desktop icons or individual start menu options.</LT.LIST.TEXT
  7722. ><B.BODY>The default users’ home directory is: <CX5FX5FTERM>drive</CX5FX5FTERM
  7723. >:\<CX5FX5FFILE.NAME>Windows\Profiles</CX5FX5FFILE.NAME
  7724. >\<CX5FX5FTERM>user_name</CX5FX5FTERM
  7725. >.</B.BODY
  7726. ></LABEL
  7727. ></SECTION
  7728. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34684"></RBW-ANCHOR
  7729. >Checking Virtual Memory</S.SECTION.HEAD
  7730. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7731. >Introduction</L.LABEL
  7732. ><B.BODY>The amount of virtual memory required to run ObjectTeam depends, in part, on the size of your projects. Initially, Cayenne recommends 75 to 125 MB. As you continue to use the product and your projects grow, you might need to adjust the virtual memory setting on your workstation. You can specify the amount of virtual memory for any local drive that has space available for permanent memory. You must specify virtual memory as permanent.</B.BODY
  7733. ></LABEL
  7734. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7735. >How to check and set virtual memory for Windows NT 4.0</L.LABEL
  7736. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  7737. ></RBW-AUTOGEN
  7738. ></RBW-MARKER
  7739. ><RBW-PARABODY>To check and set virtual memory for Windows NT 4.0:</RBW-PARABODY
  7740. ></P.PROCEDURE
  7741. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  7742. ></RBW-AUTOGEN
  7743. ></RBW-MARKER
  7744. ><RBW-PARABODY>Select the Start button in the status bar. (If the Start button is not visible, press Ctrl + Esc.)</RBW-PARABODY
  7745. ></LN.LIST.NUM
  7746. ><LR.LIST.RESULT>A pop&truehy;up menu appears.</LR.LIST.RESULT
  7747. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  7748. ></RBW-AUTOGEN
  7749. ></RBW-MARKER
  7750. ><RBW-PARABODY>Select Settings | Control Panel.</RBW-PARABODY
  7751. ></LN.LIST.NUM
  7752. ><LR.LIST.RESULT>The Control Panel appears.</LR.LIST.RESULT
  7753. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  7754. ></RBW-AUTOGEN
  7755. ></RBW-MARKER
  7756. ><RBW-PARABODY>Double&truehy;click on the System icon.</RBW-PARABODY
  7757. ></LN.LIST.NUM
  7758. ><LR.LIST.RESULT>The System window appears.</LR.LIST.RESULT
  7759. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  7760. ></RBW-AUTOGEN
  7761. ></RBW-MARKER
  7762. ><RBW-PARABODY>Select the Performance tab.</RBW-PARABODY
  7763. ></LN.LIST.NUM
  7764. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  7765. ></RBW-AUTOGEN
  7766. ></RBW-MARKER
  7767. ><RBW-PARABODY>In the Virtual Memory box, check to see that the total paging file size for all disk volumes is in the 75&truehy;125 MB range. If it is not, select the Change button.</RBW-PARABODY
  7768. ></LN.LIST.NUM
  7769. ><LR.LIST.RESULT>Reset the total paging file size in the Virtual Memory window and select OK.</LR.LIST.RESULT
  7770. ></LABEL
  7771. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7772. >How to check and set virtual memory for Windows 95</L.LABEL
  7773. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  7774. ></RBW-AUTOGEN
  7775. ></RBW-MARKER
  7776. ><RBW-PARABODY>To check and set virtual memory for Windows 95:</RBW-PARABODY
  7777. ></P.PROCEDURE
  7778. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  7779. ></RBW-AUTOGEN
  7780. ></RBW-MARKER
  7781. ><RBW-PARABODY>Select the Start button in the status bar. (If the Start button is not visible, press Ctrl + Esc.)</RBW-PARABODY
  7782. ></LN.LIST.NUM
  7783. ><LR.LIST.RESULT>A pop&truehy;up menu appears.</LR.LIST.RESULT
  7784. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  7785. ></RBW-AUTOGEN
  7786. ></RBW-MARKER
  7787. ><RBW-PARABODY>Select Settings | Control Panel.</RBW-PARABODY
  7788. ></LN.LIST.NUM
  7789. ><LR.LIST.RESULT>The Control Panel window appears.</LR.LIST.RESULT
  7790. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  7791. ></RBW-AUTOGEN
  7792. ></RBW-MARKER
  7793. ><RBW-PARABODY>Double&truehy;click on the System icon.</RBW-PARABODY
  7794. ></LN.LIST.NUM
  7795. ><LR.LIST.RESULT>The System window appears.</LR.LIST.RESULT
  7796. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  7797. ></RBW-AUTOGEN
  7798. ></RBW-MARKER
  7799. ><RBW-PARABODY>Select the Performance tab.</RBW-PARABODY
  7800. ></LN.LIST.NUM
  7801. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  7802. ></RBW-AUTOGEN
  7803. ></RBW-MARKER
  7804. ><RBW-PARABODY>Select the Virtual Memory button.</RBW-PARABODY
  7805. ></LN.LIST.NUM
  7806. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  7807. ></RBW-AUTOGEN
  7808. ></RBW-MARKER
  7809. ><RBW-PARABODY>Select the radio button labeled Let Windows Manage My Virtual Memory Settings.</RBW-PARABODY
  7810. ></LN.LIST.NUM
  7811. ><RBWAUTO-0002></RBWAUTO-0002
  7812. ><!--
  7813.  
  7814.  
  7815.  
  7816.  
  7817.  
  7818. CONVERTING SOURCE FILE ../../sources/ignt/igntinst.fm5.mif
  7819.  
  7820.  
  7821. --><B.BODY></B.BODY
  7822. ><B.BODY></B.BODY
  7823. ><B.BODY></B.BODY
  7824. ><B.BODY></B.BODY
  7825. ><B.BODY></B.BODY
  7826. ></LABEL
  7827. ></SECTION
  7828. ></CHAPTER
  7829. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  7830. ></RBW-AUTOGEN
  7831. >Inst<RBW-ANCHOR ID="16161"></RBW-ANCHOR
  7832. >allation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  7833. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  7834. ></RBW-SYSOBJ
  7835. ></C.CHAPTER.HEAD
  7836. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7837. >Introduction</L.LABEL
  7838. ><B.BODY>This chapter guides you through the installation of the ObjectTeam software. </B.BODY
  7839. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7840. >Upgrading</SL.SUBLABEL
  7841. ><B.BODY>If you are upgrading from a previous ObjectTeam installation, go to <RBW-XREF REFID="21035" TYPE="XREF-TEXTCOPY">Chapter 3, Upgrading From a Previous Release</RBW-XREF
  7842. >, instead.</B.BODY
  7843. ></LABEL
  7844. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7845. >Backing up</L.LABEL
  7846. ><B.BODY>As a precaution, before installing this or any product, you should perform a backup of your system. For details, see <RBW-XREF REFID="32992" TYPE="XREF-TEXTCOPY">Backing Up Your System</RBW-XREF
  7847. >.</B.BODY
  7848. ></LABEL
  7849. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7850. >Default directory</L.LABEL
  7851. ><B.BODY>In this chapter, the installation directory for the ObjectTeam product files is indicated as <CX5FX5FTERM>M4_home</CX5FX5FTERM
  7852. >. By default, this is C:\Cayenne\Tools\.</B.BODY
  7853. ></LABEL
  7854. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7855. >In this chapter</L.LABEL
  7856. ><B.BODY>This chapter contains the following sections:</B.BODY
  7857. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  7858. ></ENTRY
  7859. ></RBW-ROW
  7860. ></THEAD
  7861. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26303" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Master Server&rbwtab;2–2</RBW-XREF
  7862. ></SB.SECTION.BLOCK.TABLE
  7863. ></ENTRY
  7864. ></RBW-ROW
  7865. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13878" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Slave Server&rbwtab;2–11</RBW-XREF
  7866. ></SB.SECTION.BLOCK.TABLE
  7867. ></ENTRY
  7868. ></RBW-ROW
  7869. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40840" TYPE="XREF-TEXTCOPY">Installing an ObjectTeam Client&rbwtab;2–21</RBW-XREF
  7870. ></SB.SECTION.BLOCK.TABLE
  7871. ></ENTRY
  7872. ></RBW-ROW
  7873. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22435" TYPE="XREF-TEXTCOPY">Running ObjectTeam Remotely&rbwtab;2–25</RBW-XREF
  7874. ></SB.SECTION.BLOCK.TABLE
  7875. ></ENTRY
  7876. ></RBW-ROW
  7877. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19073" TYPE="XREF-TEXTCOPY">Uninstalling ObjectTeam Software&rbwtab;2–27</RBW-XREF
  7878. ></SB.SECTION.BLOCK.TABLE
  7879. ></ENTRY
  7880. ></RBW-ROW
  7881. ></TBODY
  7882. ></TGROUP
  7883. ></RBW-TABLE
  7884. ></LABEL
  7885. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26303"></RBW-ANCHOR
  7886. >Installing an ObjectTeam Master Server</S.SECTION.HEAD
  7887. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7888. >Introduction</L.LABEL
  7889. ><B.BODY>This section explains how to install ObjectTeam:</B.BODY
  7890. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7891. ></RBW-AUTOGEN
  7892. ></RBW-MARKER
  7893. ><RBW-PARABODY>On a machine running as Master server in a client/server configuration under Windows NT</RBW-PARABODY
  7894. ></LB.LIST.BULLET
  7895. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  7896. ></RBW-AUTOGEN
  7897. ></RBW-MARKER
  7898. ><RBW-PARABODY>In standalone configuration under Windows NT or Windows 95</RBW-PARABODY
  7899. ></LB.LIST.BULLET
  7900. ><B.BODY>For more information on these configurations, see <RBW-XREF REFID="12336" TYPE="XREF-TEXTCOPY">Choosing an Installation Type</RBW-XREF
  7901. >.</B.BODY
  7902. ></LABEL
  7903. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7904. >Requirements</L.LABEL
  7905. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7906. >Windows NT</SL.SUBLABEL
  7907. ><B.BODY>If you are installing in client/server configuration, you must be running Windows NT server. If you are installing in standalone configuration, you can use Windows NT Server or Windows NT Workstation.</B.BODY
  7908. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7909. >Windows 95</SL.SUBLABEL
  7910. ><B.BODY>If you are installing in standalone configuration under Windows 95, make sure you have user profiles configured, as described in <RBW-XREF REFID="18228" TYPE="XREF-TEXTCOPY">Creating a User Directory (Windows 95 Only)</RBW-XREF
  7911. >.</B.BODY
  7912. ></LABEL
  7913. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7914. >Steps</L.LABEL
  7915. ><B.BODY>Installation of an ObjectTeam Master server (including in standalone configuration) involves the following steps:</B.BODY
  7916. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="57p"><COLSPEC COLNAME="2" COLWIDTH="393p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  7917. ></ENTRY
  7918. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  7919. ></ENTRY
  7920. ></RBW-ROW
  7921. ></THEAD
  7922. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  7923. ></ENTRY
  7924. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="26789" TYPE="XREF-TEXTCOPY">Install Your License</RBW-XREF
  7925. ></CELLBODY
  7926. ></ENTRY
  7927. ></RBW-ROW
  7928. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  7929. ></ENTRY
  7930. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39892" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  7931. > (this also installs the SQL Anywhere database software).</CELLBODY
  7932. ></ENTRY
  7933. ></RBW-ROW
  7934. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  7935. ></ENTRY
  7936. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="10971" TYPE="XREF-TEXTCOPY">Create a Cayenne Repository</RBW-XREF
  7937. >.</CELLBODY
  7938. ></ENTRY
  7939. ></RBW-ROW
  7940. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  7941. ></ENTRY
  7942. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Optional:</CX5FX5FFILE.NAME
  7943. > Configure ObjectTeam modules as described in <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Chapter 4, Activating Modules</RBW-XREF
  7944. >.</CELLBODY
  7945. ></ENTRY
  7946. ></RBW-ROW
  7947. ></TBODY
  7948. ></TGROUP
  7949. ></RBW-TABLE
  7950. ></LABEL
  7951. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26789"></RBW-ANCHOR
  7952. >Install Your License</SS.SUBSEC.HEAD
  7953. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7954. >Licensing</L.LABEL
  7955. ><B.BODY>To install ObjectTeam 7.1.1, you must configure licensing. How you do this depends on whether you have a temporary or permanent license:</B.BODY
  7956. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7957. >Temporary license</SL.SUBLABEL
  7958. ><B.BODY>You must install your ObjectTeam license, as described in this section.</B.BODY
  7959. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7960. >Permanent license</SL.SUBLABEL
  7961. ><B.BODY>You must install a license server, as decribed in <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  7962. >. After you have done that, continue to <RBW-XREF REFID="39892" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  7963. >.</B.BODY
  7964. ></LABEL
  7965. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  7966. >How to install your license</L.LABEL
  7967. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  7968. ></RBW-AUTOGEN
  7969. ></RBW-MARKER
  7970. ><RBW-PARABODY>To install your temporary license file:</RBW-PARABODY
  7971. ></P.PROCEDURE
  7972. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  7973. ></RBW-AUTOGEN
  7974. ></RBW-MARKER
  7975. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  7976. ></LN.LIST.NUM
  7977. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  7978. ></RBW-AUTOGEN
  7979. ></RBW-MARKER
  7980. ><RBW-PARABODY>Make a FLEXlm license directory:</RBW-PARABODY
  7981. ></LN.LIST.NUM
  7982. ><EM.EXAMPLE.MONO>C:\cayenne\flexlm\license</EM.EXAMPLE.MONO
  7983. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  7984. ></RBW-AUTOGEN
  7985. ></RBW-MARKER
  7986. ><RBW-PARABODY>If you received the license:</RBW-PARABODY
  7987. ></LN.LIST.NUM
  7988. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  7989. ></RBW-MARKER
  7990. ><RBW-PARABODY>On a floppy or CD, copy the license to C:\cayenne\flexlm\license\cayenne.dat</RBW-PARABODY
  7991. ></LB2.LIST.BULLET.2
  7992. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  7993. ></RBW-MARKER
  7994. ><RBW-PARABODY>Via email, copy and paste the new feature information into an empty text file and save it as C:\cayenne\flexlm\license\cayenne.dat</RBW-PARABODY
  7995. ></LB2.LIST.BULLET.2
  7996. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  7997. ></RBW-MARKER
  7998. ><RBW-PARABODY>Via fax, enter the new feature information by hand into an empty text file, and save it as C:\cayenne\flexlm\license\cayenne.dat</RBW-PARABODY
  7999. ></LB2.LIST.BULLET.2
  8000. ></LABEL
  8001. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8002. >Obtaining a permanent license</L.LABEL
  8003. ><B.BODY>Your temporary license allows you to install and run ObjectTeam for a limited period. </B.BODY
  8004. ><B.BODY>If after installing ObjectTeam, you decide you want to make your installation permanent, you need to obtain a permanent license. For details on how to obtain a permanent license, see <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  8005. >.</B.BODY
  8006. ></LABEL
  8007. ></SUBSECTION
  8008. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39892"></RBW-ANCHOR
  8009. >Install the ObjectTeam Product Files</SS.SUBSEC.HEAD
  8010. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8011. >How to install the product files</L.LABEL
  8012. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8013. ></RBW-AUTOGEN
  8014. ></RBW-MARKER
  8015. ><RBW-PARABODY>To install the ObjectTeam product files:</RBW-PARABODY
  8016. ></P.PROCEDURE
  8017. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8018. ></RBW-AUTOGEN
  8019. ></RBW-MARKER
  8020. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  8021. ></LN.LIST.NUM
  8022. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8023. ></RBW-AUTOGEN
  8024. ></RBW-MARKER
  8025. ><RBW-PARABODY>Shut down any other running applications, including DOS windows.</RBW-PARABODY
  8026. ></LN.LIST.NUM
  8027. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  8028. ></RBW-AUTOGEN
  8029. ></RBW-MARKER
  8030. ><RBW-PARABODY>Insert the ObjectTeam CD into the CD drive. (This can be a local or networked CD drive.)</RBW-PARABODY
  8031. ></LN.LIST.NUM
  8032. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  8033. ></RBW-AUTOGEN
  8034. ></RBW-MARKER
  8035. ><RBW-PARABODY>In the Windows Explorer, double&truehy;click on <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  8036. >:\Setup.exe.</RBW-PARABODY
  8037. ></LN.LIST.NUM
  8038. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  8039. ></RBW-AUTOGEN
  8040. ></RBW-MARKER
  8041. ><RBW-PARABODY>Proceed through the Welcome screen to the Select Products dialog box.</RBW-PARABODY
  8042. ></LN.LIST.NUM
  8043. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  8044. ></RBW-AUTOGEN
  8045. ></RBW-MARKER
  8046. ><RBW-PARABODY>The following choices are presented:</RBW-PARABODY
  8047. ></LN.LIST.NUM
  8048. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8049. ></RBW-MARKER
  8050. ><RBW-PARABODY>ObjectTeam</RBW-PARABODY
  8051. ></LB2.LIST.BULLET.2
  8052. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8053. ></RBW-MARKER
  8054. ><RBW-PARABODY>DocExpress</RBW-PARABODY
  8055. ></LB2.LIST.BULLET.2
  8056. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8057. ></RBW-MARKER
  8058. ><RBW-PARABODY>DocIt</RBW-PARABODY
  8059. ></LB2.LIST.BULLET.2
  8060. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  8061. ></RBW-AUTOGEN
  8062. ></RBW-MARKER
  8063. ><RBW-PARABODY>Select ObjectTeam.</RBW-PARABODY
  8064. ></LN.LIST.NUM
  8065. ><LT.LIST.TEXT>For details on installing DocIt or DocExpress, see <RBW-XREF REFID="16254" TYPE="XREF-TEXTCOPY">Appendix A, Installing DocExpress and DocIt</RBW-XREF
  8066. >. </LT.LIST.TEXT
  8067. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  8068. ></RBW-AUTOGEN
  8069. ></RBW-MARKER
  8070. ><RBW-PARABODY>To view ObjectTeam’s Read Me First Notes, click the Product Notes button. </RBW-PARABODY
  8071. ></LN.LIST.NUM
  8072. ><LT.LIST.TEXT>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You <CX5FX5FFILE.NAME>must</CX5FX5FFILE.NAME
  8073. > read these notes before starting installation!</LT.LIST.TEXT
  8074. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  8075. ></RBW-AUTOGEN
  8076. ></RBW-MARKER
  8077. ><RBW-PARABODY>Click Install to proceed with the installation.</RBW-PARABODY
  8078. ></LN.LIST.NUM
  8079. ><LR.LIST.RESULT>The Product Requirements dialog box shows you the complete list of hardware and software requirements for your selected components. </LR.LIST.RESULT
  8080. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  8081. ></RBW-AUTOGEN
  8082. ></RBW-MARKER
  8083. ><RBW-PARABODY>If your workstation meets all of the listed hardware and software requirements, click Continue to proceed with installation.</RBW-PARABODY
  8084. ></LN.LIST.NUM
  8085. ><LR.LIST.RESULT>The ObjectTeam install program starts up.</LR.LIST.RESULT
  8086. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  8087. ></RBW-AUTOGEN
  8088. ></RBW-MARKER
  8089. ><RBW-PARABODY>Proceed through the Welcome dialog.</RBW-PARABODY
  8090. ></LN.LIST.NUM
  8091. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  8092. ></RBW-AUTOGEN
  8093. ></RBW-MARKER
  8094. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows 95 only:</CX5FX5FFILE.NAME
  8095. > A dialog box is displayed asking you to make sure that TCP/IP is configured. For details on how to do this, refer to your Windows 95 documentation or Online Help. Click OK to continue.</RBW-PARABODY
  8096. ></LN.LIST.NUM
  8097. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  8098. ></RBW-AUTOGEN
  8099. ></RBW-MARKER
  8100. ><RBW-PARABODY>The Select Products dialog box displays the default selection of components to install. For a Master server installation, select Server files, Sybase SQL Anywhere files, and Client files. Optionally, select Help files and Product Documentation files. </RBW-PARABODY
  8101. ></LN.LIST.NUM
  8102. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  8103. ></RBW-AUTOGEN
  8104. >If you want to use an existing Sybase SQL Anywhere 5.5 installation, do not select the option to install this software. However, before you can use your existing installation, you must move the SQL Anywhere settings for SQLANY and PATH to the Windows NT <CX5FX5FTERM>system</CX5FX5FTERM
  8105. > environment. If you do choose to install the SQL Anywhere software, it is installed in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  8106. >\sqlany55 directory and these variables are set automatically. </N2.NOTE.2
  8107. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  8108. ></RBW-AUTOGEN
  8109. ></RBW-MARKER
  8110. ><RBW-PARABODY>By default, the ObjectTeam software is installed in C:\Cayenne\Tools\. If you wish to install ObjectTeam elsewhere, click on the Browse... button and select the desired location. </RBW-PARABODY
  8111. ></LN.LIST.NUM
  8112. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  8113. ></RBW-AUTOGEN
  8114. >Click the Disk Space button to display available disk space information about available hard drives.</N2.NOTE.2
  8115. ><LR.LIST.RESULT>The selected components are installed. A progress bar informs you of the progress of the installation.</LR.LIST.RESULT
  8116. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  8117. ></RBW-AUTOGEN
  8118. ></RBW-MARKER
  8119. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows NT only: </CX5FX5FFILE.NAME
  8120. >The Server Type dialog asks you to identify the type of server you want to install: <CX5FX5FFILE.NAME>Master</CX5FX5FFILE.NAME
  8121. > or <CX5FX5FFILE.NAME>Slave</CX5FX5FFILE.NAME
  8122. >. The option <CX5FX5FFILE.NAME>Master</CX5FX5FFILE.NAME
  8123. > is selected by default. Click on Next to accept this default.</RBW-PARABODY
  8124. ></LN.LIST.NUM
  8125. ><LT.LIST.TEXT>Remember you can have only one ObjectTeam Master server in your network. </LT.LIST.TEXT
  8126. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>16&rbwtab;</CX5FX5FZLIST.NUMBER
  8127. ></RBW-AUTOGEN
  8128. ></RBW-MARKER
  8129. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows NT only: </CX5FX5FFILE.NAME
  8130. >The Type of Install dialog asks you to identify the type of installation: <CX5FX5FFILE.NAME>Standalone</CX5FX5FFILE.NAME
  8131. > or <CX5FX5FFILE.NAME>Client/Server</CX5FX5FFILE.NAME
  8132. >. This choice determines some SQL Anywhere settings. Select your desired installation and click on Next.</RBW-PARABODY
  8133. ></LN.LIST.NUM
  8134. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>17&rbwtab;</CX5FX5FZLIST.NUMBER
  8135. ></RBW-AUTOGEN
  8136. ></RBW-MARKER
  8137. ><RBW-PARABODY>The Server Broker Port Information dialog asks you to enter the broker port you want to use to communicate with clients. Click Next to accept the default of 1825. </RBW-PARABODY
  8138. ></LN.LIST.NUM
  8139. ><W2.WARNING.2><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  8140. ></RBW-AUTOGEN
  8141. >If you change this setting, you must also change it during every client and Slave server installation. If the numbers don’t match, the client will not be able to communicate with the Broker.</W2.WARNING.2
  8142. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>18&rbwtab;</CX5FX5FZLIST.NUMBER
  8143. ></RBW-AUTOGEN
  8144. ></RBW-MARKER
  8145. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  8146. ></LN.LIST.NUM
  8147. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  8148. ></RBW-AUTOGEN
  8149. ></RBW-MARKER
  8150. ><RBW-PARABODY>If you are running the license server software on this machine, or your license file is stored locally, the default is C;\Cayenne\Flexlm\license\cayenne.dat. </RBW-PARABODY
  8151. ></LN2.LIST.NUM.2
  8152. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  8153. ></RBW-AUTOGEN
  8154. ></RBW-MARKER
  8155. ><RBW-PARABODY>If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  8156. ></LN2.LIST.NUM.2
  8157. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  8158. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  8159. ></RBW-AUTOGEN
  8160. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a semi&truehy;colon (;).</N2.NOTE.2
  8161. ><LR.LIST.RESULT>The installation script installs menus in the Start menu, and installs the Cayenne Repository Broker as a system service. </LR.LIST.RESULT
  8162. ><LR.LIST.RESULT>You are returned to the Cayenne Install Wizard.</LR.LIST.RESULT
  8163. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>19&rbwtab;</CX5FX5FZLIST.NUMBER
  8164. ></RBW-AUTOGEN
  8165. ></RBW-MARKER
  8166. ><RBW-PARABODY>Click Exit.</RBW-PARABODY
  8167. ></LN.LIST.NUM
  8168. ><LR.LIST.RESULT>A dialog box is displayed asking if you want to reboot now or later for your changes to take effect. </LR.LIST.RESULT
  8169. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>20&rbwtab;</CX5FX5FZLIST.NUMBER
  8170. ></RBW-AUTOGEN
  8171. ></RBW-MARKER
  8172. ><RBW-PARABODY>Select Now and click on OK.</RBW-PARABODY
  8173. ></LN.LIST.NUM
  8174. ></LABEL
  8175. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8176. >Next step</L.LABEL
  8177. ><B.BODY>To complete the ObjectTeam installation on the Master server, create a repository for your project data, as described in <RBW-XREF REFID="10971" TYPE="XREF-TEXTCOPY">Create a Cayenne Repository</RBW-XREF
  8178. >. </B.BODY
  8179. ></LABEL
  8180. ></SUBSECTION
  8181. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10971"></RBW-ANCHOR
  8182. >Create a Cayenne Repository</SS.SUBSEC.HEAD
  8183. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8184. >Introduction</L.LABEL
  8185. ><B.BODY>After you have installed the ObjectTeam Master server software from the CD, and rebooted your system to automatically start the ObjectTeam system services, create a repository for your project data. </B.BODY
  8186. ></LABEL
  8187. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8188. >How to create a repository </L.LABEL
  8189. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8190. ></RBW-AUTOGEN
  8191. ></RBW-MARKER
  8192. ><RBW-PARABODY>To create a repository:</RBW-PARABODY
  8193. ></P.PROCEDURE
  8194. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8195. ></RBW-AUTOGEN
  8196. ></RBW-MARKER
  8197. ><RBW-PARABODY>Log on to the Master server (as administrator under Windows NT).</RBW-PARABODY
  8198. ></LN.LIST.NUM
  8199. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8200. ></RBW-AUTOGEN
  8201. ></RBW-MARKER
  8202. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows 95:</CX5FX5FFILE.NAME
  8203. > Make sure that the ObjectTeam Broker service started up at boot time in a DOS window. If not, reboot your system.</RBW-PARABODY
  8204. ></LN.LIST.NUM
  8205. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  8206. ></RBW-AUTOGEN
  8207. ></RBW-MARKER
  8208. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  8209. > Check that the ObjectTeam Broker service is running:</RBW-PARABODY
  8210. ></LN.LIST.NUM
  8211. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  8212. ></RBW-AUTOGEN
  8213. ></RBW-MARKER
  8214. ><RBW-PARABODY>Select Start | Settings | Control Panel.</RBW-PARABODY
  8215. ></LN2.LIST.NUM.2
  8216. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  8217. ></RBW-AUTOGEN
  8218. ></RBW-MARKER
  8219. ><RBW-PARABODY>Double&truehy;click on the Services icon.</RBW-PARABODY
  8220. ></LN2.LIST.NUM.2
  8221. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  8222. ></RBW-AUTOGEN
  8223. ></RBW-MARKER
  8224. ><RBW-PARABODY>In the Services window, make sure that the word “Started” appears next to the Cayenne Repository Broker Service.</RBW-PARABODY
  8225. ></LN2.LIST.NUM.2
  8226. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  8227. ></RBW-AUTOGEN
  8228. >All logging for this service is dumped into the file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  8229. >\logs\ot_broker.log.</N2.NOTE.2
  8230. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  8231. ></RBW-AUTOGEN
  8232. ></RBW-MARKER
  8233. ><RBW-PARABODY>Select Start | Programs | Cayenne Repository | Corporate Management.</RBW-PARABODY
  8234. ></LN.LIST.NUM
  8235. ><LR.LIST.RESULT>The Corporate Management tool appears.</LR.LIST.RESULT
  8236. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  8237. ></RBW-AUTOGEN
  8238. ></RBW-MARKER
  8239. ><RBW-PARABODY>Select File | New...</RBW-PARABODY
  8240. ></LN.LIST.NUM
  8241. ><LR.LIST.RESULT>The New Repository dialog appears.</LR.LIST.RESULT
  8242. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00023.unk" origfile="pics/newrepos.gif" origtype="X" origdoc="../../sources/ignt/igntinst.fm5.mif"></RBW-GRAPHIC
  8243. ></FA2.FIGURE.ANCHOR.2
  8244. ><LT.LIST.TEXT>All fields are explained below.</LT.LIST.TEXT
  8245. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  8246. ></RBW-AUTOGEN
  8247. ></RBW-MARKER
  8248. ><RBW-PARABODY>Fill in the fields, then click OK.</RBW-PARABODY
  8249. ></LN.LIST.NUM
  8250. ><LR.LIST.RESULT>A Monitor window is started which runs the dbserver command to create the repository. If the repository is created successfully, it becomes selected in the Corporate Management tool.</LR.LIST.RESULT
  8251. ></LABEL
  8252. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8253. >Fields</L.LABEL
  8254. ><B.BODY>The New Repository dialog contains the following fields:</B.BODY
  8255. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="138p"><COLSPEC COLNAME="2" COLWIDTH="309p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Field</CELLHEADING
  8256. ></ENTRY
  8257. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  8258. ></ENTRY
  8259. ></RBW-ROW
  8260. ></THEAD
  8261. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate name</CELLBODY
  8262. ></ENTRY
  8263. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the corporate repository. This will appear as the corporate object (that is the top level) in the ObjectTeam Browser.</CELLBODY
  8264. ></ENTRY
  8265. ></RBW-ROW
  8266. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make this repository the default</CELLBODY
  8267. ></ENTRY
  8268. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This makes this repository the one that will be displayed in your Browser. You should select this.</CELLBODY
  8269. ></ENTRY
  8270. ></RBW-ROW
  8271. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Directory in which to create the repository</CELLBODY
  8272. ></ENTRY
  8273. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> The full pathname of the directory in which the file&truehy;system part of the repository is stored. The recommended value is C:\Cayenne\repos.</CELLBODY
  8274. ></ENTRY
  8275. ></RBW-ROW
  8276. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>User Environment Root directory</CELLBODY
  8277. ></ENTRY
  8278. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional. The directory in which all generated files, such as code files, are stored. The value specified here is assigned to the corporate&truehy;level File System Path Part property. Cayenne strongly recommends that you specify a directory on a network drive.</CELLBODY
  8279. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  8280. > See the discussion of the <CX5FX5FTERM>user environment</CX5FX5FTERM
  8281. > in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  8282. ><CX5FX5FTITLE></CX5FX5FTITLE
  8283. > for more information about the File System Path Part property.</CELLBODY
  8284. ></ENTRY
  8285. ></RBW-ROW
  8286. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database name</CELLBODY
  8287. ></ENTRY
  8288. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> This is the name of the database to be created.</CELLBODY
  8289. ></ENTRY
  8290. ></RBW-ROW
  8291. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database directory</CELLBODY
  8292. ></ENTRY
  8293. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The full pathname of the directory in which database files are stored. The recommended value is C:\Cayenne\repos.</CELLBODY
  8294. ></ENTRY
  8295. ></RBW-ROW
  8296. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database password</CELLBODY
  8297. ></ENTRY
  8298. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>You specify a password for the database here. This is used by ObjectTeam to access the database. To enter a password, click on the Enter button. This opens an entry dialog in which you can enter the password. The password must start with a letter. You cannot click OK until you have entered a password. </CELLBODY
  8299. ></ENTRY
  8300. ></RBW-ROW
  8301. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database host</CELLBODY
  8302. ></ENTRY
  8303. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional. The name of the machine on which SQL Anywhere is running. Only fill this in if you are creating a repository on a Slave server. Do not fill it in if you are creating a repository on the Master server (the default situation).</CELLBODY
  8304. ></ENTRY
  8305. ></RBW-ROW
  8306. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database server</CELLBODY
  8307. ></ENTRY
  8308. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional: This is the name of the SQL Anywhere server. (Note this does not refer to the machine name.) Only fill this in if you are running SQL Anywhere on a machine other than the Master server. Do not fill it in if you are running SQL Anywhere on the Master server (the default situation).</CELLBODY
  8309. ></ENTRY
  8310. ></RBW-ROW
  8311. ></TBODY
  8312. ></TGROUP
  8313. ></RBW-TABLE
  8314. ></LABEL
  8315. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8316. >Short pathnames</L.LABEL
  8317. ><B.BODY>Do not enter pathnames containing spaces in the Repository directory or Database directory fields. Use the short name instead. For example, instead of:</B.BODY
  8318. ><EM.EXAMPLE.MONO>D:\Objectteam data</EM.EXAMPLE.MONO
  8319. ><B.BODY>use:</B.BODY
  8320. ><EM.EXAMPLE.MONO>D:\Object~1</EM.EXAMPLE.MONO
  8321. ><B.BODY>Check the properties of the directory to find the actual short name.</B.BODY
  8322. ></LABEL
  8323. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8324. >Checking your repository</L.LABEL
  8325. ><B.BODY>To check if your repository has been created successfully, open the Browser. </B.BODY
  8326. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8327. ></RBW-AUTOGEN
  8328. ></RBW-MARKER
  8329. ><RBW-PARABODY>To start the Browser:</RBW-PARABODY
  8330. ></P.PROCEDURE
  8331. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8332. ></RBW-AUTOGEN
  8333. ></RBW-MARKER
  8334. ><RBW-PARABODY>In the Corporate Management tool, if the repository is not already selected, select View | Refresh and select the new repository.</RBW-PARABODY
  8335. ></LN.LIST.NUM
  8336. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8337. ></RBW-AUTOGEN
  8338. ></RBW-MARKER
  8339. ><RBW-PARABODY>Select File | Open. </RBW-PARABODY
  8340. ></LN.LIST.NUM
  8341. ><LR.LIST.RESULT>The Browser opens.</LR.LIST.RESULT
  8342. ></LABEL
  8343. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8344. >Next steps</L.LABEL
  8345. ><B.BODY>ObjectTeam consists of a base product and a number of optional features. Each optional feature is implemented as an ObjectTeam module. If you have purchased any such feature, the corresponding modules should first be activated.</B.BODY
  8346. ><B.BODY>For details on how to activate modules, go to <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Activating Modules</RBW-XREF
  8347. >.</B.BODY
  8348. ></LABEL
  8349. ></SUBSECTION
  8350. ></SECTION
  8351. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="13878"></RBW-ANCHOR
  8352. >Installing an ObjectTeam Slave Server</S.SECTION.HEAD
  8353. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8354. >Introduction</L.LABEL
  8355. ><B.BODY>This section explains how to install ObjectTeam on a machine running as Slave server in a client/server configuration under Windows NT.</B.BODY
  8356. ><B.BODY>For more information on this configuration, see <RBW-XREF REFID="12336" TYPE="XREF-TEXTCOPY">Choosing an Installation Type</RBW-XREF
  8357. >.</B.BODY
  8358. ><B.BODY>Before you install a Slave server, you must have an ObjectTeam Master server in your network.</B.BODY
  8359. ></LABEL
  8360. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8361. >Steps</L.LABEL
  8362. ><B.BODY>Installation of an ObjectTeam Slave server involves the following steps:</B.BODY
  8363. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="57p"><COLSPEC COLNAME="2" COLWIDTH="393p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  8364. ></ENTRY
  8365. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  8366. ></ENTRY
  8367. ></RBW-ROW
  8368. ></THEAD
  8369. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  8370. ></ENTRY
  8371. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40681" TYPE="XREF-TEXTCOPY">Share the Disk Containing the Repository Directory</RBW-XREF
  8372. > (the directory on the Master server on which the file system portion of the repository is stored.</CELLBODY
  8373. ></ENTRY
  8374. ></RBW-ROW
  8375. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  8376. ></ENTRY
  8377. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13606" TYPE="XREF-TEXTCOPY">Verify Your Master Server Requirements</RBW-XREF
  8378. > for the repository database.</CELLBODY
  8379. ></ENTRY
  8380. ></RBW-ROW
  8381. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  8382. ></ENTRY
  8383. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13913" TYPE="XREF-TEXTCOPY">Configure a User Account</RBW-XREF
  8384. ></CELLBODY
  8385. ></ENTRY
  8386. ></RBW-ROW
  8387. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  8388. ></ENTRY
  8389. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="20681" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  8390. > (this also installs the SQL Anywhere database software).</CELLBODY
  8391. ></ENTRY
  8392. ></RBW-ROW
  8393. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  8394. ></ENTRY
  8395. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Optional:</CX5FX5FFILE.NAME
  8396. > Configure ObjectTeam modules as described in <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Chapter 4, Activating Modules</RBW-XREF
  8397. >.</CELLBODY
  8398. ></ENTRY
  8399. ></RBW-ROW
  8400. ></TBODY
  8401. ></TGROUP
  8402. ></RBW-TABLE
  8403. ></LABEL
  8404. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40681"></RBW-ANCHOR
  8405. >Share the Disk Containing the Repository Directory</SS.SUBSEC.HEAD
  8406. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8407. >Introduction</L.LABEL
  8408. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8409. ></RBW-AUTOGEN
  8410. ></RBW-MARKER
  8411. ><RBW-PARABODY>Log on to your Master server as administrator.</RBW-PARABODY
  8412. ></LN.LIST.NUM
  8413. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8414. ></RBW-AUTOGEN
  8415. ></RBW-MARKER
  8416. ><RBW-PARABODY>Open the Explorer, and right&truehy;click on the name of the disk containing the repository directory.</RBW-PARABODY
  8417. ></LN.LIST.NUM
  8418. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  8419. ></RBW-AUTOGEN
  8420. ></RBW-MARKER
  8421. ><RBW-PARABODY>In the context menu, select Sharing.</RBW-PARABODY
  8422. ></LN.LIST.NUM
  8423. ><LR.LIST.RESULT>The Properties window appears.</LR.LIST.RESULT
  8424. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  8425. ></RBW-AUTOGEN
  8426. ></RBW-MARKER
  8427. ><RBW-PARABODY>Select Shared As, and enter a share name for the shared disk(the default is the name of the directory itself).</RBW-PARABODY
  8428. ></LN.LIST.NUM
  8429. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  8430. ></RBW-AUTOGEN
  8431. ></RBW-MARKER
  8432. ><RBW-PARABODY>Click OK to share this disk.</RBW-PARABODY
  8433. ></LN.LIST.NUM
  8434. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  8435. ></RBW-AUTOGEN
  8436. ></RBW-MARKER
  8437. ><RBW-PARABODY>Log in to the Slave server as administrator and select Tools | Map Network Drive.</RBW-PARABODY
  8438. ></LN.LIST.NUM
  8439. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  8440. ></RBW-AUTOGEN
  8441. ></RBW-MARKER
  8442. ><RBW-PARABODY>In the Shared Directories list, locate the shared disk and select it.</RBW-PARABODY
  8443. ></LN.LIST.NUM
  8444. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  8445. ></RBW-AUTOGEN
  8446. ></RBW-MARKER
  8447. ><RBW-PARABODY>Make sure the Reconnect at Logon option is checked.</RBW-PARABODY
  8448. ></LN.LIST.NUM
  8449. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  8450. ></RBW-AUTOGEN
  8451. ></RBW-MARKER
  8452. ><RBW-PARABODY>Click OK to mount this disk.</RBW-PARABODY
  8453. ></LN.LIST.NUM
  8454. ></LABEL
  8455. ></SUBSECTION
  8456. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13606"></RBW-ANCHOR
  8457. >Verify Your Master Server Requirements</SS.SUBSEC.HEAD
  8458. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8459. >Introduction</L.LABEL
  8460. ><B.BODY>If you want to install a Slave server, be aware of the following requirement:</B.BODY
  8461. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  8462. ></RBW-AUTOGEN
  8463. ></RBW-MARKER
  8464. ><RBW-PARABODY>When you installed a Master server, you should have selected the option Client/Server. Selecting this enables an SQL Anywhere database client on the Slave server to connect to the SQL Anywhere server on the Master server.</RBW-PARABODY
  8465. ></LB.LIST.BULLET
  8466. ></LABEL
  8467. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8468. >How to check your SQL Anywhere Service</L.LABEL
  8469. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8470. ></RBW-AUTOGEN
  8471. ></RBW-MARKER
  8472. ><RBW-PARABODY>To check your SQL Anywhere service on the Master server:</RBW-PARABODY
  8473. ></P.PROCEDURE
  8474. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8475. ></RBW-AUTOGEN
  8476. ></RBW-MARKER
  8477. ><RBW-PARABODY>Log in to the Master server as administrator.</RBW-PARABODY
  8478. ></LN.LIST.NUM
  8479. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8480. ></RBW-AUTOGEN
  8481. ></RBW-MARKER
  8482. ><RBW-PARABODY>Select Start | Programs | Cayenne Repository | Service Manager. </RBW-PARABODY
  8483. ></LN.LIST.NUM
  8484. ><LR.LIST.RESULT>The Service Manager window appears.</LR.LIST.RESULT
  8485. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00024.unk" origfile="pics/servmang.gif" origtype="X" origdoc="../../sources/ignt/igntinst.fm5.mif"></RBW-GRAPHIC
  8486. ></FA2.FIGURE.ANCHOR.2
  8487. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  8488. ></RBW-AUTOGEN
  8489. ></RBW-MARKER
  8490. ><RBW-PARABODY>The name OTservice should appear in the Service Name field, and the Start button should be depressed.</RBW-PARABODY
  8491. ></LN.LIST.NUM
  8492. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  8493. ></RBW-AUTOGEN
  8494. ></RBW-MARKER
  8495. ><RBW-PARABODY>If the service is not running, click the Start button.</RBW-PARABODY
  8496. ></LN.LIST.NUM
  8497. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  8498. ></RBW-AUTOGEN
  8499. ></RBW-MARKER
  8500. ><RBW-PARABODY>If the service does not exist follow the steps below.</RBW-PARABODY
  8501. ></LN.LIST.NUM
  8502. ></LABEL
  8503. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8504. >How to create a new service</L.LABEL
  8505. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8506. ></RBW-AUTOGEN
  8507. ></RBW-MARKER
  8508. ><RBW-PARABODY>To create a new service:</RBW-PARABODY
  8509. ></P.PROCEDURE
  8510. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8511. ></RBW-AUTOGEN
  8512. ></RBW-MARKER
  8513. ><RBW-PARABODY>In the SQL Anywhere Service Manager window, click New.</RBW-PARABODY
  8514. ></LN.LIST.NUM
  8515. ><LR.LIST.RESULT>The Service Type window appears.</LR.LIST.RESULT
  8516. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00025.unk" origfile="pics/servtype.gif" origtype="X" origdoc="../../sources/ignt/igntinst.fm5.mif"></RBW-GRAPHIC
  8517. ></FA2.FIGURE.ANCHOR.2
  8518. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8519. ></RBW-AUTOGEN
  8520. ></RBW-MARKER
  8521. ><RBW-PARABODY>Network Server is the default. Click OK to accept this.</RBW-PARABODY
  8522. ></LN.LIST.NUM
  8523. ><LR.LIST.RESULT>The Edit Service Configuration window appears.</LR.LIST.RESULT
  8524. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00026.unk" origfile="pics/servcnfg.gif" origtype="X" origdoc="../../sources/ignt/igntinst.fm5.mif"></RBW-GRAPHIC
  8525. ></FA2.FIGURE.ANCHOR.2
  8526. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  8527. ></RBW-AUTOGEN
  8528. ></RBW-MARKER
  8529. ><RBW-PARABODY>Enter OTservice as the name of the new service. </RBW-PARABODY
  8530. ></LN.LIST.NUM
  8531. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  8532. ></RBW-AUTOGEN
  8533. ></RBW-MARKER
  8534. ><RBW-PARABODY>In the Parameters field, enter <CX5FX5FINPUT>&truehy;n <RBWAUTO-0007>server</RBWAUTO-0007
  8535. ></CX5FX5FINPUT
  8536. >, where <CX5FX5FTERM>server </CX5FX5FTERM
  8537. >is the name of the Master server.</RBW-PARABODY
  8538. ></LN.LIST.NUM
  8539. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  8540. ></RBW-AUTOGEN
  8541. ></RBW-MARKER
  8542. ><RBW-PARABODY>Select the Automatic Startup radio button.</RBW-PARABODY
  8543. ></LN.LIST.NUM
  8544. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  8545. ></RBW-AUTOGEN
  8546. ></RBW-MARKER
  8547. ><RBW-PARABODY>Make sure the path for the SQL Anywhere executable is correct. If it is not, click on Path and locate the executable (by default C:\Cayenne\Tools\Sqlany55\Win32\Dbsrv50.exe). </RBW-PARABODY
  8548. ></LN.LIST.NUM
  8549. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  8550. ></RBW-AUTOGEN
  8551. ></RBW-MARKER
  8552. ><RBW-PARABODY>Select the check box Allow Service To Interact With Desktop.</RBW-PARABODY
  8553. ></LN.LIST.NUM
  8554. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  8555. ></RBW-AUTOGEN
  8556. ></RBW-MARKER
  8557. ><RBW-PARABODY>Click OK to register your settings.</RBW-PARABODY
  8558. ></LN.LIST.NUM
  8559. ></LABEL
  8560. ></SUBSECTION
  8561. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13913"></RBW-ANCHOR
  8562. >Configure a User Account</SS.SUBSEC.HEAD
  8563. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8564. >Introduction</L.LABEL
  8565. ><B.BODY>If you are planning to install a Slave server, you must have correctly configured a user account.</B.BODY
  8566. ></LABEL
  8567. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8568. >User account</L.LABEL
  8569. ><B.BODY>When you install an ObjectTeam Slave server, you specify, among other things:</B.BODY
  8570. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  8571. ></RBW-AUTOGEN
  8572. ></RBW-MARKER
  8573. ><RBW-PARABODY>The Master server on which your ObjectTeam services are running</RBW-PARABODY
  8574. ></LB.LIST.BULLET
  8575. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  8576. ></RBW-AUTOGEN
  8577. ></RBW-MARKER
  8578. ><RBW-PARABODY>The pathname of the repository drive</RBW-PARABODY
  8579. ></LB.LIST.BULLET
  8580. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  8581. ></RBW-AUTOGEN
  8582. ></RBW-MARKER
  8583. ><RBW-PARABODY>Details of an account under which the Slave can log onto the Master to access these services</RBW-PARABODY
  8584. ></LB.LIST.BULLET
  8585. ><B.BODY>The ObjectTeam services must be run under this account so that the remote disk can be attached. The account should be an account in the Administrator group, in any Domain. The account must have the right “log on as a service”. If you specify an account that does not have the “log on as a service” right, then when the ot_broker attempts to start, when you reboot, you will get an error.</B.BODY
  8586. ></LABEL
  8587. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8588. >Assigning “log on as service” rights</L.LABEL
  8589. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8590. ></RBW-AUTOGEN
  8591. ></RBW-MARKER
  8592. ><RBW-PARABODY>To give an account “log on as service” rights:</RBW-PARABODY
  8593. ></P.PROCEDURE
  8594. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8595. ></RBW-AUTOGEN
  8596. ></RBW-MARKER
  8597. ><RBW-PARABODY>Log on as local administrator onto the Slave server.</RBW-PARABODY
  8598. ></LN.LIST.NUM
  8599. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8600. ></RBW-AUTOGEN
  8601. ></RBW-MARKER
  8602. ><RBW-PARABODY>Select Start | Programs | Administrative Tools | User Manager.</RBW-PARABODY
  8603. ></LN.LIST.NUM
  8604. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  8605. ></RBW-AUTOGEN
  8606. ></RBW-MARKER
  8607. ><RBW-PARABODY>Select  Policies | UserRights.</RBW-PARABODY
  8608. ></LN.LIST.NUM
  8609. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  8610. ></RBW-AUTOGEN
  8611. ></RBW-MARKER
  8612. ><RBW-PARABODY>Click on Show advanced user rights.</RBW-PARABODY
  8613. ></LN.LIST.NUM
  8614. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  8615. ></RBW-AUTOGEN
  8616. ></RBW-MARKER
  8617. ><RBW-PARABODY>Select “Log on as a service” from the Right menu.</RBW-PARABODY
  8618. ></LN.LIST.NUM
  8619. ><B.BODY>If the user (or group that the user belongs to) is not shown, proceed with the following steps.</B.BODY
  8620. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  8621. ></RBW-AUTOGEN
  8622. ></RBW-MARKER
  8623. ><RBW-PARABODY>Click on Add. A form is displayed.</RBW-PARABODY
  8624. ></LN.LIST.NUM
  8625. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  8626. ></RBW-AUTOGEN
  8627. ></RBW-MARKER
  8628. ><RBW-PARABODY>Select a machine or domain from the List Names From field. </RBW-PARABODY
  8629. ></LN.LIST.NUM
  8630. ><LN.LIST.NUM>The machine or domain should be appropriate for the administrator Account specified.</LN.LIST.NUM
  8631. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  8632. ></RBW-AUTOGEN
  8633. ></RBW-MARKER
  8634. ><RBW-PARABODY>Select the Administrator group.</RBW-PARABODY
  8635. ></LN.LIST.NUM
  8636. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  8637. ></RBW-AUTOGEN
  8638. ></RBW-MARKER
  8639. ><RBW-PARABODY>Click on Add.</RBW-PARABODY
  8640. ></LN.LIST.NUM
  8641. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  8642. ></RBW-AUTOGEN
  8643. ></RBW-MARKER
  8644. ><RBW-PARABODY>Click OK, and then OK again.</RBW-PARABODY
  8645. ></LN.LIST.NUM
  8646. ></LABEL
  8647. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8648. >Changing your password</L.LABEL
  8649. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8650. ></RBW-AUTOGEN
  8651. ></RBW-MARKER
  8652. ><RBW-PARABODY>If at any time, you change the password of your account, you must do the following:</RBW-PARABODY
  8653. ></P.PROCEDURE
  8654. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8655. ></RBW-AUTOGEN
  8656. ></RBW-MARKER
  8657. ><RBW-PARABODY>On the Slave server, open the Services Control Panel.</RBW-PARABODY
  8658. ></LN.LIST.NUM
  8659. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8660. ></RBW-AUTOGEN
  8661. ></RBW-MARKER
  8662. ><RBW-PARABODY>Select the ObjectTeam Broker Service and click Startup, and type in the new password for the user account in the form that is displayed.</RBW-PARABODY
  8663. ></LN.LIST.NUM
  8664. ><LR.LIST.RESULT>You will get a message back that says the account has been granted the “log on as a service” right.</LR.LIST.RESULT
  8665. ></LABEL
  8666. ></SUBSECTION
  8667. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20681"></RBW-ANCHOR
  8668. >Install the ObjectTeam Product Files</SS.SUBSEC.HEAD
  8669. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8670. >How to install the product files</L.LABEL
  8671. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8672. ></RBW-AUTOGEN
  8673. ></RBW-MARKER
  8674. ><RBW-PARABODY>To install the ObjectTeam product files:</RBW-PARABODY
  8675. ></P.PROCEDURE
  8676. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8677. ></RBW-AUTOGEN
  8678. ></RBW-MARKER
  8679. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  8680. ></LN.LIST.NUM
  8681. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8682. ></RBW-AUTOGEN
  8683. ></RBW-MARKER
  8684. ><RBW-PARABODY>Shut down any other running applications, including DOS windows.</RBW-PARABODY
  8685. ></LN.LIST.NUM
  8686. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  8687. ></RBW-AUTOGEN
  8688. ></RBW-MARKER
  8689. ><RBW-PARABODY>Insert the ObjectTeam CD into the CD drive. (This can be a local or networked CD drive.)</RBW-PARABODY
  8690. ></LN.LIST.NUM
  8691. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  8692. ></RBW-AUTOGEN
  8693. ></RBW-MARKER
  8694. ><RBW-PARABODY>In the Windows Explorer, double&truehy;click on <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  8695. >:\Setup.exe.</RBW-PARABODY
  8696. ></LN.LIST.NUM
  8697. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  8698. ></RBW-AUTOGEN
  8699. ></RBW-MARKER
  8700. ><RBW-PARABODY>Proceed through the Welcome screen to the Select Products dialog box.</RBW-PARABODY
  8701. ></LN.LIST.NUM
  8702. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  8703. ></RBW-AUTOGEN
  8704. ></RBW-MARKER
  8705. ><RBW-PARABODY>The following choices are presented:</RBW-PARABODY
  8706. ></LN.LIST.NUM
  8707. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8708. ></RBW-MARKER
  8709. ><RBW-PARABODY>ObjectTeam</RBW-PARABODY
  8710. ></LB2.LIST.BULLET.2
  8711. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8712. ></RBW-MARKER
  8713. ><RBW-PARABODY>DocExpress</RBW-PARABODY
  8714. ></LB2.LIST.BULLET.2
  8715. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8716. ></RBW-MARKER
  8717. ><RBW-PARABODY>DocIt</RBW-PARABODY
  8718. ></LB2.LIST.BULLET.2
  8719. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  8720. ></RBW-AUTOGEN
  8721. ></RBW-MARKER
  8722. ><RBW-PARABODY>Select ObjectTeam.</RBW-PARABODY
  8723. ></LN.LIST.NUM
  8724. ><LT.LIST.TEXT>For details on installing DocIt or DocExpress, see <RBW-XREF REFID="16254" TYPE="XREF-TEXTCOPY">Appendix A, Installing DocExpress and DocIt</RBW-XREF
  8725. >. </LT.LIST.TEXT
  8726. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  8727. ></RBW-AUTOGEN
  8728. ></RBW-MARKER
  8729. ><RBW-PARABODY>To view ObjectTeam’s Read Me First Notes, click the Product Notes button. </RBW-PARABODY
  8730. ></LN.LIST.NUM
  8731. ><LT.LIST.TEXT>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You <CX5FX5FFILE.NAME>must</CX5FX5FFILE.NAME
  8732. > read these notes before starting installation!</LT.LIST.TEXT
  8733. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  8734. ></RBW-AUTOGEN
  8735. ></RBW-MARKER
  8736. ><RBW-PARABODY>Click Install to proceed with the installation.</RBW-PARABODY
  8737. ></LN.LIST.NUM
  8738. ><LR.LIST.RESULT>The Product Requirements dialog box shows you the complete list of hardware and software requirements for your selected components. </LR.LIST.RESULT
  8739. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  8740. ></RBW-AUTOGEN
  8741. ></RBW-MARKER
  8742. ><RBW-PARABODY>If your workstation meets all of the listed hardware and software requirements, click Continue to proceed with installation.</RBW-PARABODY
  8743. ></LN.LIST.NUM
  8744. ><LR.LIST.RESULT>The ObjectTeam install program starts up.</LR.LIST.RESULT
  8745. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  8746. ></RBW-AUTOGEN
  8747. ></RBW-MARKER
  8748. ><RBW-PARABODY>Proceed through the Welcome dialog.</RBW-PARABODY
  8749. ></LN.LIST.NUM
  8750. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  8751. ></RBW-AUTOGEN
  8752. ></RBW-MARKER
  8753. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows 95 only:</CX5FX5FFILE.NAME
  8754. > A dialog box is displayed asking you to make sure that TCP/IP is configured. For details on how to do this, refer to your Windows 95 documentation or Online Help. Click OK to continue.</RBW-PARABODY
  8755. ></LN.LIST.NUM
  8756. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  8757. ></RBW-AUTOGEN
  8758. ></RBW-MARKER
  8759. ><RBW-PARABODY>The Select Products dialog box displays the default selection of components to install. For a Slave server installation, select Server files, Sybase SQL Anywhere files, and Client files. Optionally, select Help files and Product Documentation files. </RBW-PARABODY
  8760. ></LN.LIST.NUM
  8761. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  8762. ></RBW-AUTOGEN
  8763. >If you want to use an existing Sybase SQL Anywhere 5.5 installation, do not select the option to install this software. However, before you can use your existing installation, you must move the SQL Anywhere settings for SQLANY and PATH to the Windows NT <CX5FX5FTERM>system</CX5FX5FTERM
  8764. > environment. If you do choose to install the SQL Anywhere software, it is installed in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  8765. >\sqlany55 directory and these variables are set automatically. </N2.NOTE.2
  8766. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  8767. ></RBW-AUTOGEN
  8768. ></RBW-MARKER
  8769. ><RBW-PARABODY>By default, the ObjectTeam software is installed in C:\Cayenne\Tools\. If you wish to install ObjectTeam elsewhere, click on the Browse... button and select the desired location. </RBW-PARABODY
  8770. ></LN.LIST.NUM
  8771. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  8772. ></RBW-AUTOGEN
  8773. >Click the Disk Space button to display available disk space information about available hard drives.</N2.NOTE.2
  8774. ><LR.LIST.RESULT>The selected components are installed. A progress bar informs you of the progress of the installation.</LR.LIST.RESULT
  8775. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  8776. ></RBW-AUTOGEN
  8777. ></RBW-MARKER
  8778. ><RBW-PARABODY>The Server Type dialog asks you to identify the type of server you want to install: <CX5FX5FFILE.NAME>Master</CX5FX5FFILE.NAME
  8779. > or <CX5FX5FFILE.NAME>Slave</CX5FX5FFILE.NAME
  8780. >. Select Slave.</RBW-PARABODY
  8781. ></LN.LIST.NUM
  8782. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>16&rbwtab;</CX5FX5FZLIST.NUMBER
  8783. ></RBW-AUTOGEN
  8784. ></RBW-MARKER
  8785. ><RBW-PARABODY>The Slave Server Configuration dialog asks you for the Master server hostname and the UNC path. Enter these.</RBW-PARABODY
  8786. ></LN.LIST.NUM
  8787. ><LT.LIST.TEXT>The UNC (Universal Naming Convention) is the share name of the disk on the Master server on which the repository directory is stored. It must have the following format:</LT.LIST.TEXT
  8788. ><EM.EXAMPLE.MONO>\\<CX5FX5FTERM>machine_name</CX5FX5FTERM
  8789. >\<CX5FX5FTERM>shared_disk_alias</CX5FX5FTERM
  8790. > </EM.EXAMPLE.MONO
  8791. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>17&rbwtab;</CX5FX5FZLIST.NUMBER
  8792. ></RBW-AUTOGEN
  8793. ></RBW-MARKER
  8794. ><RBW-PARABODY>The User Account dialog asks you for details of the user account under which the services will be started. The services must be run under this account so that the remote disk can be attached. </RBW-PARABODY
  8795. ></LN.LIST.NUM
  8796. ><LT.LIST.TEXT>The account should be an account in the Administrator group, in any Domain. The account must have the right “log on as a service”. If you specify an account that does not have the “log on as a service” right, then when the ot_broker attempts to start, you will get an error. For details on how to give an account this right, see <RBW-XREF REFID="13913" TYPE="XREF-TEXTCOPY">Configure a User Account</RBW-XREF
  8797. >.</LT.LIST.TEXT
  8798. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>18&rbwtab;</CX5FX5FZLIST.NUMBER
  8799. ></RBW-AUTOGEN
  8800. ></RBW-MARKER
  8801. ><RBW-PARABODY>The Server Information dialog asks you to enter the broker port of the Master server.</RBW-PARABODY
  8802. ></LN.LIST.NUM
  8803. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  8804. ></RBW-AUTOGEN
  8805. >The server name is the name (not the IP address) of the ObjectTeam Master server. </N2.NOTE.2
  8806. ><LT.LIST.TEXT>The default broker port is 1825. You must enter the same number as you entered when you installed the Master server. If the numbers don’t match, the client will not be able to communicate with the ot_broker on the Master server. If you are in doubt as to the correct number, check the value of the M4_brokerport variable in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  8807. >/etc/m4env.m4env file on the Master server.</LT.LIST.TEXT
  8808. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>19&rbwtab;</CX5FX5FZLIST.NUMBER
  8809. ></RBW-AUTOGEN
  8810. ></RBW-MARKER
  8811. ><RBW-PARABODY>The Repository Name dialog asks you for the name of the repository you want to connect to. Enter a repository name and click Next.</RBW-PARABODY
  8812. ></LN.LIST.NUM
  8813. ><LR.LIST.RESULT>The repository name is entered as the M4_levelpath variable in the M4_home\etc\m4env.m4env file. </LR.LIST.RESULT
  8814. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>20&rbwtab;</CX5FX5FZLIST.NUMBER
  8815. ></RBW-AUTOGEN
  8816. ></RBW-MARKER
  8817. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  8818. ></LN.LIST.NUM
  8819. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  8820. ></RBW-AUTOGEN
  8821. ></RBW-MARKER
  8822. ><RBW-PARABODY>If you are running the license server software on this machine, or your license file is stored locally, the default is C;\Cayenne\Flexlm\license\cayenne.dat. </RBW-PARABODY
  8823. ></LN2.LIST.NUM.2
  8824. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  8825. ></RBW-AUTOGEN
  8826. ></RBW-MARKER
  8827. ><RBW-PARABODY>If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  8828. ></LN2.LIST.NUM.2
  8829. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  8830. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  8831. ></RBW-AUTOGEN
  8832. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a semi&truehy;colon (;).</N2.NOTE.2
  8833. ><LR.LIST.RESULT>The installation script installs menus in the Start menu, and installs the Cayenne Repository Broker as a system service. </LR.LIST.RESULT
  8834. ><LR.LIST.RESULT>You are returned to the Cayenne Install Wizard.</LR.LIST.RESULT
  8835. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>21&rbwtab;</CX5FX5FZLIST.NUMBER
  8836. ></RBW-AUTOGEN
  8837. ></RBW-MARKER
  8838. ><RBW-PARABODY>Click Exit.</RBW-PARABODY
  8839. ></LN.LIST.NUM
  8840. ><LR.LIST.RESULT>A dialog box is displayed asking if you want to reboot now or later for your changes to take effect. </LR.LIST.RESULT
  8841. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>22&rbwtab;</CX5FX5FZLIST.NUMBER
  8842. ></RBW-AUTOGEN
  8843. ></RBW-MARKER
  8844. ><RBW-PARABODY>Select Now and click on OK.</RBW-PARABODY
  8845. ></LN.LIST.NUM
  8846. ></LABEL
  8847. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8848. >Next steps</L.LABEL
  8849. ><B.BODY>ObjectTeam consists of a base product and a number of optional features. Each optional feature is implemented as an ObjectTeam module. If you have purchased any such feature, the corresponding modules should first be activated.</B.BODY
  8850. ><B.BODY>For details on how to activate modules, go to <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Activating Modules</RBW-XREF
  8851. >.</B.BODY
  8852. ></LABEL
  8853. ></SUBSECTION
  8854. ></SECTION
  8855. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40840"></RBW-ANCHOR
  8856. >Installing an ObjectTeam Client</S.SECTION.HEAD
  8857. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8858. >Introduction</L.LABEL
  8859. ><B.BODY>This section explains how to install ObjectTeam:</B.BODY
  8860. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  8861. ></RBW-AUTOGEN
  8862. ></RBW-MARKER
  8863. ><RBW-PARABODY>On a machine running as a client in a client/server configuration under Windows NT or Windows 95</RBW-PARABODY
  8864. ></LB.LIST.BULLET
  8865. ><B.BODY>For more information on these configurations, see <RBW-XREF REFID="12336" TYPE="XREF-TEXTCOPY">Choosing an Installation Type</RBW-XREF
  8866. >.</B.BODY
  8867. ><B.BODY>Before you install a client, you must have an ObjectTeam Master server in your network.</B.BODY
  8868. ></LABEL
  8869. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8870. >Steps</L.LABEL
  8871. ><B.BODY>Installation of an ObjectTeam client involves the following steps:</B.BODY
  8872. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="57p"><COLSPEC COLNAME="2" COLWIDTH="393p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  8873. ></ENTRY
  8874. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  8875. ></ENTRY
  8876. ></RBW-ROW
  8877. ></THEAD
  8878. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  8879. ></ENTRY
  8880. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="27349" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  8881. >.</CELLBODY
  8882. ></ENTRY
  8883. ></RBW-ROW
  8884. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  8885. ></ENTRY
  8886. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Optional:</CX5FX5FFILE.NAME
  8887. > Configure ObjectTeam modules as described in <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Chapter 4, Activating Modules</RBW-XREF
  8888. >.</CELLBODY
  8889. ></ENTRY
  8890. ></RBW-ROW
  8891. ></TBODY
  8892. ></TGROUP
  8893. ></RBW-TABLE
  8894. ></LABEL
  8895. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8896. >Before you begin</L.LABEL
  8897. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8898. >Windows 95</SL.SUBLABEL
  8899. ><B.BODY>Before starting, make sure you have user profiles configured, as described in <RBW-XREF REFID="18228" TYPE="XREF-TEXTCOPY">Creating a User Directory (Windows 95 Only)</RBW-XREF
  8900. >.</B.BODY
  8901. ></LABEL
  8902. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27349"></RBW-ANCHOR
  8903. >Install the ObjectTeam Product Files</SS.SUBSEC.HEAD
  8904. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  8905. >How to run the installation</L.LABEL
  8906. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  8907. ></RBW-AUTOGEN
  8908. ></RBW-MARKER
  8909. ><RBW-PARABODY>To run the installation:</RBW-PARABODY
  8910. ></P.PROCEDURE
  8911. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  8912. ></RBW-AUTOGEN
  8913. ></RBW-MARKER
  8914. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  8915. ></LN.LIST.NUM
  8916. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  8917. ></RBW-AUTOGEN
  8918. ></RBW-MARKER
  8919. ><RBW-PARABODY>Shut down any other running applications, including DOS windows.</RBW-PARABODY
  8920. ></LN.LIST.NUM
  8921. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  8922. ></RBW-AUTOGEN
  8923. ></RBW-MARKER
  8924. ><RBW-PARABODY>Insert the ObjectTeam CD into the CD drive. (This can be a local or networked CD drive.)</RBW-PARABODY
  8925. ></LN.LIST.NUM
  8926. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  8927. ></RBW-AUTOGEN
  8928. ></RBW-MARKER
  8929. ><RBW-PARABODY>In the Windows Explorer, double&truehy;click on <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  8930. >:\Setup.exe.</RBW-PARABODY
  8931. ></LN.LIST.NUM
  8932. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  8933. ></RBW-AUTOGEN
  8934. ></RBW-MARKER
  8935. ><RBW-PARABODY>Proceed through the Welcome screen to the Select Products dialog box.</RBW-PARABODY
  8936. ></LN.LIST.NUM
  8937. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  8938. ></RBW-AUTOGEN
  8939. ></RBW-MARKER
  8940. ><RBW-PARABODY>The following choices are presented:</RBW-PARABODY
  8941. ></LN.LIST.NUM
  8942. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8943. ></RBW-MARKER
  8944. ><RBW-PARABODY>ObjectTeam</RBW-PARABODY
  8945. ></LB2.LIST.BULLET.2
  8946. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8947. ></RBW-MARKER
  8948. ><RBW-PARABODY>DocExpress</RBW-PARABODY
  8949. ></LB2.LIST.BULLET.2
  8950. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  8951. ></RBW-MARKER
  8952. ><RBW-PARABODY>DocIt</RBW-PARABODY
  8953. ></LB2.LIST.BULLET.2
  8954. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  8955. ></RBW-AUTOGEN
  8956. ></RBW-MARKER
  8957. ><RBW-PARABODY>Select ObjectTeam.</RBW-PARABODY
  8958. ></LN.LIST.NUM
  8959. ><LT.LIST.TEXT>For details on installing DocIt or DocExpress, see <RBW-XREF REFID="16254" TYPE="XREF-TEXTCOPY">Appendix A, Installing DocExpress and DocIt</RBW-XREF
  8960. >. </LT.LIST.TEXT
  8961. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  8962. ></RBW-AUTOGEN
  8963. ></RBW-MARKER
  8964. ><RBW-PARABODY>To view ObjectTeam’s Read Me First Notes, click the Product Notes button. </RBW-PARABODY
  8965. ></LN.LIST.NUM
  8966. ><LT.LIST.TEXT>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You <CX5FX5FFILE.NAME>must</CX5FX5FFILE.NAME
  8967. > read these notes before starting installation!</LT.LIST.TEXT
  8968. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  8969. ></RBW-AUTOGEN
  8970. ></RBW-MARKER
  8971. ><RBW-PARABODY>Click Install to proceed with the installation.</RBW-PARABODY
  8972. ></LN.LIST.NUM
  8973. ><LR.LIST.RESULT>The Product Requirements dialog box shows you the complete list of hardware and software requirements for your selected components. </LR.LIST.RESULT
  8974. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  8975. ></RBW-AUTOGEN
  8976. ></RBW-MARKER
  8977. ><RBW-PARABODY>If your workstation meets all of the listed hardware and software requirements, click Next to proceed with installation.</RBW-PARABODY
  8978. ></LN.LIST.NUM
  8979. ><LR.LIST.RESULT>The ObjectTeam install program starts up.</LR.LIST.RESULT
  8980. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  8981. ></RBW-AUTOGEN
  8982. ></RBW-MARKER
  8983. ><RBW-PARABODY>Proceed through the Welcome dialog.</RBW-PARABODY
  8984. ></LN.LIST.NUM
  8985. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  8986. ></RBW-AUTOGEN
  8987. ></RBW-MARKER
  8988. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows 95 only:</CX5FX5FFILE.NAME
  8989. > A dialog box is displayed asking you to make sure that TCP/IP is configured. For details on how to do this, refer to your Windows 95 documentation or Online Help. Click OK to continue.</RBW-PARABODY
  8990. ></LN.LIST.NUM
  8991. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  8992. ></RBW-AUTOGEN
  8993. ></RBW-MARKER
  8994. ><RBW-PARABODY>The Select Products dialog box displays the default selection of components to install. For a Client installation, select Client files. Optionally, select Help files and Product Documentation files. </RBW-PARABODY
  8995. ></LN.LIST.NUM
  8996. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  8997. ></RBW-AUTOGEN
  8998. ></RBW-MARKER
  8999. ><RBW-PARABODY>By default, the ObjectTeam software is installed in C:\Cayenne\Tools\. If you wish to install ObjectTeam elsewhere, click on the Browse... button and select the desired location. </RBW-PARABODY
  9000. ></LN.LIST.NUM
  9001. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  9002. ></RBW-AUTOGEN
  9003. >Click the Disk Space button to display available disk space information about available hard drives.</N2.NOTE.2
  9004. ><LR.LIST.RESULT>The selected components are installed. A progress bar informs you of the progress of the installation.</LR.LIST.RESULT
  9005. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  9006. ></RBW-AUTOGEN
  9007. ></RBW-MARKER
  9008. ><RBW-PARABODY>The Server Information dialog asks you to enter the server name and the broker port for this client.</RBW-PARABODY
  9009. ></LN.LIST.NUM
  9010. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  9011. ></RBW-AUTOGEN
  9012. >The server name is the name (not the IP address) of the computer running the ObjectTeam Master or Slave server software. </N2.NOTE.2
  9013. ><LT.LIST.TEXT>The default broker port is 1825. You must enter the same number as you entered when you installed the Master server. If the numbers don’t match, the client will not be able to communicate with the ot_broker on the server. If you are in doubt as to the correct number, check the value of the M4_brokerport variable in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9014. >/etc/m4env.m4env file on the Master server.</LT.LIST.TEXT
  9015. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>16&rbwtab;</CX5FX5FZLIST.NUMBER
  9016. ></RBW-AUTOGEN
  9017. ></RBW-MARKER
  9018. ><RBW-PARABODY>The Repository Name dialog asks you for the name of the repository you want to connect to. Enter a repository name and click Next.</RBW-PARABODY
  9019. ></LN.LIST.NUM
  9020. ><LR.LIST.RESULT>The repository name is entered as the M4_levelpath variable in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9021. >\etc\m4env.m4env file. </LR.LIST.RESULT
  9022. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>17&rbwtab;</CX5FX5FZLIST.NUMBER
  9023. ></RBW-AUTOGEN
  9024. ></RBW-MARKER
  9025. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  9026. ></LN.LIST.NUM
  9027. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  9028. ></RBW-AUTOGEN
  9029. ></RBW-MARKER
  9030. ><RBW-PARABODY>If you are running the license server software on this machine, or your license file is stored locally, the default is C;\Cayenne\Flexlm\license\cayenne.dat. </RBW-PARABODY
  9031. ></LN2.LIST.NUM.2
  9032. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  9033. ></RBW-AUTOGEN
  9034. ></RBW-MARKER
  9035. ><RBW-PARABODY>If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  9036. ></LN2.LIST.NUM.2
  9037. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  9038. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  9039. ></RBW-AUTOGEN
  9040. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a semi&truehy;colon (;).</N2.NOTE.2
  9041. ><LR.LIST.RESULT><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  9042. > The installation script places menus in your Start menu, then sets some system environment variables.</LR.LIST.RESULT
  9043. ><LR.LIST.RESULT><CX5FX5FFILE.NAME>Windows 95:</CX5FX5FFILE.NAME
  9044. > The installation script places menus in your Start menu, then modifies your AUTOEXEC.BAT file to set the system environment variables. </LR.LIST.RESULT
  9045. ><LR.LIST.RESULT>You are returned to the Cayenne Install Wizard.</LR.LIST.RESULT
  9046. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>18&rbwtab;</CX5FX5FZLIST.NUMBER
  9047. ></RBW-AUTOGEN
  9048. ></RBW-MARKER
  9049. ><RBW-PARABODY>Click Exit.</RBW-PARABODY
  9050. ></LN.LIST.NUM
  9051. ><LR.LIST.RESULT>A dialog box is displayed asking if you want to reboot now or later for your changes to take effect. </LR.LIST.RESULT
  9052. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>19&rbwtab;</CX5FX5FZLIST.NUMBER
  9053. ></RBW-AUTOGEN
  9054. ></RBW-MARKER
  9055. ><RBW-PARABODY>Select Now and click on OK.</RBW-PARABODY
  9056. ></LN.LIST.NUM
  9057. ><LR.LIST.RESULT>The setup program then reboots your computer.</LR.LIST.RESULT
  9058. ></LABEL
  9059. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9060. >Testing your installation</L.LABEL
  9061. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9062. ></RBW-AUTOGEN
  9063. ></RBW-MARKER
  9064. ><RBW-PARABODY>To test your installation, start the ObjectTeam Browser:</RBW-PARABODY
  9065. ></P.PROCEDURE
  9066. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9067. ></RBW-AUTOGEN
  9068. ></RBW-MARKER
  9069. ><RBW-PARABODY>Select Start | Programs | Cayenne ObjectTeam | Browser.</RBW-PARABODY
  9070. ></LN.LIST.NUM
  9071. ></LABEL
  9072. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9073. >Next steps</L.LABEL
  9074. ><B.BODY>ObjectTeam consists of a base product and a number of optional features. Each optional feature is implemented as an ObjectTeam module. If you have purchased any such feature, the corresponding modules should first be activated.</B.BODY
  9075. ><B.BODY>For details on how to activate modules, go to <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Activating Modules</RBW-XREF
  9076. >.</B.BODY
  9077. ><B.BODY></B.BODY
  9078. ></LABEL
  9079. ></SUBSECTION
  9080. ></SECTION
  9081. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22435"></RBW-ANCHOR
  9082. >Running ObjectTeam Remotely</S.SECTION.HEAD
  9083. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9084. >How to start the ObjectTeam Browser remotely</L.LABEL
  9085. ><B.BODY>Normally you will run the ObjectTeam client software from the machine it is installed on. It is also possible to install the client software on one client or server machine and run it from another machine over the network.</B.BODY
  9086. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9087. ></RBW-AUTOGEN
  9088. ></RBW-MARKER
  9089. ><RBW-PARABODY>To run the client software on a remote machine:</RBW-PARABODY
  9090. ></P.PROCEDURE
  9091. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9092. ></RBW-AUTOGEN
  9093. ></RBW-MARKER
  9094. ><RBW-PARABODY>Share the drive on which the client software is installed:</RBW-PARABODY
  9095. ></LN.LIST.NUM
  9096. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  9097. ></RBW-AUTOGEN
  9098. ></RBW-MARKER
  9099. ><RBW-PARABODY>On the machine on which you want to display the Browser, open the Explorer and select Tools | Map Network Drive.</RBW-PARABODY
  9100. ></LN2.LIST.NUM.2
  9101. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  9102. ></RBW-AUTOGEN
  9103. ></RBW-MARKER
  9104. ><RBW-PARABODY>Select the drive on which the client software is located and map it to a free letter.</RBW-PARABODY
  9105. ></LN2.LIST.NUM.2
  9106. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9107. ></RBW-AUTOGEN
  9108. ></RBW-MARKER
  9109. ><RBW-PARABODY>On your own machine, set <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9110. > to the following, replacing <CX5FX5FTERM>drive</CX5FX5FTERM
  9111. > with the appropriate value. If the installation is not in the C:\Cayenne\Tools directory, enter the correct value.</RBW-PARABODY
  9112. ></LN.LIST.NUM
  9113. ><EM.EXAMPLE.MONO>set <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  9114. > = <CX5FX5FTERM>drive</CX5FX5FTERM
  9115. >:\Cayenne\Tools</EM.EXAMPLE.MONO
  9116. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  9117. ></RBW-AUTOGEN
  9118. ><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  9119. > Open the System control panel and set this as a System variable. Under Windows 95: Edit the AUTOEXEC.BAT file.</N2.NOTE.2
  9120. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9121. ></RBW-AUTOGEN
  9122. ></RBW-MARKER
  9123. ><RBW-PARABODY>Enter the following in an MS&truehy;DOS window or batch file to start the Browser, replacing <CX5FX5FTERM>drive</CX5FX5FTERM
  9124. > with the appropriate value:</RBW-PARABODY
  9125. ></LN.LIST.NUM
  9126. ><EWM.EXAMPLEW.MONO><CX5FX5FTERM>drive</CX5FX5FTERM
  9127. >:\<RBWAUTO-0006>Cayenne</RBWAUTO-0006
  9128. ><RBWAUTO-0006></RBWAUTO-0006
  9129. >\Tools\bin\otk.exe <CX5FX5FTERM>drive</CX5FX5FTERM
  9130. >:\<RBWAUTO-0006>Cayenne</RBWAUTO-0006
  9131. ><RBWAUTO-0006></RBWAUTO-0006
  9132. >\Tools\tcl\desk.tcl </EWM.EXAMPLEW.MONO
  9133. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9134. ></RBW-AUTOGEN
  9135. ></RBW-MARKER
  9136. ><RBW-PARABODY>Alternatively, you can create a shortcut as follows:</RBW-PARABODY
  9137. ></P.PROCEDURE
  9138. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9139. ></RBW-AUTOGEN
  9140. ></RBW-MARKER
  9141. ><RBW-PARABODY>Set <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9142. > as described above.</RBW-PARABODY
  9143. ></LN.LIST.NUM
  9144. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9145. ></RBW-AUTOGEN
  9146. ></RBW-MARKER
  9147. ><RBW-PARABODY>Reboot your machine.</RBW-PARABODY
  9148. ></LN.LIST.NUM
  9149. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9150. ></RBW-AUTOGEN
  9151. ></RBW-MARKER
  9152. ><RBW-PARABODY>Share the drive on which the client software is installed.</RBW-PARABODY
  9153. ></LN.LIST.NUM
  9154. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9155. ></RBW-AUTOGEN
  9156. ></RBW-MARKER
  9157. ><RBW-PARABODY>On the machine on which you want to display the Browser, open the Explorer and select Tools | Map Network Drive.</RBW-PARABODY
  9158. ></LN.LIST.NUM
  9159. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  9160. ></RBW-AUTOGEN
  9161. ></RBW-MARKER
  9162. ><RBW-PARABODY>Select the drive on which the client software is located and map it to a free letter.</RBW-PARABODY
  9163. ></LN.LIST.NUM
  9164. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  9165. ></RBW-AUTOGEN
  9166. ></RBW-MARKER
  9167. ><RBW-PARABODY>Open the drive in the Explorer and open the C:\Cayenne\Tools\bin folder.</RBW-PARABODY
  9168. ></LN.LIST.NUM
  9169. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  9170. ></RBW-AUTOGEN
  9171. ></RBW-MARKER
  9172. ><RBW-PARABODY>Drag the file otk.exe to the desktop to create a shortcut icon.</RBW-PARABODY
  9173. ></LN.LIST.NUM
  9174. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  9175. ></RBW-AUTOGEN
  9176. ></RBW-MARKER
  9177. ><RBW-PARABODY>Right&truehy;click on the icon and select Properties from the pop&truehy;up menu.</RBW-PARABODY
  9178. ></LN.LIST.NUM
  9179. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  9180. ></RBW-AUTOGEN
  9181. ></RBW-MARKER
  9182. ><RBW-PARABODY>Click on the Shortcut tab and enter the following in the Target field.</RBW-PARABODY
  9183. ></LN.LIST.NUM
  9184. ><EWM.EXAMPLEW.MONO><CX5FX5FTERM>drive</CX5FX5FTERM
  9185. >:\Cayenne\Tools\bin\otk.exe <CX5FX5FTERM>drive</CX5FX5FTERM
  9186. >:\<RBWAUTO-0006>Cayenne</RBWAUTO-0006
  9187. ><RBWAUTO-0006></RBWAUTO-0006
  9188. >\Tools\tcl\desk.tcl </EWM.EXAMPLEW.MONO
  9189. ><LT.LIST.TEXT>The Start In field should read:</LT.LIST.TEXT
  9190. ><EM.EXAMPLE.MONO><CX5FX5FTERM>drive</CX5FX5FTERM
  9191. >:\<RBWAUTO-0006>Cayenne</RBWAUTO-0006
  9192. ><RBWAUTO-0006></RBWAUTO-0006
  9193. >\Tools\bin</EM.EXAMPLE.MONO
  9194. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  9195. ></RBW-AUTOGEN
  9196. ></RBW-MARKER
  9197. ><RBW-PARABODY>Double&truehy;click on the shortcut icon to start the Browser.</RBW-PARABODY
  9198. ></LN.LIST.NUM
  9199. ></LABEL
  9200. ></SECTION
  9201. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="19073"></RBW-ANCHOR
  9202. >Uninstalling ObjectTeam Software</S.SECTION.HEAD
  9203. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9204. >Introduction</L.LABEL
  9205. ><B.BODY>This section describes how to uninstall an ObjectTeam Master server.</B.BODY
  9206. ></LABEL
  9207. ><SUBSECTION><SS.SUBSEC.HEAD>Uninstalling a Master Server</SS.SUBSEC.HEAD
  9208. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9209. >Introduction</L.LABEL
  9210. ><B.BODY>This section describes how to uninstall an ObjectTeam Master server or Standalone machine under Windows NT or a Standalone machine on Windows 95:</B.BODY
  9211. ><B.BODY>Be aware that all configuration files will be removed by the uninstall. You must remove the repository directory by hand.</B.BODY
  9212. ></LABEL
  9213. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9214. >Process overview</L.LABEL
  9215. ><B.BODY>Uninstalling ObjectTeam consists of the following tasks:</B.BODY
  9216. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="55p"><COLSPEC COLNAME="2" COLWIDTH="391p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  9217. ></ENTRY
  9218. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  9219. ></ENTRY
  9220. ></RBW-ROW
  9221. ></THEAD
  9222. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  9223. ></ENTRY
  9224. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Remove your repositories.</CELLBODY
  9225. ></ENTRY
  9226. ></RBW-ROW
  9227. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  9228. ></ENTRY
  9229. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>On the Master server, remove the Cayenne Repository broker and all SQL Anywhere services.</CELLBODY
  9230. ></ENTRY
  9231. ></RBW-ROW
  9232. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  9233. ></ENTRY
  9234. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>On the license server, shut down and remove the FLEXlm service.</CELLBODY
  9235. ></ENTRY
  9236. ></RBW-ROW
  9237. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  9238. ></ENTRY
  9239. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>On every machine on which you installed ObjectTeam software, run the Uninstall program.</CELLBODY
  9240. ></ENTRY
  9241. ></RBW-ROW
  9242. ></TBODY
  9243. ></TGROUP
  9244. ></RBW-TABLE
  9245. ></LABEL
  9246. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9247. >Remove the repository directory</L.LABEL
  9248. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9249. ></RBW-AUTOGEN
  9250. ></RBW-MARKER
  9251. ><RBW-PARABODY>To remove your repositories:</RBW-PARABODY
  9252. ></P.PROCEDURE
  9253. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9254. ></RBW-AUTOGEN
  9255. ></RBW-MARKER
  9256. ><RBW-PARABODY>Log on (as administrator under NT).</RBW-PARABODY
  9257. ></LN.LIST.NUM
  9258. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9259. ></RBW-AUTOGEN
  9260. ></RBW-MARKER
  9261. ><RBW-PARABODY>Select Start | Programs | Cayenne Repository.</RBW-PARABODY
  9262. ></LN.LIST.NUM
  9263. ><LR.LIST.RESULT>The Corporate Management tool appears.</LR.LIST.RESULT
  9264. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9265. ></RBW-AUTOGEN
  9266. ></RBW-MARKER
  9267. ><RBW-PARABODY>Select the name of the repository and select File | Delete.</RBW-PARABODY
  9268. ></LN.LIST.NUM
  9269. ><LR.LIST.RESULT>The Delete Repository dialog appears.</LR.LIST.RESULT
  9270. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9271. ></RBW-AUTOGEN
  9272. ></RBW-MARKER
  9273. ><RBW-PARABODY>Make sure the options Database, Directory and Server entry are checked. Also make sure the the option “Shutdown dbservers before deletion” is checked.</RBW-PARABODY
  9274. ></LN.LIST.NUM
  9275. ><LR.LIST.RESULT>All ObjectTeam dbservers will shut down after all users have exited ObjectTeam applications.</LR.LIST.RESULT
  9276. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  9277. ></RBW-AUTOGEN
  9278. ></RBW-MARKER
  9279. ><RBW-PARABODY>Click OK to delete the repository.</RBW-PARABODY
  9280. ></LN.LIST.NUM
  9281. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  9282. ></RBW-AUTOGEN
  9283. ></RBW-MARKER
  9284. ><RBW-PARABODY>Repeat steps 3 to 5 for each remaining repository.</RBW-PARABODY
  9285. ></LN.LIST.NUM
  9286. ></LABEL
  9287. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9288. >How to uninstall services (Windows NT)</L.LABEL
  9289. ><B.BODY>Before you uninstall ObjectTeam, check that the Cayenne Repository broker and any SQL Anywhere services you have created are stopped.</B.BODY
  9290. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9291. ></RBW-AUTOGEN
  9292. ></RBW-MARKER
  9293. ><RBW-PARABODY>To check services:</RBW-PARABODY
  9294. ></P.PROCEDURE
  9295. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9296. ></RBW-AUTOGEN
  9297. ></RBW-MARKER
  9298. ><RBW-PARABODY>While logged on to the Master server as administrator.</RBW-PARABODY
  9299. ></LN.LIST.NUM
  9300. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9301. ></RBW-AUTOGEN
  9302. ></RBW-MARKER
  9303. ><RBW-PARABODY>Select Start | Settings | Control Panel.</RBW-PARABODY
  9304. ></LN.LIST.NUM
  9305. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9306. ></RBW-AUTOGEN
  9307. ></RBW-MARKER
  9308. ><RBW-PARABODY>Double&truehy;click on the Services icon.</RBW-PARABODY
  9309. ></LN.LIST.NUM
  9310. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9311. ></RBW-AUTOGEN
  9312. ></RBW-MARKER
  9313. ><RBW-PARABODY>Make sure the the Cayenne Repository broker and any SQL Anywhere services are stopped.</RBW-PARABODY
  9314. ></LN.LIST.NUM
  9315. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  9316. ></RBW-AUTOGEN
  9317. ></RBW-MARKER
  9318. ><RBW-PARABODY>Select Start | Programs | Cayenne  Repository | Service Manager.</RBW-PARABODY
  9319. ></LN.LIST.NUM
  9320. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  9321. ></RBW-AUTOGEN
  9322. ></RBW-MARKER
  9323. ><RBW-PARABODY>Select each ObjectTeam service in the Service Name field and select Remove.</RBW-PARABODY
  9324. ></LN.LIST.NUM
  9325. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  9326. ></RBW-AUTOGEN
  9327. ></RBW-MARKER
  9328. ><RBW-PARABODY>When you have removed all services, select Close.</RBW-PARABODY
  9329. ></LN.LIST.NUM
  9330. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  9331. ></RBW-AUTOGEN
  9332. ></RBW-MARKER
  9333. ><RBW-PARABODY>Reboot the machine to remove the services.</RBW-PARABODY
  9334. ></LN.LIST.NUM
  9335. ></LABEL
  9336. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9337. >How to uninstall the FLEXlm service</L.LABEL
  9338. ><B.BODY>If your machine is also a license server, you should also remove the FLEXlm service you created for ObjectTeam. </B.BODY
  9339. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9340. ></RBW-AUTOGEN
  9341. ></RBW-MARKER
  9342. ><RBW-PARABODY>To remove the FLEXlm service:</RBW-PARABODY
  9343. ></P.PROCEDURE
  9344. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9345. ></RBW-AUTOGEN
  9346. ></RBW-MARKER
  9347. ><RBW-PARABODY>While logged on as administrator, select Start | Settings | Control Panels.</RBW-PARABODY
  9348. ></LN.LIST.NUM
  9349. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9350. ></RBW-AUTOGEN
  9351. ></RBW-MARKER
  9352. ><RBW-PARABODY>Double&truehy;click on the FLEXlm icon.</RBW-PARABODY
  9353. ></LN.LIST.NUM
  9354. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9355. ></RBW-AUTOGEN
  9356. ></RBW-MARKER
  9357. ><RBW-PARABODY>Select the Setup tab and select the ObjectTeam license service in the Service Name field.</RBW-PARABODY
  9358. ></LN.LIST.NUM
  9359. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9360. ></RBW-AUTOGEN
  9361. ></RBW-MARKER
  9362. ><RBW-PARABODY>Select Remove, then select OK.</RBW-PARABODY
  9363. ></LN.LIST.NUM
  9364. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  9365. ></RBW-AUTOGEN
  9366. ></RBW-MARKER
  9367. ><RBW-PARABODY>Reboot the machine to remove the service.</RBW-PARABODY
  9368. ></LN.LIST.NUM
  9369. ></LABEL
  9370. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9371. >How to uninstall ObjectTeam</L.LABEL
  9372. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9373. ></RBW-AUTOGEN
  9374. ></RBW-MARKER
  9375. ><RBW-PARABODY>To uninstall ObjectTeam under Windows NT or Windows 95:</RBW-PARABODY
  9376. ></P.PROCEDURE
  9377. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9378. ></RBW-AUTOGEN
  9379. ></RBW-MARKER
  9380. ><RBW-PARABODY>Log on (as administrator if you are running under NT).</RBW-PARABODY
  9381. ></LN.LIST.NUM
  9382. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9383. ></RBW-AUTOGEN
  9384. ></RBW-MARKER
  9385. ><RBW-PARABODY>Open the Control Panels window.</RBW-PARABODY
  9386. ></LN.LIST.NUM
  9387. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9388. ></RBW-AUTOGEN
  9389. ></RBW-MARKER
  9390. ><RBW-PARABODY>Double&truehy;click on Add/Remove Programs.</RBW-PARABODY
  9391. ></LN.LIST.NUM
  9392. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9393. ></RBW-AUTOGEN
  9394. ></RBW-MARKER
  9395. ><RBW-PARABODY>Select the Install/Uninstall tab.</RBW-PARABODY
  9396. ></LN.LIST.NUM
  9397. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  9398. ></RBW-AUTOGEN
  9399. ></RBW-MARKER
  9400. ><RBW-PARABODY>Select ObjectTeam, and click on Add/Remove.</RBW-PARABODY
  9401. ></LN.LIST.NUM
  9402. ><LR.LIST.RESULT>The ObjectTeam files are removed.</LR.LIST.RESULT
  9403. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  9404. ></RBW-AUTOGEN
  9405. ></RBW-MARKER
  9406. ><RBW-PARABODY>Reboot your computer.</RBW-PARABODY
  9407. ></LN.LIST.NUM
  9408. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9409. ></RBW-AUTOGEN
  9410. ></RBW-MARKER
  9411. ><RBW-PARABODY>Alternatively, to uninstall ObjectTeam from an MS&truehy;DOS window under Windows NT:</RBW-PARABODY
  9412. ></P.PROCEDURE
  9413. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9414. ></RBW-AUTOGEN
  9415. ></RBW-MARKER
  9416. ><RBW-PARABODY>Log on as administrator.</RBW-PARABODY
  9417. ></LN.LIST.NUM
  9418. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9419. ></RBW-AUTOGEN
  9420. ></RBW-MARKER
  9421. ><RBW-PARABODY>Start an MS&truehy;DOS window.</RBW-PARABODY
  9422. ></LN.LIST.NUM
  9423. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9424. ></RBW-AUTOGEN
  9425. ></RBW-MARKER
  9426. ><RBW-PARABODY>Enter the following command:</RBW-PARABODY
  9427. ></LN.LIST.NUM
  9428. ><EM.EXAMPLE.MONO>%systemroot%\uninst &truehy;f%<CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  9429. >%\DeIsL1.isu</EM.EXAMPLE.MONO
  9430. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9431. ></RBW-AUTOGEN
  9432. ></RBW-MARKER
  9433. ><RBW-PARABODY>Reboot your computer.</RBW-PARABODY
  9434. ></LN.LIST.NUM
  9435. ><RBWAUTO-0002></RBWAUTO-0002
  9436. ><!--
  9437.  
  9438.  
  9439.  
  9440.  
  9441.  
  9442. CONVERTING SOURCE FILE ../../sources/ignt/igntupgr.fm5.mif
  9443.  
  9444.  
  9445. --><B.BODY></B.BODY
  9446. ><B.BODY></B.BODY
  9447. ><B.BODY></B.BODY
  9448. ><B.BODY></B.BODY
  9449. ><B.BODY></B.BODY
  9450. ></LABEL
  9451. ></SUBSECTION
  9452. ></SECTION
  9453. ></CHAPTER
  9454. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  9455. ></RBW-AUTOGEN
  9456. ><RBWAUTO-0003></RBWAUTO-0003
  9457. >Upgrading <RBW-ANCHOR ID="21035"></RBW-ANCHOR
  9458. >From a Previous Release<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  9459. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  9460. ></RBW-SYSOBJ
  9461. ></C.CHAPTER.HEAD
  9462. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9463. >Introduction</L.LABEL
  9464. ><B.BODY>This chapter describes the procedures to follow if you wish to upgrade ObjectTeam version 5.x or 6.1.1 to version 7.1.1 on PCs running Microsoft Windows. </B.BODY
  9465. ></LABEL
  9466. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9467. >Before you start</L.LABEL
  9468. ><B.BODY>Before starting this upgrade procedure, you must have:</B.BODY
  9469. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  9470. ></RBW-AUTOGEN
  9471. ></RBW-MARKER
  9472. ><RBW-PARABODY>A working ObjectTeam installation. </RBW-PARABODY
  9473. ></LB.LIST.BULLET
  9474. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  9475. ></RBW-AUTOGEN
  9476. ></RBW-MARKER
  9477. ><RBW-PARABODY>A new license file</RBW-PARABODY
  9478. ></LB.LIST.BULLET
  9479. ></LABEL
  9480. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9481. >Backing up</L.LABEL
  9482. ><B.BODY>As a precaution, before installing this or any product, you should perform a backup of your system. For details, see <RBW-XREF REFID="32992" TYPE="XREF-TEXTCOPY">Backing Up Your System</RBW-XREF
  9483. >.</B.BODY
  9484. ></LABEL
  9485. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9486. >Default directory</L.LABEL
  9487. ><B.BODY>In this chapter, the installation directory for the ObjectTeam product files is indicated as <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9488. >. By default, this is C:\Cayenne\Tools\, however you can install ObjectTeam elsewhere on your machine.</B.BODY
  9489. ></LABEL
  9490. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9491. >Reading the Read Me First Notes</L.LABEL
  9492. ><B.BODY>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You must read these notes before starting installation.</B.BODY
  9493. ><B.BODY>To read the Read Me First Notes, open the file <CX5FX5FTERM>cd_drive</CX5FX5FTERM
  9494. >:\readme.txt in a text editor, or open the file <CX5FX5FTERM>cd_drive</CX5FX5FTERM
  9495. >:\readme.htm in a Web browser.</B.BODY
  9496. ><B.BODY>For details of the supported Operating Systems and DBMS versions, open the file <CX5FX5FTERM>cd_drive</CX5FX5FTERM
  9497. >:\certify.htm in a web browser.</B.BODY
  9498. ></LABEL
  9499. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9500. >In this chapter</L.LABEL
  9501. ><B.BODY>This chapter contains the following sections:</B.BODY
  9502. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  9503. ></ENTRY
  9504. ></RBW-ROW
  9505. ></THEAD
  9506. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28308" TYPE="XREF-TEXTCOPY">Upgrading an ObjectTeam Master Server&rbwtab;3–3</RBW-XREF
  9507. ></SB.SECTION.BLOCK.TABLE
  9508. ></ENTRY
  9509. ></RBW-ROW
  9510. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22920" TYPE="XREF-TEXTCOPY">Upgrading an ObjectTeam Slave Server&rbwtab;3–12</RBW-XREF
  9511. ></SB.SECTION.BLOCK.TABLE
  9512. ></ENTRY
  9513. ></RBW-ROW
  9514. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34715" TYPE="XREF-TEXTCOPY">Upgrading an ObjectTeam Client&rbwtab;3–18</RBW-XREF
  9515. ></SB.SECTION.BLOCK.TABLE
  9516. ></ENTRY
  9517. ></RBW-ROW
  9518. ></TBODY
  9519. ></TGROUP
  9520. ></RBW-TABLE
  9521. ></LABEL
  9522. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28308"></RBW-ANCHOR
  9523. >Upgrading an ObjectTeam Master Server</S.SECTION.HEAD
  9524. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9525. >Introduction</L.LABEL
  9526. ><B.BODY>This section discusses how to upgrade an ObjectTeam Master server from ObjectTeam 5.1.1, 5.2.1 or 6.1.1.</B.BODY
  9527. ></LABEL
  9528. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9529. >Steps</L.LABEL
  9530. ><B.BODY>Upgrading an ObjectTeam Master server from a previous version involves the following steps:</B.BODY
  9531. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="46p"><COLSPEC COLNAME="2" COLWIDTH="399p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  9532. ></ENTRY
  9533. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  9534. ></ENTRY
  9535. ></RBW-ROW
  9536. ></THEAD
  9537. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  9538. ></ENTRY
  9539. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="26293" TYPE="XREF-TEXTCOPY">Dump Your Repositories</RBW-XREF
  9540. ></CELLBODY
  9541. ></ENTRY
  9542. ></RBW-ROW
  9543. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  9544. ></ENTRY
  9545. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="26868" TYPE="XREF-TEXTCOPY">Back Up Your ObjectTeam Installation</RBW-XREF
  9546. ></CELLBODY
  9547. ></ENTRY
  9548. ></RBW-ROW
  9549. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  9550. ></ENTRY
  9551. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="20021" TYPE="XREF-TEXTCOPY">Stop All ObjectTeam&truehy;Related Services</RBW-XREF
  9552. ></CELLBODY
  9553. ></ENTRY
  9554. ></RBW-ROW
  9555. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  9556. ></ENTRY
  9557. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="20016" TYPE="XREF-TEXTCOPY">Install Your License</RBW-XREF
  9558. ></CELLBODY
  9559. ></ENTRY
  9560. ></RBW-ROW
  9561. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  9562. ></ENTRY
  9563. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24896" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  9564. >.</CELLBODY
  9565. ></ENTRY
  9566. ></RBW-ROW
  9567. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  9568. ></ENTRY
  9569. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="14753" TYPE="XREF-TEXTCOPY">Convert Your Repositories</RBW-XREF
  9570. ></CELLBODY
  9571. ></ENTRY
  9572. ></RBW-ROW
  9573. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  9574. ></ENTRY
  9575. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Optional:</CX5FX5FFILE.NAME
  9576. > Configure ObjectTeam modules as described in <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Chapter 4, Activating Modules</RBW-XREF
  9577. >.</CELLBODY
  9578. ></ENTRY
  9579. ></RBW-ROW
  9580. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>8</CELLBODY
  9581. ></ENTRY
  9582. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Optional: </CX5FX5FFILE.NAME
  9583. >Restore Corporate&truehy;level customization files.</CELLBODY
  9584. ></ENTRY
  9585. ></RBW-ROW
  9586. ></TBODY
  9587. ></TGROUP
  9588. ></RBW-TABLE
  9589. ><B.BODY></B.BODY
  9590. ></LABEL
  9591. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26293"></RBW-ANCHOR
  9592. >Dump Your Repositories</SS.SUBSEC.HEAD
  9593. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9594. >Introduction</L.LABEL
  9595. ><B.BODY>In ObjectTeam, a repository consists of a database part and a file system part. The directory in which the file system part is stored is called the repository directory. This contains individual directories for each repository, called corporate directories. </B.BODY
  9596. ><B.BODY>To convert your repository data to ObjectTeam 7.1.1, you must first dump the data from each repository to disk. The ObjectTeam dump facility dumps data from a single repository into its corresponding corporate directory. The result is a structure like the following:</B.BODY
  9597. ><EM.EXAMPLE.MONO><CX5FX5FTERM>M4_home</CX5FX5FTERM
  9598. >/</EM.EXAMPLE.MONO
  9599. ><EM.EXAMPLE.MONO>    corproot/</EM.EXAMPLE.MONO
  9600. ><EM.EXAMPLE.MONO>        <CX5FX5FTERM>repository_name</CX5FX5FTERM
  9601. >/</EM.EXAMPLE.MONO
  9602. ><EM.EXAMPLE.MONO>            DBDUMP/</EM.EXAMPLE.MONO
  9603. ><EM.EXAMPLE.MONO>                <CX5FX5FTERM>tables</CX5FX5FTERM
  9604. ></EM.EXAMPLE.MONO
  9605. ><EM.EXAMPLE.MONO>            <CX5FX5FTERM>project_id</CX5FX5FTERM
  9606. >/</EM.EXAMPLE.MONO
  9607. ><EM.EXAMPLE.MONO>                DBDUMP/</EM.EXAMPLE.MONO
  9608. ><EM.EXAMPLE.MONO>                        <CX5FX5FTERM>tables</CX5FX5FTERM
  9609. ></EM.EXAMPLE.MONO
  9610. ><B.BODY>The dumped database data is reloaded into the SQL Anywhere database when you run the convert program.</B.BODY
  9611. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  9612. ></RBW-AUTOGEN
  9613. >By default, your 5.x or 6.1.1 repositories were created in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9614. >\corproot<CX5FX5FFILE.NAME> </CX5FX5FFILE.NAME
  9615. >directory. If you created a repository in some other directory, either within or outside <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9616. >, the database part will be dumped to that directory instead. Make sure you also back up that directory after dumping your repository. </N.NOTE
  9617. ></LABEL
  9618. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9619. >Before you start</L.LABEL
  9620. ><B.BODY>If you have any customization files on any repository level other than corporate, you should delete these. </B.BODY
  9621. ></LABEL
  9622. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9623. >Upload user environment files</L.LABEL
  9624. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9625. ></RBW-AUTOGEN
  9626. ></RBW-MARKER
  9627. ><RBW-PARABODY>Before you dump your repository you should make sure it is complete by uploading the working versions of files in the file system, such as generated source files.</RBW-PARABODY
  9628. ></P.PROCEDURE
  9629. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9630. ></RBW-AUTOGEN
  9631. ></RBW-MARKER
  9632. ><RBW-PARABODY>To upload your files from the user environment:</RBW-PARABODY
  9633. ></P.PROCEDURE
  9634. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9635. ></RBW-AUTOGEN
  9636. ></RBW-MARKER
  9637. ><RBW-PARABODY>Log on as administrator.</RBW-PARABODY
  9638. ></LN.LIST.NUM
  9639. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9640. ></RBW-AUTOGEN
  9641. ></RBW-MARKER
  9642. ><RBW-PARABODY>Select Start | Programs | ObjectTeam | User Environment.</RBW-PARABODY
  9643. ></LN.LIST.NUM
  9644. ><LR.LIST.RESULT>The ObjectTeam User Environment Tool starts up.</LR.LIST.RESULT
  9645. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9646. ></RBW-AUTOGEN
  9647. ></RBW-MARKER
  9648. ><RBW-PARABODY>In the User Environment Tool, select your repository.</RBW-PARABODY
  9649. ></LN.LIST.NUM
  9650. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9651. ></RBW-AUTOGEN
  9652. ></RBW-MARKER
  9653. ><RBW-PARABODY>Select View | Refresh to collate a list of all working versions of repository files in the file system.</RBW-PARABODY
  9654. ></LN.LIST.NUM
  9655. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  9656. ></RBW-AUTOGEN
  9657. ></RBW-MARKER
  9658. ><RBW-PARABODY>Select all the files which are unfrozen and select File | Upload.</RBW-PARABODY
  9659. ></LN.LIST.NUM
  9660. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  9661. ></RBW-AUTOGEN
  9662. ></RBW-MARKER
  9663. ><RBW-PARABODY>The files are frozen and loaded into the repository.</RBW-PARABODY
  9664. ></LN.LIST.NUM
  9665. ></LABEL
  9666. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9667. >How to dump your repository data from ObjectTeam 5.x or 6.1.1</L.LABEL
  9668. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9669. ></RBW-AUTOGEN
  9670. ></RBW-MARKER
  9671. ><RBW-PARABODY>To dump a repository from ObjectTeam 5.x or 6.1.1:</RBW-PARABODY
  9672. ></P.PROCEDURE
  9673. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9674. ></RBW-AUTOGEN
  9675. ></RBW-MARKER
  9676. ><RBW-PARABODY>While logged in as administrator, select Start | Programs | ObjectTeam | Corporate Management.</RBW-PARABODY
  9677. ></LN.LIST.NUM
  9678. ><LR.LIST.RESULT>The Corporate Management Tool starts up.</LR.LIST.RESULT
  9679. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9680. ></RBW-AUTOGEN
  9681. ></RBW-MARKER
  9682. ><RBW-PARABODY>In the Corporate Management Tool, select your repository.</RBW-PARABODY
  9683. ></LN.LIST.NUM
  9684. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9685. ></RBW-AUTOGEN
  9686. ></RBW-MARKER
  9687. ><RBW-PARABODY>Select File | Backup.</RBW-PARABODY
  9688. ></LN.LIST.NUM
  9689. ><LR.LIST.RESULT>The Backup Repository dialog appears.</LR.LIST.RESULT
  9690. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00027.unk" origfile="pics/backrep611.gif" origtype="X" origdoc="../../sources/ignt/igntupgr.fm5.mif"></RBW-GRAPHIC
  9691. ></FA2.FIGURE.ANCHOR.2
  9692. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9693. ></RBW-AUTOGEN
  9694. ></RBW-MARKER
  9695. ><RBW-PARABODY>Select the Dump Database option, and deselect the Archive Repository option. Fill in the database password.</RBW-PARABODY
  9696. ></LN.LIST.NUM
  9697. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  9698. ></RBW-AUTOGEN
  9699. ></RBW-MARKER
  9700. ><RBW-PARABODY>Click Shutdown to shut down any running dbservers. </RBW-PARABODY
  9701. ></LN.LIST.NUM
  9702. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  9703. ></RBW-AUTOGEN
  9704. >The dbservers will only shut down after all users have exited ObjectTeam.</N2.NOTE.2
  9705. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  9706. ></RBW-AUTOGEN
  9707. ></RBW-MARKER
  9708. ><RBW-PARABODY>Click OK to proceed with the dump.</RBW-PARABODY
  9709. ></LN.LIST.NUM
  9710. ><LR.LIST.RESULT>The repository is dumped to the DBDUMP directory in the corporate directory. </LR.LIST.RESULT
  9711. ></LABEL
  9712. ></SUBSECTION
  9713. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26868"></RBW-ANCHOR
  9714. >Back Up Your ObjectTeam Installation</SS.SUBSEC.HEAD
  9715. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9716. >Introduction</L.LABEL
  9717. ><B.BODY>Once you have dumped and backed up all repositories, you should make a complete backup of your ObjectTeam installation AND your repository databases. If for any reason you want to go back to your previous installation you can then restore your entire environment.</B.BODY
  9718. ></LABEL
  9719. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9720. >Backing up your ObjectTeam installation </L.LABEL
  9721. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9722. ></RBW-AUTOGEN
  9723. ></RBW-MARKER
  9724. ><RBW-PARABODY>Once you have dumped and backed up all repositories:</RBW-PARABODY
  9725. ></P.PROCEDURE
  9726. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9727. ></RBW-AUTOGEN
  9728. ></RBW-MARKER
  9729. ><RBW-PARABODY>While logged in as administrator, back up the entire <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9730. > directory and DBMS databases to separate media, such as tape. </RBW-PARABODY
  9731. ></LN.LIST.NUM
  9732. ><LT.LIST.TEXT>Once you have successfully completed the upgrade, you can remove the backup if you wish.</LT.LIST.TEXT
  9733. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  9734. ></RBW-AUTOGEN
  9735. >If you have dumped any repositories to directories outside <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9736. >, be sure to back up these directories as well.</N.NOTE
  9737. ></LABEL
  9738. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9739. >Customization files</L.LABEL
  9740. ><B.BODY>If you have made any customizations to files on Corporate level (those in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9741. >\etc directory and <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9742. >\tcl directories) be aware that these are deleted during the upgrade to version 7.1.1. Lower&truehy;level customization files such as those on Project or System level, are stored in the repository, and are therefore not deleted by the upgrade procedure.</B.BODY
  9743. ><B.BODY>You can restore files from your backup to the new module customization directories (<CX5FX5FTERM>M4_home</CX5FX5FTERM
  9744. >\modules\<CX5FX5FTERM>module</CX5FX5FTERM
  9745. >\etc) once you have run the upgrade, but be aware that customizations from 5.x or 6.1.1 may not work with 7.1.1. For more details on customization and modules, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  9746. ><CX5FX5FTITLE></CX5FX5FTITLE
  9747. >.</B.BODY
  9748. ><B.BODY>Note also that the names of some customization files have changed from previous versions. For a complete list of all customization files, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  9749. ><CX5FX5FTITLE></CX5FX5FTITLE
  9750. >.</B.BODY
  9751. ></LABEL
  9752. ></SUBSECTION
  9753. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20021"></RBW-ANCHOR
  9754. >Stop All ObjectTeam&truehy;Related Services</SS.SUBSEC.HEAD
  9755. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9756. >Before you upgrade</L.LABEL
  9757. ><B.BODY>When you dumped your repository data, you shutdown your ObjectTeam installation. Before you can upgrade, you must also remove any running ObjectTeam services.</B.BODY
  9758. ></LABEL
  9759. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9760. >How to stop ObjectTeam services</L.LABEL
  9761. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9762. ></RBW-AUTOGEN
  9763. ></RBW-MARKER
  9764. ><RBW-PARABODY>To stop ObjectTeam services:</RBW-PARABODY
  9765. ></P.PROCEDURE
  9766. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9767. ></RBW-AUTOGEN
  9768. ></RBW-MARKER
  9769. ><RBW-PARABODY>In the Control Panels window, double&truehy;click on the Services icon.</RBW-PARABODY
  9770. ></LN.LIST.NUM
  9771. ><LR.LIST.RESULT>The Services windows appears.</LR.LIST.RESULT
  9772. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9773. ></RBW-AUTOGEN
  9774. ></RBW-MARKER
  9775. ><RBW-PARABODY>Look for the following services and click on Stop for each:</RBW-PARABODY
  9776. ></LN.LIST.NUM
  9777. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  9778. ></RBW-AUTOGEN
  9779. ></RBW-MARKER
  9780. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam</CX5FX5FFILE.NAME
  9781. ><CX5FX5FFILE.NAME> 5.x</CX5FX5FFILE.NAME
  9782. >: </RBW-PARABODY
  9783. ></LB.LIST.BULLET
  9784. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9785. ></RBW-MARKER
  9786. ><RBW-PARABODY>ObjectTeam Broker</RBW-PARABODY
  9787. ></LB2.LIST.BULLET.2
  9788. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9789. ></RBW-MARKER
  9790. ><RBW-PARABODY>ObjectTeam License server</RBW-PARABODY
  9791. ></LB2.LIST.BULLET.2
  9792. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9793. ></RBW-MARKER
  9794. ><RBW-PARABODY>Portmap</RBW-PARABODY
  9795. ></LB2.LIST.BULLET.2
  9796. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  9797. ></RBW-AUTOGEN
  9798. ></RBW-MARKER
  9799. ><RBW-PARABODY><CX5FX5FFILE.NAME>ObjectTeam</CX5FX5FFILE.NAME
  9800. ><CX5FX5FFILE.NAME> 6.1.1</CX5FX5FFILE.NAME
  9801. >: </RBW-PARABODY
  9802. ></LB.LIST.BULLET
  9803. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9804. ></RBW-MARKER
  9805. ><RBW-PARABODY>ObjectTeam Broker</RBW-PARABODY
  9806. ></LB2.LIST.BULLET.2
  9807. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9808. ></RBW-MARKER
  9809. ><RBW-PARABODY>Your Flexlm service (e.g., “Cayenne license manager”)</RBW-PARABODY
  9810. ></LB2.LIST.BULLET.2
  9811. ></LABEL
  9812. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9813. >How to remove SSA services</L.LABEL
  9814. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9815. ></RBW-AUTOGEN
  9816. ></RBW-MARKER
  9817. ><RBW-PARABODY>If you created any SSA services for use with a slave server you must also remove these:</RBW-PARABODY
  9818. ></P.PROCEDURE
  9819. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9820. ></RBW-AUTOGEN
  9821. ></RBW-MARKER
  9822. ><RBW-PARABODY>In the ObjectTeam program group, double&truehy;click on the SSA Service Manager. </RBW-PARABODY
  9823. ></LN.LIST.NUM
  9824. ><LR.LIST.RESULT>The SQL Anywhere Service Manager window appears.</LR.LIST.RESULT
  9825. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9826. ></RBW-AUTOGEN
  9827. ></RBW-MARKER
  9828. ><RBW-PARABODY>For each service you defined, select its name end click Remove, then click Close.</RBW-PARABODY
  9829. ></LN.LIST.NUM
  9830. ></LABEL
  9831. ></SUBSECTION
  9832. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20016"></RBW-ANCHOR
  9833. >Install Your License</SS.SUBSEC.HEAD
  9834. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9835. >Licensing</L.LABEL
  9836. ><B.BODY>To upgrade to ObjectTeam 7.1.1, you must configure licensing. How you do this depends on whether you have a temporary or permanent license:</B.BODY
  9837. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9838. >Temporary license</SL.SUBLABEL
  9839. ><B.BODY>You must install your ObjectTeam license, as described in this section</B.BODY
  9840. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9841. >Permanent license</SL.SUBLABEL
  9842. ><B.BODY>You must install a license server, as decribed in <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  9843. >. After you have done that, continue to <RBW-XREF REFID="24896" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  9844. >.</B.BODY
  9845. ></LABEL
  9846. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9847. >Copying your license</L.LABEL
  9848. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9849. ></RBW-AUTOGEN
  9850. ></RBW-MARKER
  9851. ><RBW-PARABODY>To install your temporary license file:</RBW-PARABODY
  9852. ></P.PROCEDURE
  9853. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9854. ></RBW-AUTOGEN
  9855. ></RBW-MARKER
  9856. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  9857. ></LN.LIST.NUM
  9858. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9859. ></RBW-AUTOGEN
  9860. ></RBW-MARKER
  9861. ><RBW-PARABODY>Make a FLEXlm license directory:</RBW-PARABODY
  9862. ></LN.LIST.NUM
  9863. ><EM.EXAMPLE.MONO>C:\cayenne\flexlm\license</EM.EXAMPLE.MONO
  9864. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9865. ></RBW-AUTOGEN
  9866. ></RBW-MARKER
  9867. ><RBW-PARABODY>If you received the license:</RBW-PARABODY
  9868. ></LN.LIST.NUM
  9869. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9870. ></RBW-MARKER
  9871. ><RBW-PARABODY>On a floppy or CD, copy the license to C:\cayenne\flexlm\license\cayenne.dat</RBW-PARABODY
  9872. ></LB2.LIST.BULLET.2
  9873. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9874. ></RBW-MARKER
  9875. ><RBW-PARABODY>Via email, copy and paste the new feature information into an empty text file and save it as C:\cayenne\flexlm\license\cayenne.dat</RBW-PARABODY
  9876. ></LB2.LIST.BULLET.2
  9877. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9878. ></RBW-MARKER
  9879. ><RBW-PARABODY>Via fax, enter the new feature information by hand into an empty text file, and save it as C:\cayenne\flexlm\license\cayenne.dat</RBW-PARABODY
  9880. ></LB2.LIST.BULLET.2
  9881. ></LABEL
  9882. ></SUBSECTION
  9883. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24896"></RBW-ANCHOR
  9884. >Install the ObjectTeam Product Files</SS.SUBSEC.HEAD
  9885. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9886. >Before you start</L.LABEL
  9887. ><B.BODY>Before you install the ObjectTeam product files, check your PATH variable and remove any entries relating to your previous ObjectTeam and SQL Anywhere installation.</B.BODY
  9888. ></LABEL
  9889. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  9890. >How to install the product files</L.LABEL
  9891. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  9892. ></RBW-AUTOGEN
  9893. ></RBW-MARKER
  9894. ><RBW-PARABODY>To install the product files:</RBW-PARABODY
  9895. ></P.PROCEDURE
  9896. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  9897. ></RBW-AUTOGEN
  9898. ></RBW-MARKER
  9899. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  9900. ></LN.LIST.NUM
  9901. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  9902. ></RBW-AUTOGEN
  9903. ></RBW-MARKER
  9904. ><RBW-PARABODY>Shut down any other running applications, including DOS windows.</RBW-PARABODY
  9905. ></LN.LIST.NUM
  9906. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  9907. ></RBW-AUTOGEN
  9908. ></RBW-MARKER
  9909. ><RBW-PARABODY>Insert the ObjectTeam CD into the CD drive. (This can be a local or networked CD drive.)</RBW-PARABODY
  9910. ></LN.LIST.NUM
  9911. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  9912. ></RBW-AUTOGEN
  9913. ></RBW-MARKER
  9914. ><RBW-PARABODY>In the Windows Explorer, double&truehy;click on <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  9915. >:\Setup.exe.</RBW-PARABODY
  9916. ></LN.LIST.NUM
  9917. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  9918. ></RBW-AUTOGEN
  9919. ></RBW-MARKER
  9920. ><RBW-PARABODY>Proceed through the Welcome screen to the Select Products dialog box.</RBW-PARABODY
  9921. ></LN.LIST.NUM
  9922. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  9923. ></RBW-AUTOGEN
  9924. ></RBW-MARKER
  9925. ><RBW-PARABODY>The following choices are presented:</RBW-PARABODY
  9926. ></LN.LIST.NUM
  9927. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9928. ></RBW-MARKER
  9929. ><RBW-PARABODY>ObjectTeam</RBW-PARABODY
  9930. ></LB2.LIST.BULLET.2
  9931. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9932. ></RBW-MARKER
  9933. ><RBW-PARABODY>DocExpress</RBW-PARABODY
  9934. ></LB2.LIST.BULLET.2
  9935. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  9936. ></RBW-MARKER
  9937. ><RBW-PARABODY>DocIt</RBW-PARABODY
  9938. ></LB2.LIST.BULLET.2
  9939. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  9940. ></RBW-AUTOGEN
  9941. ></RBW-MARKER
  9942. ><RBW-PARABODY>Select ObjectTeam.</RBW-PARABODY
  9943. ></LN.LIST.NUM
  9944. ><LT.LIST.TEXT>For details on installing DocIt or DocExpress, see <RBW-XREF REFID="16254" TYPE="XREF-TEXTCOPY">Appendix A, Installing DocExpress and DocIt</RBW-XREF
  9945. >. </LT.LIST.TEXT
  9946. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  9947. ></RBW-AUTOGEN
  9948. ></RBW-MARKER
  9949. ><RBW-PARABODY>To view ObjectTeam’s Read Me First Notes, click the Product Notes button. </RBW-PARABODY
  9950. ></LN.LIST.NUM
  9951. ><LT.LIST.TEXT>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You <CX5FX5FFILE.NAME>must</CX5FX5FFILE.NAME
  9952. > read these notes before starting installation!</LT.LIST.TEXT
  9953. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  9954. ></RBW-AUTOGEN
  9955. ></RBW-MARKER
  9956. ><RBW-PARABODY>Click Install to proceed with the installation.</RBW-PARABODY
  9957. ></LN.LIST.NUM
  9958. ><LR.LIST.RESULT>The Product Requirements dialog box shows you the complete list of hardware and software requirements for your selected components. </LR.LIST.RESULT
  9959. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  9960. ></RBW-AUTOGEN
  9961. ></RBW-MARKER
  9962. ><RBW-PARABODY>If your workstation meets all of the listed hardware and software requirements, click Next to proceed with installation.</RBW-PARABODY
  9963. ></LN.LIST.NUM
  9964. ><LR.LIST.RESULT>The ObjectTeam install program starts up.</LR.LIST.RESULT
  9965. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  9966. ></RBW-AUTOGEN
  9967. ></RBW-MARKER
  9968. ><RBW-PARABODY>Proceed through the Welcome dialog.</RBW-PARABODY
  9969. ></LN.LIST.NUM
  9970. ><LR.LIST.RESULT>A warning is displayed informing you that an existing installation has been detected.</LR.LIST.RESULT
  9971. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  9972. ></RBW-AUTOGEN
  9973. ></RBW-MARKER
  9974. ><RBW-PARABODY>Click Next to upgrade your installation.</RBW-PARABODY
  9975. ></LN.LIST.NUM
  9976. ><LR.LIST.RESULT>A warning is displayed reminding you that your repositories must be dumped before upgrading. </LR.LIST.RESULT
  9977. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  9978. ></RBW-AUTOGEN
  9979. ></RBW-MARKER
  9980. ><RBW-PARABODY>Click Yes to continue.</RBW-PARABODY
  9981. ></LN.LIST.NUM
  9982. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  9983. ></RBW-AUTOGEN
  9984. ></RBW-MARKER
  9985. ><RBW-PARABODY>A dialog appears, asking you if you want to install the online documentation. Click Yes to accept.</RBW-PARABODY
  9986. ></LN.LIST.NUM
  9987. ><LR.LIST.RESULT>The Sybase SQL Anywhere dialog asks if you want to install the SQL Anywhere 5.5 files.</LR.LIST.RESULT
  9988. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  9989. ></RBW-AUTOGEN
  9990. ></RBW-MARKER
  9991. ><RBW-PARABODY>If you want to use an existing Sybase SQL Anywhere installation, select the second option. However, before you can use your existing installation, you must move the SQL Anywhere settings for SQLANY and PATH to the Windows NT system environment. The SQL software is then installed in the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  9992. >\sqlany55 directory and the SQLANY and PATH variables are set automatically.</RBW-PARABODY
  9993. ></LN.LIST.NUM
  9994. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>16&rbwtab;</CX5FX5FZLIST.NUMBER
  9995. ></RBW-AUTOGEN
  9996. ></RBW-MARKER
  9997. ><RBW-PARABODY>You are asked if this is a standalone or client/server installation. For more details, see <RBW-XREF REFID="16080" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing for Installation</RBW-XREF
  9998. >.</RBW-PARABODY
  9999. ></LN.LIST.NUM
  10000. ><LR.LIST.RESULT>The setup program deletes your current installation. The ObjectTeam software loads into the directory you specified. A progress bar informs you of the progress of the installation.</LR.LIST.RESULT
  10001. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>17&rbwtab;</CX5FX5FZLIST.NUMBER
  10002. ></RBW-AUTOGEN
  10003. ></RBW-MARKER
  10004. ><RBW-PARABODY>You are asked to specify the complete path to the license file. The default is C:\Cayenne\Flexlm\license\cayenne.dat. </RBW-PARABODY
  10005. ></LN.LIST.NUM
  10006. ><B.BODY>The product files are now installed. You must now convert your repository data.</B.BODY
  10007. ></LABEL
  10008. ></SUBSECTION
  10009. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14753"></RBW-ANCHOR
  10010. >Convert Your Repositories</SS.SUBSEC.HEAD
  10011. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10012. >Copy your repository to the new location</L.LABEL
  10013. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  10014. ></RBW-AUTOGEN
  10015. ></RBW-MARKER
  10016. ><RBW-PARABODY>Before you convert your repositories, it is recommended to move them to C:\Cayenne\repos.</RBW-PARABODY
  10017. ></P.PROCEDURE
  10018. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  10019. ></RBW-AUTOGEN
  10020. ></RBW-MARKER
  10021. ><RBW-PARABODY>Copy your old corporate directories to C:\Cayenne\repos using either the Explorer or the MS&truehy;DOS xcopy command. </RBW-PARABODY
  10022. ></LN.LIST.NUM
  10023. ><LT.LIST.TEXT>For example, if your old repository directory was in C:\ot4omt\corproot, enter the following in an MS&truehy;DOS window:</LT.LIST.TEXT
  10024. ><EM.EXAMPLE.MONO>xcopy C:\ot4omt\corproot C:\Cayenne\repos /e</EM.EXAMPLE.MONO
  10025. ></LABEL
  10026. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10027. >Converting your repositories</L.LABEL
  10028. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  10029. ></RBW-AUTOGEN
  10030. ></RBW-MARKER
  10031. ><RBW-PARABODY>To convert your repositories, you must run <CX5FX5FTERM>M4_home</CX5FX5FTERM
  10032. >\bin\convert61to71 in an MS&truehy;DOS window. </RBW-PARABODY
  10033. ></P.PROCEDURE
  10034. ><EWM.EXAMPLEW.MONO>convert61to71 &truehy;P <CX5FX5FTERM>password</CX5FX5FTERM
  10035. > &truehy;d <CX5FX5FTERM>dbDir</CX5FX5FTERM
  10036. > &truehy;h <CX5FX5FTERM>host</CX5FX5FTERM
  10037. > &truehy;s <CX5FX5FTERM>server</CX5FX5FTERM
  10038. > <CX5FX5FTERM>dbName</CX5FX5FTERM
  10039. > <CX5FX5FTERM>dumpDir</CX5FX5FTERM
  10040. ></EWM.EXAMPLEW.MONO
  10041. ><B.BODY>Convert61to71 converts an ObjectTeam 5.x or 6.1.1 repository dumped in the directory <CX5FX5FTERM>dumpDir</CX5FX5FTERM
  10042. >, to an ObjectTeam 7.1.1 repository. The <CX5FX5FTERM>dbName</CX5FX5FTERM
  10043. > denotes the name of the new database in SQL Anywhere. This database is stored in directory <CX5FX5FTERM>dbDir</CX5FX5FTERM
  10044. >.</B.BODY
  10045. ><B.BODY>The arguments are: </B.BODY
  10046. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="139p"><COLSPEC COLNAME="2" COLWIDTH="309p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Argument</CELLHEADING
  10047. ></ENTRY
  10048. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  10049. ></ENTRY
  10050. ></RBW-ROW
  10051. ></THEAD
  10052. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;P <CX5FX5FTERM>password</CX5FX5FTERM
  10053. ></CELLBODY
  10054. ></ENTRY
  10055. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Plain password for accessing the new database</CELLBODY
  10056. ></ENTRY
  10057. ></RBW-ROW
  10058. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;d <CX5FX5FTERM>dbDir</CX5FX5FTERM
  10059. ></CELLBODY
  10060. ></ENTRY
  10061. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Database directory. This is the directory in which the database file will be stored.</CELLBODY
  10062. ></ENTRY
  10063. ></RBW-ROW
  10064. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;h <CX5FX5FTERM>host</CX5FX5FTERM
  10065. ></CELLBODY
  10066. ></ENTRY
  10067. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the machine running the SQL Anywhere database server.</CELLBODY
  10068. ></ENTRY
  10069. ></RBW-ROW
  10070. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;s <CX5FX5FTERM>server</CX5FX5FTERM
  10071. ></CELLBODY
  10072. ></ENTRY
  10073. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This is the name of the SQL Anywhere database server. By default this is the same as <CX5FX5FTERM>host</CX5FX5FTERM
  10074. >. Note however, that <CX5FX5FTERM>server</CX5FX5FTERM
  10075. > does <CX5FX5FFILE.NAME>not</CX5FX5FFILE.NAME
  10076. > refer to the name of a machine.</CELLBODY
  10077. ></ENTRY
  10078. ></RBW-ROW
  10079. ></TBODY
  10080. ></TGROUP
  10081. ></RBW-TABLE
  10082. ><B.BODY>For more details, type <CX5FX5FINPUT>convert61to71 &truehy;help</CX5FX5FINPUT
  10083. >.</B.BODY
  10084. ></LABEL
  10085. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10086. >Example</L.LABEL
  10087. ><B.BODY>The following line shows an example conversion:</B.BODY
  10088. ><EWM.EXAMPLEW.MONO>convert61to71 &truehy;P corp_xyz &truehy;d c:\cayenne\repos &truehy;h neptune &truehy;s neptune my_corp_db c:\cayenne\repos\my_corp</EWM.EXAMPLEW.MONO
  10089. ></LABEL
  10090. ></SUBSECTION
  10091. ></SECTION
  10092. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22920"></RBW-ANCHOR
  10093. >Upgrading an ObjectTeam Slave Server</S.SECTION.HEAD
  10094. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10095. >Introduction</L.LABEL
  10096. ><B.BODY>This section discusses how to upgrade an ObjectTeam Slave server from ObjectTeam 5.1.1, 5.2.1, or 6.1.1.</B.BODY
  10097. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  10098. ></RBW-AUTOGEN
  10099. >The following instructions refer to the ObjectTeam home directory as <CX5FX5FTERM>M4_home</CX5FX5FTERM
  10100. >. By default, this is C:\Cayenne\Tools\, however ObjectTeam may be installed elsewhere on your machine.</N.NOTE
  10101. ></LABEL
  10102. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10103. >Overview</L.LABEL
  10104. ><B.BODY>Upgrading a Slave server on Windows NT consists of the following steps:</B.BODY
  10105. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="57p"><COLSPEC COLNAME="2" COLWIDTH="393p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  10106. ></ENTRY
  10107. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  10108. ></ENTRY
  10109. ></RBW-ROW
  10110. ></THEAD
  10111. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  10112. ></ENTRY
  10113. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13606" TYPE="XREF-TEXTCOPY">Verify Your Master Server Requirements</RBW-XREF
  10114. ></CELLBODY
  10115. ></ENTRY
  10116. ></RBW-ROW
  10117. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  10118. ></ENTRY
  10119. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="15450" TYPE="XREF-TEXTCOPY">Install the ObjectTeam Product Files</RBW-XREF
  10120. ></CELLBODY
  10121. ></ENTRY
  10122. ></RBW-ROW
  10123. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  10124. ></ENTRY
  10125. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Optional:</CX5FX5FFILE.NAME
  10126. > Configure ObjectTeam modules as described in <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Chapter 4, Activating Modules</RBW-XREF
  10127. >.</CELLBODY
  10128. ></ENTRY
  10129. ></RBW-ROW
  10130. ></TBODY
  10131. ></TGROUP
  10132. ></RBW-TABLE
  10133. ></LABEL
  10134. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13606"></RBW-ANCHOR
  10135. >Verify Your Master Server Requirements</SS.SUBSEC.HEAD
  10136. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10137. >Introduction</L.LABEL
  10138. ><B.BODY>If you want to upgrade a Slave server, be aware of the following requirement:</B.BODY
  10139. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  10140. ></RBW-AUTOGEN
  10141. ></RBW-MARKER
  10142. ><RBW-PARABODY>When you upgraded a Master server, you should have selected the option Client/Server. Selecting this enables an SQL Anywhere database client on the Slave server to connect to the SQL Anywhere server on the Master server.</RBW-PARABODY
  10143. ></LB.LIST.BULLET
  10144. ></LABEL
  10145. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10146. >How to check your SQL Anywhere Service</L.LABEL
  10147. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  10148. ></RBW-AUTOGEN
  10149. ></RBW-MARKER
  10150. ><RBW-PARABODY>To check your SQL Anywhere service on the Master server:</RBW-PARABODY
  10151. ></P.PROCEDURE
  10152. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  10153. ></RBW-AUTOGEN
  10154. ></RBW-MARKER
  10155. ><RBW-PARABODY>Log in to the Master server as administrator.</RBW-PARABODY
  10156. ></LN.LIST.NUM
  10157. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  10158. ></RBW-AUTOGEN
  10159. ></RBW-MARKER
  10160. ><RBW-PARABODY>Select Start | Programs | Cayenne Repository | Service Manager. </RBW-PARABODY
  10161. ></LN.LIST.NUM
  10162. ><LR.LIST.RESULT>The Service Manager window appears.</LR.LIST.RESULT
  10163. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00028.unk" origfile="pics/servmang.gif" origtype="X" origdoc="../../sources/ignt/igntupgr.fm5.mif"></RBW-GRAPHIC
  10164. ></FA2.FIGURE.ANCHOR.2
  10165. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  10166. ></RBW-AUTOGEN
  10167. ></RBW-MARKER
  10168. ><RBW-PARABODY>The name OTservice should appear in the Service Name field, and the Start button should be depressed.</RBW-PARABODY
  10169. ></LN.LIST.NUM
  10170. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  10171. ></RBW-AUTOGEN
  10172. ></RBW-MARKER
  10173. ><RBW-PARABODY>If the service is not running, click the Start button.</RBW-PARABODY
  10174. ></LN.LIST.NUM
  10175. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  10176. ></RBW-AUTOGEN
  10177. ></RBW-MARKER
  10178. ><RBW-PARABODY>If the service does not exist follow the steps below.</RBW-PARABODY
  10179. ></LN.LIST.NUM
  10180. ></LABEL
  10181. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10182. >How to create a new service</L.LABEL
  10183. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  10184. ></RBW-AUTOGEN
  10185. ></RBW-MARKER
  10186. ><RBW-PARABODY>To create a new service:</RBW-PARABODY
  10187. ></P.PROCEDURE
  10188. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  10189. ></RBW-AUTOGEN
  10190. ></RBW-MARKER
  10191. ><RBW-PARABODY>In the SQL Anywhere Service Manager window, click New.</RBW-PARABODY
  10192. ></LN.LIST.NUM
  10193. ><LR.LIST.RESULT>The Service Type window appears.</LR.LIST.RESULT
  10194. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00029.unk" origfile="pics/servtype.gif" origtype="X" origdoc="../../sources/ignt/igntupgr.fm5.mif"></RBW-GRAPHIC
  10195. ></FA2.FIGURE.ANCHOR.2
  10196. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  10197. ></RBW-AUTOGEN
  10198. ></RBW-MARKER
  10199. ><RBW-PARABODY>Network Server is the default. Click OK to accept this.</RBW-PARABODY
  10200. ></LN.LIST.NUM
  10201. ><LR.LIST.RESULT>The Edit Service Configuration window appears.</LR.LIST.RESULT
  10202. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00030.unk" origfile="pics/servcnfg.gif" origtype="X" origdoc="../../sources/ignt/igntupgr.fm5.mif"></RBW-GRAPHIC
  10203. ></FA2.FIGURE.ANCHOR.2
  10204. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  10205. ></RBW-AUTOGEN
  10206. ></RBW-MARKER
  10207. ><RBW-PARABODY>Enter OTservice as the name of the new service. </RBW-PARABODY
  10208. ></LN.LIST.NUM
  10209. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  10210. ></RBW-AUTOGEN
  10211. ></RBW-MARKER
  10212. ><RBW-PARABODY>In the Parameters field, enter <CX5FX5FINPUT>&truehy;n <RBWAUTO-0007>server</RBWAUTO-0007
  10213. ></CX5FX5FINPUT
  10214. >, where <CX5FX5FTERM>server </CX5FX5FTERM
  10215. >is the name of the Master server.</RBW-PARABODY
  10216. ></LN.LIST.NUM
  10217. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  10218. ></RBW-AUTOGEN
  10219. ></RBW-MARKER
  10220. ><RBW-PARABODY>Select the Automatic Startup radio button.</RBW-PARABODY
  10221. ></LN.LIST.NUM
  10222. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  10223. ></RBW-AUTOGEN
  10224. ></RBW-MARKER
  10225. ><RBW-PARABODY>Make sure the path for the SQL Anywhere executable is correct. If it is not, click on Path and locate the executable (by default C:\Cayenne\Tools\Sqlany55\Win32\Dbsrv50.exe). </RBW-PARABODY
  10226. ></LN.LIST.NUM
  10227. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  10228. ></RBW-AUTOGEN
  10229. ></RBW-MARKER
  10230. ><RBW-PARABODY>Select the check box Allow Service To Interact With Desktop.</RBW-PARABODY
  10231. ></LN.LIST.NUM
  10232. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  10233. ></RBW-AUTOGEN
  10234. ></RBW-MARKER
  10235. ><RBW-PARABODY>Click OK to register your settings.</RBW-PARABODY
  10236. ></LN.LIST.NUM
  10237. ></LABEL
  10238. ></SUBSECTION
  10239. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15450"></RBW-ANCHOR
  10240. >Install the ObjectTeam Product Files</SS.SUBSEC.HEAD
  10241. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10242. >How to upgrade a Slave Server</L.LABEL
  10243. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  10244. ></RBW-AUTOGEN
  10245. ></RBW-MARKER
  10246. ><RBW-PARABODY>To upgrade as Slave Server:</RBW-PARABODY
  10247. ></P.PROCEDURE
  10248. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  10249. ></RBW-AUTOGEN
  10250. ></RBW-MARKER
  10251. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  10252. ></LN.LIST.NUM
  10253. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  10254. ></RBW-AUTOGEN
  10255. ></RBW-MARKER
  10256. ><RBW-PARABODY>Shut down any other running applications, including DOS windows.</RBW-PARABODY
  10257. ></LN.LIST.NUM
  10258. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  10259. ></RBW-AUTOGEN
  10260. ></RBW-MARKER
  10261. ><RBW-PARABODY>Insert the ObjectTeam CD into the CD drive. (This can be a local or networked CD drive.)</RBW-PARABODY
  10262. ></LN.LIST.NUM
  10263. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  10264. ></RBW-AUTOGEN
  10265. ></RBW-MARKER
  10266. ><RBW-PARABODY>In the Windows Explorer, double&truehy;click on <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  10267. >:\Setup.exe.</RBW-PARABODY
  10268. ></LN.LIST.NUM
  10269. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  10270. ></RBW-AUTOGEN
  10271. ></RBW-MARKER
  10272. ><RBW-PARABODY>Proceed through the Welcome screen to the Select Products dialog box.</RBW-PARABODY
  10273. ></LN.LIST.NUM
  10274. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  10275. ></RBW-AUTOGEN
  10276. ></RBW-MARKER
  10277. ><RBW-PARABODY>The following choices are presented:</RBW-PARABODY
  10278. ></LN.LIST.NUM
  10279. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  10280. ></RBW-MARKER
  10281. ><RBW-PARABODY>ObjectTeam</RBW-PARABODY
  10282. ></LB2.LIST.BULLET.2
  10283. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  10284. ></RBW-MARKER
  10285. ><RBW-PARABODY>DocIt</RBW-PARABODY
  10286. ></LB2.LIST.BULLET.2
  10287. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  10288. ></RBW-MARKER
  10289. ><RBW-PARABODY>DocExpress</RBW-PARABODY
  10290. ></LB2.LIST.BULLET.2
  10291. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  10292. ></RBW-AUTOGEN
  10293. ></RBW-MARKER
  10294. ><RBW-PARABODY>Select ObjectTeam.</RBW-PARABODY
  10295. ></LN.LIST.NUM
  10296. ><LT.LIST.TEXT>For details on installing DocIt or DocExpress, see <RBW-XREF REFID="16254" TYPE="XREF-TEXTCOPY">Appendix A, Installing DocExpress and DocIt</RBW-XREF
  10297. >. </LT.LIST.TEXT
  10298. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  10299. ></RBW-AUTOGEN
  10300. ></RBW-MARKER
  10301. ><RBW-PARABODY>To view ObjectTeam’s Read Me First Notes, click the Product Notes button. </RBW-PARABODY
  10302. ></LN.LIST.NUM
  10303. ><LT.LIST.TEXT>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You <CX5FX5FFILE.NAME>must</CX5FX5FFILE.NAME
  10304. > read these notes before starting installation!</LT.LIST.TEXT
  10305. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  10306. ></RBW-AUTOGEN
  10307. ></RBW-MARKER
  10308. ><RBW-PARABODY>Click Install to proceed with the installation.</RBW-PARABODY
  10309. ></LN.LIST.NUM
  10310. ><LR.LIST.RESULT>The Product Requirements dialog box shows you the complete list of hardware and software requirements for your selected components. </LR.LIST.RESULT
  10311. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  10312. ></RBW-AUTOGEN
  10313. ></RBW-MARKER
  10314. ><RBW-PARABODY>If your workstation meets all of the listed hardware and software requirements, click Next to proceed with installation.</RBW-PARABODY
  10315. ></LN.LIST.NUM
  10316. ><LR.LIST.RESULT>The ObjectTeam install program starts up.</LR.LIST.RESULT
  10317. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  10318. ></RBW-AUTOGEN
  10319. ></RBW-MARKER
  10320. ><RBW-PARABODY>Proceed through the Welcome dialog.</RBW-PARABODY
  10321. ></LN.LIST.NUM
  10322. ><LR.LIST.RESULT>The Existing Installation dialog appears to inform you that an existing ObjectTeam installation has been detected. </LR.LIST.RESULT
  10323. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  10324. ></RBW-AUTOGEN
  10325. ></RBW-MARKER
  10326. ><RBW-PARABODY>Select Next to upgrade your existing installation.</RBW-PARABODY
  10327. ></LN.LIST.NUM
  10328. ><LR.LIST.RESULT>Upgrading your existing installation removes your current installation, then makes a new installation. </LR.LIST.RESULT
  10329. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  10330. ></RBW-AUTOGEN
  10331. ></RBW-MARKER
  10332. ><RBW-PARABODY>A confirmation dialog is displayed informing you of the consequence of your choice. Click Yes to continue or No to stop the upgrade.</RBW-PARABODY
  10333. ></LN.LIST.NUM
  10334. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  10335. ></RBW-AUTOGEN
  10336. ></RBW-MARKER
  10337. ><RBW-PARABODY>You are asked if you are want to install the product documentation. </RBW-PARABODY
  10338. ></LN.LIST.NUM
  10339. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  10340. ></RBW-AUTOGEN
  10341. ></RBW-MARKER
  10342. ><RBW-PARABODY>You are asked if you want to install SQL Anywhere. The default is Yes. (Choose No only if you want to use an existing SQL Anywhere 5.5 installation.)</RBW-PARABODY
  10343. ></LN.LIST.NUM
  10344. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>16&rbwtab;</CX5FX5FZLIST.NUMBER
  10345. ></RBW-AUTOGEN
  10346. ></RBW-MARKER
  10347. ><RBW-PARABODY>You are asked for the installation directory. The default is C:\Cayenne\Tools.</RBW-PARABODY
  10348. ></LN.LIST.NUM
  10349. ><LR.LIST.RESULT>The setup program deletes your installation and the ObjectTeam software loads into the directory you specified. A progress bar indicates the progress of the installation.</LR.LIST.RESULT
  10350. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>17&rbwtab;</CX5FX5FZLIST.NUMBER
  10351. ></RBW-AUTOGEN
  10352. ></RBW-MARKER
  10353. ><RBW-PARABODY>The User Account dialog asks you for details of the user account under which the services will be started. The services must be run under this account so that the remote disk can be attached. </RBW-PARABODY
  10354. ></LN.LIST.NUM
  10355. ><LT.LIST.TEXT>The account should be an account in the Administrator group, in any Domain. The account must have the right “log on as a service”. If you specify an account that does not have the “log on as a service” right, then when the ot_broker attempts to start, you will get an error. For details on how to give an account this right, see <RBW-XREF REFID="13913" TYPE="XREF-TEXTCOPY">Configure a User Account</RBW-XREF
  10356. >.</LT.LIST.TEXT
  10357. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>18&rbwtab;</CX5FX5FZLIST.NUMBER
  10358. ></RBW-AUTOGEN
  10359. ></RBW-MARKER
  10360. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  10361. ></LN.LIST.NUM
  10362. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  10363. ></RBW-AUTOGEN
  10364. ></RBW-MARKER
  10365. ><RBW-PARABODY>If you are running the license server software on this machine, or your license file is stored locally, the default is C:\Cayenne\Flexlm\license\cayenne.dat. </RBW-PARABODY
  10366. ></LN2.LIST.NUM.2
  10367. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  10368. ></RBW-AUTOGEN
  10369. ></RBW-MARKER
  10370. ><RBW-PARABODY>If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  10371. ></LN2.LIST.NUM.2
  10372. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  10373. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  10374. ></RBW-AUTOGEN
  10375. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a semi&truehy;colon (;).</N2.NOTE.2
  10376. ><LR.LIST.RESULT>The installation script places an ObjectTeam menu in your Start menu, then sets some system environment variables.</LR.LIST.RESULT
  10377. ><LR.LIST.RESULT>You are returned to the Cayenne Install Wizard.</LR.LIST.RESULT
  10378. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>19&rbwtab;</CX5FX5FZLIST.NUMBER
  10379. ></RBW-AUTOGEN
  10380. ></RBW-MARKER
  10381. ><RBW-PARABODY>Click Exit.</RBW-PARABODY
  10382. ></LN.LIST.NUM
  10383. ><LR.LIST.RESULT>A dialog box is displayed asking if you want to reboot now or later for your changes to take effect. </LR.LIST.RESULT
  10384. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>20&rbwtab;</CX5FX5FZLIST.NUMBER
  10385. ></RBW-AUTOGEN
  10386. ></RBW-MARKER
  10387. ><RBW-PARABODY>Select Now and click on OK.</RBW-PARABODY
  10388. ></LN.LIST.NUM
  10389. ><LR.LIST.RESULT>The setup program then reboots your computer.</LR.LIST.RESULT
  10390. ></LABEL
  10391. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10392. >Next steps</L.LABEL
  10393. ><B.BODY>ObjectTeam consists of a base product and a number of optional features. Each optional feature is implemented as an ObjectTeam module. If you have purchased any such feature, the corresponding modules should first be activated.</B.BODY
  10394. ><B.BODY>For details on how to activate modules, go to <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Activating Modules</RBW-XREF
  10395. >.</B.BODY
  10396. ></LABEL
  10397. ></SUBSECTION
  10398. ></SECTION
  10399. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34715"></RBW-ANCHOR
  10400. >Upgrading an ObjectTeam Client</S.SECTION.HEAD
  10401. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10402. >How to run the upgrade</L.LABEL
  10403. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  10404. ></RBW-AUTOGEN
  10405. ></RBW-MARKER
  10406. ><RBW-PARABODY>To run the upgrade:</RBW-PARABODY
  10407. ></P.PROCEDURE
  10408. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  10409. ></RBW-AUTOGEN
  10410. ></RBW-MARKER
  10411. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  10412. ></LN.LIST.NUM
  10413. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  10414. ></RBW-AUTOGEN
  10415. ></RBW-MARKER
  10416. ><RBW-PARABODY>Shut down any other running applications, including DOS windows.</RBW-PARABODY
  10417. ></LN.LIST.NUM
  10418. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  10419. ></RBW-AUTOGEN
  10420. ></RBW-MARKER
  10421. ><RBW-PARABODY>Insert the ObjectTeam CD into the CD drive. (This can be a local or networked CD drive.)</RBW-PARABODY
  10422. ></LN.LIST.NUM
  10423. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  10424. ></RBW-AUTOGEN
  10425. ></RBW-MARKER
  10426. ><RBW-PARABODY>In the Windows Explorer, double&truehy;click on <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  10427. >:\Setup.exe.</RBW-PARABODY
  10428. ></LN.LIST.NUM
  10429. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  10430. ></RBW-AUTOGEN
  10431. ></RBW-MARKER
  10432. ><RBW-PARABODY>Proceed through the Welcome screen to the Select Products dialog box.</RBW-PARABODY
  10433. ></LN.LIST.NUM
  10434. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  10435. ></RBW-AUTOGEN
  10436. ></RBW-MARKER
  10437. ><RBW-PARABODY>The following choices are presented:</RBW-PARABODY
  10438. ></LN.LIST.NUM
  10439. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  10440. ></RBW-MARKER
  10441. ><RBW-PARABODY>ObjectTeam</RBW-PARABODY
  10442. ></LB2.LIST.BULLET.2
  10443. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  10444. ></RBW-MARKER
  10445. ><RBW-PARABODY>DocExpress</RBW-PARABODY
  10446. ></LB2.LIST.BULLET.2
  10447. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  10448. ></RBW-MARKER
  10449. ><RBW-PARABODY>DocIt</RBW-PARABODY
  10450. ></LB2.LIST.BULLET.2
  10451. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  10452. ></RBW-AUTOGEN
  10453. ></RBW-MARKER
  10454. ><RBW-PARABODY>Select ObjectTeam.</RBW-PARABODY
  10455. ></LN.LIST.NUM
  10456. ><LT.LIST.TEXT>For details on installing DocIt or DocExpress, see <RBW-XREF REFID="16254" TYPE="XREF-TEXTCOPY">Appendix A, Installing DocExpress and DocIt</RBW-XREF
  10457. >. </LT.LIST.TEXT
  10458. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  10459. ></RBW-AUTOGEN
  10460. ></RBW-MARKER
  10461. ><RBW-PARABODY>To view ObjectTeam’s Read Me First Notes, click the Product Notes button. </RBW-PARABODY
  10462. ></LN.LIST.NUM
  10463. ><LT.LIST.TEXT>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You <CX5FX5FFILE.NAME>must</CX5FX5FFILE.NAME
  10464. > read these notes before starting installation!</LT.LIST.TEXT
  10465. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  10466. ></RBW-AUTOGEN
  10467. ></RBW-MARKER
  10468. ><RBW-PARABODY>Click Install to proceed with the installation.</RBW-PARABODY
  10469. ></LN.LIST.NUM
  10470. ><LR.LIST.RESULT>The Product Requirements dialog box shows you the complete list of hardware and software requirements for your selected components. </LR.LIST.RESULT
  10471. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  10472. ></RBW-AUTOGEN
  10473. ></RBW-MARKER
  10474. ><RBW-PARABODY>If your workstation meets all of the listed hardware and software requirements, click Next to proceed with installation.</RBW-PARABODY
  10475. ></LN.LIST.NUM
  10476. ><LR.LIST.RESULT>The ObjectTeam install program starts up.</LR.LIST.RESULT
  10477. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  10478. ></RBW-AUTOGEN
  10479. ></RBW-MARKER
  10480. ><RBW-PARABODY>Proceed through the Welcome dialog.</RBW-PARABODY
  10481. ></LN.LIST.NUM
  10482. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  10483. ></RBW-AUTOGEN
  10484. ></RBW-MARKER
  10485. ><RBW-PARABODY>The Existing Installation dialog is displayed, informing you that an existing ObjectTeam installation has been detected. Select Next to upgrade your existing installation</RBW-PARABODY
  10486. ></LN.LIST.NUM
  10487. ><LR.LIST.RESULT>Upgrading your existing installation removes your current installation, then makes a new installation. </LR.LIST.RESULT
  10488. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  10489. ></RBW-AUTOGEN
  10490. ></RBW-MARKER
  10491. ><RBW-PARABODY>A confirmation dialog is displayed informing you of the consequence of your choice. Click Yes to continue or No to stop the upgrade.</RBW-PARABODY
  10492. ></LN.LIST.NUM
  10493. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>14&rbwtab;</CX5FX5FZLIST.NUMBER
  10494. ></RBW-AUTOGEN
  10495. ></RBW-MARKER
  10496. ><RBW-PARABODY>A dialog is displayed asking if you want to install the Product documentation. Click Yes to accept.</RBW-PARABODY
  10497. ></LN.LIST.NUM
  10498. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>15&rbwtab;</CX5FX5FZLIST.NUMBER
  10499. ></RBW-AUTOGEN
  10500. ></RBW-MARKER
  10501. ><RBW-PARABODY>You are asked for the installation directory. The default is C:\Cayenne\Tools.</RBW-PARABODY
  10502. ></LN.LIST.NUM
  10503. ><LR.LIST.RESULT>The ObjectTeam software loads into the directory you specified. A progress bar informs you of the progress of the installation.</LR.LIST.RESULT
  10504. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>16&rbwtab;</CX5FX5FZLIST.NUMBER
  10505. ></RBW-AUTOGEN
  10506. ></RBW-MARKER
  10507. ><RBW-PARABODY>A dialog is displayed asking for the location of your license file. The default is C:\Cayenne\Flexlm\license\cayenne.dat. Click Next.</RBW-PARABODY
  10508. ></LN.LIST.NUM
  10509. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>17&rbwtab;</CX5FX5FZLIST.NUMBER
  10510. ></RBW-AUTOGEN
  10511. ></RBW-MARKER
  10512. ><RBW-PARABODY>You are asked for the location of your license file:</RBW-PARABODY
  10513. ></LN.LIST.NUM
  10514. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  10515. ></RBW-AUTOGEN
  10516. ></RBW-MARKER
  10517. ><RBW-PARABODY>If you are running the license server software on this machine, or your license file is stored locally, the default is C:\Cayenne\Flexlm\license\cayenne.dat. </RBW-PARABODY
  10518. ></LN2.LIST.NUM.2
  10519. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  10520. ></RBW-AUTOGEN
  10521. ></RBW-MARKER
  10522. ><RBW-PARABODY>If you are running the license server software on another machine, you must identify the port being used by the license service on the server and the host name of the server. On the license server, open the license file cayenne.dat in a text editor. The port appears as the last field on the SERVER line. Cayenne Software uses the port number 7126 by default. For example:</RBW-PARABODY
  10523. ></LN2.LIST.NUM.2
  10524. ><EM.EXAMPLE.MONO>SERVER neptune 08005a88359e 7126</EM.EXAMPLE.MONO
  10525. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  10526. ></RBW-AUTOGEN
  10527. >If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended to the end, separated from the previous path by a semi&truehy;colon (;).</N2.NOTE.2
  10528. ><LR.LIST.RESULT><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  10529. > The installation script places an ObjectTeam menu in your Start menu, then sets some system environment variables.</LR.LIST.RESULT
  10530. ><LR.LIST.RESULT><CX5FX5FFILE.NAME>Windows 95:</CX5FX5FFILE.NAME
  10531. > The installation script places an ObjectTeam menu in your Start menu, then modifies your AUTOEXEC.BAT file to set the system environment variables. </LR.LIST.RESULT
  10532. ><LR.LIST.RESULT>You are returned to the Cayenne Install Wizard.</LR.LIST.RESULT
  10533. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>18&rbwtab;</CX5FX5FZLIST.NUMBER
  10534. ></RBW-AUTOGEN
  10535. ></RBW-MARKER
  10536. ><RBW-PARABODY>Click Exit.</RBW-PARABODY
  10537. ></LN.LIST.NUM
  10538. ><LR.LIST.RESULT>A dialog box is displayed asking if you want to reboot now or later for your changes to take effect. </LR.LIST.RESULT
  10539. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>19&rbwtab;</CX5FX5FZLIST.NUMBER
  10540. ></RBW-AUTOGEN
  10541. ></RBW-MARKER
  10542. ><RBW-PARABODY>Select Now and click on OK.</RBW-PARABODY
  10543. ></LN.LIST.NUM
  10544. ><LR.LIST.RESULT>The setup program then reboots your computer.</LR.LIST.RESULT
  10545. ></LABEL
  10546. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10547. >Next steps</L.LABEL
  10548. ><B.BODY>ObjectTeam consists of a base product and a number of optional features. Each optional feature is implemented as an ObjectTeam module. If you have purchased any such feature, the corresponding modules should first be activated.</B.BODY
  10549. ><B.BODY>For details on how to activate modules, go to <RBW-XREF REFID="38042" TYPE="XREF-TEXTCOPY">Activating Modules</RBW-XREF
  10550. >.</B.BODY
  10551. ><RBWAUTO-0001></RBWAUTO-0001
  10552. ><!--
  10553.  
  10554.  
  10555.  
  10556.  
  10557.  
  10558. CONVERTING SOURCE FILE ../../sources/ignt/igntmods.fm5.mif
  10559.  
  10560.  
  10561. --><B.BODY></B.BODY
  10562. ><B.BODY></B.BODY
  10563. ><B.BODY></B.BODY
  10564. ><B.BODY></B.BODY
  10565. ><B.BODY></B.BODY
  10566. ></LABEL
  10567. ></SECTION
  10568. ></CHAPTER
  10569. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  10570. ></RBW-AUTOGEN
  10571. >Activating <RBW-ANCHOR ID="38042"></RBW-ANCHOR
  10572. >Modules<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  10573. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  10574. ></RBW-SYSOBJ
  10575. ></C.CHAPTER.HEAD
  10576. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10577. >Introduction</L.LABEL
  10578. ><B.BODY>This chapter describes how to activate optional ObjectTeam functionality provided in licensed modules.</B.BODY
  10579. ></LABEL
  10580. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10581. >In this chapter</L.LABEL
  10582. ><B.BODY>This chapter contains the following sections:</B.BODY
  10583. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  10584. ></ENTRY
  10585. ></RBW-ROW
  10586. ></THEAD
  10587. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27316" TYPE="XREF-TEXTCOPY">ObjectTeam Modules&rbwtab;4–2</RBW-XREF
  10588. ></SB.SECTION.BLOCK.TABLE
  10589. ></ENTRY
  10590. ></RBW-ROW
  10591. ></TBODY
  10592. ></TGROUP
  10593. ></RBW-TABLE
  10594. ><B.BODY></B.BODY
  10595. ></LABEL
  10596. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27316"></RBW-ANCHOR
  10597. >ObjectTeam Modules</S.SECTION.HEAD
  10598. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10599. >Introduction</L.LABEL
  10600. ><B.BODY>ObjectTeam consists of a base product and a number of optional features. Each optional feature is implemented as an ObjectTeam module. To use the feature, you must activate the module. </B.BODY
  10601. ></LABEL
  10602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10603. >Licensing</L.LABEL
  10604. ><B.BODY>Most modules require a valid license. If ObjectTeam displays license&truehy;related error messages, you may not have a valid license. </B.BODY
  10605. ><B.BODY>Refer to <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  10606. > for more information.</B.BODY
  10607. ></LABEL
  10608. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10609. >Modules and repository levels</L.LABEL
  10610. ><B.BODY>The instructions here cover how to activate modules on Corporate level for an entire corporate repository. You must have root access to do this. Modules activated on Corporate level are available by default for all users of this repository on every level.</B.BODY
  10611. ><B.BODY>You do not have to activate all modules on Corporate level. Users can activate them on any other level in the repository, as long as they are licensed.</B.BODY
  10612. ></LABEL
  10613. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10614. >Which ObjectTeam modules are available</L.LABEL
  10615. ><B.BODY>A <CX5FX5FTERM>module</CX5FX5FTERM
  10616. > is a directory of files that implement an optional ObjectTeam feature. The directory name is the module name. By default, all modules are stored in the modules directory of your <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  10617. > directory.</B.BODY
  10618. ><B.BODY>Modules on the following features are supplied with ObjectTeam. </B.BODY
  10619. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="150p"><COLSPEC COLNAME="2" COLWIDTH="198p"><COLSPEC COLNAME="3" COLWIDTH="279p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Feature</CELLHEADING
  10620. ></ENTRY
  10621. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module</CELLHEADING
  10622. ></ENTRY
  10623. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam Guide</CELLHEADING
  10624. ></ENTRY
  10625. ></RBW-ROW
  10626. ></THEAD
  10627. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Code Generation</CELLBODY
  10628. ></ENTRY
  10629. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ADA83 Code generation</CELLBODY
  10630. ></ENTRY
  10631. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  10632. ><CX5FX5FTERM> Ada</CX5FX5FTERM
  10633. ><CX5FX5FTITLE> Professional Developers Toolkit</CX5FX5FTITLE
  10634. > </CELLBODY
  10635. ></ENTRY
  10636. ></RBW-ROW
  10637. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10638. ></ENTRY
  10639. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ADA95 Code generation</CELLBODY
  10640. ></ENTRY
  10641. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  10642. ><CX5FX5FTERM> Ada Professional Developers Toolkit</CX5FX5FTERM
  10643. > </CELLBODY
  10644. ></ENTRY
  10645. ></RBW-ROW
  10646. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10647. ></ENTRY
  10648. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C++ Code Generation</CELLBODY
  10649. ></ENTRY
  10650. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10651. ><CX5FX5FTITLE></CX5FX5FTITLE
  10652. > <CX5FX5FTERM>for</CX5FX5FTERM
  10653. > <CX5FX5FTERM>C++</CX5FX5FTERM
  10654. ></CELLBODY
  10655. ></ENTRY
  10656. ></RBW-ROW
  10657. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10658. ></ENTRY
  10659. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CORBA IDL Code Generation</CELLBODY
  10660. ></ENTRY
  10661. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10662. ><CX5FX5FTITLE></CX5FX5FTITLE
  10663. > <CX5FX5FTITLE>for CORBA IDL</CX5FX5FTITLE
  10664. ></CELLBODY
  10665. ></ENTRY
  10666. ></RBW-ROW
  10667. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10668. ></ENTRY
  10669. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delphi Code Generation</CELLBODY
  10670. ></ENTRY
  10671. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10672. ><CX5FX5FTITLE></CX5FX5FTITLE
  10673. > <CX5FX5FTITLE>for Delphi</CX5FX5FTITLE
  10674. ></CELLBODY
  10675. ></ENTRY
  10676. ></RBW-ROW
  10677. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10678. ></ENTRY
  10679. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Forte Code Generation</CELLBODY
  10680. ></ENTRY
  10681. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10682. ><CX5FX5FTITLE></CX5FX5FTITLE
  10683. > <CX5FX5FTITLE>for Forté</CX5FX5FTITLE
  10684. ></CELLBODY
  10685. ></ENTRY
  10686. ></RBW-ROW
  10687. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10688. ></ENTRY
  10689. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Java Code Generation</CELLBODY
  10690. ></ENTRY
  10691. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10692. ><CX5FX5FTITLE></CX5FX5FTITLE
  10693. > <CX5FX5FTITLE>for Java</CX5FX5FTITLE
  10694. ></CELLBODY
  10695. ></ENTRY
  10696. ></RBW-ROW
  10697. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10698. ></ENTRY
  10699. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NewEra Code Generation</CELLBODY
  10700. ></ENTRY
  10701. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10702. ><CX5FX5FTITLE></CX5FX5FTITLE
  10703. > <CX5FX5FTITLE>for Informix NewEra</CX5FX5FTITLE
  10704. ></CELLBODY
  10705. ></ENTRY
  10706. ></RBW-ROW
  10707. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10708. ></ENTRY
  10709. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent C++ Generation</CELLBODY
  10710. ></ENTRY
  10711. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10712. ><CX5FX5FTITLE></CX5FX5FTITLE
  10713. > <CX5FX5FTERM>for</CX5FX5FTERM
  10714. > <CX5FX5FTERM>C++</CX5FX5FTERM
  10715. ></CELLBODY
  10716. ></ENTRY
  10717. ></RBW-ROW
  10718. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10719. ></ENTRY
  10720. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PowerBuilder Code Generation</CELLBODY
  10721. ></ENTRY
  10722. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10723. ><CX5FX5FTITLE></CX5FX5FTITLE
  10724. > <CX5FX5FTITLE>for PowerBuilder</CX5FX5FTITLE
  10725. ></CELLBODY
  10726. ></ENTRY
  10727. ></RBW-ROW
  10728. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10729. ></ENTRY
  10730. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Smalltalk Code Generation</CELLBODY
  10731. ></ENTRY
  10732. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10733. ><CX5FX5FTITLE></CX5FX5FTITLE
  10734. > <CX5FX5FTITLE>for Smalltalk</CX5FX5FTITLE
  10735. ></CELLBODY
  10736. ></ENTRY
  10737. ></RBW-ROW
  10738. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10739. ></ENTRY
  10740. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Visual Basic Code generation</CELLBODY
  10741. ></ENTRY
  10742. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10743. ><CX5FX5FTITLE></CX5FX5FTITLE
  10744. > <CX5FX5FTITLE>for Visual Basic</CX5FX5FTITLE
  10745. ></CELLBODY
  10746. ></ENTRY
  10747. ></RBW-ROW
  10748. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version Control</CELLBODY
  10749. ><CELLBODY>integration</CELLBODY
  10750. ></ENTRY
  10751. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ClearCase Integration</CELLBODY
  10752. ></ENTRY
  10753. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam ClearCase Integration Guide</CX5FX5FTITLE
  10754. ><CX5FX5FTITLE></CX5FX5FTITLE
  10755. ></CELLBODY
  10756. ></ENTRY
  10757. ></RBW-ROW
  10758. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10759. ></ENTRY
  10760. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Continuus Integration</CELLBODY
  10761. ></ENTRY
  10762. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Continuus Integration Guide</CX5FX5FTITLE
  10763. ><CX5FX5FTITLE></CX5FX5FTITLE
  10764. ></CELLBODY
  10765. ></ENTRY
  10766. ></RBW-ROW
  10767. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10768. ></ENTRY
  10769. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Razor Integration</CELLBODY
  10770. ></ENTRY
  10771. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Razor Integration Guide</CX5FX5FTITLE
  10772. ><CX5FX5FTITLE></CX5FX5FTITLE
  10773. ></CELLBODY
  10774. ></ENTRY
  10775. ></RBW-ROW
  10776. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Requirement </CELLBODY
  10777. ><CELLBODY>engineering integration</CELLBODY
  10778. ></ENTRY
  10779. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>DOORS Integration</CELLBODY
  10780. ></ENTRY
  10781. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam DOORS Integration Guide</CX5FX5FTITLE
  10782. ><CX5FX5FTITLE></CX5FX5FTITLE
  10783. ></CELLBODY
  10784. ></ENTRY
  10785. ></RBW-ROW
  10786. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10787. ></ENTRY
  10788. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>RTM Integration</CELLBODY
  10789. ></ENTRY
  10790. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam RTM Integration Guide</CX5FX5FTITLE
  10791. ><CX5FX5FTITLE></CX5FX5FTITLE
  10792. ></CELLBODY
  10793. ></ENTRY
  10794. ></RBW-ROW
  10795. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Document Generation</CELLBODY
  10796. ></ENTRY
  10797. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>FrameMaker 5.0</CELLBODY
  10798. ></ENTRY
  10799. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  10800. ><CX5FX5FTITLE></CX5FX5FTITLE
  10801. ></CELLBODY
  10802. ></ENTRY
  10803. ></RBW-ROW
  10804. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10805. ></ENTRY
  10806. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interleaf</CELLBODY
  10807. ></ENTRY
  10808. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  10809. ><CX5FX5FTITLE></CX5FX5FTITLE
  10810. ></CELLBODY
  10811. ></ENTRY
  10812. ></RBW-ROW
  10813. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10814. ></ENTRY
  10815. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT FrameMaker 5.0</CELLBODY
  10816. ></ENTRY
  10817. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  10818. ><CX5FX5FTITLE></CX5FX5FTITLE
  10819. ></CELLBODY
  10820. ></ENTRY
  10821. ></RBW-ROW
  10822. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10823. ></ENTRY
  10824. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT Word</CELLBODY
  10825. ></ENTRY
  10826. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  10827. ><CX5FX5FTITLE></CX5FX5FTITLE
  10828. ></CELLBODY
  10829. ></ENTRY
  10830. ></RBW-ROW
  10831. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10832. ></ENTRY
  10833. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT Word 97</CELLBODY
  10834. ></ENTRY
  10835. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  10836. ><CX5FX5FTITLE></CX5FX5FTITLE
  10837. ></CELLBODY
  10838. ></ENTRY
  10839. ></RBW-ROW
  10840. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10841. ></ENTRY
  10842. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Word</CELLBODY
  10843. ></ENTRY
  10844. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  10845. ><CX5FX5FTITLE></CX5FX5FTITLE
  10846. ></CELLBODY
  10847. ></ENTRY
  10848. ></RBW-ROW
  10849. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10850. ></ENTRY
  10851. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Word 97</CELLBODY
  10852. ></ENTRY
  10853. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  10854. ><CX5FX5FTITLE></CX5FX5FTITLE
  10855. ></CELLBODY
  10856. ></ENTRY
  10857. ></RBW-ROW
  10858. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Miscellaneous</CELLBODY
  10859. ></ENTRY
  10860. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate modeling</CELLBODY
  10861. ></ENTRY
  10862. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  10863. ><CX5FX5FTITLE></CX5FX5FTITLE
  10864. ></CELLBODY
  10865. ></ENTRY
  10866. ></RBW-ROW
  10867. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10868. ></ENTRY
  10869. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Groundworks (VAR) interface</CELLBODY
  10870. ></ENTRY
  10871. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  10872. ><CX5FX5FTITLE></CX5FX5FTITLE
  10873. ></CELLBODY
  10874. ></ENTRY
  10875. ></RBW-ROW
  10876. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10877. ></ENTRY
  10878. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT</CELLBODY
  10879. ></ENTRY
  10880. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  10881. ><CX5FX5FTITLE></CX5FX5FTITLE
  10882. ></CELLBODY
  10883. ></ENTRY
  10884. ></RBW-ROW
  10885. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10886. ></ENTRY
  10887. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Microsoft Repository Interface</CELLBODY
  10888. ></ENTRY
  10889. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  10890. ><CX5FX5FTITLE></CX5FX5FTITLE
  10891. ></CELLBODY
  10892. ></ENTRY
  10893. ></RBW-ROW
  10894. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  10895. ></ENTRY
  10896. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Security</CELLBODY
  10897. ></ENTRY
  10898. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  10899. ><CX5FX5FTITLE></CX5FX5FTITLE
  10900. ></CELLBODY
  10901. ></ENTRY
  10902. ></RBW-ROW
  10903. ></TBODY
  10904. ></TGROUP
  10905. ><RBW-ICONIZE></RBW-TABLE
  10906. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  10907. ></RBW-AUTOGEN
  10908. >Not all modules are available on all platforms. </N.NOTE
  10909. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10910. >Code Generation</SL.SUBLABEL
  10911. ><B.BODY>In previous releases of ObjectTeam, target language for code generation was set using the variables M4_package and M4_target_lang. This mechanism has been replaced by modules. These variables are no longer used. </B.BODY
  10912. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  10913. ></RBW-AUTOGEN
  10914. >The C++ code generation implemented in the <CX5FX5FFILE.NAME>C++ Code Generation</CX5FX5FFILE.NAME
  10915. > module is different from previous versions of ObjectTeam. The previous implementation of C++ code generation is available in the compatibility module <CX5FX5FFILE.NAME>Persistent C++ Generation</CX5FX5FFILE.NAME
  10916. >. For more details, see chapter on compatibility in the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  10917. ><CX5FX5FTITLE></CX5FX5FTITLE
  10918. > for C++.</N.NOTE
  10919. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10920. >User&truehy;defined modules</SL.SUBLABEL
  10921. ><B.BODY>You can create your own ObjectTeam modules. For details, see <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  10922. ><CX5FX5FTITLE></CX5FX5FTITLE
  10923. >.</B.BODY
  10924. ></LABEL
  10925. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  10926. ><RBW-ANCHOR ID="13855"></RBW-ANCHOR
  10927. >How to Activate a Module on Corporate level</L.LABEL
  10928. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  10929. ></RBW-AUTOGEN
  10930. ></RBW-MARKER
  10931. ><RBW-PARABODY>To activate a module:</RBW-PARABODY
  10932. ></P.PROCEDURE
  10933. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  10934. ></RBW-AUTOGEN
  10935. ></RBW-MARKER
  10936. ><RBW-PARABODY>In the Browser, open the <customization files> pseudo&truehy;object on Corporate level.</RBW-PARABODY
  10937. ></LN.LIST.NUM
  10938. ><LR.LIST.RESULT>The objects etc and tcl appear.</LR.LIST.RESULT
  10939. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  10940. ></RBW-AUTOGEN
  10941. ></RBW-MARKER
  10942. ><RBW-PARABODY>Open the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  10943. > object.</RBW-PARABODY
  10944. ></LN.LIST.NUM
  10945. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  10946. ></RBW-AUTOGEN
  10947. ></RBW-MARKER
  10948. ><RBW-PARABODY>A list of all customization files on Corporate level appear. </RBW-PARABODY
  10949. ></LN.LIST.NUM
  10950. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  10951. ></RBW-AUTOGEN
  10952. ></RBW-MARKER
  10953. ><RBW-PARABODY>Double&truehy;click on the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  10954. > object. </RBW-PARABODY
  10955. ></LN.LIST.NUM
  10956. ><LR.LIST.RESULT>The Modules Availability Editor starts up.</LR.LIST.RESULT
  10957. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00031.unk" origfile="../shared_files/pics/modedit.gif" origtype="X" origdoc="../../sources/ignt/igntmods.fm5.mif"></RBW-GRAPHIC
  10958. ></FAR.FIGURE.ANCHOR.RIGHT
  10959. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  10960. ></RBW-AUTOGEN
  10961. ></RBW-MARKER
  10962. ><RBW-PARABODY>Select Edit | New. </RBW-PARABODY
  10963. ></LN.LIST.NUM
  10964. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  10965. ></RBW-AUTOGEN
  10966. ></RBW-MARKER
  10967. ><RBW-PARABODY>The Select Module dialog appears, displaying a list of all available modules.</RBW-PARABODY
  10968. ></LN.LIST.NUM
  10969. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  10970. ></RBW-AUTOGEN
  10971. >If your modules directory is not the modules directory of your <CX5FX5FTERM>M4_home </CX5FX5FTERM
  10972. >directory, click the Browse button to locate the module directory in the file system. </N2.NOTE.2
  10973. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  10974. ></RBW-AUTOGEN
  10975. ></RBW-MARKER
  10976. ><RBW-PARABODY>Select the name of the module you wish to activate and click OK.</RBW-PARABODY
  10977. ></LN.LIST.NUM
  10978. ><LR.LIST.RESULT>The new module has been added to the list of active modules</LR.LIST.RESULT
  10979. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  10980. ></RBW-AUTOGEN
  10981. ></RBW-MARKER
  10982. ><RBW-PARABODY>Save the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  10983. > file and exit the Module Availability Editor.</RBW-PARABODY
  10984. ></LN.LIST.NUM
  10985. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  10986. ></RBW-AUTOGEN
  10987. >If an error message on conflicting modules appears, refer to Resolving Conflicting Modules on page 4–14 for details.</N2.NOTE.2
  10988. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  10989. ></RBW-AUTOGEN
  10990. ></RBW-MARKER
  10991. ><RBW-PARABODY>Select Utilities | Clone</RBW-PARABODY
  10992. ></LN.LIST.NUM
  10993. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  10994. ></RBW-AUTOGEN
  10995. >Because of the way customization files are read by ObjectTeam, you have to clone (or restart) the Browser if you want the changes made to <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  10996. > files on Corporate level and User Customization level to take effect.</N2.NOTE.2
  10997. ><B.BODY>Customization files on these levels are only read at start&truehy;up.</B.BODY
  10998. ></LABEL
  10999. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11000. ><RBW-ANCHOR ID="10485"></RBW-ANCHOR
  11001. >Checking if a module is active</L.LABEL
  11002. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11003. ></RBW-AUTOGEN
  11004. ></RBW-MARKER
  11005. ><RBW-PARABODY>To check which modules are active on a particular Browser level:</RBW-PARABODY
  11006. ></P.PROCEDURE
  11007. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11008. ></RBW-AUTOGEN
  11009. ></RBW-MARKER
  11010. ><RBW-PARABODY>Move to the Browser level of your choice</RBW-PARABODY
  11011. ></LN.LIST.NUM
  11012. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11013. ></RBW-AUTOGEN
  11014. ></RBW-MARKER
  11015. ><RBW-PARABODY>Select Utilities | Show Active Modules</RBW-PARABODY
  11016. ></LN.LIST.NUM
  11017. ><LR.LIST.RESULT>The Active Modules dialog box appears, listing all the modules that are active on the current Browser level.</LR.LIST.RESULT
  11018. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00032.unk" origfile="../shared_files/pics/actmod.gif" origtype="X" origdoc="../../sources/ignt/igntmods.fm5.mif"></RBW-GRAPHIC
  11019. ></FA2.FIGURE.ANCHOR.2
  11020. ></LABEL
  11021. ><SUBSECTION><SS.SUBSEC.HEAD>ObjectTeam Module Specifications</SS.SUBSEC.HEAD
  11022. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11023. >Introduction</L.LABEL
  11024. ><B.BODY>A <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11025. > customization file contains one or more module specifications. Each module specification activates or deactivates a module. A <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11026. > customization file can exist at any Browser level, from corporate level through user level</B.BODY
  11027. ></LABEL
  11028. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11029. >How module specifications are read</L.LABEL
  11030. ><B.BODY>The module specifications in<CX5FX5FFILE.NAME> modules.modules</CX5FX5FFILE.NAME
  11031. > files are incrementally read by ObjectTeam. The specifications in a <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11032. > file on Corporate level, for example, are read when a user starts ObjectTeam, whereas those in a <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11033. > file on Project level are read when a user opens the Project in the ObjectTeam Browser.</B.BODY
  11034. ><B.BODY>The set of module specifications on a certain Browser level is the result of ObjectTeam’s adding module specifications from all the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11035. > files on higher levels.</B.BODY
  11036. ><B.BODY>This implies that if you want the changes made in a certain <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11037. > file to take effect, you first have to make ObjectTeam read the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11038. > file. </B.BODY
  11039. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  11040. ></RBW-AUTOGEN
  11041. >If you made changes to a <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11042. > file on Corporate level or User Customization level, you cannot move up one level anymore; the changes only take effect if you either clone or restart the Browser.</N.NOTE
  11043. ></LABEL
  11044. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11045. >Example</L.LABEL
  11046. ><B.BODY>If the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11047. > file was changed on Project level, in a project called ProjectX, for example, you should first move up (by selecting the Corporate object in the Navigation Area, for example). If you then open ProjectX again, ObjectTeam adds the module specifications in this file to the current set of module specifications.</B.BODY
  11048. ></LABEL
  11049. ></SUBSECTION
  11050. ></SECTION
  11051. ><SECTION><S.SECTION.HEAD>The Module Availability Editor</S.SECTION.HEAD
  11052. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11053. >Introduction</L.LABEL
  11054. ><B.BODY>The Module Availability Editor is the tool with which you create, activate, delete and manipulate ObjectTeam module specifications. It starts up if you edit the customization file <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11055. >.</B.BODY
  11056. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00033.unk" origfile="../shared_files/pics/modedtr.gif" origtype="X" origdoc="../../sources/ignt/igntmods.fm5.mif"></RBW-GRAPHIC
  11057. ></FAR.FIGURE.ANCHOR.RIGHT
  11058. ></LABEL
  11059. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11060. >Menus</L.LABEL
  11061. ><B.BODY>The following menus and menu entries are available in the Module Availability Editor:</B.BODY
  11062. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="57p"><COLSPEC COLNAME="2" COLWIDTH="150p"><COLSPEC COLNAME="3" COLWIDTH="240p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Menu</CELLHEADING
  11063. ></ENTRY
  11064. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Menu Entry</CELLHEADING
  11065. ></ENTRY
  11066. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  11067. ></ENTRY
  11068. ></RBW-ROW
  11069. ></THEAD
  11070. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File</CELLBODY
  11071. ></ENTRY
  11072. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reload</CELLBODY
  11073. ></ENTRY
  11074. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Rereads the module specifications</CELLBODY
  11075. ></ENTRY
  11076. ></RBW-ROW
  11077. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11078. ></ENTRY
  11079. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Save</CELLBODY
  11080. ></ENTRY
  11081. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Saves the changes made in the Module Availability Editor</CELLBODY
  11082. ></ENTRY
  11083. ></RBW-ROW
  11084. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11085. ></ENTRY
  11086. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Exit</CELLBODY
  11087. ></ENTRY
  11088. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Quits the Module Availability Editor</CELLBODY
  11089. ></ENTRY
  11090. ></RBW-ROW
  11091. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit</CELLBODY
  11092. ></ENTRY
  11093. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>New</CELLBODY
  11094. ></ENTRY
  11095. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Adds a new module specification</CELLBODY
  11096. ><CELLBODY>See How to Activate a Module on Corporate level on page 4–4</CELLBODY
  11097. ></ENTRY
  11098. ></RBW-ROW
  11099. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11100. ></ENTRY
  11101. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Add Required Modules</CELLBODY
  11102. ></ENTRY
  11103. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Adds to the selected module the modules that are specified as requiredModules </CELLBODY
  11104. ><CELLBODY>See Required Modules on page 4–10</CELLBODY
  11105. ></ENTRY
  11106. ></RBW-ROW
  11107. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11108. ></ENTRY
  11109. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Change | Select State</CELLBODY
  11110. ></ENTRY
  11111. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Activates the selected module: it changes its state from <CX5FX5FEMPHASIS>off</CX5FX5FEMPHASIS
  11112. > to <CX5FX5FEMPHASIS>on</CX5FX5FEMPHASIS
  11113. > or vice versa</CELLBODY
  11114. ></ENTRY
  11115. ></RBW-ROW
  11116. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11117. ></ENTRY
  11118. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Change | Location</CELLBODY
  11119. ></ENTRY
  11120. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use this option if the location of a module has changed</CELLBODY
  11121. ></ENTRY
  11122. ></RBW-ROW
  11123. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11124. ></ENTRY
  11125. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Info</CELLBODY
  11126. ></ENTRY
  11127. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Brings up an information dialog box listing details, such as module type, module directory location and required modules</CELLBODY
  11128. ></ENTRY
  11129. ></RBW-ROW
  11130. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11131. ></ENTRY
  11132. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delete</CELLBODY
  11133. ></ENTRY
  11134. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deletes the selected module specification(s) </CELLBODY
  11135. ></ENTRY
  11136. ></RBW-ROW
  11137. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>View</CELLBODY
  11138. ></ENTRY
  11139. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ToolBar</CELLBODY
  11140. ></ENTRY
  11141. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Turns the Tool Bar on or off</CELLBODY
  11142. ></ENTRY
  11143. ></RBW-ROW
  11144. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11145. ></ENTRY
  11146. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Context Area</CELLBODY
  11147. ></ENTRY
  11148. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Turns the Context Area on or off</CELLBODY
  11149. ></ENTRY
  11150. ></RBW-ROW
  11151. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11152. ></ENTRY
  11153. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Message Area</CELLBODY
  11154. ></ENTRY
  11155. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Turns the Message Area on or off</CELLBODY
  11156. ></ENTRY
  11157. ></RBW-ROW
  11158. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Options</CELLBODY
  11159. ></ENTRY
  11160. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Font</CELLBODY
  11161. ></ENTRY
  11162. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use this option to change the font or font size used in the Display Area</CELLBODY
  11163. ></ENTRY
  11164. ></RBW-ROW
  11165. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check</CELLBODY
  11166. ></ENTRY
  11167. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Requirements</CELLBODY
  11168. ></ENTRY
  11169. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checks if all the modules required by the modules in the Display Area have been added</CELLBODY
  11170. ><CELLBODY>See Required Modules on page 4–10</CELLBODY
  11171. ></ENTRY
  11172. ></RBW-ROW
  11173. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11174. ></ENTRY
  11175. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Conflicts</CELLBODY
  11176. ></ENTRY
  11177. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checks if there are any modules that conflict with other modules</CELLBODY
  11178. ><CELLBODY>See Conflicting Modules on page 4–12</CELLBODY
  11179. ></ENTRY
  11180. ></RBW-ROW
  11181. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11182. ></ENTRY
  11183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Existence</CELLBODY
  11184. ></ENTRY
  11185. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checks if all the module directories exist</CELLBODY
  11186. ></ENTRY
  11187. ></RBW-ROW
  11188. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  11189. ></ENTRY
  11190. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>All</CELLBODY
  11191. ></ENTRY
  11192. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checks on requirements, conflicts and existence</CELLBODY
  11193. ></ENTRY
  11194. ></RBW-ROW
  11195. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Filter</CELLBODY
  11196. ></ENTRY
  11197. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Filter on Current </CELLBODY
  11198. ><CELLBODY>File Entries</CELLBODY
  11199. ></ENTRY
  11200. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use this option if you only want to see those module specifications in the Display Area that can be edited on the current level.</CELLBODY
  11201. ></ENTRY
  11202. ></RBW-ROW
  11203. ></TBODY
  11204. ></TGROUP
  11205. ></RBW-TABLE
  11206. ><B.BODY></B.BODY
  11207. ></LABEL
  11208. ></SECTION
  11209. ><SECTION><S.SECTION.HEAD>How ObjectTeam Modules Interrelate</S.SECTION.HEAD
  11210. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11211. >Introduction</L.LABEL
  11212. ><B.BODY>Certain ObjectTeam modules require other modules to work properly, others are only supporting other modules, and some modules exclude each other. </B.BODY
  11213. ><B.BODY>Every module directory contains a file called <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  11214. >. This file contains certain fields through which dependencies between modules and module types are specified. These fields are discussed in this section.</B.BODY
  11215. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11216. >For more information</SL.SUBLABEL
  11217. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  11218. ><CX5FX5FTITLE></CX5FX5FTITLE
  11219. > for details on the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  11220. > file.</B.BODY
  11221. ></LABEL
  11222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11223. >In this section</L.LABEL
  11224. ><B.BODY>This section contains the following subsections:</B.BODY
  11225. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  11226. ></ENTRY
  11227. ></RBW-ROW
  11228. ></THEAD
  11229. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32587" TYPE="XREF-TEXTCOPY">Required Modules&rbwtab;4–10</RBW-XREF
  11230. ></SB.SECTION.BLOCK.TABLE
  11231. ></ENTRY
  11232. ></RBW-ROW
  11233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28274" TYPE="XREF-TEXTCOPY">Conflicting Modules&rbwtab;4–12</RBW-XREF
  11234. ></SB.SECTION.BLOCK.TABLE
  11235. ></ENTRY
  11236. ></RBW-ROW
  11237. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14623" TYPE="XREF-TEXTCOPY">Resolving Conflicting Modules&rbwtab;4–14</RBW-XREF
  11238. ></SB.SECTION.BLOCK.TABLE
  11239. ></ENTRY
  11240. ></RBW-ROW
  11241. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22656" TYPE="XREF-TEXTCOPY">Supporting Modules&rbwtab;4–15</RBW-XREF
  11242. ></SB.SECTION.BLOCK.TABLE
  11243. ></ENTRY
  11244. ></RBW-ROW
  11245. ></TBODY
  11246. ></TGROUP
  11247. ></RBW-TABLE
  11248. ><B.BODY></B.BODY
  11249. ></LABEL
  11250. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32587"></RBW-ANCHOR
  11251. >Required Modules</SS.SUBSEC.HEAD
  11252. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11253. >Introduction</L.LABEL
  11254. ><B.BODY>If a particular module require other modules in order to operate properly, the following fields can be used in the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  11255. > file to specify required modules:</B.BODY
  11256. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11257. ></RBW-AUTOGEN
  11258. ></RBW-MARKER
  11259. ><RBW-PARABODY>requiredModules</RBW-PARABODY
  11260. ></LB.LIST.BULLET
  11261. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11262. ></RBW-AUTOGEN
  11263. ></RBW-MARKER
  11264. ><RBW-PARABODY>requiredModuleTypes</RBW-PARABODY
  11265. ></LB.LIST.BULLET
  11266. ></LABEL
  11267. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11268. >Viewing required module (types)</L.LABEL
  11269. ><B.BODY>Users of the Module Availability Editor can see which modules and module types are required by a module by selecting Edit | Info. for that module. The Information Box that appears lists, among other things, the required modules and module types, if applicable.</B.BODY
  11270. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00034.unk" origfile="../shared_files/pics/info.gif" origtype="X" origdoc="../../sources/ignt/igntmods.fm5.mif"></RBW-GRAPHIC
  11271. ></FA.FIGURE.ANCHOR
  11272. ></LABEL
  11273. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11274. >requiredModules</L.LABEL
  11275. ><B.BODY>In this field, a list of required modules, separated by spaces, can be specified. If a module that requires other modules is selected in the Module Editor, the required module(s) will be automatically added to the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11276. > file too.</B.BODY
  11277. ></LABEL
  11278. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11279. >requiredModuleTypes</L.LABEL
  11280. ><B.BODY>If a module requires another module, but there is more than one module of that type available, a list of required module <CX5FX5FEMPHASIS>types</CX5FX5FEMPHASIS
  11281. > is specified. If a module that requires other module types is selected in the Module Editor, a dialog box appears, listing all the available modules of that type. After a user of the Module Editor selects the module of his choice, this module is added to the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11282. > file.</B.BODY
  11283. ><B.BODY>In the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  11284. > file of the module C++ Code Generation, for example, the following module types are specified as requiredModuleTypes:</B.BODY
  11285. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11286. ></RBW-AUTOGEN
  11287. ></RBW-MARKER
  11288. ><RBW-PARABODY>DevelEnv (C++ compilers)</RBW-PARABODY
  11289. ></LB.LIST.BULLET
  11290. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11291. ></RBW-AUTOGEN
  11292. ></RBW-MARKER
  11293. ><RBW-PARABODY>CppClassLib (Class Libraries)</RBW-PARABODY
  11294. ></LB.LIST.BULLET
  11295. ></LABEL
  11296. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11297. >Checking for requirements</L.LABEL
  11298. ><B.BODY>You can check if all the requirements have been met for all the modules by selecting Check | Requirements in the Module Availability Editor. If there are any requirements missing, an Information dialog box will list them.</B.BODY
  11299. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  11300. ></RBW-AUTOGEN
  11301. >Check | All runs a more extensive check: on required modules, conflicting modules, and the existence of module directories.</T.TIP
  11302. ></LABEL
  11303. ></SUBSECTION
  11304. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28274"></RBW-ANCHOR
  11305. >Conflicting Modules</SS.SUBSEC.HEAD
  11306. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11307. >Introduction</L.LABEL
  11308. ><B.BODY>Certain modules exclude each other: if the module C++ Code Generation is active for a particular system, for example, the module Java Code Generation cannot be active at the same time.</B.BODY
  11309. ><B.BODY>The following fields in the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  11310. > file can be used to specify conflicting modules:</B.BODY
  11311. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11312. ></RBW-AUTOGEN
  11313. ></RBW-MARKER
  11314. ><RBW-PARABODY>conflictingModules</RBW-PARABODY
  11315. ></LB.LIST.BULLET
  11316. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11317. ></RBW-AUTOGEN
  11318. ></RBW-MARKER
  11319. ><RBW-PARABODY>conflictingModuleTypes</RBW-PARABODY
  11320. ></LB.LIST.BULLET
  11321. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  11322. ></RBW-AUTOGEN
  11323. >A user of the Module Editor is still able to add a module that conflicts with another module, but will get an error message when he attempts to save the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11324. > file.</N.NOTE
  11325. ></LABEL
  11326. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11327. >Saving a conflicting modules.modules file</L.LABEL
  11328. ><B.BODY>When you try to save a <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11329. > file that contains conflicts, the following dialog box appears.</B.BODY
  11330. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00035.unk" origfile="../shared_files/pics/savemod.gif" origtype="X" origdoc="../../sources/ignt/igntmods.fm5.mif"></RBW-GRAPHIC
  11331. ></FA.FIGURE.ANCHOR
  11332. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11333. >Yes</SL.SUBLABEL
  11334. ><B.BODY>The file is not saved. You should correct the conflict(s) by deactivating one of the conflicting modules (see Resolving Conflicting Modules on page 4–14 for details). </B.BODY
  11335. ><B.BODY>Use Check | Conflicts to find out which modules are conflicting.</B.BODY
  11336. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11337. >No</SL.SUBLABEL
  11338. ><B.BODY>All the modules in the <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11339. > file that cause a conflict are deactivated, after which the file is saved.</B.BODY
  11340. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11341. >Cancel</SL.SUBLABEL
  11342. ><B.BODY>Cancels the operation.</B.BODY
  11343. ></LABEL
  11344. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11345. >Viewing conflicting module (types)</L.LABEL
  11346. ><B.BODY>Users of the Module Availability Editor can see which modules or module types are defined as conflicting with the module by selecting Edit | Info for that module. The Information Box that appears lists, among other things, the conflicting modules and module types, if applicable.</B.BODY
  11347. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00036.unk" origfile="../shared_files/pics/info.gif" origtype="X" origdoc="../../sources/ignt/igntmods.fm5.mif"></RBW-GRAPHIC
  11348. ></FA.FIGURE.ANCHOR
  11349. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11350. >conflictingModules</SL.SUBLABEL
  11351. ><B.BODY>In this field, a list of modules that are supposed to conflict with the current module can be specified. The list is separated by commas.</B.BODY
  11352. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11353. >conflictingModuleTypes</SL.SUBLABEL
  11354. ><B.BODY>In this field, a list of module <CX5FX5FEMPHASIS>types</CX5FX5FEMPHASIS
  11355. > that are supposed to conflict with the current module are listed. The list is separated by commas.</B.BODY
  11356. ></LABEL
  11357. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11358. >Checking for conflicts</L.LABEL
  11359. ><B.BODY>You can check for conflicts in the Module Availability Editor by selecting Check | Conflicts. If there are any conflicts, an Information dialog box will list them.</B.BODY
  11360. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  11361. ></RBW-AUTOGEN
  11362. >Check | All runs a more extensive check: on required modules, conflicting modules, and the existence of module directories.</T.TIP
  11363. ></LABEL
  11364. ></SUBSECTION
  11365. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14623"></RBW-ANCHOR
  11366. >Resolving Conflicting Modules</SS.SUBSEC.HEAD
  11367. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11368. >Module specifications and browser levels</L.LABEL
  11369. ><B.BODY>The Module Availability Editor displays the current set of module specifications: the result of incrementally read <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11370. > files (see Checking if a module is active on page 4–5). You can only edit or delete the modules that have been added on the current level</B.BODY
  11371. ></LABEL
  11372. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11373. >Example of a module conflict</L.LABEL
  11374. ><B.BODY>You could encounter a situation in which you would like to add and activate a module that conflicts with a module that has been added and activated on a higher level. For example, the C++ Code Generation module is activated on Corporate level, but for one particular Project you would like to generate Java code.</B.BODY
  11375. ></LABEL
  11376. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11377. >How to resolve a module conflict</L.LABEL
  11378. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11379. ></RBW-AUTOGEN
  11380. ></RBW-MARKER
  11381. ><RBW-PARABODY>To resolve a module conflict:</RBW-PARABODY
  11382. ></P.PROCEDURE
  11383. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11384. ></RBW-AUTOGEN
  11385. ></RBW-MARKER
  11386. ><RBW-PARABODY>Open the customization file <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11387. > on the Browser level of your choice.</RBW-PARABODY
  11388. ></LN.LIST.NUM
  11389. ><LT.LIST.TEXT>The specifications you are going to add to this file will be valid on the current Browser level and below. (Project level and below, for example)</LT.LIST.TEXT
  11390. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11391. ></RBW-AUTOGEN
  11392. ></RBW-MARKER
  11393. ><RBW-PARABODY>In the Module Availability Editor, add the same module as the one on a higher level that is causing the conflict (C++ Code Generation, for example)</RBW-PARABODY
  11394. ></LN.LIST.NUM
  11395. ><LT.LIST.TEXT>Use Edit | New to bring up the Select Module dialog box. Select the module of your choice from this box.</LT.LIST.TEXT
  11396. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  11397. ></RBW-AUTOGEN
  11398. ></RBW-MARKER
  11399. ><RBW-PARABODY>Deactivate the newly added module using Edit | Change | Select State </RBW-PARABODY
  11400. ></LN.LIST.NUM
  11401. ><LR.LIST.RESULT>The module’s state is now <CX5FX5FEMPHASIS>off</CX5FX5FEMPHASIS
  11402. >.</LR.LIST.RESULT
  11403. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  11404. ></RBW-AUTOGEN
  11405. ></RBW-MARKER
  11406. ><RBW-PARABODY>Add the module that would conflict if the conflicting module on a higher level were not deactivated (Java Code generation, for example).</RBW-PARABODY
  11407. ></LN.LIST.NUM
  11408. ><LT.LIST.TEXT>Make sure its state is <CX5FX5FEMPHASIS>on</CX5FX5FEMPHASIS
  11409. >.</LT.LIST.TEXT
  11410. ><B.BODY>The new module is now only active for the configuration, phase, project or system for which the customization file <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  11411. > was added.</B.BODY
  11412. ></LABEL
  11413. ></SUBSECTION
  11414. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22656"></RBW-ANCHOR
  11415. >Supporting Modules</SS.SUBSEC.HEAD
  11416. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11417. >Introduction</L.LABEL
  11418. ><B.BODY>Supporting modules are modules that are required by other modules, but are not useful independently. As users usually do not need to know about supporting modules, they are, by default, not listed in the Select Module dialog box. This box appears if a user of the Module Editor selects Edit | New.</B.BODY
  11419. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  11420. ></RBW-AUTOGEN
  11421. >With the check button Show Supporting Modules in the Select Module dialog box, supporting modules can be included in the list.</T.TIP
  11422. ></LABEL
  11423. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11424. >isSupportingModule</L.LABEL
  11425. ><B.BODY>The field isSupportingModule in the <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  11426. > file is used to identify a module as supporting. The only possible values are <CX5FX5FEMPHASIS>yes </CX5FX5FEMPHASIS
  11427. >or<CX5FX5FEMPHASIS> no</CX5FX5FEMPHASIS
  11428. >. An empty value defaults to <CX5FX5FEMPHASIS>no</CX5FX5FEMPHASIS
  11429. >.</B.BODY
  11430. ><B.BODY></B.BODY
  11431. ></LABEL
  11432. ></SUBSECTION
  11433. ></SECTION
  11434. ><SECTION><S.SECTION.HEAD></S.SECTION.HEAD
  11435. ><!--
  11436.  
  11437.  
  11438.  
  11439.  
  11440.  
  11441. CONVERTING SOURCE FILE ../../sources/ignt/igntata.fm5.mif
  11442.  
  11443.  
  11444. --><B.BODY></B.BODY
  11445. ><B.BODY></B.BODY
  11446. ><B.BODY></B.BODY
  11447. ><B.BODY></B.BODY
  11448. ><B.BODY></B.BODY
  11449. ></SECTION
  11450. ></CHAPTER
  11451. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  11452. ></RBW-AUTOGEN
  11453. >Installing <RBW-ANCHOR ID="16254"></RBW-ANCHOR
  11454. >DocExpress and DocIt<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  11455. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  11456. ></RBW-SYSOBJ
  11457. ></A.APPENDIX.HEAD
  11458. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11459. >Introduction</L.LABEL
  11460. ><B.BODY>This chapter describes how to install DocExpress and DocIt for ObjectTeam.</B.BODY
  11461. ></LABEL
  11462. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11463. >In this chapter</L.LABEL
  11464. ><B.BODY>This chapter contains the following sections:</B.BODY
  11465. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  11466. ></ENTRY
  11467. ></RBW-ROW
  11468. ></THEAD
  11469. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11471" TYPE="XREF-TEXTCOPY">Installing DocExpress&rbwtab;A–2</RBW-XREF
  11470. ></SB.SECTION.BLOCK.TABLE
  11471. ></ENTRY
  11472. ></RBW-ROW
  11473. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31344" TYPE="XREF-TEXTCOPY">Installing DocIt&rbwtab;A–5</RBW-XREF
  11474. ></SB.SECTION.BLOCK.TABLE
  11475. ></ENTRY
  11476. ></RBW-ROW
  11477. ></TBODY
  11478. ></TGROUP
  11479. ></RBW-TABLE
  11480. ></LABEL
  11481. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="11471"></RBW-ANCHOR
  11482. >Installing DocExpress</S.SECTION.HEAD
  11483. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11484. >Introduction</L.LABEL
  11485. ><B.BODY>This section describes how to install DocExpress under Windows.</B.BODY
  11486. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  11487. ></RBW-AUTOGEN
  11488. >In order to use DocExpress, ObjectTeam must also be installed.</N.NOTE
  11489. ></LABEL
  11490. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11491. >Licensing</L.LABEL
  11492. ><B.BODY>DocExpress is licensed by the same license server that licenses ObjectTeam. Your ObjectTeam license file should contain feature lines for DocExpress. For more details on FLEXlm licensing, and how to add features to your license file, see <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  11493. >.</B.BODY
  11494. ></LABEL
  11495. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11496. >How to install DocExpress</L.LABEL
  11497. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11498. ></RBW-AUTOGEN
  11499. ></RBW-MARKER
  11500. ><RBW-PARABODY>To install DocExpress:</RBW-PARABODY
  11501. ></P.PROCEDURE
  11502. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11503. ></RBW-AUTOGEN
  11504. ></RBW-MARKER
  11505. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  11506. ></LN.LIST.NUM
  11507. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11508. ></RBW-AUTOGEN
  11509. ></RBW-MARKER
  11510. ><RBW-PARABODY>Shut down any other running applications, including DOS windows.</RBW-PARABODY
  11511. ></LN.LIST.NUM
  11512. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  11513. ></RBW-AUTOGEN
  11514. ></RBW-MARKER
  11515. ><RBW-PARABODY>Insert the ObjectTeam CD into the CD drive. (This can be a local or networked CD drive.)</RBW-PARABODY
  11516. ></LN.LIST.NUM
  11517. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  11518. ></RBW-AUTOGEN
  11519. ></RBW-MARKER
  11520. ><RBW-PARABODY>In the Windows Explorer, double&truehy;click on <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  11521. >:\Setup.exe.</RBW-PARABODY
  11522. ></LN.LIST.NUM
  11523. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  11524. ></RBW-AUTOGEN
  11525. ></RBW-MARKER
  11526. ><RBW-PARABODY>Proceed through the Welcome screen to the Select Products dialog box.</RBW-PARABODY
  11527. ></LN.LIST.NUM
  11528. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  11529. ></RBW-AUTOGEN
  11530. ></RBW-MARKER
  11531. ><RBW-PARABODY>The following choices are presented:</RBW-PARABODY
  11532. ></LN.LIST.NUM
  11533. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  11534. ></RBW-MARKER
  11535. ><RBW-PARABODY>ObjectTeam</RBW-PARABODY
  11536. ></LB2.LIST.BULLET.2
  11537. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  11538. ></RBW-MARKER
  11539. ><RBW-PARABODY>DocExpress</RBW-PARABODY
  11540. ></LB2.LIST.BULLET.2
  11541. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  11542. ></RBW-MARKER
  11543. ><RBW-PARABODY>DocIt</RBW-PARABODY
  11544. ></LB2.LIST.BULLET.2
  11545. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  11546. ></RBW-AUTOGEN
  11547. ></RBW-MARKER
  11548. ><RBW-PARABODY>Select DocExpress.</RBW-PARABODY
  11549. ></LN.LIST.NUM
  11550. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  11551. ></RBW-AUTOGEN
  11552. ></RBW-MARKER
  11553. ><RBW-PARABODY>To view DocExpress’s Read Me First Notes, click the Product Notes button. </RBW-PARABODY
  11554. ></LN.LIST.NUM
  11555. ><LT.LIST.TEXT>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You <CX5FX5FFILE.NAME>must</CX5FX5FFILE.NAME
  11556. > read these notes before starting installation!</LT.LIST.TEXT
  11557. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  11558. ></RBW-AUTOGEN
  11559. ></RBW-MARKER
  11560. ><RBW-PARABODY>Click Install to proceed with the installation.</RBW-PARABODY
  11561. ></LN.LIST.NUM
  11562. ><LR.LIST.RESULT>The Product Requirements dialog box shows you the complete list of hardware and software requirements for your selected components. </LR.LIST.RESULT
  11563. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  11564. ></RBW-AUTOGEN
  11565. ></RBW-MARKER
  11566. ><RBW-PARABODY>If your workstation meets all of the listed hardware and software requirements, click Next to proceed with installation.</RBW-PARABODY
  11567. ></LN.LIST.NUM
  11568. ><LR.LIST.RESULT>The DocExpress install program starts.</LR.LIST.RESULT
  11569. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  11570. ></RBW-AUTOGEN
  11571. ></RBW-MARKER
  11572. ><RBW-PARABODY>You are asked for the installation directory. The default is C:\Cayenne\OTDocTools.</RBW-PARABODY
  11573. ></LN.LIST.NUM
  11574. ><LR.LIST.RESULT>The DocExpress product files are installed.</LR.LIST.RESULT
  11575. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  11576. ></RBW-AUTOGEN
  11577. ></RBW-MARKER
  11578. ><RBW-PARABODY>The install program asks you if you want it to set some environment variables. Click Next to let the setup set the variables.</RBW-PARABODY
  11579. ></LN.LIST.NUM
  11580. ><LR.LIST.RESULT>You are returned to the Cayenne Install Wizard.</LR.LIST.RESULT
  11581. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  11582. ></RBW-AUTOGEN
  11583. ></RBW-MARKER
  11584. ><RBW-PARABODY>A dialog asks if you want to reboot your machine now or later. Select Now and click OK.</RBW-PARABODY
  11585. ></LN.LIST.NUM
  11586. ></LABEL
  11587. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11588. >Setting your environment</L.LABEL
  11589. ><B.BODY>Before using DocExpress, you must set the environment variable HOME. </B.BODY
  11590. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11591. ></RBW-AUTOGEN
  11592. ></RBW-MARKER
  11593. ><RBW-PARABODY>Under Windows 95, set this in your <CX5FX5FFILE.NAME>autoexec.bat</CX5FX5FFILE.NAME
  11594. > file as follows:</RBW-PARABODY
  11595. ></P.PROCEDURE
  11596. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11597. ></RBW-AUTOGEN
  11598. ></RBW-MARKER
  11599. ><RBW-PARABODY>Open the <CX5FX5FFILE.NAME>autoexec.bat</CX5FX5FFILE.NAME
  11600. > file in an editor and enter the following line:</RBW-PARABODY
  11601. ></LN.LIST.NUM
  11602. ><EM.EXAMPLE.MONO>set HOME %HOMEDRIVE% %HOMEPATH%</EM.EXAMPLE.MONO
  11603. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11604. ></RBW-AUTOGEN
  11605. ></RBW-MARKER
  11606. ><RBW-PARABODY>Under Windows NT, set this as a system environment variable:</RBW-PARABODY
  11607. ></P.PROCEDURE
  11608. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11609. ></RBW-AUTOGEN
  11610. ></RBW-MARKER
  11611. ><RBW-PARABODY>While still logged in as Administrator (or as a user who belongs to the Administrator group), select Start|Settings|Control Panel.</RBW-PARABODY
  11612. ></LN.LIST.NUM
  11613. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11614. ></RBW-AUTOGEN
  11615. ></RBW-MARKER
  11616. ><RBW-PARABODY>In the Control Panel window, double&truehy;click on the System icon.</RBW-PARABODY
  11617. ></LN.LIST.NUM
  11618. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  11619. ></RBW-AUTOGEN
  11620. ></RBW-MARKER
  11621. ><RBW-PARABODY>In the System Properties window, select the Environment tab.</RBW-PARABODY
  11622. ></LN.LIST.NUM
  11623. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  11624. ></RBW-AUTOGEN
  11625. ></RBW-MARKER
  11626. ><RBW-PARABODY>Set HOME as a System Environment Variable with the following value:</RBW-PARABODY
  11627. ></LN.LIST.NUM
  11628. ><EM.EXAMPLE.MONO>%HOMEDRIVE% %HOMEPATH%</EM.EXAMPLE.MONO
  11629. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  11630. ></RBW-AUTOGEN
  11631. ></RBW-MARKER
  11632. ><RBW-PARABODY>Select OK to close the System window.</RBW-PARABODY
  11633. ></LN.LIST.NUM
  11634. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  11635. ></RBW-AUTOGEN
  11636. ></RBW-MARKER
  11637. ><RBW-PARABODY>Close the Control Panel.</RBW-PARABODY
  11638. ></LN.LIST.NUM
  11639. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  11640. ></RBW-AUTOGEN
  11641. ></RBW-MARKER
  11642. ><RBW-PARABODY>Reboot the machine.</RBW-PARABODY
  11643. ></LN.LIST.NUM
  11644. ></LABEL
  11645. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11646. >Reading the DocExpress online manuals</L.LABEL
  11647. ><B.BODY>You can access the ObjectTeam product documentation directly from the CD, as described in the CD insert. Alternatively you can install the product documentation on your hard drive.</B.BODY
  11648. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11649. ></RBW-AUTOGEN
  11650. ></RBW-MARKER
  11651. ><RBW-PARABODY>To access the online DocExpress documentation:</RBW-PARABODY
  11652. ></P.PROCEDURE
  11653. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11654. ></RBW-AUTOGEN
  11655. ></RBW-MARKER
  11656. ><RBW-PARABODY>Select Start | Programs | Cayenne ObjectTeam | Product Documentation.</RBW-PARABODY
  11657. ></LN.LIST.NUM
  11658. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11659. ></RBW-AUTOGEN
  11660. ></RBW-MARKER
  11661. ><RBW-PARABODY>In the DynaText Collection window, select the ObjectTeam collection and double&truehy;click on the DocExpress Set.</RBW-PARABODY
  11662. ></LN.LIST.NUM
  11663. ><LR.LIST.RESULT>The DocExpress books are opened in the reader window.</LR.LIST.RESULT
  11664. ></LABEL
  11665. ></SECTION
  11666. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="31344"></RBW-ANCHOR
  11667. >Installing DocIt</S.SECTION.HEAD
  11668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11669. >Introduction</L.LABEL
  11670. ><B.BODY>This section describes how to install DocIt under Windows.</B.BODY
  11671. ></LABEL
  11672. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11673. >Requirements</L.LABEL
  11674. ><B.BODY>For details of the hardware and software requirements, see the Read Me First Notes on the CD.</B.BODY
  11675. ><B.BODY>You must have installed ObjectTeam before you install DocIt.</B.BODY
  11676. ></LABEL
  11677. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11678. >Installation workflow</L.LABEL
  11679. ><B.BODY>To install DocIt, you must:</B.BODY
  11680. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11681. ></RBW-AUTOGEN
  11682. ></RBW-MARKER
  11683. ><RBW-PARABODY>Add a DocIt feature line to the license file on the license server (if it does not already include this).</RBW-PARABODY
  11684. ></LN.LIST.NUM
  11685. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11686. ></RBW-AUTOGEN
  11687. ></RBW-MARKER
  11688. ><RBW-PARABODY>Install the DocIt software.</RBW-PARABODY
  11689. ></LN.LIST.NUM
  11690. ></LABEL
  11691. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11692. >Licensing</L.LABEL
  11693. ><B.BODY>DocIt is licensed by the same license server that licenses ObjectTeam. Your ObjectTeam license file should contain a feature line for DocIt. For more details on FLEXlm licensing, and how to add features to your license file, see <RBW-XREF REFID="19159" TYPE="XREF-TEXTCOPY">Appendix B, Configuring a License Server</RBW-XREF
  11694. >.</B.BODY
  11695. ></LABEL
  11696. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11697. >How to install DocIt</L.LABEL
  11698. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11699. ></RBW-AUTOGEN
  11700. ></RBW-MARKER
  11701. ><RBW-PARABODY>To install DocIt:</RBW-PARABODY
  11702. ></P.PROCEDURE
  11703. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11704. ></RBW-AUTOGEN
  11705. ></RBW-MARKER
  11706. ><RBW-PARABODY>Log on to the computer (with administrator privileges if you are installing under Windows NT). </RBW-PARABODY
  11707. ></LN.LIST.NUM
  11708. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11709. ></RBW-AUTOGEN
  11710. ></RBW-MARKER
  11711. ><RBW-PARABODY>Shut down any other running applications, including DOS windows.</RBW-PARABODY
  11712. ></LN.LIST.NUM
  11713. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  11714. ></RBW-AUTOGEN
  11715. ></RBW-MARKER
  11716. ><RBW-PARABODY>Insert the ObjectTeam CD into the CD drive. (This can be a local or networked CD drive.)</RBW-PARABODY
  11717. ></LN.LIST.NUM
  11718. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  11719. ></RBW-AUTOGEN
  11720. ></RBW-MARKER
  11721. ><RBW-PARABODY>In the Windows Explorer, double&truehy;click on <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  11722. >:\Setup.exe.</RBW-PARABODY
  11723. ></LN.LIST.NUM
  11724. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  11725. ></RBW-AUTOGEN
  11726. ></RBW-MARKER
  11727. ><RBW-PARABODY>Proceed through the Welcome screen to the Select Products dialog box.</RBW-PARABODY
  11728. ></LN.LIST.NUM
  11729. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  11730. ></RBW-AUTOGEN
  11731. ></RBW-MARKER
  11732. ><RBW-PARABODY>The following choices are presented:</RBW-PARABODY
  11733. ></LN.LIST.NUM
  11734. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  11735. ></RBW-MARKER
  11736. ><RBW-PARABODY>ObjectTeam</RBW-PARABODY
  11737. ></LB2.LIST.BULLET.2
  11738. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  11739. ></RBW-MARKER
  11740. ><RBW-PARABODY>DocExpress</RBW-PARABODY
  11741. ></LB2.LIST.BULLET.2
  11742. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  11743. ></RBW-MARKER
  11744. ><RBW-PARABODY>DocIt</RBW-PARABODY
  11745. ></LB2.LIST.BULLET.2
  11746. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  11747. ></RBW-AUTOGEN
  11748. ></RBW-MARKER
  11749. ><RBW-PARABODY>Select DocIt.</RBW-PARABODY
  11750. ></LN.LIST.NUM
  11751. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  11752. ></RBW-AUTOGEN
  11753. ></RBW-MARKER
  11754. ><RBW-PARABODY>To view ObjectTeam’s Read Me First Notes, click the Product Notes button. </RBW-PARABODY
  11755. ></LN.LIST.NUM
  11756. ><LT.LIST.TEXT>The Read Me First Notes contain last&truehy;minute product information that may affect the installation. You <CX5FX5FFILE.NAME>must</CX5FX5FFILE.NAME
  11757. > read these notes before starting installation!</LT.LIST.TEXT
  11758. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  11759. ></RBW-AUTOGEN
  11760. ></RBW-MARKER
  11761. ><RBW-PARABODY>Click Install to proceed with the installation.</RBW-PARABODY
  11762. ></LN.LIST.NUM
  11763. ><LR.LIST.RESULT>The Product Requirements dialog box shows you the complete list of hardware and software requirements for your selected components. </LR.LIST.RESULT
  11764. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  11765. ></RBW-AUTOGEN
  11766. ></RBW-MARKER
  11767. ><RBW-PARABODY>If your workstation meets all of the listed hardware and software requirements, click Next to proceed with installation.</RBW-PARABODY
  11768. ></LN.LIST.NUM
  11769. ><LR.LIST.RESULT>The DocIt install program starts up.</LR.LIST.RESULT
  11770. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  11771. ></RBW-AUTOGEN
  11772. ></RBW-MARKER
  11773. ><RBW-PARABODY>You are asked for the installation directory. The default is C:\Cayenne\OTDocTools.</RBW-PARABODY
  11774. ></LN.LIST.NUM
  11775. ><LR.LIST.RESULT>The DocIt product files are installed.</LR.LIST.RESULT
  11776. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>12&rbwtab;</CX5FX5FZLIST.NUMBER
  11777. ></RBW-AUTOGEN
  11778. ></RBW-MARKER
  11779. ><RBW-PARABODY>The install program asks you if you want it to set some environment variables. Click Next to let the setup set the variables.</RBW-PARABODY
  11780. ></LN.LIST.NUM
  11781. ><LR.LIST.RESULT>You are returned to the Cayenne Install Wizard.</LR.LIST.RESULT
  11782. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>13&rbwtab;</CX5FX5FZLIST.NUMBER
  11783. ></RBW-AUTOGEN
  11784. ></RBW-MARKER
  11785. ><RBW-PARABODY>A dialog asks if you want to reboot your machine now or later. Select Now and click OK.</RBW-PARABODY
  11786. ></LN.LIST.NUM
  11787. ></LABEL
  11788. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11789. >Setting your environment</L.LABEL
  11790. ><B.BODY>Before using DocIt, you must set the environment variable HOME. </B.BODY
  11791. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11792. ></RBW-AUTOGEN
  11793. ></RBW-MARKER
  11794. ><RBW-PARABODY>Under Windows 95, set this in your <CX5FX5FFILE.NAME>autoexec.bat</CX5FX5FFILE.NAME
  11795. > file as follows:</RBW-PARABODY
  11796. ></P.PROCEDURE
  11797. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11798. ></RBW-AUTOGEN
  11799. ></RBW-MARKER
  11800. ><RBW-PARABODY>Open the <CX5FX5FFILE.NAME>autoexec.bat</CX5FX5FFILE.NAME
  11801. > file in an editor and enter the following line:</RBW-PARABODY
  11802. ></LN.LIST.NUM
  11803. ><EM.EXAMPLE.MONO>set HOME %HOMEDRIVE% %HOMEPATH%</EM.EXAMPLE.MONO
  11804. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11805. ></RBW-AUTOGEN
  11806. ></RBW-MARKER
  11807. ><RBW-PARABODY>Under Windows NT, set this as a system environment variable:</RBW-PARABODY
  11808. ></P.PROCEDURE
  11809. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11810. ></RBW-AUTOGEN
  11811. ></RBW-MARKER
  11812. ><RBW-PARABODY>While still logged in as Administrator (or as a user who belongs to the Administrator group), select Start|Settings|Control Panel.</RBW-PARABODY
  11813. ></LN.LIST.NUM
  11814. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11815. ></RBW-AUTOGEN
  11816. ></RBW-MARKER
  11817. ><RBW-PARABODY>In the Control Panel window, double&truehy;click on the System icon.</RBW-PARABODY
  11818. ></LN.LIST.NUM
  11819. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  11820. ></RBW-AUTOGEN
  11821. ></RBW-MARKER
  11822. ><RBW-PARABODY>In the System Properties window, select the Environment tab.</RBW-PARABODY
  11823. ></LN.LIST.NUM
  11824. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  11825. ></RBW-AUTOGEN
  11826. ></RBW-MARKER
  11827. ><RBW-PARABODY>Set HOME as a System Environment Variable with the following value:</RBW-PARABODY
  11828. ></LN.LIST.NUM
  11829. ><EM.EXAMPLE.MONO>%HOMEDRIVE% %HOMEPATH%</EM.EXAMPLE.MONO
  11830. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  11831. ></RBW-AUTOGEN
  11832. ></RBW-MARKER
  11833. ><RBW-PARABODY>Select OK to close the System window.</RBW-PARABODY
  11834. ></LN.LIST.NUM
  11835. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  11836. ></RBW-AUTOGEN
  11837. ></RBW-MARKER
  11838. ><RBW-PARABODY>Close the Control Panel.</RBW-PARABODY
  11839. ></LN.LIST.NUM
  11840. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  11841. ></RBW-AUTOGEN
  11842. ></RBW-MARKER
  11843. ><RBW-PARABODY>Reboot the machine.</RBW-PARABODY
  11844. ></LN.LIST.NUM
  11845. ></LABEL
  11846. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11847. >Reading the DocIt online manuals</L.LABEL
  11848. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  11849. ></RBW-AUTOGEN
  11850. ></RBW-MARKER
  11851. ><RBW-PARABODY>To access the online DocIt documentation:</RBW-PARABODY
  11852. ></P.PROCEDURE
  11853. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  11854. ></RBW-AUTOGEN
  11855. ></RBW-MARKER
  11856. ><RBW-PARABODY>Select Start | Programs | Cayenne ObjectTeam | Product Documentation.</RBW-PARABODY
  11857. ></LN.LIST.NUM
  11858. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  11859. ></RBW-AUTOGEN
  11860. ></RBW-MARKER
  11861. ><RBW-PARABODY>In the DynaText Collection window, select the ObjectTeam collection and double&truehy;click on the DocIt Set.</RBW-PARABODY
  11862. ></LN.LIST.NUM
  11863. ><LR.LIST.RESULT>The DocIt books are opened in the reader window.</LR.LIST.RESULT
  11864. ><RBWAUTO-0001></RBWAUTO-0001
  11865. ><!--
  11866.  
  11867.  
  11868.  
  11869.  
  11870.  
  11871. CONVERTING SOURCE FILE ../../sources/ignt/igntflex.fm5.mif
  11872.  
  11873.  
  11874. --><B.BODY></B.BODY
  11875. ><B.BODY></B.BODY
  11876. ><B.BODY></B.BODY
  11877. ><B.BODY></B.BODY
  11878. ><B.BODY></B.BODY
  11879. ></LABEL
  11880. ></SECTION
  11881. ></APPENDIX
  11882. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix B&rbwtab;</CX5FX5FZCHAPTER.NUM
  11883. ></RBW-AUTOGEN
  11884. ><RBWAUTO-0003></RBWAUTO-0003
  11885. >Configuring a <RBW-ANCHOR ID="19159"></RBW-ANCHOR
  11886. >License Server<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  11887. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  11888. ></RBW-SYSOBJ
  11889. ></A.APPENDIX.HEAD
  11890. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11891. >Introduction</L.LABEL
  11892. ><B.BODY>ObjectTeam uses FLEXlm, a license management product from Globetrotter Software, Inc. to control licensing.</B.BODY
  11893. ><B.BODY>This chapter describes:</B.BODY
  11894. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11895. ></RBW-AUTOGEN
  11896. ></RBW-MARKER
  11897. ><RBW-PARABODY>How licensing works in ObjectTeam</RBW-PARABODY
  11898. ></LB.LIST.BULLET
  11899. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11900. ></RBW-AUTOGEN
  11901. ></RBW-MARKER
  11902. ><RBW-PARABODY>How to set up a license server under Microsoft Windows</RBW-PARABODY
  11903. ></LB.LIST.BULLET
  11904. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11905. ></RBW-AUTOGEN
  11906. ></RBW-MARKER
  11907. ><RBW-PARABODY>How to obtain a permanent license</RBW-PARABODY
  11908. ></LB.LIST.BULLET
  11909. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11910. >Master server</SL.SUBLABEL
  11911. ><B.BODY>You must follow the instructions in this chapter before you install or upgrade an ObjectTeam Master server. If you are installing a Slave server or Client, you must already have installed a Master server, so you can skip this chapter.</B.BODY
  11912. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11913. >Demo installation</SL.SUBLABEL
  11914. ><B.BODY>If you only want to install a demonstration copy of ObjectTeam for trial purposes, you can skip this chapter. A demo installation does not need a license server.</B.BODY
  11915. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11916. >UNIX license server</SL.SUBLABEL
  11917. ><B.BODY>If you want to use a UNIX workstation as your license server, refer to the <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  11918. ><CX5FX5FTITLE></CX5FX5FTITLE
  11919. ><CX5FX5FTERM> for UNIX&truehy;based Systems</CX5FX5FTERM
  11920. >.</B.BODY
  11921. ></LABEL
  11922. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11923. >Related documentation</L.LABEL
  11924. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11925. >Required reading</SL.SUBLABEL
  11926. ><B.BODY>You should read the <CX5FX5FTITLE>FLEXlm End User Manual</CX5FX5FTITLE
  11927. > before installing the FLEXlm license software. The FLEXlm manual provides valuable information on network license management and site customization; for example, it provides details about the license file and various license administration tools. </B.BODY
  11928. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11929. >Recommended reading:</SL.SUBLABEL
  11930. ><B.BODY>For more information on network license management and UNIX system administration, read the <CX5FX5FTITLE>FLEXlm Programmer’s Guide</CX5FX5FTITLE
  11931. > (available from Globetrotter Software, Inc.) and <CX5FX5FTITLE>Essential System Administration</CX5FX5FTITLE
  11932. > by Aeleen Frisch (published by O’Reilly & Associates, ISBN 0&truehy;937175&truehy;80&truehy;3).</B.BODY
  11933. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11934. ><CX5FX5FBULLET.EMPHASIS>Online information</CX5FX5FBULLET.EMPHASIS
  11935. ></SL.SUBLABEL
  11936. ><B.BODY>To obtain the most current information about FLEXlm, you can access Globetrotter Software’s World Wide Web page:</B.BODY
  11937. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>http://www.globetrotter.com</CX5FX5FFILE.NAME
  11938. > </LT.LIST.TEXT
  11939. ><B.BODY>This home page provides access to</B.BODY
  11940. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11941. ></RBW-AUTOGEN
  11942. ></RBW-MARKER
  11943. ><RBW-PARABODY>An online version of the <CX5FX5FTITLE>FLEXlm End User Manual</CX5FX5FTITLE
  11944. ></RBW-PARABODY
  11945. ></LB.LIST.BULLET
  11946. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11947. ></RBW-AUTOGEN
  11948. ></RBW-MARKER
  11949. ><RBW-PARABODY>FLEXlm end&truehy;user technical support, and answers to frequently asked questions (FAQs)</RBW-PARABODY
  11950. ></LB.LIST.BULLET
  11951. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11952. ></RBW-AUTOGEN
  11953. ></RBW-MARKER
  11954. ><RBW-PARABODY>A question&truehy;and&truehy;answer server via the FLEXlm wizard</RBW-PARABODY
  11955. ></LB.LIST.BULLET
  11956. ></LABEL
  11957. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11958. >In this chapter</L.LABEL
  11959. ><B.BODY>This chapter contains the following sections:</B.BODY
  11960. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  11961. ></ENTRY
  11962. ></RBW-ROW
  11963. ></THEAD
  11964. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14820" TYPE="XREF-TEXTCOPY">Licensing in ObjectTeam&rbwtab;B–3</RBW-XREF
  11965. ></SB.SECTION.BLOCK.TABLE
  11966. ></ENTRY
  11967. ></RBW-ROW
  11968. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39823" TYPE="XREF-TEXTCOPY">Installing the License Server Software&rbwtab;B–7</RBW-XREF
  11969. ></SB.SECTION.BLOCK.TABLE
  11970. ></ENTRY
  11971. ></RBW-ROW
  11972. ></TBODY
  11973. ></TGROUP
  11974. ></RBW-TABLE
  11975. ></LABEL
  11976. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="14820"></RBW-ANCHOR
  11977. >Licensing in ObjectTeam</S.SECTION.HEAD
  11978. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11979. >Introduction</L.LABEL
  11980. ><B.BODY>This section explains the use of licensing in ObjectTeam, the difference between temporary and permanent licenses.</B.BODY
  11981. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  11982. ></RBW-AUTOGEN
  11983. >If you are not interested in how licensing works and just want to get on with installation, skip to Installing the License Server Software on page B–7.</T.TIP
  11984. ></LABEL
  11985. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11986. >License components</L.LABEL
  11987. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  11988. >License server</SL.SUBLABEL
  11989. ><B.BODY>In an ObjectTeam installation, a single machine in the network acts as <CX5FX5FTERM>license server</CX5FX5FTERM
  11990. >. By default, this is the same machine as the ObjectTeam Master server. The license server consists of the following components:</B.BODY
  11991. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11992. ></RBW-AUTOGEN
  11993. ></RBW-MARKER
  11994. ><RBW-PARABODY>A license manager daemon, <CX5FX5FTERM>lmgrd</CX5FX5FTERM
  11995. >, that is started automatically when the machine is booted and runs as a service. This daemon receives requests for features from other workstations on the network and assigns them to the Cayenne daemon.</RBW-PARABODY
  11996. ></LB.LIST.BULLET
  11997. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  11998. ></RBW-AUTOGEN
  11999. ></RBW-MARKER
  12000. ><RBW-PARABODY>A Cayenne daemon, <CX5FX5FTERM>cayenne</CX5FX5FTERM
  12001. >, that controls the usage of ObjectTeam features according to the number of licenses available in the license file</RBW-PARABODY
  12002. ></LB.LIST.BULLET
  12003. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12004. ></RBW-AUTOGEN
  12005. ></RBW-MARKER
  12006. ><RBW-PARABODY>A license file, <CX5FX5FTERM>cayenne.dat</CX5FX5FTERM
  12007. > </RBW-PARABODY
  12008. ></LB.LIST.BULLET
  12009. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12010. ></RBW-AUTOGEN
  12011. ></RBW-MARKER
  12012. ><RBW-PARABODY>A license file variable, <CX5FX5FTERM>LM_LICENSE_FILE</CX5FX5FTERM
  12013. >, that points to the location of the license file. </RBW-PARABODY
  12014. ></LB.LIST.BULLET
  12015. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12016. >Other machines</SL.SUBLABEL
  12017. ><B.BODY>On all machines running ObjectTeam software, the following component is necessary:</B.BODY
  12018. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12019. ></RBW-AUTOGEN
  12020. ></RBW-MARKER
  12021. ><RBW-PARABODY>A license file variable, <CX5FX5FTERM>LM_LICENSE_FILE</CX5FX5FTERM
  12022. >, that points to the address of the license server</RBW-PARABODY
  12023. ></LB.LIST.BULLET
  12024. ></LABEL
  12025. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12026. >Temporary licenses</L.LABEL
  12027. ><B.BODY>To use ObjectTeam, you must obtain a license from Cayenne. Licenses are keyed to the ID of the machine on which you are running the license software. So before we can supply a license, you must inform us of this ID using the license request form.</B.BODY
  12028. ><B.BODY>Issuing the license can take a day or so, so to get you started in the meantime, Cayenne supplies a <CX5FX5FTERM>temporary license</CX5FX5FTERM
  12029. > that is not linked to a machine ID. This temporary license is valid for a limited period and usually comes on a floppy in your ObjectTeam package, though you may also receive it via email or fax.</B.BODY
  12030. ><B.BODY>The temporary license file is made up of <CX5FX5FTERM>feature lines</CX5FX5FTERM
  12031. >, each controlling the use of a single ObjectTeam feature. This is an example of a feature line:</B.BODY
  12032. ><EWM.EXAMPLEW.MONO>FEATURE OT_BROWSER_WIN cayenne 7.100 11&truehy;jan&truehy;98 0 2CF2F7D2EF08C75F701F ““ DEMO</EWM.EXAMPLEW.MONO
  12033. ><B.BODY>Until you receive the permanent license, you must install a copy of the temporary license on every workstation on which you install ObjectTeam software. The temporary license then controls access to all features on that machine itself; you cannot run a license server with a temporary license. </B.BODY
  12034. ><B.BODY>During installation of ObjectTeam, you are prompted to set the LM_LICENSE_FILE variable to point to the location of your local temporary license file.</B.BODY
  12035. ></LABEL
  12036. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12037. >Permanent licenses</L.LABEL
  12038. ><B.BODY>A permanent license is what Globetrotter refers to in the <CX5FX5FTERM>FLEXlm End User Manual</CX5FX5FTERM
  12039. > as a <CX5FX5FTERM>floating license</CX5FX5FTERM
  12040. >. This means it is installed on a particular machine in the network that acts as a license server. The license server controls the usage of ObjectTeam features by any workstation connected to the license server.</B.BODY
  12041. ></LABEL
  12042. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12043. >Contents of a permanent license file</L.LABEL
  12044. ><B.BODY>A license file is made up of a <CX5FX5FTERM>server line</CX5FX5FTERM
  12045. >, a <CX5FX5FTERM>daemon line</CX5FX5FTERM
  12046. > and a number of <CX5FX5FTERM>feature lines</CX5FX5FTERM
  12047. >. This is an example of a license file:</B.BODY
  12048. ><EWM.EXAMPLEW.MONO>SERVER neptune 008005a88359e 7126</EWM.EXAMPLEW.MONO
  12049. ><EWM.EXAMPLEW.MONO>DAEMON cayenne C:\cayenne\flexlm\bin\cayenne.exe</EWM.EXAMPLEW.MONO
  12050. ><EWM.EXAMPLEW.MONO>FEATURE OT_BROWSER_WIN cayenne 7.100 11&truehy;jan&truehy;98 10 2CF2F7D2EF08C75F701F ““</EWM.EXAMPLEW.MONO
  12051. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12052. ></RBW-AUTOGEN
  12053. ></RBW-MARKER
  12054. ><RBW-PARABODY>The server line identifies the name and (encrypted) hostid or volume serial number of the license server, and the port on which it receives license requests.</RBW-PARABODY
  12055. ></LB.LIST.BULLET
  12056. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12057. ></RBW-AUTOGEN
  12058. ></RBW-MARKER
  12059. ><RBW-PARABODY>The daemon line identifies the name and location of the cayenne daemon, responsible for managing ObjectTeam licenses.</RBW-PARABODY
  12060. ></LB.LIST.BULLET
  12061. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12062. ></RBW-AUTOGEN
  12063. ></RBW-MARKER
  12064. ><RBW-PARABODY>A feature line identifies a particular ObjectTeam licensed feature, the version of ObjectTeam for which it is valid, the expiry date and the number of workstations that can use it simultaneously. If this is a nodelocked feature, the hostid is also specified.</RBW-PARABODY
  12065. ></LB.LIST.BULLET
  12066. ></LABEL
  12067. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12068. >Replacing a temporary license with a permanent license</L.LABEL
  12069. ><B.BODY>Once you receive your permanent license, you:</B.BODY
  12070. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12071. ></RBW-AUTOGEN
  12072. ></RBW-MARKER
  12073. ><RBW-PARABODY>Install it on the license server.</RBW-PARABODY
  12074. ></LB.LIST.BULLET
  12075. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12076. ></RBW-AUTOGEN
  12077. ></RBW-MARKER
  12078. ><RBW-PARABODY>Start the license server.</RBW-PARABODY
  12079. ></LB.LIST.BULLET
  12080. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12081. ></RBW-AUTOGEN
  12082. ></RBW-MARKER
  12083. ><RBW-PARABODY>Remove the temporary licenses installed on each machine running ObjectTeam.</RBW-PARABODY
  12084. ></LB.LIST.BULLET
  12085. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12086. ></RBW-AUTOGEN
  12087. ></RBW-MARKER
  12088. ><RBW-PARABODY>Reset LM_LICENSE_FILE on each machine running ObjectTeam to point to the license server. On a machine other than the license server, LM_LICENSE_FILE has the format <CX5FX5FTERM>port</CX5FX5FTERM
  12089. >@<CX5FX5FTERM>server</CX5FX5FTERM
  12090. >, where <CX5FX5FTERM>port</CX5FX5FTERM
  12091. > is the TCP/IP port being used by the license server, and <CX5FX5FVARIABLE>server</CX5FX5FVARIABLE
  12092. > is the host name of the server running the license service. These are identified in the server line of the license file. </RBW-PARABODY
  12093. ></LB.LIST.BULLET
  12094. ></LABEL
  12095. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12096. >Licensing process</L.LABEL
  12097. ><B.BODY>Once the license server is running, it controls the use of ObjectTeam features. When a user tries to start an ObjectTeam feature, such as a Browser, ObjectTeam:</B.BODY
  12098. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12099. ></RBW-AUTOGEN
  12100. ></RBW-MARKER
  12101. ><RBW-PARABODY>Examines LM_LICENSE_FILE to find the address of the license server. On a client for example, this has the format <CX5FX5FTERM>port</CX5FX5FTERM
  12102. >@<CX5FX5FTERM>server</CX5FX5FTERM
  12103. >.</RBW-PARABODY
  12104. ></LB.LIST.BULLET
  12105. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12106. ></RBW-AUTOGEN
  12107. ></RBW-MARKER
  12108. ><RBW-PARABODY>Makes a request for a feature with the appropriate name (such as OT_BROWSER_WIN). The request is passed to the license server at the specified address. </RBW-PARABODY
  12109. ></LB.LIST.BULLET
  12110. ><B.BODY>The license manager daemon on the license server:</B.BODY
  12111. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12112. ></RBW-AUTOGEN
  12113. ></RBW-MARKER
  12114. ><RBW-PARABODY>Receives the request on the specified port.</RBW-PARABODY
  12115. ></LB.LIST.BULLET
  12116. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12117. ></RBW-AUTOGEN
  12118. ></RBW-MARKER
  12119. ><RBW-PARABODY>Searches the license file for the feature with the specified name. On the feature line is also listed the name of the daemon which is reponsible for controlling this feature, namely <CX5FX5FTERM>cayenne</CX5FX5FTERM
  12120. >.</RBW-PARABODY
  12121. ></LB.LIST.BULLET
  12122. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12123. ></RBW-AUTOGEN
  12124. ></RBW-MARKER
  12125. ><RBW-PARABODY>Passes the request to the cayenne daemon, which then grants or denies a license based on the number of licenses available.</RBW-PARABODY
  12126. ></LB.LIST.BULLET
  12127. ></LABEL
  12128. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12129. >Editing license files</L.LABEL
  12130. ><B.BODY>Normally, your license file contains all the features that you need to use ObjectTeam. If you subsequently decide that you would like to use additional features of ObjectTeam, you can order additional licenses for each feature. To make a new license available, you simply add a new feature line to your existing license file.</B.BODY
  12131. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12132. ></RBW-AUTOGEN
  12133. ></RBW-MARKER
  12134. ><RBW-PARABODY>To edit the license file:</RBW-PARABODY
  12135. ></P.PROCEDURE
  12136. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  12137. ></RBW-AUTOGEN
  12138. ></RBW-MARKER
  12139. ><RBW-PARABODY>Make a copy of your current license file.</RBW-PARABODY
  12140. ></LN.LIST.NUM
  12141. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  12142. ></RBW-AUTOGEN
  12143. ></RBW-MARKER
  12144. ><RBW-PARABODY>Open the license file (by default <CX5FX5FFILE.NAME>C:\Cayenne\Flexlm\license\cayenne.dat</CX5FX5FFILE.NAME
  12145. >) using a text editor.</RBW-PARABODY
  12146. ></LN.LIST.NUM
  12147. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  12148. ></RBW-AUTOGEN
  12149. ></RBW-MARKER
  12150. ><RBW-PARABODY>Edit the license file as needed:</RBW-PARABODY
  12151. ></LN.LIST.NUM
  12152. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  12153. ></RBW-MARKER
  12154. ><RBW-PARABODY>To add a new feature, type (or copy and paste) the new feature line into the file. If you are typing the license information, be careful to avoid typing mistakes.</RBW-PARABODY
  12155. ></LB2.LIST.BULLET.2
  12156. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  12157. ></RBW-MARKER
  12158. ><RBW-PARABODY>To deactivate a feature, comment it out by typing a hash character (#) at the start of the line. </RBW-PARABODY
  12159. ></LB2.LIST.BULLET.2
  12160. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  12161. ></RBW-MARKER
  12162. ><RBW-PARABODY>To replace a feature, deactivate the old line and add the new one as described above.</RBW-PARABODY
  12163. ></LB2.LIST.BULLET.2
  12164. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  12165. ></RBW-AUTOGEN
  12166. ></RBW-MARKER
  12167. ><RBW-PARABODY>Save the edited file.</RBW-PARABODY
  12168. ></LN.LIST.NUM
  12169. ></LABEL
  12170. ></SECTION
  12171. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="39823"></RBW-ANCHOR
  12172. >Installing the License Server Software</S.SECTION.HEAD
  12173. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12174. >Introduction</L.LABEL
  12175. ><B.BODY>Before you install or upgrade an ObjectTeam Master server, you must configure a machine in your network as a license server. This can be the same machine as the Master server (for example, in the case of a standalone installation), or some other machine.</B.BODY
  12176. ><B.BODY>This section describes how to install the FLEXlm license software on a Master server or standalone machine, as well as the changes you need to make to certain server files.</B.BODY
  12177. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  12178. ></RBW-AUTOGEN
  12179. >You cannot use a machine running Windows 95 as a license server in a client/server installation. If you want to run ObjectTeam in a client/server installation, you must use a machine running Windows NT as the license server. </N.NOTE
  12180. ></LABEL
  12181. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12182. ><RBW-ANCHOR ID="32637"></RBW-ANCHOR
  12183. >How to install the license management software</L.LABEL
  12184. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12185. ></RBW-AUTOGEN
  12186. ></RBW-MARKER
  12187. ><RBW-PARABODY>To install the license management software:</RBW-PARABODY
  12188. ></P.PROCEDURE
  12189. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  12190. ></RBW-AUTOGEN
  12191. ></RBW-MARKER
  12192. ><RBW-PARABODY>Log on to the server (as Administrator, or as a user who belongs to the Administrator group if you are using Windows NT).</RBW-PARABODY
  12193. ></LN.LIST.NUM
  12194. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  12195. ></RBW-AUTOGEN
  12196. ></RBW-MARKER
  12197. ><RBW-PARABODY>Insert the CD into your CD drive, which can be a local or networked drive.</RBW-PARABODY
  12198. ></LN.LIST.NUM
  12199. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  12200. ></RBW-AUTOGEN
  12201. ></RBW-MARKER
  12202. ><RBW-PARABODY>Go to <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  12203. >:<CX5FX5FFILE.NAME>\</CX5FX5FFILE.NAME
  12204. >objecttm\win32\flexlm<CX5FX5FFILE.NAME>\</CX5FX5FFILE.NAME
  12205. > where <CX5FX5FTERM>CD_drive </CX5FX5FTERM
  12206. >is the letter of the CD drive.</RBW-PARABODY
  12207. ></LN.LIST.NUM
  12208. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  12209. ></RBW-AUTOGEN
  12210. ></RBW-MARKER
  12211. ><RBW-PARABODY>Double&truehy;click on setup.exe.</RBW-PARABODY
  12212. ></LN.LIST.NUM
  12213. ><LR.LIST.RESULT>You are prompted for the installation location of the FLEXlm files. The default is C:\Cayenne\Flexlm. You should install FLEXlm on the same drive on which you will install ObjectTeam. If there is not enough space on C drive, use another drive. If the Cayenne directory does not already exist, it is created.</LR.LIST.RESULT
  12214. ></LABEL
  12215. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12216. >Next steps</L.LABEL
  12217. ><B.BODY>If you have a:</B.BODY
  12218. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12219. ></RBW-AUTOGEN
  12220. ></RBW-MARKER
  12221. ><RBW-PARABODY>Temporary license, you need to obtain a permanent license, as described in Obtaining a Permanent License on page B–8.</RBW-PARABODY
  12222. ></LB.LIST.BULLET
  12223. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12224. ></RBW-AUTOGEN
  12225. ></RBW-MARKER
  12226. ><RBW-PARABODY>Permanent license, install the permanent license and start the license server, as described in Installing a Permanent License on page B–10.</RBW-PARABODY
  12227. ></LB.LIST.BULLET
  12228. ></LABEL
  12229. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36976"></RBW-ANCHOR
  12230. >Obtaining a Permanent License</SS.SUBSEC.HEAD
  12231. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12232. >Introduction</L.LABEL
  12233. ><B.BODY>To carry out this procedure, your system must be configured with Microsoft TCP/IP network software. Note that your PC must have a static IP address and host name.</B.BODY
  12234. ><B.BODY>Refer to your operating system documentation (from Microsoft) for information on how to enable the TCP/IP protocol.</B.BODY
  12235. ></LABEL
  12236. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12237. >Obtaining a permanent license</L.LABEL
  12238. ><B.BODY>To obtain a permanent license, you must find out the host ID of your machine and submit it to Cayenne using the License Request Form. </B.BODY
  12239. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12240. ></RBW-AUTOGEN
  12241. ></RBW-MARKER
  12242. ><RBW-PARABODY>To order a license:</RBW-PARABODY
  12243. ></P.PROCEDURE
  12244. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  12245. ></RBW-AUTOGEN
  12246. ></RBW-MARKER
  12247. ><RBW-PARABODY>Select Start | Settings | Control Panel.</RBW-PARABODY
  12248. ></LN.LIST.NUM
  12249. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  12250. ></RBW-AUTOGEN
  12251. ></RBW-MARKER
  12252. ><RBW-PARABODY>Double&truehy;click the FLEXlm icon.</RBW-PARABODY
  12253. ></LN.LIST.NUM
  12254. ><LR.LIST.RESULT>The FLEXlm license manager window appears.</LR.LIST.RESULT
  12255. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  12256. ></RBW-AUTOGEN
  12257. ></RBW-MARKER
  12258. ><RBW-PARABODY>Select the Advanced tab.</RBW-PARABODY
  12259. ></LN.LIST.NUM
  12260. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00037.unk" origfile="pics/licman2.gif" origtype="X" origdoc="../../sources/ignt/igntflex.fm5.mif"></RBW-GRAPHIC
  12261. ></FA2.FIGURE.ANCHOR.2
  12262. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  12263. ></RBW-AUTOGEN
  12264. ></RBW-MARKER
  12265. ><RBW-PARABODY>Click Diagnostics.</RBW-PARABODY
  12266. ></LN.LIST.NUM
  12267. ><LR.LIST.RESULT>A list of IDs is displayed.</LR.LIST.RESULT
  12268. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00038.unk" origfile="pics/licids.gif" origtype="X" origdoc="../../sources/ignt/igntflex.fm5.mif"></RBW-GRAPHIC
  12269. ></FA2.FIGURE.ANCHOR.2
  12270. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  12271. ></RBW-AUTOGEN
  12272. ></RBW-MARKER
  12273. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  12274. > The id you need is the server’s hostid. This is the second from bottom line.</RBW-PARABODY
  12275. ></LN.LIST.NUM
  12276. ><LT.LIST.TEXT><CX5FX5FFILE.NAME>Windows 95 Standalone:</CX5FX5FFILE.NAME
  12277. > The id you need is the server’s Disk Serial Number. This is the bottom line.</LT.LIST.TEXT
  12278. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  12279. ></RBW-AUTOGEN
  12280. ></RBW-MARKER
  12281. ><RBW-PARABODY>Submit a license request in either of the following ways:</RBW-PARABODY
  12282. ></LN.LIST.NUM
  12283. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  12284. ></RBW-MARKER
  12285. ><RBW-PARABODY>Go to the license request form provided on Cayenne Software’s World Wide Web page at: <CX5FX5FFILE.NAME>http://www.cayennesoft.com/license</CX5FX5FFILE.NAME
  12286. >. </RBW-PARABODY
  12287. ></LB2.LIST.BULLET.2
  12288. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  12289. ></RBW-MARKER
  12290. ><RBW-PARABODY>Print out the form provided on the CD (<CX5FX5FTERM>CD_drive</CX5FX5FTERM
  12291. >:\lic_req.txt or <CX5FX5FTERM>CD_drive</CX5FX5FTERM
  12292. >:\lic_req.htm), fill it in and fax it to us at 617&truehy;273&truehy;0618.</RBW-PARABODY
  12293. ></LB2.LIST.BULLET.2
  12294. ><LT.LIST.TEXT>If you are ordering from outside the United States, contact your Cayenne sales office.</LT.LIST.TEXT
  12295. ><B.BODY>Cayenne will send you a new license for the product by electronic mail or by fax. </B.BODY
  12296. ><B.BODY>Once you receive a permanent license, carry out the instructions in Installing a Permanent License on page B–10. </B.BODY
  12297. ></LABEL
  12298. ></SUBSECTION
  12299. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40695"></RBW-ANCHOR
  12300. >Installing a Permanent License</SS.SUBSEC.HEAD
  12301. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12302. >Introduction</L.LABEL
  12303. ><B.BODY>Once you receive a permanent license, you can start the license server. Carry out the steps in this section while logged into the license server as Administrator (or as a user who belongs to the Administrator group).</B.BODY
  12304. ></LABEL
  12305. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12306. >Install your permanent license file</L.LABEL
  12307. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12308. ></RBW-AUTOGEN
  12309. ></RBW-MARKER
  12310. ><RBW-PARABODY>To install your permanent license file:</RBW-PARABODY
  12311. ></P.PROCEDURE
  12312. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  12313. ></RBW-AUTOGEN
  12314. ></RBW-MARKER
  12315. ><RBW-PARABODY>If you received the permanent license:</RBW-PARABODY
  12316. ></LN.LIST.NUM
  12317. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  12318. ></RBW-MARKER
  12319. ><RBW-PARABODY>On a floppy, copy the permanent license to <CX5FX5FFILE.NAME>C:\Cayenne\Flexlm\license\cayenne.dat</CX5FX5FFILE.NAME
  12320. >.</RBW-PARABODY
  12321. ></LB2.LIST.BULLET.2
  12322. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  12323. ></RBW-MARKER
  12324. ><RBW-PARABODY>Via email, copy and paste the new feature information into an empty text file and save it as <CX5FX5FFILE.NAME>C:\Cayenne\Flexlm\license\cayenne.dat</CX5FX5FFILE.NAME
  12325. >.</RBW-PARABODY
  12326. ></LB2.LIST.BULLET.2
  12327. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  12328. ></RBW-MARKER
  12329. ><RBW-PARABODY>Via fax, enter the new feature information by hand into an empty text file, and save it as <CX5FX5FFILE.NAME>C:\Cayenne\Flexlm\license\cayenne.dat</CX5FX5FFILE.NAME
  12330. >.</RBW-PARABODY
  12331. ></LB2.LIST.BULLET.2
  12332. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  12333. ></RBW-AUTOGEN
  12334. ></RBW-MARKER
  12335. ><RBW-PARABODY>Open the license file in a text editor and check that the DAEMON line points to the correct location of the cayenne daemon, for example:</RBW-PARABODY
  12336. ></LN.LIST.NUM
  12337. ><EM.EXAMPLE.MONO>DAEMON cayenne C:\Cayenne\Flexlm\bin\cayenne</EM.EXAMPLE.MONO
  12338. ></LABEL
  12339. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12340. >How to set LM_LICENSE_FILE on the license server under Windows NT</L.LABEL
  12341. ><B.BODY>On a license server running under Windows NT, you must now set the license file environment variable, LM_LICENSE_FILE, to point to the permanent license:</B.BODY
  12342. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12343. ></RBW-AUTOGEN
  12344. ></RBW-MARKER
  12345. ><RBW-PARABODY>To set the LM_LICENSE_FILE variable on the license server:</RBW-PARABODY
  12346. ></P.PROCEDURE
  12347. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  12348. ></RBW-AUTOGEN
  12349. ></RBW-MARKER
  12350. ><RBW-PARABODY>Select Start|Settings|Control Panel.</RBW-PARABODY
  12351. ></LN.LIST.NUM
  12352. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  12353. ></RBW-AUTOGEN
  12354. ></RBW-MARKER
  12355. ><RBW-PARABODY>In the Control Panel window, double&truehy;click on the System icon.</RBW-PARABODY
  12356. ></LN.LIST.NUM
  12357. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  12358. ></RBW-AUTOGEN
  12359. ></RBW-MARKER
  12360. ><RBW-PARABODY>In the System Properties window, select the Environment tab.</RBW-PARABODY
  12361. ></LN.LIST.NUM
  12362. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  12363. ></RBW-AUTOGEN
  12364. ></RBW-MARKER
  12365. ><RBW-PARABODY>Set LM_LICENSE_FILE as a System Environment Variable with the following value:</RBW-PARABODY
  12366. ></LN.LIST.NUM
  12367. ><EM.EXAMPLE.MONO>C:\Cayenne\Flexlm\license\cayenne.dat</EM.EXAMPLE.MONO
  12368. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  12369. ></RBW-AUTOGEN
  12370. >If there is already an LM_LICENSE_FILE setting, then add the above path at the end of the line, separated from the previous path by a semi&truehy;colon (;).</N2.NOTE.2
  12371. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  12372. ></RBW-AUTOGEN
  12373. ></RBW-MARKER
  12374. ><RBW-PARABODY>Select OK to close the System window.</RBW-PARABODY
  12375. ></LN.LIST.NUM
  12376. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  12377. ></RBW-AUTOGEN
  12378. ></RBW-MARKER
  12379. ><RBW-PARABODY>Close the Control Panel.</RBW-PARABODY
  12380. ></LN.LIST.NUM
  12381. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  12382. ></RBW-AUTOGEN
  12383. ></RBW-MARKER
  12384. ><RBW-PARABODY>Reboot the machine.</RBW-PARABODY
  12385. ></LN.LIST.NUM
  12386. ></LABEL
  12387. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12388. >How to start the license manager daemon on a Master server or standalone</L.LABEL
  12389. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12390. ></RBW-AUTOGEN
  12391. ></RBW-MARKER
  12392. ><RBW-PARABODY>During installation of the FLEXlm software, a control panel was also installed:</RBW-PARABODY
  12393. ></P.PROCEDURE
  12394. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  12395. ></RBW-AUTOGEN
  12396. ></RBW-MARKER
  12397. ><RBW-PARABODY>In the Control Panels window, double&truehy;click on the FLEXlm icon.</RBW-PARABODY
  12398. ></LN.LIST.NUM
  12399. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  12400. ></RBW-AUTOGEN
  12401. ></RBW-MARKER
  12402. ><RBW-PARABODY>Select the Setup tab.</RBW-PARABODY
  12403. ></LN.LIST.NUM
  12404. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  12405. ></RBW-AUTOGEN
  12406. ></RBW-MARKER
  12407. ><RBW-PARABODY>Fill in the Service name, location of the license daemon executable, location of the license file and where you wish log files to be stored. The following figure shows the recommended settings.</RBW-PARABODY
  12408. ></LN.LIST.NUM
  12409. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00039.unk" origfile="pics/licman.gif" origtype="X" origdoc="../../sources/ignt/igntflex.fm5.mif"></RBW-GRAPHIC
  12410. ></FA2.FIGURE.ANCHOR.2
  12411. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  12412. ></RBW-AUTOGEN
  12413. ></RBW-MARKER
  12414. ><RBW-PARABODY>Select the Start Server at Power Up check box. </RBW-PARABODY
  12415. ></LN.LIST.NUM
  12416. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  12417. ></RBW-AUTOGEN
  12418. ></RBW-MARKER
  12419. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  12420. > Select the Use NT Services check box. This ensures that lmgrd starts automatically when the machine is rebooted.</RBW-PARABODY
  12421. ></LN.LIST.NUM
  12422. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  12423. ></RBW-AUTOGEN
  12424. ></RBW-MARKER
  12425. ><RBW-PARABODY>Select the Control tab.</RBW-PARABODY
  12426. ></LN.LIST.NUM
  12427. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  12428. ></RBW-AUTOGEN
  12429. ></RBW-MARKER
  12430. ><RBW-PARABODY>Select the Start button to start the license server.</RBW-PARABODY
  12431. ></LN.LIST.NUM
  12432. ><B.BODY>For more information on using the control panel, such as how to stop or remove the service, see the <CX5FX5FTERM>FLEXlm End User Manual</CX5FX5FTERM
  12433. >.</B.BODY
  12434. ><RBWAUTO-0001></RBWAUTO-0001
  12435. ><!--
  12436.  
  12437.  
  12438.  
  12439.  
  12440.  
  12441. CONVERTING SOURCE FILE ../../sources/ignt/ignttrbl.fm5.mif
  12442.  
  12443.  
  12444. --><B.BODY></B.BODY
  12445. ><B.BODY></B.BODY
  12446. ><B.BODY></B.BODY
  12447. ><B.BODY></B.BODY
  12448. ><B.BODY></B.BODY
  12449. ></LABEL
  12450. ></SUBSECTION
  12451. ></SECTION
  12452. ></APPENDIX
  12453. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix C&rbwtab;</CX5FX5FZCHAPTER.NUM
  12454. ></RBW-AUTOGEN
  12455. >Trouble<RBW-ANCHOR ID="39959"></RBW-ANCHOR
  12456. >shooting<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  12457. ><RBW-TEXTFLD TYPE="text">Installation Guide</RBW-TEXTFLD
  12458. ></RBW-SYSOBJ
  12459. ></A.APPENDIX.HEAD
  12460. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12461. >If installation fails</L.LABEL
  12462. ><B.BODY>If something fails during the installation, the best solution is to run the Uninstall script, as described in Uninstalling ObjectTeam Software on page 2–27, and run the setup program again. </B.BODY
  12463. ></LABEL
  12464. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12465. >Error messages</L.LABEL
  12466. ><B.BODY>Many errors start with the message “Cannot initialize client context”. The important lines to look at are the last two or three lines. These usually contain some clear indication of the cause of the problem.</B.BODY
  12467. ><B.BODY>When troubleshooting, be aware that some error messages only pop up after a timeout limit has been reached. These are usually set to one minute. If nothing happens, wait at least this time before taking action.</B.BODY
  12468. ></LABEL
  12469. ><SECTION><S.SECTION.HEAD>Changes Made During Installation</S.SECTION.HEAD
  12470. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12471. >Introduction</L.LABEL
  12472. ><B.BODY>Depending on the installation:</B.BODY
  12473. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12474. ></RBW-AUTOGEN
  12475. ></RBW-MARKER
  12476. ><RBW-PARABODY>Windows environment variables are set</RBW-PARABODY
  12477. ></LB.LIST.BULLET
  12478. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12479. ></RBW-AUTOGEN
  12480. ></RBW-MARKER
  12481. ><RBW-PARABODY>Windows services are installed</RBW-PARABODY
  12482. ></LB.LIST.BULLET
  12483. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12484. ></RBW-AUTOGEN
  12485. ></RBW-MARKER
  12486. ><RBW-PARABODY>ObjectTeam configuration files are created</RBW-PARABODY
  12487. ></LB.LIST.BULLET
  12488. ></LABEL
  12489. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12490. >How to check your environment variables</L.LABEL
  12491. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12492. ></RBW-AUTOGEN
  12493. ></RBW-MARKER
  12494. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  12495. > Select Start | Settings | Control Panel, and double click on the System control panel. Select the Environment tab.</RBW-PARABODY
  12496. ></P.PROCEDURE
  12497. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12498. ></RBW-AUTOGEN
  12499. ></RBW-MARKER
  12500. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows 95:</CX5FX5FFILE.NAME
  12501. > Edit your autoexec.bat file in a text editor.</RBW-PARABODY
  12502. ></P.PROCEDURE
  12503. ></LABEL
  12504. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12505. >How to check your services</L.LABEL
  12506. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12507. ></RBW-AUTOGEN
  12508. ></RBW-MARKER
  12509. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  12510. > Select Start | Settings | Control Panel, and double click on the Services control panel. Check that the ObjectTeam Broker service is running.</RBW-PARABODY
  12511. ></P.PROCEDURE
  12512. ></LABEL
  12513. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12514. >Changes made in a Master server or standalone installation</L.LABEL
  12515. ><B.BODY>The following changes are made for a Master server or standalone installation:</B.BODY
  12516. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12517. ></RBW-AUTOGEN
  12518. ></RBW-MARKER
  12519. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows NT:</CX5FX5FFILE.NAME
  12520. > The ObjectTeam Broker is installed as a Windows NT service. </RBW-PARABODY
  12521. ></LB.LIST.BULLET
  12522. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12523. ></RBW-AUTOGEN
  12524. ></RBW-MARKER
  12525. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows 95:</CX5FX5FFILE.NAME
  12526. > The ObjectTeam Broker is installed as a executable that starts at boot.</RBW-PARABODY
  12527. ></LB.LIST.BULLET
  12528. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12529. ></RBW-AUTOGEN
  12530. ></RBW-MARKER
  12531. ><RBW-PARABODY>The variable M4_home is set as an environment variable. All ObjectTeam tools use this variable. The default value is C:\Cayenne\tools.</RBW-PARABODY
  12532. ></LB.LIST.BULLET
  12533. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12534. ></RBW-AUTOGEN
  12535. ></RBW-MARKER
  12536. ><RBW-PARABODY>The variable SQLANY is set as an environment variable. Default is C:\Cayenne\tools\sqlany55.</RBW-PARABODY
  12537. ></LB.LIST.BULLET
  12538. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12539. ></RBW-AUTOGEN
  12540. ></RBW-MARKER
  12541. ><RBW-PARABODY>The variable LM_LICENSE_FILE is set as an environment variable. Default is C:\Cayenne\Flexlm\license\cayenne.dat.</RBW-PARABODY
  12542. ></LB.LIST.BULLET
  12543. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12544. ></RBW-AUTOGEN
  12545. ></RBW-MARKER
  12546. ><RBW-PARABODY>%M4_home%\bin and %SQLANY%\win32 are added to your PATH.</RBW-PARABODY
  12547. ></LB.LIST.BULLET
  12548. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12549. ></RBW-AUTOGEN
  12550. ></RBW-MARKER
  12551. ><RBW-PARABODY>The file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  12552. >\etc\objservers.objservers is modified when you create a repository. For more details, see the <CX5FX5FTITLE>ObjectTeam System Administrator’s Guide</CX5FX5FTITLE
  12553. ><CX5FX5FTITLE></CX5FX5FTITLE
  12554. ><CX5FX5FTERM> for Microsoft Windows</CX5FX5FTERM
  12555. >.</RBW-PARABODY
  12556. ></LB.LIST.BULLET
  12557. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12558. ></RBW-AUTOGEN
  12559. ></RBW-MARKER
  12560. ><RBW-PARABODY>The file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  12561. >\etc\m4env.m4env is created with the following ObjectTeam M4 variables:</RBW-PARABODY
  12562. ></LB.LIST.BULLET
  12563. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="174p"><COLSPEC COLNAME="2" COLWIDTH="255p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  12564. ></ENTRY
  12565. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set to</CELLHEADING
  12566. ></ENTRY
  12567. ></RBW-ROW
  12568. ></THEAD
  12569. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_levelpath</CELLBODY
  12570. ></ENTRY
  12571. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of your repository</CELLBODY
  12572. ></ENTRY
  12573. ></RBW-ROW
  12574. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_brokerport</CELLBODY
  12575. ></ENTRY
  12576. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Port on which broker is contacted. Default is 1825.</CELLBODY
  12577. ></ENTRY
  12578. ></RBW-ROW
  12579. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_imphost</CELLBODY
  12580. ></ENTRY
  12581. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Machine running the ObjectTeam software.</CELLBODY
  12582. ></ENTRY
  12583. ></RBW-ROW
  12584. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_orb_linger</CELLBODY
  12585. ></ENTRY
  12586. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The time to wait for contact with broker</CELLBODY
  12587. ></ENTRY
  12588. ></RBW-ROW
  12589. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_orb_linger__lockserver</CELLBODY
  12590. ></ENTRY
  12591. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The time to wait for contact with lockserver</CELLBODY
  12592. ></ENTRY
  12593. ></RBW-ROW
  12594. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_masterserver</CELLBODY
  12595. ></ENTRY
  12596. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This is set if this machine is a Mster server in a client/server (i.e. not standalone) installation.</CELLBODY
  12597. ></ENTRY
  12598. ></RBW-ROW
  12599. ></TBODY
  12600. ></TGROUP
  12601. ></RBW-TABLE
  12602. ></LABEL
  12603. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12604. >Changes made in a Slave server installation</L.LABEL
  12605. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12606. ></RBW-AUTOGEN
  12607. ></RBW-MARKER
  12608. ><RBW-PARABODY>The ObjectTeam Broker is installed as a Windows NT service. </RBW-PARABODY
  12609. ></LB.LIST.BULLET
  12610. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12611. ></RBW-AUTOGEN
  12612. ></RBW-MARKER
  12613. ><RBW-PARABODY>The variable M4_home is set as an environment variable. All ObjectTeam tools use this variable. The default value is C:\Cayenne\tools.</RBW-PARABODY
  12614. ></LB.LIST.BULLET
  12615. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12616. ></RBW-AUTOGEN
  12617. ></RBW-MARKER
  12618. ><RBW-PARABODY>The variable LM_LICENSE_FILE is set as an environment variable. Default is <CX5FX5FTERM>port</CX5FX5FTERM
  12619. >@<CX5FX5FTERM>host</CX5FX5FTERM
  12620. >.</RBW-PARABODY
  12621. ></LB.LIST.BULLET
  12622. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12623. ></RBW-AUTOGEN
  12624. ></RBW-MARKER
  12625. ><RBW-PARABODY>The file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  12626. >\etc\m4env.m4env is created with the following ObjectTeam M4 variables:</RBW-PARABODY
  12627. ></LB.LIST.BULLET
  12628. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="174p"><COLSPEC COLNAME="2" COLWIDTH="255p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  12629. ></ENTRY
  12630. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set to</CELLHEADING
  12631. ></ENTRY
  12632. ></RBW-ROW
  12633. ></THEAD
  12634. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_levelpath</CELLBODY
  12635. ></ENTRY
  12636. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of your repository</CELLBODY
  12637. ></ENTRY
  12638. ></RBW-ROW
  12639. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_nameserverhost</CELLBODY
  12640. ></ENTRY
  12641. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The machine running as Master server.</CELLBODY
  12642. ></ENTRY
  12643. ></RBW-ROW
  12644. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_brokerport</CELLBODY
  12645. ></ENTRY
  12646. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Port on which broker is contacted. Default is 1825.</CELLBODY
  12647. ></ENTRY
  12648. ></RBW-ROW
  12649. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_imphost</CELLBODY
  12650. ></ENTRY
  12651. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Machine running the ObjectTeam software.</CELLBODY
  12652. ></ENTRY
  12653. ></RBW-ROW
  12654. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_orb_linger</CELLBODY
  12655. ></ENTRY
  12656. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The time to wait for contact with broker</CELLBODY
  12657. ></ENTRY
  12658. ></RBW-ROW
  12659. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_orb_linger__lockserver</CELLBODY
  12660. ></ENTRY
  12661. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The time to wait for contact with lockserver</CELLBODY
  12662. ></ENTRY
  12663. ></RBW-ROW
  12664. ></TBODY
  12665. ></TGROUP
  12666. ></RBW-TABLE
  12667. ></LABEL
  12668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12669. >Client</L.LABEL
  12670. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12671. ></RBW-AUTOGEN
  12672. ></RBW-MARKER
  12673. ><RBW-PARABODY>The variable M4_home is set as an environment variable. All ObjectTeam tools use this variable. The default value is C:\Cayenne\tools.</RBW-PARABODY
  12674. ></LB.LIST.BULLET
  12675. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12676. ></RBW-AUTOGEN
  12677. ></RBW-MARKER
  12678. ><RBW-PARABODY>The variable LM_LICENSE_FILE is set as an environment variable. Default is <CX5FX5FTERM>port</CX5FX5FTERM
  12679. >@<CX5FX5FTERM>host</CX5FX5FTERM
  12680. >.</RBW-PARABODY
  12681. ></LB.LIST.BULLET
  12682. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12683. ></RBW-AUTOGEN
  12684. ></RBW-MARKER
  12685. ><RBW-PARABODY>The file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  12686. >\etc\m4env.m4env is created with the following ObjectTeam M4 variables:</RBW-PARABODY
  12687. ></LB.LIST.BULLET
  12688. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="174p"><COLSPEC COLNAME="2" COLWIDTH="255p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  12689. ></ENTRY
  12690. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set to</CELLHEADING
  12691. ></ENTRY
  12692. ></RBW-ROW
  12693. ></THEAD
  12694. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_levelpath</CELLBODY
  12695. ></ENTRY
  12696. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of your repository</CELLBODY
  12697. ></ENTRY
  12698. ></RBW-ROW
  12699. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_brokerport</CELLBODY
  12700. ></ENTRY
  12701. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Port on which broker is contacted. Default is 1825.</CELLBODY
  12702. ></ENTRY
  12703. ></RBW-ROW
  12704. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_imphost</CELLBODY
  12705. ></ENTRY
  12706. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Machine running the ObjectTeam software.</CELLBODY
  12707. ></ENTRY
  12708. ></RBW-ROW
  12709. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_orb_linger</CELLBODY
  12710. ></ENTRY
  12711. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The time to wait for contact with broker</CELLBODY
  12712. ></ENTRY
  12713. ></RBW-ROW
  12714. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_orb_linger__lockserver</CELLBODY
  12715. ></ENTRY
  12716. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The time to wait for contact with lockserver</CELLBODY
  12717. ></ENTRY
  12718. ></RBW-ROW
  12719. ></TBODY
  12720. ></TGROUP
  12721. ></RBW-TABLE
  12722. ></LABEL
  12723. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12724. >Error messages</L.LABEL
  12725. ><B.BODY>When troubleshooting, be aware that some error messages only pop up after a timeout limit has been reached. These are usually set to five minutes. If nothing happens, wait at least this time before taking action.</B.BODY
  12726. ></LABEL
  12727. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12728. >General troubleshooting</L.LABEL
  12729. ><B.BODY>In the event of problems, check the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  12730. >\logs\ot_brok.log file as well as the status of the ObjectTeam broker service.</B.BODY
  12731. ></LABEL
  12732. ></SECTION
  12733. ><SECTION><S.SECTION.HEAD>Problems Starting the Browser or Other Tool</S.SECTION.HEAD
  12734. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12735. >Starting the browser</L.LABEL
  12736. ><B.BODY></B.BODY
  12737. ><EWM.EXAMPLEW.MONO>ERROR [115001]: Cannot initialize client context</EWM.EXAMPLEW.MONO
  12738. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘levelpath’.</EWM.EXAMPLEW.MONO
  12739. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘levelpath’ not invoked.</EWM.EXAMPLEW.MONO
  12740. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12741. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12742. ><EWM.EXAMPLEW.MONO>ERROR [120072]: Remote implementation ‘levelpath’ not found.</EWM.EXAMPLEW.MONO
  12743. ><EWM.EXAMPLEW.MONO>ERROR [121001]: Implementation with id ‘levelpath’ not registered in implementation repository</EWM.EXAMPLEW.MONO
  12744. ><B.BODY>The M4_levelpath variable is not set correctly.</B.BODY
  12745. ><B.BODY>Set the ObjectTeam variable M4_levelpath to point to an existing repository, e.g., <CX5FX5FINPUT>M4_levelpath=/corporate;RW</CX5FX5FINPUT
  12746. >. You can examine the existing repositories using the Corporate Management Tool. </B.BODY
  12747. ><B.BODY>This variable is defined in %M4_home%/etc/m4env.m4env or in the .Meta4UserEnv file in your login directory. </B.BODY
  12748. ></LABEL
  12749. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12750. >Starting the browser</L.LABEL
  12751. ><EWM.EXAMPLEW.MONO>ERROR [115001]: Cannot initialize client context.</EWM.EXAMPLEW.MONO
  12752. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘levelpath’.</EWM.EXAMPLEW.MONO
  12753. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘levelpath’ not invoked.</EWM.EXAMPLEW.MONO
  12754. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12755. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12756. ><EWM.EXAMPLEW.MONO>ERROR [120072]: Remote implementation ‘wronglevelpath’ not found.</EWM.EXAMPLEW.MONO
  12757. ><EWM.EXAMPLEW.MONO>ERROR [120014]: Request for ‘ot_broker’ at host ‘HOSTNAME’ timed out after 60000 milliseconds</EWM.EXAMPLEW.MONO
  12758. ><B.BODY>The SQLANY variable is not set correctly and/or the Path variable is not set to %SQLANY%\win32 in the System Environment.</B.BODY
  12759. ><B.BODY>Set the Sybase SQL Anywhere system environment variable SQLANY to point to the installation directory of SQL Anywhere. On Windows NT this is done in the System Control Panel. On Windows’95 this is done in the autoexec.bat file.</B.BODY
  12760. ><B.BODY>The default value is C:\Cayenne\Tools\sqlany55.</B.BODY
  12761. ></LABEL
  12762. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12763. >Starting the browser</L.LABEL
  12764. ><EWM.EXAMPLEW.MONO>ERROR [210040]: (Message not available)</EWM.EXAMPLEW.MONO
  12765. ><EWM.EXAMPLEW.MONO>ERROR [001004]: Module 210 not initialized.</EWM.EXAMPLEW.MONO
  12766. ><EWM.EXAMPLEW.MONO>ERROR [001001]: Error while reading message file ‘etc/message/message.210’.</EWM.EXAMPLEW.MONO
  12767. ><EWM.EXAMPLEW.MONO>SYSERR [000002]: No such file or directory</EWM.EXAMPLEW.MONO
  12768. ><B.BODY>The M4_home variable is not set correctly</B.BODY
  12769. ><B.BODY>Set the ObjectTeam system environment variable to point to the installation directory of ObjectTeam. On Windows NT this is done in the System Control Panel. On Windows 95 this is done in the autoexec.bat file.</B.BODY
  12770. ><B.BODY>The default value is C:\Cayenne\Tools.</B.BODY
  12771. ></LABEL
  12772. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12773. >Starting the browser</L.LABEL
  12774. ><EWM.EXAMPLEW.MONO>ERROR [115001]: Cannot initialize client context</EWM.EXAMPLEW.MONO
  12775. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘levelpath’.</EWM.EXAMPLEW.MONO
  12776. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘levelpath’ not invoked.</EWM.EXAMPLEW.MONO
  12777. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12778. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12779. ><EWM.EXAMPLEW.MONO>ERROR [120072]: Remote implementation ‘levelpath’ not found.</EWM.EXAMPLEW.MONO
  12780. ><EWM.EXAMPLEW.MONO>ERROR [120048]: Operation ‘Broker::getImpByName(String const & name, ImpDescriptor & descrip)’ not invoked.</EWM.EXAMPLEW.MONO
  12781. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12782. ><EWM.EXAMPLEW.MONO>ERROR [120042]: Could not set address for broker at host ‘HOSTNAME’,port #number</EWM.EXAMPLEW.MONO
  12783. ><EWM.EXAMPLEW.MONO>ERROR [011001] Host was not found</EWM.EXAMPLEW.MONO
  12784. ><B.BODY>The M4_imphost variable is not set correctly</B.BODY
  12785. ><B.BODY>Set the ObjectTeam client variable M4_imphost to the host where an ObjectTeam broker runs, e.g., M4_imphost=capella;RW. This variable is defined in the %M4_home%/etc/m4env.m4env file or in the .Meta4UserEnv file in your login directory.</B.BODY
  12786. ></LABEL
  12787. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12788. >Starting the browser</L.LABEL
  12789. ><B.BODY></B.BODY
  12790. ><EWM.EXAMPLEW.MONO>ERROR [115001]: Cannot initialize client context</EWM.EXAMPLEW.MONO
  12791. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘levelpath’.</EWM.EXAMPLEW.MONO
  12792. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘levelpath’ not invoked.</EWM.EXAMPLEW.MONO
  12793. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12794. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12795. ><EWM.EXAMPLEW.MONO>ERROR [120072]: Remote implementation ‘levelpath’ not found.</EWM.EXAMPLEW.MONO
  12796. ><EWM.EXAMPLEW.MONO>ERROR [120014]: Request for ‘ot_broker’ at host ‘HOSTNAME’ timed out after 60000 milliseconds</EWM.EXAMPLEW.MONO
  12797. ><B.BODY>The M4_brokerport variable is not set correctly.</B.BODY
  12798. ><B.BODY>Set the ObjectTeam environment variable M4_brokerport to a number via which the broker can be reached. This variable is defined in %M4_home%/etc/m4env.m4env or in the .Meta4UserEnv file in your login directory. </B.BODY
  12799. ><B.BODY>Default value: 1825</B.BODY
  12800. ></LABEL
  12801. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12802. >Starting the browser</L.LABEL
  12803. ><EWM.EXAMPLEW.MONO>ERROR [123002]: Could not checkout license for OT_BROWSER_WIN</EWM.EXAMPLEW.MONO
  12804. ><EWM.EXAMPLEW.MONO>ERROR [123001]: FLEXlm: Cannot find license file (&truehy;1,73:2) No such file or directory</EWM.EXAMPLEW.MONO
  12805. ><B.BODY>The LM_LICENSE_FILE variable is not set correctly.</B.BODY
  12806. ><B.BODY>Set the FLEXlm system environment variable LM_LICENSE_FILE to point to:</B.BODY
  12807. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12808. ></RBW-AUTOGEN
  12809. ></RBW-MARKER
  12810. ><RBW-PARABODY>A valid local license file, e.g., C:\Cayenne\Flexlm\license\cayenne.dat</RBW-PARABODY
  12811. ></LB.LIST.BULLET
  12812. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12813. ></RBW-AUTOGEN
  12814. ></RBW-MARKER
  12815. ><RBW-PARABODY><CX5FX5FTERM>port</CX5FX5FTERM
  12816. >@<CX5FX5FTERM>host</CX5FX5FTERM
  12817. >, if you are running a license server on another machine. To identify the port, log on to your machine running the license server and open the license file cayenne.dat The port appears as the last field on the server line, e.g., 7126@capella.</RBW-PARABODY
  12818. ></LB.LIST.BULLET
  12819. ><B.BODY>On Windows NT this variable is set using in the Control Panel, System. On Windows 95 this variable is set in the autoexec.bat file.</B.BODY
  12820. ><B.BODY>Note: If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended on the end, separated from the previous path by a semicolon (;).</B.BODY
  12821. ></LABEL
  12822. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12823. >Starting the browser</L.LABEL
  12824. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘corporate’.</EWM.EXAMPLEW.MONO
  12825. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘corporate’ not invoked.</EWM.EXAMPLEW.MONO
  12826. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12827. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12828. ><EWM.EXAMPLEW.MONO>ERROR [121013]: Server ‘dbserver’ reports failure:</EWM.EXAMPLEW.MONO
  12829. ><EWM.EXAMPLEW.MONO>ERROR [123002]: Could not checkout license for OT_SERVER_WIN</EWM.EXAMPLEW.MONO
  12830. ><EWM.EXAMPLEW.MONO>ERROR [123001]: FLEXlm: cannot find license file (&truehy;1,72:2) No such file or directory</EWM.EXAMPLEW.MONO
  12831. ><B.BODY>The LM_LICENSE_FILE variable was not set correctly at the time the ot_broker was started.</B.BODY
  12832. ><B.BODY>Set the FLEXlm system environment variable LM_LICENSE_FILE to point to:</B.BODY
  12833. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12834. ></RBW-AUTOGEN
  12835. ></RBW-MARKER
  12836. ><RBW-PARABODY>A valid local license file, e.g., C:\Cayenne\Flexlm\license\cayenne.dat</RBW-PARABODY
  12837. ></LB.LIST.BULLET
  12838. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  12839. ></RBW-AUTOGEN
  12840. ></RBW-MARKER
  12841. ><RBW-PARABODY><CX5FX5FTERM>port</CX5FX5FTERM
  12842. >@<CX5FX5FTERM>host</CX5FX5FTERM
  12843. >, if you are running a license server on another machine. To identify the port, log on to your machine running the license server and open the license file cayenne.dat The port appears as the last field on the server line, e.g., 7126@capella.</RBW-PARABODY
  12844. ></LB.LIST.BULLET
  12845. ><B.BODY>On Windows NT this variable is set using in the Control Panel, System. On Windows 95 this variable is set in the autoexec.bat file.</B.BODY
  12846. ><B.BODY>Once you have set LM_LICENSE_FILE, reboot your machine.</B.BODY
  12847. ><B.BODY>Note: If LM_LICENSE_FILE is set in your environment for some other vendor’s software, enter the displayed path with the location of your ObjectTeam license file appended on the end, separated from the previous path by a semicolon (;).</B.BODY
  12848. ></LABEL
  12849. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12850. >Starting the Corporate Management Tool</L.LABEL
  12851. ><EWM.EXAMPLEW.MONO>ERROR [115024]: Cannot obtain corporate id for ‘levelpath’.</EWM.EXAMPLEW.MONO
  12852. ><EWM.EXAMPLEW.MONO>ERROR [120051]: Name request for Corporate service ‘levelpath’ not invoked.</EWM.EXAMPLEW.MONO
  12853. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12854. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12855. ><EWM.EXAMPLEW.MONO>ERROR [120072]: Remote implementation ‘levelpath’ not found.</EWM.EXAMPLEW.MONO
  12856. ><EWM.EXAMPLEW.MONO>ERROR [120014]: Request for ‘ot_broker’ at host ‘HOSTNAME’ timed out after 60000 milliseconds</EWM.EXAMPLEW.MONO
  12857. ><B.BODY>The M4_brokerport variable is not set correctly</B.BODY
  12858. ><B.BODY>Set the ObjectTeam environment variable M4_brokerport to a number via which the broker can be reached. This variable is defined in %M4_home%/etc/m4env.m4env or in the .Meta4UserEnv file in your login directory. </B.BODY
  12859. ><B.BODY>Default value: 1825</B.BODY
  12860. ></LABEL
  12861. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12862. >Starting the User Environment Tool</L.LABEL
  12863. ><EWM.EXAMPLEW.MONO>210048 TclError ‘ERROR [120048]: Operation ‘Nameserver::serverDefinition(int temporaryAlso)’ not invoked</EWM.EXAMPLEW.MONO
  12864. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12865. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12866. ><EWM.EXAMPLEW.MONO>ERROR [120071]: Remote implementation 2.1 not found</EWM.EXAMPLEW.MONO
  12867. ><EWM.EXAMPLEW.MONO>ERROR [120014]: Request for ‘ot_broker’ at host ‘HOSTNAME’ timed out after 60000 milliseconds</EWM.EXAMPLEW.MONO
  12868. ><B.BODY>The M4_brokerport variable is not set correctly</B.BODY
  12869. ><B.BODY>Set the ObjectTeam environment variable M4_brokerport to a number via which the broker can be reached. This variable is defined in %M4_home%/etc/m4env.m4env or in the .Meta4UserEnv file in your login directory. </B.BODY
  12870. ><B.BODY>Default value: 1825</B.BODY
  12871. ></LABEL
  12872. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12873. >Starting the Lock Management Tool</L.LABEL
  12874. ><EWM.EXAMPLEW.MONO>ERROR [120048]: Operation ‘LockManager::sfindLocks(LockDescription const & desc)’ not invoked</EWM.EXAMPLEW.MONO
  12875. ><EWM.EXAMPLEW.MONO>ERROR [120020]: Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12876. ><EWM.EXAMPLEW.MONO>ERROR [120033]: Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12877. ><EWM.EXAMPLEW.MONO>ERROR [120071]: Remote implementation 100.1 not found</EWM.EXAMPLEW.MONO
  12878. ><EWM.EXAMPLEW.MONO>ERROR [120014]: Request for ‘ot_broker’ at host ‘HOSTNAME’ timed out after 60000 milliseconds</EWM.EXAMPLEW.MONO
  12879. ><B.BODY>The M4_brokerport variable is not set correctly</B.BODY
  12880. ><B.BODY>Set the ObjectTeam environment variable M4_brokerport to a number via which the broker can be reached. This variable is defined in %M4_home%/etc/m4env.m4env or in the .Meta4UserEnv file in your login directory. </B.BODY
  12881. ><B.BODY>Default value: 1825</B.BODY
  12882. ></LABEL
  12883. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12884. >Starting the browser</L.LABEL
  12885. ><EWM.EXAMPLEW.MONO>115001 Cannot initialize client context</EWM.EXAMPLEW.MONO
  12886. ><EWM.EXAMPLEW.MONO>115024 Cannot obtain corporate id for ‘levelpath’.</EWM.EXAMPLEW.MONO
  12887. ><EWM.EXAMPLEW.MONO>120051 Name request for Corporate service ‘levelpath’ not invoked.</EWM.EXAMPLEW.MONO
  12888. ><EWM.EXAMPLEW.MONO>120020 Operation implementation unavailable.</EWM.EXAMPLEW.MONO
  12889. ><EWM.EXAMPLEW.MONO>120033 Error accessing implementation repository.</EWM.EXAMPLEW.MONO
  12890. ><EWM.EXAMPLEW.MONO>121013 Server ‘dbserver’ reports failure</EWM.EXAMPLEW.MONO
  12891. ><EWM.EXAMPLEW.MONO>112152 Error occurred while opening a repository</EWM.EXAMPLEW.MONO
  12892. ><EWM.EXAMPLEW.MONO>110005 Connect to database ‘levelpath’ using connect string ‘UID=”DBA”;PWD=”janw”;ENG=hostname;START=DBCLIENT &truehy;x</EWM.EXAMPLEW.MONO
  12893. ><EWM.EXAMPLEW.MONO>tcpip{DOBROAD=NO;HOST=hostname} ;AutoStop=yes;DBN=janw;DBF=c:\cayenne\repos\janw.db failed.</EWM.EXAMPLEW.MONO
  12894. ><EWM.EXAMPLEW.MONO>000080 unable to start database engine</EWM.EXAMPLEW.MONO
  12895. ><B.BODY>The computer name and DNS&truehy;hostname are not the same. </B.BODY
  12896. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12897. ></RBW-AUTOGEN
  12898. ></RBW-MARKER
  12899. ><RBW-PARABODY>To check the computer name:</RBW-PARABODY
  12900. ></P.PROCEDURE
  12901. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  12902. ></RBW-AUTOGEN
  12903. ></RBW-MARKER
  12904. ><RBW-PARABODY>Select Start | Control panels | Network | Identification</RBW-PARABODY
  12905. ></LN.LIST.NUM
  12906. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12907. ></RBW-AUTOGEN
  12908. ></RBW-MARKER
  12909. ><RBW-PARABODY>To check the DNS hostname:</RBW-PARABODY
  12910. ></P.PROCEDURE
  12911. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  12912. ></RBW-AUTOGEN
  12913. ></RBW-MARKER
  12914. ><RBW-PARABODY>Select Start | Control panels | Network | Identification | Protocols | TCP/IP | properties | DNS</RBW-PARABODY
  12915. ></LN.LIST.NUM
  12916. ></LABEL
  12917. ></SECTION
  12918. ><SECTION><S.SECTION.HEAD>Problems Creating a Repository</S.SECTION.HEAD
  12919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12920. >Creating a repository</L.LABEL
  12921. ><EWM.EXAMPLEW.MONO>Dbserver V7.1.1    Fri Oct 18 20:58:36  1997</EWM.EXAMPLEW.MONO
  12922. ><EWM.EXAMPLEW.MONO>Repository not created</EWM.EXAMPLEW.MONO
  12923. ><EWM.EXAMPLEW.MONO>ERROR [112116]: Could not get unique implementation identifier.</EWM.EXAMPLEW.MONO
  12924. ><EWM.EXAMPLEW.MONO>ERROR [121069]: Duplicate server name ‘newrep’.</EWM.EXAMPLEW.MONO
  12925. ><EWM.EXAMPLEW.MONO>Dbserver V7.1.1 finished</EWM.EXAMPLEW.MONO
  12926. ><B.BODY>You are trying to create a repository with a name that already exists. Start the Client/Server Configuration tool to see which repositories already exist.</B.BODY
  12927. ></LABEL
  12928. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12929. >Creating a repository</L.LABEL
  12930. ><E.EXAMPLE></E.EXAMPLE
  12931. ><EWM.EXAMPLEW.MONO>Dbserver V7.1.1    Fri Oct 18 20:58:36  1997</EWM.EXAMPLEW.MONO
  12932. ><EWM.EXAMPLEW.MONO>Oct 28 17:37:06 1996@<localhost>@185@4@dbserver.exe|object is ready: contact at udp port 1054</EWM.EXAMPLEW.MONO
  12933. ><EWM.EXAMPLEW.MONO>Info from ‘ot_broker’: Starting new server, please wait...</EWM.EXAMPLEW.MONO
  12934. ><EWM.EXAMPLEW.MONO>Info from ‘ot_broker’: Server ‘lockserver’ is ready.</EWM.EXAMPLEW.MONO
  12935. ><EWM.EXAMPLEW.MONO>The name specified is not recognized as an internal or external command, operable program or batch file.</EWM.EXAMPLEW.MONO
  12936. ><EWM.EXAMPLEW.MONO>Repository not created.</EWM.EXAMPLEW.MONO
  12937. ><EWM.EXAMPLEW.MONO>ERROR [112105]: Creation of repository database ‘newrep’ failed.</EWM.EXAMPLEW.MONO
  12938. ><EWM.EXAMPLEW.MONO>ERROR [110013]: Creation of database ‘C:\CayenneObjectteam\repos\newrep.db’ failed.</EWM.EXAMPLEW.MONO
  12939. ><EWM.EXAMPLEW.MONO>Oct 28 17:37:07 1997@<localhost>@185@4@dbserver.exe|udp connection: closing port 1054</EWM.EXAMPLEW.MONO
  12940. ><EWM.EXAMPLEW.MONO>Dbserver V7.1.1 finished</EWM.EXAMPLEW.MONO
  12941. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  12942. ><B.BODY>The dynamic link library dbl50t.dll could not be found in the specific path. Check your PATH variable.</B.BODY
  12943. ></LABEL
  12944. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  12945. >Creating a repository</L.LABEL
  12946. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  12947. ></RBW-AUTOGEN
  12948. ></RBW-MARKER
  12949. ><RBW-PARABODY>When trying to create a repository, you receive the following message:</RBW-PARABODY
  12950. ></P.PROCEDURE
  12951. ><E.EXAMPLE>Dbserver V7.1.1    Fri Oct 18 20:58:36  1997</E.EXAMPLE
  12952. ><E.EXAMPLE></E.EXAMPLE
  12953. ><E.EXAMPLE>Oct 28 17:53:14 1997@<localhost>@222@4@dbserver.exe|object is ready: contact at udp port 1069</E.EXAMPLE
  12954. ><E.EXAMPLE>Repository not created.</E.EXAMPLE
  12955. ><E.EXAMPLE>ERROR [112105]: Creation of repository database ‘newrep’ failed.</E.EXAMPLE
  12956. ><E.EXAMPLE>ERROR [110012]: Create database can only be executed on server</E.EXAMPLE
  12957. ><E.EXAMPLE>Oct 28 17:53:15 1997@<localhost>@222@4@dbserver.exe|udp connection: closing port 1069</E.EXAMPLE
  12958. ><E.EXAMPLE>Dbserver V7.1.1 finished</E.EXAMPLE
  12959. ><B.BODY>Creation fails because the new repository was created with the wrong database server specified. Open the Create Repository dialog box again and check the server name.</B.BODY
  12960. ><B.BODY>It can also mean that the server name given is the Computer Name, rather than the DNS Host Name, which is used by ObjectTeam as host name.</B.BODY
  12961. ><B.BODY>To check this, start up the Network configure utility from the Control Panel. In this window you will see the Computer Name. The DNS Host Name can been shown by selecting the “TCP/IP Protocol” in the window with “Installed Network Software” and clicking on “Configure...”.</B.BODY
  12962. ><B.BODY>The TCP/IP configuration window will appear. In this window click on “DNS...”. The window that now will appear will give you the DNS Host Name. It is recommended to make the Computer Name and DNS Host Name the same.</B.BODY
  12963. ><B.BODY>After this has been changed, reboot your system.</B.BODY
  12964. ><RBWAUTO-0001></RBWAUTO-0001
  12965. ><!--
  12966.  
  12967.  
  12968.  
  12969.  
  12970.  
  12971. CONVERTING SOURCE FILE ../../sources/common/tab_user.mif
  12972.  
  12973.  
  12974. --><B.BODY></B.BODY
  12975. ><B.BODY></B.BODY
  12976. ><B.BODY></B.BODY
  12977. ><B.BODY></B.BODY
  12978. ><B.BODY></B.BODY
  12979. ></LABEL
  12980. ></SECTION
  12981. ></APPENDIX
  12982. ></BOOK
  12983. ></PRODUCT
  12984. ><PRODUCT><PH.PRODUCT.HEAD>User Set</PH.PRODUCT.HEAD
  12985. ><!--
  12986.  
  12987.  
  12988.  
  12989.  
  12990.  
  12991. CONVERTING SOURCE FILE ../../sources/gs/gsbk.mif
  12992.  
  12993.  
  12994. --><B.BODY></B.BODY
  12995. ><B.BODY></B.BODY
  12996. ><B.BODY></B.BODY
  12997. ><B.BODY></B.BODY
  12998. ><B.BODY></B.BODY
  12999. ><BOOK><BH.BOOK.HEAD>Getting Started</BH.BOOK.HEAD
  13000. ><!--
  13001.  
  13002.  
  13003.  
  13004.  
  13005.  
  13006. CONVERTING SOURCE FILE ../../sources/gs/gspref.fm5.mif
  13007.  
  13008.  
  13009. --><B.BODY></B.BODY
  13010. ><B.BODY></B.BODY
  13011. ><B.BODY></B.BODY
  13012. ><B.BODY></B.BODY
  13013. ><B.BODY></B.BODY
  13014. ><CHAPTERNONUM><CN.CHAPTER.NOX23>How to Use This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  13015. ><RBW-TEXTFLD TYPE="text">Getting Started</RBW-TEXTFLD
  13016. ></RBW-SYSOBJ
  13017. ></CN.CHAPTER.NOX23
  13018. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13019. >About this manual</L.LABEL
  13020. ><B.BODY>This manual provides an introduction to ObjectTeam, an object&truehy;oriented software development environment that supports models&truehy;to&truehy;code application development.</B.BODY
  13021. ></LABEL
  13022. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13023. >Prerequisites</L.LABEL
  13024. ><B.BODY>This manual assumes that you are familiar with the following products and concepts:</B.BODY
  13025. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13026. ></RBW-AUTOGEN
  13027. ></RBW-MARKER
  13028. ><RBW-PARABODY>The operating system you are using. For more information, see your operating&truehy;system documentation.</RBW-PARABODY
  13029. ></LB.LIST.BULLET
  13030. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13031. ></RBW-AUTOGEN
  13032. ></RBW-MARKER
  13033. ><RBW-PARABODY>The Unified Modeling Language (UML) for Object&truehy;Oriented Development, as developed by Grady Booch, Ivar Jacobson, and James Rumbaugh.</RBW-PARABODY
  13034. ></LB.LIST.BULLET
  13035. ><RBWAUTO-0001></RBWAUTO-0001
  13036. ><!--
  13037.  
  13038.  
  13039.  
  13040.  
  13041.  
  13042. CONVERTING SOURCE FILE ../../sources/gs/overv.fm5.mif
  13043.  
  13044.  
  13045. --><B.BODY></B.BODY
  13046. ><B.BODY></B.BODY
  13047. ><B.BODY></B.BODY
  13048. ><B.BODY></B.BODY
  13049. ><B.BODY></B.BODY
  13050. ></LABEL
  13051. ></CHAPTERNONUM
  13052. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  13053. ></RBW-AUTOGEN
  13054. ><RBWAUTO-0003></RBWAUTO-0003
  13055. >Overview<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  13056. ><RBW-TEXTFLD TYPE="text">Getting Started</RBW-TEXTFLD
  13057. ></RBW-SYSOBJ
  13058. ></C.CHAPTER.HEAD
  13059. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13060. >ObjectTeam</L.LABEL
  13061. ><B.BODY>ObjectTeam provides a complete environment for developing object&truehy;oriented applications. It automates the UML and OMT methodologies and provides utilities for checking your diagrams, reporting on diagram contents, creating formal project documentation, managing development projects, and generating code. </B.BODY
  13062. ></LABEL
  13063. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13064. >Cayenne repository</L.LABEL
  13065. ><B.BODY>ObjectTeam supports team&truehy;oriented development by providing a common repository for all project data. The repository is implemented using a relational database. The relational database management system (RDBMS) that you use depends on your ObjectTeam package.</B.BODY
  13066. ></LABEL
  13067. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13068. >In this chapter</L.LABEL
  13069. ><B.BODY>This chapter contains the following sections:</B.BODY
  13070. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  13071. ></ENTRY
  13072. ></RBW-ROW
  13073. ></THEAD
  13074. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22630" TYPE="XREF-TEXTCOPY">ObjectTeam&rbwtab;1–2</RBW-XREF
  13075. ></SB.SECTION.BLOCK.TABLE
  13076. ></ENTRY
  13077. ></RBW-ROW
  13078. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35123" TYPE="XREF-TEXTCOPY">Cayenne Repository&rbwtab;1–3</RBW-XREF
  13079. ></SB.SECTION.BLOCK.TABLE
  13080. ></ENTRY
  13081. ></RBW-ROW
  13082. ></TBODY
  13083. ></TGROUP
  13084. ></RBW-TABLE
  13085. ></LABEL
  13086. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22630"></RBW-ANCHOR
  13087. >ObjectTeam</S.SECTION.HEAD
  13088. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13089. >Diagrams and phases</L.LABEL
  13090. ><B.BODY>ObjectTeam defines a set of diagram editors for modeling an application. It also provides a project hierarchy that includes the four software development phases: Analysis, System Design, Object Design, and Implementation. You use the editors and the project hierarchy to build your diagrams and move them through the software development phases.</B.BODY
  13091. ></LABEL
  13092. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13093. >Development utilities</L.LABEL
  13094. ><B.BODY>ObjectTeam provides development utilities, such as Check, Reports, and Compare, that are useful in all phases of software development.</B.BODY
  13095. ></LABEL
  13096. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13097. >Code generation</L.LABEL
  13098. ><B.BODY>After fully defining your UML or OMT diagrams, you can use the ObjectTeam code generators to generate code for both persistent and non&truehy;persistent objects.</B.BODY
  13099. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13100. ></RBW-AUTOGEN
  13101. ></RBW-MARKER
  13102. ><RBW-PARABODY>The data of a <CX5FX5FBULLET.EMPHASIS>persistent</CX5FX5FBULLET.EMPHASIS
  13103. > object persists beyond the lifetime of a single program execution. It is stored in a permanent data store, such as an RDBMS. To support persistent objects, the code generators generate SQL scripts that create the database and its tables, as well as the SQL code for accessing the data in the database. </RBW-PARABODY
  13104. ></LB.LIST.BULLET
  13105. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  13106. ></RBW-AUTOGEN
  13107. >(Only the C++ and Informix NewEra code generators support persistent objects.)</N2.NOTE.2
  13108. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13109. ></RBW-AUTOGEN
  13110. ></RBW-MARKER
  13111. ><RBW-PARABODY>The data of a <CX5FX5FBULLET.EMPHASIS>non&truehy;persistent</CX5FX5FBULLET.EMPHASIS
  13112. > object exists only during the execution of its related program. To support non&truehy;persistent objects, the code generators generate OOPL code (for example, C++ or 4GL).</RBW-PARABODY
  13113. ></LB.LIST.BULLET
  13114. ></LABEL
  13115. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13116. >Document generation</L.LABEL
  13117. ><B.BODY>At the end of each phase, project teams often need to produce formal project documentation for presentation to management. You can use a desktop publishing system to refine the files generated by the Document Generator.</B.BODY
  13118. ></LABEL
  13119. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13120. >Project management utilities</L.LABEL
  13121. ><B.BODY>Project management utilities, such as Configuration Management, Version Control, and Access Control, allow you to coordinate software development projects throughout your organization.</B.BODY
  13122. ></LABEL
  13123. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13124. >Customize as needed</L.LABEL
  13125. ><B.BODY>Special files allow you to customize most ObjectTeam components.</B.BODY
  13126. ></LABEL
  13127. ></SECTION
  13128. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35123"></RBW-ANCHOR
  13129. >Cayenne Repository</S.SECTION.HEAD
  13130. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13131. >Introduction</L.LABEL
  13132. ><B.BODY>You communicate with the repository through the ObjectTeam user interface. For example, the ObjectTeam Browser, which appears when you start ObjectTeam, displays the repository data. You create, modify, and delete repository data using the utilities provided by the ObjectTeam Browser and other ObjectTeam windows.</B.BODY
  13133. ></LABEL
  13134. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13135. >Project hierarchy</L.LABEL
  13136. ><B.BODY>In the ObjectTeam Browser, project data is organized hierarchically:</B.BODY
  13137. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00040.tif" origseq="1" origtype="I" origdoc="../../sources/gs/overv.fm5.mif"></RBW-GRAPHIC
  13138. ></FA.FIGURE.ANCHOR
  13139. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13140. ></RBW-AUTOGEN
  13141. ></RBW-MARKER
  13142. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Corporate</CX5FX5FBULLET.EMPHASIS
  13143. > level contains all projects and corporate data. </RBW-PARABODY
  13144. ></LB.LIST.BULLET
  13145. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13146. ></RBW-AUTOGEN
  13147. ></RBW-MARKER
  13148. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Project</CX5FX5FBULLET.EMPHASIS
  13149. > level contains all data for a project. </RBW-PARABODY
  13150. ></LB.LIST.BULLET
  13151. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13152. ></RBW-AUTOGEN
  13153. ></RBW-MARKER
  13154. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Configuration</CX5FX5FBULLET.EMPHASIS
  13155. > level contains object versions from a particular project that a particular developer is working on.</RBW-PARABODY
  13156. ></LB.LIST.BULLET
  13157. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13158. ></RBW-AUTOGEN
  13159. ></RBW-MARKER
  13160. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Phase</CX5FX5FBULLET.EMPHASIS
  13161. > level contains object versions from a particular project that are in a particular phase of software development: Analysis, System Design, Object Design, or Implementation.</RBW-PARABODY
  13162. ></LB.LIST.BULLET
  13163. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13164. ></RBW-AUTOGEN
  13165. ></RBW-MARKER
  13166. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>System</CX5FX5FBULLET.EMPHASIS
  13167. > level contains object versions that are in a particular subsystem of the application.</RBW-PARABODY
  13168. ></LB.LIST.BULLET
  13169. ></LABEL
  13170. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13171. >Project data</L.LABEL
  13172. ><B.BODY>You create project data at the System level. In the repository, ObjectTeam stores project data as file versions, components, and items.</B.BODY
  13173. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13174. ></RBW-AUTOGEN
  13175. ></RBW-MARKER
  13176. ><RBW-PARABODY>When you create a diagram, ObjectTeam stores the diagram in the repository as a <CX5FX5FBULLET.EMPHASIS>file version</CX5FX5FBULLET.EMPHASIS
  13177. >.</RBW-PARABODY
  13178. ></LB.LIST.BULLET
  13179. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  13180. ></RBW-AUTOGEN
  13181. >File versions are repository objects; they do not appear in the directory structure of the operating system. In the ObjectTeam documentation, files that appear in the directory structure of the operating system are called <CX5FX5FTERM>external files</CX5FX5FTERM
  13182. >. </N2.NOTE.2
  13183. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13184. ></RBW-AUTOGEN
  13185. ></RBW-MARKER
  13186. ><RBW-PARABODY>When you draw an object in a diagram, ObjectTeam stores the <CX5FX5FEMPHASIS>graphic element</CX5FX5FEMPHASIS
  13187. > in the repository as a <CX5FX5FBULLET.EMPHASIS>component</CX5FX5FBULLET.EMPHASIS
  13188. >.</RBW-PARABODY
  13189. ></LB.LIST.BULLET
  13190. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13191. ></RBW-AUTOGEN
  13192. ></RBW-MARKER
  13193. ><RBW-PARABODY>When you name the object in the diagram, you create a syntactic element that has meaning within your project. ObjectTeam stores the <CX5FX5FEMPHASIS>syntactic element</CX5FX5FEMPHASIS
  13194. > in the repository as an <CX5FX5FBULLET.EMPHASIS>item</CX5FX5FBULLET.EMPHASIS
  13195. >.</RBW-PARABODY
  13196. ></LB.LIST.BULLET
  13197. ><RBWAUTO-0001></RBWAUTO-0001
  13198. ><!--
  13199.  
  13200.  
  13201.  
  13202.  
  13203.  
  13204. CONVERTING SOURCE FILE ../../sources/gs/feat.fm5.mif
  13205.  
  13206.  
  13207. --><B.BODY></B.BODY
  13208. ><B.BODY></B.BODY
  13209. ><B.BODY></B.BODY
  13210. ><B.BODY></B.BODY
  13211. ><B.BODY></B.BODY
  13212. ></LABEL
  13213. ></SECTION
  13214. ></CHAPTER
  13215. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  13216. ></RBW-AUTOGEN
  13217. >Featur<RBW-ANCHOR ID="12522"></RBW-ANCHOR
  13218. >es<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  13219. ><RBW-TEXTFLD TYPE="text">Getting Started</RBW-TEXTFLD
  13220. ></RBW-SYSOBJ
  13221. ></C.CHAPTER.HEAD
  13222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13223. >Introduction</L.LABEL
  13224. ><B.BODY>ObjectTeam provides a powerful environment for modeling, project management, and code generation. This chapter introduces you to the main features of ObjectTeam.</B.BODY
  13225. ></LABEL
  13226. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13227. >In this chapter</L.LABEL
  13228. ><B.BODY>This chapter contains the following sections:</B.BODY
  13229. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>SECTION&rbwtab;PAGE</SBH.SECTION.BLOCK.TABLE.HEAD
  13230. ></ENTRY
  13231. ></RBW-ROW
  13232. ></THEAD
  13233. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28250" TYPE="XREF-TEXTCOPY">Diagrams&rbwtab;2–2</RBW-XREF
  13234. ></SB.SECTION.BLOCK.TABLE
  13235. ></ENTRY
  13236. ></RBW-ROW
  13237. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13564" TYPE="XREF-TEXTCOPY">Phases&rbwtab;2–5</RBW-XREF
  13238. ></SB.SECTION.BLOCK.TABLE
  13239. ></ENTRY
  13240. ></RBW-ROW
  13241. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16410" TYPE="XREF-TEXTCOPY">Browser&rbwtab;2–7</RBW-XREF
  13242. ></SB.SECTION.BLOCK.TABLE
  13243. ></ENTRY
  13244. ></RBW-ROW
  13245. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18741" TYPE="XREF-TEXTCOPY">Class Browser&rbwtab;2–9</RBW-XREF
  13246. ></SB.SECTION.BLOCK.TABLE
  13247. ></ENTRY
  13248. ></RBW-ROW
  13249. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42042" TYPE="XREF-TEXTCOPY">Checking&rbwtab;2–11</RBW-XREF
  13250. ></SB.SECTION.BLOCK.TABLE
  13251. ></ENTRY
  13252. ></RBW-ROW
  13253. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41706" TYPE="XREF-TEXTCOPY">Version and Configuration Management&rbwtab;2–13</RBW-XREF
  13254. ></SB.SECTION.BLOCK.TABLE
  13255. ></ENTRY
  13256. ></RBW-ROW
  13257. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31782" TYPE="XREF-TEXTCOPY">Reports&rbwtab;2–14</RBW-XREF
  13258. ></SB.SECTION.BLOCK.TABLE
  13259. ></ENTRY
  13260. ></RBW-ROW
  13261. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27316" TYPE="XREF-TEXTCOPY">Activating Modules&rbwtab;2–16</RBW-XREF
  13262. ></SB.SECTION.BLOCK.TABLE
  13263. ></ENTRY
  13264. ></RBW-ROW
  13265. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12703" TYPE="XREF-TEXTCOPY">Document Generation&rbwtab;2–17</RBW-XREF
  13266. ></SB.SECTION.BLOCK.TABLE
  13267. ></ENTRY
  13268. ></RBW-ROW
  13269. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29719" TYPE="XREF-TEXTCOPY">Access Control&rbwtab;2–19</RBW-XREF
  13270. ></SB.SECTION.BLOCK.TABLE
  13271. ></ENTRY
  13272. ></RBW-ROW
  13273. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21916" TYPE="XREF-TEXTCOPY">Code Generation&rbwtab;2–21</RBW-XREF
  13274. ></SB.SECTION.BLOCK.TABLE
  13275. ></ENTRY
  13276. ></RBW-ROW
  13277. ></TBODY
  13278. ></TGROUP
  13279. ></RBW-TABLE
  13280. ></LABEL
  13281. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28250"></RBW-ANCHOR
  13282. >Diagrams</S.SECTION.HEAD
  13283. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13284. >Introduction</L.LABEL
  13285. ><B.BODY>ObjectTeam provides a set of diagrams that you can use to describe various aspects of your application. The ability to examine your application from different points of view promotes thorough analysis. </B.BODY
  13286. ><B.BODY>This section describes the default diagrams supported by ObjectTeam. The diagram notation is based on the Unified Modeling Language (UML) for Object&truehy;Oriented Development, developed by Grady Booch, Ivar Jacobson, and James Rumbaugh.</B.BODY
  13287. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  13288. ></RBW-AUTOGEN
  13289. >ObjectTeam also supports optional OMT diagrams. For details, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  13290. ><CX5FX5FTITLE></CX5FX5FTITLE
  13291. >.</N.NOTE
  13292. ></LABEL
  13293. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13294. >Six diagrams</L.LABEL
  13295. ><B.BODY>ObjectTeam supports the following diagrams:</B.BODY
  13296. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Diagram&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  13297. ></ENTRY
  13298. ></RBW-ROW
  13299. ></THEAD
  13300. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30620" TYPE="XREF-TEXTCOPY">Class Diagrams&rbwtab;2–2</RBW-XREF
  13301. ></SB.SECTION.BLOCK.TABLE
  13302. ></ENTRY
  13303. ></RBW-ROW
  13304. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19451" TYPE="XREF-TEXTCOPY">Collaboration Diagrams&rbwtab;2–3</RBW-XREF
  13305. ></SB.SECTION.BLOCK.TABLE
  13306. ></ENTRY
  13307. ></RBW-ROW
  13308. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34406" TYPE="XREF-TEXTCOPY">Sequence Diagrams&rbwtab;2–3</RBW-XREF
  13309. ></SB.SECTION.BLOCK.TABLE
  13310. ></ENTRY
  13311. ></RBW-ROW
  13312. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28936" TYPE="XREF-TEXTCOPY">State Transition Diagrams&rbwtab;2–3</RBW-XREF
  13313. ></SB.SECTION.BLOCK.TABLE
  13314. ></ENTRY
  13315. ></RBW-ROW
  13316. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30643" TYPE="XREF-TEXTCOPY">Use Case Diagrams&rbwtab;2–4</RBW-XREF
  13317. ></SB.SECTION.BLOCK.TABLE
  13318. ></ENTRY
  13319. ></RBW-ROW
  13320. ></TBODY
  13321. ></TGROUP
  13322. ></RBW-TABLE
  13323. ></LABEL
  13324. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13325. ><RBW-ANCHOR ID="30620"></RBW-ANCHOR
  13326. >Class Diagrams</L.LABEL
  13327. ><B.BODY>You use Class Diagrams, such as the one shown below, to describe classes and their relationships, attributes, and operations. These diagrams serve as the source for code generation.</B.BODY
  13328. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00041.unk" origfile="pics/cad_ex.gif" origtype="X" origdoc="../../sources/gs/feat.fm5.mif"></RBW-GRAPHIC
  13329. ></FA.FIGURE.ANCHOR
  13330. ></LABEL
  13331. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13332. ><RBW-ANCHOR ID="19451"></RBW-ANCHOR
  13333. >Collaboration Diagrams</L.LABEL
  13334. ><B.BODY>You use Collaboration Diagrams, such as the one shown below, to model how different elements of a model interact with each other.</B.BODY
  13335. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00042.unk" origfile="pics/cod_ex.gif" origtype="X" origdoc="../../sources/gs/feat.fm5.mif"></RBW-GRAPHIC
  13336. ></FA.FIGURE.ANCHOR
  13337. ></LABEL
  13338. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13339. ><RBW-ANCHOR ID="34406"></RBW-ANCHOR
  13340. >Sequence Diagrams</L.LABEL
  13341. ><B.BODY>You use Sequence Diagrams, such as the one shown below, to model a dialog between an end user and objects in the application. Each Sequence Diagram describes a single real&truehy;world scenario. A complete set of Sequence Diagrams would fully describe the application; however, typically you use Sequence Diagrams to describe only the more complex aspects of the application.</B.BODY
  13342. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00043.unk" origfile="pics/etd_ex.gif" origtype="X" origdoc="../../sources/gs/feat.fm5.mif"></RBW-GRAPHIC
  13343. ></FA.FIGURE.ANCHOR
  13344. ></LABEL
  13345. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13346. ><RBW-ANCHOR ID="28936"></RBW-ANCHOR
  13347. >State Transition Diagrams</L.LABEL
  13348. ><BI.BODY.INTRO>You use State Transition Diagrams, such as the one shown below, to describe the life cycle of a class (or an instance of that class). This diagram displays the messages received by a class and the state changes resulting from those messages. Typically, you use State Transition Diagrams to describe only classes that have complex life cycles.</BI.BODY.INTRO
  13349. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00044.unk" origfile="pics/std_ex.gif" origtype="X" origdoc="../../sources/gs/feat.fm5.mif"></RBW-GRAPHIC
  13350. ></FA.FIGURE.ANCHOR
  13351. ></LABEL
  13352. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13353. ><RBW-ANCHOR ID="30643"></RBW-ANCHOR
  13354. >Use Case Diagrams</L.LABEL
  13355. ><B.BODY>You use Use Case Diagrams, such as the one shown below, to model how an external user of the system (such as an end user or another system) interacts with the system. Each Use Case Diagram contains one or more Use Case objects, which can be further refined in additional Use Case Diagrams. A complete set of Use Case Diagrams describes all the different ways in which the system can be used.</B.BODY
  13356. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00045.unk" origfile="pics/ucd_ex.gif" origtype="X" origdoc="../../sources/gs/feat.fm5.mif"></RBW-GRAPHIC
  13357. ></FA.FIGURE.ANCHOR
  13358. ></LABEL
  13359. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13360. >For more information</L.LABEL
  13361. ><B.BODY><RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3, Tutorial: Basic Operations</RBW-XREF
  13362. >, provides instructions for creating a Sequence Diagram and a Class Diagram. For more information about each diagram, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  13363. ><CX5FX5FTITLE></CX5FX5FTITLE
  13364. >.</B.BODY
  13365. ></LABEL
  13366. ></SECTION
  13367. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="13564"></RBW-ANCHOR
  13368. >Phases</S.SECTION.HEAD
  13369. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13370. >Four phases</L.LABEL
  13371. ><B.BODY>ObjectTeam divides the software development cycle into four phases:</B.BODY
  13372. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13373. ></RBW-AUTOGEN
  13374. ></RBW-MARKER
  13375. ><RBW-PARABODY>Analysis</RBW-PARABODY
  13376. ></LB.LIST.BULLET
  13377. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13378. ></RBW-AUTOGEN
  13379. ></RBW-MARKER
  13380. ><RBW-PARABODY>System Design</RBW-PARABODY
  13381. ></LB.LIST.BULLET
  13382. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13383. ></RBW-AUTOGEN
  13384. ></RBW-MARKER
  13385. ><RBW-PARABODY>Object Design</RBW-PARABODY
  13386. ></LB.LIST.BULLET
  13387. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13388. ></RBW-AUTOGEN
  13389. ></RBW-MARKER
  13390. ><RBW-PARABODY>Implementation</RBW-PARABODY
  13391. ></LB.LIST.BULLET
  13392. ><B.BODY>This section describes each phase.</B.BODY
  13393. ></LABEL
  13394. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13395. >One set of diagrams</L.LABEL
  13396. ><B.BODY>ObjectTeam supports models&truehy;to&truehy;code application development. In ObjectTeam, you model your application using the diagrams described in <RBW-XREF REFID="28250" TYPE="XREF-TEXTCOPY">Diagrams</RBW-XREF
  13397. >. You build the application by moving the diagrams through the four development phases in an iterative cycle, adding more detail at each phase.</B.BODY
  13398. ><B.BODY>Using the same set of diagrams in each development phase has two benefits:</B.BODY
  13399. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13400. ></RBW-AUTOGEN
  13401. ></RBW-MARKER
  13402. ><RBW-PARABODY>The techniques you learn for working with the diagrams can be applied throughout the development cycle.</RBW-PARABODY
  13403. ></LB.LIST.BULLET
  13404. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13405. ></RBW-AUTOGEN
  13406. ></RBW-MARKER
  13407. ><RBW-PARABODY>You do not have to transform the diagrams at the end of each phase; instead, you simply copy them to the next phase. (Copying the diagrams allows you to refine and enhance them for the current phase without losing valuable information from the previous phase.)</RBW-PARABODY
  13408. ></LB.LIST.BULLET
  13409. ></LABEL
  13410. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13411. >Analysis</L.LABEL
  13412. ><B.BODY>The goal of the Analysis phase is to define the application requirements. During this phase, your objective is to ensure that end users and developers have a clear understanding of the application’s functions.</B.BODY
  13413. ><B.BODY>The following diagrams are the most important during the Analysis phase:</B.BODY
  13414. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13415. ></RBW-AUTOGEN
  13416. ></RBW-MARKER
  13417. ><RBW-PARABODY>Use Case Diagrams, Sequence Diagrams, and Collaboration Diagrams describe real&truehy;world scenarios that the application must address.</RBW-PARABODY
  13418. ></LB.LIST.BULLET
  13419. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13420. ></RBW-AUTOGEN
  13421. ></RBW-MARKER
  13422. ><RBW-PARABODY>Class Diagrams describe the classes required to implement an application that addresses the scenarios described by the Sequence Diagrams.</RBW-PARABODY
  13423. ></LB.LIST.BULLET
  13424. ></LABEL
  13425. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13426. >System Design</L.LABEL
  13427. ><B.BODY>The goal of the System Design phase is to define the application architecture, dividing the application into systems to facilitate development. The ideal application architecture maximizes the interaction among classes in each system (<CX5FX5FTERM>cohesion</CX5FX5FTERM
  13428. >) and minimizes the interaction among systems (<CX5FX5FTERM>coupling</CX5FX5FTERM
  13429. >).</B.BODY
  13430. ><B.BODY>During the System Design phase:</B.BODY
  13431. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13432. ></RBW-AUTOGEN
  13433. ></RBW-MARKER
  13434. ><RBW-PARABODY>The Class Diagrams from the Analysis phase describe the communication among classes, which can help you define system boundaries.</RBW-PARABODY
  13435. ></LB.LIST.BULLET
  13436. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13437. ></RBW-AUTOGEN
  13438. ></RBW-MARKER
  13439. ><RBW-PARABODY>For each system, a new Class Diagram describes the classes in that system.</RBW-PARABODY
  13440. ></LB.LIST.BULLET
  13441. ></LABEL
  13442. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13443. >Object Design</L.LABEL
  13444. ><B.BODY>The goal of the Object Design phase is to refine and enhance the Class Diagrams for each system until it is detailed enough for implementation. Most of the activities in this phase depend on your implementation environment (for example, the programming language and database that you plan to use).</B.BODY
  13445. ><B.BODY>If you are using ObjectTeam to generate code, you use this phase to specify the detailed information needed by the code generator. You might also make the contents of existing class libraries available to the code generator by reverse engineer the existing class libraries.</B.BODY
  13446. ></LABEL
  13447. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13448. >Implementation</L.LABEL
  13449. ><B.BODY>The goal of the Implementation phase is to generate and refine the application code.</B.BODY
  13450. ><B.BODY>The Class Diagrams are the source for code generation. Using this information, <DEFAULT-CLFTYPE></DEFAULT-CLFTYPE
  13451. >ObjectTeam generates code to implement classes and their relationships, attributes, and operations.</B.BODY
  13452. ></LABEL
  13453. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13454. >Customizing the phases</L.LABEL
  13455. ><B.BODY>By default, ObjectTeam uses the four phases described in this section. However, you can add or delete phases to meet the needs of your project or development organization.</B.BODY
  13456. ></LABEL
  13457. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13458. >For more information</L.LABEL
  13459. ><B.BODY><RBW-XREF REFID="31837" TYPE="XREF-TEXTCOPY">Chapter 4, Tutorial: Project Management Operations</RBW-XREF
  13460. >, provides instructions for moving diagrams from one phase to the next. For more information about phases, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  13461. ><CX5FX5FTITLE></CX5FX5FTITLE
  13462. >.</B.BODY
  13463. ></LABEL
  13464. ></SECTION
  13465. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16410"></RBW-ANCHOR
  13466. >Browser</S.SECTION.HEAD
  13467. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13468. >Introduction</L.LABEL
  13469. ><B.BODY>ObjectTeam uses the following primary windows:</B.BODY
  13470. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13471. ></RBW-AUTOGEN
  13472. ></RBW-MARKER
  13473. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Browser</CX5FX5FBULLET.EMPHASIS
  13474. > appears when you start ObjectTeam.</RBW-PARABODY
  13475. ></LB.LIST.BULLET
  13476. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13477. ></RBW-AUTOGEN
  13478. ></RBW-MARKER
  13479. ><RBW-PARABODY>You use <CX5FX5FBULLET.EMPHASIS>Diagram editors</CX5FX5FBULLET.EMPHASIS
  13480. > to create and edit diagrams.</RBW-PARABODY
  13481. ></LB.LIST.BULLET
  13482. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13483. ></RBW-AUTOGEN
  13484. ></RBW-MARKER
  13485. ><RBW-PARABODY>You use the <CX5FX5FBULLET.EMPHASIS>Class Browser</CX5FX5FBULLET.EMPHASIS
  13486. > to find and examine classes.</RBW-PARABODY
  13487. ></LB.LIST.BULLET
  13488. ><B.BODY>This section describes the Browser; the next section describes the Class Browser. The diagrams are described in <RBW-XREF REFID="28250" TYPE="XREF-TEXTCOPY">Diagrams</RBW-XREF
  13489. >, and <RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3, Tutorial: Basic Operations</RBW-XREF
  13490. >, provides instructions for working with diagram editors.</B.BODY
  13491. ></LABEL
  13492. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13493. >Purpose of the Browser</L.LABEL
  13494. ><B.BODY>The Browser is the main user interface for ObjectTeam. You use the Browser to do the following:</B.BODY
  13495. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13496. ></RBW-AUTOGEN
  13497. ></RBW-MARKER
  13498. ><RBW-PARABODY>Create and manipulate objects, such as projects, configurations, phases, systems, and diagrams</RBW-PARABODY
  13499. ></LB.LIST.BULLET
  13500. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13501. ></RBW-AUTOGEN
  13502. ></RBW-MARKER
  13503. ><RBW-PARABODY>Run utilities, such as the Check and Reports utilities</RBW-PARABODY
  13504. ></LB.LIST.BULLET
  13505. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13506. ></RBW-AUTOGEN
  13507. ></RBW-MARKER
  13508. ><RBW-PARABODY>Generate project documentation</RBW-PARABODY
  13509. ></LB.LIST.BULLET
  13510. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13511. ></RBW-AUTOGEN
  13512. ></RBW-MARKER
  13513. ><RBW-PARABODY>Generate code</RBW-PARABODY
  13514. ></LB.LIST.BULLET
  13515. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13516. ></RBW-AUTOGEN
  13517. ></RBW-MARKER
  13518. ><RBW-PARABODY>Manage projects using features such as version and configuration management</RBW-PARABODY
  13519. ></LB.LIST.BULLET
  13520. ></LABEL
  13521. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13522. >Browser window</L.LABEL
  13523. ><B.BODY>The Browser window consists of three areas:</B.BODY
  13524. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13525. ></RBW-AUTOGEN
  13526. ></RBW-MARKER
  13527. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Context</CX5FX5FBULLET.EMPHASIS
  13528. > area (top)</RBW-PARABODY
  13529. ></LB.LIST.BULLET
  13530. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13531. ></RBW-AUTOGEN
  13532. ></RBW-MARKER
  13533. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Navigation</CX5FX5FBULLET.EMPHASIS
  13534. > area (left)</RBW-PARABODY
  13535. ></LB.LIST.BULLET
  13536. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13537. ></RBW-AUTOGEN
  13538. ></RBW-MARKER
  13539. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Information</CX5FX5FBULLET.EMPHASIS
  13540. > area (right)</RBW-PARABODY
  13541. ></LB.LIST.BULLET
  13542. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00046.unk" origfile="pics/brwsdefa.gif" origtype="X" origdoc="../../sources/gs/feat.fm5.mif"></RBW-GRAPHIC
  13543. ></FAR.FIGURE.ANCHOR.RIGHT
  13544. ></LABEL
  13545. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13546. >Context area</L.LABEL
  13547. ><B.BODY>The Context area identifies the project, configuration, phase, and system of the active object and view; it is a read&truehy;only area.</B.BODY
  13548. ></LABEL
  13549. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13550. >Navigation area</L.LABEL
  13551. ><B.BODY>The Navigation area displays the hierarchy of corporate data. In the Navigation area, you can do the following:</B.BODY
  13552. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13553. ></RBW-AUTOGEN
  13554. ></RBW-MARKER
  13555. ><RBW-PARABODY>Click on the navigation buttons to fold and unfold the hierarchy. (The buttons appear as plus signs in Windows, as shown in the previous illustration, and triangles in UNIX.)</RBW-PARABODY
  13556. ></LB.LIST.BULLET
  13557. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13558. ></RBW-AUTOGEN
  13559. ></RBW-MARKER
  13560. ><RBW-PARABODY>Click on an object to make it the <CX5FX5FTERM>active</CX5FX5FTERM
  13561. > object, displaying its contents (child objects) in the Information area and updating the Context area.</RBW-PARABODY
  13562. ></LB.LIST.BULLET
  13563. ></LABEL
  13564. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13565. >Information area</L.LABEL
  13566. ><B.BODY>The Information area displays the child objects of the active object. In the Information area, you can do the following:</B.BODY
  13567. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13568. ></RBW-AUTOGEN
  13569. ></RBW-MARKER
  13570. ><RBW-PARABODY>Click on an object to select it. Typically, you select one or more objects before selecting an action from the menu bar.</RBW-PARABODY
  13571. ></LB.LIST.BULLET
  13572. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13573. ></RBW-AUTOGEN
  13574. ></RBW-MARKER
  13575. ><RBW-PARABODY>Double&truehy;click on an object to open it.</RBW-PARABODY
  13576. ></LB.LIST.BULLET
  13577. ></LABEL
  13578. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13579. ><RBW-ANCHOR ID="20297"></RBW-ANCHOR
  13580. >For more information</L.LABEL
  13581. ><B.BODY><RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3, Tutorial: Basic Operations</RBW-XREF
  13582. >, provides instructions for working with the Browser. For more information, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  13583. ><CX5FX5FTITLE></CX5FX5FTITLE
  13584. >.</B.BODY
  13585. ></LABEL
  13586. ></SECTION
  13587. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18741"></RBW-ANCHOR
  13588. >Class Browser</S.SECTION.HEAD
  13589. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13590. >Introduction</L.LABEL
  13591. ><B.BODY>Classes are the primary objects in your model. The Class Browser allows you to quickly access classes and their relationships, attributes, and operations.</B.BODY
  13592. ></LABEL
  13593. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13594. >Class Browser window</L.LABEL
  13595. ><B.BODY>The Class Browser window consists of six areas:</B.BODY
  13596. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00047.unk" origfile="pics/clasbrws.gif" origtype="X" origdoc="../../sources/gs/feat.fm5.mif"></RBW-GRAPHIC
  13597. ></FA.FIGURE.ANCHOR
  13598. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13599. ></RBW-AUTOGEN
  13600. ></RBW-MARKER
  13601. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Context</CX5FX5FBULLET.EMPHASIS
  13602. > area at the top of the window identifies the current project, configuration, phase, and system of the selected class.</RBW-PARABODY
  13603. ></LB.LIST.BULLET
  13604. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13605. ></RBW-AUTOGEN
  13606. ></RBW-MARKER
  13607. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Superclasses</CX5FX5FBULLET.EMPHASIS
  13608. > list box displays the parent classes of the selected class.</RBW-PARABODY
  13609. ></LB.LIST.BULLET
  13610. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13611. ></RBW-AUTOGEN
  13612. ></RBW-MARKER
  13613. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Classes</CX5FX5FBULLET.EMPHASIS
  13614. > list box displays all classes in the current phase or system.</RBW-PARABODY
  13615. ></LB.LIST.BULLET
  13616. ><LT.LIST.TEXT>Double&truehy;click on a class in the Classes list box to populate the other areas of the Class Browser with information about that class. </LT.LIST.TEXT
  13617. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13618. ></RBW-AUTOGEN
  13619. ></RBW-MARKER
  13620. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Subclasses</CX5FX5FBULLET.EMPHASIS
  13621. > list box displays the child classes of the selected class.</RBW-PARABODY
  13622. ></LB.LIST.BULLET
  13623. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13624. ></RBW-AUTOGEN
  13625. ></RBW-MARKER
  13626. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Features</CX5FX5FBULLET.EMPHASIS
  13627. > list box displays the attributes and operations of the selected class.</RBW-PARABODY
  13628. ></LB.LIST.BULLET
  13629. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13630. ></RBW-AUTOGEN
  13631. ></RBW-MARKER
  13632. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>Associations</CX5FX5FBULLET.EMPHASIS
  13633. > list box displays the relationships of the selected class. (Generalizations are not displayed in the Associations list box. Instead, you view inheritance by selecting View | Flat.) You can use this view to navigate between classes.</RBW-PARABODY
  13634. ></LB.LIST.BULLET
  13635. ></LABEL
  13636. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13637. >Search utility</L.LABEL
  13638. ><B.BODY>The Class Browser provides a search utility that allows you to search for a class, attribute, or operation. For example, you can use the search utility to find each class that includes an UpdateCustomer operation. Wildcard searches are supported.</B.BODY
  13639. ></LABEL
  13640. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13641. >Filters</L.LABEL
  13642. ><B.BODY>The Class Browser provides filters that allow you to restrict the information displayed in the Features list box. For example, you can set the filter to display only operations in the Features list box.</B.BODY
  13643. ></LABEL
  13644. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13645. >Accessing the Class Diagram</L.LABEL
  13646. ><B.BODY>From the Class Browser, select Utilities | Edit CD to open any Class Diagram in which the selected class appears.</B.BODY
  13647. ></LABEL
  13648. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13649. >For more information</L.LABEL
  13650. ><B.BODY><RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3, Tutorial: Basic Operations</RBW-XREF
  13651. >, provides instructions for working with the Class Browser. For more information, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  13652. ><CX5FX5FTITLE></CX5FX5FTITLE
  13653. >.</B.BODY
  13654. ></LABEL
  13655. ></SECTION
  13656. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="42042"></RBW-ANCHOR
  13657. >Checking</S.SECTION.HEAD
  13658. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13659. >Three types of checking</L.LABEL
  13660. ><B.BODY>ObjectTeam ensures the integrity of your diagrams by providing the following:</B.BODY
  13661. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13662. ></RBW-AUTOGEN
  13663. ></RBW-MARKER
  13664. ><RBW-PARABODY>Automatic syntax checking during diagram editing</RBW-PARABODY
  13665. ></LB.LIST.BULLET
  13666. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13667. ></RBW-AUTOGEN
  13668. ></RBW-MARKER
  13669. ><RBW-PARABODY>Check options for explicit diagram checking </RBW-PARABODY
  13670. ></LB.LIST.BULLET
  13671. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13672. ></RBW-AUTOGEN
  13673. ></RBW-MARKER
  13674. ><RBW-PARABODY>Syntax checking for code generation</RBW-PARABODY
  13675. ></LB.LIST.BULLET
  13676. ></LABEL
  13677. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13678. >Automatic checking for diagram editing</L.LABEL
  13679. ><B.BODY>Each ObjectTeam diagram has its own set of semantics. The diagram editors provide automatic syntax checking to ensure that the diagrams are syntactically correct for the methodology you are using (e.g., UML). If you attempt to create an invalid object or connection, ObjectTeam displays an error message and terminates the operation.</B.BODY
  13680. ></LABEL
  13681. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13682. >Check options</L.LABEL
  13683. ><B.BODY>After you have completed your diagrams, you can invoke the Check options to ensure that each diagram is complete and correct, and that each diagram accurately reflects the information presented in the other diagrams. ObjectTeam provides the following Check options:</B.BODY
  13684. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13685. ></RBW-AUTOGEN
  13686. ></RBW-MARKER
  13687. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Check Contents</CX5FX5FBULLET.EMPHASIS
  13688. > checks the semantic definition of a particular diagram. Each diagram has its own Check Contents option. For example, the Check Contents option for the Class Diagram includes a rule to check that attributes and roles on the same class all have unique names.</RBW-PARABODY
  13689. ></LB.LIST.BULLET
  13690. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13691. ></RBW-AUTOGEN
  13692. ></RBW-MARKER
  13693. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Check Local Model</CX5FX5FBULLET.EMPHASIS
  13694. > examines one or more selected classes in a system. It ensures that the class as defined in the Class Diagram accurately reflects information about that class as defined in the other diagrams. For example, the Check Local Model option ensures that if a class receives a message in the Sequence Diagram it has an operation defined in the Class Association Diagram to handle that message.</RBW-PARABODY
  13695. ></LB.LIST.BULLET
  13696. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13697. ></RBW-AUTOGEN
  13698. ></RBW-MARKER
  13699. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Check Global Model</CX5FX5FBULLET.EMPHASIS
  13700. > is similar to Check Local Model, however, it examines all classes in a system.</RBW-PARABODY
  13701. ></LB.LIST.BULLET
  13702. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13703. ></RBW-AUTOGEN
  13704. ></RBW-MARKER
  13705. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Check Use Case Model</CX5FX5FBULLET.EMPHASIS
  13706. > checks all Use Case Diagrams.</RBW-PARABODY
  13707. ></LB.LIST.BULLET
  13708. ></LABEL
  13709. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13710. >Syntax checking for code generation</L.LABEL
  13711. ><B.BODY>When you generate code, ObjectTeam automatically invokes the Check Global Model option to check all classes in the system. This helps to prevent errors that might interrupt code generation.</B.BODY
  13712. ></LABEL
  13713. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13714. >Customizing checking</L.LABEL
  13715. ><B.BODY>Like many features of ObjectTeam, you can customize checking by implementing your own rules or by modifying the ObjectTeam rules.</B.BODY
  13716. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  13717. ><CX5FX5FTITLE></CX5FX5FTITLE
  13718. > describes how to customize ObjectTeam. It assumes familiarity with ObjectTeam and proficiency in programming.</B.BODY
  13719. ></LABEL
  13720. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13721. ><RBW-ANCHOR ID="27575"></RBW-ANCHOR
  13722. >For more information</L.LABEL
  13723. ><B.BODY><RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3, Tutorial: Basic Operations</RBW-XREF
  13724. >, provides instructions for checking your diagrams. For more information, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  13725. ><CX5FX5FTITLE></CX5FX5FTITLE
  13726. >.</B.BODY
  13727. ></LABEL
  13728. ></SECTION
  13729. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="41706"></RBW-ANCHOR
  13730. >Version and Configuration Management</S.SECTION.HEAD
  13731. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13732. >Introduction</L.LABEL
  13733. ><B.BODY>ObjectTeam provides version and configuration management facilities. These tools are essential for incremental and team&truehy;oriented development.</B.BODY
  13734. ></LABEL
  13735. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13736. >Object versions</L.LABEL
  13737. ><B.BODY>ObjectTeam allows you to create multiple versions of an object. Each version is in one of three states: working, frozen, or background.</B.BODY
  13738. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13739. ></RBW-AUTOGEN
  13740. ></RBW-MARKER
  13741. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>working</CX5FX5FBULLET.EMPHASIS
  13742. > version is the only version of an object that you can modify. To prevent conflicting changes to an object, ObjectTeam ensures that there is only one working version of each object.</RBW-PARABODY
  13743. ></LB.LIST.BULLET
  13744. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13745. ></RBW-AUTOGEN
  13746. ></RBW-MARKER
  13747. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Frozen</CX5FX5FBULLET.EMPHASIS
  13748. > versions of an object are stored in the repository, but cannot be modified. When you create a new version of an object, the previous version is automatically frozen. </RBW-PARABODY
  13749. ></LB.LIST.BULLET
  13750. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13751. ></RBW-AUTOGEN
  13752. ></RBW-MARKER
  13753. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Background</CX5FX5FBULLET.EMPHASIS
  13754. > versions of an object, which are always frozen, are removed from the repository. They can be returned to the repository as needed.</RBW-PARABODY
  13755. ></LB.LIST.BULLET
  13756. ></LABEL
  13757. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13758. >Configurations</L.LABEL
  13759. ><B.BODY>Configurations allow several developers to work on the same application without interfering with one another. Each configuration identifies the object versions that a particular developer is using. To prevent conflicting changes to an object, ObjectTeam ensures that the working version of an object appears in one configuration only.</B.BODY
  13760. ></LABEL
  13761. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13762. >Example</L.LABEL
  13763. ><B.BODY>The following example illustrates how versions and configurations are used in the development environment.</B.BODY
  13764. ><B.BODY>Jill and Jon are developers working on the same application. Jill creates version 1.0 of the Core system. When the system is stable, she freezes it and creates version 2.0.</B.BODY
  13765. ><B.BODY>Jon adds links in his configuration to version 1.0 of the Core system so that he can develop other systems that interact with it. Because Jon is using frozen version 1.0 of the Core system, Jill can continue her work on version 2.0 of the Core system.</B.BODY
  13766. ></LABEL
  13767. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13768. >For more information</L.LABEL
  13769. ><B.BODY><RBW-XREF REFID="31837" TYPE="XREF-TEXTCOPY">Chapter 4, Tutorial: Project Management Operations</RBW-XREF
  13770. >, provides instructions for creating versions and configurations. For more information, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  13771. ><CX5FX5FTITLE></CX5FX5FTITLE
  13772. >.</B.BODY
  13773. ></LABEL
  13774. ></SECTION
  13775. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="31782"></RBW-ANCHOR
  13776. >Reports</S.SECTION.HEAD
  13777. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13778. >Introduction</L.LABEL
  13779. ><B.BODY>Reports provide current information about your project. They are intended for internal use by team members throughout the development cycle.</B.BODY
  13780. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13781. >Document generation</SL.SUBLABEL
  13782. ><B.BODY>The Document Generator helps you produce documentation for formal presentations. For more information, see <RBW-XREF REFID="12703" TYPE="XREF-TEXTCOPY">Document Generation</RBW-XREF
  13783. >.</B.BODY
  13784. ></LABEL
  13785. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13786. >Standard reports</L.LABEL
  13787. ><B.BODY>ObjectTeam provides a variety of reports, including reports on projects, phases, systems, documents, and classes. For a complete list of reports, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  13788. ><CX5FX5FTITLE></CX5FX5FTITLE
  13789. >.</B.BODY
  13790. ></LABEL
  13791. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13792. >User&truehy;defined reports</L.LABEL
  13793. ><B.BODY>ObjectTeam allows you to define your own reports and add them to the product. For more information, see the <CX5FX5FTITLE><CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  13794. ></CX5FX5FTITLE
  13795. >.</B.BODY
  13796. ></LABEL
  13797. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13798. >Generating a report</L.LABEL
  13799. ><B.BODY>You can generate a report from the Browser, a diagram editor, or the operating&truehy;system command line. ObjectTeam displays the report in a window similar to the one shown below. From this window, you can save the report to a file or print it.</B.BODY
  13800. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00048.unk" origfile="pics/rprtoutp.gif" origtype="X" origdoc="../../sources/gs/feat.fm5.mif"></RBW-GRAPHIC
  13801. ></FAR.FIGURE.ANCHOR.RIGHT
  13802. ></LABEL
  13803. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13804. >For more information</L.LABEL
  13805. ><B.BODY><RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3, Tutorial: Basic Operations</RBW-XREF
  13806. >, provides instructions for generating reports. For more information, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  13807. ><CX5FX5FTITLE></CX5FX5FTITLE
  13808. >.</B.BODY
  13809. ></LABEL
  13810. ></SECTION
  13811. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27316"></RBW-ANCHOR
  13812. >Activating Modules</S.SECTION.HEAD
  13813. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13814. >Introduction</L.LABEL
  13815. ><B.BODY>ObjectTeam consists of a base product and a number of optional features. Each optional feature is implemented in a directory of files called a <CX5FX5FTERM>module</CX5FX5FTERM
  13816. >. To use a feature, you must <CX5FX5FTERM>activate</CX5FX5FTERM
  13817. > the module for tha feature. You must have a license for each active module.</B.BODY
  13818. ></LABEL
  13819. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13820. >Activating modules</L.LABEL
  13821. ><B.BODY>Modules are usually activated on Corporate level for an entire corporate repository. You must have root access to do this. Modules activated on Corporate level are available by default for all users of this repository on every level.</B.BODY
  13822. ><B.BODY>You do not have to activate all modules on Corporate level. You can activate them on any other level in the repository, as long as they are licensed.</B.BODY
  13823. ><B.BODY>For details on how to activate modules, refer to the <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  13824. ><CX5FX5FTITLE></CX5FX5FTITLE
  13825. >.</B.BODY
  13826. ></LABEL
  13827. ></SECTION
  13828. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12703"></RBW-ANCHOR
  13829. >Document Generation</S.SECTION.HEAD
  13830. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13831. >Introduction</L.LABEL
  13832. ><B.BODY>ObjectTeam provides a variety of document generation facilities. The built&truehy;in Document Generator helps you produce high&truehy;quality documentation for formal presentations. Alternatively, the optional integrated packages DocExpress and DocIt allow you to produce documentation complying with various commercial, government and military standards.</B.BODY
  13833. ><B.BODY>This section summarizes the features of ObjectTeam’s built&truehy;in Document Generator. For details on DocExpress and DocIt, refer to their respective documentation.</B.BODY
  13834. ><B.BODY>Document generation is a ObjectTeam module.</B.BODY
  13835. ></LABEL
  13836. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13837. >Document contents</L.LABEL
  13838. ><B.BODY>Each document consists of the following elements:</B.BODY
  13839. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13840. ></RBW-AUTOGEN
  13841. ></RBW-MARKER
  13842. ><RBW-PARABODY>A <CX5FX5FBULLET.EMPHASIS>Document Structure Matrix</CX5FX5FBULLET.EMPHASIS
  13843. > defines the file sections, property sections, and local sections in the document, as well as the order in which they appear.</RBW-PARABODY
  13844. ></LB.LIST.BULLET
  13845. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13846. ></RBW-AUTOGEN
  13847. ></RBW-MARKER
  13848. ><RBW-PARABODY>One or more <CX5FX5FBULLET.EMPHASIS>file sections</CX5FX5FBULLET.EMPHASIS
  13849. > link to diagrams or text files in ObjectTeam.</RBW-PARABODY
  13850. ></LB.LIST.BULLET
  13851. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13852. ></RBW-AUTOGEN
  13853. ></RBW-MARKER
  13854. ><RBW-PARABODY>One or more <CX5FX5FBULLET.EMPHASIS>property sections</CX5FX5FBULLET.EMPHASIS
  13855. > link to file or item properties in ObjectTeam.</RBW-PARABODY
  13856. ></LB.LIST.BULLET
  13857. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13858. ></RBW-AUTOGEN
  13859. ></RBW-MARKER
  13860. ><RBW-PARABODY>One or more <CX5FX5FBULLET.EMPHASIS>local sections</CX5FX5FBULLET.EMPHASIS
  13861. > link to files created outside ObjectTeam (for example, ASCII text files or PostScript files).</RBW-PARABODY
  13862. ></LB.LIST.BULLET
  13863. ></LABEL
  13864. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13865. >How to generate a document</L.LABEL
  13866. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  13867. ></RBW-AUTOGEN
  13868. ></RBW-MARKER
  13869. ><RBW-PARABODY>To generate a document:</RBW-PARABODY
  13870. ></P.PROCEDURE
  13871. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  13872. ></RBW-AUTOGEN
  13873. ></RBW-MARKER
  13874. ><RBW-PARABODY>Choose a desktop publishing system.</RBW-PARABODY
  13875. ></LN.LIST.NUM
  13876. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  13877. ></RBW-AUTOGEN
  13878. ></RBW-MARKER
  13879. ><RBW-PARABODY>Define the structure of the document.</RBW-PARABODY
  13880. ></LN.LIST.NUM
  13881. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  13882. ></RBW-AUTOGEN
  13883. ></RBW-MARKER
  13884. ><RBW-PARABODY>Generate the document.</RBW-PARABODY
  13885. ></LN.LIST.NUM
  13886. ><B.BODY>A description of each of these steps follows.</B.BODY
  13887. ></LABEL
  13888. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13889. >Choosing a desktop publishing system</L.LABEL
  13890. ><B.BODY>The ObjectTeam Document Generator supports the following desktop publishing systems:</B.BODY
  13891. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13892. ></RBW-AUTOGEN
  13893. ></RBW-MARKER
  13894. ><RBW-PARABODY>FrameMaker<CX5FX5FSUPERSCRIPT>®</CX5FX5FSUPERSCRIPT
  13895. > (on UNIX&truehy;based systems)</RBW-PARABODY
  13896. ></LB.LIST.BULLET
  13897. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13898. ></RBW-AUTOGEN
  13899. ></RBW-MARKER
  13900. ><RBW-PARABODY>Interleaf<CX5FX5FSUPERSCRIPT>®</CX5FX5FSUPERSCRIPT
  13901. > (on UNIX&truehy;based systems)</RBW-PARABODY
  13902. ></LB.LIST.BULLET
  13903. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13904. ></RBW-AUTOGEN
  13905. ></RBW-MARKER
  13906. ><RBW-PARABODY>Microsoft Word<CX5FX5FSUPERSCRIPT>®</CX5FX5FSUPERSCRIPT
  13907. > (under Microsoft Windows)</RBW-PARABODY
  13908. ></LB.LIST.BULLET
  13909. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  13910. ></RBW-AUTOGEN
  13911. >If you wish to use another desktop publishing systems, you must customize the Document Generator.</N.NOTE
  13912. ></LABEL
  13913. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13914. >Defining the document structure</L.LABEL
  13915. ><B.BODY>You define the structure of a document by specifying a <CX5FX5FTERM>Document Structure File</CX5FX5FTERM
  13916. > — a specially formatted text file that provides input to the Document Generator. ObjectTeam provides two Document Structure Files for each desktop publishing system: one file for the Analysis, System Design, and Object Design phases, and one file for the Implementation phase. You can use one of ObjectTeam’s Document Structure Files, or create your own.</B.BODY
  13917. ></LABEL
  13918. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13919. >Generating the document</L.LABEL
  13920. ><B.BODY>You select the Document Structure File to generate the complete document. Alternatively, you can select one or more file, property, or local sections to generate only those sections. In either case, ObjectTeam generates documentation files for your desktop publishing system. You can then modify or reformat the document from the publishing system.</B.BODY
  13921. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  13922. ></RBW-AUTOGEN
  13923. >The changes that you make from the publishing system are not preserved if you later regenerate the document.</N.NOTE
  13924. ></LABEL
  13925. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13926. >For more information</L.LABEL
  13927. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  13928. ><CX5FX5FTITLE></CX5FX5FTITLE
  13929. > ObjectTeam’s built&truehy;in document generation in greater detail. It assumes familiarity with ObjectTeam.</B.BODY
  13930. ><B.BODY>For more information on DocExpress and DocIt, refer to their respective documentation. </B.BODY
  13931. ></LABEL
  13932. ></SECTION
  13933. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29719"></RBW-ANCHOR
  13934. >Access Control</S.SECTION.HEAD
  13935. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13936. >Introduction</L.LABEL
  13937. ><B.BODY>In ObjectTeam, you manage security by defining users, roles, and access rules.</B.BODY
  13938. ><B.BODY>Access control is an ObjectTeam module.</B.BODY
  13939. ></LABEL
  13940. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13941. >Users</L.LABEL
  13942. ><B.BODY><CX5FX5FTERM>Users</CX5FX5FTERM
  13943. > are the user names defined in the repository; for example, schmidt or oleary. Generally, each person who uses ObjectTeam is defined as a user.</B.BODY
  13944. ><B.BODY>Users are defined at the Corporate level of the repository.</B.BODY
  13945. ></LABEL
  13946. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13947. >Roles</L.LABEL
  13948. ><B.BODY><CX5FX5FTERM>Roles</CX5FX5FTERM
  13949. > are the job functions defined in the repository. Generally, one role is defined for each user — this role has the same name as the user name. Additional roles then define common job functions, such as analyst or programmer.</B.BODY
  13950. ><B.BODY>Roles are defined at the Corporate level of the repository.</B.BODY
  13951. ></LABEL
  13952. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13953. >Access rules</L.LABEL
  13954. ><B.BODY><CX5FX5FTERM>Access rules</CX5FX5FTERM
  13955. > are defined for each role. For each action on an object (for example, the action destroyAction on a System object), access rules define one of three permissions:</B.BODY
  13956. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13957. ></RBW-AUTOGEN
  13958. ></RBW-MARKER
  13959. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Allowed</CX5FX5FBULLET.EMPHASIS
  13960. > explicitly grants the role permission to perform the action.</RBW-PARABODY
  13961. ></LB.LIST.BULLET
  13962. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13963. ></RBW-AUTOGEN
  13964. ></RBW-MARKER
  13965. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Prohibited</CX5FX5FBULLET.EMPHASIS
  13966. > explicitly denies the role permission to perform the action.</RBW-PARABODY
  13967. ></LB.LIST.BULLET
  13968. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13969. ></RBW-AUTOGEN
  13970. ></RBW-MARKER
  13971. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Undefined</CX5FX5FBULLET.EMPHASIS
  13972. > grants or denies permission based on the permissions for other roles. If another role has Allowed permission, Undefined is the same as Prohibited. If no other role has Allowed permission, Undefined is the same as Allowed.</RBW-PARABODY
  13973. ></LB.LIST.BULLET
  13974. ></LABEL
  13975. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13976. >Role links</L.LABEL
  13977. ><B.BODY>A <CX5FX5FTERM>role link</CX5FX5FTERM
  13978. > between a user and a role indicates that the user has access to that role. The user can activate or deactivate the role during a session. The user’s default role, usually the role that has the same name as the user name, cannot be deactivated.</B.BODY
  13979. ><B.BODY>Role links can be defined at the Corporate or Project level.</B.BODY
  13980. ></LABEL
  13981. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  13982. >Granting and denying access</L.LABEL
  13983. ><BI.BODY.INTRO>When a user attempts to manipulate an object, ObjectTeam allows the action unless one of the following is true:</BI.BODY.INTRO
  13984. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13985. ></RBW-AUTOGEN
  13986. ></RBW-MARKER
  13987. ><RBW-PARABODY>The user has access to one or more roles that explicitly allow the action, but has not activated any of those roles.</RBW-PARABODY
  13988. ></LB.LIST.BULLET
  13989. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13990. ></RBW-AUTOGEN
  13991. ></RBW-MARKER
  13992. ><RBW-PARABODY>The user has access to one or more roles that explicitly prohibit the action and has activated at least one of those roles.</RBW-PARABODY
  13993. ></LB.LIST.BULLET
  13994. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  13995. ></RBW-AUTOGEN
  13996. ></RBW-MARKER
  13997. ><RBW-PARABODY>There is a role that explicitly allows the action, but the user does not have access to that role.</RBW-PARABODY
  13998. ></LB.LIST.BULLET
  13999. ><B.BODY>If a user has activated two roles, one that explicitly allows the action and one that explicitly prohibits the action, ObjectTeam prohibits the action.</B.BODY
  14000. ></LABEL
  14001. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14002. >For more information</L.LABEL
  14003. ><B.BODY><RBW-XREF REFID="31837" TYPE="XREF-TEXTCOPY">Chapter 4, Tutorial: Project Management Operations</RBW-XREF
  14004. >, provides instructions for modifying access to particular objects. For more information, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  14005. ><CX5FX5FTITLE></CX5FX5FTITLE
  14006. >.</B.BODY
  14007. ></LABEL
  14008. ></SECTION
  14009. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21916"></RBW-ANCHOR
  14010. >Code Generation</S.SECTION.HEAD
  14011. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14012. >Modeling and code generation</L.LABEL
  14013. ><B.BODY>Using ObjectTeam, you create a model that describes an application and then generate code from that model. The model does not fully define your application; you must edit the generated code to complete the application. However, to ensure that the model remains viable throughout the development cycle, the code generator preserves your edits when you later regenerate the code.</B.BODY
  14014. ><B.BODY>Each code generator is a ObjectTeam module.</B.BODY
  14015. ></LABEL
  14016. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14017. >Phases and code generation</L.LABEL
  14018. ><B.BODY>In the first two software development phases, Analysis and System Design, you define the requirements and architecture of your application. During these phases, you do not consider the implementation environment. </B.BODY
  14019. ><B.BODY>You address the implementation environment in the final two phases, Object Design and Implementation.</B.BODY
  14020. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14021. ></RBW-AUTOGEN
  14022. ></RBW-MARKER
  14023. ><RBW-PARABODY>In the <CX5FX5FBULLET.EMPHASIS>Object Design</CX5FX5FBULLET.EMPHASIS
  14024. > phase, you complete the Class Diagrams, which are the source for code generation.</RBW-PARABODY
  14025. ></LB.LIST.BULLET
  14026. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14027. ></RBW-AUTOGEN
  14028. ></RBW-MARKER
  14029. ><RBW-PARABODY>In the <CX5FX5FBULLET.EMPHASIS>Implementation</CX5FX5FBULLET.EMPHASIS
  14030. > phase, you generate the code and complete the application. This phase provides facilities for</RBW-PARABODY
  14031. ></LB.LIST.BULLET
  14032. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14033. ></RBW-MARKER
  14034. ><RBW-PARABODY>Generating code</RBW-PARABODY
  14035. ></LB2.LIST.BULLET.2
  14036. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14037. ></RBW-MARKER
  14038. ><RBW-PARABODY>Merging edits to generated code back into your model</RBW-PARABODY
  14039. ></LB2.LIST.BULLET.2
  14040. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14041. ></RBW-MARKER
  14042. ><RBW-PARABODY>Compiling the code</RBW-PARABODY
  14043. ></LB2.LIST.BULLET.2
  14044. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14045. ></RBW-MARKER
  14046. ><RBW-PARABODY>Executing the code</RBW-PARABODY
  14047. ></LB2.LIST.BULLET.2
  14048. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14049. ></RBW-MARKER
  14050. ><RBW-PARABODY>Debugging the code</RBW-PARABODY
  14051. ></LB2.LIST.BULLET.2
  14052. ></LABEL
  14053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14054. >What ObjectTeam generates</L.LABEL
  14055. ><B.BODY>The ObjectTeam code generators generate persistent code, nonpersistent code, and makefiles. (Some code generators only generate nonpersistent code.)</B.BODY
  14056. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14057. ></RBW-AUTOGEN
  14058. ></RBW-MARKER
  14059. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Persistent code</CX5FX5FBULLET.EMPHASIS
  14060. > implements classes that exist beyond a single program execution. Such classes are typically defined in an RDBMS. For example, persistent code might be generated as SQL and ESQLC++ files.</RBW-PARABODY
  14061. ></LB.LIST.BULLET
  14062. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14063. ></RBW-AUTOGEN
  14064. ></RBW-MARKER
  14065. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Nonpersistent code</CX5FX5FBULLET.EMPHASIS
  14066. > implements classes that exist for a single program execution only. For example, nonpersistent code might be generated as H++ and C++ files.</RBW-PARABODY
  14067. ></LB.LIST.BULLET
  14068. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14069. ></RBW-AUTOGEN
  14070. ></RBW-MARKER
  14071. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Makefiles</CX5FX5FBULLET.EMPHASIS
  14072. > are the files that build the application.</RBW-PARABODY
  14073. ></LB.LIST.BULLET
  14074. ></LABEL
  14075. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14076. >Customizing code generation</L.LABEL
  14077. ><B.BODY>You can also customize the code generators. For example, you might define new class attributes and then modify your code generator to generate code based on the values of those attributes.</B.BODY
  14078. ></LABEL
  14079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14080. >For more information</L.LABEL
  14081. ><B.BODY>Each code generator is specific to a programming language. For more information, refer to the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  14082. ><CX5FX5FTITLE></CX5FX5FTITLE
  14083. > for your programming language. It assumes familiarity with ObjectTeam and proficiency in programming.</B.BODY
  14084. ><RBWAUTO-0001></RBWAUTO-0001
  14085. ><!--
  14086.  
  14087.  
  14088.  
  14089.  
  14090.  
  14091. CONVERTING SOURCE FILE ../../sources/gs/tut1.fm5.mif
  14092.  
  14093.  
  14094. --><B.BODY></B.BODY
  14095. ><B.BODY></B.BODY
  14096. ><B.BODY></B.BODY
  14097. ><B.BODY></B.BODY
  14098. ><B.BODY></B.BODY
  14099. ></LABEL
  14100. ></SECTION
  14101. ></CHAPTER
  14102. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  14103. ></RBW-AUTOGEN
  14104. ><RBWAUTO-0003></RBWAUTO-0003
  14105. >Tutorial: <RBW-ANCHOR ID="21870"></RBW-ANCHOR
  14106. >Basic Operations<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  14107. ><RBW-TEXTFLD TYPE="text">Getting Started</RBW-TEXTFLD
  14108. ></RBW-SYSOBJ
  14109. ></C.CHAPTER.HEAD
  14110. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14111. >Introduction</L.LABEL
  14112. ><B.BODY><RBW-XREF REFID="12522" TYPE="XREF-TEXTCOPY">Chapter 2, Features</RBW-XREF
  14113. >, introduced you to the main features of ObjectTeam. In this chapter, you will use some of these features.</B.BODY
  14114. ></LABEL
  14115. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14116. >Scenario</L.LABEL
  14117. ><B.BODY>In this tutorial, you will be an analyst for a company that rents CDs and videos. You will create a project and start to define the classes in the business applications.</B.BODY
  14118. ></LABEL
  14119. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14120. >Takes about one hour</L.LABEL
  14121. ><B.BODY>This tutorial should take you about one hour to complete, but there is no time limit. Feel free to take your time and explore. However, if you want to compare your results with those in this chapter, note the features that you want to investigate and return to them after completing the tutorial.</B.BODY
  14122. ></LABEL
  14123. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14124. >In this chapter</L.LABEL
  14125. ><B.BODY>This chapter contains the following sections:</B.BODY
  14126. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>SECTION&rbwtab;PAGE</SBH.SECTION.BLOCK.TABLE.HEAD
  14127. ></ENTRY
  14128. ></RBW-ROW
  14129. ></THEAD
  14130. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17156" TYPE="XREF-TEXTCOPY">Creating the Project Hierarchy&rbwtab;3–2</RBW-XREF
  14131. ></SB.SECTION.BLOCK.TABLE
  14132. ></ENTRY
  14133. ></RBW-ROW
  14134. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20468" TYPE="XREF-TEXTCOPY">Creating a Class Diagram&rbwtab;3–14</RBW-XREF
  14135. ></SB.SECTION.BLOCK.TABLE
  14136. ></ENTRY
  14137. ></RBW-ROW
  14138. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18468" TYPE="XREF-TEXTCOPY">Creating a Sequence Diagram&rbwtab;3–25</RBW-XREF
  14139. ></SB.SECTION.BLOCK.TABLE
  14140. ></ENTRY
  14141. ></RBW-ROW
  14142. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37001" TYPE="XREF-TEXTCOPY">Using the Class Browser&rbwtab;3–27</RBW-XREF
  14143. ></SB.SECTION.BLOCK.TABLE
  14144. ></ENTRY
  14145. ></RBW-ROW
  14146. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12341" TYPE="XREF-TEXTCOPY">Checking the Diagrams&rbwtab;3–30</RBW-XREF
  14147. ></SB.SECTION.BLOCK.TABLE
  14148. ></ENTRY
  14149. ></RBW-ROW
  14150. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34705" TYPE="XREF-TEXTCOPY">Creating Reports&rbwtab;3–32</RBW-XREF
  14151. ></SB.SECTION.BLOCK.TABLE
  14152. ></ENTRY
  14153. ></RBW-ROW
  14154. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41513" TYPE="XREF-TEXTCOPY">Customizing ObjectTeam&rbwtab;3–34</RBW-XREF
  14155. ></SB.SECTION.BLOCK.TABLE
  14156. ></ENTRY
  14157. ></RBW-ROW
  14158. ></TBODY
  14159. ></TGROUP
  14160. ></RBW-TABLE
  14161. ></LABEL
  14162. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17156"></RBW-ANCHOR
  14163. >Creating the Project Hierarchy</S.SECTION.HEAD
  14164. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14165. >Project hierarchy</L.LABEL
  14166. ><B.BODY>Before you can begin work on a project, you must create the <CX5FX5FTERM>project hierarchy</CX5FX5FTERM
  14167. > in the repository. The project hierarchy consists of the following elements:</B.BODY
  14168. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14169. ></RBW-AUTOGEN
  14170. ></RBW-MARKER
  14171. ><RBW-PARABODY>Project</RBW-PARABODY
  14172. ></LB.LIST.BULLET
  14173. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14174. ></RBW-AUTOGEN
  14175. ></RBW-MARKER
  14176. ><RBW-PARABODY>Configuration</RBW-PARABODY
  14177. ></LB.LIST.BULLET
  14178. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14179. ></RBW-AUTOGEN
  14180. ></RBW-MARKER
  14181. ><RBW-PARABODY>Phase</RBW-PARABODY
  14182. ></LB.LIST.BULLET
  14183. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14184. ></RBW-AUTOGEN
  14185. ></RBW-MARKER
  14186. ><RBW-PARABODY>System</RBW-PARABODY
  14187. ></LB.LIST.BULLET
  14188. ><B.BODY>In this section, you create the project hierarchy. Then, you explore the Browser and the project hierarchy.</B.BODY
  14189. ></LABEL
  14190. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14191. >Start ObjectTeam</L.LABEL
  14192. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14193. ></RBW-AUTOGEN
  14194. ></RBW-MARKER
  14195. ><RBW-PARABODY>To start ObjectTeam:</RBW-PARABODY
  14196. ></P.PROCEDURE
  14197. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14198. ></RBW-AUTOGEN
  14199. ></RBW-MARKER
  14200. ><RBW-PARABODY>In Windows 95 or Windows NT 4.0, select Programs | ObjectTeam | Browser from the Startup menu.</RBW-PARABODY
  14201. ></LB.LIST.BULLET
  14202. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14203. ></RBW-AUTOGEN
  14204. ></RBW-MARKER
  14205. ><RBW-PARABODY>In UNIX, run the <CX5FX5FFILE.NAME>ot</CX5FX5FFILE.NAME
  14206. > script.</RBW-PARABODY
  14207. ></LB.LIST.BULLET
  14208. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14209. ></RBW-AUTOGEN
  14210. >If you cannot start ObjectTeam, refer to the <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  14211. ><CX5FX5FTITLE></CX5FX5FTITLE
  14212. > or contact your system administrator.</N2.NOTE.2
  14213. ><LR.LIST.RESULT>The Browser appears. By default, you are at the Corporate level — the highest level of the repository. The Information area displays a list of all of the projects in the repository.</LR.LIST.RESULT
  14214. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14215. ></RBW-AUTOGEN
  14216. >Various ObjectTeam features are made available through <CX5FX5FTERM>modules</CX5FX5FTERM
  14217. >. Depending on which modules you have configured, your Browser may appear different to the screenshots in this chapter.</N2.NOTE.2
  14218. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00049.unk" origfile="pics/brwsr1st.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  14219. ></FAR.FIGURE.ANCHOR.RIGHT
  14220. ></LABEL
  14221. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14222. >Create a project</L.LABEL
  14223. ><B.BODY>You create projects at the Corporate level. If you are not at the Corporate level, click on the Corporate object in the Navigation area of the Browser. </B.BODY
  14224. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14225. ></RBW-AUTOGEN
  14226. >The Corporate object has the same name as the Cayenne repository; it is always the first object in the Navigation area. In this tutorial, the Corporate object is <CX5FX5FFILE.NAME>repos960415</CX5FX5FFILE.NAME
  14227. >.</N.NOTE
  14228. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14229. ></RBW-AUTOGEN
  14230. ></RBW-MARKER
  14231. ><RBW-PARABODY>To create a project:</RBW-PARABODY
  14232. ></P.PROCEDURE
  14233. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14234. ></RBW-AUTOGEN
  14235. ></RBW-MARKER
  14236. ><RBW-PARABODY>Select File | New | Project.</RBW-PARABODY
  14237. ></LN.LIST.NUM
  14238. ><LR.LIST.RESULT>The New Project window appears.</LR.LIST.RESULT
  14239. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14240. ></RBW-AUTOGEN
  14241. ></RBW-MARKER
  14242. ><RBW-PARABODY>Enter <CX5FX5FTERM>XYZ</CX5FX5FTERM
  14243. >_Project as the name of the project, where <CX5FX5FTERM>XYZ</CX5FX5FTERM
  14244. > are your initials.</RBW-PARABODY
  14245. ></LN.LIST.NUM
  14246. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14247. ></RBW-AUTOGEN
  14248. ></RBW-MARKER
  14249. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  14250. ></LN.LIST.NUM
  14251. ><LR.LIST.RESULT>ObjectTeam adds your project to the repository and updates the Information area.</LR.LIST.RESULT
  14252. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00050.unk" origfile="pics/brwrepol.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  14253. ></FAR.FIGURE.ANCHOR.RIGHT
  14254. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14255. >If you cannot create a project</SL.SUBLABEL
  14256. ><B.BODY>If you do not have permission to create a project in the repository, in the next procedure, use an existing project that you are allowed to modify. In step one, move to the Project level by clicking on the name of the existing project in the Navigation area of the Browser.</B.BODY
  14257. ></LABEL
  14258. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14259. >Create a configuration</L.LABEL
  14260. ><BI.BODY.INTRO>You create configurations at the Project level. </BI.BODY.INTRO
  14261. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14262. ></RBW-AUTOGEN
  14263. ></RBW-MARKER
  14264. ><RBW-PARABODY>To create a configuration in the project you just created:</RBW-PARABODY
  14265. ></P.PROCEDURE
  14266. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14267. ></RBW-AUTOGEN
  14268. ></RBW-MARKER
  14269. ><RBW-PARABODY>Move to the Project level by double&truehy;clicking on the name of your project in the Information area of the Browser.</RBW-PARABODY
  14270. ></LN.LIST.NUM
  14271. ><LR.LIST.RESULT>ObjectTeam updates the Context area and displays the contents of your project in the Information area. In this case, the project is empty.</LR.LIST.RESULT
  14272. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00051.unk" origfile="pics/brwconfl.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  14273. ></FAR.FIGURE.ANCHOR.RIGHT
  14274. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14275. ></RBW-AUTOGEN
  14276. ></RBW-MARKER
  14277. ><RBW-PARABODY>Select File | New | Configuration Version.</RBW-PARABODY
  14278. ></LN.LIST.NUM
  14279. ><LR.LIST.RESULT>The New Config Version window appears.</LR.LIST.RESULT
  14280. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14281. ></RBW-AUTOGEN
  14282. ></RBW-MARKER
  14283. ><RBW-PARABODY>Enter <CX5FX5FTERM>XYZ</CX5FX5FTERM
  14284. >Config as the name of the configuration, where <CX5FX5FTERM>XYZ</CX5FX5FTERM
  14285. > are your initials.</RBW-PARABODY
  14286. ></LN.LIST.NUM
  14287. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  14288. ></RBW-AUTOGEN
  14289. ></RBW-MARKER
  14290. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  14291. ></LN.LIST.NUM
  14292. ><LR.LIST.RESULT>ObjectTeam adds the configuration to your project and updates the Information area.</LR.LIST.RESULT
  14293. ></LABEL
  14294. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14295. >Configuration versions</L.LABEL
  14296. ><B.BODY>ObjectTeam supports versions of configurations. When you create a configuration, you actually create a version (v1) of the configuration. Therefore, the ObjectTeam documentation generally refers to configurations as <CX5FX5FTERM>Configuration versions</CX5FX5FTERM
  14297. >. </B.BODY
  14298. ><B.BODY>ObjectTeam also supports versions of phases and systems, which you will create next, and versions of diagrams, which you will create later in this chapter.</B.BODY
  14299. ></LABEL
  14300. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14301. >Create a phase</L.LABEL
  14302. ><BI.BODY.INTRO>You create phases at the Configuration level.</BI.BODY.INTRO
  14303. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14304. ></RBW-AUTOGEN
  14305. ></RBW-MARKER
  14306. ><RBW-PARABODY>To create a phase:</RBW-PARABODY
  14307. ></P.PROCEDURE
  14308. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14309. ></RBW-AUTOGEN
  14310. ></RBW-MARKER
  14311. ><RBW-PARABODY>Move to the Configuration level by double&truehy;clicking on the name of your Configuration version in the Information area of the Browser.</RBW-PARABODY
  14312. ></LN.LIST.NUM
  14313. ><LR.LIST.RESULT>ObjectTeam updates the Context area and displays the contents of your Configuration version in the Information area. In this case, the configuration is empty.</LR.LIST.RESULT
  14314. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14315. ></RBW-AUTOGEN
  14316. ></RBW-MARKER
  14317. ><RBW-PARABODY>Select File | New | Phase Version.</RBW-PARABODY
  14318. ></LN.LIST.NUM
  14319. ><LR.LIST.RESULT>The New Phase Version window appears.</LR.LIST.RESULT
  14320. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14321. ></RBW-AUTOGEN
  14322. ></RBW-MARKER
  14323. ><RBW-PARABODY>Select Analysis, then select OK.</RBW-PARABODY
  14324. ></LN.LIST.NUM
  14325. ><LR.LIST.RESULT>ObjectTeam adds the phase to your Configuration version and updates the Information area.</LR.LIST.RESULT
  14326. ></LABEL
  14327. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14328. >Create a system</L.LABEL
  14329. ><B.BODY>You create systems at the Phase level.</B.BODY
  14330. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14331. ></RBW-AUTOGEN
  14332. ></RBW-MARKER
  14333. ><RBW-PARABODY>To create a system:</RBW-PARABODY
  14334. ></P.PROCEDURE
  14335. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14336. ></RBW-AUTOGEN
  14337. ></RBW-MARKER
  14338. ><RBW-PARABODY>Move to the Phase level by double&truehy;clicking on the Analysis phase in the Information area of the Browser.</RBW-PARABODY
  14339. ></LN.LIST.NUM
  14340. ><LR.LIST.RESULT>ObjectTeam updates the Context area and displays the contents of your Analysis phase in the Information area. In this case, the phase is empty.</LR.LIST.RESULT
  14341. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14342. ></RBW-AUTOGEN
  14343. ></RBW-MARKER
  14344. ><RBW-PARABODY>Select File | New | System Version.</RBW-PARABODY
  14345. ></LN.LIST.NUM
  14346. ><LR.LIST.RESULT>The New System Version window appears.</LR.LIST.RESULT
  14347. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14348. ></RBW-AUTOGEN
  14349. ></RBW-MARKER
  14350. ><RBW-PARABODY>Enter <CX5FX5FTERM>XYZ</CX5FX5FTERM
  14351. >System as the name of the system, where <CX5FX5FTERM>XYZ</CX5FX5FTERM
  14352. > are your initials.</RBW-PARABODY
  14353. ></LN.LIST.NUM
  14354. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  14355. ></RBW-AUTOGEN
  14356. ></RBW-MARKER
  14357. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  14358. ></LN.LIST.NUM
  14359. ><LR.LIST.RESULT>ObjectTeam adds the System version to your Analysis Phase version and updates the Information area.</LR.LIST.RESULT
  14360. ></LABEL
  14361. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14362. >In the next section</L.LABEL
  14363. ><B.BODY>Now that you have created a project hierarchy, you can explore the hierarchy and learn more about the Browser.</B.BODY
  14364. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>TOPIC&rbwtab;PAGE</SBH.SECTION.BLOCK.TABLE.HEAD
  14365. ></ENTRY
  14366. ></RBW-ROW
  14367. ></THEAD
  14368. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16794" TYPE="XREF-TEXTCOPY">Exploring the Repository Hierarchy&rbwtab;3–8</RBW-XREF
  14369. ></SB.SECTION.BLOCK.TABLE
  14370. ></ENTRY
  14371. ></RBW-ROW
  14372. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13196" TYPE="XREF-TEXTCOPY">Changing the Appearance of the Browser&rbwtab;3–10</RBW-XREF
  14373. ></SB.SECTION.BLOCK.TABLE
  14374. ></ENTRY
  14375. ></RBW-ROW
  14376. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30215" TYPE="XREF-TEXTCOPY">Using Shortcuts&rbwtab;3–12</RBW-XREF
  14377. ></SB.SECTION.BLOCK.TABLE
  14378. ></ENTRY
  14379. ></RBW-ROW
  14380. ></TBODY
  14381. ></TGROUP
  14382. ></RBW-TABLE
  14383. ></LABEL
  14384. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="16794"></RBW-ANCHOR
  14385. >Exploring the Repository Hierarchy</SS.SUBSEC.HEAD
  14386. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14387. >Introduction</L.LABEL
  14388. ><B.BODY>In this section, you use the Browser to explore the repository hierarchy.</B.BODY
  14389. ></LABEL
  14390. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14391. >Fold and unfold the hierarchy</L.LABEL
  14392. ><B.BODY>The Navigation area of the Browser displays the repository hierarchy. You use the fold and unfold symbols to hide and show portions of the hierarchy.</B.BODY
  14393. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14394. ></RBW-AUTOGEN
  14395. ></RBW-MARKER
  14396. ><RBW-PARABODY>To hide and show portions of the hierarchy:</RBW-PARABODY
  14397. ></P.PROCEDURE
  14398. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14399. ></RBW-AUTOGEN
  14400. ></RBW-MARKER
  14401. ><RBW-PARABODY>Hide the contents of the Corporate hierarchy by clicking on the fold symbol to the left of the Corporate object. (In Windows, the fold symbol is a minus sign; in UNIX, it is a down&truehy;pointing triangle.)</RBW-PARABODY
  14402. ></LN.LIST.NUM
  14403. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14404. ></RBW-AUTOGEN
  14405. >You might have to scroll the Navigation area to see the fold symbol to the left of the Corporate object.</N2.NOTE.2
  14406. ><LR.LIST.RESULT>ObjectTeam hides the Corporate hierarchy, changing the fold symbol to an unfold symbol.</LR.LIST.RESULT
  14407. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14408. ></RBW-AUTOGEN
  14409. ></RBW-MARKER
  14410. ><RBW-PARABODY>Display the contents of the Corporate hierarchy by clicking on the unfold symbol to the left of the Corporate object. (In Windows, the unfold symbol is a plus sign; in UNIX, it is a right&truehy;pointing triangle.)</RBW-PARABODY
  14411. ></LN.LIST.NUM
  14412. ><LR.LIST.RESULT>ObjectTeam displays the Corporate hierarchy, changing the unfold symbol to a fold symbol.</LR.LIST.RESULT
  14413. ></LABEL
  14414. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14415. >Open an object</L.LABEL
  14416. ><B.BODY>When you open one of the objects that you have just created, ObjectTeam displays its contents in the Information area, changes the active level of the repository, and identifies the active level in the Context area of the Browser. </B.BODY
  14417. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14418. ></RBW-AUTOGEN
  14419. ></RBW-MARKER
  14420. ><RBW-PARABODY>To open an object, click on it in the Navigation area or double&truehy;click on it in the Information area.</RBW-PARABODY
  14421. ></P.PROCEDURE
  14422. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14423. ></RBW-AUTOGEN
  14424. ></RBW-MARKER
  14425. ><RBW-PARABODY>Open the Corporate object by clicking on it in the Navigation area.</RBW-PARABODY
  14426. ></LN.LIST.NUM
  14427. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14428. ></RBW-AUTOGEN
  14429. >The Corporate object never appears in the Information area.</N2.NOTE.2
  14430. ><LR.LIST.RESULT>Corporate is now the active level of the repository. The Information area displays all of the projects in the Corporate hierarchy.</LR.LIST.RESULT
  14431. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14432. ></RBW-AUTOGEN
  14433. ></RBW-MARKER
  14434. ><RBW-PARABODY>Open your project, noticing the changes to the Context and Information areas.</RBW-PARABODY
  14435. ></LN.LIST.NUM
  14436. ><LR.LIST.RESULT>The project is now the active level of the repository. The project name appears in the Context area and the Information area displays the configurations in the project. </LR.LIST.RESULT
  14437. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14438. ></RBW-AUTOGEN
  14439. ></RBW-MARKER
  14440. ><RBW-PARABODY>Open your Configuration version, then your Analysis Phase version, and, finally, your System version.</RBW-PARABODY
  14441. ></LN.LIST.NUM
  14442. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14443. >Other ways to open objects</SL.SUBLABEL
  14444. ><B.BODY>You can also open an object by:</B.BODY
  14445. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14446. ></RBW-AUTOGEN
  14447. ></RBW-MARKER
  14448. ><RBW-PARABODY>Selecting the object in the Information area and then selecting File | Open.</RBW-PARABODY
  14449. ></LB.LIST.BULLET
  14450. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14451. ></RBW-AUTOGEN
  14452. ></RBW-MARKER
  14453. ><RBW-PARABODY>Selecting the object in the Information area and then clicking the Open icon on the toolbar.</RBW-PARABODY
  14454. ></LB.LIST.BULLET
  14455. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14456. ></RBW-AUTOGEN
  14457. ></RBW-MARKER
  14458. ><RBW-PARABODY>Clicking on the object in the Information area with the right mouse button and selecting Open from the pop&truehy;up context menu.</RBW-PARABODY
  14459. ></LB.LIST.BULLET
  14460. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14461. ></RBW-AUTOGEN
  14462. >You can select an object only in the Information area.</N.NOTE
  14463. ></LABEL
  14464. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14465. >Close an object</L.LABEL
  14466. ><B.BODY>When you close an object, you move up a level in the repository hierarchy.</B.BODY
  14467. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14468. ></RBW-AUTOGEN
  14469. ></RBW-MARKER
  14470. ><RBW-PARABODY>To close the System version, select File | Close.</RBW-PARABODY
  14471. ></P.PROCEDURE
  14472. ><LRS.LIST.RESULT.SINGLE>The phase is now the active level of the repository. The Information area displays the System versions in this phase.</LRS.LIST.RESULT.SINGLE
  14473. ></LABEL
  14474. ></SUBSECTION
  14475. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13196"></RBW-ANCHOR
  14476. >Changing the Appearance of the Browser</SS.SUBSEC.HEAD
  14477. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14478. >Introduction</L.LABEL
  14479. ><B.BODY>In this section, you use various options to change the format, view, layout, and fonts of the Browser.</B.BODY
  14480. ></LABEL
  14481. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14482. >Change the format of the Information area</L.LABEL
  14483. ><B.BODY>The View menu of the Browser provides three format options for the Information area: </B.BODY
  14484. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14485. ></RBW-AUTOGEN
  14486. ></RBW-MARKER
  14487. ><RBW-PARABODY>Large Icons</RBW-PARABODY
  14488. ></LB.LIST.BULLET
  14489. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14490. ></RBW-AUTOGEN
  14491. ></RBW-MARKER
  14492. ><RBW-PARABODY>Small Icons</RBW-PARABODY
  14493. ></LB.LIST.BULLET
  14494. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14495. ></RBW-AUTOGEN
  14496. ></RBW-MARKER
  14497. ><RBW-PARABODY>Details (the default)</RBW-PARABODY
  14498. ></LB.LIST.BULLET
  14499. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14500. ></RBW-AUTOGEN
  14501. ></RBW-MARKER
  14502. ><RBW-PARABODY>To change the format of the Information area:</RBW-PARABODY
  14503. ></P.PROCEDURE
  14504. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14505. ></RBW-AUTOGEN
  14506. ></RBW-MARKER
  14507. ><RBW-PARABODY>Select View.</RBW-PARABODY
  14508. ></LN.LIST.NUM
  14509. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14510. ></RBW-AUTOGEN
  14511. ></RBW-MARKER
  14512. ><RBW-PARABODY>Select the desired view option.</RBW-PARABODY
  14513. ></LN.LIST.NUM
  14514. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  14515. ></RBW-AUTOGEN
  14516. >Try each of the view options.</T2.TIP.2
  14517. ></LABEL
  14518. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14519. >Change the view</L.LABEL
  14520. ><B.BODY>The <CX5FX5FEMPHASIS>active</CX5FX5FEMPHASIS
  14521. > <CX5FX5FTERM>view</CX5FX5FTERM
  14522. > in the Browser determines the types of objects that appear in the Information area. Each level of the repository has a Default view. Many levels also have alternative views, such as Pseudo, Data, and Process.</B.BODY
  14523. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14524. ></RBW-AUTOGEN
  14525. ></RBW-MARKER
  14526. ><RBW-PARABODY>To change the active view:</RBW-PARABODY
  14527. ></P.PROCEDURE
  14528. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14529. ></RBW-AUTOGEN
  14530. ></RBW-MARKER
  14531. ><RBW-PARABODY>Select View | Pseudo.</RBW-PARABODY
  14532. ></LN.LIST.NUM
  14533. ><LR.LIST.RESULT>The pseudo objects appear in the Information area.</LR.LIST.RESULT
  14534. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14535. ></RBW-AUTOGEN
  14536. ></RBW-MARKER
  14537. ><RBW-PARABODY>Select View | Default.</RBW-PARABODY
  14538. ></LN.LIST.NUM
  14539. ><LR.LIST.RESULT>The default objects appear in the Information area.</LR.LIST.RESULT
  14540. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14541. >Pseudo objects</SL.SUBLABEL
  14542. ><B.BODY><CX5FX5FTERM><RBW-IDXTERM TERM1="pseudo-objects" TERM2="in Browser"></RBW-IDXTERM
  14543. >Pseudo objects</CX5FX5FTERM
  14544. > contain project management information; they are used with features such as access control and customization. In the repository hierarchy, their names are enclosed in angle brackets (<>).</B.BODY
  14545. ></LABEL
  14546. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14547. >Change the size of the Navigation and Information areas</L.LABEL
  14548. ><B.BODY>The Navigation and Information areas fill the Browser; however, you can change the size of the areas.</B.BODY
  14549. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14550. ></RBW-AUTOGEN
  14551. ></RBW-MARKER
  14552. ><RBW-PARABODY>To change the size of the Navigation and Information areas:</RBW-PARABODY
  14553. ></P.PROCEDURE
  14554. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14555. ></RBW-AUTOGEN
  14556. ></RBW-MARKER
  14557. ><RBW-PARABODY>Locate the border separating the two areas.</RBW-PARABODY
  14558. ></LN.LIST.NUM
  14559. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14560. ></RBW-MARKER
  14561. ><RBW-PARABODY>If you are using Windows, move the pointer to the border separating the two areas. The pointer changes to a double&truehy;ended arrow.</RBW-PARABODY
  14562. ></LB2.LIST.BULLET.2
  14563. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14564. ></RBW-MARKER
  14565. ><RBW-PARABODY>If you are using UNIX, move the pointer to the small box near the bottom of the border separating the two areas. The pointer changes to a plus sign (+).</RBW-PARABODY
  14566. ></LB2.LIST.BULLET.2
  14567. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14568. ></RBW-AUTOGEN
  14569. ></RBW-MARKER
  14570. ><RBW-PARABODY>Drag the border to the left or right.</RBW-PARABODY
  14571. ></LN.LIST.NUM
  14572. ></LABEL
  14573. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14574. >Change the size of the Browser</L.LABEL
  14575. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14576. ></RBW-AUTOGEN
  14577. ></RBW-MARKER
  14578. ><RBW-PARABODY>To change the size of the Browser, drag the lower right corner of the window.</RBW-PARABODY
  14579. ></P.PROCEDURE
  14580. ></LABEL
  14581. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14582. >Change the font</L.LABEL
  14583. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14584. ></RBW-AUTOGEN
  14585. >Before you change the font, note the font information. You may decide to restore the font after changing it.</N.NOTE
  14586. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14587. ></RBW-AUTOGEN
  14588. ></RBW-MARKER
  14589. ><RBW-PARABODY>To change the font:</RBW-PARABODY
  14590. ></P.PROCEDURE
  14591. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14592. ></RBW-AUTOGEN
  14593. ></RBW-MARKER
  14594. ><RBW-PARABODY>Select Options | Font.</RBW-PARABODY
  14595. ></LN.LIST.NUM
  14596. ><LR.LIST.RESULT>The Font window appears.</LR.LIST.RESULT
  14597. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14598. ></RBW-AUTOGEN
  14599. ></RBW-MARKER
  14600. ><RBW-PARABODY>Select a font, then select OK.</RBW-PARABODY
  14601. ></LN.LIST.NUM
  14602. ></LABEL
  14603. ></SUBSECTION
  14604. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="30215"></RBW-ANCHOR
  14605. >Using Shortcuts</SS.SUBSEC.HEAD
  14606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14607. >Introduction</L.LABEL
  14608. ><B.BODY>This section describes some of the user interface shortcuts you can use in ObjectTeam.</B.BODY
  14609. ></LABEL
  14610. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14611. >Toolbar</L.LABEL
  14612. ><B.BODY>Each ObjectTeam window provides a toolbar for fast access to common menu choices. <RBW-IDXTERM TERM1="toolbar" TERM2="in Browser"></RBW-IDXTERM
  14613. >To see the menu choice associated with an active toolbar icon, move the cursor over the icon. </B.BODY
  14614. ></LABEL
  14615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14616. >Context menus</L.LABEL
  14617. ><B.BODY>The ObjectTeam Browser and diagram editors provide context menus for fast access to common menu choices. </B.BODY
  14618. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14619. ></RBW-AUTOGEN
  14620. >The options that appear in this menu depend on the object you click on.</N.NOTE
  14621. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14622. ></RBW-AUTOGEN
  14623. ></RBW-MARKER
  14624. ><RBW-PARABODY>To display a context menu in the Browser, Right&truehy;click on any object in the Information area. </RBW-PARABODY
  14625. ></P.PROCEDURE
  14626. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14627. ></RBW-AUTOGEN
  14628. ></RBW-MARKER
  14629. ><RBW-PARABODY>To display a context menu in a diagram editor, Right&truehy;click on any object in, or on the background of, the Drawing area. </RBW-PARABODY
  14630. ></P.PROCEDURE
  14631. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  14632. ></RBW-AUTOGEN
  14633. >The right mouse button has an additional function in the diagram editors. If you right&truehy;click while drawing a connector, the last connector vertex you drew is removed. By repeatedly right&truehy;clicking, you can remove a series of vertices. For more information on editing diagrams, see the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  14634. ><CX5FX5FTITLE></CX5FX5FTITLE
  14635. >.</N.NOTE
  14636. ></LABEL
  14637. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14638. >Keyboard shortcuts</L.LABEL
  14639. ><B.BODY>So far, you have used the mouse to select menu items. To select menu items using the keyboard, use the mnemonics or keyboard accelerators.</B.BODY
  14640. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14641. ></RBW-AUTOGEN
  14642. ></RBW-MARKER
  14643. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Mnemonics.</CX5FX5FBULLET.EMPHASIS
  14644. > Each menu item has an underlined character. To invoke a menu item: </RBW-PARABODY
  14645. ></LB.LIST.BULLET
  14646. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14647. ></RBW-MARKER
  14648. ><RBW-PARABODY>In Windows, press Alt and the underlined character. For example, to select File | Close, press Alt + F C.</RBW-PARABODY
  14649. ></LB2.LIST.BULLET.2
  14650. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  14651. ></RBW-MARKER
  14652. ><RBW-PARABODY>In UNIX, press Meta and the underlined character. For example, to select File | Close, press Meta + F C.</RBW-PARABODY
  14653. ></LB2.LIST.BULLET.2
  14654. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14655. ></RBW-AUTOGEN
  14656. ></RBW-MARKER
  14657. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Keyboard accelerators.</CX5FX5FBULLET.EMPHASIS
  14658. > Next to certain menu item, you will see a key combination that you can use to invoke the item. For example, to select File | Close, press Ctrl + C.</RBW-PARABODY
  14659. ></LB.LIST.BULLET
  14660. ></LABEL
  14661. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14662. >Tear&truehy;off menus</L.LABEL
  14663. ><B.BODY>In UNIX, you can <CX5FX5FTERM>tear off</CX5FX5FTERM
  14664. > a menu and move it to a more convenient location.</B.BODY
  14665. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14666. ></RBW-AUTOGEN
  14667. ></RBW-MARKER
  14668. ><RBW-PARABODY>To tear off the Edit menu:</RBW-PARABODY
  14669. ></P.PROCEDURE
  14670. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14671. ></RBW-AUTOGEN
  14672. ></RBW-MARKER
  14673. ><RBW-PARABODY>Click on Edit to display the menu.</RBW-PARABODY
  14674. ></LN.LIST.NUM
  14675. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14676. ></RBW-AUTOGEN
  14677. ></RBW-MARKER
  14678. ><RBW-PARABODY>Select the dotted line at the top of the menu.</RBW-PARABODY
  14679. ></LN.LIST.NUM
  14680. ><LR.LIST.RESULT>The Edit menu appears in a separate window, which you can move to the desired location.</LR.LIST.RESULT
  14681. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14682. ></RBW-AUTOGEN
  14683. ></RBW-MARKER
  14684. ><RBW-PARABODY>To remove the Edit menu window, select Close from its window menu.</RBW-PARABODY
  14685. ></P.PROCEDURE
  14686. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14687. >Alternative</SL.SUBLABEL
  14688. ><B.BODY>Click on the title bar of the Edit menu window to make it active, then press Escape.</B.BODY
  14689. ></LABEL
  14690. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14691. >What to do next</L.LABEL
  14692. ><B.BODY>You have had an opportunity to explore the project hierarchy, the Browser, and some of the user interface shortcuts. If you would like to spend more time working with these features, feel free to do so. In the next section, you will create a Class Diagram.</B.BODY
  14693. ></LABEL
  14694. ></SUBSECTION
  14695. ></SECTION
  14696. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="20468"></RBW-ANCHOR
  14697. >Creating a Class Diagram</S.SECTION.HEAD
  14698. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14699. >Introduction</L.LABEL
  14700. ><B.BODY>Class Diagrams (CDs) define your classes. In this section, you create the following CD:</B.BODY
  14701. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00052.unk" origfile="pics/cad_ex.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  14702. ></FA.FIGURE.ANCHOR
  14703. ></LABEL
  14704. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14705. >Create a CD</L.LABEL
  14706. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14707. ></RBW-AUTOGEN
  14708. ></RBW-MARKER
  14709. ><RBW-PARABODY>To create a CD:</RBW-PARABODY
  14710. ></P.PROCEDURE
  14711. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14712. ></RBW-AUTOGEN
  14713. ></RBW-MARKER
  14714. ><RBW-PARABODY>Open your System version.</RBW-PARABODY
  14715. ></LN.LIST.NUM
  14716. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  14717. ></RBW-AUTOGEN
  14718. >In the Navigation area, click on the name of the system.</T2.TIP.2
  14719. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14720. ></RBW-AUTOGEN
  14721. ></RBW-MARKER
  14722. ><RBW-PARABODY>Select File | New | Class Diagram.</RBW-PARABODY
  14723. ></LN.LIST.NUM
  14724. ><LR.LIST.RESULT>The New CD window appears.</LR.LIST.RESULT
  14725. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14726. ></RBW-AUTOGEN
  14727. ></RBW-MARKER
  14728. ><RBW-PARABODY>Enter <CX5FX5FINPUT>CoreClasses</CX5FX5FINPUT
  14729. > as the name of your CD and select the Edit button.</RBW-PARABODY
  14730. ></LN.LIST.NUM
  14731. ><LR.LIST.RESULT>ObjectTeam creates the CD and opens the CD editor.</LR.LIST.RESULT
  14732. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14733. >Open the CD</SL.SUBLABEL
  14734. ><B.BODY>If you select OK instead of Edit, ObjectTeam creates the CD, but does not open the editor. To open the CD editor, double&truehy;click on the name of the CD in the Information area.</B.BODY
  14735. ></LABEL
  14736. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14737. ><RBW-ANCHOR ID="26398"></RBW-ANCHOR
  14738. >Explore the Control Panel</L.LABEL
  14739. ><B.BODY>The symbols in the Control Panel of each diagram are described in the online Help.</B.BODY
  14740. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14741. ></RBW-AUTOGEN
  14742. ></RBW-MARKER
  14743. ><RBW-PARABODY>To read about the Control Panel symbols:</RBW-PARABODY
  14744. ></P.PROCEDURE
  14745. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14746. ></RBW-AUTOGEN
  14747. ></RBW-MARKER
  14748. ><RBW-PARABODY>If any object is selected in the diagram, click on the background of the diagram to deselect it.</RBW-PARABODY
  14749. ></LN.LIST.NUM
  14750. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14751. ></RBW-AUTOGEN
  14752. ></RBW-MARKER
  14753. ><RBW-PARABODY>Select Help | What’s This.</RBW-PARABODY
  14754. ></LN.LIST.NUM
  14755. ><LR.LIST.RESULT>The Help panel for the CD editor appears.</LR.LIST.RESULT
  14756. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14757. ></RBW-AUTOGEN
  14758. ></RBW-MARKER
  14759. ><RBW-PARABODY>Click on the hypertext link to the Control Panel.</RBW-PARABODY
  14760. ></LN.LIST.NUM
  14761. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  14762. ></RBW-AUTOGEN
  14763. ></RBW-MARKER
  14764. ><RBW-PARABODY>Read about the CD Class and Association symbols.</RBW-PARABODY
  14765. ></LN.LIST.NUM
  14766. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  14767. ></RBW-AUTOGEN
  14768. ></RBW-MARKER
  14769. ><RBW-PARABODY>Close the Help window.</RBW-PARABODY
  14770. ></LN.LIST.NUM
  14771. ></LABEL
  14772. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14773. >In this section</L.LABEL
  14774. ><B.BODY>This section contains the following topics:</B.BODY
  14775. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>TOPIC&rbwtab;PAGE</SBH.SECTION.BLOCK.TABLE.HEAD
  14776. ></ENTRY
  14777. ></RBW-ROW
  14778. ></THEAD
  14779. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16235" TYPE="XREF-TEXTCOPY">Creating Classes&rbwtab;3–16</RBW-XREF
  14780. ></SB.SECTION.BLOCK.TABLE
  14781. ></ENTRY
  14782. ></RBW-ROW
  14783. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22213" TYPE="XREF-TEXTCOPY">Creating an Association&rbwtab;3–19</RBW-XREF
  14784. ></SB.SECTION.BLOCK.TABLE
  14785. ></ENTRY
  14786. ></RBW-ROW
  14787. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34026" TYPE="XREF-TEXTCOPY">Completing the Class Diagram&rbwtab;3–21</RBW-XREF
  14788. ></SB.SECTION.BLOCK.TABLE
  14789. ></ENTRY
  14790. ></RBW-ROW
  14791. ></TBODY
  14792. ></TGROUP
  14793. ></RBW-TABLE
  14794. ></LABEL
  14795. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="16235"></RBW-ANCHOR
  14796. >Creating Classes</SS.SUBSEC.HEAD
  14797. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14798. >Introduction</L.LABEL
  14799. ><B.BODY>In this section, you use the CD editor to create the following four classes: </B.BODY
  14800. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00053.unk" origfile="pics/classes.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  14801. ></FA.FIGURE.ANCHOR
  14802. ><B.BODY>Each class is represented by a symbol that contains three text areas. From top to bottom, the text areas contain:</B.BODY
  14803. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14804. ></RBW-AUTOGEN
  14805. ></RBW-MARKER
  14806. ><RBW-PARABODY>Class name</RBW-PARABODY
  14807. ></LB.LIST.BULLET
  14808. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14809. ></RBW-AUTOGEN
  14810. ></RBW-MARKER
  14811. ><RBW-PARABODY>Attributes</RBW-PARABODY
  14812. ></LB.LIST.BULLET
  14813. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  14814. ></RBW-AUTOGEN
  14815. ></RBW-MARKER
  14816. ><RBW-PARABODY>Operations</RBW-PARABODY
  14817. ></LB.LIST.BULLET
  14818. ></LABEL
  14819. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14820. >Before you begin</L.LABEL
  14821. ><B.BODY>Before you create the classes, ensure that the Initial Fold option is off. (This option is described later in this section.)</B.BODY
  14822. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14823. ></RBW-AUTOGEN
  14824. ></RBW-MARKER
  14825. ><RBW-PARABODY>To ensure that the Initial Fold option is off:</RBW-PARABODY
  14826. ></P.PROCEDURE
  14827. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14828. ></RBW-AUTOGEN
  14829. ></RBW-MARKER
  14830. ><RBW-PARABODY>In the CD editor, select Options.</RBW-PARABODY
  14831. ></LN.LIST.NUM
  14832. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14833. ></RBW-AUTOGEN
  14834. ></RBW-MARKER
  14835. ><RBW-PARABODY>Is there a check mark next to the Initial Fold option?</RBW-PARABODY
  14836. ></LN.LIST.NUM
  14837. ><LT.LIST.TEXT>If <CX5FX5FBULLET.EMPHASIS>yes</CX5FX5FBULLET.EMPHASIS
  14838. >, select Initial Fold to turn off the option.</LT.LIST.TEXT
  14839. ><LT.LIST.TEXT>If <CX5FX5FBULLET.EMPHASIS>no</CX5FX5FBULLET.EMPHASIS
  14840. >, Initial Fold is already off. Click on the background of the CD editor to close the Options menu. </LT.LIST.TEXT
  14841. ></LABEL
  14842. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14843. >Create classes</L.LABEL
  14844. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14845. ></RBW-AUTOGEN
  14846. ></RBW-MARKER
  14847. ><RBW-PARABODY>To create classes in the CD:</RBW-PARABODY
  14848. ></P.PROCEDURE
  14849. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14850. ></RBW-AUTOGEN
  14851. ></RBW-MARKER
  14852. ><RBW-PARABODY>Select the class symbol from the Control Panel.</RBW-PARABODY
  14853. ></LN.LIST.NUM
  14854. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00054.unk" origfile="pics/clasicon.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  14855. ></FA2.FIGURE.ANCHOR.2
  14856. ><LR.LIST.RESULT>ObjectTeam enters Insert mode and the pointer changes to a plus sign (+).</LR.LIST.RESULT
  14857. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14858. ></RBW-AUTOGEN
  14859. ></RBW-MARKER
  14860. ><RBW-PARABODY>Click where you want to place the class in the CD.</RBW-PARABODY
  14861. ></LN.LIST.NUM
  14862. ><LR.LIST.RESULT>ObjectTeam places the class in that location.</LR.LIST.RESULT
  14863. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  14864. ></RBW-AUTOGEN
  14865. >If you create a class accidentally, click the right mouse button to undo the insertion. This is the same as selecting Edit | Undo.</T2.TIP.2
  14866. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14867. ></RBW-AUTOGEN
  14868. ></RBW-MARKER
  14869. ><RBW-PARABODY>Click in the top text area of the class.</RBW-PARABODY
  14870. ></LN.LIST.NUM
  14871. ><LR.LIST.RESULT>An I&truehy;bar appears, indicating that you can enter text.</LR.LIST.RESULT
  14872. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  14873. ></RBW-AUTOGEN
  14874. ></RBW-MARKER
  14875. ><RBW-PARABODY>Enter <CX5FX5FINPUT>Member</CX5FX5FINPUT
  14876. > as the class name. Object names in ObjectTeam are case sensitive.</RBW-PARABODY
  14877. ></LN.LIST.NUM
  14878. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  14879. ></RBW-AUTOGEN
  14880. >If you make a mistake while entering text, you can use the Backspace key to delete the character before the cursor, or use the Delete key to delete the character after the cursor.</T2.TIP.2
  14881. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  14882. ></RBW-AUTOGEN
  14883. ></RBW-MARKER
  14884. ><RBW-PARABODY>Click in the middle text area of the class and enter the attributes <CX5FX5FINPUT>name</CX5FX5FINPUT
  14885. > and <CX5FX5FINPUT>address</CX5FX5FINPUT
  14886. >. Use a carriage return to separate the attribute names.</RBW-PARABODY
  14887. ></LN.LIST.NUM
  14888. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  14889. ></RBW-AUTOGEN
  14890. >Use the Tab key to move between the three areas of a class.</T2.TIP.2
  14891. ><LR.LIST.RESULT>As you enter the attribute names, ObjectTeam displays the following messages in the Message Area: </LR.LIST.RESULT
  14892. ><EM.EXAMPLE.MONO>Searching for Member.cdm</EM.EXAMPLE.MONO
  14893. ><EM.EXAMPLE.MONO>Created Member.cdm</EM.EXAMPLE.MONO
  14894. ><LT.LIST.TEXT>Class Definition Matrices (CDMs) are described following this procedure.</LT.LIST.TEXT
  14895. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  14896. ></RBW-AUTOGEN
  14897. ></RBW-MARKER
  14898. ><RBW-PARABODY>Repeat steps 2 through 5 to create the four classes shown in the CD in the beginning of this section (see <RBW-XREF REFID="16235" TYPE="XREF-TEXTCOPY">Creating Classes</RBW-XREF
  14899. > for the CD).</RBW-PARABODY
  14900. ></LN.LIST.NUM
  14901. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  14902. ></RBW-AUTOGEN
  14903. ></RBW-MARKER
  14904. ><RBW-PARABODY>Select the Select symbol to exit Insert mode.</RBW-PARABODY
  14905. ></LN.LIST.NUM
  14906. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00055.unk" origfile="pics/selicon.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  14907. ></FA2.FIGURE.ANCHOR.2
  14908. ></LABEL
  14909. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14910. >Class Definition Matrix (CDM)</L.LABEL
  14911. ><B.BODY>Each class has a CDM, which has the same name as the class. The CDM stores information about the contents of a class and links to each diagram in which the class appears. The CDM is created automatically when you enter the first attribute or operation for a class. You cannot open and edit a CDM; ObjectTeam updates the CDM for you when you edit a class in a CD editor or the Properties dialog box (as described later in this chapter).</B.BODY
  14912. ></LABEL
  14913. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14914. >Move the classes</L.LABEL
  14915. ><B.BODY>Move the classes so that they are arranged as shown in the beginning of this section (see <RBW-XREF REFID="16235" TYPE="XREF-TEXTCOPY">Creating Classes</RBW-XREF
  14916. >).</B.BODY
  14917. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  14918. ></RBW-AUTOGEN
  14919. >Make sure that you have selected the Select symbol and are in Select mode before continuing.</T.TIP
  14920. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14921. ></RBW-AUTOGEN
  14922. ></RBW-MARKER
  14923. ><RBW-PARABODY>To move a class, select it and then drag it to the new location.</RBW-PARABODY
  14924. ></P.PROCEDURE
  14925. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14926. ></RBW-AUTOGEN
  14927. ></RBW-MARKER
  14928. ><RBW-PARABODY>To move multiple classes:</RBW-PARABODY
  14929. ></P.PROCEDURE
  14930. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14931. ></RBW-AUTOGEN
  14932. ></RBW-MARKER
  14933. ><RBW-PARABODY>Select the classes.</RBW-PARABODY
  14934. ></LN.LIST.NUM
  14935. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  14936. ></RBW-AUTOGEN
  14937. >To select multiple objects, press and hold the Ctrl key while you select each one. (Alternatively, press and hold the left mouse button, then use the mouse to draw a box around the objects that you want to select.)</T2.TIP.2
  14938. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14939. ></RBW-AUTOGEN
  14940. ></RBW-MARKER
  14941. ><RBW-PARABODY>Select Edit  | Move.</RBW-PARABODY
  14942. ></LN.LIST.NUM
  14943. ><LR.LIST.RESULT>The selected objects move to the location of the cursor.</LR.LIST.RESULT
  14944. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  14945. ></RBW-AUTOGEN
  14946. ></RBW-MARKER
  14947. ><RBW-PARABODY>Click where you want to place the objects.</RBW-PARABODY
  14948. ></LN.LIST.NUM
  14949. ></LABEL
  14950. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14951. >Fold and unfold classes</L.LABEL
  14952. ><B.BODY>You can fold and unfold classes. When you fold a class, only its name appears in the CD; this can be useful for large diagrams.</B.BODY
  14953. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14954. ></RBW-AUTOGEN
  14955. ></RBW-MARKER
  14956. ><RBW-PARABODY>To fold one or more classes:</RBW-PARABODY
  14957. ></P.PROCEDURE
  14958. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  14959. ></RBW-AUTOGEN
  14960. ></RBW-MARKER
  14961. ><RBW-PARABODY>Select the classes.</RBW-PARABODY
  14962. ></LN.LIST.NUM
  14963. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  14964. ></RBW-AUTOGEN
  14965. ></RBW-MARKER
  14966. ><RBW-PARABODY>Select Edit | Fold.</RBW-PARABODY
  14967. ></LN.LIST.NUM
  14968. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14969. ></RBW-AUTOGEN
  14970. ></RBW-MARKER
  14971. ><RBW-PARABODY>To unfold the classes, select the classes, then select Edit | Unfold. </RBW-PARABODY
  14972. ></P.PROCEDURE
  14973. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  14974. ></RBW-AUTOGEN
  14975. >If you want your CD to look like the one shown in the tutorial, unfold all the classes.</T.TIP
  14976. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14977. >Initial Fold option</SL.SUBLABEL
  14978. ><B.BODY>The Initial Fold option determines whether new classes appear folded or unfolded. If Initial Fold is on, the classes appear folded.</B.BODY
  14979. ></LABEL
  14980. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14981. >Save the CD</L.LABEL
  14982. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  14983. ></RBW-AUTOGEN
  14984. ></RBW-MARKER
  14985. ><RBW-PARABODY>To save the CD, select File | Save or the Save icon on the toolbar.</RBW-PARABODY
  14986. ></P.PROCEDURE
  14987. ></LABEL
  14988. ></SUBSECTION
  14989. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22213"></RBW-ANCHOR
  14990. >Creating an Association</SS.SUBSEC.HEAD
  14991. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14992. >Introduction</L.LABEL
  14993. ><B.BODY>In this section, you use the CD editor to create an association between the Member and Product classes.</B.BODY
  14994. ></LABEL
  14995. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  14996. >Associations</L.LABEL
  14997. ><B.BODY>An <CX5FX5FTERM>association</CX5FX5FTERM
  14998. > defines the relationship between two classes. The ends of the association represent the multiplicity of the relationship.</B.BODY
  14999. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  15000. ></RBW-AUTOGEN
  15001. ></RBW-MARKER
  15002. ><RBW-PARABODY>A filled circle represents a <CX5FX5FBULLET.EMPHASIS>many</CX5FX5FBULLET.EMPHASIS
  15003. > association.</RBW-PARABODY
  15004. ></LB.LIST.BULLET
  15005. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  15006. ></RBW-AUTOGEN
  15007. ></RBW-MARKER
  15008. ><RBW-PARABODY>A hollow circle represents an <CX5FX5FBULLET.EMPHASIS>optional</CX5FX5FBULLET.EMPHASIS
  15009. > association.</RBW-PARABODY
  15010. ></LB.LIST.BULLET
  15011. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  15012. ></RBW-AUTOGEN
  15013. ></RBW-MARKER
  15014. ><RBW-PARABODY>A line with no circle represents a <CX5FX5FBULLET.EMPHASIS>mandatory</CX5FX5FBULLET.EMPHASIS
  15015. > association.</RBW-PARABODY
  15016. ></LB.LIST.BULLET
  15017. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15018. >Example</SL.SUBLABEL
  15019. ><B.BODY>In the CD that you are creating, the association between Member and Product is a many&truehy;to&truehy;many association. It indicates that each member can rent multiple products, and each product can be rented by multiple members.</B.BODY
  15020. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00056.unk" origfile="pics/cadassoc.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15021. ></FA.FIGURE.ANCHOR
  15022. ></LABEL
  15023. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15024. >Create the association</L.LABEL
  15025. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15026. ></RBW-AUTOGEN
  15027. ></RBW-MARKER
  15028. ><RBW-PARABODY>To create the Rents association:</RBW-PARABODY
  15029. ></P.PROCEDURE
  15030. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15031. ></RBW-AUTOGEN
  15032. ></RBW-MARKER
  15033. ><RBW-PARABODY>Select the Association symbol from the Control Panel.</RBW-PARABODY
  15034. ></LN.LIST.NUM
  15035. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00057.unk" origfile="pics/assoicon.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15036. ></FA2.FIGURE.ANCHOR.2
  15037. ><LR.LIST.RESULT>ObjectTeam enters Insert mode.</LR.LIST.RESULT
  15038. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15039. ></RBW-AUTOGEN
  15040. ></RBW-MARKER
  15041. ><RBW-PARABODY>From the multiplicity selectors at the bottom of the Control Panel, select a multiple association for the left end of the association and a multiple association for the right end. </RBW-PARABODY
  15042. ></LN.LIST.NUM
  15043. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00058.unk" origfile="pics/multicn2.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15044. ></FA2.FIGURE.ANCHOR.2
  15045. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15046. ></RBW-AUTOGEN
  15047. ></RBW-MARKER
  15048. ><RBW-PARABODY>Create the association by clicking on Member and then clicking on Product.</RBW-PARABODY
  15049. ></LN.LIST.NUM
  15050. ><LR.LIST.RESULT>ObjectTeam draws the association between the classes.</LR.LIST.RESULT
  15051. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  15052. ></RBW-AUTOGEN
  15053. >If you click on Member, then click on the background, ObjectTeam creates a vertex. You can create as many vertices as you want before clicking on Product to complete the association. (Vertices are described following this procedure.)</T2.TIP.2
  15054. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  15055. ></RBW-AUTOGEN
  15056. ></RBW-MARKER
  15057. ><RBW-PARABODY>Select the Select symbol to exit Insert mode.</RBW-PARABODY
  15058. ></LN.LIST.NUM
  15059. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00059.unk" origfile="pics/selicon.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15060. ></FA2.FIGURE.ANCHOR.2
  15061. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  15062. ></RBW-AUTOGEN
  15063. ></RBW-MARKER
  15064. ><RBW-PARABODY>Select the association.</RBW-PARABODY
  15065. ></LN.LIST.NUM
  15066. ><LR.LIST.RESULT>An I&truehy;bar appears, indicating that you can enter text.</LR.LIST.RESULT
  15067. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  15068. ></RBW-AUTOGEN
  15069. ></RBW-MARKER
  15070. ><RBW-PARABODY>Enter <CX5FX5FINPUT>rents</CX5FX5FINPUT
  15071. > as the association name.</RBW-PARABODY
  15072. ></LN.LIST.NUM
  15073. ><LT.LIST.TEXT>Optionally, you can add a role name and constraints to each end of the association. Click just below the end of the association to enter a role name. Click just above the end of the association to enter a constraint.</LT.LIST.TEXT
  15074. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  15075. ></RBW-AUTOGEN
  15076. >Use the Tab key to cycle through the text areas on a association.</T2.TIP.2
  15077. ></LABEL
  15078. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15079. >Reroute the association line</L.LABEL
  15080. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15081. ></RBW-AUTOGEN
  15082. ></RBW-MARKER
  15083. ><RBW-PARABODY>To reroute the association line, use the Vertex symbol:</RBW-PARABODY
  15084. ></P.PROCEDURE
  15085. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15086. ></RBW-AUTOGEN
  15087. ></RBW-MARKER
  15088. ><RBW-PARABODY>Select the Vertex symbol from the Control Panel.</RBW-PARABODY
  15089. ></LN.LIST.NUM
  15090. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00060.unk" origfile="pics/vertxicn.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15091. ></FA2.FIGURE.ANCHOR.2
  15092. ><LR.LIST.RESULT>ObjectTeam enters Vertex mode.</LR.LIST.RESULT
  15093. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15094. ></RBW-AUTOGEN
  15095. ></RBW-MARKER
  15096. ><RBW-PARABODY>Select any point on the line and drag it to a new location.</RBW-PARABODY
  15097. ></LN.LIST.NUM
  15098. ><LR.LIST.RESULT>ObjectTeam creates a vertex.</LR.LIST.RESULT
  15099. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15100. ></RBW-AUTOGEN
  15101. ></RBW-MARKER
  15102. ><RBW-PARABODY>Select the Select symbol to exit Vertex mode.</RBW-PARABODY
  15103. ></LN.LIST.NUM
  15104. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15105. ></RBW-AUTOGEN
  15106. ></RBW-MARKER
  15107. ><RBW-PARABODY>To delete a vertex:</RBW-PARABODY
  15108. ></P.PROCEDURE
  15109. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15110. ></RBW-AUTOGEN
  15111. ></RBW-MARKER
  15112. ><RBW-PARABODY>Select the vertex.</RBW-PARABODY
  15113. ></LN.LIST.NUM
  15114. ><LR.LIST.RESULT>A small square of selection points appears over the vertex.</LR.LIST.RESULT
  15115. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15116. ></RBW-AUTOGEN
  15117. ></RBW-MARKER
  15118. ><RBW-PARABODY>Select Edit | Delete.</RBW-PARABODY
  15119. ></LN.LIST.NUM
  15120. ></LABEL
  15121. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15122. >Save the CD</L.LABEL
  15123. ><B.BODY>You might want to save your CD again at this time.</B.BODY
  15124. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15125. ></RBW-AUTOGEN
  15126. ></RBW-MARKER
  15127. ><RBW-PARABODY>To save the CD, select File | Save or the Save icon on the toolbar.</RBW-PARABODY
  15128. ></P.PROCEDURE
  15129. ></LABEL
  15130. ></SUBSECTION
  15131. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34026"></RBW-ANCHOR
  15132. >Completing the Class Diagram</SS.SUBSEC.HEAD
  15133. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15134. >Introduction</L.LABEL
  15135. ><B.BODY>In this section, you complete the CD shown in the section <RBW-XREF REFID="20468" TYPE="XREF-TEXTCOPY">Creating a Class Diagram</RBW-XREF
  15136. > by creating a link attribute and a generalization.</B.BODY
  15137. ></LABEL
  15138. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15139. >Link classes</L.LABEL
  15140. ><B.BODY>A <CX5FX5FTERM>link class</CX5FX5FTERM
  15141. > allows you to specify a class on an association. </B.BODY
  15142. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00061.unk" origfile="pics/cadlink.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15143. ></FA.FIGURE.ANCHOR
  15144. ></LABEL
  15145. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15146. >Create the link class</L.LABEL
  15147. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15148. ></RBW-AUTOGEN
  15149. ></RBW-MARKER
  15150. ><RBW-PARABODY>To create the link class:</RBW-PARABODY
  15151. ></P.PROCEDURE
  15152. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15153. ></RBW-AUTOGEN
  15154. ></RBW-MARKER
  15155. ><RBW-PARABODY>Select the Class symbol from the Control Panel.</RBW-PARABODY
  15156. ></LN.LIST.NUM
  15157. ><LR.LIST.RESULT>ObjectTeam enters Insert mode.</LR.LIST.RESULT
  15158. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15159. ></RBW-AUTOGEN
  15160. ></RBW-MARKER
  15161. ><RBW-PARABODY>Click where you want to place the link class.</RBW-PARABODY
  15162. ></LN.LIST.NUM
  15163. ><LR.LIST.RESULT>ObjectTeam places the link class in that location.</LR.LIST.RESULT
  15164. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15165. ></RBW-AUTOGEN
  15166. ></RBW-MARKER
  15167. ><RBW-PARABODY>Click in the text area of the link class and enter the name <CX5FX5FINPUT>Rents</CX5FX5FINPUT
  15168. > and the attributes <CX5FX5FINPUT>rentalDate</CX5FX5FINPUT
  15169. > and <CX5FX5FINPUT>returnDate</CX5FX5FINPUT
  15170. >. Use a carriage return to separate the attribute names.</RBW-PARABODY
  15171. ></LN.LIST.NUM
  15172. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  15173. ></RBW-AUTOGEN
  15174. ></RBW-MARKER
  15175. ><RBW-PARABODY>Select the Link symbol from the Control Panel.</RBW-PARABODY
  15176. ></LN.LIST.NUM
  15177. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00062.unk" origfile="pics/link.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15178. ></FA2.FIGURE.ANCHOR.2
  15179. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  15180. ></RBW-AUTOGEN
  15181. ></RBW-MARKER
  15182. ><RBW-PARABODY>Click on the Rents association, then click on the link class.</RBW-PARABODY
  15183. ></LN.LIST.NUM
  15184. ><LR.LIST.RESULT>ObjectTeam draws a loop from the association to the link class.</LR.LIST.RESULT
  15185. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  15186. ></RBW-AUTOGEN
  15187. ></RBW-MARKER
  15188. ><RBW-PARABODY>Select the Select symbol to exit Insert mode.</RBW-PARABODY
  15189. ></LN.LIST.NUM
  15190. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00063.unk" origfile="pics/selicon.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15191. ></FA2.FIGURE.ANCHOR.2
  15192. ></LABEL
  15193. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15194. >Class hierarchies and generalizations</L.LABEL
  15195. ><B.BODY>A <CX5FX5FTERM>class hierarchy</CX5FX5FTERM
  15196. > allows you to define the parent&truehy;child relationships between classes. The parent class is the <CX5FX5FTERM>generalization</CX5FX5FTERM
  15197. > of the child classes.</B.BODY
  15198. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15199. >Example</SL.SUBLABEL
  15200. ><B.BODY>In the Class Diagram that you are creating, Product is a generalization of CD (compact disc) and Video. </B.BODY
  15201. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00064.unk" origfile="pics/cadgener.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15202. ></FA.FIGURE.ANCHOR
  15203. ></LABEL
  15204. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15205. >Create the generalization</L.LABEL
  15206. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15207. ></RBW-AUTOGEN
  15208. ></RBW-MARKER
  15209. ><RBW-PARABODY>To create the generalization:</RBW-PARABODY
  15210. ></P.PROCEDURE
  15211. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15212. ></RBW-AUTOGEN
  15213. ></RBW-MARKER
  15214. ><RBW-PARABODY>Select the Generalization symbol from the Control Panel.</RBW-PARABODY
  15215. ></LN.LIST.NUM
  15216. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00065.unk" origfile="pics/generic2.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15217. ></FA2.FIGURE.ANCHOR.2
  15218. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15219. ></RBW-AUTOGEN
  15220. ></RBW-MARKER
  15221. ><RBW-PARABODY>Click on Product, then click on the CD class.</RBW-PARABODY
  15222. ></LN.LIST.NUM
  15223. ><LR.LIST.RESULT>ObjectTeam draws the first part of the generalization.</LR.LIST.RESULT
  15224. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15225. ></RBW-AUTOGEN
  15226. ></RBW-MARKER
  15227. ><RBW-PARABODY>Click on the triangle of the generalization, then click on Video.</RBW-PARABODY
  15228. ></LN.LIST.NUM
  15229. ><LR.LIST.RESULT>ObjectTeam draws the second part of the generalization.</LR.LIST.RESULT
  15230. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  15231. ></RBW-AUTOGEN
  15232. ></RBW-MARKER
  15233. ><RBW-PARABODY>Select the Select symbol to exit Insert mode.</RBW-PARABODY
  15234. ></LN.LIST.NUM
  15235. ></LABEL
  15236. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15237. >Save the CD</L.LABEL
  15238. ><B.BODY>Save the CD, which should look like the CD shown in the section <RBW-XREF REFID="20468" TYPE="XREF-TEXTCOPY">Creating a Class Diagram</RBW-XREF
  15239. >.</B.BODY
  15240. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15241. ></RBW-AUTOGEN
  15242. ></RBW-MARKER
  15243. ><RBW-PARABODY>To save the CD, select File | Save or the Save icon on the toolbar.</RBW-PARABODY
  15244. ></P.PROCEDURE
  15245. ></LABEL
  15246. ></SUBSECTION
  15247. ><SUBSECTION><SS.SUBSEC.HEAD>Specifying Item Properties</SS.SUBSEC.HEAD
  15248. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15249. >Introduction</L.LABEL
  15250. ><B.BODY>Diagrams provide a great deal of information about a model; however, they do not provide all of the details you need for successful code generation. ObjectTeam provides <CX5FX5FTERM>item properties</CX5FX5FTERM
  15251. > to store additional information about many of the diagram objects.</B.BODY
  15252. ></LABEL
  15253. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15254. >Definitions</L.LABEL
  15255. ><B.BODY>A <CX5FX5FTERM>component</CX5FX5FTERM
  15256. > is a graphical element in a diagram. For example, when you create a class in the CD, you create a component.</B.BODY
  15257. ><B.BODY>An <CX5FX5FTERM>item</CX5FX5FTERM
  15258. > is a semantic element in the repository. For example, when you enter the name for a class, you create an item. When you add attributes to the class, you create additional items.</B.BODY
  15259. ><B.BODY>An <CX5FX5FTERM>item property</CX5FX5FTERM
  15260. > is a fact about an item. </B.BODY
  15261. ></LABEL
  15262. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15263. >Item properties</L.LABEL
  15264. ><B.BODY>ObjectTeam defines a number of item properties for each type of item. You use the Edit Properties window to specify values for item properties.</B.BODY
  15265. ></LABEL
  15266. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15267. >Specify item properties for Member </L.LABEL
  15268. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15269. ></RBW-AUTOGEN
  15270. ></RBW-MARKER
  15271. ><RBW-PARABODY>To specify item properties for the Member class:</RBW-PARABODY
  15272. ></P.PROCEDURE
  15273. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15274. ></RBW-AUTOGEN
  15275. ></RBW-MARKER
  15276. ><RBW-PARABODY>In the CD, select the Member class.</RBW-PARABODY
  15277. ></LN.LIST.NUM
  15278. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15279. ></RBW-AUTOGEN
  15280. ></RBW-MARKER
  15281. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  15282. ></LN.LIST.NUM
  15283. ><LR.LIST.RESULT>The Edit Properties window appears.</LR.LIST.RESULT
  15284. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15285. ></RBW-AUTOGEN
  15286. ></RBW-MARKER
  15287. ><RBW-PARABODY>Select Member.</RBW-PARABODY
  15288. ></LN.LIST.NUM
  15289. ><LR.LIST.RESULT>A tab for Free Text, the only item property available for classes, appears in the Edit Properties window.</LR.LIST.RESULT
  15290. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00066.unk" origfile="pics/editprps.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15291. ></FA2.FIGURE.ANCHOR.2
  15292. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  15293. ></RBW-AUTOGEN
  15294. ></RBW-MARKER
  15295. ><RBW-PARABODY>Enter the following text in the Free Text field:</RBW-PARABODY
  15296. ></LN.LIST.NUM
  15297. ><EM.EXAMPLE.MONO>A Member is defined to be any person who has paid a membership fee and has a Video Store card.</EM.EXAMPLE.MONO
  15298. ></LABEL
  15299. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15300. >Specify item properties for Name</L.LABEL
  15301. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15302. ></RBW-AUTOGEN
  15303. ></RBW-MARKER
  15304. ><RBW-PARABODY>To specify item properties for the Name attribute:</RBW-PARABODY
  15305. ></P.PROCEDURE
  15306. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15307. ></RBW-AUTOGEN
  15308. ></RBW-MARKER
  15309. ><RBW-PARABODY>In the Edit Properties window, select Name.</RBW-PARABODY
  15310. ></LN.LIST.NUM
  15311. ><LR.LIST.RESULT>Tabs for the Miscellaneous and Free Text item properties appear in the Edit Properties window.</LR.LIST.RESULT
  15312. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15313. ></RBW-AUTOGEN
  15314. ></RBW-MARKER
  15315. ><RBW-PARABODY>Select the Misc tab to enter Miscellaneous item properties.</RBW-PARABODY
  15316. ></LN.LIST.NUM
  15317. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15318. ></RBW-AUTOGEN
  15319. ></RBW-MARKER
  15320. ><RBW-PARABODY>Select No from the Nullable drop&truehy;down list to indicate that the Name attribute must have a value.</RBW-PARABODY
  15321. ></LN.LIST.NUM
  15322. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15323. >Miscellaneous tab might not appear</SL.SUBLABEL
  15324. ><B.BODY>Some code generators, such as the CORBA IDL code generator, do not use the fields on the Miscellaneous tab. If one of these code generators is active, the Miscellaneous tab does not appear in the Edit Properties window. </B.BODY
  15325. ></LABEL
  15326. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15327. >Save your changes</L.LABEL
  15328. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15329. ></RBW-AUTOGEN
  15330. ></RBW-MARKER
  15331. ><RBW-PARABODY>To save the item properties that you have specified:</RBW-PARABODY
  15332. ></P.PROCEDURE
  15333. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15334. ></RBW-AUTOGEN
  15335. ></RBW-MARKER
  15336. ><RBW-PARABODY>In the Edit Properties window, select OK.</RBW-PARABODY
  15337. ></LN.LIST.NUM
  15338. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15339. ></RBW-AUTOGEN
  15340. ></RBW-MARKER
  15341. ><RBW-PARABODY>In the CD, select File | Save or the Save icon on the toolbar.</RBW-PARABODY
  15342. ></LN.LIST.NUM
  15343. ></LABEL
  15344. ></SUBSECTION
  15345. ></SECTION
  15346. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18468"></RBW-ANCHOR
  15347. >Creating a Sequence Diagram</S.SECTION.HEAD
  15348. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15349. >Introduction</L.LABEL
  15350. ><B.BODY>In this section, you create a Sequence Diagram (SD).</B.BODY
  15351. ></LABEL
  15352. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15353. >All diagram editors are similar</L.LABEL
  15354. ><B.BODY>Each type of diagram has its own editor; however, once you have learned how to use one diagram editor, you should find it easy to use other editors.</B.BODY
  15355. ></LABEL
  15356. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15357. >Create a SD</L.LABEL
  15358. ><B.BODY>You can create an SD from the Browser in the same way you created a CD earlier in this chapter. You can also create a SD by navigating to it from the CD.</B.BODY
  15359. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15360. ></RBW-AUTOGEN
  15361. ></RBW-MARKER
  15362. ><RBW-PARABODY>To create a SD from the CD:</RBW-PARABODY
  15363. ></P.PROCEDURE
  15364. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15365. ></RBW-AUTOGEN
  15366. ></RBW-MARKER
  15367. ><RBW-PARABODY>Double&truehy;click on the Member class.</RBW-PARABODY
  15368. ></LN.LIST.NUM
  15369. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>Alternative:</CX5FX5FBULLET.EMPHASIS
  15370. > Select the Member class, then select File | Open.</LT.LIST.TEXT
  15371. ><LR.LIST.RESULT>The Items window appears.</LR.LIST.RESULT
  15372. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  15373. ></RBW-AUTOGEN
  15374. >If nothing happens, save the CD and try again. If you have changed the current diagram, you must save it before navigating to a new diagram.</N2.NOTE.2
  15375. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15376. ></RBW-AUTOGEN
  15377. ></RBW-MARKER
  15378. ><RBW-PARABODY>Select Member, then select OK.</RBW-PARABODY
  15379. ></LN.LIST.NUM
  15380. ><LR.LIST.RESULT>The Select Operation window appears.</LR.LIST.RESULT
  15381. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15382. ></RBW-AUTOGEN
  15383. ></RBW-MARKER
  15384. ><RBW-PARABODY>Select SD Create Diagram, then select OK.</RBW-PARABODY
  15385. ></LN.LIST.NUM
  15386. ><LR.LIST.RESULT>The SD editor appears.</LR.LIST.RESULT
  15387. ></LABEL
  15388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15389. >Control Panel described in the online Help</L.LABEL
  15390. ><B.BODY>The symbols in the Control Panel are described in the online Help. For instructions on how to access the online Help, see <RBW-XREF REFID="26398" TYPE="XREF-TEXTCOPY">Explore the Control Panel</RBW-XREF
  15391. >.</B.BODY
  15392. ></LABEL
  15393. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15394. >Draw the SD</L.LABEL
  15395. ><B.BODY>Draw the following SD:</B.BODY
  15396. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00067.unk" origfile="pics/etd_ex.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15397. ></FA.FIGURE.ANCHOR
  15398. ></LABEL
  15399. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15400. >Save the SD</L.LABEL
  15401. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15402. ></RBW-AUTOGEN
  15403. ></RBW-MARKER
  15404. ><RBW-PARABODY>To save the SD, select File | Save or the Save icon on the toolbar.</RBW-PARABODY
  15405. ></P.PROCEDURE
  15406. ></LABEL
  15407. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15408. >Close the editors</L.LABEL
  15409. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15410. ></RBW-AUTOGEN
  15411. ></RBW-MARKER
  15412. ><RBW-PARABODY>To close the SD and CD editors, select File | Exit in each window.</RBW-PARABODY
  15413. ></P.PROCEDURE
  15414. ></LABEL
  15415. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15416. >Update the Browser</L.LABEL
  15417. ><B.BODY>Notice that the Browser, which is now the only ObjectTeam window open, does not contain the objects that you have created.</B.BODY
  15418. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15419. ></RBW-AUTOGEN
  15420. ></RBW-MARKER
  15421. ><RBW-PARABODY>To update the Browser, select View | Refresh.</RBW-PARABODY
  15422. ></P.PROCEDURE
  15423. ><LRS.LIST.RESULT.SINGLE>The SD and CDMs that you created are now visible in the Browser.</LRS.LIST.RESULT.SINGLE
  15424. ></LABEL
  15425. ></SECTION
  15426. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37001"></RBW-ANCHOR
  15427. >Using the Class Browser</S.SECTION.HEAD
  15428. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15429. >Introduction</L.LABEL
  15430. ><B.BODY>The Class Browser allows you to examine the classes in the current phase, as well as their associations, attributes, and operations.</B.BODY
  15431. ></LABEL
  15432. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15433. >Open the Class Browser</L.LABEL
  15434. ><B.BODY>If you are not at the System level, click on your System version in the Navigation area of the Browser.</B.BODY
  15435. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15436. ></RBW-AUTOGEN
  15437. ></RBW-MARKER
  15438. ><RBW-PARABODY>To open the Class Browser from the Browser (or from a diagram editor), select Utilities | Class Browser. </RBW-PARABODY
  15439. ></P.PROCEDURE
  15440. ><LRS.LIST.RESULT.SINGLE>The Class Browser appears. The classes in the current phase are displayed in the Classes list box.</LRS.LIST.RESULT.SINGLE
  15441. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00068.unk" origfile="pics/clbrw1st.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15442. ></FA.FIGURE.ANCHOR
  15443. ></LABEL
  15444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15445. >Open a class</L.LABEL
  15446. ><B.BODY>When you open a class in the Class Browser, ObjectTeam displays information about that class.</B.BODY
  15447. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15448. ></RBW-AUTOGEN
  15449. ></RBW-MARKER
  15450. ><RBW-PARABODY>To examine a class, double&truehy;click on its name in the Classes list box:</RBW-PARABODY
  15451. ></P.PROCEDURE
  15452. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15453. ></RBW-AUTOGEN
  15454. ></RBW-MARKER
  15455. ><RBW-PARABODY>Double&truehy;click on Member in the Classes list box.</RBW-PARABODY
  15456. ></LN.LIST.NUM
  15457. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>Alternative:</CX5FX5FBULLET.EMPHASIS
  15458. > Select Member, then select File | Open.</LT.LIST.TEXT
  15459. ><LR.LIST.RESULT>The Features list box displays the class attributes and the Associations list box displays the class associations. If you had defined operations for the class, they would be displayed in the Features list box.</LR.LIST.RESULT
  15460. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15461. ></RBW-AUTOGEN
  15462. ></RBW-MARKER
  15463. ><RBW-PARABODY>Double&truehy;click on Video in the Classes list box.</RBW-PARABODY
  15464. ></LN.LIST.NUM
  15465. ><LR.LIST.RESULT>The Features list box displays the class attributes and the Super Classes list box displays the parent class. </LR.LIST.RESULT
  15466. ></LABEL
  15467. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15468. >Display inherited information</L.LABEL
  15469. ><B.BODY>By default, the Class Browser displays only the attributes, operations, and associations of the selected class. However, subclasses inherit information from their parent classes.</B.BODY
  15470. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15471. ></RBW-AUTOGEN
  15472. ></RBW-MARKER
  15473. ><RBW-PARABODY>To view inherited information, select View | Flat.</RBW-PARABODY
  15474. ></P.PROCEDURE
  15475. ><LRS.LIST.RESULT.SINGLE>The Features and Associations list boxes display all attributes, operations, and features inherited by and defined for the selected class.</LRS.LIST.RESULT.SINGLE
  15476. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15477. ></RBW-AUTOGEN
  15478. ></RBW-MARKER
  15479. ><RBW-PARABODY>To return to the default view, select View | Flat again.</RBW-PARABODY
  15480. ></P.PROCEDURE
  15481. ></LABEL
  15482. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15483. >Find a class</L.LABEL
  15484. ><B.BODY>If you have several classes, it can be time consuming to locate one of them. The Class Browser provides a search utility that enables you to quickly locate a particular class.</B.BODY
  15485. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15486. ></RBW-AUTOGEN
  15487. ></RBW-MARKER
  15488. ><RBW-PARABODY>To search for a class:</RBW-PARABODY
  15489. ></P.PROCEDURE
  15490. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15491. ></RBW-AUTOGEN
  15492. ></RBW-MARKER
  15493. ><RBW-PARABODY>Select File | Find Class.</RBW-PARABODY
  15494. ></LN.LIST.NUM
  15495. ><LR.LIST.RESULT>The Find Class window appears.</LR.LIST.RESULT
  15496. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15497. ></RBW-AUTOGEN
  15498. ></RBW-MARKER
  15499. ><RBW-PARABODY>Enter <CX5FX5FINPUT>Product</CX5FX5FINPUT
  15500. >, then select OK.</RBW-PARABODY
  15501. ></LN.LIST.NUM
  15502. ><LR.LIST.RESULT>ObjectTeam locates the Product class and updates the Class Browser.</LR.LIST.RESULT
  15503. ></LABEL
  15504. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15505. >Find an attribute or operation</L.LABEL
  15506. ><B.BODY>A similar utility enables you to quickly locate a class attribute or operation.</B.BODY
  15507. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15508. ></RBW-AUTOGEN
  15509. ></RBW-MARKER
  15510. ><RBW-PARABODY>To search for an attribute:</RBW-PARABODY
  15511. ></P.PROCEDURE
  15512. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15513. ></RBW-AUTOGEN
  15514. ></RBW-MARKER
  15515. ><RBW-PARABODY>Select File | Find Feature.</RBW-PARABODY
  15516. ></LN.LIST.NUM
  15517. ><LR.LIST.RESULT>The Find Feature window appears.</LR.LIST.RESULT
  15518. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15519. ></RBW-AUTOGEN
  15520. ></RBW-MARKER
  15521. ><RBW-PARABODY>Enter <CX5FX5FINPUT>Name</CX5FX5FINPUT
  15522. > as the feature that you are interested in.</RBW-PARABODY
  15523. ></LN.LIST.NUM
  15524. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15525. ></RBW-AUTOGEN
  15526. ></RBW-MARKER
  15527. ><RBW-PARABODY>If the Attributes check box is not selected, select it.</RBW-PARABODY
  15528. ></LN.LIST.NUM
  15529. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  15530. ></RBW-AUTOGEN
  15531. ></RBW-MARKER
  15532. ><RBW-PARABODY>Select OK. </RBW-PARABODY
  15533. ></LN.LIST.NUM
  15534. ><LR.LIST.RESULT>ObjectTeam locates the Name attribute and updates the Class Browser.</LR.LIST.RESULT
  15535. ></LABEL
  15536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15537. >Open the CD</L.LABEL
  15538. ><B.BODY>You cannot edit classes in the Class Browser. To edit a class, you must open the CD that defines the class.</B.BODY
  15539. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15540. ></RBW-AUTOGEN
  15541. ></RBW-MARKER
  15542. ><RBW-PARABODY>To open the CD for the Video class:</RBW-PARABODY
  15543. ></P.PROCEDURE
  15544. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15545. ></RBW-AUTOGEN
  15546. ></RBW-MARKER
  15547. ><RBW-PARABODY>Double&truehy;click on Video in the Classes list box.</RBW-PARABODY
  15548. ></LN.LIST.NUM
  15549. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15550. ></RBW-AUTOGEN
  15551. ></RBW-MARKER
  15552. ><RBW-PARABODY>Select Utilities  | Edit CD.</RBW-PARABODY
  15553. ></LN.LIST.NUM
  15554. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  15555. ></RBW-AUTOGEN
  15556. >If the class appears in more than one CD, ObjectTeam prompts you to select the CD that you want to open.</N2.NOTE.2
  15557. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15558. ></RBW-AUTOGEN
  15559. ></RBW-MARKER
  15560. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  15561. ></LN.LIST.NUM
  15562. ><LR.LIST.RESULT>The CD appears.</LR.LIST.RESULT
  15563. ></LABEL
  15564. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15565. >Close the CD and the Class Browser</L.LABEL
  15566. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15567. ></RBW-AUTOGEN
  15568. ></RBW-MARKER
  15569. ><RBW-PARABODY>To close the CD and the Class Browser, select File | Exit in each window. </RBW-PARABODY
  15570. ></P.PROCEDURE
  15571. ></LABEL
  15572. ></SECTION
  15573. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12341"></RBW-ANCHOR
  15574. >Checking the Diagrams</S.SECTION.HEAD
  15575. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15576. >Introduction</L.LABEL
  15577. ><B.BODY>When you create or edit a diagram, the diagram editor automatically ensures that the diagram is syntactically correct. Other rules, however, cannot be checked until all diagrams are complete. For example, you need to ensure that all classes referenced in the SDs are defined in the CDs. The Check utility checks these additional rules.</B.BODY
  15578. ></LABEL
  15579. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15580. >Check your diagrams</L.LABEL
  15581. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15582. ></RBW-AUTOGEN
  15583. ></RBW-MARKER
  15584. ><RBW-PARABODY>To check your diagrams:</RBW-PARABODY
  15585. ></P.PROCEDURE
  15586. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15587. ></RBW-AUTOGEN
  15588. ></RBW-MARKER
  15589. ><RBW-PARABODY>Move to the System level, if you are not already there.</RBW-PARABODY
  15590. ></LN.LIST.NUM
  15591. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15592. ></RBW-AUTOGEN
  15593. ></RBW-MARKER
  15594. ><RBW-PARABODY>If any system files are selected, click on the background of the Information area to deselect them.</RBW-PARABODY
  15595. ></LN.LIST.NUM
  15596. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15597. ></RBW-AUTOGEN
  15598. ></RBW-MARKER
  15599. ><RBW-PARABODY>Select Check | Global Model.</RBW-PARABODY
  15600. ></LN.LIST.NUM
  15601. ><LR.LIST.RESULT>ObjectTeam checks the diagrams and displays the results in the ObjectTeam Monitoring window.</LR.LIST.RESULT
  15602. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00069.unk" origfile="pics/chckoutp.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15603. ></FAR.FIGURE.ANCHOR.RIGHT
  15604. ></LABEL
  15605. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15606. >Examine the Monitoring window</L.LABEL
  15607. ><B.BODY>The ObjectTeam Monitoring window displays output from many utilities, such as Check, Reports, code generators, and the Document Generator. You can use the File menu of the Monitoring window to save the output to a file or print it.</B.BODY
  15608. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15609. ></RBW-AUTOGEN
  15610. ></RBW-MARKER
  15611. ><RBW-PARABODY>To close the Monitoring window, select File | Exit.</RBW-PARABODY
  15612. ></P.PROCEDURE
  15613. ></LABEL
  15614. ></SECTION
  15615. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34705"></RBW-ANCHOR
  15616. >Creating Reports</S.SECTION.HEAD
  15617. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15618. >Introduction</L.LABEL
  15619. ><B.BODY>ObjectTeam provides several reports that are useful throughout the development cycle.</B.BODY
  15620. ></LABEL
  15621. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15622. >Generate a report on classes</L.LABEL
  15623. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15624. ></RBW-AUTOGEN
  15625. ></RBW-MARKER
  15626. ><RBW-PARABODY>To generate a report that describes your classes:</RBW-PARABODY
  15627. ></P.PROCEDURE
  15628. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15629. ></RBW-AUTOGEN
  15630. ></RBW-MARKER
  15631. ><RBW-PARABODY>Move to the System level, if you are not already there.</RBW-PARABODY
  15632. ></LN.LIST.NUM
  15633. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15634. ></RBW-AUTOGEN
  15635. ></RBW-MARKER
  15636. ><RBW-PARABODY>If any system files are selected, click on the background of the Information area to deselect them.</RBW-PARABODY
  15637. ></LN.LIST.NUM
  15638. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15639. ></RBW-AUTOGEN
  15640. ></RBW-MARKER
  15641. ><RBW-PARABODY>Select Utilities | Reports | On Classes.</RBW-PARABODY
  15642. ></LN.LIST.NUM
  15643. ><LR.LIST.RESULT>ObjectTeam generates the report and displays it in the ObjectTeam Monitoring window.</LR.LIST.RESULT
  15644. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  15645. ></RBW-AUTOGEN
  15646. >Use the scroll bar to display the beginning of the report.</T2.TIP.2
  15647. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00070.unk" origfile="pics/rprtoutp.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15648. ></FAR.FIGURE.ANCHOR.RIGHT
  15649. ></LABEL
  15650. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15651. >Add a report on generalizations</L.LABEL
  15652. ><B.BODY>By default, ObjectTeam reuses the Monitoring window; that is, if you run a second report, it replaces the first report. You can choose instead to append new information to existing information in the Monitoring window. For example, if you have several reports that you want to print, you can generate all of the reports to the Monitoring window, then print the complete set of reports.</B.BODY
  15653. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15654. ></RBW-AUTOGEN
  15655. ></RBW-MARKER
  15656. ><RBW-PARABODY>To append a Class Generalizations report to the Classes report:</RBW-PARABODY
  15657. ></P.PROCEDURE
  15658. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15659. ></RBW-AUTOGEN
  15660. ></RBW-MARKER
  15661. ><RBW-PARABODY>In the Monitoring window, make sure that Options | Clear Screen option is off and Options | Reuse option is on.</RBW-PARABODY
  15662. ></LN.LIST.NUM
  15663. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  15664. ></RBW-MARKER
  15665. ><RBW-PARABODY>A check mark next to the <CX5FX5FBULLET.EMPHASIS>Clear Screen option</CX5FX5FBULLET.EMPHASIS
  15666. > indicates that ObjectTeam will clear the Monitoring window before writing to it. You do not want ObjectTeam to clear the window.</RBW-PARABODY
  15667. ></LB2.LIST.BULLET.2
  15668. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  15669. ></RBW-MARKER
  15670. ><RBW-PARABODY>A check mark next to the <CX5FX5FBULLET.EMPHASIS>Reuse option</CX5FX5FBULLET.EMPHASIS
  15671. > indicates that ObjectTeam will reuse the Monitoring window rather than opening a second window. You want ObjectTeam to reuse the window.</RBW-PARABODY
  15672. ></LB2.LIST.BULLET.2
  15673. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15674. ></RBW-AUTOGEN
  15675. ></RBW-MARKER
  15676. ><RBW-PARABODY>In the Browser, select Utilities | Reports | On Class Generalizations.</RBW-PARABODY
  15677. ></LN.LIST.NUM
  15678. ><LR.LIST.RESULT>ObjectTeam generates the report and appends it to the Classes report in the Monitoring window.</LR.LIST.RESULT
  15679. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15680. ></RBW-AUTOGEN
  15681. ></RBW-MARKER
  15682. ><RBW-PARABODY>To close the Monitoring window, select File | Exit.</RBW-PARABODY
  15683. ></LN.LIST.NUM
  15684. ></LABEL
  15685. ></SECTION
  15686. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="41513"></RBW-ANCHOR
  15687. >Customizing ObjectTeam</S.SECTION.HEAD
  15688. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15689. >Introduction</L.LABEL
  15690. ><B.BODY>You can customize ObjectTeam in many different ways. In this section, you add a new menu containing a single menu option that runs one of the standard reports. </B.BODY
  15691. ></LABEL
  15692. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15693. >Add a new menu</L.LABEL
  15694. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15695. ></RBW-AUTOGEN
  15696. ></RBW-MARKER
  15697. ><RBW-PARABODY>To add a new menu:</RBW-PARABODY
  15698. ></P.PROCEDURE
  15699. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15700. ></RBW-AUTOGEN
  15701. ></RBW-MARKER
  15702. ><RBW-PARABODY>In the Browser, open the pseudo object <user customization files>.</RBW-PARABODY
  15703. ></LN.LIST.NUM
  15704. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  15705. ></RBW-AUTOGEN
  15706. >This pseudo object is the last entry in the Navigation area. You might need to scroll the Navigation area to locate it.</T2.TIP.2
  15707. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15708. ></RBW-AUTOGEN
  15709. ></RBW-MARKER
  15710. ><RBW-PARABODY>Select File | New | External File.</RBW-PARABODY
  15711. ></LN.LIST.NUM
  15712. ><LR.LIST.RESULT>A dialog box appears, displaying a list of all available user customization file types.</LR.LIST.RESULT
  15713. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15714. ></RBW-AUTOGEN
  15715. ></RBW-MARKER
  15716. ><RBW-PARABODY>Select <CX5FX5FFILE.NAME>desk.mnu</CX5FX5FFILE.NAME
  15717. >, then select the Edit button.</RBW-PARABODY
  15718. ></LN.LIST.NUM
  15719. ><LR.LIST.RESULT>ObjectTeam creates the customization file and opens it in the Menu Customization Editor.</LR.LIST.RESULT
  15720. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00071.unk" origfile="pics/custedtr.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15721. ></FA2.FIGURE.ANCHOR.2
  15722. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  15723. ></RBW-AUTOGEN
  15724. ></T2.TIP.2
  15725. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  15726. ></RBW-MARKER
  15727. ><RBW-PARABODY>If you select OK instead of Edit, open the <CX5FX5FFILE.NAME>desk.mnu</CX5FX5FFILE.NAME
  15728. > file by double&truehy;clicking on it in the Information area.</RBW-PARABODY
  15729. ></LB2.LIST.BULLET.2
  15730. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  15731. ></RBW-MARKER
  15732. ><RBW-PARABODY>If <CX5FX5FBULLET.EMPHASIS>desk.mnu</CX5FX5FBULLET.EMPHASIS
  15733. > does not appear in the dialog box, a <CX5FX5FFILE.NAME>desk.mnu</CX5FX5FFILE.NAME
  15734. > customization file already exists. Open the <CX5FX5FFILE.NAME>desk.mnu</CX5FX5FFILE.NAME
  15735. > file by double&truehy;clicking on it in the Information area.</RBW-PARABODY
  15736. ></LB2.LIST.BULLET.2
  15737. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  15738. ></RBW-AUTOGEN
  15739. ></RBW-MARKER
  15740. ><RBW-PARABODY>Select Edit | New | MenuBarButton.</RBW-PARABODY
  15741. ></LN.LIST.NUM
  15742. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  15743. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  15744. ></RBW-AUTOGEN
  15745. ></RBW-MARKER
  15746. ><RBW-PARABODY>Enter <CX5FX5FINPUT>My Reports</CX5FX5FINPUT
  15747. >, then select OK.</RBW-PARABODY
  15748. ></LN.LIST.NUM
  15749. ><LR.LIST.RESULT>ObjectTeam updates the editor window, adding <CX5FX5FOBJECT.NAME>My Reports</CX5FX5FOBJECT.NAME
  15750. > to menu options on the menu bar.</LR.LIST.RESULT
  15751. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  15752. ></RBW-AUTOGEN
  15753. ></RBW-MARKER
  15754. ><RBW-PARABODY>Select File | Save to save the customization file.</RBW-PARABODY
  15755. ></LN.LIST.NUM
  15756. ></LABEL
  15757. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15758. >Add a new menu option</L.LABEL
  15759. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15760. ></RBW-AUTOGEN
  15761. ></RBW-MARKER
  15762. ><RBW-PARABODY>To add a new menu option:</RBW-PARABODY
  15763. ></P.PROCEDURE
  15764. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15765. ></RBW-AUTOGEN
  15766. ></RBW-MARKER
  15767. ><RBW-PARABODY>In the Menu Customization Editor, select Edit | New | PushButton.</RBW-PARABODY
  15768. ></LN.LIST.NUM
  15769. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  15770. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15771. ></RBW-AUTOGEN
  15772. ></RBW-MARKER
  15773. ><RBW-PARABODY>Select My Reports from the Parent drop&truehy;down list, enter <CX5FX5FINPUT>Report On...</CX5FX5FINPUT
  15774. > in the name field, and select the Edit button.</RBW-PARABODY
  15775. ></LN.LIST.NUM
  15776. ><LR.LIST.RESULT>The Editor notebook appears.</LR.LIST.RESULT
  15777. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  15778. ></RBW-AUTOGEN
  15779. >If you select OK instead of Edit, display the menu items for <CX5FX5FOBJECT.NAME>My Reports</CX5FX5FOBJECT.NAME
  15780. > by clicking on the fold symbol to its left. The <CX5FX5FOBJECT.NAME>Report On...</CX5FX5FOBJECT.NAME
  15781. > item appears. Double&truehy;click on it to open the Editor notebook.</T2.TIP.2
  15782. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15783. ></RBW-AUTOGEN
  15784. ></RBW-MARKER
  15785. ><RBW-PARABODY>In the Storage page, make sure that all check boxes in the Visible field are selected, as shown in the following illustration. This ensures that the menu item is visible on all levels.</RBW-PARABODY
  15786. ></LN.LIST.NUM
  15787. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00072.unk" origfile="pics/custstor.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15788. ></FA2.FIGURE.ANCHOR.2
  15789. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  15790. ></RBW-AUTOGEN
  15791. ></RBW-MARKER
  15792. ><RBW-PARABODY>In the Interface page, enter <CX5FX5FINPUT>Run standard report</CX5FX5FINPUT
  15793. > in the Hint Text field, as shown in the following illustration.</RBW-PARABODY
  15794. ></LN.LIST.NUM
  15795. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00073.unk" origfile="pics/custintf.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15796. ></FA2.FIGURE.ANCHOR.2
  15797. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  15798. ></RBW-AUTOGEN
  15799. ></RBW-MARKER
  15800. ><RBW-PARABODY>In the Command page:</RBW-PARABODY
  15801. ></LN.LIST.NUM
  15802. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  15803. ></RBW-MARKER
  15804. ><RBW-PARABODY>Enter the following in the Command field:</RBW-PARABODY
  15805. ></LB2.LIST.BULLET.2
  15806. ><EWM.EXAMPLEW.MONO>otsh &truehy;f <CX5FX5FTERM>M4_home</CX5FX5FTERM
  15807. >\reports\startreport.tcl &truehy;&truehy; $OPTIONS</EWM.EXAMPLEW.MONO
  15808. ><LT2.LIST.TEXT.2>where <CX5FX5FTERM>M4_home</CX5FX5FTERM
  15809. > is the full pathname of your ObjectTeam installation; for example, <CX5FX5FFILE.NAME>c:\Cayenne</CX5FX5FFILE.NAME
  15810. ><CX5FX5FFILE.NAME>\ObjectTeam</CX5FX5FFILE.NAME
  15811. ><CX5FX5FFILE.NAME></CX5FX5FFILE.NAME
  15812. >. (If you do not know the full pathname of your installation, ask your ObjectTeam administrator.)</LT2.LIST.TEXT.2
  15813. ><T3.TIP.3><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  15814. ></RBW-AUTOGEN
  15815. >If you are using UNIX, be sure to use forward slashes (/) instead of backslashes (\).</T3.TIP.3
  15816. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  15817. ></RBW-MARKER
  15818. ><RBW-PARABODY>Select the External Output Only radio button.</RBW-PARABODY
  15819. ></LB2.LIST.BULLET.2
  15820. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  15821. ></RBW-MARKER
  15822. ><RBW-PARABODY>Select the Ask for Options check box.</RBW-PARABODY
  15823. ></LB2.LIST.BULLET.2
  15824. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  15825. ></RBW-MARKER
  15826. ><RBW-PARABODY>Select the Write Message to Message Area check box and, in the Message field, enter <CX5FX5FINPUT>Running one of the standard reports</CX5FX5FINPUT
  15827. >.</RBW-PARABODY
  15828. ></LB2.LIST.BULLET.2
  15829. ><LR.LIST.RESULT>The Command page should now look as follows:</LR.LIST.RESULT
  15830. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00074.unk" origfile="pics/custcomm.gif" origtype="X" origdoc="../../sources/gs/tut1.fm5.mif"></RBW-GRAPHIC
  15831. ></FA2.FIGURE.ANCHOR.2
  15832. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  15833. ></RBW-AUTOGEN
  15834. ></RBW-MARKER
  15835. ><RBW-PARABODY>Select OK to return to the Menu Customization Editor.</RBW-PARABODY
  15836. ></LN.LIST.NUM
  15837. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  15838. ></RBW-AUTOGEN
  15839. ></RBW-MARKER
  15840. ><RBW-PARABODY>Select File | Save to save the customization file.</RBW-PARABODY
  15841. ></LN.LIST.NUM
  15842. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  15843. ></RBW-AUTOGEN
  15844. ></RBW-MARKER
  15845. ><RBW-PARABODY>Select File | Exit to exit from the Menu Customization Editor.</RBW-PARABODY
  15846. ></LN.LIST.NUM
  15847. ></LABEL
  15848. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15849. >Start a new Browser</L.LABEL
  15850. ><BI.BODY.INTRO>You have now created a customization file that adds a new menu item to the Browser. However, ObjectTeam only reads the customization files when you start the Browser. Therefore, to use your new menu item, you must start a new Browser.</BI.BODY.INTRO
  15851. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15852. ></RBW-AUTOGEN
  15853. ></RBW-MARKER
  15854. ><RBW-PARABODY>To start up a new Browser, select Utilities | Clone.</RBW-PARABODY
  15855. ></P.PROCEDURE
  15856. ><LRS.LIST.RESULT.SINGLE>ObjectTeam starts a new Browser, reading your User Customization file and adding the new menu item to the menu bar.</LRS.LIST.RESULT.SINGLE
  15857. ></LABEL
  15858. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15859. >How to use your new menu item</L.LABEL
  15860. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15861. ></RBW-AUTOGEN
  15862. ></RBW-MARKER
  15863. ><RBW-PARABODY>To use your new menu item:</RBW-PARABODY
  15864. ></P.PROCEDURE
  15865. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  15866. ></RBW-AUTOGEN
  15867. ></RBW-MARKER
  15868. ><RBW-PARABODY>Move to System level.</RBW-PARABODY
  15869. ></LN.LIST.NUM
  15870. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  15871. ></RBW-AUTOGEN
  15872. >In the Navigation area, click on <CX5FX5FTERM>XYZ</CX5FX5FTERM
  15873. >System.</T2.TIP.2
  15874. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  15875. ></RBW-AUTOGEN
  15876. ></RBW-MARKER
  15877. ><RBW-PARABODY>Select My Reports | Report On...</RBW-PARABODY
  15878. ></LN.LIST.NUM
  15879. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  15880. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  15881. ></RBW-AUTOGEN
  15882. ></RBW-MARKER
  15883. ><RBW-PARABODY>Enter <CX5FX5FINPUT>classes.tcl</CX5FX5FINPUT
  15884. >, then select OK.</RBW-PARABODY
  15885. ></LN.LIST.NUM
  15886. ><LR.LIST.RESULT>A Monitor window appears, displaying the output from the report on Classes.</LR.LIST.RESULT
  15887. ><B.BODY>You can run any of the standard reports in this way, assuming you are on the appropriate level for that particular report. To find out the name of the report file you want to run, refer to the chapter on Reporting in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  15888. ><CX5FX5FTITLE></CX5FX5FTITLE
  15889. >.</B.BODY
  15890. ></LABEL
  15891. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15892. >More on customization</L.LABEL
  15893. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15894. >An important customization file</SL.SUBLABEL
  15895. ><B.BODY>In your home directory is a customization file called the Meta4UserEnv file. This contains your personal ObjectTeam settings. If you change any settings while working in ObjectTeam, when you quit the Browser or other tool, the settings are saved in this file, The next time you start ObjectTeam this file is read and your settings restored.</B.BODY
  15896. ><B.BODY>To view the contents of this file, in the Browser, click on the <user customization files> object in the navigation area, then double&truehy;click on the Meta4UserEnv file in the information area. </B.BODY
  15897. ><B.BODY>For more details on customization files, refer to the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  15898. ><CX5FX5FTITLE></CX5FX5FTITLE
  15899. >.</B.BODY
  15900. ></LABEL
  15901. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15902. >What to do next</L.LABEL
  15903. ><B.BODY>In <RBW-XREF REFID="31837" TYPE="XREF-TEXTCOPY">Chapter 4, Tutorial: Project Management Operations</RBW-XREF
  15904. >, you can experiment with the project management features, such as creating versions and specifying access rights. The chapter will take you about 30 minutes to complete.</B.BODY
  15905. ><B.BODY>If you plan to proceed to <RBW-XREF REFID="31837" TYPE="XREF-TEXTCOPY">Chapter 4</RBW-XREF
  15906. >, leave the Browser open; if not, exit ObjectTeam by closing the Browser.</B.BODY
  15907. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  15908. ></RBW-AUTOGEN
  15909. ></RBW-MARKER
  15910. ><RBW-PARABODY>To close the Browser, select File | Exit.</RBW-PARABODY
  15911. ></P.PROCEDURE
  15912. ><B.BODY></B.BODY
  15913. ><RBWAUTO-0001></RBWAUTO-0001
  15914. ><!--
  15915.  
  15916.  
  15917.  
  15918.  
  15919.  
  15920. CONVERTING SOURCE FILE ../../sources/gs/tut2.fm5.mif
  15921.  
  15922.  
  15923. --><B.BODY></B.BODY
  15924. ><B.BODY></B.BODY
  15925. ><B.BODY></B.BODY
  15926. ><B.BODY></B.BODY
  15927. ><B.BODY></B.BODY
  15928. ></LABEL
  15929. ></SECTION
  15930. ></CHAPTER
  15931. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  15932. ></RBW-AUTOGEN
  15933. >Tutorial: <RBW-ANCHOR ID="31837"></RBW-ANCHOR
  15934. >Project Management Operations<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  15935. ><RBW-TEXTFLD TYPE="text">Getting Started</RBW-TEXTFLD
  15936. ></RBW-SYSOBJ
  15937. ></C.CHAPTER.HEAD
  15938. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15939. >Introduction</L.LABEL
  15940. ><B.BODY><RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3, Tutorial: Basic Operations</RBW-XREF
  15941. >, introduced you to the features that you use to build diagrams in a single phase of the development cycle. This chapter introduces you to the features that you use to manage your project through all phases of the development cycle.</B.BODY
  15942. ></LABEL
  15943. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15944. >What you will do</L.LABEL
  15945. ><B.BODY>In this chapter, you will continue working on the project that you created in <RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3</RBW-XREF
  15946. >. You will perform the following tasks:</B.BODY
  15947. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  15948. ></RBW-AUTOGEN
  15949. ></RBW-MARKER
  15950. ><RBW-PARABODY>Copy your system from the Analysis phase to the System Design phase.</RBW-PARABODY
  15951. ></LB.LIST.BULLET
  15952. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  15953. ></RBW-AUTOGEN
  15954. ></RBW-MARKER
  15955. ><RBW-PARABODY>Freeze your system and create a new version of it.</RBW-PARABODY
  15956. ></LB.LIST.BULLET
  15957. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  15958. ></RBW-AUTOGEN
  15959. ></RBW-MARKER
  15960. ><RBW-PARABODY>Create a second configuration that accesses the frozen version of your system.</RBW-PARABODY
  15961. ></LB.LIST.BULLET
  15962. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  15963. ></RBW-AUTOGEN
  15964. ></RBW-MARKER
  15965. ><RBW-PARABODY>Experiment with roles and access rights.</RBW-PARABODY
  15966. ></LB.LIST.BULLET
  15967. ></LABEL
  15968. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15969. >Takes about 30 minutes</L.LABEL
  15970. ><B.BODY>This chapter should take you about 30 minutes to complete, but there is no time limit. Feel free to take your time and explore. However, if you want to compare your results with those in this chapter, note the features that you want to investigate and return to them after completing the tutorial.</B.BODY
  15971. ></LABEL
  15972. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  15973. >In this chapter</L.LABEL
  15974. ><B.BODY>This chapter contains the following sections:</B.BODY
  15975. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>SECTION&rbwtab;PAGE</SBH.SECTION.BLOCK.TABLE.HEAD
  15976. ></ENTRY
  15977. ></RBW-ROW
  15978. ></THEAD
  15979. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16367" TYPE="XREF-TEXTCOPY">Moving to the Next Phase&rbwtab;4–2</RBW-XREF
  15980. ></SB.SECTION.BLOCK.TABLE
  15981. ></ENTRY
  15982. ></RBW-ROW
  15983. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34629" TYPE="XREF-TEXTCOPY">Creating a New Version&rbwtab;4–6</RBW-XREF
  15984. ></SB.SECTION.BLOCK.TABLE
  15985. ></ENTRY
  15986. ></RBW-ROW
  15987. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35607" TYPE="XREF-TEXTCOPY">Accessing Frozen Versions&rbwtab;4–8</RBW-XREF
  15988. ></SB.SECTION.BLOCK.TABLE
  15989. ></ENTRY
  15990. ></RBW-ROW
  15991. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28793" TYPE="XREF-TEXTCOPY">Changing Access Rights&rbwtab;4–10</RBW-XREF
  15992. ></SB.SECTION.BLOCK.TABLE
  15993. ></ENTRY
  15994. ></RBW-ROW
  15995. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18012" TYPE="XREF-TEXTCOPY">Using Roles&rbwtab;4–14</RBW-XREF
  15996. ></SB.SECTION.BLOCK.TABLE
  15997. ></ENTRY
  15998. ></RBW-ROW
  15999. ></TBODY
  16000. ></TGROUP
  16001. ></RBW-TABLE
  16002. ></LABEL
  16003. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16367"></RBW-ANCHOR
  16004. >Moving to the Next Phase</S.SECTION.HEAD
  16005. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16006. >Introduction</L.LABEL
  16007. ><B.BODY>On large projects, most systems move through the following phases of the development cycle:</B.BODY
  16008. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16009. ></RBW-AUTOGEN
  16010. ></RBW-MARKER
  16011. ><RBW-PARABODY>Analysis</RBW-PARABODY
  16012. ></LB.LIST.BULLET
  16013. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16014. ></RBW-AUTOGEN
  16015. ></RBW-MARKER
  16016. ><RBW-PARABODY>System Design</RBW-PARABODY
  16017. ></LB.LIST.BULLET
  16018. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16019. ></RBW-AUTOGEN
  16020. ></RBW-MARKER
  16021. ><RBW-PARABODY>Object Design</RBW-PARABODY
  16022. ></LB.LIST.BULLET
  16023. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16024. ></RBW-AUTOGEN
  16025. ></RBW-MARKER
  16026. ><RBW-PARABODY>Implementation</RBW-PARABODY
  16027. ></LB.LIST.BULLET
  16028. ><B.BODY>In your project hierarchy, Phase objects help you to keep track of your systems as they move through the development cycle. When a system is in the Analysis phase, you store it in the Analysis phase of your project hierarchy. When the system moves into the System Design phase, you copy it to the System Design phase of your project hierarchy.</B.BODY
  16029. ></LABEL
  16030. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16031. >Scenario</L.LABEL
  16032. ><B.BODY>In <RBW-XREF REFID="21870" TYPE="XREF-TEXTCOPY">Chapter 3</RBW-XREF
  16033. >, you created an Analysis phase for your project and built a system within that phase. Now, assume that you have completed your analysis of that system and are ready to begin system design.</B.BODY
  16034. ><B.BODY>You must perform the following steps:</B.BODY
  16035. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16036. ></RBW-AUTOGEN
  16037. ></RBW-MARKER
  16038. ><RBW-PARABODY>Create a System Design phase in your project.</RBW-PARABODY
  16039. ></LN.LIST.NUM
  16040. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16041. ></RBW-AUTOGEN
  16042. ></RBW-MARKER
  16043. ><RBW-PARABODY>Merge the system into the System Design phase.</RBW-PARABODY
  16044. ></LN.LIST.NUM
  16045. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16046. ></RBW-AUTOGEN
  16047. ></RBW-MARKER
  16048. ><RBW-PARABODY>Begin design work on the system.</RBW-PARABODY
  16049. ></LN.LIST.NUM
  16050. ></LABEL
  16051. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16052. >Create a System Design phase</L.LABEL
  16053. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16054. ></RBW-AUTOGEN
  16055. ></RBW-MARKER
  16056. ><RBW-PARABODY>To create a System Design phase:</RBW-PARABODY
  16057. ></P.PROCEDURE
  16058. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16059. ></RBW-AUTOGEN
  16060. ></RBW-MARKER
  16061. ><RBW-PARABODY>Move to the Configuration level. (In the Navigation area of the Browser, click on the name of the configuration.)</RBW-PARABODY
  16062. ></LN.LIST.NUM
  16063. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16064. ></RBW-AUTOGEN
  16065. ></RBW-MARKER
  16066. ><RBW-PARABODY>Select File | New | Phase Version.</RBW-PARABODY
  16067. ></LN.LIST.NUM
  16068. ><LR.LIST.RESULT>The New Phase Version window appears.</LR.LIST.RESULT
  16069. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  16070. ></RBW-AUTOGEN
  16071. >The Analysis phase is not an option because your configuration already contains an Analysis phase.</N2.NOTE.2
  16072. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16073. ></RBW-AUTOGEN
  16074. ></RBW-MARKER
  16075. ><RBW-PARABODY>Select System Design, then select OK.</RBW-PARABODY
  16076. ></LN.LIST.NUM
  16077. ><LR.LIST.RESULT>ObjectTeam adds the System Design phase to your configuration and updates the Information area of the Browser.</LR.LIST.RESULT
  16078. ></LABEL
  16079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16080. >Merge the system into the next phase </L.LABEL
  16081. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16082. ></RBW-AUTOGEN
  16083. ></RBW-MARKER
  16084. ><RBW-PARABODY>To merge your system from the Analysis phase into the System Design phase:</RBW-PARABODY
  16085. ></P.PROCEDURE
  16086. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16087. ></RBW-AUTOGEN
  16088. ></RBW-MARKER
  16089. ><RBW-PARABODY>Move to the System Design Phase level. (In the Information area, double&truehy;click on the System Design phase that you just created.)</RBW-PARABODY
  16090. ></LN.LIST.NUM
  16091. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16092. ></RBW-AUTOGEN
  16093. ></RBW-MARKER
  16094. ><RBW-PARABODY>Select Utilities | Merge From Previous Phase.</RBW-PARABODY
  16095. ></LN.LIST.NUM
  16096. ><LR.LIST.RESULT>ObjectTeam opens the Merge Window.</LR.LIST.RESULT
  16097. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00075.unk" origfile="pics/import.gif" origtype="X" origdoc="../../sources/gs/tut2.fm5.mif"></RBW-GRAPHIC
  16098. ></FAR.FIGURE.ANCHOR.RIGHT
  16099. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16100. ></RBW-AUTOGEN
  16101. ></RBW-MARKER
  16102. ><RBW-PARABODY>Select the system(s) of your choice in the Information Area of the Merge Window.</RBW-PARABODY
  16103. ></LN.LIST.NUM
  16104. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16105. ></RBW-AUTOGEN
  16106. ></RBW-MARKER
  16107. ><RBW-PARABODY>Select Version | Merge</RBW-PARABODY
  16108. ></LN.LIST.NUM
  16109. ><LR.LIST.RESULT>The System from the previous phase is now merged with the current Phase. The merged system in the previous phase is frozen.</LR.LIST.RESULT
  16110. ></LABEL
  16111. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16112. >Begin system design work</L.LABEL
  16113. ><B.BODY>Now that your system is in the System Design phase, you are ready to begin design work on the system. In this tutorial, you will add a rentProduct operation to the Member class and a returnRental operation to the Product class.</B.BODY
  16114. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16115. ></RBW-AUTOGEN
  16116. ></RBW-MARKER
  16117. ><RBW-PARABODY>To add operations to the classes in the CD:</RBW-PARABODY
  16118. ></P.PROCEDURE
  16119. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16120. ></RBW-AUTOGEN
  16121. ></RBW-MARKER
  16122. ><RBW-PARABODY>Open the system that you just copied to the System Design phase.</RBW-PARABODY
  16123. ></LN.LIST.NUM
  16124. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16125. ></RBW-AUTOGEN
  16126. ></RBW-MARKER
  16127. ><RBW-PARABODY>Open the CD.</RBW-PARABODY
  16128. ></LN.LIST.NUM
  16129. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16130. ></RBW-AUTOGEN
  16131. ></RBW-MARKER
  16132. ><RBW-PARABODY>Add a rentProduct operation to the Member class:</RBW-PARABODY
  16133. ></LN.LIST.NUM
  16134. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  16135. ></RBW-AUTOGEN
  16136. ></RBW-MARKER
  16137. ><RBW-PARABODY>Click on the bottom text area of the Member class.</RBW-PARABODY
  16138. ></LN2.LIST.NUM.2
  16139. ><LR2.LIST.RESULT.2>An I&truehy;bar appears, indicating that you can enter text.</LR2.LIST.RESULT.2
  16140. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  16141. ></RBW-AUTOGEN
  16142. ></RBW-MARKER
  16143. ><RBW-PARABODY>Enter <CX5FX5FINPUT>rentProduct</CX5FX5FINPUT
  16144. > as the operation name.</RBW-PARABODY
  16145. ></LN2.LIST.NUM.2
  16146. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16147. ></RBW-AUTOGEN
  16148. ></RBW-MARKER
  16149. ><RBW-PARABODY>Add a returnRental operation to the Product class.</RBW-PARABODY
  16150. ></LN.LIST.NUM
  16151. ><LR.LIST.RESULT>The CD now looks like this:</LR.LIST.RESULT
  16152. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00076.unk" origfile="pics/cadopers.gif" origtype="X" origdoc="../../sources/gs/tut2.fm5.mif"></RBW-GRAPHIC
  16153. ></FA2.FIGURE.ANCHOR.2
  16154. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  16155. ></RBW-AUTOGEN
  16156. ></RBW-MARKER
  16157. ><RBW-PARABODY>Save and close the CD.</RBW-PARABODY
  16158. ></LN.LIST.NUM
  16159. ></LABEL
  16160. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16161. >Compare the two phases</L.LABEL
  16162. ><B.BODY>As you move a system through each phase of the development cycle, it is useful to know which changes were made during a particular phase. <DEFAULT-CLFTYPE></DEFAULT-CLFTYPE
  16163. > <DEFAULT-CLFTYPE></DEFAULT-CLFTYPE
  16164. >ObjectTeam provides a Compare utility that finds the changes for you.</B.BODY
  16165. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16166. ></RBW-AUTOGEN
  16167. ></RBW-MARKER
  16168. ><RBW-PARABODY>To compare the current CD with the CD in the Analysis phase:</RBW-PARABODY
  16169. ></P.PROCEDURE
  16170. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16171. ></RBW-AUTOGEN
  16172. ></RBW-MARKER
  16173. ><RBW-PARABODY>Move to the System level, if you are not already there.</RBW-PARABODY
  16174. ></LN.LIST.NUM
  16175. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16176. ></RBW-AUTOGEN
  16177. ></RBW-MARKER
  16178. ><RBW-PARABODY>If any system files are selected, click on the background of the Information area to deselect them.</RBW-PARABODY
  16179. ></LN.LIST.NUM
  16180. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16181. ></RBW-AUTOGEN
  16182. ></RBW-MARKER
  16183. ><RBW-PARABODY>Select Utilities | Compare With Previous Phase.</RBW-PARABODY
  16184. ></LN.LIST.NUM
  16185. ><LR.LIST.RESULT>The Compare With Previous Phase window appears.</LR.LIST.RESULT
  16186. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16187. ></RBW-AUTOGEN
  16188. ></RBW-MARKER
  16189. ><RBW-PARABODY>Select the Components radio button, then select OK.</RBW-PARABODY
  16190. ></LN.LIST.NUM
  16191. ><LR.LIST.RESULT>ObjectTeam compares the contents of all files in the two systems and displays the results in a Monitoring window.</LR.LIST.RESULT
  16192. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  16193. ></RBW-AUTOGEN
  16194. >Select the Files radio button to compare the list of files in the two systems without comparing the contents of the files.</N2.NOTE.2
  16195. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00077.unk" origfile="pics/compoutp.gif" origtype="X" origdoc="../../sources/gs/tut2.fm5.mif"></RBW-GRAPHIC
  16196. ></FAR.FIGURE.ANCHOR.RIGHT
  16197. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  16198. ></RBW-AUTOGEN
  16199. ></RBW-MARKER
  16200. ><RBW-PARABODY>Examine the results, then close the Monitoring window.</RBW-PARABODY
  16201. ></LN.LIST.NUM
  16202. ></LABEL
  16203. ></SECTION
  16204. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34629"></RBW-ANCHOR
  16205. >Creating a New Version</S.SECTION.HEAD
  16206. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16207. >Introduction</L.LABEL
  16208. ><B.BODY>In this section, you create a new version of your system.</B.BODY
  16209. ></LABEL
  16210. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16211. >Purpose of versions</L.LABEL
  16212. ><B.BODY>Creating versions of objects is critical for incremental development and for project teams.</B.BODY
  16213. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16214. ></RBW-AUTOGEN
  16215. ></RBW-MARKER
  16216. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Incremental development.</CX5FX5FBULLET.EMPHASIS
  16217. > You can make a set of changes, ensure that everything works properly, freeze the system, then proceed to the next set of changes. If you have problems implementing your changes, you can return to the frozen version of the system and try again.</RBW-PARABODY
  16218. ></LB.LIST.BULLET
  16219. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16220. ></RBW-AUTOGEN
  16221. ></RBW-MARKER
  16222. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Project teams.</CX5FX5FBULLET.EMPHASIS
  16223. > Once you have a working system, you can freeze it and make it available to your project team. The team can use the frozen version of the system while you continue to work on a new version of that system.</RBW-PARABODY
  16224. ></LB.LIST.BULLET
  16225. ></LABEL
  16226. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16227. >Version and configuration rules</L.LABEL
  16228. ><B.BODY>Before you perform the procedures in this section, you should understand the following rules for versions and configurations:</B.BODY
  16229. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16230. ></RBW-AUTOGEN
  16231. ></RBW-MARKER
  16232. ><RBW-PARABODY>As described in <RBW-XREF REFID="41706" TYPE="XREF-TEXTCOPY">Version and Configuration Management</RBW-XREF
  16233. >, each version of an object can be in one of three states: working, frozen, or background. Working versions can be modified; therefore, only one version of an object can be in the working state at a time.</RBW-PARABODY
  16234. ></LB.LIST.BULLET
  16235. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16236. ></RBW-AUTOGEN
  16237. ></RBW-MARKER
  16238. ><RBW-PARABODY>A project can contain many versions of a configuration. However, a configuration can contain only one version of a particular phase, system, or file.</RBW-PARABODY
  16239. ></LB.LIST.BULLET
  16240. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16241. ></RBW-AUTOGEN
  16242. ></RBW-MARKER
  16243. ><RBW-PARABODY>Any version of an object that is not in a configuration must be frozen.</RBW-PARABODY
  16244. ></LB.LIST.BULLET
  16245. ></LABEL
  16246. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16247. >Create a new version of the system</L.LABEL
  16248. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16249. ></RBW-AUTOGEN
  16250. ></RBW-MARKER
  16251. ><RBW-PARABODY>To create a new version of your system:</RBW-PARABODY
  16252. ></P.PROCEDURE
  16253. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16254. ></RBW-AUTOGEN
  16255. ></RBW-MARKER
  16256. ><RBW-PARABODY>Move to the System Design Phase level. </RBW-PARABODY
  16257. ></LN.LIST.NUM
  16258. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  16259. ></RBW-AUTOGEN
  16260. >If you are at the System level, you can move to the System Design Phase level by selecting File | Close.</T2.TIP.2
  16261. ><LR.LIST.RESULT>ObjectTeam updates the Information area of the Browser. You have one system at the System Design Phase level, version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16262. >Config.1 of <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16263. >System.</LR.LIST.RESULT
  16264. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16265. ></RBW-AUTOGEN
  16266. ></RBW-MARKER
  16267. ><RBW-PARABODY>Select the system.</RBW-PARABODY
  16268. ></LN.LIST.NUM
  16269. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16270. ></RBW-AUTOGEN
  16271. ></RBW-MARKER
  16272. ><RBW-PARABODY>Select Version | New.</RBW-PARABODY
  16273. ></LN.LIST.NUM
  16274. ><LR.LIST.RESULT>ObjectTeam freezes the current version of the system (<CX5FX5FTERM>XYZ</CX5FX5FTERM
  16275. >Config.1) and creates a new version (<CX5FX5FTERM>XYZ</CX5FX5FTERM
  16276. >Config.2). The new version is now the working version in the configuration; the frozen version is removed from the configuration.</LR.LIST.RESULT
  16277. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16278. ></RBW-AUTOGEN
  16279. ></RBW-MARKER
  16280. ><RBW-PARABODY>Notice the version and status of the new system.</RBW-PARABODY
  16281. ></LN.LIST.NUM
  16282. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  16283. ></RBW-AUTOGEN
  16284. >In the Information area, column 1 is Name, column 2 is Version, and column 3 is Status. If the Information area does not display this information, select View | Details to change the display.</T2.TIP.2
  16285. ></LABEL
  16286. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16287. >Add the older version to your configuration</L.LABEL
  16288. ><B.BODY>You can choose which version of the system you want to use in your configuration.</B.BODY
  16289. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16290. ></RBW-AUTOGEN
  16291. ></RBW-MARKER
  16292. ><RBW-PARABODY>To use the older system version in your configuration:</RBW-PARABODY
  16293. ></P.PROCEDURE
  16294. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16295. ></RBW-AUTOGEN
  16296. ></RBW-MARKER
  16297. ><RBW-PARABODY>Select the system.</RBW-PARABODY
  16298. ></LN.LIST.NUM
  16299. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16300. ></RBW-AUTOGEN
  16301. ></RBW-MARKER
  16302. ><RBW-PARABODY>Select Version | Select | Selected.</RBW-PARABODY
  16303. ></LN.LIST.NUM
  16304. ><LR.LIST.RESULT>The Select Version window appears.</LR.LIST.RESULT
  16305. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  16306. ></RBW-AUTOGEN
  16307. >Select Version | Select | Selected to choose a different version of the system. Select Version | Select | New to choose a system that is not currently in your configuration. You will use the New option in the next section.</T2.TIP.2
  16308. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16309. ></RBW-AUTOGEN
  16310. ></RBW-MARKER
  16311. ><RBW-PARABODY>Select version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16312. >Config.1, then select OK.</RBW-PARABODY
  16313. ></LN.LIST.NUM
  16314. ><LR.LIST.RESULT>ObjectTeam adds version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16315. >Config.1 to the configuration, removes version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16316. >Config.2, and updates the Information area of the Browser. Version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16317. >Config.2 is automatically frozen when it is removed from the configuration. </LR.LIST.RESULT
  16318. ></LABEL
  16319. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16320. >Return to the newer version and unfreeze it</L.LABEL
  16321. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16322. ></RBW-AUTOGEN
  16323. ></RBW-MARKER
  16324. ><RBW-PARABODY>To use the newer system version in your configuration:</RBW-PARABODY
  16325. ></P.PROCEDURE
  16326. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16327. ></RBW-AUTOGEN
  16328. ></RBW-MARKER
  16329. ><RBW-PARABODY>Select the system.</RBW-PARABODY
  16330. ></LN.LIST.NUM
  16331. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16332. ></RBW-AUTOGEN
  16333. ></RBW-MARKER
  16334. ><RBW-PARABODY>Select Version | Select | Selected.</RBW-PARABODY
  16335. ></LN.LIST.NUM
  16336. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16337. ></RBW-AUTOGEN
  16338. ></RBW-MARKER
  16339. ><RBW-PARABODY>Select version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16340. >Config.2, then select OK.</RBW-PARABODY
  16341. ></LN.LIST.NUM
  16342. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16343. ></RBW-AUTOGEN
  16344. ></RBW-MARKER
  16345. ><RBW-PARABODY>To unfreeze version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16346. >Config.2:</RBW-PARABODY
  16347. ></P.PROCEDURE
  16348. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16349. ></RBW-AUTOGEN
  16350. ></RBW-MARKER
  16351. ><RBW-PARABODY>Select the system.</RBW-PARABODY
  16352. ></LN.LIST.NUM
  16353. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16354. ></RBW-AUTOGEN
  16355. ></RBW-MARKER
  16356. ><RBW-PARABODY>Select Version | Unfreeze.</RBW-PARABODY
  16357. ></LN.LIST.NUM
  16358. ></LABEL
  16359. ></SECTION
  16360. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35607"></RBW-ANCHOR
  16361. >Accessing Frozen Versions</S.SECTION.HEAD
  16362. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16363. >Introduction</L.LABEL
  16364. ><B.BODY>As mentioned in the previous section, versions are important for project teams. In this section, you examine how versions are used to share code during development.</B.BODY
  16365. ></LABEL
  16366. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16367. >Scenario</L.LABEL
  16368. ><B.BODY>In the previous section, you created version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16369. >Config.1 and <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16370. >Config.2 of <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16371. >System. In this section, you are a new developer who wants to use <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16372. >System; you will use the frozen version, <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16373. >Config.1.</B.BODY
  16374. ><B.BODY>You must perform the following steps:</B.BODY
  16375. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16376. ></RBW-AUTOGEN
  16377. ></RBW-MARKER
  16378. ><RBW-PARABODY>Create a new configuration and phase.</RBW-PARABODY
  16379. ></LN.LIST.NUM
  16380. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16381. ></RBW-AUTOGEN
  16382. ></RBW-MARKER
  16383. ><RBW-PARABODY>Add version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16384. >Config.1 of <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16385. >System to the new configuration.</RBW-PARABODY
  16386. ></LN.LIST.NUM
  16387. ></LABEL
  16388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16389. >Create a configuration and phase</L.LABEL
  16390. ><B.BODY>The system you want to use is in the System Design phase of the project. Therefore, you must create a Configuration version with a System Design phase.</B.BODY
  16391. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16392. ></RBW-AUTOGEN
  16393. ></RBW-MARKER
  16394. ><RBW-PARABODY>To create the Configuration and Phase versions:</RBW-PARABODY
  16395. ></P.PROCEDURE
  16396. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16397. ></RBW-AUTOGEN
  16398. ></RBW-MARKER
  16399. ><RBW-PARABODY>Move to the Project level. (In the Navigation area, click on the name of your project. You might need to scroll the Navigation area to locate your project.)</RBW-PARABODY
  16400. ></LN.LIST.NUM
  16401. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16402. ></RBW-AUTOGEN
  16403. ></RBW-MARKER
  16404. ><RBW-PARABODY>Select File | New | Configuration Version.</RBW-PARABODY
  16405. ></LN.LIST.NUM
  16406. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16407. ></RBW-AUTOGEN
  16408. ></RBW-MARKER
  16409. ><RBW-PARABODY>Enter <CX5FX5FINPUT>NewConfig</CX5FX5FINPUT
  16410. > as the name of the Configuration version.</RBW-PARABODY
  16411. ></LN.LIST.NUM
  16412. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16413. ></RBW-AUTOGEN
  16414. ></RBW-MARKER
  16415. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  16416. ></LN.LIST.NUM
  16417. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  16418. ></RBW-AUTOGEN
  16419. ></RBW-MARKER
  16420. ><RBW-PARABODY>Move to the Configuration level by opening the Configuration version that you just created.</RBW-PARABODY
  16421. ></LN.LIST.NUM
  16422. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  16423. ></RBW-AUTOGEN
  16424. ></RBW-MARKER
  16425. ><RBW-PARABODY>Select File | New | Phase Version.</RBW-PARABODY
  16426. ></LN.LIST.NUM
  16427. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  16428. ></RBW-AUTOGEN
  16429. ></RBW-MARKER
  16430. ><RBW-PARABODY>Select System Design, then select OK.</RBW-PARABODY
  16431. ></LN.LIST.NUM
  16432. ></LABEL
  16433. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16434. >Add <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16435. >System to your configuration </L.LABEL
  16436. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16437. ></RBW-AUTOGEN
  16438. ></RBW-MARKER
  16439. ><RBW-PARABODY>To add version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16440. >Config.1 of <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16441. >System to the System Design phase of NewConfig:</RBW-PARABODY
  16442. ></P.PROCEDURE
  16443. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16444. ></RBW-AUTOGEN
  16445. ></RBW-MARKER
  16446. ><RBW-PARABODY>Move to the System Design Phase level by opening the System Design phase that you just created.</RBW-PARABODY
  16447. ></LN.LIST.NUM
  16448. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16449. ></RBW-AUTOGEN
  16450. ></RBW-MARKER
  16451. ><RBW-PARABODY>Select Version |Select | New.</RBW-PARABODY
  16452. ></LN.LIST.NUM
  16453. ><LR.LIST.RESULT>The Select Version window appears.</LR.LIST.RESULT
  16454. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16455. ></RBW-AUTOGEN
  16456. ></RBW-MARKER
  16457. ><RBW-PARABODY>Select version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16458. >Config.1 of <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16459. >System, then select OK.</RBW-PARABODY
  16460. ></LN.LIST.NUM
  16461. ></LABEL
  16462. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16463. >Create a new system</L.LABEL
  16464. ><B.BODY>Now, create a new system in the System Design phase of NewConfig.</B.BODY
  16465. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16466. ></RBW-AUTOGEN
  16467. ></RBW-MARKER
  16468. ><RBW-PARABODY>To create a new system:</RBW-PARABODY
  16469. ></P.PROCEDURE
  16470. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16471. ></RBW-AUTOGEN
  16472. ></RBW-MARKER
  16473. ><RBW-PARABODY>Select File  | New | System Version.</RBW-PARABODY
  16474. ></LN.LIST.NUM
  16475. ><LR.LIST.RESULT>The New System Version window appears.</LR.LIST.RESULT
  16476. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16477. ></RBW-AUTOGEN
  16478. ></RBW-MARKER
  16479. ><RBW-PARABODY>Enter <CX5FX5FINPUT>NewSystem</CX5FX5FINPUT
  16480. > as the name of the new system.</RBW-PARABODY
  16481. ></LN.LIST.NUM
  16482. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16483. ></RBW-AUTOGEN
  16484. ></RBW-MARKER
  16485. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  16486. ></LN.LIST.NUM
  16487. ><LT.LIST.TEXT>Notice the difference between the version numbers of the two systems. The version number includes the name of the configuration in which the system is created. This helps you to identify the version that you want to use.</LT.LIST.TEXT
  16488. ></LABEL
  16489. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16490. >Cannot unfreeze <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16491. >System </L.LABEL
  16492. ><B.BODY>You cannot unfreeze version <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16493. >Config.1 of <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16494. >System because a newer version (<CX5FX5FTERM>XYZ</CX5FX5FTERM
  16495. >Config.2) of that system already exists. This prevents you from making changes to a system that another developer is working on.</B.BODY
  16496. ><B.BODY>If you try to unfreeze <CX5FX5FTERM>XYZ</CX5FX5FTERM
  16497. >System, an error message appears.</B.BODY
  16498. ></LABEL
  16499. ></SECTION
  16500. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28793"></RBW-ANCHOR
  16501. >Changing Access Rights</S.SECTION.HEAD
  16502. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16503. >Introduction</L.LABEL
  16504. ><B.BODY>Roles and access rights control access to objects. In this section, you experiment with roles and access rights by performing the following tasks:</B.BODY
  16505. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16506. ></RBW-AUTOGEN
  16507. ></RBW-MARKER
  16508. ><RBW-PARABODY>Examine your current roles.</RBW-PARABODY
  16509. ></LB.LIST.BULLET
  16510. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16511. ></RBW-AUTOGEN
  16512. ></RBW-MARKER
  16513. ><RBW-PARABODY>Examine role rights for NewSystem.</RBW-PARABODY
  16514. ></LB.LIST.BULLET
  16515. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16516. ></RBW-AUTOGEN
  16517. ></RBW-MARKER
  16518. ><RBW-PARABODY>Change your access rights to NewSystem.</RBW-PARABODY
  16519. ></LB.LIST.BULLET
  16520. ></LABEL
  16521. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16522. >About roles and access rules</L.LABEL
  16523. ><B.BODY>As described in <RBW-XREF REFID="29719" TYPE="XREF-TEXTCOPY">Access Control</RBW-XREF
  16524. >, ObjectTeam manages security through roles and access rules. The administrator of the Corporate level creates several roles and associates each role with a set of access rules that allows or prohibits specific actions on specific types of objects.</B.BODY
  16525. ><B.BODY>As an ObjectTeam user, you have access to one or more roles. (Access to roles is assigned at the Corporate or Project level.) During a session, you can activate or deactivate the roles to which you have access. Your active roles determine your current level of access.</B.BODY
  16526. ></LABEL
  16527. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16528. >Display your effective roles</L.LABEL
  16529. ><B.BODY><CX5FX5FTERM>Effective roles</CX5FX5FTERM
  16530. > are the roles that you have activated.</B.BODY
  16531. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16532. ></RBW-AUTOGEN
  16533. ></RBW-MARKER
  16534. ><RBW-PARABODY>To display your effective roles, select File | Effective Roles.</RBW-PARABODY
  16535. ></P.PROCEDURE
  16536. ><LRS.LIST.RESULT.SINGLE>The Effective Context window appears, displaying your user name and active roles. Typically, you have one active role whose name matches your user name.</LRS.LIST.RESULT.SINGLE
  16537. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00078.unk" origfile="pics/effroles.gif" origtype="X" origdoc="../../sources/gs/tut2.fm5.mif"></RBW-GRAPHIC
  16538. ></FA.FIGURE.ANCHOR
  16539. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16540. >Guest role</SL.SUBLABEL
  16541. ><B.BODY>If the name you used to log into your computer does not match a user name in the Cayenne repository, your effective role is Guest. </B.BODY
  16542. ></LABEL
  16543. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16544. >Display the role rights for NewSystem</L.LABEL
  16545. ><BI.BODY.INTRO>Each object has a set of <CX5FX5FTERM>role rights</CX5FX5FTERM
  16546. > that defines the access rights to the object for each role defined at the Corporate level.</BI.BODY.INTRO
  16547. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16548. ></RBW-AUTOGEN
  16549. ></RBW-MARKER
  16550. ><RBW-PARABODY>To display the role rights for NewSystem:</RBW-PARABODY
  16551. ></P.PROCEDURE
  16552. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16553. ></RBW-AUTOGEN
  16554. ></RBW-MARKER
  16555. ><RBW-PARABODY>Move to the System Design Phase level, if you are not already there.</RBW-PARABODY
  16556. ></LN.LIST.NUM
  16557. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16558. ></RBW-AUTOGEN
  16559. ></RBW-MARKER
  16560. ><RBW-PARABODY>Select NewSystem.</RBW-PARABODY
  16561. ></LN.LIST.NUM
  16562. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16563. ></RBW-AUTOGEN
  16564. ></RBW-MARKER
  16565. ><RBW-PARABODY>Select Security | Role Rights | Show.</RBW-PARABODY
  16566. ></LN.LIST.NUM
  16567. ><LR.LIST.RESULT>The Show Role Rights window appears. NewSystem is highlighted in the Objects list box.</LR.LIST.RESULT
  16568. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16569. ></RBW-AUTOGEN
  16570. ></RBW-MARKER
  16571. ><RBW-PARABODY>Select your role in the Roles list box.</RBW-PARABODY
  16572. ></LN.LIST.NUM
  16573. ><LR.LIST.RESULT>ObjectTeam updates the Actions list box to display your role’s access rights to NewSystem.</LR.LIST.RESULT
  16574. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00079.unk" origfile="pics/showrols.gif" origtype="X" origdoc="../../sources/gs/tut2.fm5.mif"></RBW-GRAPHIC
  16575. ></FA2.FIGURE.ANCHOR.2
  16576. ><LT.LIST.TEXT>Typically, for your role, the action controlAction is set to Allowed and all other actions are set to Undefined. (The action controlAction determines whether you can modify the object’s role rights.)</LT.LIST.TEXT
  16577. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  16578. ></RBW-AUTOGEN
  16579. ></RBW-MARKER
  16580. ><RBW-PARABODY>Select another role in the Roles list box.</RBW-PARABODY
  16581. ></LN.LIST.NUM
  16582. ><LT.LIST.TEXT>Typically, for all other roles, all actions are set to Undefined.</LT.LIST.TEXT
  16583. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  16584. ></RBW-AUTOGEN
  16585. ></RBW-MARKER
  16586. ><RBW-PARABODY>Select OK to close the Show Role Rights window.</RBW-PARABODY
  16587. ></LN.LIST.NUM
  16588. ></LABEL
  16589. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16590. >About this scenario</L.LABEL
  16591. ><B.BODY>The action destroyAction determines whether you can delete the object. If you change the role rights for NewSystem so that, for your role, the action destroyAction is set to Prohibited, you will not be able to delete NewSystem.</B.BODY
  16592. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  16593. ></RBW-AUTOGEN
  16594. >This is not a typical scenario. It is provided only to show you how to work with role rights.</N.NOTE
  16595. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16596. >Deactivate the SuperUser role</SL.SUBLABEL
  16597. ><B.BODY>No action is prohibited for users who have the SuperUser role active. Therefore, if your effective roles include SuperUser, deactivate that role before you continue.</B.BODY
  16598. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16599. ></RBW-AUTOGEN
  16600. ></RBW-MARKER
  16601. ><RBW-PARABODY>To deactivate a role:</RBW-PARABODY
  16602. ></P.PROCEDURE
  16603. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16604. ></RBW-AUTOGEN
  16605. ></RBW-MARKER
  16606. ><RBW-PARABODY>Select Security | Deactivate.</RBW-PARABODY
  16607. ></LN.LIST.NUM
  16608. ><LR.LIST.RESULT>The Deactivate Role window appears.</LR.LIST.RESULT
  16609. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16610. ></RBW-AUTOGEN
  16611. ></RBW-MARKER
  16612. ><RBW-PARABODY>Select the role that you want to deactivate, then select OK.</RBW-PARABODY
  16613. ></LN.LIST.NUM
  16614. ></LABEL
  16615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16616. >Change role rights to NewSystem</L.LABEL
  16617. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16618. ></RBW-AUTOGEN
  16619. ></RBW-MARKER
  16620. ><RBW-PARABODY>To protect NewSystem from being deleted, change its role rights:</RBW-PARABODY
  16621. ></P.PROCEDURE
  16622. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16623. ></RBW-AUTOGEN
  16624. ></RBW-MARKER
  16625. ><RBW-PARABODY>Select NewSystem.</RBW-PARABODY
  16626. ></LN.LIST.NUM
  16627. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16628. ></RBW-AUTOGEN
  16629. ></RBW-MARKER
  16630. ><RBW-PARABODY>Select Security | Role Rights | Edit.</RBW-PARABODY
  16631. ></LN.LIST.NUM
  16632. ><LR.LIST.RESULT>The Edit Role Rights window appears.</LR.LIST.RESULT
  16633. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16634. ></RBW-AUTOGEN
  16635. ></RBW-MARKER
  16636. ><RBW-PARABODY>Select NewSystem in the Objects list box.</RBW-PARABODY
  16637. ></LN.LIST.NUM
  16638. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16639. ></RBW-AUTOGEN
  16640. ></RBW-MARKER
  16641. ><RBW-PARABODY>Select your role in the Roles list box.</RBW-PARABODY
  16642. ></LN.LIST.NUM
  16643. ><LR.LIST.RESULT>ObjectTeam updates the Actions list box to display your role’s access rights to NewSystem.</LR.LIST.RESULT
  16644. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  16645. ></RBW-AUTOGEN
  16646. ></RBW-MARKER
  16647. ><RBW-PARABODY>Change the setting of the action destroyAction from Undefined to Prohibited.</RBW-PARABODY
  16648. ></LN.LIST.NUM
  16649. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  16650. ></RBW-AUTOGEN
  16651. ></RBW-MARKER
  16652. ><RBW-PARABODY>Select OK to close the Edit Role Rights window.</RBW-PARABODY
  16653. ></LN.LIST.NUM
  16654. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  16655. ></RBW-AUTOGEN
  16656. ></RBW-MARKER
  16657. ><RBW-PARABODY>Select File | Delete to delete NewSystem.</RBW-PARABODY
  16658. ></LN.LIST.NUM
  16659. ><LR.LIST.RESULT>A confirmation message appears.</LR.LIST.RESULT
  16660. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  16661. ></RBW-AUTOGEN
  16662. ></RBW-MARKER
  16663. ><RBW-PARABODY>Select OK to confirm that you want to delete NewSystem.</RBW-PARABODY
  16664. ></LN.LIST.NUM
  16665. ><LR.LIST.RESULT>An error message appears, indicating that you do not have permission to delete the system.</LR.LIST.RESULT
  16666. ></LABEL
  16667. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16668. >Delete NewSystem</L.LABEL
  16669. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16670. ></RBW-AUTOGEN
  16671. ></RBW-MARKER
  16672. ><RBW-PARABODY>To restore your access rights and delete NewSystem:</RBW-PARABODY
  16673. ></P.PROCEDURE
  16674. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16675. ></RBW-AUTOGEN
  16676. ></RBW-MARKER
  16677. ><RBW-PARABODY>Select NewSystem.</RBW-PARABODY
  16678. ></LN.LIST.NUM
  16679. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16680. ></RBW-AUTOGEN
  16681. ></RBW-MARKER
  16682. ><RBW-PARABODY>Select Security | Role Rights | Edit.</RBW-PARABODY
  16683. ></LN.LIST.NUM
  16684. ><LR.LIST.RESULT>The Edit Role Rights window appears.</LR.LIST.RESULT
  16685. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16686. ></RBW-AUTOGEN
  16687. ></RBW-MARKER
  16688. ><RBW-PARABODY>Select NewSystem in the Objects list box.</RBW-PARABODY
  16689. ></LN.LIST.NUM
  16690. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16691. ></RBW-AUTOGEN
  16692. ></RBW-MARKER
  16693. ><RBW-PARABODY>Select your role in the Roles list box.</RBW-PARABODY
  16694. ></LN.LIST.NUM
  16695. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  16696. ></RBW-AUTOGEN
  16697. ></RBW-MARKER
  16698. ><RBW-PARABODY>Change the setting of the action destroyAction from Prohibited to Undefined.</RBW-PARABODY
  16699. ></LN.LIST.NUM
  16700. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  16701. ></RBW-AUTOGEN
  16702. ></RBW-MARKER
  16703. ><RBW-PARABODY>Select OK to close the Edit Role Rights window.</RBW-PARABODY
  16704. ></LN.LIST.NUM
  16705. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  16706. ></RBW-AUTOGEN
  16707. ></RBW-MARKER
  16708. ><RBW-PARABODY>Select File | Delete to delete NewSystem.</RBW-PARABODY
  16709. ></LN.LIST.NUM
  16710. ><LR.LIST.RESULT>A confirmation message appears.</LR.LIST.RESULT
  16711. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  16712. ></RBW-AUTOGEN
  16713. ></RBW-MARKER
  16714. ><RBW-PARABODY>Select OK to confirm that you want to delete NewSystem.</RBW-PARABODY
  16715. ></LN.LIST.NUM
  16716. ><LR.LIST.RESULT>The system is deleted.</LR.LIST.RESULT
  16717. ></LABEL
  16718. ></SECTION
  16719. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18012"></RBW-ANCHOR
  16720. >Using Roles</S.SECTION.HEAD
  16721. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16722. >Introduction</L.LABEL
  16723. ><B.BODY>Effective roles determine a user’s access rights; therefore, it is important to control the roles that a user can activate. In ObjectTeam, a user can activate a role only if there is a UserRoleLink between the user and the role.</B.BODY
  16724. ><B.BODY>UserRoleLinks are defined at the Corporate or Project level. Typically, the Corporate administrator creates a basic set of UserRoleLinks at the Corporate level, and the project leader modifies this set by adding UserRoleLinks at the Project level.</B.BODY
  16725. ></LABEL
  16726. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16727. >Examine users and roles</L.LABEL
  16728. ><B.BODY>The <users> and <roles> pseudo objects at the Corporate level define users and roles, respectively. Typically, only the Corporate administrator can create and modify <users> and <roles>.</B.BODY
  16729. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16730. ></RBW-AUTOGEN
  16731. ></RBW-MARKER
  16732. ><RBW-PARABODY>To display a list of all users and roles:</RBW-PARABODY
  16733. ></P.PROCEDURE
  16734. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16735. ></RBW-AUTOGEN
  16736. ></RBW-MARKER
  16737. ><RBW-PARABODY>In the Navigation area of the Browser, fold all Project hierarchies so that you can clearly see the Corporate hierarchy.</RBW-PARABODY
  16738. ></LN.LIST.NUM
  16739. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16740. ></RBW-AUTOGEN
  16741. ></RBW-MARKER
  16742. ><RBW-PARABODY>Locate the <users> pseudo object.</RBW-PARABODY
  16743. ></LN.LIST.NUM
  16744. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  16745. ></RBW-AUTOGEN
  16746. >The pseudo objects are listed below the projects. You might need to scroll the Navigation area to locate <users>.</T2.TIP.2
  16747. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16748. ></RBW-AUTOGEN
  16749. ></RBW-MARKER
  16750. ><RBW-PARABODY>Open <users> by clicking on it.</RBW-PARABODY
  16751. ></LN.LIST.NUM
  16752. ><LR.LIST.RESULT>The users defined in the repository are displayed in the Information area. Notice the icon that represents a user.</LR.LIST.RESULT
  16753. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00080.unk" origfile="pics/br_users.gif" origtype="X" origdoc="../../sources/gs/tut2.fm5.mif"></RBW-GRAPHIC
  16754. ></FAR.FIGURE.ANCHOR.RIGHT
  16755. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  16756. ></RBW-AUTOGEN
  16757. ></RBW-MARKER
  16758. ><RBW-PARABODY>Open <roles> by clicking on it.</RBW-PARABODY
  16759. ></LN.LIST.NUM
  16760. ><LR.LIST.RESULT>The roles defined in the repository are displayed in the Information area. Notice the icon that represents a role.</LR.LIST.RESULT
  16761. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00081.unk" origfile="pics/br_roles.gif" origtype="X" origdoc="../../sources/gs/tut2.fm5.mif"></RBW-GRAPHIC
  16762. ></FAR.FIGURE.ANCHOR.RIGHT
  16763. ></LABEL
  16764. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16765. >Examine UserRoleLinks</L.LABEL
  16766. ><B.BODY>Each user has access to at least one role. A UserRoleLink links the user and the role.</B.BODY
  16767. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16768. ></RBW-AUTOGEN
  16769. ></RBW-MARKER
  16770. ><RBW-PARABODY>To display a list of the roles to which you have access:</RBW-PARABODY
  16771. ></P.PROCEDURE
  16772. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16773. ></RBW-AUTOGEN
  16774. ></RBW-MARKER
  16775. ><RBW-PARABODY>Open the <users> pseudo object by clicking on it.</RBW-PARABODY
  16776. ></LN.LIST.NUM
  16777. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16778. ></RBW-AUTOGEN
  16779. ></RBW-MARKER
  16780. ><RBW-PARABODY>Double&truehy;click on your user name.</RBW-PARABODY
  16781. ></LN.LIST.NUM
  16782. ><LR.LIST.RESULT>Each role to which you have access is displayed in the Information area. This indicates that a UserRoleLink exists between your user name and the role.</LR.LIST.RESULT
  16783. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16784. ></RBW-AUTOGEN
  16785. ></RBW-MARKER
  16786. ><RBW-PARABODY>To display a list of the users who have access to your role:</RBW-PARABODY
  16787. ></P.PROCEDURE
  16788. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16789. ></RBW-AUTOGEN
  16790. ></RBW-MARKER
  16791. ><RBW-PARABODY>Open the <roles> pseudo object by clicking on it.</RBW-PARABODY
  16792. ></LN.LIST.NUM
  16793. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16794. ></RBW-AUTOGEN
  16795. ></RBW-MARKER
  16796. ><RBW-PARABODY>Double&truehy;click on your role.</RBW-PARABODY
  16797. ></LN.LIST.NUM
  16798. ><LR.LIST.RESULT>Each user who has access to that role is displayed in the Information area. This indicates that a UserRoleLink exists between the role and the user.</LR.LIST.RESULT
  16799. ></LABEL
  16800. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16801. >Add a UserRoleLink</L.LABEL
  16802. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16803. ></RBW-AUTOGEN
  16804. ></RBW-MARKER
  16805. ><RBW-PARABODY>To add a UserRoleLink:</RBW-PARABODY
  16806. ></P.PROCEDURE
  16807. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16808. ></RBW-AUTOGEN
  16809. ></RBW-MARKER
  16810. ><RBW-PARABODY>Make sure that you have a role open. (Your role should already be open.)</RBW-PARABODY
  16811. ></LN.LIST.NUM
  16812. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16813. ></RBW-AUTOGEN
  16814. ></RBW-MARKER
  16815. ><RBW-PARABODY>Select File  | New | User Role Link.</RBW-PARABODY
  16816. ></LN.LIST.NUM
  16817. ><LR.LIST.RESULT>The New User Role Link window appears, displaying a list of all users.</LR.LIST.RESULT
  16818. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16819. ></RBW-AUTOGEN
  16820. ></RBW-MARKER
  16821. ><RBW-PARABODY>Select a user, then select OK.</RBW-PARABODY
  16822. ></LN.LIST.NUM
  16823. ><LR.LIST.RESULT>An error message appears, indicating that you do not have permission to perform this action. Typically, only the Corporate administrator can add UserRoleLinks at the Corporate level.</LR.LIST.RESULT
  16824. ></LABEL
  16825. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16826. >UserRoleLinks at the Project level</L.LABEL
  16827. ><B.BODY>Each project includes a <roles> pseudo object that is similar to the Corporate&truehy;level <roles> pseudo object. The Project&truehy;level <roles> object defines the UserRoleLinks for that project. You can examine and add UserRoleLinks to the Project&truehy;level <roles> object in the same way you examine and add UserRoleLinks to the Corporate&truehy;level <roles> object.</B.BODY
  16828. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  16829. ></RBW-AUTOGEN
  16830. ></RBW-MARKER
  16831. ><RBW-PARABODY>To display the UserRoleLinks defined for your role on the Project level:</RBW-PARABODY
  16832. ></P.PROCEDURE
  16833. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  16834. ></RBW-AUTOGEN
  16835. ></RBW-MARKER
  16836. ><RBW-PARABODY>In the Navigation area, locate the <roles> pseudo object for your project.</RBW-PARABODY
  16837. ></LN.LIST.NUM
  16838. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  16839. ></RBW-AUTOGEN
  16840. ></RBW-MARKER
  16841. ><RBW-PARABODY>Open <roles> by clicking on it.</RBW-PARABODY
  16842. ></LN.LIST.NUM
  16843. ><LR.LIST.RESULT>The roles defined in the repository are displayed in the Information area. </LR.LIST.RESULT
  16844. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  16845. ></RBW-AUTOGEN
  16846. ></RBW-MARKER
  16847. ><RBW-PARABODY>Double&truehy;click on your role.</RBW-PARABODY
  16848. ></LN.LIST.NUM
  16849. ><LR.LIST.RESULT>No users are displayed in the Information area. At the Corporate level, you are defined as a user of this role. At the Project level, no additional users have access to this role.</LR.LIST.RESULT
  16850. ></LABEL
  16851. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16852. >What to do next</L.LABEL
  16853. ><B.BODY>This manual has introduced you to many ObjectTeam features. The remainder of the ObjectTeam documentation set describes these and other features in greater detail. Before you begin work in ObjectTeam, you might want to familiarize yourself with the contents of each ObjectTeam manual.</B.BODY
  16854. ><B.BODY></B.BODY
  16855. ><RBWAUTO-0001></RBWAUTO-0001
  16856. ><!--
  16857.  
  16858.  
  16859.  
  16860.  
  16861.  
  16862. CONVERTING SOURCE FILE ../../sources/mg/mgbk.mif
  16863.  
  16864.  
  16865. --><B.BODY></B.BODY
  16866. ><B.BODY></B.BODY
  16867. ><B.BODY></B.BODY
  16868. ><B.BODY></B.BODY
  16869. ><B.BODY></B.BODY
  16870. ></LABEL
  16871. ></SECTION
  16872. ></CHAPTER
  16873. ></BOOK
  16874. ><BOOK><BH.BOOK.HEAD>Modeling Guide</BH.BOOK.HEAD
  16875. ><!--
  16876.  
  16877.  
  16878.  
  16879.  
  16880.  
  16881. CONVERTING SOURCE FILE ../../sources/mg/mgpref.fm5.mif
  16882.  
  16883.  
  16884. --><B.BODY></B.BODY
  16885. ><B.BODY></B.BODY
  16886. ><B.BODY></B.BODY
  16887. ><B.BODY></B.BODY
  16888. ><B.BODY></B.BODY
  16889. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  16890. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  16891. ></RBW-SYSOBJ
  16892. ></CN.CHAPTER.NOX23
  16893. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16894. >About this manual</L.LABEL
  16895. ><B.BODY>This manual describes the ObjectTeam Browser, diagram editors, Check utility, Reports and Class Browser. It is useful for all ObjectTeam users because it describes the core features of the product.</B.BODY
  16896. ></LABEL
  16897. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  16898. >Prerequisites</L.LABEL
  16899. ><B.BODY>This manual assumes that you are familiar with the following products and concepts:</B.BODY
  16900. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16901. ></RBW-AUTOGEN
  16902. ></RBW-MARKER
  16903. ><RBW-PARABODY>The operating system you are using. For more information, refer to your operating system documentation.</RBW-PARABODY
  16904. ></LB.LIST.BULLET
  16905. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16906. ></RBW-AUTOGEN
  16907. ></RBW-MARKER
  16908. ><RBW-PARABODY>The Unified Modeling Language (UML) for Object&truehy;Oriented Development, as developed by Grady Booch, Ivar Jacobson, and James Rumbaugh, or the Object Modeling Technique (OMT), as developed by James Rumbaugh <CX5FX5FTERM>et al</CX5FX5FTERM
  16909. >.</RBW-PARABODY
  16910. ></LB.LIST.BULLET
  16911. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  16912. ></RBW-AUTOGEN
  16913. ></RBW-MARKER
  16914. ><RBW-PARABODY>The basic operation of ObjectTeam, as presented in <CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  16915. ><CX5FX5FTITLE></CX5FX5FTITLE
  16916. >.</RBW-PARABODY
  16917. ></LB.LIST.BULLET
  16918. ><B.BODY><RBW-IDXTERM SEE="Class Definition Matrix" TERM1="CDM"></RBW-IDXTERM
  16919. ><RBW-IDXTERM SEE="Class Association Diagram" TERM1="CAD"></RBW-IDXTERM
  16920. ><RBW-IDXTERM SEEALSO="Class Association Diagram" TERM1="diagram"></RBW-IDXTERM
  16921. ><RBW-IDXTERM SEEALSO="Class Association Diagram" TERM1="Object Model"></RBW-IDXTERM
  16922. ><RBW-IDXTERM SEEALSO="Class Association Diagram" TERM1=""></RBW-IDXTERM
  16923. ><RBW-IDXTERM SEE="Object Model" SEEALSO="Class Association Diagram" TERM1="Class Association Model"></RBW-IDXTERM
  16924. ><RBW-IDXTERM SEE="Class Communication Diagram" TERM1="CCD"></RBW-IDXTERM
  16925. ><RBW-IDXTERM SEE="Class Communication Diagram" SEEALSO="Class Communication Diagram" TERM1="diagram"></RBW-IDXTERM
  16926. ><RBW-IDXTERM SEEALSO="Class Communication Diagram" TERM1="Class Communication Model"></RBW-IDXTERM
  16927. > <RBW-IDXTERM SEEALSO="Data Flow Diagram" TERM1="diagram"></RBW-IDXTERM
  16928. ><RBW-IDXTERM SEEALSO="Data Flow Diagram" TERM1=""></RBW-IDXTERM
  16929. ><RBW-IDXTERM SEEALSO="Data Flow Diagram" TERM1="Functional Model"></RBW-IDXTERM
  16930. > <RBW-IDXTERM SEE="Data Flow Diagram" TERM1="DFD"></RBW-IDXTERM
  16931. > <RBW-IDXTERM SEE="Event Trace Diagram" TERM1="ETD"></RBW-IDXTERM
  16932. ><RBW-IDXTERM SEE="Event Trace Diagram" SEEALSO="Event Trace Diagram" TERM1="diagram"></RBW-IDXTERM
  16933. > <RBW-IDXTERM SEEALSO="Event Trace Diagram" TERM1="Dynamic Model"></RBW-IDXTERM
  16934. > <RBW-IDXTERM SEE="actor" TERM1="external agent"></RBW-IDXTERM
  16935. ><RBW-IDXTERM SEE="initiator" TERM1="external agent"></RBW-IDXTERM
  16936. > <RBW-IDXTERM SEE="Message Generalization Diagram" TERM1="MGD"></RBW-IDXTERM
  16937. ><RBW-IDXTERM SEE="Message Generalization Diagram" SEEALSO="Message Generalization Diagram" TERM1="diagram"></RBW-IDXTERM
  16938. > <RBW-IDXTERM SEEALSO="Message Generalization Diagram" TERM1="Class Communication Model"></RBW-IDXTERM
  16939. > <RBW-IDXTERM SEE="State Transition Diagram" TERM1="STD"></RBW-IDXTERM
  16940. ><RBW-IDXTERM SEE="State Transition Diagram" SEEALSO="State Transition Diagram" TERM1="diagram"></RBW-IDXTERM
  16941. > <RBW-IDXTERM SEEALSO="State Transition Diagram" TERM1="Dynamic Model"></RBW-IDXTERM
  16942. ><RBW-IDXTERM SEEALSO="State Transition Diagram" TERM1=""></RBW-IDXTERM
  16943. ><RBW-IDXTERM SEE="Use Case Diagram" SEEALSO="State Transition Diagram" TERM1="Jacobson Use Case"></RBW-IDXTERM
  16944. > <RBW-IDXTERM SEEALSO="Use Case Diagram" TERM1="Dynamic Model"></RBW-IDXTERM
  16945. > <RBW-IDXTERM SEE="Use Case Diagram" TERM1="UCD"></RBW-IDXTERM
  16946. ><RBW-IDXTERM SEE="Use Case Diagram" SEEALSO="Use Case Diagram" TERM1="diagram"></RBW-IDXTERM
  16947. > <RBW-IDXTERM SEEALSO="diagram" TERM1="Use Case Diagram"></RBW-IDXTERM
  16948. ><RBW-IDXTERM SEEALSO="diagram" TERM1=""></RBW-IDXTERM
  16949. ><RBW-IDXTERM SEEALSO="diagram" TERM1="Class Association Diagram"></RBW-IDXTERM
  16950. > <RBW-IDXTERM SEEALSO="diagram" TERM1="Class Communication Diagram"></RBW-IDXTERM
  16951. ><RBW-IDXTERM SEEALSO="diagram" TERM1=""></RBW-IDXTERM
  16952. ><RBW-IDXTERM SEEALSO="diagram" TERM1="Data Flow Diagram"></RBW-IDXTERM
  16953. > <RBW-IDXTERM SEEALSO="diagram" TERM1="Event Trace Diagram"></RBW-IDXTERM
  16954. ><RBW-IDXTERM SEEALSO="diagram" TERM1=""></RBW-IDXTERM
  16955. ><RBW-IDXTERM SEEALSO="diagram" TERM1="Message Generalization Diagram"></RBW-IDXTERM
  16956. > <RBW-IDXTERM SEEALSO="diagram" TERM1="State Transition Diagram"></RBW-IDXTERM
  16957. > <RBW-IDXTERM SEE="Browser" TERM1="ObjectTeam Browser"></RBW-IDXTERM
  16958. ><RBW-IDXTERM SEE="Browser" TERM1="information area"></RBW-IDXTERM
  16959. ><RBW-IDXTERM SEE="Browser" TERM1="navigation area"></RBW-IDXTERM
  16960. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="actor"></RBW-IDXTERM
  16961. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16962. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="aggregation"></RBW-IDXTERM
  16963. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16964. ><RBW-IDXTERM SEEALSO="diagram comp" TERM1="association"></RBW-IDXTERM
  16965. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="class"></RBW-IDXTERM
  16966. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16967. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="class reference"></RBW-IDXTERM
  16968. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="communication association"></RBW-IDXTERM
  16969. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16970. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="communication message"></RBW-IDXTERM
  16971. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16972. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="container class"></RBW-IDXTERM
  16973. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16974. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="data flow"></RBW-IDXTERM
  16975. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="data process"></RBW-IDXTERM
  16976. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16977. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="data store"></RBW-IDXTERM
  16978. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16979. ><RBW-IDXTERM SEEALSO="diagra" TERM1="event"></RBW-IDXTERM
  16980. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="event message"></RBW-IDXTERM
  16981. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16982. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="final state"></RBW-IDXTERM
  16983. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16984. ><RBW-IDXTERM SEEALSO="dia" TERM1="flow"></RBW-IDXTERM
  16985. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="generalization"></RBW-IDXTERM
  16986. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16987. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="initial state"></RBW-IDXTERM
  16988. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="initiator"></RBW-IDXTERM
  16989. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16990. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="link attribute"></RBW-IDXTERM
  16991. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16992. ><RBW-IDXTERM SEEALSO="di" TERM1="message"></RBW-IDXTERM
  16993. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="message generalization connector"></RBW-IDXTERM
  16994. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16995. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="more classes"></RBW-IDXTERM
  16996. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="n-ary association"></RBW-IDXTERM
  16997. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  16998. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="overlapping generalization"></RBW-IDXTERM
  16999. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="process"></RBW-IDXTERM
  17000. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  17001. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="qualified aggregation"></RBW-IDXTERM
  17002. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="qualified association"></RBW-IDXTERM
  17003. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  17004. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="state"></RBW-IDXTERM
  17005. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="subject"></RBW-IDXTERM
  17006. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  17007. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="super state"></RBW-IDXTERM
  17008. > <RBW-IDXTERM SEEALSO="diagram component" TERM1="use case generalization"></RBW-IDXTERM
  17009. ><RBW-IDXTERM SEEALSO="diagram component" TERM1=""></RBW-IDXTERM
  17010. ><RBW-IDXTERM SEEALSO="diagram component" TERM1="object"></RBW-IDXTERM
  17011. > </B.BODY
  17012. ><RBWAUTO-0001></RBWAUTO-0001
  17013. ><!--
  17014.  
  17015.  
  17016.  
  17017.  
  17018.  
  17019. CONVERTING SOURCE FILE ../../sources/mg/mghier.fm5.mif
  17020.  
  17021.  
  17022. --><B.BODY></B.BODY
  17023. ><B.BODY></B.BODY
  17024. ><B.BODY></B.BODY
  17025. ><B.BODY></B.BODY
  17026. ><B.BODY></B.BODY
  17027. ></LABEL
  17028. ></CHAPTERNONUM
  17029. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  17030. ></RBW-AUTOGEN
  17031. >Working With ObjectTeam<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  17032. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  17033. ></RBW-SYSOBJ
  17034. ></C.CHAPTER.HEAD
  17035. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17036. >Introduction</L.LABEL
  17037. ><B.BODY>This chapter explains the basic concepts of the Cayenne Browser and ObjectTeam projects. It also describes the pseudo objects used for project management and suggests a workflow for ObjectTeam projects.</B.BODY
  17038. ></LABEL
  17039. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17040. >Prerequisite</L.LABEL
  17041. ><B.BODY>You need to be familiar with the information in the <CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  17042. ><CX5FX5FTITLE></CX5FX5FTITLE
  17043. >.</B.BODY
  17044. ></LABEL
  17045. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17046. >In this chapter</L.LABEL
  17047. ><B.BODY>This chapter contains the following sections:</B.BODY
  17048. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  17049. ></ENTRY
  17050. ></RBW-ROW
  17051. ></THEAD
  17052. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37719" TYPE="XREF-TEXTCOPY">Cayenne Browser&rbwtab;1–2</RBW-XREF
  17053. ></SB.SECTION.BLOCK.TABLE
  17054. ></ENTRY
  17055. ></RBW-ROW
  17056. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18713" TYPE="XREF-TEXTCOPY">ObjectTeam Project Hierarchy&rbwtab;1–4</RBW-XREF
  17057. ></SB.SECTION.BLOCK.TABLE
  17058. ></ENTRY
  17059. ></RBW-ROW
  17060. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38536" TYPE="XREF-TEXTCOPY">Pseudo Objects&rbwtab;1–7</RBW-XREF
  17061. ></SB.SECTION.BLOCK.TABLE
  17062. ></ENTRY
  17063. ></RBW-ROW
  17064. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25029" TYPE="XREF-TEXTCOPY">Workflow&rbwtab;1–9</RBW-XREF
  17065. ></SB.SECTION.BLOCK.TABLE
  17066. ></ENTRY
  17067. ></RBW-ROW
  17068. ></TBODY
  17069. ></TGROUP
  17070. ></RBW-TABLE
  17071. ></LABEL
  17072. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37719"></RBW-ANCHOR
  17073. >Cayenne Browser</S.SECTION.HEAD
  17074. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17075. >Introduction</L.LABEL
  17076. ><B.BODY>The Cayenne Browser provides access to the Cayenne repository and user&truehy;level customization files.</B.BODY
  17077. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00082.unk" origfile="pics/ovuser.gif" origtype="X" origdoc="../../sources/mg/mghier.fm5.mif"></RBW-GRAPHIC
  17078. ></FA.FIGURE.ANCHOR
  17079. ></LABEL
  17080. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17081. >Cayenne repository</L.LABEL
  17082. ><B.BODY>The root node of the Browser hierarchy represents the Cayenne repository and has the same name as the repository. This node is created and deleted when the repository administrator creates and deletes the repository. It cannot be created, deleted, or renamed from within the Browser.</B.BODY
  17083. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17084. >Corporate level</SL.SUBLABEL
  17085. ><B.BODY><CX5FX5FTERM>Corporate level</CX5FX5FTERM
  17086. > refers to the items immediately below the root node. The following figure shows the corporate level in the Browser. In this figure, the name of the repository is <CX5FX5FOBJECT.NAME>corporate</CX5FX5FOBJECT.NAME
  17087. >.</B.BODY
  17088. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00083.unk" origfile="pics/ovcorp.gif" origtype="X" origdoc="../../sources/mg/mghier.fm5.mif"></RBW-GRAPHIC
  17089. ></FA.FIGURE.ANCHOR
  17090. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17091. >ObjectTeam projects</SL.SUBLABEL
  17092. ><B.BODY>Corporate level lists each ObjectTeam project in the repository. ObjectTeam projects are indicated by the following icon. In the figure shown above, the repository named <CX5FX5FOBJECT.NAME>corporate</CX5FX5FOBJECT.NAME
  17093. > contains two projects, ProjectOne and ProjectTwo.</B.BODY
  17094. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00084.unk" origfile="pics/projicon.gif" origtype="X" origdoc="../../sources/mg/mghier.fm5.mif"></RBW-GRAPHIC
  17095. ></FA.FIGURE.ANCHOR
  17096. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17097. >GroundWorks models</SL.SUBLABEL
  17098. ><B.BODY>If the Cayenne repository also contains GroundWorks Enterprise models, they also appear beneath the root node. This guide describes ObjectTeam only. For information about GroundWorks models, see the GroundWorks documentation.</B.BODY
  17099. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17100. >Pseudo objects</SL.SUBLABEL
  17101. ><B.BODY>Following the list of projects and models are the corporate&truehy;level pseudo objects. Pseudo objects, whose names are enclosed in angle brackets (<>), contain information that is used with project management features such as access control and customization. For more information, see <RBW-XREF REFID="38536" TYPE="XREF-TEXTCOPY">Pseudo Objects</RBW-XREF
  17102. >.</B.BODY
  17103. ></LABEL
  17104. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17105. >User customization files</L.LABEL
  17106. ><B.BODY>User customization files are in the home directory of the current user, not in the repository. For that reason, the <user customization files> node is not under the root node of the Browser hierarchy.</B.BODY
  17107. ><B.BODY><CX5FX5FTERM>User Customization level</CX5FX5FTERM
  17108. > refers to the user customization files, which are listed immediately below the <user customization files> node. The following figure shows the user customization level in the Browser.</B.BODY
  17109. ><Q.QUERY><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZQUERY.CHARACTER>+&rbwtab;</CX5FX5FZQUERY.CHARACTER
  17110. ></RBW-AUTOGEN
  17111. ></RBW-MARKER
  17112. ><RBW-PARABODY>new picture with <user customization files> unfolded</RBW-PARABODY
  17113. ></Q.QUERY
  17114. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00085.unk" origfile="pics/ovuser.gif" origtype="X" origdoc="../../sources/mg/mghier.fm5.mif"></RBW-GRAPHIC
  17115. ></FA.FIGURE.ANCHOR
  17116. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17117. >For more information</SL.SUBLABEL
  17118. ><B.BODY>See <RBW-XREF REFID="38536" TYPE="XREF-TEXTCOPY">Pseudo Objects</RBW-XREF
  17119. > for more information about customization files.</B.BODY
  17120. ><B.BODY></B.BODY
  17121. ></LABEL
  17122. ></SECTION
  17123. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18713"></RBW-ANCHOR
  17124. >ObjectTeam Project Hierarchy</S.SECTION.HEAD
  17125. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17126. >Introduction</L.LABEL
  17127. ><B.BODY>The Cayenne Browser provides access to the Cayenne repository and user&truehy;level customization files. It also provides access to ObjectTeam projects and serves as the main interface to ObjectTeam.</B.BODY
  17128. ><B.BODY>In the Browser, the corporate level lists each ObjectTeam project in the repository. The information is arranged hierarchically beneath each project node. A clear understanding of the project hierarchy is helpful when working in the Browser.</B.BODY
  17129. ></LABEL
  17130. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17131. >Project data and pseudo objects</L.LABEL
  17132. ><B.BODY>Each level of the project hierarchy contains project data and pseudo objects. This section describes the project data.</B.BODY
  17133. ><B.BODY>Pseudo objects, whose names are enclosed in angle brackets (<>), contain information that is used with project management features such as access control and customization. For more information, see <RBW-XREF REFID="38536" TYPE="XREF-TEXTCOPY">Pseudo Objects</RBW-XREF
  17134. >.</B.BODY
  17135. ></LABEL
  17136. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17137. >Project level</L.LABEL
  17138. ><B.BODY><CX5FX5FEMPHASIS>Project level</CX5FX5FEMPHASIS
  17139. > refers to the items immediately below a project node. The following figure shows the project level in the Browser.</B.BODY
  17140. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00086.unk" origfile="pics/ovproj.gif" origtype="X" origdoc="../../sources/mg/mghier.fm5.mif"></RBW-GRAPHIC
  17141. ></FA.FIGURE.ANCHOR
  17142. ><B.BODY>The project level lists each configuration version in the project. The project shown above has one configuration version, ConfigurationOne. Following the configuration versions are the project&truehy;level pseudo objects. </B.BODY
  17143. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17144. >Configuration versions</SL.SUBLABEL
  17145. ><B.BODY>Configuration versions are used for version management. A project can have one or more Configuration versions. Each configuration version can be used by one or more project team members. The <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  17146. ><CX5FX5FTITLE></CX5FX5FTITLE
  17147. > describes configuration and version management.</B.BODY
  17148. ></LABEL
  17149. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17150. >Configuration level</L.LABEL
  17151. ><B.BODY><CX5FX5FEMPHASIS>Configuration level</CX5FX5FEMPHASIS
  17152. > refers to the items immediately below a configuration version node. The following figure shows the configuration level in the Browser.</B.BODY
  17153. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00087.unk" origfile="pics/ovconf.gif" origtype="X" origdoc="../../sources/mg/mghier.fm5.mif"></RBW-GRAPHIC
  17154. ></FA.FIGURE.ANCHOR
  17155. ><B.BODY>The configuration level lists each phase version in the project. The configuration shown above has four phase versions: Analysis, System Design, Object Design, and Implementation. Following the phase versions are the configuration&truehy;level pseudo objects. </B.BODY
  17156. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17157. >Phase versions</SL.SUBLABEL
  17158. ><B.BODY>Phase versions are used to manage the project life cycle, as described in <RBW-XREF REFID="25029" TYPE="XREF-TEXTCOPY">Workflow</RBW-XREF
  17159. >.</B.BODY
  17160. ></LABEL
  17161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17162. >Phase level</L.LABEL
  17163. ><BI.BODY.INTRO><CX5FX5FEMPHASIS>Phase level</CX5FX5FEMPHASIS
  17164. > refers to the items immediately below a phase version node. The following figure shows the phase level in the Browser.</BI.BODY.INTRO
  17165. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00088.unk" origfile="pics/ovphase.gif" origtype="X" origdoc="../../sources/mg/mghier.fm5.mif"></RBW-GRAPHIC
  17166. ></FA.FIGURE.ANCHOR
  17167. ><B.BODY>The phase level lists each system and document version in the project. The Analysis phase version shown above has one document version and two system versions. Following the document and system versions are the phase&truehy;level pseudo objects.</B.BODY
  17168. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17169. >System versions</SL.SUBLABEL
  17170. ><B.BODY>System versions contain the model information, such as the diagrams and the objects defined in the diagrams. This guide describes how to create and maintain diagrams and other model information.</B.BODY
  17171. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17172. >Document versions</SL.SUBLABEL
  17173. ><B.BODY>Each document version contains complete, formatted documentation for one system version. For more information about how to create this documentation, see the <CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  17174. ><CX5FX5FTITLE></CX5FX5FTITLE
  17175. >.</B.BODY
  17176. ></LABEL
  17177. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17178. >System level</L.LABEL
  17179. ><BI.BODY.INTRO><CX5FX5FEMPHASIS>System level</CX5FX5FEMPHASIS
  17180. > refers to the items immediately below a system version node. The following figure shows system level in the Browser:</BI.BODY.INTRO
  17181. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00089.unk" origfile="pics/ovsys.gif" origtype="X" origdoc="../../sources/mg/mghier.fm5.mif"></RBW-GRAPHIC
  17182. ></FA.FIGURE.ANCHOR
  17183. ><B.BODY>The system level lists the file versions in the system (the diagrams and class definition matrices (CDMs)). The system shown above contains two file versions. Following the file versions are the system&truehy;level pseudo objects. </B.BODY
  17184. ></LABEL
  17185. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17186. >Document level</L.LABEL
  17187. ><B.BODY><CX5FX5FEMPHASIS>Document level</CX5FX5FEMPHASIS
  17188. > refers to the items immediately below a document version node. The document level in the Browser contains the file versions in the document. See the <CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  17189. ><CX5FX5FTITLE></CX5FX5FTITLE
  17190. > for more information.</B.BODY
  17191. ></LABEL
  17192. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17193. >Who uses which level</L.LABEL
  17194. ><B.BODY>Project team members generally work on the system and document levels, creating and maintaining the model information. They rarely need to work with the system&truehy; or document&truehy;level pseudo objects, but they can if necessary. Project team members may also create and maintain customization files on the user customization level.</B.BODY
  17195. ><B.BODY>Project leaders create and maintain projects and are responsible for all project&truehy;level data. If a project contains only one configuration version, the project leader generally maintains the configuration&truehy; and phase&truehy;level data also. If a project contains multiple configuration versions, the project leader may delegate maintenance of each configuration version to a senior project team member, who then maintains the configuration&truehy; and phase&truehy;level data for it.</B.BODY
  17196. ><B.BODY></B.BODY
  17197. ></LABEL
  17198. ></SECTION
  17199. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="38536"></RBW-ANCHOR
  17200. >Pseudo Objects</S.SECTION.HEAD
  17201. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17202. >Introduction</L.LABEL
  17203. ><B.BODY>Each level of the Browser hierarchy includes pseudo objects. The names of these objects are enclosed in angle brackets (<>). The following table lists the pseudo objects and what they are used for:</B.BODY
  17204. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="145p"><COLSPEC COLNAME="2" COLWIDTH="174p"><COLSPEC COLNAME="3" COLWIDTH="165p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Purpose</CELLHEADING
  17205. ></ENTRY
  17206. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Pseudo Object</CELLHEADING
  17207. ></ENTRY
  17208. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Browser Level</CELLHEADING
  17209. ></ENTRY
  17210. ></RBW-ROW
  17211. ></THEAD
  17212. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Controlling access (Security)</CELLBODY
  17213. ></ENTRY
  17214. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><users></CELLBODY
  17215. ></ENTRY
  17216. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate</CELLBODY
  17217. ></ENTRY
  17218. ></RBW-ROW
  17219. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  17220. ></ENTRY
  17221. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><roles></CELLBODY
  17222. ></ENTRY
  17223. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate and Project</CELLBODY
  17224. ></ENTRY
  17225. ></RBW-ROW
  17226. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  17227. ></ENTRY
  17228. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><controlled classes></CELLBODY
  17229. ></ENTRY
  17230. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate and Project</CELLBODY
  17231. ></ENTRY
  17232. ></RBW-ROW
  17233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  17234. ></ENTRY
  17235. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><controlled lists>, <access rules></CELLBODY
  17236. ></ENTRY
  17237. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Configuration, Phase, System, and Document</CELLBODY
  17238. ></ENTRY
  17239. ></RBW-ROW
  17240. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customization</CELLBODY
  17241. ></ENTRY
  17242. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><customization files></CELLBODY
  17243. ></ENTRY
  17244. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Configuration, Phase, System, and Document</CELLBODY
  17245. ></ENTRY
  17246. ></RBW-ROW
  17247. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  17248. ></ENTRY
  17249. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><user customization files></CELLBODY
  17250. ></ENTRY
  17251. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>User Customization</CELLBODY
  17252. ></ENTRY
  17253. ></RBW-ROW
  17254. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sharing groups (Corporate modeling)</CELLBODY
  17255. ></ENTRY
  17256. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><corporate groups></CELLBODY
  17257. ></ENTRY
  17258. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate</CELLBODY
  17259. ></ENTRY
  17260. ></RBW-ROW
  17261. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  17262. ></ENTRY
  17263. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><saved groups></CELLBODY
  17264. ></ENTRY
  17265. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>System</CELLBODY
  17266. ></ENTRY
  17267. ></RBW-ROW
  17268. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Listing items</CELLBODY
  17269. ></ENTRY
  17270. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><defined items></CELLBODY
  17271. ></ENTRY
  17272. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>System and Document</CELLBODY
  17273. ></ENTRY
  17274. ></RBW-ROW
  17275. ></TBODY
  17276. ></TGROUP
  17277. ></RBW-TABLE
  17278. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  17279. ></RBW-AUTOGEN
  17280. >The Security and Corporate Modeling features are available as licensed modules. You will only see the associated pseudo&truehy;objects if these features are licensed at your site and switched on.</N.NOTE
  17281. ></LABEL
  17282. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17283. >Access control (Security)</L.LABEL
  17284. ><B.BODY>The repository is a shared resource. To protect it, ObjectTeam provides a rich access control mechanism.</B.BODY
  17285. ><B.BODY>At the corporate level, the repository administrator can use the access control mechanism to grant users access to appropriate areas of the repository, while restricting their access to other areas. At lower levels, project leaders and project team members can use the same access control mechanism to further restrict access to their own areas of the repository.</B.BODY
  17286. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17287. >For more information</SL.SUBLABEL
  17288. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  17289. ><CX5FX5FTITLE></CX5FX5FTITLE
  17290. >.</B.BODY
  17291. ></LABEL
  17292. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17293. >Customization</L.LABEL
  17294. ><B.BODY>Most of the ObjectTeam product can be customized.</B.BODY
  17295. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17296. ></RBW-AUTOGEN
  17297. ></RBW-MARKER
  17298. ><RBW-PARABODY>At the corporate level, customization files are stored in the Cayenne installation directory. The repository administrator can modify these files (with great care).</RBW-PARABODY
  17299. ></LB.LIST.BULLET
  17300. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17301. ></RBW-AUTOGEN
  17302. ></RBW-MARKER
  17303. ><RBW-PARABODY>At the project, configuration, phase, system, and document levels, the customization files are <CX5FX5FEMPHASIS>internal</CX5FX5FEMPHASIS
  17304. > files stored in the repository, not in the file system of the computer.</RBW-PARABODY
  17305. ></LB.LIST.BULLET
  17306. ><LT.LIST.TEXT>These customization files override or supplement the corporate&truehy;level customization files (for example, if you are working at the system level, the customization files defined at the system level take precedence over those defined at all higher levels). They are created and modified by the project leader or a senior project team member.</LT.LIST.TEXT
  17307. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17308. ></RBW-AUTOGEN
  17309. ></RBW-MARKER
  17310. ><RBW-PARABODY>At the user customization level, the customization files are stored in the home directory of the current user. They are created and maintained by the user and override all other customization files.</RBW-PARABODY
  17311. ></LB.LIST.BULLET
  17312. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17313. >For more information</SL.SUBLABEL
  17314. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  17315. ><CX5FX5FTITLE></CX5FX5FTITLE
  17316. >.</B.BODY
  17317. ></LABEL
  17318. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17319. >Sharing groups (Corporate modeling)</L.LABEL
  17320. ><B.BODY>A <CX5FX5FEMPHASIS>group</CX5FX5FEMPHASIS
  17321. > is a set of file versions and items; for example, a group might contain part of a diagram and the items defined in that part of the diagram. You can use groups to allow reuse of model data. </B.BODY
  17322. ><B.BODY>At the system level, you create a group. You then promote that saved group to corporate level where it can be reused by ObjectTeam users on other projects. This process is called <CX5FX5FTERM>corporate modeling</CX5FX5FTERM
  17323. >.</B.BODY
  17324. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17325. >For more information</SL.SUBLABEL
  17326. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  17327. ><CX5FX5FTITLE></CX5FX5FTITLE
  17328. >.</B.BODY
  17329. ></LABEL
  17330. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17331. >Listing items</L.LABEL
  17332. ><B.BODY>At the system and document level you create diagrams, documents, and other model information. ObjectTeam stores this information as <CX5FX5FEMPHASIS>items</CX5FX5FEMPHASIS
  17333. > in the repository. The pseudo object <defined items> provides a complete list of all repository items defined in a system or document version.</B.BODY
  17334. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17335. >For more information</SL.SUBLABEL
  17336. ><B.BODY>See <RBW-XREF REFID="29698" TYPE="XREF-TEXTCOPY">Working With Items</RBW-XREF
  17337. >.</B.BODY
  17338. ></LABEL
  17339. ></SECTION
  17340. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25029"></RBW-ANCHOR
  17341. >Workflow</S.SECTION.HEAD
  17342. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17343. >Introduction<RBW-IDXTERM TERM1="phase" TERM2="definition of"></RBW-IDXTERM
  17344. ></L.LABEL
  17345. ><B.BODY>ObjectTeam supports models&truehy;to&truehy;code application development. In ObjectTeam, you progress from models to code by moving a project through the following phases of software development.</B.BODY
  17346. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17347. ></RBW-AUTOGEN
  17348. ></RBW-MARKER
  17349. ><RBW-PARABODY>Analysis</RBW-PARABODY
  17350. ></LB.LIST.BULLET
  17351. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17352. ></RBW-AUTOGEN
  17353. ></RBW-MARKER
  17354. ><RBW-PARABODY>System Design</RBW-PARABODY
  17355. ></LB.LIST.BULLET
  17356. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17357. ></RBW-AUTOGEN
  17358. ></RBW-MARKER
  17359. ><RBW-PARABODY>Object Design</RBW-PARABODY
  17360. ></LB.LIST.BULLET
  17361. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17362. ></RBW-AUTOGEN
  17363. ></RBW-MARKER
  17364. ><RBW-PARABODY>Implementation</RBW-PARABODY
  17365. ></LB.LIST.BULLET
  17366. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17367. >Customizing phases</SL.SUBLABEL
  17368. ><B.BODY>ObjectTeam provides the above four phases by default. Depending on the needs of your project or organization, you may wish to insert additional phases, or delete them. If you want to do this, you must define the number of phases and their order before you start creating phases. See the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  17369. ><CX5FX5FTITLE></CX5FX5FTITLE
  17370. > for more information.<RBW-IDXTERM TERM1="phase" TERM2="customizing"></RBW-IDXTERM
  17371. ><RBW-IDXTERM TERM1="customizing" TERM2="phases"></RBW-IDXTERM
  17372. ></B.BODY
  17373. ></LABEL
  17374. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17375. >Phase versions</L.LABEL
  17376. ><B.BODY>In ObjectTeam, phases are not just conceptual, they are also objects in the repository. When you move from one phase to the next, you copy your system versions from one phase version to the next. For example, when you move from analysis to system design, you copy your system versions from the Analysis phase version to the System Design phase version.</B.BODY
  17377. ></LABEL
  17378. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17379. >Models are preserved</L.LABEL
  17380. ><B.BODY>As you move from analysis toward implementation, the nature of your model changes. However, because you copy (rather than move) your system versions from one phase version to the next, the models created during each phase are preserved. </B.BODY
  17381. ><B.BODY>Changes made to a system in one phase do not affect that system in any other phase. For example, after you move a system from the Analysis phase to the System Design phase, you can work on it without affecting the copy in the Analysis phase. You can still go back and change the system in the Analysis phase. If you do so, however, you should evaluate whether you need to update the System Design phase as a result.</B.BODY
  17382. ></LABEL
  17383. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17384. >Workflow<RBW-IDXTERM TERM1="workflow"></RBW-IDXTERM
  17385. ></L.LABEL
  17386. ><B.BODY>The following steps summarize the basic workflow for an ObjectTeam project:</B.BODY
  17387. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17388. ></RBW-AUTOGEN
  17389. ></RBW-MARKER
  17390. ><RBW-PARABODY>Create a project.</RBW-PARABODY
  17391. ></LN.LIST.NUM
  17392. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17393. ></RBW-AUTOGEN
  17394. ></RBW-MARKER
  17395. ><RBW-PARABODY>Create a configuration version.</RBW-PARABODY
  17396. ></LN.LIST.NUM
  17397. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  17398. ></RBW-AUTOGEN
  17399. ></RBW-MARKER
  17400. ><RBW-PARABODY>Create an Analysis phase version in that configuration version.</RBW-PARABODY
  17401. ></LN.LIST.NUM
  17402. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  17403. ></RBW-AUTOGEN
  17404. ></RBW-MARKER
  17405. ><RBW-PARABODY>Create one or more system versions in the Analysis phase version.</RBW-PARABODY
  17406. ></LN.LIST.NUM
  17407. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  17408. ></RBW-AUTOGEN
  17409. ></RBW-MARKER
  17410. ><RBW-PARABODY>Create and populate diagrams in each system version, developing the system version to meet the objectives of the current phase.</RBW-PARABODY
  17411. ></LN.LIST.NUM
  17412. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  17413. ></RBW-AUTOGEN
  17414. ></RBW-MARKER
  17415. ><RBW-PARABODY>Optionally, create a document version for each system version and generate formal project documentation.</RBW-PARABODY
  17416. ></LN.LIST.NUM
  17417. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  17418. ></RBW-AUTOGEN
  17419. ></RBW-MARKER
  17420. ><RBW-PARABODY>Move the system versions to the next phase: create the new phase version in your configuration version and import the system versions to the new phase version.</RBW-PARABODY
  17421. ></LN.LIST.NUM
  17422. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  17423. ></RBW-AUTOGEN
  17424. ></RBW-MARKER
  17425. ><RBW-PARABODY>Repeat steps 5 through 7 until you have moved all systems through all phases.</RBW-PARABODY
  17426. ></LN.LIST.NUM
  17427. ></LABEL
  17428. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17429. >Analysis and System Design phases<RBW-IDXTERM TERM1="phase" TERM2="summary of"></RBW-IDXTERM
  17430. ></L.LABEL
  17431. ><B.BODY>The Analysis and System Design phases are independent of the target language.</B.BODY
  17432. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17433. >Analysis<RBW-IDXTERM TERM1="Analysis phase" TERM2="summary of"></RBW-IDXTERM
  17434. ></SL.SUBLABEL
  17435. ><B.BODY>In the Analysis phase, you model the business situation without considering technical aspects, such as what operating systems, databases, or programming languages to use. End users must be able to understand the analysis models because they must validate them.</B.BODY
  17436. ><B.BODY>Analysis should not include implementation decisions. The analysis model states what must be done without placing restrictions on how it will be done. Worrying about implementation during this phase impedes your efforts to fully understand your customer requirements.</B.BODY
  17437. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17438. >System Design<RBW-IDXTERM TERM1="System Design phase" TERM2="summary of"></RBW-IDXTERM
  17439. ></SL.SUBLABEL
  17440. ><B.BODY>In the System Design phase, you design the application architecture, identify subsystems, and allocate the subsystems to specific hardware. Your objective is to create a high&truehy;level structure of the system, figuring out the classes required to build the functionality and organizing them so that related groups are defined and stored in systems. </B.BODY
  17441. ><B.BODY>During the System Design phase, you focus on the items you need to solve the problem. The decisions you make concern the graphical user interface (GUI), the database management system, and the hardware and software configuration.</B.BODY
  17442. ></LABEL
  17443. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17444. >Object Design and Implementation phases</L.LABEL
  17445. ><B.BODY>The Object Design and Implementation phases address the issues specific to the target language, and are designed to be used with the ObjectTeam code generators. If you are not planning to generate code using ObjectTeam, you generally do not use these two phases.</B.BODY
  17446. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17447. >Object Design<RBW-IDXTERM TERM1="Object Design phase" TERM2="summary of"></RBW-IDXTERM
  17448. ></SL.SUBLABEL
  17449. ><BI.BODY.INTRO>You carry out two tasks in the Object Design phase:</BI.BODY.INTRO
  17450. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17451. ></RBW-AUTOGEN
  17452. ></RBW-MARKER
  17453. ><RBW-PARABODY>Choosing an ObjectTeam code generator. This choice determines which object properties and Browser menu items are available to you. </RBW-PARABODY
  17454. ></LN.LIST.NUM
  17455. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17456. ></RBW-AUTOGEN
  17457. ></RBW-MARKER
  17458. ><RBW-PARABODY>Adding to the system versions the implementation details necessary for successful code generation. </RBW-PARABODY
  17459. ></LN.LIST.NUM
  17460. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17461. >Implementation<RBW-IDXTERM TERM1="Implementation phase" TERM2="summary of"></RBW-IDXTERM
  17462. ></SL.SUBLABEL
  17463. ><B.BODY>When you copy a system from the Object Design phase, ObjectTeam translates your model data into source code files. In the Implementation phase, you edit the generated source code files to refine and complete the application.</B.BODY
  17464. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17465. >For more information</SL.SUBLABEL
  17466. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  17467. ><CX5FX5FTITLE></CX5FX5FTITLE
  17468. > for your target language provides more information about the Object Design and Implementation phases, and complete instructions for generating code.</B.BODY
  17469. ><B.BODY></B.BODY
  17470. ><B.BODY></B.BODY
  17471. ><RBWAUTO-0001></RBWAUTO-0001
  17472. ><!--
  17473.  
  17474.  
  17475.  
  17476.  
  17477.  
  17478. CONVERTING SOURCE FILE ../../sources/mg/mgbrows.fm5.mif
  17479.  
  17480.  
  17481. --><B.BODY></B.BODY
  17482. ><B.BODY></B.BODY
  17483. ><B.BODY></B.BODY
  17484. ><B.BODY></B.BODY
  17485. ><B.BODY></B.BODY
  17486. ></LABEL
  17487. ></SECTION
  17488. ></CHAPTER
  17489. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  17490. ></RBW-AUTOGEN
  17491. ><DEFAULT-CLFTYPE></DEFAULT-CLFTYPE
  17492. >Using the ObjectTeam Browser<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  17493. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  17494. ></RBW-SYSOBJ
  17495. ></C.CHAPTER.HEAD
  17496. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17497. >Introduction</L.LABEL
  17498. ><B.BODY>When <RBW-IDXTERM TERM1="Browser" TERM2="features"></RBW-IDXTERM
  17499. ><RBW-IDXTERM TERM1="user interface"></RBW-IDXTERM
  17500. ><RBW-IDXTERM TERM1="main window"></RBW-IDXTERM
  17501. >you start ObjectTeam, the ObjectTeam Browser appears. From the Browser, you can access and manipulate all project data. </B.BODY
  17502. ><B.BODY>This chapter describes basic features of the Browser. It does not repeat information available in <CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  17503. ><CX5FX5FTITLE></CX5FX5FTITLE
  17504. > or the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  17505. ><CX5FX5FTITLE></CX5FX5FTITLE
  17506. >.</B.BODY
  17507. ></LABEL
  17508. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17509. >Browser objects</L.LABEL
  17510. ><B.BODY>From the Browser, you typically work with the following objects:</B.BODY
  17511. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17512. ></RBW-AUTOGEN
  17513. ></RBW-MARKER
  17514. ><RBW-PARABODY>Projects</RBW-PARABODY
  17515. ></LB.LIST.BULLET
  17516. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17517. ></RBW-AUTOGEN
  17518. ></RBW-MARKER
  17519. ><RBW-PARABODY>Configuration versions</RBW-PARABODY
  17520. ></LB.LIST.BULLET
  17521. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17522. ></RBW-AUTOGEN
  17523. ></RBW-MARKER
  17524. ><RBW-PARABODY>Phase versions</RBW-PARABODY
  17525. ></LB.LIST.BULLET
  17526. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17527. ></RBW-AUTOGEN
  17528. ></RBW-MARKER
  17529. ><RBW-PARABODY>System versions and document versions</RBW-PARABODY
  17530. ></LB.LIST.BULLET
  17531. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17532. ></RBW-AUTOGEN
  17533. ></RBW-MARKER
  17534. ><RBW-PARABODY>File versions (diagrams, groups, and external files)</RBW-PARABODY
  17535. ></LB.LIST.BULLET
  17536. ><B.BODY>In this chapter, the term <CX5FX5FEMPHASIS>object</CX5FX5FEMPHASIS
  17537. > refers to the objects listed above. It does not refer to items in the Cayenne repository, such as classes and attributes.</B.BODY
  17538. ></LABEL
  17539. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17540. >In this chapter</L.LABEL
  17541. ><B.BODY>This chapter contains the following sections:</B.BODY
  17542. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  17543. ></ENTRY
  17544. ></RBW-ROW
  17545. ></THEAD
  17546. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25454" TYPE="XREF-TEXTCOPY">Creating, Deleting, and Viewing Objects&rbwtab;2–2</RBW-XREF
  17547. ></SB.SECTION.BLOCK.TABLE
  17548. ></ENTRY
  17549. ></RBW-ROW
  17550. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33796" TYPE="XREF-TEXTCOPY">Copying Objects&rbwtab;2–4</RBW-XREF
  17551. ></SB.SECTION.BLOCK.TABLE
  17552. ></ENTRY
  17553. ></RBW-ROW
  17554. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37806" TYPE="XREF-TEXTCOPY">Renaming Objects&rbwtab;2–6</RBW-XREF
  17555. ></SB.SECTION.BLOCK.TABLE
  17556. ></ENTRY
  17557. ></RBW-ROW
  17558. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28398" TYPE="XREF-TEXTCOPY">Using Browser Views and Filters&rbwtab;2–7</RBW-XREF
  17559. ></SB.SECTION.BLOCK.TABLE
  17560. ></ENTRY
  17561. ></RBW-ROW
  17562. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32279" TYPE="XREF-TEXTCOPY">Setting Browser Options&rbwtab;2–10</RBW-XREF
  17563. ></SB.SECTION.BLOCK.TABLE
  17564. ></ENTRY
  17565. ></RBW-ROW
  17566. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35959" TYPE="XREF-TEXTCOPY">Printing&rbwtab;2–12</RBW-XREF
  17567. ></SB.SECTION.BLOCK.TABLE
  17568. ></ENTRY
  17569. ></RBW-ROW
  17570. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39627" TYPE="XREF-TEXTCOPY">Summary of Mouse Button Operations&rbwtab;2–15</RBW-XREF
  17571. ></SB.SECTION.BLOCK.TABLE
  17572. ></ENTRY
  17573. ></RBW-ROW
  17574. ></TBODY
  17575. ></TGROUP
  17576. ></RBW-TABLE
  17577. ></LABEL
  17578. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25454"></RBW-ANCHOR
  17579. >Creating, Deleting, and Viewing Objects</S.SECTION.HEAD
  17580. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17581. >Introduction</L.LABEL
  17582. ><B.BODY>This section describes how to create, open, view details of, and delete Browser objects. You work with different objects at each level of the Browser. </B.BODY
  17583. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Browser Level</CELLHEADING
  17584. ></ENTRY
  17585. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects</CELLHEADING
  17586. ></ENTRY
  17587. ></RBW-ROW
  17588. ></THEAD
  17589. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate</CELLBODY
  17590. ></ENTRY
  17591. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Projects</CELLBODY
  17592. ></ENTRY
  17593. ></RBW-ROW
  17594. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project</CELLBODY
  17595. ></ENTRY
  17596. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configurations</CELLBODY
  17597. ></ENTRY
  17598. ></RBW-ROW
  17599. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration</CELLBODY
  17600. ></ENTRY
  17601. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Systems</CELLBODY
  17602. ><CELLBODY>Documents</CELLBODY
  17603. ></ENTRY
  17604. ></RBW-ROW
  17605. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System</CELLBODY
  17606. ></ENTRY
  17607. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Files (such as diagrams and external files)</CELLBODY
  17608. ></ENTRY
  17609. ></RBW-ROW
  17610. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Document</CELLBODY
  17611. ></ENTRY
  17612. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Files (such as Document Structure Matrixes and File Sections)</CELLBODY
  17613. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  17614. > The document level is used for document generation. For more information, see the <CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  17615. ><CX5FX5FTITLE></CX5FX5FTITLE
  17616. >.</CELLBODY
  17617. ></ENTRY
  17618. ></RBW-ROW
  17619. ></TBODY
  17620. ></TGROUP
  17621. ></RBW-TABLE
  17622. ></LABEL
  17623. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17624. ><RBW-IDXTERM TERM1="creating" TERM2="Browser objects"></RBW-IDXTERM
  17625. ><RBW-IDXTERM TERM1="New (File menu)" TERM2="Browser"></RBW-IDXTERM
  17626. ><RBW-IDXTERM TERM1="project" TERM2="creating"></RBW-IDXTERM
  17627. ><RBW-IDXTERM TERM1="system" TERM2="creating from Browser"></RBW-IDXTERM
  17628. ><RBW-IDXTERM TERM1="configuration" TERM2="creating"></RBW-IDXTERM
  17629. ><RBW-IDXTERM TERM1="phase" TERM2="creating"></RBW-IDXTERM
  17630. >How to create an object</L.LABEL
  17631. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  17632. ></RBW-AUTOGEN
  17633. ></RBW-MARKER
  17634. ><RBW-PARABODY>To create an object:</RBW-PARABODY
  17635. ></P.PROCEDURE
  17636. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17637. ></RBW-AUTOGEN
  17638. ></RBW-MARKER
  17639. ><RBW-PARABODY>Move to the appropriate level. For example, to create a project, move to the corporate level.</RBW-PARABODY
  17640. ></LN.LIST.NUM
  17641. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17642. ></RBW-AUTOGEN
  17643. ></RBW-MARKER
  17644. ><RBW-PARABODY>Select File | New.</RBW-PARABODY
  17645. ></LN.LIST.NUM
  17646. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  17647. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  17648. ></RBW-AUTOGEN
  17649. ></RBW-MARKER
  17650. ><RBW-PARABODY>Select the type of object that you want to create. For example, to create a new project, select File | New | Project.</RBW-PARABODY
  17651. ></LN.LIST.NUM
  17652. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17653. >Naming conventions</SL.SUBLABEL
  17654. ><B.BODY>Object names have a maximum length of 80 characters and can consist of any alphanumeric characters. Because object names are often used as file names, it is recommended when naming objects to choose names that conform to the operating system’s rules for file names.</B.BODY
  17655. ></LABEL
  17656. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17657. ><RBW-IDXTERM TERM1="editing" TERM2="Browser objects"></RBW-IDXTERM
  17658. ><RBW-IDXTERM TERM1="Open (File menu)" TERM2="Browser objects"></RBW-IDXTERM
  17659. ><RBW-IDXTERM TERM1="Edit (File menu)" TERM2="Browser objects"></RBW-IDXTERM
  17660. >How to open an object</L.LABEL
  17661. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  17662. ></RBW-AUTOGEN
  17663. ></RBW-MARKER
  17664. ><RBW-PARABODY>To open an object:</RBW-PARABODY
  17665. ></P.PROCEDURE
  17666. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17667. ></RBW-AUTOGEN
  17668. ></RBW-MARKER
  17669. ><RBW-PARABODY>Move to the appropriate level. For example, to open a project, move to the corporate level.</RBW-PARABODY
  17670. ></LN.LIST.NUM
  17671. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17672. ></RBW-AUTOGEN
  17673. ></RBW-MARKER
  17674. ><RBW-PARABODY>In the information area, select the object that you want to open.</RBW-PARABODY
  17675. ></LN.LIST.NUM
  17676. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  17677. ></RBW-AUTOGEN
  17678. ></RBW-MARKER
  17679. ><RBW-PARABODY>Use one of the following commands:</RBW-PARABODY
  17680. ></LN.LIST.NUM
  17681. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="81p"><COLSPEC COLNAME="2" COLWIDTH="234p"><COLSPEC COLNAME="3" COLWIDTH="117p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Command</CELLHEADING
  17682. ></ENTRY
  17683. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Selected Object Is Project, Configuration, Phase, Or System</CELLHEADING
  17684. ></ENTRY
  17685. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Selected Object Is File</CELLHEADING
  17686. ></ENTRY
  17687. ></RBW-ROW
  17688. ></THEAD
  17689. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File | Edit</CELLBODY
  17690. ></ENTRY
  17691. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Unavailable</CELLBODY
  17692. ></ENTRY
  17693. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Opens editor</CELLBODY
  17694. ></ENTRY
  17695. ></RBW-ROW
  17696. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File | Open</CELLBODY
  17697. ></ENTRY
  17698. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Opens the object, changing levels in the Browser and updating the Context and Information areas</CELLBODY
  17699. ></ENTRY
  17700. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Opens editor</CELLBODY
  17701. ></ENTRY
  17702. ></RBW-ROW
  17703. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File | Show</CELLBODY
  17704. ></ENTRY
  17705. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Unavailable</CELLBODY
  17706. ></ENTRY
  17707. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Opens editor, read&truehy;only access</CELLBODY
  17708. ></ENTRY
  17709. ></RBW-ROW
  17710. ></TBODY
  17711. ></TGROUP
  17712. ></RBW-TABLE
  17713. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17714. >Alternative</SL.SUBLABEL
  17715. ><B.BODY>Double&truehy;click the object in the information area to use File | Open or File | Edit.</B.BODY
  17716. ></LABEL
  17717. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17718. >How to view object details<RBW-IDXTERM TERM1="displaying" TERM2="object information"></RBW-IDXTERM
  17719. ><RBW-IDXTERM TERM1="Info (File menu)"></RBW-IDXTERM
  17720. ><RBW-IDXTERM TERM1="project" TERM2="displaying"></RBW-IDXTERM
  17721. ><RBW-IDXTERM TERM1="configuration" TERM2="displaying"></RBW-IDXTERM
  17722. ><RBW-IDXTERM TERM1="system" TERM2="displaying"></RBW-IDXTERM
  17723. ><RBW-IDXTERM TERM1="phase" TERM2="displaying"></RBW-IDXTERM
  17724. ></L.LABEL
  17725. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  17726. ></RBW-AUTOGEN
  17727. ></RBW-MARKER
  17728. ><RBW-PARABODY>To display detailed information about an object:</RBW-PARABODY
  17729. ></P.PROCEDURE
  17730. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17731. ></RBW-AUTOGEN
  17732. ></RBW-MARKER
  17733. ><RBW-PARABODY>In the navigation or information area, select the object that you are interested in.</RBW-PARABODY
  17734. ></LN.LIST.NUM
  17735. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17736. ></RBW-AUTOGEN
  17737. ></RBW-MARKER
  17738. ><RBW-PARABODY>Select File | Info.</RBW-PARABODY
  17739. ></LN.LIST.NUM
  17740. ><LR.LIST.RESULT>The Info window appears.</LR.LIST.RESULT
  17741. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00090.unk" origfile="pics/objinfo.gif" origtype="X" origdoc="../../sources/mg/mgbrows.fm5.mif"></RBW-GRAPHIC
  17742. ></FAR.FIGURE.ANCHOR.RIGHT
  17743. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  17744. ></RBW-AUTOGEN
  17745. ></RBW-MARKER
  17746. ><RBW-PARABODY>Click OK to close the window.</RBW-PARABODY
  17747. ></LN.LIST.NUM
  17748. ></LABEL
  17749. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17750. ><RBW-IDXTERM TERM1="deleting" TERM2="Browser objects"></RBW-IDXTERM
  17751. ><RBW-IDXTERM TERM1="Delete (File menu)"></RBW-IDXTERM
  17752. ><RBW-IDXTERM TERM1="project" TERM2="deleting"></RBW-IDXTERM
  17753. ><RBW-IDXTERM TERM1="configuration" TERM2="deleting"></RBW-IDXTERM
  17754. ><RBW-IDXTERM TERM1="system" TERM2="deleting"></RBW-IDXTERM
  17755. ><RBW-IDXTERM TERM1="phase" TERM2="deleting"></RBW-IDXTERM
  17756. >How to delete an object</L.LABEL
  17757. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  17758. ></RBW-AUTOGEN
  17759. ></RBW-MARKER
  17760. ><RBW-PARABODY>To delete an object:</RBW-PARABODY
  17761. ></P.PROCEDURE
  17762. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17763. ></RBW-AUTOGEN
  17764. ></RBW-MARKER
  17765. ><RBW-PARABODY>Move to the appropriate level. For example, to delete a project, move to the corporate level.</RBW-PARABODY
  17766. ></LN.LIST.NUM
  17767. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17768. ></RBW-AUTOGEN
  17769. ></RBW-MARKER
  17770. ><RBW-PARABODY>In the information area, select the object that you want to delete.</RBW-PARABODY
  17771. ></LN.LIST.NUM
  17772. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  17773. ></RBW-AUTOGEN
  17774. ></RBW-MARKER
  17775. ><RBW-PARABODY>Select File | Delete.</RBW-PARABODY
  17776. ></LN.LIST.NUM
  17777. ><LR.LIST.RESULT>The Delete Warning message appears prompting you to confirm the Delete operation.</LR.LIST.RESULT
  17778. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  17779. ></RBW-AUTOGEN
  17780. ></RBW-MARKER
  17781. ><RBW-PARABODY>Click OK to delete the object.</RBW-PARABODY
  17782. ></LN.LIST.NUM
  17783. ></LABEL
  17784. ></SECTION
  17785. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="33796"></RBW-ANCHOR
  17786. >Copying Objects</S.SECTION.HEAD
  17787. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17788. >Introduction</L.LABEL
  17789. ><B.BODY>This section describes how to use the Browser to copy objects.</B.BODY
  17790. ></LABEL
  17791. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17792. >What can be copied</L.LABEL
  17793. ><B.BODY>You can use these procedures to copy the following objects:</B.BODY
  17794. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17795. ></RBW-AUTOGEN
  17796. ></RBW-MARKER
  17797. ><RBW-PARABODY>System versions</RBW-PARABODY
  17798. ></LB.LIST.BULLET
  17799. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17800. ></RBW-AUTOGEN
  17801. ></RBW-MARKER
  17802. ><RBW-PARABODY>Diagram versions</RBW-PARABODY
  17803. ></LB.LIST.BULLET
  17804. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17805. ></RBW-AUTOGEN
  17806. ></RBW-MARKER
  17807. ><RBW-PARABODY>CDM versions</RBW-PARABODY
  17808. ></LB.LIST.BULLET
  17809. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17810. ></RBW-AUTOGEN
  17811. ></RBW-MARKER
  17812. ><RBW-PARABODY>Group versions</RBW-PARABODY
  17813. ></LB.LIST.BULLET
  17814. ><B.BODY>You cannot copy projects, configurations, phases, or document systems.</B.BODY
  17815. ></LABEL
  17816. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17817. >Two ways to copy objects</L.LABEL
  17818. ><B.BODY>ObjectTeam provides two ways to copy objects:</B.BODY
  17819. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17820. ></RBW-AUTOGEN
  17821. ></RBW-MARKER
  17822. ><RBW-PARABODY>Using the Copy (or Cut) and  Paste options from the Edit menu</RBW-PARABODY
  17823. ></LB.LIST.BULLET
  17824. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  17825. ></RBW-AUTOGEN
  17826. ></RBW-MARKER
  17827. ><RBW-PARABODY>Dragging the object in the Browser</RBW-PARABODY
  17828. ></LB.LIST.BULLET
  17829. ></LABEL
  17830. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17831. >How to copy objects using Edit<RBW-IDXTERM TERM1="copying" TERM2="files"></RBW-IDXTERM
  17832. ><RBW-IDXTERM TERM1="Copy (Edit menu)" TERM2="files"></RBW-IDXTERM
  17833. ><RBW-IDXTERM TERM1="Cut (Edit menu)" TERM2="files"></RBW-IDXTERM
  17834. ><RBW-IDXTERM TERM1="Paste (Edit menu)" TERM2="files"></RBW-IDXTERM
  17835. ></L.LABEL
  17836. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  17837. ></RBW-AUTOGEN
  17838. ></RBW-MARKER
  17839. ><RBW-PARABODY>To copy objects using the Edit menu:</RBW-PARABODY
  17840. ></P.PROCEDURE
  17841. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17842. ></RBW-AUTOGEN
  17843. ></RBW-MARKER
  17844. ><RBW-PARABODY>In the Information area, select the object that you want to copy.</RBW-PARABODY
  17845. ></LN.LIST.NUM
  17846. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17847. ></RBW-AUTOGEN
  17848. ></RBW-MARKER
  17849. ><RBW-PARABODY>Select Edit | Copy (or Edit | Cut to delete the object).</RBW-PARABODY
  17850. ></LN.LIST.NUM
  17851. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  17852. ></RBW-AUTOGEN
  17853. >If you use Edit | Cut, the object remains visible in the Browser (but with its icon dimmed) until you place it in the new location using Edit | Paste.</N2.NOTE.2
  17854. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  17855. ></RBW-AUTOGEN
  17856. ></RBW-MARKER
  17857. ><RBW-PARABODY>Open the Phase or System into which you want to copy the object.</RBW-PARABODY
  17858. ></LN.LIST.NUM
  17859. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  17860. ></RBW-AUTOGEN
  17861. ></RBW-MARKER
  17862. ><RBW-PARABODY>Select Edit | Paste.</RBW-PARABODY
  17863. ></LN.LIST.NUM
  17864. ></LABEL
  17865. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17866. >How to copy objects by dragging them<RBW-IDXTERM TERM1="drag-and-drop" TERM2="copying files"></RBW-IDXTERM
  17867. ></L.LABEL
  17868. ><B.BODY>You can drag objects from the navigation area to the information area or vice versa. You can also drag an object from one location in the navigation area to another. On Windows, use the left mouse button. On UNIX systems, use the middle mouse button.</B.BODY
  17869. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  17870. ></RBW-AUTOGEN
  17871. ></RBW-MARKER
  17872. ><RBW-PARABODY>To copy objects by dragging them:</RBW-PARABODY
  17873. ></P.PROCEDURE
  17874. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17875. ></RBW-AUTOGEN
  17876. ></RBW-MARKER
  17877. ><RBW-PARABODY>In either the navigation area or information area, display the object that you want to copy and the phase or system into which you want to copy it.</RBW-PARABODY
  17878. ></LN.LIST.NUM
  17879. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17880. ></RBW-AUTOGEN
  17881. ></RBW-MARKER
  17882. ><RBW-PARABODY>Drag the object to the destination phase or system.</RBW-PARABODY
  17883. ></LN.LIST.NUM
  17884. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  17885. ></RBW-AUTOGEN
  17886. >If an object with the same name as the one you are copying exists in the target phase or system, you may receive a message that an item is already defined. For more information on items and their scope, see <RBW-XREF REFID="29698" TYPE="XREF-TEXTCOPY">Working With Items</RBW-XREF
  17887. >.</N.NOTE
  17888. ></LABEL
  17889. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17890. >Restrictions on copying systems</L.LABEL
  17891. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17892. >Restriction</SL.SUBLABEL
  17893. ><B.BODY>Although the procedures in this section can be used to copy systems, it is recommended that you only use these for copying systems between projects. If you want to copy systems from one phase to the next within a single project, it is recommended that you use the import procedures described in <RBW-XREF REFID="20556" TYPE="XREF-TEXTCOPY">Merging Systems into Another Phase</RBW-XREF
  17894. > in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  17895. ><CX5FX5FTITLE></CX5FX5FTITLE
  17896. >.</B.BODY
  17897. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17898. >Reason</SL.SUBLABEL
  17899. ><B.BODY>If you copy a system using the procedures described in this section, a new system version will be made. If a system with this name already exists, it will be frozen and deselected. The import procedures, as described in <RBW-XREF REFID="20556" TYPE="XREF-TEXTCOPY">Merging Systems into Another Phase</RBW-XREF
  17900. > in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  17901. ><CX5FX5FTITLE></CX5FX5FTITLE
  17902. >, offer you more control over what must be imported.</B.BODY
  17903. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17904. >For more information</SL.SUBLABEL
  17905. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  17906. ><CX5FX5FTITLE></CX5FX5FTITLE
  17907. > for more information about version and configuration management.</B.BODY
  17908. ></LABEL
  17909. ></SECTION
  17910. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37806"></RBW-ANCHOR
  17911. >Renaming Objects</S.SECTION.HEAD
  17912. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17913. >Introduction<RBW-IDXTERM TERM1="diagram" TERM2="renaming"></RBW-IDXTERM
  17914. ><RBW-IDXTERM TERM1="system" TERM2="renaming"></RBW-IDXTERM
  17915. ><RBW-IDXTERM TERM1="document" TERM2="renaming"></RBW-IDXTERM
  17916. ></L.LABEL
  17917. ><B.BODY>You can rename projects, configurations, systems, documents, diagrams (and diagram components), and external files within the Browser. You cannot rename phases, groups, customization files, and so on. </B.BODY
  17918. ><B.BODY>You can also rename a repository, using the Corporate Management tool. For details on how to rename repositories, see the <CX5FX5FTITLE>ObjectTeam System Administrator’s Guide</CX5FX5FTITLE
  17919. ><CX5FX5FTITLE></CX5FX5FTITLE
  17920. >.</B.BODY
  17921. ></LABEL
  17922. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17923. >How to rename an object<RBW-IDXTERM TERM1="renaming" TERM2="Browser objects"></RBW-IDXTERM
  17924. ><RBW-IDXTERM TERM1="Change Name (File menu)" TERM2="of Browser object"></RBW-IDXTERM
  17925. ></L.LABEL
  17926. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  17927. ></RBW-AUTOGEN
  17928. ></RBW-MARKER
  17929. ><RBW-PARABODY>To rename an object:</RBW-PARABODY
  17930. ></P.PROCEDURE
  17931. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  17932. ></RBW-AUTOGEN
  17933. ></RBW-MARKER
  17934. ><RBW-PARABODY>Move to the appropriate level. For example, to rename a system, move to the phase level.</RBW-PARABODY
  17935. ></LN.LIST.NUM
  17936. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  17937. ></RBW-AUTOGEN
  17938. ></RBW-MARKER
  17939. ><RBW-PARABODY>In the information area, select the object that you want to rename.</RBW-PARABODY
  17940. ></LN.LIST.NUM
  17941. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  17942. ></RBW-AUTOGEN
  17943. ></RBW-MARKER
  17944. ><RBW-PARABODY>Select File | Change | Name.</RBW-PARABODY
  17945. ></LN.LIST.NUM
  17946. ><LR.LIST.RESULT>The Change Name window appears.</LR.LIST.RESULT
  17947. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  17948. ></RBW-AUTOGEN
  17949. ></RBW-MARKER
  17950. ><RBW-PARABODY>Type the new name, and then click OK.</RBW-PARABODY
  17951. ></LN.LIST.NUM
  17952. ><LR.LIST.RESULT>ObjectTeam renames the object or displays an error message if an object of that name already exists.</LR.LIST.RESULT
  17953. ></LABEL
  17954. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17955. >Renaming configurations</L.LABEL
  17956. ><B.BODY>When you create a version, ObjectTeam assigns it a version identifier. The configuration name is used as part of that version identifier. Renaming a configuration does not change the version identifiers of existing objects.</B.BODY
  17957. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17958. >For more information</SL.SUBLABEL
  17959. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  17960. ><CX5FX5FTITLE></CX5FX5FTITLE
  17961. > for more information about version and configuration management.</B.BODY
  17962. ></LABEL
  17963. ></SECTION
  17964. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28398"></RBW-ANCHOR
  17965. >Using Browser Views and Filters</S.SECTION.HEAD
  17966. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17967. >Introduction</L.LABEL
  17968. ><B.BODY>If you are working in a large project, views and filters can help you focus on important details.</B.BODY
  17969. ></LABEL
  17970. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  17971. >Views</L.LABEL
  17972. ><B.BODY><CX5FX5FTERM><RBW-IDXTERM TERM1="view" TERM2="definition of"></RBW-IDXTERM
  17973. ><RBW-IDXTERM TERM1="Browser" TERM2="views"></RBW-IDXTERM
  17974. ><RBW-IDXTERM TERM1="Default view"></RBW-IDXTERM
  17975. ><RBW-IDXTERM TERM1="Pseudo view"></RBW-IDXTERM
  17976. ><RBW-IDXTERM TERM1="Data view"></RBW-IDXTERM
  17977. ><RBW-IDXTERM TERM1="Process view"></RBW-IDXTERM
  17978. ><RBW-IDXTERM TERM1="SQL view"></RBW-IDXTERM
  17979. >Views</CX5FX5FTERM
  17980. > determine the information displayed in the information area of the Browser. As shown in the following table, every level in the corporate hierarchy has a default view, and many levels have additional views.</B.BODY
  17981. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  17982. ></RBW-AUTOGEN
  17983. >The views shown in the following table are supplied with ObjectTeam. Your site may have additional views defined.</N.NOTE
  17984. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="135p"><COLSPEC COLNAME="2" COLWIDTH="63p"><COLSPEC COLNAME="3" COLWIDTH="252p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Level</CELLHEADING
  17985. ></ENTRY
  17986. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>View</CELLHEADING
  17987. ></ENTRY
  17988. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Shows</CELLHEADING
  17989. ></ENTRY
  17990. ></RBW-ROW
  17991. ></THEAD
  17992. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate</CELLBODY
  17993. ></ENTRY
  17994. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  17995. ></ENTRY
  17996. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Projects</CELLBODY
  17997. ></ENTRY
  17998. ></RBW-ROW
  17999. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18000. ></ENTRY
  18001. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo</CELLBODY
  18002. ></ENTRY
  18003. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo object versions</CELLBODY
  18004. ></ENTRY
  18005. ></RBW-ROW
  18006. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project</CELLBODY
  18007. ></ENTRY
  18008. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  18009. ></ENTRY
  18010. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration versions</CELLBODY
  18011. ></ENTRY
  18012. ></RBW-ROW
  18013. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18014. ></ENTRY
  18015. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo</CELLBODY
  18016. ></ENTRY
  18017. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo object versions</CELLBODY
  18018. ></ENTRY
  18019. ></RBW-ROW
  18020. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration</CELLBODY
  18021. ></ENTRY
  18022. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  18023. ></ENTRY
  18024. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase versions</CELLBODY
  18025. ></ENTRY
  18026. ></RBW-ROW
  18027. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18028. ></ENTRY
  18029. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo</CELLBODY
  18030. ></ENTRY
  18031. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo object versions</CELLBODY
  18032. ></ENTRY
  18033. ></RBW-ROW
  18034. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase</CELLBODY
  18035. ></ENTRY
  18036. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  18037. ></ENTRY
  18038. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>System versions</CELLBODY
  18039. ><CELLBODY>Document versions</CELLBODY
  18040. ></ENTRY
  18041. ></RBW-ROW
  18042. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18043. ></ENTRY
  18044. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo</CELLBODY
  18045. ></ENTRY
  18046. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo object versions</CELLBODY
  18047. ></ENTRY
  18048. ></RBW-ROW
  18049. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System (in Analysis, System Design, or Object Design)</CELLBODY
  18050. ></ENTRY
  18051. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  18052. ></ENTRY
  18053. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Group versions; file versions of type cad, ccd, cdm, dfd, etd, mgd, std, and ucd</CELLBODY
  18054. ></ENTRY
  18055. ></RBW-ROW
  18056. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18057. ></ENTRY
  18058. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data</CELLBODY
  18059. ></ENTRY
  18060. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>File versions of type cad and cdm</CELLBODY
  18061. ></ENTRY
  18062. ></RBW-ROW
  18063. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18064. ></ENTRY
  18065. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process</CELLBODY
  18066. ></ENTRY
  18067. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>File versions of type ccd, dfd, etd, mgd, std, and ucd</CELLBODY
  18068. ></ENTRY
  18069. ></RBW-ROW
  18070. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18071. ></ENTRY
  18072. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo</CELLBODY
  18073. ></ENTRY
  18074. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo object versions</CELLBODY
  18075. ></ENTRY
  18076. ></RBW-ROW
  18077. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System (in Implementation)</CELLBODY
  18078. ></ENTRY
  18079. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  18080. ></ENTRY
  18081. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Group versions; external file versions of type executable, library, c++, h++, esqlc++, lex++, yacc++, makefile, maketemplate, and tcl</CELLBODY
  18082. ></ENTRY
  18083. ></RBW-ROW
  18084. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18085. ></ENTRY
  18086. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQL</CELLBODY
  18087. ></ENTRY
  18088. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQL scripts</CELLBODY
  18089. ></ENTRY
  18090. ></RBW-ROW
  18091. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18092. ></ENTRY
  18093. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo</CELLBODY
  18094. ></ENTRY
  18095. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo object versions</CELLBODY
  18096. ></ENTRY
  18097. ></RBW-ROW
  18098. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Document</CELLBODY
  18099. ></ENTRY
  18100. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  18101. ></ENTRY
  18102. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>All system file references, document structure matrixes, and external file versions</CELLBODY
  18103. ></ENTRY
  18104. ></RBW-ROW
  18105. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18106. ></ENTRY
  18107. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo</CELLBODY
  18108. ></ENTRY
  18109. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pseudo object versions</CELLBODY
  18110. ></ENTRY
  18111. ></RBW-ROW
  18112. ></TBODY
  18113. ></TGROUP
  18114. ></RBW-TABLE
  18115. ></LABEL
  18116. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18117. >How to select a view<RBW-IDXTERM TERM1="View (File menu)"></RBW-IDXTERM
  18118. ></L.LABEL
  18119. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18120. ></RBW-AUTOGEN
  18121. ></RBW-MARKER
  18122. ><RBW-PARABODY>To select a particular view:</RBW-PARABODY
  18123. ></P.PROCEDURE
  18124. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18125. ></RBW-AUTOGEN
  18126. ></RBW-MARKER
  18127. ><RBW-PARABODY>Select File | View.</RBW-PARABODY
  18128. ></LN.LIST.NUM
  18129. ><LR.LIST.RESULT>The views are listed in the View menu.</LR.LIST.RESULT
  18130. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18131. ></RBW-AUTOGEN
  18132. ></RBW-MARKER
  18133. ><RBW-PARABODY>Select the view that you want to use.</RBW-PARABODY
  18134. ></LN.LIST.NUM
  18135. ><LR.LIST.RESULT>The Information area of the Browser is updated, displaying only the objects that are in the selected view.</LR.LIST.RESULT
  18136. ></LABEL
  18137. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18138. >Filters</L.LABEL
  18139. ><B.BODY><RBW-IDXTERM TERM1="filter" TERM2="in Browser"></RBW-IDXTERM
  18140. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  18141. ><RBW-IDXTERM TERM1="Browser" TERM2="filters"></RBW-IDXTERM
  18142. >A filter allows you to further control what appears in the information area. When you turn a filter on, it applies to the current level and view only. It remains in effect until you turn it off or you exit from the Browser.</B.BODY
  18143. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18144. >Example</SL.SUBLABEL
  18145. ><B.BODY>You open the Core system, select the Default view, and turn on a filter. The filter is in effect. You move to the configuration level, the filter is no longer in effect. You open the Interface system, the filter is again in effect.</B.BODY
  18146. ></LABEL
  18147. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18148. ><RBW-IDXTERM TERM1="Filter (View menu)"></RBW-IDXTERM
  18149. >How to turn a filter on</L.LABEL
  18150. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18151. ></RBW-AUTOGEN
  18152. ></RBW-MARKER
  18153. ><RBW-PARABODY>To turn a filter on:</RBW-PARABODY
  18154. ></P.PROCEDURE
  18155. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18156. ></RBW-AUTOGEN
  18157. ></RBW-MARKER
  18158. ><RBW-PARABODY>From the View menu, select the desired view.</RBW-PARABODY
  18159. ></LN.LIST.NUM
  18160. ><LR.LIST.RESULT>ObjectTeam updates the information area.</LR.LIST.RESULT
  18161. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18162. ></RBW-AUTOGEN
  18163. ></RBW-MARKER
  18164. ><RBW-PARABODY>Select View | Filter | Edit.</RBW-PARABODY
  18165. ></LN.LIST.NUM
  18166. ><LR.LIST.RESULT>The Edit Filter window for the current level appears. The fields in the window correspond to the columns displayed in the information area in Detail view.</LR.LIST.RESULT
  18167. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00091.unk" origfile="pics/filter.gif" origtype="X" origdoc="../../sources/mg/mgbrows.fm5.mif"></RBW-GRAPHIC
  18168. ></FA2.FIGURE.ANCHOR.2
  18169. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  18170. ></RBW-AUTOGEN
  18171. ></RBW-MARKER
  18172. ><RBW-PARABODY>Specify the information that you want to appear in the Information area. For example, in the In Corporate field in the previous figure, you can enter <CX5FX5FINPUT>Yes</CX5FX5FINPUT
  18173. >, <CX5FX5FINPUT>No</CX5FX5FINPUT
  18174. >, or a wildcard string that includes either one or both of these.</RBW-PARABODY
  18175. ></LN.LIST.NUM
  18176. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  18177. ></RBW-AUTOGEN
  18178. >Click Help for a description of each field.</T2.TIP.2
  18179. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  18180. ></RBW-AUTOGEN
  18181. ></RBW-MARKER
  18182. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  18183. ></LN.LIST.NUM
  18184. ><LR.LIST.RESULT>ObjectTeam updates the Information area to display the requested information and the Context area to indicate that the filter is on.</LR.LIST.RESULT
  18185. ></LABEL
  18186. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18187. >How to turn a filter off</L.LABEL
  18188. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18189. ></RBW-AUTOGEN
  18190. ></RBW-MARKER
  18191. ><RBW-PARABODY>To turn a filter off, select View | Filter | Remove.</RBW-PARABODY
  18192. ></P.PROCEDURE
  18193. ><LRS.LIST.RESULT.SINGLE>ObjectTeam removes the filter and updates the information and context areas.</LRS.LIST.RESULT.SINGLE
  18194. ></LABEL
  18195. ></SECTION
  18196. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32279"></RBW-ANCHOR
  18197. >Setting Browser Options<RBW-IDXTERM TERM1="Browser" TERM2="options"></RBW-IDXTERM
  18198. ></S.SECTION.HEAD
  18199. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18200. >Introduction</L.LABEL
  18201. ><B.BODY>Use the Options menu to set personal preferences.</B.BODY
  18202. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18203. >For more information</SL.SUBLABEL
  18204. ><B.BODY>Use Options |Copy User Environment to make your options available to other ObjectTeam users.  See the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  18205. ><CX5FX5FTITLE></CX5FX5FTITLE
  18206. >.<RBW-IDXTERM TERM1="Copy User Environment (Options menu)"></RBW-IDXTERM
  18207. ></B.BODY
  18208. ></LABEL
  18209. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18210. >How to set the Compare command<RBW-IDXTERM TERM1="comparing" TERM2="default compare command"></RBW-IDXTERM
  18211. ><RBW-IDXTERM TERM1="Compare Command (Options menu)"></RBW-IDXTERM
  18212. ></L.LABEL
  18213. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18214. ></RBW-AUTOGEN
  18215. ></RBW-MARKER
  18216. ><RBW-PARABODY>To set the Compare command that you want to use with Utilities | Compare With Previous Version and Version | Compare:</RBW-PARABODY
  18217. ></P.PROCEDURE
  18218. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18219. ></RBW-AUTOGEN
  18220. ></RBW-MARKER
  18221. ><RBW-PARABODY>Select Options | Compare Command.</RBW-PARABODY
  18222. ></LN.LIST.NUM
  18223. ><LR.LIST.RESULT>The Compare Command window appears. The default command appears in the text field.</LR.LIST.RESULT
  18224. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18225. ></RBW-AUTOGEN
  18226. ></RBW-MARKER
  18227. ><RBW-PARABODY>Specify the desired compare command, and then click OK.</RBW-PARABODY
  18228. ></LN.LIST.NUM
  18229. ></LABEL
  18230. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18231. >How to set the default editor<RBW-IDXTERM TERM1="editing" TERM2="default editor for"></RBW-IDXTERM
  18232. ><RBW-IDXTERM TERM1="Editor (Options menu)"></RBW-IDXTERM
  18233. ></L.LABEL
  18234. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18235. ></RBW-AUTOGEN
  18236. ></RBW-MARKER
  18237. ><RBW-PARABODY>To set the default editor:</RBW-PARABODY
  18238. ></P.PROCEDURE
  18239. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18240. ></RBW-AUTOGEN
  18241. ></RBW-MARKER
  18242. ><RBW-PARABODY>Select Options | Editor.</RBW-PARABODY
  18243. ></LN.LIST.NUM
  18244. ><LR.LIST.RESULT>The Editor window appears.</LR.LIST.RESULT
  18245. ><LT.LIST.TEXT>The Context list specifies different types of text files that you can edit. Select a default editor for each type of file.</LT.LIST.TEXT
  18246. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18247. ></RBW-AUTOGEN
  18248. ></RBW-MARKER
  18249. ><RBW-PARABODY>From the Context list, select a file type.</RBW-PARABODY
  18250. ></LN.LIST.NUM
  18251. ><LR.LIST.RESULT>The default editor for this file type appears in the text field.</LR.LIST.RESULT
  18252. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  18253. ></RBW-AUTOGEN
  18254. ></RBW-MARKER
  18255. ><RBW-PARABODY>Specify the desired editor.</RBW-PARABODY
  18256. ></LN.LIST.NUM
  18257. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  18258. ></RBW-AUTOGEN
  18259. ></RBW-MARKER
  18260. ><RBW-PARABODY>Repeat steps 2 and 3 until you have specified the default editor for each type of file. </RBW-PARABODY
  18261. ></LN.LIST.NUM
  18262. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  18263. ></RBW-AUTOGEN
  18264. ></RBW-MARKER
  18265. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  18266. ></LN.LIST.NUM
  18267. ></LABEL
  18268. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18269. >How to change the Browser font</L.LABEL
  18270. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18271. ></RBW-AUTOGEN
  18272. ></RBW-MARKER
  18273. ><RBW-PARABODY>To change the Browser font:<RBW-IDXTERM TERM1="changing" TERM2="Browser fonts"></RBW-IDXTERM
  18274. ><RBW-IDXTERM TERM1="Browser" TERM2="fonts"></RBW-IDXTERM
  18275. ><RBW-IDXTERM TERM1="Font (Options menu)" TERM2="Browser"></RBW-IDXTERM
  18276. ></RBW-PARABODY
  18277. ></P.PROCEDURE
  18278. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18279. ></RBW-AUTOGEN
  18280. ></RBW-MARKER
  18281. ><RBW-PARABODY>Select Options | Font.</RBW-PARABODY
  18282. ></LN.LIST.NUM
  18283. ><LR.LIST.RESULT>The Browser Font window appears.</LR.LIST.RESULT
  18284. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18285. ></RBW-AUTOGEN
  18286. ></RBW-MARKER
  18287. ><RBW-PARABODY>Select the font family, style, and size, and then click OK.</RBW-PARABODY
  18288. ></LN.LIST.NUM
  18289. ><LR.LIST.RESULT>ObjectTeam updates the Browser window to use the new font.</LR.LIST.RESULT
  18290. ></LABEL
  18291. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18292. >How to set the default previewer<RBW-IDXTERM TERM1="Previewer (Options menu)"></RBW-IDXTERM
  18293. ></L.LABEL
  18294. ><B.BODY>The default previewer is used during document generation to view document objects such as encapsulated PostScript (EPS) files.</B.BODY
  18295. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18296. ></RBW-AUTOGEN
  18297. ></RBW-MARKER
  18298. ><RBW-PARABODY>To set the default previewer:</RBW-PARABODY
  18299. ></P.PROCEDURE
  18300. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18301. ></RBW-AUTOGEN
  18302. ></RBW-MARKER
  18303. ><RBW-PARABODY>Select Options | Previewer.</RBW-PARABODY
  18304. ></LN.LIST.NUM
  18305. ><LR.LIST.RESULT>The Previewer window appears. </LR.LIST.RESULT
  18306. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18307. ></RBW-AUTOGEN
  18308. ></RBW-MARKER
  18309. ><RBW-PARABODY>From the Context list, select a context in which to use the previewer.</RBW-PARABODY
  18310. ></LN.LIST.NUM
  18311. ><LR.LIST.RESULT>The default previewer for this context appears in the text field. </LR.LIST.RESULT
  18312. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  18313. ></RBW-AUTOGEN
  18314. ></RBW-MARKER
  18315. ><RBW-PARABODY>Specify the desired previewer, and then click OK.</RBW-PARABODY
  18316. ></LN.LIST.NUM
  18317. ></LABEL
  18318. ></SECTION
  18319. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35959"></RBW-ANCHOR
  18320. >Printing</S.SECTION.HEAD
  18321. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18322. >Introduction</L.LABEL
  18323. ><B.BODY><RBW-IDXTERM TERM1="Browser" TERM2="printing"></RBW-IDXTERM
  18324. >From the Browser, you can print a diagram or the current contents of the Information area. You can also specify the print commands that ObjectTeam should use.</B.BODY
  18325. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18326. >Printing a diagram to a file</SL.SUBLABEL
  18327. ><B.BODY>You can also print a diagram to a file in Interleaf, FrameMaker, Encapsulated Postscript, or Windows Metafile format. For more information, see the otexport command in the <CX5FX5FTITLE>ObjectTeam System Administrator’s Guide</CX5FX5FTITLE
  18328. ><CX5FX5FTITLE></CX5FX5FTITLE
  18329. >.</B.BODY
  18330. ></LABEL
  18331. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18332. >How to specify the print commands<RBW-IDXTERM TERM1="Printer Setup (Options menu)"></RBW-IDXTERM
  18333. ></L.LABEL
  18334. ><BI.BODY.INTRO>You specify a print command for diagrams (Options | Printer Setup | Graphical) and a print command for reports and other printed text (Options | Printer Setup | Text).</BI.BODY.INTRO
  18335. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18336. ></RBW-AUTOGEN
  18337. ></RBW-MARKER
  18338. ><RBW-PARABODY>To specify the print command:</RBW-PARABODY
  18339. ></P.PROCEDURE
  18340. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18341. ></RBW-AUTOGEN
  18342. ></RBW-MARKER
  18343. ><RBW-PARABODY>Select Options | Printer Setup | Graphical or Options | Printer Setup | Text.</RBW-PARABODY
  18344. ></LN.LIST.NUM
  18345. ><LR.LIST.RESULT>The Printer Setup window appears. The illustration below show both the Windows dialog box (first) and the UNIX dialog box (second).</LR.LIST.RESULT
  18346. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00092.unk" origfile="pics/printcom.gif" origtype="X" origdoc="../../sources/mg/mgbrows.fm5.mif"></RBW-GRAPHIC
  18347. ></FA2.FIGURE.ANCHOR.2
  18348. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00093.unk" origfile="pics/printset.gif" origtype="X" origdoc="../../sources/mg/mgbrows.fm5.mif"></RBW-GRAPHIC
  18349. ></FA2.FIGURE.ANCHOR.2
  18350. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18351. ></RBW-AUTOGEN
  18352. ></RBW-MARKER
  18353. ><RBW-PARABODY>Specify the desired settings, and then click OK.</RBW-PARABODY
  18354. ></LN.LIST.NUM
  18355. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18356. >Sharing Printer Setup options</SL.SUBLABEL
  18357. ><B.BODY>Use Options |Copy User Environment to make your Printer Setup options available to other ObjectTeam users.  See the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  18358. ><CX5FX5FTITLE></CX5FX5FTITLE
  18359. > for more information.</B.BODY
  18360. ></LABEL
  18361. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18362. >How to print the current view<RBW-IDXTERM TERM1="Print View (File menu)"></RBW-IDXTERM
  18363. ></L.LABEL
  18364. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18365. ></RBW-AUTOGEN
  18366. ></RBW-MARKER
  18367. ><RBW-PARABODY>To print the current view, select File | Print View.</RBW-PARABODY
  18368. ></P.PROCEDURE
  18369. ><LRS.LIST.RESULT.SINGLE>ObjectTeam prints the contents of the Information area.</LRS.LIST.RESULT.SINGLE
  18370. ></LABEL
  18371. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18372. >How to print a diagram<RBW-IDXTERM TERM1="diagram" TERM2="printing"></RBW-IDXTERM
  18373. ><RBW-IDXTERM TERM1="Print (File menu)"></RBW-IDXTERM
  18374. ></L.LABEL
  18375. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18376. ></RBW-AUTOGEN
  18377. ></RBW-MARKER
  18378. ><RBW-PARABODY>To print a diagram:</RBW-PARABODY
  18379. ></P.PROCEDURE
  18380. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18381. ></RBW-AUTOGEN
  18382. ></RBW-MARKER
  18383. ><RBW-PARABODY>In the Information area, select the diagram that you want to print.</RBW-PARABODY
  18384. ></LN.LIST.NUM
  18385. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18386. ></RBW-AUTOGEN
  18387. ></RBW-MARKER
  18388. ><RBW-PARABODY>Select File | Print.</RBW-PARABODY
  18389. ></LN.LIST.NUM
  18390. ><LR.LIST.RESULT>ObjectTeam prints the diagram using the Print Options specified in the diagram editor, as described later in this section. At the bottom of the diagram is a print box containing the diagram’s full file name, the date it was last changed, and its status.</LR.LIST.RESULT
  18391. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18392. >Alternative</SL.SUBLABEL
  18393. ><B.BODY>To print a diagram from a diagram editor, select File | Print.</B.BODY
  18394. ></LABEL
  18395. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18396. >How to specify print options<RBW-IDXTERM TERM1="Print Options (Options menu)"></RBW-IDXTERM
  18397. ></L.LABEL
  18398. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18399. ></RBW-AUTOGEN
  18400. ></RBW-MARKER
  18401. ><RBW-PARABODY>To specify print options:</RBW-PARABODY
  18402. ></P.PROCEDURE
  18403. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18404. ></RBW-AUTOGEN
  18405. ></RBW-MARKER
  18406. ><RBW-PARABODY>In a diagram editor, select Options | Print Options.</RBW-PARABODY
  18407. ></LN.LIST.NUM
  18408. ><LR.LIST.RESULT>The Print Options dialog box appears.</LR.LIST.RESULT
  18409. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00094.unk" origfile="pics/printopt.gif" origtype="X" origdoc="../../sources/mg/mgbrows.fm5.mif"></RBW-GRAPHIC
  18410. ></FA2.FIGURE.ANCHOR.2
  18411. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="288p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  18412. ></ENTRY
  18413. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  18414. ></ENTRY
  18415. ></RBW-ROW
  18416. ></THEAD
  18417. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Title</CELLBODY
  18418. ></ENTRY
  18419. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name that appears on the printed diagram.</CELLBODY
  18420. ></ENTRY
  18421. ></RBW-ROW
  18422. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Landscape, Print Box</CELLBODY
  18423. ></ENTRY
  18424. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The orientation of the diagram and whether the print box appears.</CELLBODY
  18425. ></ENTRY
  18426. ></RBW-ROW
  18427. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Scale strategy</CELLBODY
  18428. ></ENTRY
  18429. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Whether to scale automatically, and if not, the scale and size of the printed diagram.</CELLBODY
  18430. ><CELLBODY>There are two scale strategies: Auto Scale and Manual Scale. Auto Scale scales the diagram to fit on the specified number of pages. Manual Scale (enabled by switching Auto Scale off) requires a Scale Factor to be specified. A Factor Scale of 2.000000 means all sizes are multiplied by 2.</CELLBODY
  18431. ></ENTRY
  18432. ></RBW-ROW
  18433. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Options</CELLBODY
  18434. ></ENTRY
  18435. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Whether these options are saved with this diagram.</CELLBODY
  18436. ></ENTRY
  18437. ></RBW-ROW
  18438. ></TBODY
  18439. ></TGROUP
  18440. ></RBW-TABLE
  18441. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18442. ></RBW-AUTOGEN
  18443. ></RBW-MARKER
  18444. ><RBW-PARABODY>Select the desired options, and then click OK.</RBW-PARABODY
  18445. ></LN.LIST.NUM
  18446. ></LABEL
  18447. ></SECTION
  18448. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="39627"></RBW-ANCHOR
  18449. >Summary of Mouse Button Operations</S.SECTION.HEAD
  18450. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18451. >Introduction</L.LABEL
  18452. ><B.BODY>ObjectTeam supports a two&truehy;button mouse on Windows and a three&truehy;button mouse on UNIX systems. (If you are using a three&truehy;button mouse on Windows, the middle button is ignored.) </B.BODY
  18453. ></LABEL
  18454. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18455. >Mouse button operations<RBW-IDXTERM TERM1="mouse-button operations"></RBW-IDXTERM
  18456. ><RBW-IDXTERM TERM1="user interface" TERM2="mouse buttons"></RBW-IDXTERM
  18457. ><RBW-IDXTERM TERM1="left mouse button"></RBW-IDXTERM
  18458. ><RBW-IDXTERM TERM1="right mouse button"></RBW-IDXTERM
  18459. ><RBW-IDXTERM TERM1="middle mouse button"></RBW-IDXTERM
  18460. ></L.LABEL
  18461. ><B.BODY>The following table summarizes ObjectTeam’s mouse button operations. For more information about each operation, see the earlier sections of this chapter. </B.BODY
  18462. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="225p"><COLSPEC COLNAME="3" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  18463. ></ENTRY
  18464. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>In</CELLHEADING
  18465. ></ENTRY
  18466. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operation</CELLHEADING
  18467. ></ENTRY
  18468. ></RBW-ROW
  18469. ></THEAD
  18470. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Click left button</CELLBODY
  18471. ></ENTRY
  18472. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Information area in Browser, Class Browser, and editors</CELLBODY
  18473. ></ENTRY
  18474. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Select</CELLBODY
  18475. ></ENTRY
  18476. ></RBW-ROW
  18477. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18478. ></ENTRY
  18479. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Navigation area in Browser</CELLBODY
  18480. ></ENTRY
  18481. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Open</CELLBODY
  18482. ></ENTRY
  18483. ></RBW-ROW
  18484. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Press and hold left button</CELLBODY
  18485. ></ENTRY
  18486. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Editing area in diagram editors</CELLBODY
  18487. ></ENTRY
  18488. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Multiple selection or resize component</CELLBODY
  18489. ></ENTRY
  18490. ></RBW-ROW
  18491. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Shift+click left button</CELLBODY
  18492. ></ENTRY
  18493. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Browser and Class Browser</CELLBODY
  18494. ></ENTRY
  18495. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Multiple selection</CELLBODY
  18496. ></ENTRY
  18497. ></RBW-ROW
  18498. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Control+click left button</CELLBODY
  18499. ></ENTRY
  18500. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Browser, Class Browser, and editors</CELLBODY
  18501. ></ENTRY
  18502. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Select or deselect a single object</CELLBODY
  18503. ></ENTRY
  18504. ></RBW-ROW
  18505. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Double&truehy;click left button</CELLBODY
  18506. ></ENTRY
  18507. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Information area in Browser, display area in Class Browser, editing area in diagram editors</CELLBODY
  18508. ></ENTRY
  18509. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Open/Edit</CELLBODY
  18510. ></ENTRY
  18511. ></RBW-ROW
  18512. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UNIX: Click middle button</CELLBODY
  18513. ></ENTRY
  18514. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text fields in windows and editing area in diagram editors</CELLBODY
  18515. ></ENTRY
  18516. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Paste</CELLBODY
  18517. ></ENTRY
  18518. ></RBW-ROW
  18519. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Press and hold... </CELLBODY
  18520. ><CELLBODY>UNIX: middle button</CELLBODY
  18521. ><CELLBODY>Windows: left button</CELLBODY
  18522. ></ENTRY
  18523. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Editing area in diagram editors</CELLBODY
  18524. ></ENTRY
  18525. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Move</CELLBODY
  18526. ></ENTRY
  18527. ></RBW-ROW
  18528. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Press and hold... </CELLBODY
  18529. ><CELLBODY>UNIX: middle button</CELLBODY
  18530. ><CELLBODY>Windows: left button</CELLBODY
  18531. ></ENTRY
  18532. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Navigation and Information areas in Browser, display area in Customization editors</CELLBODY
  18533. ></ENTRY
  18534. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Drag</CELLBODY
  18535. ></ENTRY
  18536. ></RBW-ROW
  18537. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Click right button</CELLBODY
  18538. ></ENTRY
  18539. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Editing area in diagram editors</CELLBODY
  18540. ></ENTRY
  18541. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>In empty space: Undo</CELLBODY
  18542. ><CELLBODY>On diagram objects: Display context menu</CELLBODY
  18543. ><CELLBODY>When drawing connector: Undo</CELLBODY
  18544. ></ENTRY
  18545. ></RBW-ROW
  18546. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  18547. ></ENTRY
  18548. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Information area in Browser</CELLBODY
  18549. ></ENTRY
  18550. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Display context menu<RBW-IDXTERM TERM1="context menu"></RBW-IDXTERM
  18551. ></CELLBODY
  18552. ></ENTRY
  18553. ></RBW-ROW
  18554. ></TBODY
  18555. ></TGROUP
  18556. ><RBW-ICONIZE></RBW-TABLE
  18557. ><B.BODY></B.BODY
  18558. ><RBWAUTO-0001></RBWAUTO-0001
  18559. ><!--
  18560.  
  18561.  
  18562.  
  18563.  
  18564.  
  18565. CONVERTING SOURCE FILE ../../sources/mg/dgmedit.fm5.mif
  18566.  
  18567.  
  18568. --><B.BODY></B.BODY
  18569. ><B.BODY></B.BODY
  18570. ><B.BODY></B.BODY
  18571. ><B.BODY></B.BODY
  18572. ><B.BODY></B.BODY
  18573. ></LABEL
  18574. ></SECTION
  18575. ></CHAPTER
  18576. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  18577. ></RBW-AUTOGEN
  18578. >Working <RBW-ANCHOR ID="35957"></RBW-ANCHOR
  18579. >With Diagrams<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  18580. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  18581. ></RBW-SYSOBJ
  18582. ></C.CHAPTER.HEAD
  18583. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18584. >Introduction</L.LABEL
  18585. ><B.BODY>This chapter describes how to work with diagrams. It does not repeat all of the information provided in <CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  18586. ><CX5FX5FTITLE></CX5FX5FTITLE
  18587. >.</B.BODY
  18588. ></LABEL
  18589. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18590. >For more information</L.LABEL
  18591. ><B.BODY>The following chapters provide additional diagram information:</B.BODY
  18592. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18593. ></RBW-AUTOGEN
  18594. ></RBW-MARKER
  18595. ><RBW-PARABODY><RBW-XREF REFID="35959" TYPE="XREF-TEXTCOPY">Printing</RBW-XREF
  18596. > describes how to print diagrams.</RBW-PARABODY
  18597. ></LB.LIST.BULLET
  18598. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18599. ></RBW-AUTOGEN
  18600. ></RBW-MARKER
  18601. ><RBW-PARABODY>Chapter 4, Exploring Each Diagram, describes each type of diagram, its purpose, and the symbols it uses.</RBW-PARABODY
  18602. ></LB.LIST.BULLET
  18603. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18604. ></RBW-AUTOGEN
  18605. ></RBW-MARKER
  18606. ><RBW-PARABODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  18607. ><CX5FX5FTITLE></CX5FX5FTITLE
  18608. > describes how to customize the symbols available in the control panel of each diagram editor.</RBW-PARABODY
  18609. ></LB.LIST.BULLET
  18610. ></LABEL
  18611. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18612. >In this chapter</L.LABEL
  18613. ><B.BODY>This chapter contains the following sections:</B.BODY
  18614. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  18615. ></ENTRY
  18616. ></RBW-ROW
  18617. ></THEAD
  18618. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38477" TYPE="XREF-TEXTCOPY">Creating and Opening Diagrams&rbwtab;3–2</RBW-XREF
  18619. ></SB.SECTION.BLOCK.TABLE
  18620. ></ENTRY
  18621. ></RBW-ROW
  18622. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12188" TYPE="XREF-TEXTCOPY">Saving and Deleting Diagrams&rbwtab;3–11</RBW-XREF
  18623. ></SB.SECTION.BLOCK.TABLE
  18624. ></ENTRY
  18625. ></RBW-ROW
  18626. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40261" TYPE="XREF-TEXTCOPY">Merging Diagrams&rbwtab;3–12</RBW-XREF
  18627. ></SB.SECTION.BLOCK.TABLE
  18628. ></ENTRY
  18629. ></RBW-ROW
  18630. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37746" TYPE="XREF-TEXTCOPY">Adding Comments to Diagrams&rbwtab;3–13</RBW-XREF
  18631. ></SB.SECTION.BLOCK.TABLE
  18632. ></ENTRY
  18633. ></RBW-ROW
  18634. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21332" TYPE="XREF-TEXTCOPY">Editing Diagrams&rbwtab;3–14</RBW-XREF
  18635. ></SB.SECTION.BLOCK.TABLE
  18636. ></ENTRY
  18637. ></RBW-ROW
  18638. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29698" TYPE="XREF-TEXTCOPY">Working With Items&rbwtab;3–31</RBW-XREF
  18639. ></SB.SECTION.BLOCK.TABLE
  18640. ></ENTRY
  18641. ></RBW-ROW
  18642. ></TBODY
  18643. ></TGROUP
  18644. ></RBW-TABLE
  18645. ></LABEL
  18646. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="38477"></RBW-ANCHOR
  18647. >Creating and Opening Diagrams</S.SECTION.HEAD
  18648. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18649. >Introduction</L.LABEL
  18650. ><B.BODY>This section describes how to create diagrams, how to open diagrams, and how to move easily from one diagram to another.</B.BODY
  18651. ></LABEL
  18652. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18653. >In this section</L.LABEL
  18654. ><B.BODY>This section contains the following topics:</B.BODY
  18655. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  18656. ></ENTRY
  18657. ></RBW-ROW
  18658. ></THEAD
  18659. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10910" TYPE="XREF-TEXTCOPY">Creating Diagrams&rbwtab;3–3</RBW-XREF
  18660. ></SB.SECTION.BLOCK.TABLE
  18661. ></ENTRY
  18662. ></RBW-ROW
  18663. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36237" TYPE="XREF-TEXTCOPY">Opening Diagrams&rbwtab;3–5</RBW-XREF
  18664. ></SB.SECTION.BLOCK.TABLE
  18665. ></ENTRY
  18666. ></RBW-ROW
  18667. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33913" TYPE="XREF-TEXTCOPY">Navigating Between Diagrams&rbwtab;3–7</RBW-XREF
  18668. ></SB.SECTION.BLOCK.TABLE
  18669. ></ENTRY
  18670. ></RBW-ROW
  18671. ></TBODY
  18672. ></TGROUP
  18673. ></RBW-TABLE
  18674. ></LABEL
  18675. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10910"></RBW-ANCHOR
  18676. >Creating Diagrams</SS.SUBSEC.HEAD
  18677. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18678. >Prerequisite</L.LABEL
  18679. ><B.BODY>You create a diagram at the system level. Before you can create a diagram, you must already have created a project hierarchy: a project, configuration version, phase version, and system version.</B.BODY
  18680. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18681. >For more information</SL.SUBLABEL
  18682. ><B.BODY><CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  18683. ><CX5FX5FTITLE></CX5FX5FTITLE
  18684. > describes how to create a project hierarchy.</B.BODY
  18685. ></LABEL
  18686. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18687. >Naming conventions</L.LABEL
  18688. ><B.BODY><RBW-IDXTERM TERM1="diagram component" TERM2="naming"></RBW-IDXTERM
  18689. ><RBW-IDXTERM TERM1="naming conventions"></RBW-IDXTERM
  18690. >Object names, including diagram names, have a maximum length of 80 characters and can include any alphanumeric character. When naming objects, it is recommended to choose names that conform to the operating system’s rules for file names, since object names are often used as file names.</B.BODY
  18691. ></LABEL
  18692. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18693. >Ways to create</L.LABEL
  18694. ><B.BODY><RBW-IDXTERM TERM1="diagram" TERM2="creating"></RBW-IDXTERM
  18695. ><RBW-IDXTERM TERM1="creating" TERM2="diagrams"></RBW-IDXTERM
  18696. >You can create a diagram in the following ways:</B.BODY
  18697. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18698. ></RBW-AUTOGEN
  18699. ></RBW-MARKER
  18700. ><RBW-PARABODY>From the Browser, as described in <RBW-XREF REFID="20667" TYPE="XREF-TEXTCOPY">How to create from the Browser</RBW-XREF
  18701. ></RBW-PARABODY
  18702. ></LB.LIST.BULLET
  18703. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18704. ></RBW-AUTOGEN
  18705. ></RBW-MARKER
  18706. ><RBW-PARABODY>From a diagram editor, as described in <RBW-XREF REFID="40331" TYPE="XREF-TEXTCOPY">How to create from a diagram editor</RBW-XREF
  18707. ></RBW-PARABODY
  18708. ></LB.LIST.BULLET
  18709. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18710. ></RBW-AUTOGEN
  18711. ></RBW-MARKER
  18712. ><RBW-PARABODY>From a diagram component, as described in <RBW-XREF REFID="33913" TYPE="XREF-TEXTCOPY">Navigating Between Diagrams</RBW-XREF
  18713. ></RBW-PARABODY
  18714. ></LB.LIST.BULLET
  18715. ></LABEL
  18716. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18717. ><RBW-ANCHOR ID="20667"></RBW-ANCHOR
  18718. >How to create from the Browser</L.LABEL
  18719. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18720. ></RBW-AUTOGEN
  18721. ></RBW-MARKER
  18722. ><RBW-PARABODY>To create a diagram from the Browser:<RBW-IDXTERM TERM1="New (File menu)" TERM2="diagram"></RBW-IDXTERM
  18723. ></RBW-PARABODY
  18724. ></P.PROCEDURE
  18725. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18726. ></RBW-AUTOGEN
  18727. ></RBW-MARKER
  18728. ><RBW-PARABODY>Move to the System level.</RBW-PARABODY
  18729. ></LN.LIST.NUM
  18730. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18731. ></RBW-AUTOGEN
  18732. ></RBW-MARKER
  18733. ><RBW-PARABODY>Select File | New .</RBW-PARABODY
  18734. ></LN.LIST.NUM
  18735. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  18736. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  18737. ></RBW-AUTOGEN
  18738. ></RBW-MARKER
  18739. ><RBW-PARABODY>From the submenu, click the type of diagram that you want to create.</RBW-PARABODY
  18740. ></LN.LIST.NUM
  18741. ><LR.LIST.RESULT>The New Diagram window appears.</LR.LIST.RESULT
  18742. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  18743. ></RBW-AUTOGEN
  18744. ></RBW-MARKER
  18745. ><RBW-PARABODY>Type a name for the new diagram.</RBW-PARABODY
  18746. ></LN.LIST.NUM
  18747. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  18748. ></RBW-AUTOGEN
  18749. ></RBW-MARKER
  18750. ><RBW-PARABODY>Do you want to open a diagram editor for the new diagram?</RBW-PARABODY
  18751. ></LN.LIST.NUM
  18752. ><LT.LIST.TEXT>If <CX5FX5FBULLET.EMPHASIS>yes</CX5FX5FBULLET.EMPHASIS
  18753. >, click Edit.</LT.LIST.TEXT
  18754. ><LR.LIST.RESULT>The system creates the new diagram and opens an editor for it.</LR.LIST.RESULT
  18755. ><LT.LIST.TEXT>If <CX5FX5FBULLET.EMPHASIS>no</CX5FX5FBULLET.EMPHASIS
  18756. >, click OK.</LT.LIST.TEXT
  18757. ><LR.LIST.RESULT>The system creates the new diagram.</LR.LIST.RESULT
  18758. ></LABEL
  18759. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18760. ><RBW-ANCHOR ID="40331"></RBW-ANCHOR
  18761. >How to create from a diagram editor</L.LABEL
  18762. ><B.BODY>Creating a diagram from the diagram editor creates a diagram of the same type of the editor.</B.BODY
  18763. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18764. ></RBW-AUTOGEN
  18765. ></RBW-MARKER
  18766. ><RBW-PARABODY>To create a diagram of the same type as the diagram editor:<RBW-IDXTERM TERM1="Open By Name (File menu)" TERM2="create diagram"></RBW-IDXTERM
  18767. ></RBW-PARABODY
  18768. ></P.PROCEDURE
  18769. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18770. ></RBW-AUTOGEN
  18771. ></RBW-MARKER
  18772. ><RBW-PARABODY>Select File | Open By Name.</RBW-PARABODY
  18773. ></LN.LIST.NUM
  18774. ><LR.LIST.RESULT>The Open By Name window appears.</LR.LIST.RESULT
  18775. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18776. ></RBW-AUTOGEN
  18777. ></RBW-MARKER
  18778. ><RBW-PARABODY>Type a name for the new diagram and click OK.</RBW-PARABODY
  18779. ></LN.LIST.NUM
  18780. ><LR.LIST.RESULT>ObjectTeam closes the current diagram, creates a new diagram, and displays the new diagram in the diagram editor.</LR.LIST.RESULT
  18781. ></LABEL
  18782. ></SUBSECTION
  18783. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36237"></RBW-ANCHOR
  18784. >Opening Diagrams</SS.SUBSEC.HEAD
  18785. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18786. >Introduction</L.LABEL
  18787. ><B.BODY>When you open a diagram, it appears in a diagram editor.</B.BODY
  18788. ></LABEL
  18789. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18790. >Ways to open a diagram</L.LABEL
  18791. ><B.BODY><RBW-IDXTERM TERM1="diagram" TERM2="opening"></RBW-IDXTERM
  18792. >You can open a diagram in the following ways:</B.BODY
  18793. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18794. ></RBW-AUTOGEN
  18795. ></RBW-MARKER
  18796. ><RBW-PARABODY>From the Browser, as described in <RBW-XREF REFID="18183" TYPE="XREF-TEXTCOPY">How to open from the Browser</RBW-XREF
  18797. ></RBW-PARABODY
  18798. ></LB.LIST.BULLET
  18799. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18800. ></RBW-AUTOGEN
  18801. ></RBW-MARKER
  18802. ><RBW-PARABODY>From a diagram editor, as described in <RBW-XREF REFID="40234" TYPE="XREF-TEXTCOPY">How to open from a diagram editor</RBW-XREF
  18803. ></RBW-PARABODY
  18804. ></LB.LIST.BULLET
  18805. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18806. ></RBW-AUTOGEN
  18807. ></RBW-MARKER
  18808. ><RBW-PARABODY>From the Class Browser (Class Diagrams only), as described in <RBW-XREF REFID="42628" TYPE="XREF-TEXTCOPY">How to open from the Class Browser</RBW-XREF
  18809. ></RBW-PARABODY
  18810. ></LB.LIST.BULLET
  18811. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18812. ></RBW-AUTOGEN
  18813. ></RBW-MARKER
  18814. ><RBW-PARABODY>From a diagram component, as described in <RBW-XREF REFID="33913" TYPE="XREF-TEXTCOPY">Navigating Between Diagrams</RBW-XREF
  18815. ></RBW-PARABODY
  18816. ></LB.LIST.BULLET
  18817. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18818. ></RBW-AUTOGEN
  18819. ></RBW-MARKER
  18820. ><RBW-PARABODY><CX5FX5FFILE.NAME>Windows only:</CX5FX5FFILE.NAME
  18821. > From a shortcut on the desktop, as described in <RBW-XREF REFID="28215" TYPE="XREF-TEXTCOPY">How to open from the Windows desktop</RBW-XREF
  18822. ></RBW-PARABODY
  18823. ></LB.LIST.BULLET
  18824. ></LABEL
  18825. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18826. ><RBW-ANCHOR ID="18183"></RBW-ANCHOR
  18827. >How to open from the Browser</L.LABEL
  18828. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18829. ></RBW-AUTOGEN
  18830. ></RBW-MARKER
  18831. ><RBW-PARABODY>To open a diagram from the Browser, in the information area, double&truehy;click the name of the diagram.</RBW-PARABODY
  18832. ></P.PROCEDURE
  18833. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18834. >Alternative</SL.SUBLABEL
  18835. ><B.BODY>You can open a diagram in other ways:</B.BODY
  18836. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18837. ></RBW-AUTOGEN
  18838. ></RBW-MARKER
  18839. ><RBW-PARABODY>In the information area, select a diagram, and then select File | Open or File | Edit, or right&truehy;click and select Open from the shortcut menu. <RBW-IDXTERM TERM1="Open (File menu)" TERM2="diagram"></RBW-IDXTERM
  18840. ><RBW-IDXTERM TERM1="Edit (File menu)" TERM2="diagram"></RBW-IDXTERM
  18841. ><RBW-IDXTERM TERM1="Show (File menu)"></RBW-IDXTERM
  18842. ></RBW-PARABODY
  18843. ></LB.LIST.BULLET
  18844. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18845. ></RBW-AUTOGEN
  18846. ></RBW-MARKER
  18847. ><RBW-PARABODY>In the information area, select a diagram, and then select File | Show. ObjectTeam opens the diagram for read&truehy;only access.</RBW-PARABODY
  18848. ></LB.LIST.BULLET
  18849. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  18850. ></RBW-AUTOGEN
  18851. ></RBW-MARKER
  18852. ><RBW-PARABODY>In the information area, select a CDM, and then select File | Open or File | Edit. ObjectTeam opens the Class Diagram (CD) that contains the class.</RBW-PARABODY
  18853. ></LB.LIST.BULLET
  18854. ></LABEL
  18855. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18856. ><RBW-ANCHOR ID="40234"></RBW-ANCHOR
  18857. >How to open from a diagram editor</L.LABEL
  18858. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18859. ></RBW-AUTOGEN
  18860. ></RBW-MARKER
  18861. ><RBW-PARABODY>To open a diagram of the same type as the current diagram editor:</RBW-PARABODY
  18862. ></P.PROCEDURE
  18863. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18864. ></RBW-AUTOGEN
  18865. ></RBW-MARKER
  18866. ><RBW-PARABODY>Select File | Open by Name.<RBW-IDXTERM TERM1="Open By Name (File menu)" TERM2="open diagram"></RBW-IDXTERM
  18867. ></RBW-PARABODY
  18868. ></LN.LIST.NUM
  18869. ><LR.LIST.RESULT>The Open By Name window appears. It lists all diagrams that can be opened in this type of diagram editor.</LR.LIST.RESULT
  18870. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18871. ></RBW-AUTOGEN
  18872. ></RBW-MARKER
  18873. ><RBW-PARABODY>Select the diagram that you want to open and click OK.</RBW-PARABODY
  18874. ></LN.LIST.NUM
  18875. ><LR.LIST.RESULT>ObjectTeam closes the current diagram, and then loads the selected diagram.</LR.LIST.RESULT
  18876. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  18877. ></RBW-AUTOGEN
  18878. >Selecting the name of the current diagram reloads the diagram. Any changes made since you last saved the diagram are lost.</N2.NOTE.2
  18879. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18880. >Alternative</SL.SUBLABEL
  18881. ><B.BODY>Drag the icon of the diagram from the information area of the Browser into the drawing area of the current diagram editor. This only works if the diagram you are dragging is the same type as the current diagram editor.</B.BODY
  18882. ></LABEL
  18883. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18884. ><RBW-ANCHOR ID="28215"></RBW-ANCHOR
  18885. >How to open from the Windows desktop</L.LABEL
  18886. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18887. >Windows</SL.SUBLABEL
  18888. ><B.BODY>This feature is only available on Windows.</B.BODY
  18889. ><B.BODY>You can create a desktop shortcut for a diagram. To create a shortcut, select a diagram in the information area of the Browser and select File | Create Shortcut.</B.BODY
  18890. ><LRS.LIST.RESULT.SINGLE>A shortcut with the name of the diagram is placed on the Windows desktop</LRS.LIST.RESULT.SINGLE
  18891. ><B.BODY>To open the diagram, double&truehy;click on the shortcut on the desktop.</B.BODY
  18892. ></LABEL
  18893. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18894. ><RBW-ANCHOR ID="42628"></RBW-ANCHOR
  18895. >How to open from the Class Browser</L.LABEL
  18896. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18897. ></RBW-AUTOGEN
  18898. ></RBW-MARKER
  18899. ><RBW-PARABODY>To open a CD from the Class Browser:</RBW-PARABODY
  18900. ></P.PROCEDURE
  18901. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18902. ></RBW-AUTOGEN
  18903. ></RBW-MARKER
  18904. ><RBW-PARABODY>In the Class Browser, open a class.</RBW-PARABODY
  18905. ></LN.LIST.NUM
  18906. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18907. ></RBW-AUTOGEN
  18908. ></RBW-MARKER
  18909. ><RBW-PARABODY>Select Utilities | Edit Class Diagram.</RBW-PARABODY
  18910. ></LN.LIST.NUM
  18911. ><LT.LIST.TEXT>If the open class appears in more than one CD, the system displays a list of all CDs in which the class appears. Select the CD that you want to open, then click OK. </LT.LIST.TEXT
  18912. ><LR.LIST.RESULT>The CD appears.</LR.LIST.RESULT
  18913. ></LABEL
  18914. ></SUBSECTION
  18915. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33913"></RBW-ANCHOR
  18916. >Navigating Between Diagrams</SS.SUBSEC.HEAD
  18917. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18918. >Introduction</L.LABEL
  18919. ><B.BODY>Components in one diagram can often be defined further in another diagram of the same or different type. For example, a class in a Class Diagram can be further defined in a State Transition Diagram. To help you build related diagrams, ObjectTeam allows you to <CX5FX5FTERM>navigate</CX5FX5FTERM
  18920. > between diagrams — that is, you create or open a new diagram from a component in the current diagram.</B.BODY
  18921. ></LABEL
  18922. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18923. >How to navigate between diagrams</L.LABEL
  18924. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  18925. ></RBW-AUTOGEN
  18926. ></RBW-MARKER
  18927. ><RBW-PARABODY>To navigate between diagrams:</RBW-PARABODY
  18928. ></P.PROCEDURE
  18929. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  18930. ></RBW-AUTOGEN
  18931. ></RBW-MARKER
  18932. ><RBW-PARABODY>Double&truehy;click a component in the current diagram or select a component in the current diagram, and then select File | Open.</RBW-PARABODY
  18933. ></LN.LIST.NUM
  18934. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  18935. ></RBW-AUTOGEN
  18936. >The component must have a name and you must have saved your diagram. If not, the option File | Open is unavailable.</N2.NOTE.2
  18937. ><LR.LIST.RESULT>If the selected component refers to more than one item, the Items dialog box appears. </LR.LIST.RESULT
  18938. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  18939. ></RBW-MARKER
  18940. ><RBW-PARABODY>Click the item that you want to navigate from, and then click OK.</RBW-PARABODY
  18941. ></LB2.LIST.BULLET.2
  18942. ><LR.LIST.RESULT>The Select Operations window appears, as shown below. The options listed depend on what item you selected and what diagrams exist, as described in <RBW-XREF REFID="39004" TYPE="XREF-TEXTCOPY">Navigation options</RBW-XREF
  18943. >.</LR.LIST.RESULT
  18944. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00095.unk" origfile="pics/sel_oper.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  18945. ></FAR.FIGURE.ANCHOR.RIGHT
  18946. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  18947. ></RBW-AUTOGEN
  18948. ></RBW-MARKER
  18949. ><RBW-PARABODY>Select the desired option, and then click OK.</RBW-PARABODY
  18950. ></LN.LIST.NUM
  18951. ></LABEL
  18952. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18953. ><RBW-ANCHOR ID="39004"></RBW-ANCHOR
  18954. >Navigation options</L.LABEL
  18955. ><B.BODY>The following table shows the navigation options that appear by default. You can customize these options, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  18956. ><CX5FX5FTITLE></CX5FX5FTITLE
  18957. >.</B.BODY
  18958. ><B.BODY>Each navigation option creates and opens a new diagram or opens an existing diagram.</B.BODY
  18959. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="145p"><COLSPEC COLNAME="2" COLWIDTH="303p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>option</CELLHEADING
  18960. ></ENTRY
  18961. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operation</CELLHEADING
  18962. ></ENTRY
  18963. ></RBW-ROW
  18964. ></THEAD
  18965. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition</CELLBODY
  18966. ></ENTRY
  18967. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create a diagram of the same type; the current diagram is closed.</CELLBODY
  18968. ></ENTRY
  18969. ></RBW-ROW
  18970. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Load diagram</CELLBODY
  18971. ></ENTRY
  18972. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Open a diagram of the same type; the current diagram is closed.</CELLBODY
  18973. ></ENTRY
  18974. ></RBW-ROW
  18975. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram</CELLBODY
  18976. ></ENTRY
  18977. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create a diagram of a different type.</CELLBODY
  18978. ></ENTRY
  18979. ></RBW-ROW
  18980. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Start editor</CELLBODY
  18981. ></ENTRY
  18982. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Open a diagram of a different type.</CELLBODY
  18983. ></ENTRY
  18984. ></RBW-ROW
  18985. ></TBODY
  18986. ></TGROUP
  18987. ></RBW-TABLE
  18988. ></LABEL
  18989. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  18990. >Navigation paths</L.LABEL
  18991. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  18992. ></RBW-AUTOGEN
  18993. >The CD, COD, SD, STD, and UCD are described in Chapter 4, Exploring Each Diagram. The CCD, DFD, MGD and the navigation options to and from these diagrams are described in Appendix A, OMT Support.</N.NOTE
  18994. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="106p"><COLSPEC COLNAME="2" COLWIDTH="69p"><COLSPEC COLNAME="3" COLWIDTH="160p"><COLSPEC COLNAME="4" COLWIDTH="70p"><COLSPEC COLNAME="5" COLWIDTH="222p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram Object</CELLHEADING
  18995. ></ENTRY
  18996. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Select Item</CELLHEADING
  18997. ></ENTRY
  18998. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Select Operation</CELLHEADING
  18999. ></ENTRY
  19000. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Of Diagram</CELLHEADING
  19001. ></ENTRY
  19002. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING> Diagram Name</CELLHEADING
  19003. ></ENTRY
  19004. ></RBW-ROW
  19005. ></THEAD
  19006. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CD Class</CELLBODY
  19007. ></ENTRY
  19008. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class name</CELLBODY
  19009. ></ENTRY
  19010. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  19011. ><CELLBODY>Load diagram</CELLBODY
  19012. ></ENTRY
  19013. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  19014. ></ENTRY
  19015. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name</CELLBODY
  19016. ><CELLBODY>class_name</CELLBODY
  19017. ></ENTRY
  19018. ></RBW-ROW
  19019. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19020. ></ENTRY
  19021. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19022. ></ENTRY
  19023. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or </CELLBODY
  19024. ><CELLBODY>Start editor</CELLBODY
  19025. ></ENTRY
  19026. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cod</CELLBODY
  19027. ></ENTRY
  19028. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name (assign cod_name)</CELLBODY
  19029. ><CELLBODY>class_name : cod_name</CELLBODY
  19030. ></ENTRY
  19031. ></RBW-ROW
  19032. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19033. ></ENTRY
  19034. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19035. ></ENTRY
  19036. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or </CELLBODY
  19037. ><CELLBODY>Start editor</CELLBODY
  19038. ></ENTRY
  19039. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd (sd)</CELLBODY
  19040. ></ENTRY
  19041. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name (assign sd_name)</CELLBODY
  19042. ><CELLBODY>class_name : sd_name</CELLBODY
  19043. ></ENTRY
  19044. ></RBW-ROW
  19045. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19046. ></ENTRY
  19047. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19048. ></ENTRY
  19049. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  19050. ><CELLBODY>Start editor</CELLBODY
  19051. ></ENTRY
  19052. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>std</CELLBODY
  19053. ></ENTRY
  19054. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name : top</CELLBODY
  19055. ><CELLBODY>class_name : top</CELLBODY
  19056. ></ENTRY
  19057. ></RBW-ROW
  19058. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>(CD Attribute) </CELLBODY
  19059. ></ENTRY
  19060. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute type</CELLBODY
  19061. ></ENTRY
  19062. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>Same as CD Class</CX5FX5FEMPHASIS
  19063. ></CELLBODY
  19064. ></ENTRY
  19065. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19066. ></ENTRY
  19067. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>replace class_name with attributeType_name</CX5FX5FEMPHASIS
  19068. ></CELLBODY
  19069. ></ENTRY
  19070. ></RBW-ROW
  19071. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>(CD Operation)</CELLBODY
  19072. ></ENTRY
  19073. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Return type</CELLBODY
  19074. ></ENTRY
  19075. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>Same as CD Class</CX5FX5FEMPHASIS
  19076. ></CELLBODY
  19077. ></ENTRY
  19078. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19079. ></ENTRY
  19080. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>replace class_name with returnType_name</CX5FX5FEMPHASIS
  19081. ></CELLBODY
  19082. ></ENTRY
  19083. ></RBW-ROW
  19084. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>COD Instance</CELLBODY
  19085. ></ENTRY
  19086. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Instance type</CELLBODY
  19087. ></ENTRY
  19088. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create CD diagram or</CELLBODY
  19089. ><CELLBODY>Start CD editor</CELLBODY
  19090. ></ENTRY
  19091. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  19092. ></ENTRY
  19093. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>instanceType_name</CELLBODY
  19094. ><CELLBODY>instanceType_name</CELLBODY
  19095. ></ENTRY
  19096. ></RBW-ROW
  19097. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD Object</CELLBODY
  19098. ></ENTRY
  19099. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object type</CELLBODY
  19100. ></ENTRY
  19101. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  19102. ><CELLBODY>Load diagram</CELLBODY
  19103. ></ENTRY
  19104. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd (sd)</CELLBODY
  19105. ></ENTRY
  19106. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>objectType_name (assign sd_name)</CELLBODY
  19107. ><CELLBODY>objectType_name : sd_name</CELLBODY
  19108. ></ENTRY
  19109. ></RBW-ROW
  19110. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19111. ></ENTRY
  19112. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19113. ></ENTRY
  19114. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  19115. ><CELLBODY>Start editor</CELLBODY
  19116. ></ENTRY
  19117. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cd</CELLBODY
  19118. ></ENTRY
  19119. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>objectType_name</CELLBODY
  19120. ><CELLBODY>objectType_name</CELLBODY
  19121. ></ENTRY
  19122. ></RBW-ROW
  19123. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19124. ></ENTRY
  19125. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19126. ></ENTRY
  19127. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  19128. ><CELLBODY>Start editor</CELLBODY
  19129. ></ENTRY
  19130. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>std</CELLBODY
  19131. ></ENTRY
  19132. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>objectType_name : top</CELLBODY
  19133. ><CELLBODY>objectType_name : top</CELLBODY
  19134. ></ENTRY
  19135. ></RBW-ROW
  19136. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD State With Internal Actions</CELLBODY
  19137. ></ENTRY
  19138. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event / Action</CELLBODY
  19139. ></ENTRY
  19140. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  19141. ><CELLBODY>Load diagram</CELLBODY
  19142. ></ENTRY
  19143. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>std</CELLBODY
  19144. ></ENTRY
  19145. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>std_name : action_name</CELLBODY
  19146. ><CELLBODY>std_name : action_name</CELLBODY
  19147. ></ENTRY
  19148. ></RBW-ROW
  19149. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UCD Use Case</CELLBODY
  19150. ></ENTRY
  19151. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use Case name</CELLBODY
  19152. ></ENTRY
  19153. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  19154. ><CELLBODY>Load diagram</CELLBODY
  19155. ></ENTRY
  19156. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>ucd</CELLBODY
  19157. ></ENTRY
  19158. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>useCase_name</CELLBODY
  19159. ><CELLBODY>useCase_name</CELLBODY
  19160. ></ENTRY
  19161. ></RBW-ROW
  19162. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19163. ></ENTRY
  19164. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19165. ></ENTRY
  19166. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and</CELLBODY
  19167. ><CELLBODY>Start editor</CELLBODY
  19168. ></ENTRY
  19169. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cod</CELLBODY
  19170. ></ENTRY
  19171. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>useCase_name (assign cod_name)</CELLBODY
  19172. ><CELLBODY>useCase_name: cod_name</CELLBODY
  19173. ></ENTRY
  19174. ></RBW-ROW
  19175. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19176. ></ENTRY
  19177. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  19178. ></ENTRY
  19179. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and</CELLBODY
  19180. ><CELLBODY>Start editor</CELLBODY
  19181. ></ENTRY
  19182. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd (sd)</CELLBODY
  19183. ></ENTRY
  19184. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>useCase_name (assign sd_name)</CELLBODY
  19185. ><CELLBODY>useCase_name : sd_name</CELLBODY
  19186. ></ENTRY
  19187. ></RBW-ROW
  19188. ></TBODY
  19189. ></TGROUP
  19190. ><RBW-ICONIZE></RBW-TABLE
  19191. ><B.BODY>Explanation of the columns:</B.BODY
  19192. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19193. ></RBW-AUTOGEN
  19194. ></RBW-MARKER
  19195. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Diagram Object</CX5FX5FBULLET.EMPHASIS
  19196. >: the object that you select in a diagram to navigate from with File | Open.</RBW-PARABODY
  19197. ></LB.LIST.BULLET
  19198. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19199. ></RBW-AUTOGEN
  19200. ></RBW-MARKER
  19201. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Select Item</CX5FX5FBULLET.EMPHASIS
  19202. >: the item that you select in the Select Item dialog box.</RBW-PARABODY
  19203. ></LB.LIST.BULLET
  19204. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19205. ></RBW-AUTOGEN
  19206. ></RBW-MARKER
  19207. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Select Operation</CX5FX5FBULLET.EMPHASIS
  19208. >: the operations that appear in the Select Operation dialog box. </RBW-PARABODY
  19209. ></LB.LIST.BULLET
  19210. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19211. ></RBW-AUTOGEN
  19212. ></RBW-MARKER
  19213. ><RBW-PARABODY><CX5FX5FFILE.NAME>Of type:</CX5FX5FFILE.NAME
  19214. > the type of the diagram to be created/opened.</RBW-PARABODY
  19215. ></LB.LIST.BULLET
  19216. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19217. ></RBW-AUTOGEN
  19218. ></RBW-MARKER
  19219. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Diagram Name</CX5FX5FBULLET.EMPHASIS
  19220. >: See <RBW-XREF REFID="34996" TYPE="XREF-TEXTCOPY">Diagram Name</RBW-XREF
  19221. > below.</RBW-PARABODY
  19222. ></LB.LIST.BULLET
  19223. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19224. ></RBW-AUTOGEN
  19225. ></RBW-MARKER
  19226. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>System</CX5FX5FBULLET.EMPHASIS
  19227. >: (not mentioned in the table but displayed in the Select Operation dialog box). See <RBW-XREF REFID="15252" TYPE="XREF-TEXTCOPY">Systems you can navigate to</RBW-XREF
  19228. > below.</RBW-PARABODY
  19229. ></LB.LIST.BULLET
  19230. ></LABEL
  19231. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19232. ><RBW-ANCHOR ID="34996"></RBW-ANCHOR
  19233. >Diagram Name </L.LABEL
  19234. ><B.BODY>The diagram names are generated from the component name from which the navigation was started. </B.BODY
  19235. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  19236. ></RBW-MARKER
  19237. ><RBW-PARABODY>When you create a CD or UCD, the name of the component is assigned to the diagram name. </RBW-PARABODY
  19238. ></LB2.LIST.BULLET.2
  19239. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  19240. ></RBW-MARKER
  19241. ><RBW-PARABODY>When you create a COD, or SD, the name of the component is assigned to the qualifier, and a dialog box appears in which you can assign the diagram name.</RBW-PARABODY
  19242. ></LB2.LIST.BULLET.2
  19243. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  19244. ></RBW-MARKER
  19245. ><RBW-PARABODY>When you create an STD, the name of the component is assigned to the qualifier. If the navigation process was started from a CD or SD, the STD diagram name is given the name top.</RBW-PARABODY
  19246. ></LB2.LIST.BULLET.2
  19247. ><B.BODY>The names of the new diagrams are generated from the component name. These names remain linked to the original component. If you change the name of the component in the original diagram, ObjectTeam changes the name of the generated diagram (or system).</B.BODY
  19248. ></LABEL
  19249. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19250. ><RBW-ANCHOR ID="15252"></RBW-ANCHOR
  19251. >Systems you can navigate to</L.LABEL
  19252. ><B.BODY>The System column in the Select Operation dialog box displays the name of the system in which the create or open action will take place. </B.BODY
  19253. ><B.BODY>If the item you are navigating from is already defined in that system, an asterisk is placed in front of the system name.</B.BODY
  19254. ><B.BODY>When selecting an open or create operation, you can determine in which system the operation will be carried out by checking the value of the system field:</B.BODY
  19255. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="82p"><COLSPEC COLNAME="2" COLWIDTH="112p"><COLSPEC COLNAME="3" COLWIDTH="252p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Asterisk</CELLHEADING
  19256. ></ENTRY
  19257. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>System </CELLHEADING
  19258. ></ENTRY
  19259. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Situation</CELLHEADING
  19260. ></ENTRY
  19261. ></RBW-ROW
  19262. ></THEAD
  19263. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes</CELLBODY
  19264. ></ENTRY
  19265. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>current system_name</CELLBODY
  19266. ></ENTRY
  19267. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The item is defined in the current system. The operation will be carried out in this system.</CELLBODY
  19268. ></ENTRY
  19269. ></RBW-ROW
  19270. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes</CELLBODY
  19271. ></ENTRY
  19272. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>other system_name</CELLBODY
  19273. ></ENTRY
  19274. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The item is defined in another system. The operation will be carried out in the other system.</CELLBODY
  19275. ></ENTRY
  19276. ></RBW-ROW
  19277. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>no</CELLBODY
  19278. ></ENTRY
  19279. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>current system_name</CELLBODY
  19280. ></ENTRY
  19281. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Either of the following:</CELLBODY
  19282. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19283. ></RBW-AUTOGEN
  19284. ></RBW-MARKER
  19285. ><RBW-PARABODY>The item is not defined anywhere. For example, you have created a class without a CDM or properties. </RBW-PARABODY
  19286. ></CELLBULLET
  19287. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19288. ></RBW-AUTOGEN
  19289. ></RBW-MARKER
  19290. ><RBW-PARABODY>The class is defined in another system and referenced in this system. </RBW-PARABODY
  19291. ></CELLBULLET
  19292. ><CELLBODY>In both cases, the operation will be carried out in this system.</CELLBODY
  19293. ></ENTRY
  19294. ></RBW-ROW
  19295. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>no</CELLBODY
  19296. ></ENTRY
  19297. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>other system_name</CELLBODY
  19298. ></ENTRY
  19299. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The item is defined in the current system but is referenced in another system. The operation will be carried out in the other system.</CELLBODY
  19300. ></ENTRY
  19301. ></RBW-ROW
  19302. ></TBODY
  19303. ></TGROUP
  19304. ></RBW-TABLE
  19305. ><B.BODY></B.BODY
  19306. ></LABEL
  19307. ></SUBSECTION
  19308. ></SECTION
  19309. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12188"></RBW-ANCHOR
  19310. >Saving and Deleting Diagrams</S.SECTION.HEAD
  19311. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19312. >Introduction</L.LABEL
  19313. ><B.BODY>This section describes how to save, close, and delete diagrams.</B.BODY
  19314. ></LABEL
  19315. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19316. >How to save a diagram</L.LABEL
  19317. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19318. ></RBW-AUTOGEN
  19319. ></RBW-MARKER
  19320. ><RBW-PARABODY>To save a diagram, select File | Save.<RBW-IDXTERM TERM1="diagram" TERM2="saving"></RBW-IDXTERM
  19321. ><RBW-IDXTERM TERM1="Save (File menu)"></RBW-IDXTERM
  19322. ></RBW-PARABODY
  19323. ></P.PROCEDURE
  19324. ></LABEL
  19325. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19326. >How to close and save a diagram</L.LABEL
  19327. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19328. ></RBW-AUTOGEN
  19329. ></RBW-MARKER
  19330. ><RBW-PARABODY>To close a diagram, select File | Exit.<RBW-IDXTERM TERM1="diagram" TERM2="exiting"></RBW-IDXTERM
  19331. ><RBW-IDXTERM TERM1="Exit (File menu)"></RBW-IDXTERM
  19332. ></RBW-PARABODY
  19333. ></P.PROCEDURE
  19334. ><LRS.LIST.RESULT.SINGLE>ObjectTeam prompts you to save any work done since the last time you saved the diagram.</LRS.LIST.RESULT.SINGLE
  19335. ></LABEL
  19336. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19337. >How to delete a diagram</L.LABEL
  19338. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19339. ></RBW-AUTOGEN
  19340. ></RBW-MARKER
  19341. ><RBW-PARABODY>To delete a diagram:<RBW-IDXTERM TERM1="diagram" TERM2="deleting"></RBW-IDXTERM
  19342. ><RBW-IDXTERM TERM1="deleting" TERM2="diagrams"></RBW-IDXTERM
  19343. ><RBW-IDXTERM TERM1="Delete (File menu)"></RBW-IDXTERM
  19344. ></RBW-PARABODY
  19345. ></P.PROCEDURE
  19346. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19347. ></RBW-AUTOGEN
  19348. ></RBW-MARKER
  19349. ><RBW-PARABODY>In the Information area of the Browser, select the diagram that you want to delete.</RBW-PARABODY
  19350. ></LN.LIST.NUM
  19351. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19352. ></RBW-AUTOGEN
  19353. ></RBW-MARKER
  19354. ><RBW-PARABODY>Select File | Delete.</RBW-PARABODY
  19355. ></LN.LIST.NUM
  19356. ><LR.LIST.RESULT>An information message appears confirming the delete operation.</LR.LIST.RESULT
  19357. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19358. ></RBW-AUTOGEN
  19359. ></RBW-MARKER
  19360. ><RBW-PARABODY>Click OK to delete the diagram. </RBW-PARABODY
  19361. ></LN.LIST.NUM
  19362. ></LABEL
  19363. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19364. >Deleting diagram items</L.LABEL
  19365. ><B.BODY>When you delete a diagram, you delete only the diagram file. Items referenced in the diagram must be deleted separately, as described in <RBW-XREF REFID="21274" TYPE="XREF-TEXTCOPY">Removing and Moving Items</RBW-XREF
  19366. >.</B.BODY
  19367. ></LABEL
  19368. ></SECTION
  19369. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40261"></RBW-ANCHOR
  19370. >Merging Diagrams</S.SECTION.HEAD
  19371. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19372. >Introduction</L.LABEL
  19373. ><B.BODY>Use File | Read to merge one diagram into another diagram of the same type. Typically, you use this feature to copy diagram information into a new diagram.</B.BODY
  19374. ></LABEL
  19375. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19376. >What is merged</L.LABEL
  19377. ><B.BODY>When you merge two diagrams, you merge their graphical components. The semantic items underlying the diagrams are not affected.</B.BODY
  19378. ></LABEL
  19379. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19380. >Diagrams overlie one another</L.LABEL
  19381. ><B.BODY>When you select File | Read, ObjectTeam opens a second diagram in the diagram editor without first closing the current diagram. The second diagram overlies the first. </B.BODY
  19382. ><B.BODY>If the first diagram is new, the merged diagram contains the contents of the second diagram. If the first diagram contains objects, the merged diagram contains the contents of both diagrams. Use the diagram layout features to make the merged diagram legible.</B.BODY
  19383. ></LABEL
  19384. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19385. >How to merge diagrams<RBW-IDXTERM TERM1="diagram" TERM2="merging"></RBW-IDXTERM
  19386. ><RBW-IDXTERM TERM1="merging diagrams"></RBW-IDXTERM
  19387. ><RBW-IDXTERM TERM1="copying" TERM2="diagrams"></RBW-IDXTERM
  19388. ><RBW-IDXTERM TERM1="Read (File menu)"></RBW-IDXTERM
  19389. ></L.LABEL
  19390. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19391. ></RBW-AUTOGEN
  19392. ></RBW-MARKER
  19393. ><RBW-PARABODY>To merge two diagrams:</RBW-PARABODY
  19394. ></P.PROCEDURE
  19395. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19396. ></RBW-AUTOGEN
  19397. ></RBW-MARKER
  19398. ><RBW-PARABODY>Open the diagram into which you want to merge the second diagram.</RBW-PARABODY
  19399. ></LN.LIST.NUM
  19400. ><LR.LIST.RESULT>The diagram editor appears.</LR.LIST.RESULT
  19401. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19402. ></RBW-AUTOGEN
  19403. ></RBW-MARKER
  19404. ><RBW-PARABODY>Select File | Read.</RBW-PARABODY
  19405. ></LN.LIST.NUM
  19406. ><LR.LIST.RESULT>The Read Diagram window appears.</LR.LIST.RESULT
  19407. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19408. ></RBW-AUTOGEN
  19409. ></RBW-MARKER
  19410. ><RBW-PARABODY>Select the diagram that you want to merge into the open diagram.</RBW-PARABODY
  19411. ></LN.LIST.NUM
  19412. ><LR.LIST.RESULT>The selected diagram overlies the open diagram.</LR.LIST.RESULT
  19413. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  19414. ></RBW-AUTOGEN
  19415. ></RBW-MARKER
  19416. ><RBW-PARABODY>If necessary, use the diagram layout features, as described in <RBW-XREF REFID="17519" TYPE="XREF-TEXTCOPY">Modifying Diagram Layout</RBW-XREF
  19417. >, to make the merged diagram legible.</RBW-PARABODY
  19418. ></LN.LIST.NUM
  19419. ></LABEL
  19420. ></SECTION
  19421. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37746"></RBW-ANCHOR
  19422. >Adding Comments to Diagrams</S.SECTION.HEAD
  19423. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19424. >Introduction</L.LABEL
  19425. ><B.BODY>The Free Text property of the file version associates a comment with the diagram. </B.BODY
  19426. ></LABEL
  19427. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19428. >Two ways to specify</L.LABEL
  19429. ><B.BODY>You can specify the Free Text property for a file version from the Browser or a diagram editor.</B.BODY
  19430. ></LABEL
  19431. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19432. >How to specify from the Browser</L.LABEL
  19433. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19434. ></RBW-AUTOGEN
  19435. ></RBW-MARKER
  19436. ><RBW-PARABODY>To specify the Free Text property from the Browser:</RBW-PARABODY
  19437. ></P.PROCEDURE
  19438. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19439. ></RBW-AUTOGEN
  19440. ></RBW-MARKER
  19441. ><RBW-PARABODY>Move to the system level.</RBW-PARABODY
  19442. ></LN.LIST.NUM
  19443. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19444. ></RBW-AUTOGEN
  19445. ></RBW-MARKER
  19446. ><RBW-PARABODY>From the information area, select the file version whose property you want to set.</RBW-PARABODY
  19447. ></LN.LIST.NUM
  19448. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19449. ></RBW-AUTOGEN
  19450. ></RBW-MARKER
  19451. ><RBW-PARABODY>Select File | Properties | Edit.</RBW-PARABODY
  19452. ></LN.LIST.NUM
  19453. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  19454. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  19455. ></RBW-AUTOGEN
  19456. ></RBW-MARKER
  19457. ><RBW-PARABODY>Select the diagram from the list box on the left.</RBW-PARABODY
  19458. ></LN.LIST.NUM
  19459. ><LR.LIST.RESULT>The Free Text property appears on the right.</LR.LIST.RESULT
  19460. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  19461. ></RBW-AUTOGEN
  19462. ></RBW-MARKER
  19463. ><RBW-PARABODY>Type the text, and then click OK.</RBW-PARABODY
  19464. ></LN.LIST.NUM
  19465. ></LABEL
  19466. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19467. >How to specify the Free Text property </L.LABEL
  19468. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19469. ></RBW-AUTOGEN
  19470. ></RBW-MARKER
  19471. ><RBW-PARABODY>To edit the Free Text property from the diagram editor:<RBW-IDXTERM TERM1="Free Text property" TERM2="diagrams"></RBW-IDXTERM
  19472. ><RBW-IDXTERM TERM1="diagram" TERM2="Free Text property"></RBW-IDXTERM
  19473. ><RBW-IDXTERM TERM1="Properties (File menu)" TERM2="Edit"></RBW-IDXTERM
  19474. ></RBW-PARABODY
  19475. ></P.PROCEDURE
  19476. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19477. ></RBW-AUTOGEN
  19478. ></RBW-MARKER
  19479. ><RBW-PARABODY>Open the file version of the diagram whose property you want to set.</RBW-PARABODY
  19480. ></LN.LIST.NUM
  19481. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19482. ></RBW-AUTOGEN
  19483. ></RBW-MARKER
  19484. ><RBW-PARABODY>Select File | Properties | Edit.</RBW-PARABODY
  19485. ></LN.LIST.NUM
  19486. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  19487. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19488. ></RBW-AUTOGEN
  19489. ></RBW-MARKER
  19490. ><RBW-PARABODY>Select the file name from the list box on the left.</RBW-PARABODY
  19491. ></LN.LIST.NUM
  19492. ><LR.LIST.RESULT>The Free Text property appears on the right.</LR.LIST.RESULT
  19493. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  19494. ></RBW-AUTOGEN
  19495. ></RBW-MARKER
  19496. ><RBW-PARABODY>Type the text, and then click OK.</RBW-PARABODY
  19497. ></LN.LIST.NUM
  19498. ></LABEL
  19499. ></SECTION
  19500. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21332"></RBW-ANCHOR
  19501. >Editing Diagrams</S.SECTION.HEAD
  19502. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19503. >Introduction</L.LABEL
  19504. ><B.BODY>This section describes editing operations that are common to all diagram editors. </B.BODY
  19505. ></LABEL
  19506. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19507. >Terminology</L.LABEL
  19508. ><B.BODY>This section uses the following terms to refer to the different kinds of symbols that you can draw in a diagram:</B.BODY
  19509. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19510. ></RBW-AUTOGEN
  19511. ></RBW-MARKER
  19512. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Nodes</CX5FX5FBULLET.EMPHASIS
  19513. > are symbols that can stand by themselves, such as classes, subjects, states, and events.<RBW-IDXTERM TERM1="node" TERM2="definition of"></RBW-IDXTERM
  19514. ></RBW-PARABODY
  19515. ></LB.LIST.BULLET
  19516. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19517. ></RBW-AUTOGEN
  19518. ></RBW-MARKER
  19519. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Connectors</CX5FX5FBULLET.EMPHASIS
  19520. > are symbols that must be attached to a node, such as associations and messages.<RBW-IDXTERM TERM1="connector" TERM2="definition of"></RBW-IDXTERM
  19521. ></RBW-PARABODY
  19522. ></LB.LIST.BULLET
  19523. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19524. ></RBW-AUTOGEN
  19525. ></RBW-MARKER
  19526. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Vertices</CX5FX5FBULLET.EMPHASIS
  19527. > are angles in connector lines.<RBW-IDXTERM TERM1="vertex" TERM2="definition of"></RBW-IDXTERM
  19528. ></RBW-PARABODY
  19529. ></LB.LIST.BULLET
  19530. ></LABEL
  19531. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19532. >Modes</L.LABEL
  19533. ><B.BODY><RBW-IDXTERM TERM1="select symbol, diagram control panel"></RBW-IDXTERM
  19534. >Many diagram editing operations begin by selecting a symbol from the diagram control panel. When you click a symbol button, you enter editing <CX5FX5FTERM>mode</CX5FX5FTERM
  19535. >. To exit from the mode, click the Select button.</B.BODY
  19536. ></LABEL
  19537. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19538. >In this section</L.LABEL
  19539. ><B.BODY>This section contains the following topics:</B.BODY
  19540. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  19541. ></ENTRY
  19542. ></RBW-ROW
  19543. ></THEAD
  19544. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16653" TYPE="XREF-TEXTCOPY">Working With the Diagram Window&rbwtab;3–15</RBW-XREF
  19545. ></SB.SECTION.BLOCK.TABLE
  19546. ></ENTRY
  19547. ></RBW-ROW
  19548. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20264" TYPE="XREF-TEXTCOPY">Creating and Deleting Components&rbwtab;3–16</RBW-XREF
  19549. ></SB.SECTION.BLOCK.TABLE
  19550. ></ENTRY
  19551. ></RBW-ROW
  19552. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32131" TYPE="XREF-TEXTCOPY">Selecting Components&rbwtab;3–18</RBW-XREF
  19553. ></SB.SECTION.BLOCK.TABLE
  19554. ></ENTRY
  19555. ></RBW-ROW
  19556. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33768" TYPE="XREF-TEXTCOPY">Copying and Replacing Components&rbwtab;3–19</RBW-XREF
  19557. ></SB.SECTION.BLOCK.TABLE
  19558. ></ENTRY
  19559. ></RBW-ROW
  19560. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36919" TYPE="XREF-TEXTCOPY">Editing Labels&rbwtab;3–21</RBW-XREF
  19561. ></SB.SECTION.BLOCK.TABLE
  19562. ></ENTRY
  19563. ></RBW-ROW
  19564. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32373" TYPE="XREF-TEXTCOPY">Specifying Label Syntax&rbwtab;3–23</RBW-XREF
  19565. ></SB.SECTION.BLOCK.TABLE
  19566. ></ENTRY
  19567. ></RBW-ROW
  19568. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17519" TYPE="XREF-TEXTCOPY">Modifying Diagram Layout&rbwtab;3–25</RBW-XREF
  19569. ></SB.SECTION.BLOCK.TABLE
  19570. ></ENTRY
  19571. ></RBW-ROW
  19572. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35237" TYPE="XREF-TEXTCOPY">Modifying Diagram Appearance&rbwtab;3–27</RBW-XREF
  19573. ></SB.SECTION.BLOCK.TABLE
  19574. ></ENTRY
  19575. ></RBW-ROW
  19576. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38422" TYPE="XREF-TEXTCOPY">Undoing Diagram Edits&rbwtab;3–29</RBW-XREF
  19577. ></SB.SECTION.BLOCK.TABLE
  19578. ></ENTRY
  19579. ></RBW-ROW
  19580. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27377" TYPE="XREF-TEXTCOPY">Adding Notes to a Diagram&rbwtab;3–30</RBW-XREF
  19581. ></SB.SECTION.BLOCK.TABLE
  19582. ></ENTRY
  19583. ></RBW-ROW
  19584. ></TBODY
  19585. ></TGROUP
  19586. ></RBW-TABLE
  19587. ></LABEL
  19588. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="16653"></RBW-ANCHOR
  19589. >Working With the Diagram Window</SS.SUBSEC.HEAD
  19590. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19591. >Introduction</L.LABEL
  19592. ><B.BODY>This section describes operations that can help you work more effectively in any diagram.</B.BODY
  19593. ></LABEL
  19594. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19595. >How to enlarge a diagram <RBW-IDXTERM TERM1="diagram" TERM2="zoom in"></RBW-IDXTERM
  19596. ><RBW-IDXTERM TERM1="Zoom In (Options menu)"></RBW-IDXTERM
  19597. ></L.LABEL
  19598. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19599. ></RBW-AUTOGEN
  19600. ></RBW-MARKER
  19601. ><RBW-PARABODY>To enlarge a diagram in the window, select Options | Zoom In or Click the magnify icon on the toolbar.</RBW-PARABODY
  19602. ></P.PROCEDURE
  19603. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00096.unk" origfile="pics/b_zumin.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  19604. ></FA2.FIGURE.ANCHOR.2
  19605. ></LABEL
  19606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19607. >How to reduce a diagram <RBW-IDXTERM TERM1="diagram" TERM2="zoom out"></RBW-IDXTERM
  19608. ><RBW-IDXTERM TERM1="Zoom Out (Options menu)"></RBW-IDXTERM
  19609. ></L.LABEL
  19610. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19611. ></RBW-AUTOGEN
  19612. ></RBW-MARKER
  19613. ><RBW-PARABODY>To reduce a diagram in the window, select Options | Zoom Out or Click the reduce icon on the toolbar.</RBW-PARABODY
  19614. ></P.PROCEDURE
  19615. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00097.unk" origfile="pics/b_zumout.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  19616. ></FA2.FIGURE.ANCHOR.2
  19617. ></LABEL
  19618. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19619. >How to center a diagram<RBW-IDXTERM TERM1="diagram" TERM2="center in window"></RBW-IDXTERM
  19620. ><RBW-IDXTERM TERM1="Center (Edit menu)"></RBW-IDXTERM
  19621. ></L.LABEL
  19622. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19623. ></RBW-AUTOGEN
  19624. ></RBW-MARKER
  19625. ><RBW-PARABODY>To center a diagram within the window, select Edit | Center.</RBW-PARABODY
  19626. ></P.PROCEDURE
  19627. ></LABEL
  19628. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19629. >How to refresh the diagram<RBW-IDXTERM TERM1="diagram" TERM2="redrawing"></RBW-IDXTERM
  19630. ><RBW-IDXTERM TERM1="Redraw (Options menu)"></RBW-IDXTERM
  19631. ></L.LABEL
  19632. ><B.BODY>Occasionally, you may see unwanted elements in the editing area, such as stray pixels left by other drawing tools. To remove them, refresh the diagram.</B.BODY
  19633. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19634. ></RBW-AUTOGEN
  19635. ></RBW-MARKER
  19636. ><RBW-PARABODY>To refresh the diagram, select Options | Redraw.</RBW-PARABODY
  19637. ></P.PROCEDURE
  19638. ></LABEL
  19639. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19640. >Pointer focus policy<RBW-IDXTERM TERM1="Pointer Focus (Options menu)"></RBW-IDXTERM
  19641. ><RBW-IDXTERM TERM1="diagram" TERM2="editing focus"></RBW-IDXTERM
  19642. ></L.LABEL
  19643. ><B.BODY>A text field must have the <CX5FX5FEMPHASIS>editing focus</CX5FX5FEMPHASIS
  19644. > before you can edit the text in the field.</B.BODY
  19645. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19646. ></RBW-AUTOGEN
  19647. ></RBW-MARKER
  19648. ><RBW-PARABODY>In Windows, you generally move the editing focus to a text field by clicking the field. ObjectTeam works this way when Options | Pointer Focus is not selected. This is the default behavior.</RBW-PARABODY
  19649. ></LB.LIST.BULLET
  19650. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19651. ></RBW-AUTOGEN
  19652. ></RBW-MARKER
  19653. ><RBW-PARABODY>On UNIX systems, you generally move the editing focus to a text field by moving the pointer to the field; clicking the field is not necessary, but the pointer must remain on the field. ObjectTeam works this way when the Options | Pointer Focus menu item is selected.</RBW-PARABODY
  19654. ></LB.LIST.BULLET
  19655. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  19656. ></RBW-AUTOGEN
  19657. >In a diagram, the label of every component is a text field. To edit the diagrams easily, it is important to specify the behavior that you are most comfortable with.</N.NOTE
  19658. ></LABEL
  19659. ></SUBSECTION
  19660. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20264"></RBW-ANCHOR
  19661. >Creating and Deleting Components</SS.SUBSEC.HEAD
  19662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19663. >Introduction</L.LABEL
  19664. ><B.BODY>This section describes how to create and delete nodes, connectors, and vertices.</B.BODY
  19665. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19666. >Naming conventions</SL.SUBLABEL
  19667. ><B.BODY>You can specify the rules for component names, as described in <RBW-XREF REFID="32373" TYPE="XREF-TEXTCOPY">Specifying Label Syntax</RBW-XREF
  19668. >.</B.BODY
  19669. ></LABEL
  19670. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19671. ><RBW-ANCHOR ID="20977"></RBW-ANCHOR
  19672. >How to create a node<RBW-IDXTERM TERM1="node" TERM2="creating"></RBW-IDXTERM
  19673. ><RBW-IDXTERM TERM1="creating" TERM2="diagram components"></RBW-IDXTERM
  19674. ><RBW-IDXTERM TERM1="diagram component" TERM2="creating"></RBW-IDXTERM
  19675. ></L.LABEL
  19676. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19677. ></RBW-AUTOGEN
  19678. ></RBW-MARKER
  19679. ><RBW-PARABODY>To create a node, such as a class, use case, or note:</RBW-PARABODY
  19680. ></P.PROCEDURE
  19681. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19682. ></RBW-AUTOGEN
  19683. ></RBW-MARKER
  19684. ><RBW-PARABODY>Click the appropriate symbol button in the control panel.</RBW-PARABODY
  19685. ></LN.LIST.NUM
  19686. ><LR.LIST.RESULT>ObjectTeam highlights the symbol and you enter Insert mode.</LR.LIST.RESULT
  19687. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19688. ></RBW-AUTOGEN
  19689. ></RBW-MARKER
  19690. ><RBW-PARABODY>Click in the diagram where you want to place the node.</RBW-PARABODY
  19691. ></LN.LIST.NUM
  19692. ><LR.LIST.RESULT>ObjectTeam inserts the node at that location.</LR.LIST.RESULT
  19693. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  19694. ></RBW-AUTOGEN
  19695. >If you create a node by mistake, right&truehy;click to remove it. (This action is the same as selecting Edit | Undo.)</T2.TIP.2
  19696. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19697. ></RBW-AUTOGEN
  19698. ></RBW-MARKER
  19699. ><RBW-PARABODY>To enter additional nodes, repeat step 2.</RBW-PARABODY
  19700. ></LN.LIST.NUM
  19701. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  19702. ></RBW-AUTOGEN
  19703. ></RBW-MARKER
  19704. ><RBW-PARABODY>To exit Insert mode, click the Select button.</RBW-PARABODY
  19705. ></LN.LIST.NUM
  19706. ></LABEL
  19707. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19708. ><RBW-ANCHOR ID="18141"></RBW-ANCHOR
  19709. >How to create a connector<RBW-IDXTERM TERM1="connector" TERM2="creating"></RBW-IDXTERM
  19710. ></L.LABEL
  19711. ><B.BODY>A connector connects at least two nodes. Therefore, a diagram must include at least two nodes before you can create a connector.</B.BODY
  19712. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19713. ></RBW-AUTOGEN
  19714. ></RBW-MARKER
  19715. ><RBW-PARABODY>To create a connector, such as an association, message, flow, or event:</RBW-PARABODY
  19716. ></P.PROCEDURE
  19717. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19718. ></RBW-AUTOGEN
  19719. ></RBW-MARKER
  19720. ><RBW-PARABODY>Click the appropriate symbol button in the control panel.</RBW-PARABODY
  19721. ></LN.LIST.NUM
  19722. ><LR.LIST.RESULT>ObjectTeam highlights the symbol and you enter Insert mode.</LR.LIST.RESULT
  19723. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19724. ></RBW-AUTOGEN
  19725. ></RBW-MARKER
  19726. ><RBW-PARABODY>Click the first node, and then the second node.</RBW-PARABODY
  19727. ></LN.LIST.NUM
  19728. ><LR.LIST.RESULT>ObjectTeam draws the connector between the two nodes.</LR.LIST.RESULT
  19729. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  19730. ></RBW-AUTOGEN
  19731. >If you click the first node, and then click in the background, ObjectTeam creates a vertex. You can create as many vertices as you want before clicking the second node to complete the connector. (If you create a vertex by mistake, right&truehy;click to remove it. This action is the same as selecting Edit | Undo.)</N2.NOTE.2
  19732. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19733. ></RBW-AUTOGEN
  19734. ></RBW-MARKER
  19735. ><RBW-PARABODY>To enter additional connectors, return to step 2.</RBW-PARABODY
  19736. ></LN.LIST.NUM
  19737. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  19738. ></RBW-AUTOGEN
  19739. ></RBW-MARKER
  19740. ><RBW-PARABODY>To exit Insert mode, click the Select button.</RBW-PARABODY
  19741. ></LN.LIST.NUM
  19742. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19743. >Complex connectors</SL.SUBLABEL
  19744. ><B.BODY>Generalizations and n&truehy;ary associations connect more than two nodes. The description of these connectors in Chapter 4, Exploring Each Diagram, explains how to create them.</B.BODY
  19745. ></LABEL
  19746. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19747. >How to create a vertex<RBW-IDXTERM TERM1="vertex" TERM2="creating"></RBW-IDXTERM
  19748. ></L.LABEL
  19749. ><B.BODY>Adding vertices to connector lines allows you to change the routing of the line and improve the appearance of the diagram.</B.BODY
  19750. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19751. ></RBW-AUTOGEN
  19752. ></RBW-MARKER
  19753. ><RBW-PARABODY>To create a vertex:</RBW-PARABODY
  19754. ></P.PROCEDURE
  19755. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19756. ></RBW-AUTOGEN
  19757. ></RBW-MARKER
  19758. ><RBW-PARABODY>Select the Vertex symbol from the control panel.</RBW-PARABODY
  19759. ></LN.LIST.NUM
  19760. ><LR.LIST.RESULT>ObjectTeam highlights the symbol and you enter Insert mode.</LR.LIST.RESULT
  19761. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19762. ></RBW-AUTOGEN
  19763. ></RBW-MARKER
  19764. ><RBW-PARABODY>Move the cursor over any point on a connector line.</RBW-PARABODY
  19765. ></LN.LIST.NUM
  19766. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19767. ></RBW-AUTOGEN
  19768. ></RBW-MARKER
  19769. ><RBW-PARABODY>Drag the point to a new location.</RBW-PARABODY
  19770. ></LN.LIST.NUM
  19771. ><LR.LIST.RESULT>ObjectTeam creates the vertex.</LR.LIST.RESULT
  19772. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  19773. ></RBW-AUTOGEN
  19774. ></RBW-MARKER
  19775. ><RBW-PARABODY>To exit Insert mode, click the Select button.</RBW-PARABODY
  19776. ></LN.LIST.NUM
  19777. ></LABEL
  19778. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19779. >How to delete a node, connector, or vertex<RBW-IDXTERM TERM1="node" TERM2="deleting"></RBW-IDXTERM
  19780. ><RBW-IDXTERM TERM1="connector" TERM2="deleting"></RBW-IDXTERM
  19781. ><RBW-IDXTERM TERM1="vertex" TERM2="deleting"></RBW-IDXTERM
  19782. ><RBW-IDXTERM TERM1="diagram component" TERM2="deleting"></RBW-IDXTERM
  19783. ><RBW-IDXTERM TERM1="deleting" TERM2="diagram components"></RBW-IDXTERM
  19784. ></L.LABEL
  19785. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19786. ></RBW-AUTOGEN
  19787. ></RBW-MARKER
  19788. ><RBW-PARABODY>To delete a node, connector, or vertex:</RBW-PARABODY
  19789. ></P.PROCEDURE
  19790. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19791. ></RBW-AUTOGEN
  19792. ></RBW-MARKER
  19793. ><RBW-PARABODY>Select the object.</RBW-PARABODY
  19794. ></LN.LIST.NUM
  19795. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19796. ></RBW-AUTOGEN
  19797. ></RBW-MARKER
  19798. ><RBW-PARABODY>Select Edit | Delete.</RBW-PARABODY
  19799. ></LN.LIST.NUM
  19800. ><LR.LIST.RESULT>ObjectTeam removes the object from the diagram. It is not removed from the database until you save the diagram. </LR.LIST.RESULT
  19801. ></LABEL
  19802. ></SUBSECTION
  19803. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32131"></RBW-ANCHOR
  19804. >Selecting Components</SS.SUBSEC.HEAD
  19805. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19806. >Introduction</L.LABEL
  19807. ><B.BODY>To carry out certain actions on nodes, connectors, or vertices, you must select them first.<RBW-IDXTERM TERM1="diagram component" TERM2="selecting"></RBW-IDXTERM
  19808. ><RBW-IDXTERM TERM1="selecting" TERM2="diagram object"></RBW-IDXTERM
  19809. ></B.BODY
  19810. ></LABEL
  19811. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19812. >How to select an object</L.LABEL
  19813. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19814. ></RBW-AUTOGEN
  19815. ></RBW-MARKER
  19816. ><RBW-PARABODY>To select a single object:</RBW-PARABODY
  19817. ></P.PROCEDURE
  19818. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19819. ></RBW-AUTOGEN
  19820. ></RBW-MARKER
  19821. ><RBW-PARABODY>If you are in Insert mode, click the Select Button.</RBW-PARABODY
  19822. ></LN.LIST.NUM
  19823. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19824. ></RBW-AUTOGEN
  19825. ></RBW-MARKER
  19826. ><RBW-PARABODY>Click the object you want to select.</RBW-PARABODY
  19827. ></LN.LIST.NUM
  19828. ></LABEL
  19829. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19830. >How to select additional objects </L.LABEL
  19831. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19832. ></RBW-AUTOGEN
  19833. ></RBW-MARKER
  19834. ><RBW-PARABODY>To select additional objects:</RBW-PARABODY
  19835. ></P.PROCEDURE
  19836. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19837. ></RBW-AUTOGEN
  19838. ></RBW-MARKER
  19839. ><RBW-PARABODY>Press and hold the Control key.</RBW-PARABODY
  19840. ></LN.LIST.NUM
  19841. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19842. ></RBW-AUTOGEN
  19843. ></RBW-MARKER
  19844. ><RBW-PARABODY>Click the objects that you want to select.</RBW-PARABODY
  19845. ></LN.LIST.NUM
  19846. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19847. >Alternative</SL.SUBLABEL
  19848. ><B.BODY>Press and hold the CTRL key, and then drag the pointer over the objects that you want to select.</B.BODY
  19849. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  19850. ></RBW-AUTOGEN
  19851. >The alternative method of selecting multiple objects toggles the selection status of objects; selected symbols are deselected, and deselected symbols are selected.</N.NOTE
  19852. ></LABEL
  19853. ></SUBSECTION
  19854. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33768"></RBW-ANCHOR
  19855. >Copying and Replacing Components</SS.SUBSEC.HEAD
  19856. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19857. >Introduction</L.LABEL
  19858. ><B.BODY>This section describes how to copy nodes and how to replace one component with another.<RBW-IDXTERM TERM1="diagram component" TERM2="copying"></RBW-IDXTERM
  19859. ><RBW-IDXTERM TERM1="copying" TERM2="diagram components"></RBW-IDXTERM
  19860. ><RBW-IDXTERM TERM1="replacing diagram components"></RBW-IDXTERM
  19861. ><RBW-IDXTERM TERM1="diagram component" TERM2="replacing"></RBW-IDXTERM
  19862. ></B.BODY
  19863. ></LABEL
  19864. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19865. >Purpose</L.LABEL
  19866. ><B.BODY>Generally, you copy and replace components for the following reasons:</B.BODY
  19867. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19868. ></RBW-AUTOGEN
  19869. ></RBW-MARKER
  19870. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>To create new diagram components and items.</CX5FX5FBULLET.EMPHASIS
  19871. > In an ObjectTeam diagram, copying a node creates a second copy of the diagram component. When you edit the label of the second diagram component, as described in <RBW-XREF REFID="36919" TYPE="XREF-TEXTCOPY">Editing Labels</RBW-XREF
  19872. >, you create a new item in the repository. This is a convenient way to create new items that are similar to existing items.</RBW-PARABODY
  19873. ></LB.LIST.BULLET
  19874. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19875. ></RBW-AUTOGEN
  19876. ></RBW-MARKER
  19877. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>To copy diagram components to another tool.</CX5FX5FBULLET.EMPHASIS
  19878. > If you are using Microsoft Windows, you can copy diagram components to OLE&truehy;enabled tools, such as Microsoft Word. This is a convenient way to include diagrams in documents.</RBW-PARABODY
  19879. ></LB.LIST.BULLET
  19880. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  19881. ></RBW-AUTOGEN
  19882. ></RBW-MARKER
  19883. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>To replace one diagram component with another.</CX5FX5FBULLET.EMPHASIS
  19884. > Replacing components is a convenient alternative to deleting and reentering them. It is particularly useful when you need to change the multiplicity of an association or the type of a generalization.</RBW-PARABODY
  19885. ></LB.LIST.BULLET
  19886. ></LABEL
  19887. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19888. >How to copy nodes within a diagram</L.LABEL
  19889. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19890. ></RBW-AUTOGEN
  19891. ></RBW-MARKER
  19892. ><RBW-PARABODY>To copy one or more nodes within a diagram:</RBW-PARABODY
  19893. ></P.PROCEDURE
  19894. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19895. ></RBW-AUTOGEN
  19896. ></RBW-MARKER
  19897. ><RBW-PARABODY>Select the nodes.</RBW-PARABODY
  19898. ></LN.LIST.NUM
  19899. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19900. ></RBW-AUTOGEN
  19901. ></RBW-MARKER
  19902. ><RBW-PARABODY>Select Edit | Duplicate.<RBW-IDXTERM TERM1="Duplicate (Edit menu)"></RBW-IDXTERM
  19903. ></RBW-PARABODY
  19904. ></LN.LIST.NUM
  19905. ><LR.LIST.RESULT>When you move the pointer back to the editing area, the nodes appear under the pointer.</LR.LIST.RESULT
  19906. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19907. ></RBW-AUTOGEN
  19908. ></RBW-MARKER
  19909. ><RBW-PARABODY>Click in the diagram where you want to place the nodes.</RBW-PARABODY
  19910. ></LN.LIST.NUM
  19911. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  19912. ></RBW-AUTOGEN
  19913. >You cannot move nodes between diagrams, but you can merge diagrams, as described in <RBW-XREF REFID="40261" TYPE="XREF-TEXTCOPY">Merging Diagrams</RBW-XREF
  19914. >.</N.NOTE
  19915. ></LABEL
  19916. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19917. >How to copy diagram components to another tool</L.LABEL
  19918. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19919. >Windows</SL.SUBLABEL
  19920. ><B.BODY>This feature is only available on Windows.</B.BODY
  19921. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19922. ></RBW-AUTOGEN
  19923. ></RBW-MARKER
  19924. ><RBW-PARABODY>To copy one or more diagram components to another tool:</RBW-PARABODY
  19925. ></P.PROCEDURE
  19926. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19927. ></RBW-AUTOGEN
  19928. ></RBW-MARKER
  19929. ><RBW-PARABODY>Select the diagram components that you want to copy.</RBW-PARABODY
  19930. ></LN.LIST.NUM
  19931. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19932. ></RBW-AUTOGEN
  19933. ></RBW-MARKER
  19934. ><RBW-PARABODY>Select Edit | Copy.<RBW-IDXTERM TERM1="Copy (Edit menu)" TERM2="diagram components"></RBW-IDXTERM
  19935. ></RBW-PARABODY
  19936. ></LN.LIST.NUM
  19937. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19938. ></RBW-AUTOGEN
  19939. ></RBW-MARKER
  19940. ><RBW-PARABODY>In the other OLE&truehy;enabled tool, select Edit | Paste.</RBW-PARABODY
  19941. ></LN.LIST.NUM
  19942. ></LABEL
  19943. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19944. >How to replace a component</L.LABEL
  19945. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19946. ></RBW-AUTOGEN
  19947. ></RBW-MARKER
  19948. ><RBW-PARABODY>To replace a component:</RBW-PARABODY
  19949. ></P.PROCEDURE
  19950. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19951. ></RBW-AUTOGEN
  19952. ></RBW-MARKER
  19953. ><RBW-PARABODY>Select the component that you want to replace. For example, select a mandatory&truehy;mandatory association.</RBW-PARABODY
  19954. ></LN.LIST.NUM
  19955. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  19956. ></RBW-AUTOGEN
  19957. >Only one object can be selected for replacement at a time.</N2.NOTE.2
  19958. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  19959. ></RBW-AUTOGEN
  19960. ></RBW-MARKER
  19961. ><RBW-PARABODY>From the control panel, select the symbol that you want to use in place of that component. For example, in the control panel, select the Association symbol and the mandatory and optional multiplicity selectors.</RBW-PARABODY
  19962. ></LN.LIST.NUM
  19963. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  19964. ></RBW-AUTOGEN
  19965. ></RBW-MARKER
  19966. ><RBW-PARABODY>Select Edit | Replace.<RBW-IDXTERM TERM1="Replace (Edit menu)"></RBW-IDXTERM
  19967. ></RBW-PARABODY
  19968. ></LN.LIST.NUM
  19969. ><LR.LIST.RESULT>ObjectTeam replaces the selected component with the new symbol. If the attempted replacement conflicts with the diagram syntax, ObjectTeam displays an error message and prevents the replacement.</LR.LIST.RESULT
  19970. ></LABEL
  19971. ></SUBSECTION
  19972. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36919"></RBW-ANCHOR
  19973. >Editing Labels</SS.SUBSEC.HEAD
  19974. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19975. >Introduction</L.LABEL
  19976. ><B.BODY><RBW-IDXTERM TERM1="editing" TERM2="diagram text"></RBW-IDXTERM
  19977. ><RBW-IDXTERM TERM1="diagram component" TERM2="editing text"></RBW-IDXTERM
  19978. ><CX5FX5FTERM>Labels</CX5FX5FTERM
  19979. > are the names that you give to diagram components. Some labels appear inside the component they name, others appear near the component they name.</B.BODY
  19980. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19981. >Editing a label creates a new item</SL.SUBLABEL
  19982. ><B.BODY>Diagram components are usually associated with items in the repository. Editing the label of a diagram component creates a new item. To change the name of an item and its associated diagram component, use Edit | Change Name, as described in <RBW-XREF REFID="42724" TYPE="XREF-TEXTCOPY">Viewing and Renaming Items</RBW-XREF
  19983. >.</B.BODY
  19984. ></LABEL
  19985. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  19986. >How to edit a label<RBW-IDXTERM TERM1="label" TERM2="editing"></RBW-IDXTERM
  19987. ></L.LABEL
  19988. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  19989. ></RBW-AUTOGEN
  19990. ></RBW-MARKER
  19991. ><RBW-PARABODY>To edit a label:</RBW-PARABODY
  19992. ></P.PROCEDURE
  19993. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  19994. ></RBW-AUTOGEN
  19995. ></RBW-MARKER
  19996. ><RBW-PARABODY>Click the text of the label.</RBW-PARABODY
  19997. ></LN.LIST.NUM
  19998. ><LR.LIST.RESULT>The Pointer changes to an I bar, indicating that you can begin editing. If you are entering text in a node, such as a class or note, and the label grows wider than the node, then the node expands to accommodate the text.</LR.LIST.RESULT
  19999. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20000. ></RBW-AUTOGEN
  20001. ></RBW-MARKER
  20002. ><RBW-PARABODY>Edit the text using the following keys:</RBW-PARABODY
  20003. ></LN.LIST.NUM
  20004. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20005. ></RBW-MARKER
  20006. ><RBW-PARABODY>Arrow keys to reposition the cursor within the text</RBW-PARABODY
  20007. ></LB2.LIST.BULLET.2
  20008. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20009. ></RBW-MARKER
  20010. ><RBW-PARABODY>Delete to delete characters after the cursor</RBW-PARABODY
  20011. ></LB2.LIST.BULLET.2
  20012. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20013. ></RBW-MARKER
  20014. ><RBW-PARABODY>Backspace to delete characters before the cursor</RBW-PARABODY
  20015. ></LB2.LIST.BULLET.2
  20016. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20017. ></RBW-MARKER
  20018. ><RBW-PARABODY>Carriage return to create a multiline label</RBW-PARABODY
  20019. ></LB2.LIST.BULLET.2
  20020. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20021. ></RBW-AUTOGEN
  20022. ></RBW-MARKER
  20023. ><RBW-PARABODY>Click in the background of the diagram to finish editing.</RBW-PARABODY
  20024. ></LN.LIST.NUM
  20025. ></LABEL
  20026. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20027. >To copy and paste text<RBW-IDXTERM TERM1="Copy (Edit menu)" TERM2="text"></RBW-IDXTERM
  20028. ><RBW-IDXTERM TERM1="Cut (Edit menu)" TERM2="text"></RBW-IDXTERM
  20029. ><RBW-IDXTERM TERM1="Paste (Edit menu)" TERM2="text"></RBW-IDXTERM
  20030. ></L.LABEL
  20031. ><B.BODY>You can copy and paste text between labels and the text fields of any open window.</B.BODY
  20032. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20033. ></RBW-AUTOGEN
  20034. ></RBW-MARKER
  20035. ><RBW-PARABODY>To copy and paste text:</RBW-PARABODY
  20036. ></P.PROCEDURE
  20037. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20038. ></RBW-AUTOGEN
  20039. ></RBW-MARKER
  20040. ><RBW-PARABODY>Select the text that you want to copy.</RBW-PARABODY
  20041. ></LN.LIST.NUM
  20042. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20043. ></RBW-AUTOGEN
  20044. ></RBW-MARKER
  20045. ><RBW-PARABODY>Select Edit | Copy (or Edit | Cut to delete the text).</RBW-PARABODY
  20046. ></LN.LIST.NUM
  20047. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20048. ></RBW-AUTOGEN
  20049. ></RBW-MARKER
  20050. ><RBW-PARABODY>Click where you want to place the text.</RBW-PARABODY
  20051. ></LN.LIST.NUM
  20052. ><LR.LIST.RESULT>The pointer changes to an I bar, indicating that you can begin editing.</LR.LIST.RESULT
  20053. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  20054. ></RBW-AUTOGEN
  20055. ></RBW-MARKER
  20056. ><RBW-PARABODY>Select Edit | Paste.</RBW-PARABODY
  20057. ></LN.LIST.NUM
  20058. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20059. >UNIX</SL.SUBLABEL
  20060. ><B.BODY>Alternatively, you can select the text that you want to copy, and then click the middle mouse button where you want to place the text.</B.BODY
  20061. ></LABEL
  20062. ></SUBSECTION
  20063. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32373"></RBW-ANCHOR
  20064. >Specifying Label Syntax</SS.SUBSEC.HEAD
  20065. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20066. >Introduction</L.LABEL
  20067. ><B.BODY><CX5FX5FTERM><RBW-IDXTERM TERM1="label" TERM2="specifying syntax for"></RBW-IDXTERM
  20068. ><RBW-IDXTERM TERM1="diagram component" TERM2="specifying label syntax for"></RBW-IDXTERM
  20069. >Labels</CX5FX5FTERM
  20070. > are the names that you give to diagram components. You can specify a formal syntax for labels. Text is checked for this syntax as soon as it is entered and is refused if it does not meet the rules. If no syntax has been specified, any text is accepted.</B.BODY
  20071. ></LABEL
  20072. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20073. >Types of syntax</L.LABEL
  20074. ><B.BODY>Each diagram has different symbols, so the syntax you can specify for each diagram is different. Label syntax is not available in the Sequence Diagram editor. </B.BODY
  20075. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="72p"><COLSPEC COLNAME="2" COLWIDTH="297p"><COLSPEC COLNAME="3" COLWIDTH="81p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram</CELLHEADING
  20076. ></ENTRY
  20077. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol</CELLHEADING
  20078. ></ENTRY
  20079. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Syntax</CELLHEADING
  20080. ></ENTRY
  20081. ></RBW-ROW
  20082. ></THEAD
  20083. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CD</CELLBODY
  20084. ></ENTRY
  20085. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Aggregation, association, class, container class, n&truehy;ary association, qualified aggregation, qualified association</CELLBODY
  20086. ></ENTRY
  20087. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  20088. ></ENTRY
  20089. ></RBW-ROW
  20090. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20091. ></ENTRY
  20092. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier</CELLBODY
  20093. ></ENTRY
  20094. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data</CELLBODY
  20095. ></ENTRY
  20096. ></RBW-ROW
  20097. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20098. ></ENTRY
  20099. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Propagation</CELLBODY
  20100. ></ENTRY
  20101. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process</CELLBODY
  20102. ></ENTRY
  20103. ></RBW-ROW
  20104. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>COD</CELLBODY
  20105. ></ENTRY
  20106. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Actor, n&truehy;ary link, link, aggregation link, qualified link, qualified aggregation link</CELLBODY
  20107. ></ENTRY
  20108. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  20109. ></ENTRY
  20110. ></RBW-ROW
  20111. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20112. ></ENTRY
  20113. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connector role label</CELLBODY
  20114. ></ENTRY
  20115. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data</CELLBODY
  20116. ></ENTRY
  20117. ></RBW-ROW
  20118. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD</CELLBODY
  20119. ></ENTRY
  20120. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  20121. ></ENTRY
  20122. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  20123. ></ENTRY
  20124. ></RBW-ROW
  20125. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20126. ></ENTRY
  20127. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>State, start state, superstate</CELLBODY
  20128. ></ENTRY
  20129. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>State</CELLBODY
  20130. ></ENTRY
  20131. ></RBW-ROW
  20132. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UCD</CELLBODY
  20133. ></ENTRY
  20134. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Actor, use case</CELLBODY
  20135. ></ENTRY
  20136. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  20137. ></ENTRY
  20138. ></RBW-ROW
  20139. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20140. ></ENTRY
  20141. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Communication association</CELLBODY
  20142. ></ENTRY
  20143. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process</CELLBODY
  20144. ></ENTRY
  20145. ></RBW-ROW
  20146. ></TBODY
  20147. ></TGROUP
  20148. ></RBW-TABLE
  20149. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20150. >OMT diagrams</SL.SUBLABEL
  20151. ><B.BODY>See Appendix A, OMT Support, for more information about the OMT diagrams.</B.BODY
  20152. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="72p"><COLSPEC COLNAME="2" COLWIDTH="297p"><COLSPEC COLNAME="3" COLWIDTH="81p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram</CELLHEADING
  20153. ></ENTRY
  20154. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol</CELLHEADING
  20155. ></ENTRY
  20156. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Syntax</CELLHEADING
  20157. ></ENTRY
  20158. ></RBW-ROW
  20159. ></THEAD
  20160. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CCD</CELLBODY
  20161. ></ENTRY
  20162. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Actor, class, container class, subject</CELLBODY
  20163. ></ENTRY
  20164. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  20165. ></ENTRY
  20166. ></RBW-ROW
  20167. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20168. ></ENTRY
  20169. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Communication message</CELLBODY
  20170. ></ENTRY
  20171. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process</CELLBODY
  20172. ></ENTRY
  20173. ></RBW-ROW
  20174. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DFD</CELLBODY
  20175. ></ENTRY
  20176. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Actor</CELLBODY
  20177. ></ENTRY
  20178. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  20179. ></ENTRY
  20180. ></RBW-ROW
  20181. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20182. ></ENTRY
  20183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data flow, data store, update flow</CELLBODY
  20184. ></ENTRY
  20185. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data</CELLBODY
  20186. ></ENTRY
  20187. ></RBW-ROW
  20188. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20189. ></ENTRY
  20190. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process</CELLBODY
  20191. ></ENTRY
  20192. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process</CELLBODY
  20193. ></ENTRY
  20194. ></RBW-ROW
  20195. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>MGD</CELLBODY
  20196. ></ENTRY
  20197. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Message definition</CELLBODY
  20198. ></ENTRY
  20199. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process</CELLBODY
  20200. ></ENTRY
  20201. ></RBW-ROW
  20202. ></TBODY
  20203. ></TGROUP
  20204. ></RBW-TABLE
  20205. ></LABEL
  20206. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20207. >How to specify label syntax</L.LABEL
  20208. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20209. ></RBW-AUTOGEN
  20210. ></RBW-MARKER
  20211. ><RBW-PARABODY>To specify label syntax:</RBW-PARABODY
  20212. ></P.PROCEDURE
  20213. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20214. ></RBW-AUTOGEN
  20215. ></RBW-MARKER
  20216. ><RBW-PARABODY>Within a diagram, select Options | Syntax.</RBW-PARABODY
  20217. ></LN.LIST.NUM
  20218. ><LR.LIST.RESULT>The Syntax dialog box appears.</LR.LIST.RESULT
  20219. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00098.unk" origfile="pics/syntax.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  20220. ></FA2.FIGURE.ANCHOR.2
  20221. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20222. ></RBW-AUTOGEN
  20223. ></RBW-MARKER
  20224. ><RBW-PARABODY>Specify the syntax for each symbol group.</RBW-PARABODY
  20225. ></LN.LIST.NUM
  20226. ></LABEL
  20227. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20228. >Syntax for specifying syntax</L.LABEL
  20229. ><B.BODY>Use the following syntax to specify the label syntax:</B.BODY
  20230. ><E.EXAMPLE><CX5FX5FTERM>length_of_name</CX5FX5FTERM
  20231. >:[<CX5FX5FTERM>initial_character</CX5FX5FTERM
  20232. >][<CX5FX5FTERM>following_characters</CX5FX5FTERM
  20233. >]</E.EXAMPLE
  20234. ><B.BODY>where</B.BODY
  20235. ><B.BODY><CX5FX5FTERM>initial_character</CX5FX5FTERM
  20236. > and <CX5FX5FTERM>following_characters</CX5FX5FTERM
  20237. > can be specified as a list of characters or a range of characters. To specify a range of characters, use the syntax:</B.BODY
  20238. ><E.EXAMPLE><CX5FX5FTERM>character&truehy;</CX5FX5FTERM
  20239. ><CX5FX5FTERM>character</CX5FX5FTERM
  20240. > </E.EXAMPLE
  20241. ><B.BODY>To specify a character that is used in the syntax (<CX5FX5FINPUT>&truehy;</CX5FX5FINPUT
  20242. > <CX5FX5FINPUT>[ ]</CX5FX5FINPUT
  20243. > <CX5FX5FINPUT>:</CX5FX5FINPUT
  20244. >), place a backslash before it.</B.BODY
  20245. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20246. >Examples</SL.SUBLABEL
  20247. ><B.BODY>The following table shows syntax examples.</B.BODY
  20248. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="135p"><COLSPEC COLNAME="2" COLWIDTH="315p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label Syntax</CELLHEADING
  20249. ></ENTRY
  20250. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  20251. ></ENTRY
  20252. ></RBW-ROW
  20253. ></THEAD
  20254. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>0:[][]</CELLBODY
  20255. ></ENTRY
  20256. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The 0 indicates that there is no maximum length for the name; there are no restrictions on first or subsequent characters. This is the default syntax.</CELLBODY
  20257. ></ENTRY
  20258. ></RBW-ROW
  20259. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>12:[A&truehy;Z][a&truehy;z0&truehy;9]</CELLBODY
  20260. ></ENTRY
  20261. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The maximum length of the name is 12 characters; the first character must be a capital letter; subsequent characters can be any alphanumeric character.</CELLBODY
  20262. ></ENTRY
  20263. ></RBW-ROW
  20264. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4:[abc][a&truehy;e]</CELLBODY
  20265. ></ENTRY
  20266. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The maximum length of the name is 4 characters; the first character must be lowercase a, b, or c; subsequent characters can be lowercase a to e.</CELLBODY
  20267. ></ENTRY
  20268. ></RBW-ROW
  20269. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4:[*&truehy;~][A&truehy;Z$\:]</CELLBODY
  20270. ></ENTRY
  20271. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The maximum length of the object name is 4 characters; the first character can be any symbol between ASCII value 052 and 176; subsequent characters can be uppercase letters A to Z, the dollar symbol, or the colon.</CELLBODY
  20272. ></ENTRY
  20273. ></RBW-ROW
  20274. ></TBODY
  20275. ></TGROUP
  20276. ></RBW-TABLE
  20277. ></LABEL
  20278. ></SUBSECTION
  20279. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17519"></RBW-ANCHOR
  20280. >Modifying Diagram Layout</SS.SUBSEC.HEAD
  20281. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20282. >Introduction</L.LABEL
  20283. ><B.BODY>This section describes how to set the size of the diagram grid, how to move objects, and how to resize them.</B.BODY
  20284. ></LABEL
  20285. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20286. >Diagram grid</L.LABEL
  20287. ><B.BODY><RBW-IDXTERM TERM1="diagram" TERM2="grid"></RBW-IDXTERM
  20288. >The ObjectTeam diagram editors have a hidden grid that aligns objects. Symbols that you insert, copy or move, snap to this grid, ensuring horizontal and vertical alignment of symbols and producing a neat diagram. The size of the grid squares determines the distance between snap positions. The smaller the squares, the more precisely the objects can be positioned.</B.BODY
  20289. ></LABEL
  20290. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20291. >How to specify grid size<RBW-IDXTERM TERM1="Grid (Options menu)"></RBW-IDXTERM
  20292. ></L.LABEL
  20293. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20294. ></RBW-AUTOGEN
  20295. ></RBW-MARKER
  20296. ><RBW-PARABODY>To specify the grid size:</RBW-PARABODY
  20297. ></P.PROCEDURE
  20298. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20299. ></RBW-AUTOGEN
  20300. ></RBW-MARKER
  20301. ><RBW-PARABODY>Select Options | Grid.</RBW-PARABODY
  20302. ></LN.LIST.NUM
  20303. ><LR.LIST.RESULT>The Grid dialog box appears.</LR.LIST.RESULT
  20304. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00099.unk" origfile="pics/grid.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  20305. ></FA2.FIGURE.ANCHOR.2
  20306. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20307. ></RBW-AUTOGEN
  20308. ></RBW-MARKER
  20309. ><RBW-PARABODY>Select a grid setting, and then click OK. </RBW-PARABODY
  20310. ></LN.LIST.NUM
  20311. ><LT.LIST.TEXT>Possible values range from 1 to 64. The smaller the number, the smaller the grid size. The default is 16.</LT.LIST.TEXT
  20312. ></LABEL
  20313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20314. >How to move nodes<RBW-IDXTERM TERM1="node" TERM2="moving"></RBW-IDXTERM
  20315. ><RBW-IDXTERM TERM1="diagram component" TERM2="moving"></RBW-IDXTERM
  20316. ><RBW-IDXTERM TERM1="Move (Edit menu)"></RBW-IDXTERM
  20317. ></L.LABEL
  20318. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20319. ></RBW-AUTOGEN
  20320. ></RBW-MARKER
  20321. ><RBW-PARABODY>To move one or more nodes:</RBW-PARABODY
  20322. ></P.PROCEDURE
  20323. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20324. ></RBW-AUTOGEN
  20325. ></RBW-MARKER
  20326. ><RBW-PARABODY>Select the nodes.</RBW-PARABODY
  20327. ></LN.LIST.NUM
  20328. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20329. ></RBW-AUTOGEN
  20330. ></RBW-MARKER
  20331. ><RBW-PARABODY>Select Edit | Move.</RBW-PARABODY
  20332. ></LN.LIST.NUM
  20333. ><LR.LIST.RESULT>The center point of the selected nodes jumps to the pointer position. All connectors attached to the nodes also move.</LR.LIST.RESULT
  20334. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20335. ></RBW-AUTOGEN
  20336. ></RBW-MARKER
  20337. ><RBW-PARABODY>Click where you want to place the nodes.</RBW-PARABODY
  20338. ></LN.LIST.NUM
  20339. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20340. >Windows alternative</SL.SUBLABEL
  20341. ><B.BODY>Drag the node to the new position. You cannot use this method if more than one node is selected.</B.BODY
  20342. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20343. >UNIX alternative</SL.SUBLABEL
  20344. ><B.BODY>Drag the selected nodes to the new position.</B.BODY
  20345. ></LABEL
  20346. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20347. >How to move a connector</L.LABEL
  20348. ><B.BODY><RBW-IDXTERM TERM1="connector" TERM2="moving"></RBW-IDXTERM
  20349. >Sometimes you need to move the end of a connector from one symbol to another one. </B.BODY
  20350. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20351. ></RBW-AUTOGEN
  20352. ></RBW-MARKER
  20353. ><RBW-PARABODY>To move a connector:</RBW-PARABODY
  20354. ></P.PROCEDURE
  20355. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20356. ></RBW-AUTOGEN
  20357. ></RBW-MARKER
  20358. ><RBW-PARABODY>In Select mode, click the connector at the end you want to move.</RBW-PARABODY
  20359. ></LN.LIST.NUM
  20360. ><LR.LIST.RESULT>Selection handles appear at either end of the connector.</LR.LIST.RESULT
  20361. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20362. ></RBW-AUTOGEN
  20363. ></RBW-MARKER
  20364. ><RBW-PARABODY>Drag the connector to the desired position.</RBW-PARABODY
  20365. ></LN.LIST.NUM
  20366. ><LR.LIST.RESULT>The end of the connector follows the pointer. You can release the left mouse button while you drag the connector.</LR.LIST.RESULT
  20367. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20368. ></RBW-AUTOGEN
  20369. ></RBW-MARKER
  20370. ><RBW-PARABODY>Click the left mouse button in the new destination symbol. </RBW-PARABODY
  20371. ></LN.LIST.NUM
  20372. ><LR.LIST.RESULT>The connector is reattached. </LR.LIST.RESULT
  20373. ></LABEL
  20374. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20375. >How to move a vertex<RBW-IDXTERM TERM1="vertex" TERM2="moving"></RBW-IDXTERM
  20376. ></L.LABEL
  20377. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20378. ></RBW-AUTOGEN
  20379. ></RBW-MARKER
  20380. ><RBW-PARABODY>To move a vertex:</RBW-PARABODY
  20381. ></P.PROCEDURE
  20382. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20383. ></RBW-AUTOGEN
  20384. ></RBW-MARKER
  20385. ><RBW-PARABODY>Click the vertex. </RBW-PARABODY
  20386. ></LN.LIST.NUM
  20387. ><LR.LIST.RESULT>Selection handles appear only around the vertex. Be sure and select the vertex and not the entire connector.</LR.LIST.RESULT
  20388. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20389. ></RBW-AUTOGEN
  20390. ></RBW-MARKER
  20391. ><RBW-PARABODY>Drag the vertex to the desired position.</RBW-PARABODY
  20392. ></LN.LIST.NUM
  20393. ></LABEL
  20394. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20395. ><RBW-ANCHOR ID="31388"></RBW-ANCHOR
  20396. >How to resize a node<RBW-IDXTERM TERM1="node" TERM2="resizing"></RBW-IDXTERM
  20397. ><RBW-IDXTERM TERM1="diagram component" TERM2="resizing"></RBW-IDXTERM
  20398. ></L.LABEL
  20399. ><B.BODY>A node can be enlarged or reduced, and, except for circles, its proportions changed.</B.BODY
  20400. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20401. ></RBW-AUTOGEN
  20402. ></RBW-MARKER
  20403. ><RBW-PARABODY>To resize a node:</RBW-PARABODY
  20404. ></P.PROCEDURE
  20405. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20406. ></RBW-AUTOGEN
  20407. ></RBW-MARKER
  20408. ><RBW-PARABODY>Select the node.</RBW-PARABODY
  20409. ></LN.LIST.NUM
  20410. ><LR.LIST.RESULT>Selection handles appear around the node.</LR.LIST.RESULT
  20411. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20412. ></RBW-AUTOGEN
  20413. ></RBW-MARKER
  20414. ><RBW-PARABODY>Place the pointer on one of the selection handles.</RBW-PARABODY
  20415. ></LN.LIST.NUM
  20416. ><LR.LIST.RESULT>The pointer changes to a resize cursor.</LR.LIST.RESULT
  20417. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00100.tif" origseq="3" origtype="I" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  20418. ></FA2.FIGURE.ANCHOR.2
  20419. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20420. ></RBW-AUTOGEN
  20421. ></RBW-MARKER
  20422. ><RBW-PARABODY>Move the handle to change the size of the node.</RBW-PARABODY
  20423. ></LN.LIST.NUM
  20424. ></LABEL
  20425. ></SUBSECTION
  20426. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35237"></RBW-ANCHOR
  20427. >Modifying Diagram Appearance</SS.SUBSEC.HEAD
  20428. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20429. >Introduction</L.LABEL
  20430. ><B.BODY>This section describes how to modify the colors and fonts used in diagram editors.</B.BODY
  20431. ></LABEL
  20432. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20433. >One selection affects all editors</L.LABEL
  20434. ><B.BODY>Changing the colors and fonts in any diagram editor changes the colors and fonts for all diagram editors.</B.BODY
  20435. ></LABEL
  20436. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20437. >How to change diagram colors<RBW-IDXTERM TERM1="diagram" TERM2="color in"></RBW-IDXTERM
  20438. ><RBW-IDXTERM TERM1="changing" TERM2="diagram colors"></RBW-IDXTERM
  20439. ><RBW-IDXTERM TERM1="changing" TERM2="diagram fonts"></RBW-IDXTERM
  20440. ><RBW-IDXTERM TERM1="Color (Options menu)"></RBW-IDXTERM
  20441. ><RBW-IDXTERM TERM1="foreground color"></RBW-IDXTERM
  20442. ><RBW-IDXTERM TERM1="background color"></RBW-IDXTERM
  20443. ><RBW-IDXTERM TERM1="selection color"></RBW-IDXTERM
  20444. ></L.LABEL
  20445. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20446. ></RBW-AUTOGEN
  20447. ></RBW-MARKER
  20448. ><RBW-PARABODY>To change the colors used in the diagram editors:</RBW-PARABODY
  20449. ></P.PROCEDURE
  20450. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20451. ></RBW-AUTOGEN
  20452. ></RBW-MARKER
  20453. ><RBW-PARABODY>Select Options | Color.</RBW-PARABODY
  20454. ></LN.LIST.NUM
  20455. ><LR.LIST.RESULT>A submenu appears.</LR.LIST.RESULT
  20456. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20457. ></RBW-AUTOGEN
  20458. ></RBW-MARKER
  20459. ><RBW-PARABODY>Select the color that you want to change: </RBW-PARABODY
  20460. ></LN.LIST.NUM
  20461. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20462. ></RBW-MARKER
  20463. ><RBW-PARABODY>Foreground changes the color of the symbol outlines.</RBW-PARABODY
  20464. ></LB2.LIST.BULLET.2
  20465. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20466. ></RBW-MARKER
  20467. ><RBW-PARABODY>Background changes the color of the window background.</RBW-PARABODY
  20468. ></LB2.LIST.BULLET.2
  20469. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20470. ></RBW-MARKER
  20471. ><RBW-PARABODY>Selection changes the color of the selection handles.</RBW-PARABODY
  20472. ></LB2.LIST.BULLET.2
  20473. ><LR.LIST.RESULT>The Color dialog box appears. </LR.LIST.RESULT
  20474. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20475. ></RBW-AUTOGEN
  20476. ></RBW-MARKER
  20477. ><RBW-PARABODY>Select the desired color, and then click OK.</RBW-PARABODY
  20478. ></LN.LIST.NUM
  20479. ></LABEL
  20480. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20481. ><RBW-ANCHOR ID="12688"></RBW-ANCHOR
  20482. >How to change diagram font<RBW-IDXTERM TERM1="Font (Options menu)" TERM2="diagram"></RBW-IDXTERM
  20483. ><RBW-IDXTERM TERM1="bold font"></RBW-IDXTERM
  20484. ><RBW-IDXTERM TERM1="normal font"></RBW-IDXTERM
  20485. >s</L.LABEL
  20486. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20487. ></RBW-AUTOGEN
  20488. ></RBW-MARKER
  20489. ><RBW-PARABODY>To change the font used in the diagram editors:</RBW-PARABODY
  20490. ></P.PROCEDURE
  20491. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20492. ></RBW-AUTOGEN
  20493. ></RBW-MARKER
  20494. ><RBW-PARABODY>Select Options | Font.</RBW-PARABODY
  20495. ></LN.LIST.NUM
  20496. ><LR.LIST.RESULT>A submenu appears.</LR.LIST.RESULT
  20497. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20498. ></RBW-AUTOGEN
  20499. ></RBW-MARKER
  20500. ><RBW-PARABODY>Select the font that you want to change: </RBW-PARABODY
  20501. ></LN.LIST.NUM
  20502. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20503. ></RBW-MARKER
  20504. ><RBW-PARABODY>Bold changes the font used for class names in CDs, initiators in SDs, state activities and classes in STDs, and actors and use cases in UCDs.<RBW-IDXTERM TERM1="class" TERM2="font for"></RBW-IDXTERM
  20505. ><RBW-IDXTERM TERM1="actor" TERM2="font for"></RBW-IDXTERM
  20506. ><RBW-IDXTERM TERM1="data store" TERM2="font for"></RBW-IDXTERM
  20507. ><RBW-IDXTERM TERM1="initiator" TERM2="font for"></RBW-IDXTERM
  20508. ><RBW-IDXTERM TERM1="use case" TERM2="font for"></RBW-IDXTERM
  20509. ></RBW-PARABODY
  20510. ></LB2.LIST.BULLET.2
  20511. ><N3.NOTE.3><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  20512. ></RBW-AUTOGEN
  20513. >Bold also changes the font used for actors and data stores in DFDs. See Appendix A, OMT Support, for more information about DFDs.</N3.NOTE.3
  20514. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20515. ></RBW-MARKER
  20516. ><RBW-PARABODY>Normal changes the font used everywhere else, except in Notes. </RBW-PARABODY
  20517. ></LB2.LIST.BULLET.2
  20518. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20519. ></RBW-MARKER
  20520. ><RBW-PARABODY>Annotation<CX5FX5FBULLET.EMPHASIS> </CX5FX5FBULLET.EMPHASIS
  20521. >changes the font used for Notes. If not explicitly set, the font used is a smaller version of the Normal font.</RBW-PARABODY
  20522. ></LB2.LIST.BULLET.2
  20523. ><LR.LIST.RESULT>The font dialog box appears.</LR.LIST.RESULT
  20524. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20525. ></RBW-AUTOGEN
  20526. ></RBW-MARKER
  20527. ><RBW-PARABODY>Select a font family, style, and size, and then click OK.</RBW-PARABODY
  20528. ></LN.LIST.NUM
  20529. ></LABEL
  20530. ></SUBSECTION
  20531. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38422"></RBW-ANCHOR
  20532. >Undoing Diagram Edits</SS.SUBSEC.HEAD
  20533. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20534. >Introduction</L.LABEL
  20535. ><B.BODY>You can undo the most recent graphical diagram edit or revert to the last saved version of the diagram. When you revert to the last saved version, you lose all edits made to the diagram since the last time you saved, except for changes that are made to <CX5FX5FTERM>defined items</CX5FX5FTERM
  20536. > (see <RBW-XREF REFID="29698" TYPE="XREF-TEXTCOPY">Working With Items</RBW-XREF
  20537. >).</B.BODY
  20538. ></LABEL
  20539. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20540. >How to undo the most recent change<RBW-IDXTERM TERM1="diagram" TERM2="undoing edits"></RBW-IDXTERM
  20541. ><RBW-IDXTERM TERM1="Undo (Edit menu)"></RBW-IDXTERM
  20542. ></L.LABEL
  20543. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20544. ></RBW-AUTOGEN
  20545. ></RBW-MARKER
  20546. ><RBW-PARABODY>To undo the most recent change to the diagram, right&truehy;click anywhere in the drawing area.</RBW-PARABODY
  20547. ></P.PROCEDURE
  20548. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20549. >Alternative</SL.SUBLABEL
  20550. ><B.BODY>Select Edit | Undo.</B.BODY
  20551. ></LABEL
  20552. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20553. >How to revert to the last saved version<RBW-IDXTERM TERM1="Reload (File menu)"></RBW-IDXTERM
  20554. ></L.LABEL
  20555. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20556. ></RBW-AUTOGEN
  20557. ></RBW-MARKER
  20558. ><RBW-PARABODY>To revert to the last saved version of the diagram, select File | Reload.</RBW-PARABODY
  20559. ></P.PROCEDURE
  20560. ><LRS.LIST.RESULT.SINGLE>The system closes the current diagram and opens the last saved version of the diagram. Any work done since the last time you saved the diagram is lost except for changes made to defined items.</LRS.LIST.RESULT.SINGLE
  20561. ></LABEL
  20562. ></SUBSECTION
  20563. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27377"></RBW-ANCHOR
  20564. >Adding Notes to a Diagram</SS.SUBSEC.HEAD
  20565. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20566. >Introduction</L.LABEL
  20567. ><B.BODY>One symbol is common to every diagram editor: the <CX5FX5FTERM>Note</CX5FX5FTERM
  20568. >.</B.BODY
  20569. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00101.tif" origseq="14" origtype="I" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  20570. ></FA.FIGURE.ANCHOR
  20571. ><B.BODY>The Note symbol lets you attach a comment to any component in a diagram. A Note can be of unlimited length.</B.BODY
  20572. ><B.BODY>Unlike other nodes, Notes do not have properties. They are therefore ignored during diagram checking and do not appear in reports.</B.BODY
  20573. ></LABEL
  20574. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20575. ><RBW-ANCHOR ID="42581"></RBW-ANCHOR
  20576. >Working with Notes</L.LABEL
  20577. ><B.BODY>Notes behave like any other node. For details on how to insert, delete, move, and resize nodes, see <RBW-XREF REFID="21332" TYPE="XREF-TEXTCOPY">Editing Diagrams</RBW-XREF
  20578. >.</B.BODY
  20579. ></LABEL
  20580. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20581. >Changing the Notes font</L.LABEL
  20582. ><B.BODY>Notes are displayed in their own font. For details on how to set the font used in Notes, see <RBW-XREF REFID="12688" TYPE="XREF-TEXTCOPY">How to change diagram fonts</RBW-XREF
  20583. >.</B.BODY
  20584. ></LABEL
  20585. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20586. >Connecting Notes to other components</L.LABEL
  20587. ><B.BODY>A Note is connected to other components in a diagram by the Note connector. </B.BODY
  20588. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00102.tif" origseq="16" origtype="I" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  20589. ></FA.FIGURE.ANCHOR
  20590. ><B.BODY>A Note can be connected to any component other than another Note or Note connector. A single Note can be connected to more than one component.</B.BODY
  20591. ><B.BODY>For details on how to insert connectors in diagrams, see <RBW-XREF REFID="18141" TYPE="XREF-TEXTCOPY">How to create a connector</RBW-XREF
  20592. >.</B.BODY
  20593. ></LABEL
  20594. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20595. >Free text</L.LABEL
  20596. ><B.BODY>Use Notes to clarify or highlight elements within a diagram. If you want to attach more extensive textual descriptions to a component, use the Free Text property. For more details on free text, see <RBW-XREF REFID="22035" TYPE="XREF-TEXTCOPY">Specifying Properties</RBW-XREF
  20597. >.</B.BODY
  20598. ></LABEL
  20599. ></SUBSECTION
  20600. ></SECTION
  20601. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29698"></RBW-ANCHOR
  20602. >Working With Items</S.SECTION.HEAD
  20603. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20604. >Introduction</L.LABEL
  20605. ><B.BODY><RBW-IDXTERM TERM1="item" TERM2="definition of"></RBW-IDXTERM
  20606. ><RBW-IDXTERM TERM1="diagram component" TERM2="definition of"></RBW-IDXTERM
  20607. >When you draw a symbol in a diagram editor, you create a <CX5FX5FTERM>component</CX5FX5FTERM
  20608. >, which is a graphical element in the repository. When you specify property values for the component, you create an <CX5FX5FTERM>item</CX5FX5FTERM
  20609. >, which is a semantic element in the repository. </B.BODY
  20610. ><B.BODY>Every element in a project is either an item or an organizational unit (a configuration, phase, system, file, or group). Items are always part of a system or a file.</B.BODY
  20611. ></LABEL
  20612. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20613. >Identified by name and type</L.LABEL
  20614. ><B.BODY><RBW-IDXTERM TERM1="item" TERM2="types of"></RBW-IDXTERM
  20615. ><RBW-IDXTERM TERM1="cl, item type"></RBW-IDXTERM
  20616. ><RBW-IDXTERM TERM1="de, item type"></RBW-IDXTERM
  20617. ><RBW-IDXTERM TERM1="et, item type"></RBW-IDXTERM
  20618. ><RBW-IDXTERM TERM1="pe, item type"></RBW-IDXTERM
  20619. ><RBW-IDXTERM TERM1="st, item type"></RBW-IDXTERM
  20620. >An item is identified by its name and its type. </B.BODY
  20621. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  20622. ></RBW-AUTOGEN
  20623. ></RBW-MARKER
  20624. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Item name.</CX5FX5FBULLET.EMPHASIS
  20625. > An item name can be up to 80 characters in length. All printable ISO&truehy;Latin&truehy;1 characters, except space, tab, newline, slash, colon, and comma are allowed in item names.</RBW-PARABODY
  20626. ></LB.LIST.BULLET
  20627. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  20628. ></RBW-AUTOGEN
  20629. ></RBW-MARKER
  20630. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Item type.</CX5FX5FBULLET.EMPHASIS
  20631. > The type of an item is determined by the symbol used to create it. The relationship between symbol and type is fixed internally in ObjectTeam and cannot be changed. The types used in ObjectTeam are as follows:</RBW-PARABODY
  20632. ></LB.LIST.BULLET
  20633. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="72p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  20634. ></ENTRY
  20635. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  20636. ></ENTRY
  20637. ></RBW-ROW
  20638. ></THEAD
  20639. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  20640. ></ENTRY
  20641. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  20642. ></ENTRY
  20643. ></RBW-ROW
  20644. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  20645. ></ENTRY
  20646. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>data element</CELLBODY
  20647. ></ENTRY
  20648. ></RBW-ROW
  20649. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>et</CELLBODY
  20650. ></ENTRY
  20651. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>event trace</CELLBODY
  20652. ></ENTRY
  20653. ></RBW-ROW
  20654. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  20655. ></ENTRY
  20656. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>process element</CELLBODY
  20657. ></ENTRY
  20658. ></RBW-ROW
  20659. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>rs</CELLBODY
  20660. ></ENTRY
  20661. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>reserved word</CELLBODY
  20662. ></ENTRY
  20663. ></RBW-ROW
  20664. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>st</CELLBODY
  20665. ></ENTRY
  20666. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>state</CELLBODY
  20667. ></ENTRY
  20668. ></RBW-ROW
  20669. ></TBODY
  20670. ></TGROUP
  20671. ></RBW-TABLE
  20672. ><LT.LIST.TEXT>Appendix B, Type and Scope of Diagram Components, lists the type of each diagram component.</LT.LIST.TEXT
  20673. ></LABEL
  20674. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20675. >Purpose of items</L.LABEL
  20676. ><B.BODY>Items allow different graphical elements to refer to the same semantic element.</B.BODY
  20677. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20678. >Example</SL.SUBLABEL
  20679. ><B.BODY>When you create the Rental class in a CD, you create an item with the name Rental and type cl. By default, ObjectTeam associates this item with any other Rental class that you create in any other diagram in the same Phase.</B.BODY
  20680. ></LABEL
  20681. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20682. >Qualified items</L.LABEL
  20683. ><B.BODY><CX5FX5FTERM><RBW-IDXTERM TERM1="qualified item" TERM2="definition of"></RBW-IDXTERM
  20684. ><RBW-IDXTERM TERM1="item" TERM2="qualified"></RBW-IDXTERM
  20685. >Qualified items</CX5FX5FTERM
  20686. > belong to another item. Operations and classes, for example, are both items. Because an operation always belongs to a class, an operation is a qualified item. </B.BODY
  20687. ><B.BODY>The name of a qualified item consists of the owner item name and the qualified item name. For example, the getName operation on the Member class is named Member.getName. The operation getName may appear in several classes; however, because getName is a qualified item, each operation is unique to the class in which getName appears. </B.BODY
  20688. ></LABEL
  20689. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20690. >In this chapter</L.LABEL
  20691. ><B.BODY>This chapter contains the following sections:</B.BODY
  20692. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  20693. ></ENTRY
  20694. ></RBW-ROW
  20695. ></THEAD
  20696. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26920" TYPE="XREF-TEXTCOPY">Defining Items&rbwtab;3–33</RBW-XREF
  20697. ></SB.SECTION.BLOCK.TABLE
  20698. ></ENTRY
  20699. ></RBW-ROW
  20700. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42724" TYPE="XREF-TEXTCOPY">Viewing and Renaming Items&rbwtab;3–34</RBW-XREF
  20701. ></SB.SECTION.BLOCK.TABLE
  20702. ></ENTRY
  20703. ></RBW-ROW
  20704. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22035" TYPE="XREF-TEXTCOPY">Specifying Properties&rbwtab;3–37</RBW-XREF
  20705. ></SB.SECTION.BLOCK.TABLE
  20706. ></ENTRY
  20707. ></RBW-ROW
  20708. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18867" TYPE="XREF-TEXTCOPY">Specifying Scope&rbwtab;3–40</RBW-XREF
  20709. ></SB.SECTION.BLOCK.TABLE
  20710. ></ENTRY
  20711. ></RBW-ROW
  20712. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21274" TYPE="XREF-TEXTCOPY">Removing and Moving Items&rbwtab;3–44</RBW-XREF
  20713. ></SB.SECTION.BLOCK.TABLE
  20714. ></ENTRY
  20715. ></RBW-ROW
  20716. ></TBODY
  20717. ></TGROUP
  20718. ></RBW-TABLE
  20719. ></LABEL
  20720. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26920"></RBW-ANCHOR
  20721. >Defining Items</SS.SUBSEC.HEAD
  20722. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20723. >Introduction</L.LABEL
  20724. ><B.BODY>A graphical element in a diagram editor is a <CX5FX5FTERM>component</CX5FX5FTERM
  20725. >. A semantic element in the repository is an <CX5FX5FTERM>item</CX5FX5FTERM
  20726. >. In a complete model, each component is linked to an item.</B.BODY
  20727. ></LABEL
  20728. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20729. >How to define an item</L.LABEL
  20730. ><B.BODY>You can always define an item by specifying its properties.</B.BODY
  20731. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20732. ></RBW-AUTOGEN
  20733. ></RBW-MARKER
  20734. ><RBW-PARABODY>To define an item by specifying its properties:</RBW-PARABODY
  20735. ></P.PROCEDURE
  20736. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20737. ></RBW-AUTOGEN
  20738. ></RBW-MARKER
  20739. ><RBW-PARABODY>Open a diagram, for example, a Sequence Diagram.</RBW-PARABODY
  20740. ></LN.LIST.NUM
  20741. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20742. ></RBW-AUTOGEN
  20743. ></RBW-MARKER
  20744. ><RBW-PARABODY>Add a component to the diagram; for example, add an object to the Sequence Diagram.</RBW-PARABODY
  20745. ></LN.LIST.NUM
  20746. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20747. ></RBW-AUTOGEN
  20748. ></RBW-MARKER
  20749. ><RBW-PARABODY>Select the component; for example, select the object.</RBW-PARABODY
  20750. ></LN.LIST.NUM
  20751. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  20752. ></RBW-AUTOGEN
  20753. ></RBW-MARKER
  20754. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  20755. ></LN.LIST.NUM
  20756. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  20757. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  20758. ></RBW-AUTOGEN
  20759. ></RBW-MARKER
  20760. ><RBW-PARABODY>In the left pane of the dialog box, select the item.</RBW-PARABODY
  20761. ></LN.LIST.NUM
  20762. ><LR.LIST.RESULT>The item properties appear in the right pane.</LR.LIST.RESULT
  20763. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00103.unk" origfile="pics/defitem.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  20764. ></FA2.FIGURE.ANCHOR.2
  20765. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  20766. ></RBW-AUTOGEN
  20767. ></RBW-MARKER
  20768. ><RBW-PARABODY>Click the Define Item button.</RBW-PARABODY
  20769. ></LN.LIST.NUM
  20770. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  20771. ></RBW-AUTOGEN
  20772. >If the item exists, the Define Item button is dimmed.</N2.NOTE.2
  20773. ></LABEL
  20774. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20775. >Alternative for classes</L.LABEL
  20776. ><B.BODY>When you create a class in a CD, you often specify its attributes and operations before specifying its properties. When you add an attribute or operation to a class symbol, ObjectTeam defines the class item. Therefore, you rarely use the previous procedure to define class items.</B.BODY
  20777. ></LABEL
  20778. ></SUBSECTION
  20779. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="42724"></RBW-ANCHOR
  20780. >Viewing and Renaming Items</SS.SUBSEC.HEAD
  20781. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20782. >Introduction</L.LABEL
  20783. ><B.BODY>This section describes how to view a list of all items in a system and how to rename an item.</B.BODY
  20784. ></LABEL
  20785. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20786. ><RBW-ANCHOR ID="29466"></RBW-ANCHOR
  20787. >Ways to view items</L.LABEL
  20788. ><B.BODY>You can view items using the Browser or reports:</B.BODY
  20789. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  20790. ></RBW-AUTOGEN
  20791. ></RBW-MARKER
  20792. ><RBW-PARABODY>In the Browser at the system level, the pseudo object <defined items> lists all items that have scope phaseDef, phaseRef, or System. This section describes how to view items in the Browser.</RBW-PARABODY
  20793. ></LB.LIST.BULLET
  20794. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  20795. ></RBW-AUTOGEN
  20796. ></RBW-MARKER
  20797. ><RBW-PARABODY>The report  On Items and Properties can be run at any level in the Browser or from a diagram editor. The report displays all items (including those with scope File) visible at the selected level. See <RBW-XREF REFID="27975" TYPE="XREF-TEXTCOPY">Reporting in ObjectTeam</RBW-XREF
  20798. > for more information. </RBW-PARABODY
  20799. ></LB.LIST.BULLET
  20800. ></LABEL
  20801. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20802. >How to view defined items<RBW-IDXTERM TERM1="item" TERM2="displaying"></RBW-IDXTERM
  20803. ></L.LABEL
  20804. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20805. ></RBW-AUTOGEN
  20806. ></RBW-MARKER
  20807. ><RBW-PARABODY>To view defined items:</RBW-PARABODY
  20808. ></P.PROCEDURE
  20809. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20810. ></RBW-AUTOGEN
  20811. ></RBW-MARKER
  20812. ><RBW-PARABODY>In the navigation area of the Browser, unfold the system that you are interested in.</RBW-PARABODY
  20813. ></LN.LIST.NUM
  20814. ><LR.LIST.RESULT>The pseudo object <defined items> appears as one of the child objects of the selected system.</LR.LIST.RESULT
  20815. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20816. ></RBW-AUTOGEN
  20817. ></RBW-MARKER
  20818. ><RBW-PARABODY>Open the pseudo object <defined items>.</RBW-PARABODY
  20819. ></LN.LIST.NUM
  20820. ><LR.LIST.RESULT>The defined items appear in the information area.</LR.LIST.RESULT
  20821. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00104.unk" origfile="pics/viewitem.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  20822. ></FAR.FIGURE.ANCHOR.RIGHT
  20823. ></LABEL
  20824. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20825. ><RBW-ANCHOR ID="38661"></RBW-ANCHOR
  20826. >Two ways to rename<RBW-IDXTERM TERM1="item" TERM2="renaming"></RBW-IDXTERM
  20827. ><RBW-IDXTERM TERM1="renaming" TERM2="items"></RBW-IDXTERM
  20828. ></L.LABEL
  20829. ><B.BODY>You can rename items from the Browser or diagram editor.</B.BODY
  20830. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  20831. ></RBW-AUTOGEN
  20832. >Editing the label of a component creates a new item. It does not change the name of the item. To change the name of an item, you must use one of the following procedures.</W.WARNING
  20833. ></LABEL
  20834. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20835. >How to rename an item from the Browser<RBW-IDXTERM TERM1="Change Name (File menu)" TERM2="of item"></RBW-IDXTERM
  20836. ></L.LABEL
  20837. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20838. ></RBW-AUTOGEN
  20839. ></RBW-MARKER
  20840. ><RBW-PARABODY>To rename a diagram item from the Browser:</RBW-PARABODY
  20841. ></P.PROCEDURE
  20842. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20843. ></RBW-AUTOGEN
  20844. ></RBW-MARKER
  20845. ><RBW-PARABODY>In the navigation area of the Browser, unfold the system that you are interested in.</RBW-PARABODY
  20846. ></LN.LIST.NUM
  20847. ><LR.LIST.RESULT>The pseudo object <defined items> appears as one of the child objects of the selected system.</LR.LIST.RESULT
  20848. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20849. ></RBW-AUTOGEN
  20850. ></RBW-MARKER
  20851. ><RBW-PARABODY>Open the pseudo object <defined items>.</RBW-PARABODY
  20852. ></LN.LIST.NUM
  20853. ><LR.LIST.RESULT>The defined items appear in the information area.</LR.LIST.RESULT
  20854. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20855. ></RBW-AUTOGEN
  20856. ></RBW-MARKER
  20857. ><RBW-PARABODY>In the information area, select the item that you want to rename.</RBW-PARABODY
  20858. ></LN.LIST.NUM
  20859. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  20860. ></RBW-AUTOGEN
  20861. ></RBW-MARKER
  20862. ><RBW-PARABODY>Select File | Change | Name.</RBW-PARABODY
  20863. ></LN.LIST.NUM
  20864. ><LR.LIST.RESULT>The Change Name dialog appears.</LR.LIST.RESULT
  20865. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  20866. ></RBW-AUTOGEN
  20867. ></RBW-MARKER
  20868. ><RBW-PARABODY>Type the new name and click OK.</RBW-PARABODY
  20869. ></LN.LIST.NUM
  20870. ><LR.LIST.RESULT>ObjectTeam changes the item name.</LR.LIST.RESULT
  20871. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  20872. ></RBW-AUTOGEN
  20873. >If an item with the name you specify exists, a warning dialog box appears. </N2.NOTE.2
  20874. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20875. ></RBW-MARKER
  20876. ><RBW-PARABODY>Click Overwrite to replace the existing item with the current item.</RBW-PARABODY
  20877. ></LB2.LIST.BULLET.2
  20878. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20879. ></RBW-MARKER
  20880. ><RBW-PARABODY>Click Refer to replace the current item with the existing item.</RBW-PARABODY
  20881. ></LB2.LIST.BULLET.2
  20882. ></LABEL
  20883. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20884. ><RBW-ANCHOR ID="21701"></RBW-ANCHOR
  20885. >How to rename an item from the diagram editor<RBW-IDXTERM TERM1="Change Name (Edit menu)" TERM2="of item"></RBW-IDXTERM
  20886. ></L.LABEL
  20887. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  20888. ></RBW-AUTOGEN
  20889. >When you rename an item, ObjectTeam updates the repository immediately. The new item name remains even when you close the diagram without saving changes.</N.NOTE
  20890. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  20891. ></RBW-AUTOGEN
  20892. ></RBW-MARKER
  20893. ><RBW-PARABODY>To rename an item from a diagram editor:</RBW-PARABODY
  20894. ></P.PROCEDURE
  20895. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  20896. ></RBW-AUTOGEN
  20897. ></RBW-MARKER
  20898. ><RBW-PARABODY>Open the diagram in which the item is defined.</RBW-PARABODY
  20899. ></LN.LIST.NUM
  20900. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  20901. ></RBW-AUTOGEN
  20902. ></RBW-MARKER
  20903. ><RBW-PARABODY>Select the object whose name you want to change or in which the object whose name you want to change appears.</RBW-PARABODY
  20904. ></LN.LIST.NUM
  20905. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  20906. ></RBW-AUTOGEN
  20907. ></RBW-MARKER
  20908. ><RBW-PARABODY>Select Edit | Change Name.</RBW-PARABODY
  20909. ></LN.LIST.NUM
  20910. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  20911. ></RBW-AUTOGEN
  20912. >If more than one item is associated with the selected object, the Items dialog box appears, as shown below. Select the item and click OK.</N2.NOTE.2
  20913. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00105.unk" origfile="pics/items_db.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  20914. ></FA2.FIGURE.ANCHOR.2
  20915. ><LR.LIST.RESULT>The Change Name dialog box appears.</LR.LIST.RESULT
  20916. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  20917. ></RBW-AUTOGEN
  20918. ></RBW-MARKER
  20919. ><RBW-PARABODY>Type the new name and click on OK.</RBW-PARABODY
  20920. ></LN.LIST.NUM
  20921. ><LR.LIST.RESULT>ObjectTeam changes the item name.</LR.LIST.RESULT
  20922. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  20923. ></RBW-AUTOGEN
  20924. >If an item with the name you specify exists, a warning dialog box appears. </N2.NOTE.2
  20925. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20926. ></RBW-MARKER
  20927. ><RBW-PARABODY>Click Overwrite to replace the existing item with the current item.</RBW-PARABODY
  20928. ></LB2.LIST.BULLET.2
  20929. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  20930. ></RBW-MARKER
  20931. ><RBW-PARABODY>Click Refer to replace the current item with the existing item.</RBW-PARABODY
  20932. ></LB2.LIST.BULLET.2
  20933. ></LABEL
  20934. ></SUBSECTION
  20935. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22035"></RBW-ANCHOR
  20936. >Specifying Properties</SS.SUBSEC.HEAD
  20937. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20938. >Introduction</L.LABEL
  20939. ><B.BODY>You describe items and components by specifying their properties.</B.BODY
  20940. ></LABEL
  20941. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20942. >Implicit and explicit properties</L.LABEL
  20943. ><B.BODY>You can specify two kinds of properties:</B.BODY
  20944. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  20945. ></RBW-AUTOGEN
  20946. ></RBW-MARKER
  20947. ><RBW-PARABODY>Specify implicit properties through the diagrams. ObjectTeam creates these properties when you add components to a diagram and stores them in the diagram file. For example, in the CD, you use the multiplicity specifications at either end of an association to specify the multiplicity of the association. </RBW-PARABODY
  20948. ></LB.LIST.BULLET
  20949. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  20950. ></RBW-AUTOGEN
  20951. ></RBW-MARKER
  20952. ><RBW-PARABODY>Specify explicit properties through the Edit Properties dialog box, as described in <RBW-XREF REFID="26965" TYPE="XREF-TEXTCOPY">How to specify explicit properties</RBW-XREF
  20953. >. Explicit properties are either item properties or component properties, as described in <RBW-XREF REFID="14241" TYPE="XREF-TEXTCOPY">Item properties</RBW-XREF
  20954. >.</RBW-PARABODY
  20955. ></LB.LIST.BULLET
  20956. ></LABEL
  20957. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  20958. ><RBW-ANCHOR ID="14241"></RBW-ANCHOR
  20959. >Item properties</L.LABEL
  20960. ><B.BODY>Item properties are stored with the item. When you change item properties, ObjectTeam updates the repository immediately. The new values remain even when you close the diagram without saving changes. The following table briefly describes the item properties available.</B.BODY
  20961. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="145p"><COLSPEC COLNAME="3" COLWIDTH="94p"><COLSPEC COLNAME="4" COLWIDTH="262p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram</CELLHEADING
  20962. ></ENTRY
  20963. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>property (object Type)</CELLHEADING
  20964. ></ENTRY
  20965. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Short name</CELLHEADING
  20966. ></ENTRY
  20967. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  20968. ></ENTRY
  20969. ></RBW-ROW
  20970. ></THEAD
  20971. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>All diagrams</CELLBODY
  20972. ></ENTRY
  20973. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text (all objects)</CELLBODY
  20974. ></ENTRY
  20975. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>freeText</CELLBODY
  20976. ></ENTRY
  20977. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains unrestricted text about the object, like comments, motivations, and revision data. </CELLBODY
  20978. ></ENTRY
  20979. ></RBW-ROW
  20980. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Diagram</CELLBODY
  20981. ></ENTRY
  20982. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type (qualifier)</CELLBODY
  20983. ></ENTRY
  20984. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>data_type</CELLBODY
  20985. ></ENTRY
  20986. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the data type of the qualifier for a qualified association.</CELLBODY
  20987. ></ENTRY
  20988. ></RBW-ROW
  20989. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use Case Diagram</CELLBODY
  20990. ></ENTRY
  20991. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Actor Type (actor)</CELLBODY
  20992. ></ENTRY
  20993. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>actor_type</CELLBODY
  20994. ></ENTRY
  20995. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies system as the Actor Type if the corresponding use case actor is a system actor. The default Actor Type of a use case actor is user. </CELLBODY
  20996. ></ENTRY
  20997. ></RBW-ROW
  20998. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  20999. ></ENTRY
  21000. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Alternative Course of Action (use case)</CELLBODY
  21001. ></ENTRY
  21002. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>alternateAct</CELLBODY
  21003. ></ENTRY
  21004. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains unrestricted text that describes the corresponding use case. Use this property to describe variants on the basic use case scenario, for example, the sequence of transactions that occurs in the case of an error. </CELLBODY
  21005. ></ENTRY
  21006. ></RBW-ROW
  21007. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21008. ></ENTRY
  21009. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Basic Course of Action (use case)</CELLBODY
  21010. ></ENTRY
  21011. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>basicAct</CELLBODY
  21012. ></ENTRY
  21013. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains unrestricted text that describes the corresponding use case. Use this property to describe the most common or important sequence of transactions for the use case. </CELLBODY
  21014. ></ENTRY
  21015. ></RBW-ROW
  21016. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21017. ></ENTRY
  21018. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Classification (use case)</CELLBODY
  21019. ></ENTRY
  21020. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>classification</CELLBODY
  21021. ></ENTRY
  21022. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the value secondary if the corresponding use case describes the system’s behavior under exceptional conditions.</CELLBODY
  21023. ><CELLBODY>The default value primary indicates main line functions of the system. </CELLBODY
  21024. ></ENTRY
  21025. ></RBW-ROW
  21026. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21027. ></ENTRY
  21028. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Postcondition (use case)</CELLBODY
  21029. ></ENTRY
  21030. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>postcond</CELLBODY
  21031. ></ENTRY
  21032. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains unrestricted text that describes the corresponding use case. Use this property to describe the state of the system after the use case is performed. </CELLBODY
  21033. ></ENTRY
  21034. ></RBW-ROW
  21035. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21036. ></ENTRY
  21037. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Precondition (use case)</CELLBODY
  21038. ></ENTRY
  21039. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>precond</CELLBODY
  21040. ></ENTRY
  21041. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains unrestricted text that describes the corresponding use case. Use this property to describe the conditions that must be met before the use case can be performed. </CELLBODY
  21042. ></ENTRY
  21043. ></RBW-ROW
  21044. ></TBODY
  21045. ></TGROUP
  21046. ><RBW-ICONIZE></RBW-TABLE
  21047. ></LABEL
  21048. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21049. >Component properties</L.LABEL
  21050. ><B.BODY>Component properties are stored in the diagram file. Changes to component properties are saved when you save your diagram changes. The following table briefly describes the component properties available.</B.BODY
  21051. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="126p"><COLSPEC COLNAME="3" COLWIDTH="105p"><COLSPEC COLNAME="4" COLWIDTH="256p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram</CELLHEADING
  21052. ></ENTRY
  21053. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>property (object Type)</CELLHEADING
  21054. ></ENTRY
  21055. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Short name</CELLHEADING
  21056. ></ENTRY
  21057. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  21058. ></ENTRY
  21059. ></RBW-ROW
  21060. ></THEAD
  21061. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sequence Diagram</CELLBODY
  21062. ></ENTRY
  21063. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interaction Type (initiator, object)</CELLBODY
  21064. ></ENTRY
  21065. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>interact_type</CELLBODY
  21066. ></ENTRY
  21067. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the type of object: entity (a persistent object that survives the program execution), interface (an object with external I/O, that is an object that is activated from outside the system), or control (any other type of object).</CELLBODY
  21068. ></ENTRY
  21069. ></RBW-ROW
  21070. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use Case Diagram</CELLBODY
  21071. ></ENTRY
  21072. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Initiator (actor)</CELLBODY
  21073. ></ENTRY
  21074. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>initiator</CELLBODY
  21075. ></ENTRY
  21076. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>When turned on, this defines the corresponding use case actor as initiator for a use case.</CELLBODY
  21077. ><CELLBODY>By default, this property is turned off. </CELLBODY
  21078. ></ENTRY
  21079. ></RBW-ROW
  21080. ></TBODY
  21081. ></TGROUP
  21082. ><RBW-ICONIZE></RBW-TABLE
  21083. ></LABEL
  21084. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21085. >Additional properties</L.LABEL
  21086. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21087. >Code and document generation</SL.SUBLABEL
  21088. ><B.BODY>Several additional explicit properties are used for code and document generation. For information about these properties, see the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  21089. ><CX5FX5FTITLE></CX5FX5FTITLE
  21090. > for your code generator and the <CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  21091. ><CX5FX5FTITLE></CX5FX5FTITLE
  21092. >.</B.BODY
  21093. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21094. ><RBW-IDXTERM TERM1="property" TERM2="user-defined"></RBW-IDXTERM
  21095. ><RBW-IDXTERM TERM1="user-defined property"></RBW-IDXTERM
  21096. >User&truehy;defined properties</SL.SUBLABEL
  21097. ><B.BODY>All explicit properties are defined in two customization files: <CX5FX5FFILE.NAME>proplocs.proplocs</CX5FX5FFILE.NAME
  21098. > and <CX5FX5FFILE.NAME>propdefs.propdefs</CX5FX5FFILE.NAME
  21099. >. These files can be edited and saved on any level in the repository. For more information about defining your own properties, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  21100. ><CX5FX5FTITLE></CX5FX5FTITLE
  21101. >.</B.BODY
  21102. ></LABEL
  21103. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21104. ><RBW-ANCHOR ID="26965"></RBW-ANCHOR
  21105. >How to specify explicit properties <RBW-IDXTERM TERM1="item" TERM2="specifying properties"></RBW-IDXTERM
  21106. ><RBW-IDXTERM TERM1="property" TERM2="specifying"></RBW-IDXTERM
  21107. ><RBW-IDXTERM TERM1="Edit Properties (Item menu)"></RBW-IDXTERM
  21108. ></L.LABEL
  21109. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  21110. ></RBW-AUTOGEN
  21111. >Changes to item properties are saved immediately. Changes to component properties are saved when you save your diagram changes.</N.NOTE
  21112. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  21113. ></RBW-AUTOGEN
  21114. ></RBW-MARKER
  21115. ><RBW-PARABODY>To specify explicit properties for a diagram object:</RBW-PARABODY
  21116. ></P.PROCEDURE
  21117. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  21118. ></RBW-AUTOGEN
  21119. ></RBW-MARKER
  21120. ><RBW-PARABODY>In the diagram, select the object.</RBW-PARABODY
  21121. ></LN.LIST.NUM
  21122. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  21123. ></RBW-AUTOGEN
  21124. ></RBW-MARKER
  21125. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  21126. ></LN.LIST.NUM
  21127. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  21128. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00106.unk" origfile="pics/editprop.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  21129. ></FA2.FIGURE.ANCHOR.2
  21130. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  21131. ></RBW-AUTOGEN
  21132. ></RBW-MARKER
  21133. ><RBW-PARABODY>Select the item whose properties you want to set.</RBW-PARABODY
  21134. ></LN.LIST.NUM
  21135. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  21136. ></RBW-AUTOGEN
  21137. ></RBW-MARKER
  21138. ><RBW-PARABODY>If necessary, click Define Item to define the item.</RBW-PARABODY
  21139. ></LN.LIST.NUM
  21140. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  21141. ></RBW-AUTOGEN
  21142. ></RBW-MARKER
  21143. ><RBW-PARABODY>Specify the appropriate property values, and then click OK.</RBW-PARABODY
  21144. ></LN.LIST.NUM
  21145. ></LABEL
  21146. ></SUBSECTION
  21147. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="scope of item"></RBW-IDXTERM
  21148. ><RBW-IDXTERM TERM1="item" TERM2="scope of"></RBW-IDXTERM
  21149. ><RBW-ANCHOR ID="18867"></RBW-ANCHOR
  21150. >Specifying Scope</SS.SUBSEC.HEAD
  21151. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21152. >Introduction</L.LABEL
  21153. ><B.BODY>An item’s scope defines its name space and where it is defined. You specify an item’s scope as Phase, System, or File.</B.BODY
  21154. ><B.BODY>Appendix B, Type and Scope of Diagram Components, lists the item type and initial scope of each diagram component. An item keeps its initial scope unless you change it.</B.BODY
  21155. ></LABEL
  21156. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21157. >Scope and item name space</L.LABEL
  21158. ><B.BODY><RBW-IDXTERM TERM1="scope of item"></RBW-IDXTERM
  21159. ><RBW-IDXTERM TERM1="item" TERM2="scope of"></RBW-IDXTERM
  21160. >Scope defines the range within which an item’s name must be unique.</B.BODY
  21161. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21162. ></RBW-AUTOGEN
  21163. ></RBW-MARKER
  21164. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Phase.</CX5FX5FBULLET.EMPHASIS
  21165. > The item’s name must be unique within the phase. For example, if class Member appears in two systems that are in the same phase, and both classes have scope Phase, then both systems are referring to the same item.</RBW-PARABODY
  21166. ></LB.LIST.BULLET
  21167. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21168. ></RBW-AUTOGEN
  21169. ></RBW-MARKER
  21170. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>System.</CX5FX5FBULLET.EMPHASIS
  21171. > The item’s name must be unique within the system. For example, if class Member appears in two systems that are in the same phase, and both classes have scope System, then the systems are referring to two different items.</RBW-PARABODY
  21172. ></LB.LIST.BULLET
  21173. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21174. ></RBW-AUTOGEN
  21175. ></RBW-MARKER
  21176. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>File.</CX5FX5FBULLET.EMPHASIS
  21177. > The item’s name must be unique within the file. For example, if association Rents appears in two CDs in the same system, and both associations have scope File, then the CDs are referring to two different items.</RBW-PARABODY
  21178. ></LB.LIST.BULLET
  21179. ></LABEL
  21180. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21181. >Scope and item definitions</L.LABEL
  21182. ><B.BODY>Scope also defines where an item’s definition is stored. (Qualified items always have the same scope as the owner item.)</B.BODY
  21183. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21184. ></RBW-AUTOGEN
  21185. ></RBW-MARKER
  21186. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Phase.</CX5FX5FBULLET.EMPHASIS
  21187. > An item that has scope Phase is defined in one system, but can be referred to by many systems. </RBW-PARABODY
  21188. ></LB.LIST.BULLET
  21189. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  21190. ></RBW-MARKER
  21191. ><RBW-PARABODY>The system in which you defined the item contains the item definition. In this system, ObjectTeam creates the item with scope <RBW-IDXTERM TERM1="phaseDef, item scope"></RBW-IDXTERM
  21192. >phaseDef.</RBW-PARABODY
  21193. ></LB2.LIST.BULLET.2
  21194. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  21195. ></RBW-MARKER
  21196. ><RBW-PARABODY>Any system that references the item contains a reference to the item. In these systems, ObjectTeam creates the item with scope <RBW-IDXTERM TERM1="phaseRef, item scope"></RBW-IDXTERM
  21197. >phaseRef.</RBW-PARABODY
  21198. ></LB2.LIST.BULLET.2
  21199. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21200. ></RBW-AUTOGEN
  21201. ></RBW-MARKER
  21202. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>System.</CX5FX5FBULLET.EMPHASIS
  21203. > The system in which you defined the item contains the item definition. ObjectTeam creates the item with scope <RBW-IDXTERM TERM1="system" TERM2="item scope"></RBW-IDXTERM
  21204. >System.</RBW-PARABODY
  21205. ></LB.LIST.BULLET
  21206. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21207. ></RBW-AUTOGEN
  21208. ></RBW-MARKER
  21209. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>File.</CX5FX5FBULLET.EMPHASIS
  21210. > The file in which you defined the item contains the item definition. ObjectTeam creates the item with scope <RBW-IDXTERM TERM1="file, item scope"></RBW-IDXTERM
  21211. >File.</RBW-PARABODY
  21212. ></LB.LIST.BULLET
  21213. ></LABEL
  21214. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21215. >Editing items<RBW-IDXTERM TERM1="item" TERM2="editing"></RBW-IDXTERM
  21216. ><RBW-IDXTERM TERM1="editing" TERM2="items"></RBW-IDXTERM
  21217. ></L.LABEL
  21218. ><B.BODY>Generally, if you can see an item in a diagram editor, and the diagram editor is not loaded read&truehy;only, you can edit the item. The following items are useful to keep in mind when editing:</B.BODY
  21219. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21220. ></RBW-AUTOGEN
  21221. ></RBW-MARKER
  21222. ><RBW-PARABODY>If an item has scope Phase or System, editing it can affect systems or diagrams other than the current diagram. To see the scope of an item, select the item and then select Edit | Scope. The Edit Scope dialog box indicates the current scope of the item.</RBW-PARABODY
  21223. ></LB.LIST.BULLET
  21224. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21225. ></RBW-AUTOGEN
  21226. ></RBW-MARKER
  21227. ><RBW-PARABODY>If a class has scope Phase, you can edit its name (Item | Change Name) and properties (Item | Edit Properties) from any system in which it appears. However, the class’s attributes and operations are only visible in, and can only be edited in, the system that contains the class definition.</RBW-PARABODY
  21228. ></LB.LIST.BULLET
  21229. ></LABEL
  21230. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21231. >Locating items</L.LABEL
  21232. ><B.BODY>On each level, at most one item with a given name and type can exist. The levels form a nested structure — file, system, phase — in which items can be found. Items are searched for (by name and type) starting at a given level. If the item is not present at that level, ObjectTeam searches the next highest level until a matching item is found, or the highest level is reached.</B.BODY
  21233. ></LABEL
  21234. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21235. >How to change an item’s scope<RBW-IDXTERM TERM1="item" TERM2="changing scope"></RBW-IDXTERM
  21236. ><RBW-IDXTERM TERM1="Edit Scope (Item menu)"></RBW-IDXTERM
  21237. ></L.LABEL
  21238. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  21239. ></RBW-AUTOGEN
  21240. >When you change an item’s scope, ObjectTeam updates the repository immediately. The item’s new scope remains even if you close the diagram without saving changes.</N.NOTE
  21241. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  21242. ></RBW-AUTOGEN
  21243. ></RBW-MARKER
  21244. ><RBW-PARABODY>To change an item’s scope:</RBW-PARABODY
  21245. ></P.PROCEDURE
  21246. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  21247. ></RBW-AUTOGEN
  21248. ></RBW-MARKER
  21249. ><RBW-PARABODY>In the diagram, select the object.</RBW-PARABODY
  21250. ></LN.LIST.NUM
  21251. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  21252. ></RBW-AUTOGEN
  21253. ></RBW-MARKER
  21254. ><RBW-PARABODY>Select Item | Edit Scope.</RBW-PARABODY
  21255. ></LN.LIST.NUM
  21256. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  21257. ></RBW-AUTOGEN
  21258. >If more than one item is associated with the selected object, the Items dialog box appears, as shown in the following figure. Select the item and click OK.</N2.NOTE.2
  21259. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00107.unk" origfile="pics/items_db.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  21260. ></FA2.FIGURE.ANCHOR.2
  21261. ><LR.LIST.RESULT>The Edit Scope dialog box appears (the options that appear depend on the type and scope of the selected item).</LR.LIST.RESULT
  21262. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00108.unk" origfile="pics/editscop.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  21263. ></FA2.FIGURE.ANCHOR.2
  21264. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  21265. ></RBW-AUTOGEN
  21266. ></RBW-MARKER
  21267. ><RBW-PARABODY>Select an option, and then click OK.</RBW-PARABODY
  21268. ></LN.LIST.NUM
  21269. ><LT.LIST.TEXT>An item’s scope determines where its definition is stored. Changing its scope can change its definition. Use the options to determine the item definition for the new scope.</LT.LIST.TEXT
  21270. ></LABEL
  21271. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21272. >Changing the scope downwards</L.LABEL
  21273. ><B.BODY>Changing the scope <CX5FX5FEMPHASIS>downward</CX5FX5FEMPHASIS
  21274. > means changing it from a higher level to a lower level, for example, from Phase to System. Typically, when you change the scope downward, you <CX5FX5FTITLE>copy</CX5FX5FTITLE
  21275. > the item definition. The item definition also remains on the higher level. The Edit Scope dialog box, presents the following options:</B.BODY
  21276. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="396p"><COLSPEC COLNAME="2" COLWIDTH="144p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  21277. ></ENTRY
  21278. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Scope Change</CELLHEADING
  21279. ></ENTRY
  21280. ></RBW-ROW
  21281. ></THEAD
  21282. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Create empty definition on File/System level</CX5FX5FFILE.NAME
  21283. > </CELLBODY
  21284. ><CELLBODY>Create a new item definition, with default property values, in the current file or system.</CELLBODY
  21285. ></ENTRY
  21286. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System to File</CELLBODY
  21287. ><CELLBODY>Phase to File </CELLBODY
  21288. ><CELLBODY>Phase to System</CELLBODY
  21289. ></ENTRY
  21290. ></RBW-ROW
  21291. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Copy definition to File/System level</CX5FX5FFILE.NAME
  21292. > </CELLBODY
  21293. ><CELLBODY>Copy the existing item definition, including its property values, to the current file or system.</CELLBODY
  21294. ></ENTRY
  21295. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System to File</CELLBODY
  21296. ><CELLBODY>Phase to File</CELLBODY
  21297. ><CELLBODY>Phase(Ref) to System</CELLBODY
  21298. ></ENTRY
  21299. ></RBW-ROW
  21300. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Restrict definition to System level</CX5FX5FFILE.NAME
  21301. > </CELLBODY
  21302. ><CELLBODY>Item is defined in the current system. Do not modify item definition; instead change scope.</CELLBODY
  21303. ></ENTRY
  21304. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase(Def) to System</CELLBODY
  21305. ></ENTRY
  21306. ></RBW-ROW
  21307. ></TBODY
  21308. ></TGROUP
  21309. ><RBW-ICONIZE></RBW-TABLE
  21310. ></LABEL
  21311. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21312. >Changing the scope upward</L.LABEL
  21313. ><B.BODY>Changing the scope <CX5FX5FEMPHASIS>upward</CX5FX5FEMPHASIS
  21314. > means changing it from a lower level to a higher level; for example, from System to Phase. Typically, when you change the scope upward, you <CX5FX5FTITLE>move</CX5FX5FTITLE
  21315. > the item definition. The Edit Scope dialog box presents the following options:</B.BODY
  21316. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="396p"><COLSPEC COLNAME="2" COLWIDTH="144p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  21317. ></ENTRY
  21318. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Scope Change</CELLHEADING
  21319. ></ENTRY
  21320. ></RBW-ROW
  21321. ></THEAD
  21322. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Export definition to System/Phase level</CX5FX5FFILE.NAME
  21323. > </CELLBODY
  21324. ><CELLBODY>Move the existing item definition, including its property values, to the current system. The item definition in the file is deleted.</CELLBODY
  21325. ></ENTRY
  21326. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>File to System</CELLBODY
  21327. ><CELLBODY>File to Phase(Def)</CELLBODY
  21328. ></ENTRY
  21329. ></RBW-ROW
  21330. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Make definition available on Phase level</CX5FX5FFILE.NAME
  21331. > </CELLBODY
  21332. ><CELLBODY>Item is defined in the current system. Do not modify item definition; instead change scope.</CELLBODY
  21333. ></ENTRY
  21334. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System to Phase(Def)</CELLBODY
  21335. ></ENTRY
  21336. ></RBW-ROW
  21337. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Refer to (not yet existing definition) on System level</CX5FX5FFILE.NAME
  21338. > </CELLBODY
  21339. ><CELLBODY>Create a new item definition, with default property values, in the current system. The item definition in the file is deleted.</CELLBODY
  21340. ></ENTRY
  21341. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>File to System</CELLBODY
  21342. ></ENTRY
  21343. ></RBW-ROW
  21344. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Refer to (not yet existing definition) on Phase level</CX5FX5FFILE.NAME
  21345. > </CELLBODY
  21346. ><CELLBODY>The item definition in the file is deleted. The item is undefined.</CELLBODY
  21347. ></ENTRY
  21348. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>File to Phase(Ref)</CELLBODY
  21349. ></ENTRY
  21350. ></RBW-ROW
  21351. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>Refer to definition on Phase level</CX5FX5FFILE.NAME
  21352. > </CELLBODY
  21353. ><CELLBODY>The item definition in the file is deleted. The item definition exists in another system.</CELLBODY
  21354. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  21355. > If the item is a class and the system contains the CDM, the item definition cannot be deleted; the scope cannot be changed.</CELLBODY
  21356. ></ENTRY
  21357. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System to Phase(Ref)</CELLBODY
  21358. ></ENTRY
  21359. ></RBW-ROW
  21360. ></TBODY
  21361. ></TGROUP
  21362. ><RBW-ICONIZE></RBW-TABLE
  21363. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  21364. ></RBW-AUTOGEN
  21365. >If you attempt to create an item definition in a system that already contains a definition for that item, an error message appears. You must delete the existing definition before you can create a new one. </N.NOTE
  21366. ></LABEL
  21367. ></SUBSECTION
  21368. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21274"></RBW-ANCHOR
  21369. >Removing and Moving Items</SS.SUBSEC.HEAD
  21370. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21371. >Introduction</L.LABEL
  21372. ><B.BODY>This section describes how to remove items that are no longer referenced and how to move item definitions from one system to another.</B.BODY
  21373. ></LABEL
  21374. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21375. >Removing unreferenced items<RBW-IDXTERM TERM1="unreferenced item, deleting"></RBW-IDXTERM
  21376. ><RBW-IDXTERM TERM1="item" TERM2="unreferenced"></RBW-IDXTERM
  21377. ><RBW-IDXTERM TERM1="deleting" TERM2="unreferenced items"></RBW-IDXTERM
  21378. ><RBW-IDXTERM TERM1="Delete Unreferenced Items (Utilities menu)"></RBW-IDXTERM
  21379. ></L.LABEL
  21380. ><B.BODY>When you name a diagram component, you create an item. If you delete the diagram symbol, the item remains in the repository and can be used in other diagrams. If you do not use the item, removing it from the repository improves performance and avoids unexpected name conflicts.</B.BODY
  21381. ></LABEL
  21382. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21383. >How to remove unreferenced items</L.LABEL
  21384. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  21385. ></RBW-AUTOGEN
  21386. ></RBW-MARKER
  21387. ><RBW-PARABODY>To remove unreferenced items:</RBW-PARABODY
  21388. ></P.PROCEDURE
  21389. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  21390. ></RBW-AUTOGEN
  21391. ></RBW-MARKER
  21392. ><RBW-PARABODY>In the Browser, move to the appropriate level.</RBW-PARABODY
  21393. ></LN.LIST.NUM
  21394. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  21395. ></RBW-MARKER
  21396. ><RBW-PARABODY>To remove unreferenced items from selected systems, move to Phase level.</RBW-PARABODY
  21397. ></LB2.LIST.BULLET.2
  21398. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  21399. ></RBW-MARKER
  21400. ><RBW-PARABODY>To remove unreferenced items from selected files, move to System level.</RBW-PARABODY
  21401. ></LB2.LIST.BULLET.2
  21402. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  21403. ></RBW-AUTOGEN
  21404. ></RBW-MARKER
  21405. ><RBW-PARABODY>Select the systems or files from which you want to remove unreferenced items.</RBW-PARABODY
  21406. ></LN.LIST.NUM
  21407. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  21408. ></RBW-AUTOGEN
  21409. ></RBW-MARKER
  21410. ><RBW-PARABODY>Select Utilities | Delete Unreferenced Items.</RBW-PARABODY
  21411. ></LN.LIST.NUM
  21412. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21413. >Also available from diagram editors</SL.SUBLABEL
  21414. ><B.BODY>Use Utilities | Delete Unreferenced Items to remove unreferenced items from the current diagram file.</B.BODY
  21415. ></LABEL
  21416. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21417. >To move an item definition<RBW-IDXTERM TERM1="item" TERM2="moving definition of"></RBW-IDXTERM
  21418. ><RBW-IDXTERM TERM1="Move Definition (Utilities menu)"></RBW-IDXTERM
  21419. ><RBW-IDXTERM TERM1="moving" TERM2="defined items"></RBW-IDXTERM
  21420. ></L.LABEL
  21421. ><B.BODY>You can move the definition of any item that has scope phaseDef from one system to another.</B.BODY
  21422. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  21423. ></RBW-AUTOGEN
  21424. ></RBW-MARKER
  21425. ><RBW-PARABODY>To move an item definition:</RBW-PARABODY
  21426. ></P.PROCEDURE
  21427. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  21428. ></RBW-AUTOGEN
  21429. ></RBW-MARKER
  21430. ><RBW-PARABODY>In the navigation area of the Browser, unfold the system that contains the item you are interested in.</RBW-PARABODY
  21431. ></LN.LIST.NUM
  21432. ><LR.LIST.RESULT>The pseudo object <defined items> appears as one of the child objects of the selected system.</LR.LIST.RESULT
  21433. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  21434. ></RBW-AUTOGEN
  21435. ></RBW-MARKER
  21436. ><RBW-PARABODY>Open the pseudo object <defined items>.</RBW-PARABODY
  21437. ></LN.LIST.NUM
  21438. ><LR.LIST.RESULT>The defined items appear in the information area.</LR.LIST.RESULT
  21439. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  21440. ></RBW-AUTOGEN
  21441. ></RBW-MARKER
  21442. ><RBW-PARABODY>Select the items you want to move.</RBW-PARABODY
  21443. ></LN.LIST.NUM
  21444. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  21445. ></RBW-AUTOGEN
  21446. >You can only select items with scope phaseDef.</N2.NOTE.2
  21447. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  21448. ></RBW-AUTOGEN
  21449. ></RBW-MARKER
  21450. ><RBW-PARABODY>Select Utilities | Move Definition.</RBW-PARABODY
  21451. ></LN.LIST.NUM
  21452. ><LR.LIST.RESULT>The Move Definition dialog box appears listing all systems in the current phase.</LR.LIST.RESULT
  21453. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00109.unk" origfile="pics/moveitem.gif" origtype="X" origdoc="../../sources/mg/dgmedit.fm5.mif"></RBW-GRAPHIC
  21454. ></FA2.FIGURE.ANCHOR.2
  21455. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  21456. ></RBW-AUTOGEN
  21457. ></RBW-MARKER
  21458. ><RBW-PARABODY>Select the system that you want to move the selected items to, and then click OK.</RBW-PARABODY
  21459. ></LN.LIST.NUM
  21460. ><LR.LIST.RESULT>The item definitions are moved to the new system. If you move an item of type <CX5FX5FPROCEDURE.NAME>cl</CX5FX5FPROCEDURE.NAME
  21461. >, the corresponding CDM is moved to the new system also.</LR.LIST.RESULT
  21462. ><B.BODY></B.BODY
  21463. ><RBWAUTO-0001></RBWAUTO-0001
  21464. ><!--
  21465.  
  21466.  
  21467.  
  21468.  
  21469.  
  21470. CONVERTING SOURCE FILE ../../sources/mg/dgmsuml.fm5.mif
  21471.  
  21472.  
  21473. --><B.BODY></B.BODY
  21474. ><B.BODY></B.BODY
  21475. ><B.BODY></B.BODY
  21476. ><B.BODY></B.BODY
  21477. ><B.BODY></B.BODY
  21478. ></LABEL
  21479. ></SUBSECTION
  21480. ></SECTION
  21481. ></CHAPTER
  21482. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  21483. ></RBW-AUTOGEN
  21484. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  21485. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  21486. ></RBW-SYSOBJ
  21487. ><RBW-ANCHOR ID="25681"></RBW-ANCHOR
  21488. >Exploring Each Diagram</C.CHAPTER.HEAD
  21489. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21490. >Introduction</L.LABEL
  21491. ><B.BODY>This chapter describes each diagram, its purpose, and the symbols that it uses. The diagram notation is based on the Unified Modeling Language (UML) for Object&truehy;Oriented Development, developed by Grady Booch, Ivar Jacobson, and James Rumbaugh.<RBW-IDXTERM TERM1="UML"></RBW-IDXTERM
  21492. ><RBW-IDXTERM TERM1="Unified Modeling Language"></RBW-IDXTERM
  21493. ></B.BODY
  21494. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21495. >OMT support</SL.SUBLABEL
  21496. ><B.BODY>By default, ObjectTeam diagrams use UML notation. However, ObjectTeam also provides support for OMT notation, as described in <RBW-XREF REFID="39383" TYPE="XREF-TEXTCOPY">Appendix A, OMT Support</RBW-XREF
  21497. >.</B.BODY
  21498. ></LABEL
  21499. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21500. >For more information</L.LABEL
  21501. ><B.BODY>The following chapters provide additional diagram information:</B.BODY
  21502. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21503. ></RBW-AUTOGEN
  21504. ></RBW-MARKER
  21505. ><RBW-PARABODY><RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  21506. >, describes how to edit diagrams. The editing operations are similar for all diagrams.</RBW-PARABODY
  21507. ></LB.LIST.BULLET
  21508. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21509. ></RBW-AUTOGEN
  21510. ></RBW-MARKER
  21511. ><RBW-PARABODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  21512. ><CX5FX5FTITLE></CX5FX5FTITLE
  21513. > describes how to customize the diagram editors.</RBW-PARABODY
  21514. ></LB.LIST.BULLET
  21515. ></LABEL
  21516. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21517. ><RBW-ANCHOR ID="25359"></RBW-ANCHOR
  21518. >Relationships among diagrams</L.LABEL
  21519. ><B.BODY>In ObjectTeam, the components in one diagram are often related to the components in another; for example, an actor in a UCD is a class in a CD. This relationship has two consequences for your work in ObjectTeam:</B.BODY
  21520. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21521. ></RBW-AUTOGEN
  21522. ></RBW-MARKER
  21523. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Navigation.</CX5FX5FBULLET.EMPHASIS
  21524. > ObjectTeam provides special navigation paths that allow you to move from a component in one diagram to a related diagram. See <RBW-XREF REFID="33913" TYPE="XREF-TEXTCOPY">Navigating Between Diagrams on page 3–7</RBW-XREF
  21525. > for more information.</RBW-PARABODY
  21526. ></LB.LIST.BULLET
  21527. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21528. ></RBW-AUTOGEN
  21529. ></RBW-MARKER
  21530. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Semantic checking.</CX5FX5FBULLET.EMPHASIS
  21531. > The following table shows diagram objects that are semantically related. The Check utility ensures that your ObjectTeam model adheres to these semantics. For a complete list of what is checked on each diagram, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  21532. ><CX5FX5FTITLE></CX5FX5FTITLE
  21533. >.</RBW-PARABODY
  21534. ></LB.LIST.BULLET
  21535. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="72p"><COLSPEC COLNAME="2" COLWIDTH="94p"><COLSPEC COLNAME="3" COLWIDTH="82p"><COLSPEC COLNAME="4" COLWIDTH="106p"><COLSPEC COLNAME="5" COLWIDTH="144p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD</CELLHEADING
  21536. ></ENTRY
  21537. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>COD</CELLHEADING
  21538. ></ENTRY
  21539. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>SD</CELLHEADING
  21540. ></ENTRY
  21541. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>STD</CELLHEADING
  21542. ></ENTRY
  21543. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>UCD</CELLHEADING
  21544. ></ENTRY
  21545. ></RBW-ROW
  21546. ></THEAD
  21547. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  21548. ></ENTRY
  21549. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21550. ></ENTRY
  21551. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>object</CELLBODY
  21552. ></ENTRY
  21553. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  21554. ></ENTRY
  21555. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21556. ></ENTRY
  21557. ></RBW-ROW
  21558. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  21559. ></ENTRY
  21560. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>actor, instance type</CELLBODY
  21561. ></ENTRY
  21562. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>initiator</CELLBODY
  21563. ></ENTRY
  21564. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  21565. ></ENTRY
  21566. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>actor</CELLBODY
  21567. ></ENTRY
  21568. ></RBW-ROW
  21569. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  21570. ></ENTRY
  21571. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>message flow</CELLBODY
  21572. ></ENTRY
  21573. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>message flow</CELLBODY
  21574. ></ENTRY
  21575. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>transition or event message</CELLBODY
  21576. ></ENTRY
  21577. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>communication association</CELLBODY
  21578. ></ENTRY
  21579. ></RBW-ROW
  21580. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21581. ></ENTRY
  21582. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21583. ></ENTRY
  21584. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualified SD</CELLBODY
  21585. ></ENTRY
  21586. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21587. ></ENTRY
  21588. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>use case</CELLBODY
  21589. ></ENTRY
  21590. ></RBW-ROW
  21591. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  21592. ></ENTRY
  21593. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21594. ></ENTRY
  21595. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21596. ></ENTRY
  21597. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21598. ></ENTRY
  21599. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  21600. ></ENTRY
  21601. ></RBW-ROW
  21602. ></TBODY
  21603. ></TGROUP
  21604. ></RBW-TABLE
  21605. ></LABEL
  21606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21607. >In this chapter</L.LABEL
  21608. ><B.BODY>This chapter contains the following sections:</B.BODY
  21609. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  21610. ></ENTRY
  21611. ></RBW-ROW
  21612. ></THEAD
  21613. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19294" TYPE="XREF-TEXTCOPY">Class Diagram&rbwtab;4–49</RBW-XREF
  21614. ></SB.SECTION.BLOCK.TABLE
  21615. ></ENTRY
  21616. ></RBW-ROW
  21617. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13208" TYPE="XREF-TEXTCOPY">Collaboration Diagram&rbwtab;4–61</RBW-XREF
  21618. ></SB.SECTION.BLOCK.TABLE
  21619. ></ENTRY
  21620. ></RBW-ROW
  21621. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12305" TYPE="XREF-TEXTCOPY">Sequence Diagram&rbwtab;4–69</RBW-XREF
  21622. ></SB.SECTION.BLOCK.TABLE
  21623. ></ENTRY
  21624. ></RBW-ROW
  21625. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34271" TYPE="XREF-TEXTCOPY">State Diagram&rbwtab;4–75</RBW-XREF
  21626. ></SB.SECTION.BLOCK.TABLE
  21627. ></ENTRY
  21628. ></RBW-ROW
  21629. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35633" TYPE="XREF-TEXTCOPY">Use Case Diagram&rbwtab;4–82</RBW-XREF
  21630. ></SB.SECTION.BLOCK.TABLE
  21631. ></ENTRY
  21632. ></RBW-ROW
  21633. ></TBODY
  21634. ></TGROUP
  21635. ></RBW-TABLE
  21636. ></LABEL
  21637. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="19294"></RBW-ANCHOR
  21638. >Class Diagram</S.SECTION.HEAD
  21639. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21640. >Purpose</L.LABEL
  21641. ><B.BODY>The Class Diagram (CD) defines the objects in a system and describes their structural components. The following points are important for the objects, or classes, in class diagrams:</B.BODY
  21642. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21643. ></RBW-AUTOGEN
  21644. ></RBW-MARKER
  21645. ><RBW-PARABODY>Their identity</RBW-PARABODY
  21646. ></LB.LIST.BULLET
  21647. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21648. ></RBW-AUTOGEN
  21649. ></RBW-MARKER
  21650. ><RBW-PARABODY>Their relationships to other objects</RBW-PARABODY
  21651. ></LB.LIST.BULLET
  21652. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21653. ></RBW-AUTOGEN
  21654. ></RBW-MARKER
  21655. ><RBW-PARABODY>Their characteristics (attributes)</RBW-PARABODY
  21656. ></LB.LIST.BULLET
  21657. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21658. ></RBW-AUTOGEN
  21659. ></RBW-MARKER
  21660. ><RBW-PARABODY>What can be done to them, and what they can do (their operations)</RBW-PARABODY
  21661. ></LB.LIST.BULLET
  21662. ></LABEL
  21663. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21664. >Example class diagram</L.LABEL
  21665. ><B.BODY>The following illustration shows a class diagram.</B.BODY
  21666. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00110.unk" origfile="pics/cad_umlx.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21667. ></FA.FIGURE.ANCHOR
  21668. ></LABEL
  21669. ><SUBSECTION><SS.SUBSEC.HEAD>Symbols<RBW-IDXTERM TERM1="Class Association Diagram" TERM2="symbols in"></RBW-IDXTERM
  21670. ><RBW-IDXTERM TERM1="symbols" TERM2="in CAD"></RBW-IDXTERM
  21671. ></SS.SUBSEC.HEAD
  21672. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21673. >Introduction</L.LABEL
  21674. ><B.BODY>This section describes the symbols used in the class diagram. The following table shows the symbols as they appear in the control panel.</B.BODY
  21675. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00111.unk" origfile="pics/cd_symbs.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21676. ></FA.FIGURE.ANCHOR
  21677. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  21678. ></RBW-AUTOGEN
  21679. >The Vertex, Select, Note, and Note connector symbols are common to all diagrams. They are described in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  21680. >.</N.NOTE
  21681. ></LABEL
  21682. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21683. ><RBW-ANCHOR ID="39851"></RBW-ANCHOR
  21684. >Class<RBW-IDXTERM TERM1="class" TERM2="symbol in CAD"></RBW-IDXTERM
  21685. ></L.LABEL
  21686. ><B.BODY>A class is a group of objects with similar properties (attributes), common behavior (operations), common relationships to other objects, and common semantics. <RBW-IDXTERM TERM1="abstract class"></RBW-IDXTERM
  21687. ><RBW-IDXTERM TERM1="concrete class"></RBW-IDXTERM
  21688. ><RBW-IDXTERM TERM1="class" TERM2="concrete"></RBW-IDXTERM
  21689. ><RBW-IDXTERM TERM1="class" TERM2="abstract"></RBW-IDXTERM
  21690. >Objects in a class have the same attributes and behavior patterns. Most objects distinguish themselves through differences in their attribute values and relationships to other objects.</B.BODY
  21691. ><B.BODY>You enter the class name in the top text area of the class symbol:</B.BODY
  21692. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00112.tif" origseq="30" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21693. ></FA.FIGURE.ANCHOR
  21694. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21695. >Derived class</SL.SUBLABEL
  21696. ><B.BODY>You can indicate a derived class by preceding the name with a slash:</B.BODY
  21697. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00113.tif" origseq="98" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21698. ></FA.FIGURE.ANCHOR
  21699. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21700. >Attributes</SL.SUBLABEL
  21701. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="creating"></RBW-IDXTERM
  21702. >Attributes describe an object’s characteristics. You specify attributes in the middle text area of the class symbol. Use the following syntax to specify a data attribute:</B.BODY
  21703. ><E.EXAMPLE>[ $ | / | *]attr&truehy;name:data&truehy;type = initial&truehy;value</E.EXAMPLE
  21704. ><B.BODY>where</B.BODY
  21705. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21706. ></RBW-AUTOGEN
  21707. ></RBW-MARKER
  21708. ><RBW-PARABODY>$ indicates a class (static) attribute — a value that applies to the entire class of objects, rather than to each instance.</RBW-PARABODY
  21709. ></LB.LIST.BULLET
  21710. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21711. ></RBW-AUTOGEN
  21712. ></RBW-MARKER
  21713. ><RBW-PARABODY>/ indicates a derived attribute — a value that is the result of a computation.</RBW-PARABODY
  21714. ></LB.LIST.BULLET
  21715. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21716. ></RBW-AUTOGEN
  21717. ></RBW-MARKER
  21718. ><RBW-PARABODY>* indicates an attribute that should be part of the primary key. This is only meaningful if your target language supports persistency. For more information, see the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  21719. ><CX5FX5FTITLE></CX5FX5FTITLE
  21720. > for your target language.</RBW-PARABODY
  21721. ></LB.LIST.BULLET
  21722. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21723. ></RBW-AUTOGEN
  21724. ></RBW-MARKER
  21725. ><RBW-PARABODY><CX5FX5FVARIABLE>data&truehy;type</CX5FX5FVARIABLE
  21726. > is a standard type or a user&truehy;defined type. For more information, see the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  21727. ><CX5FX5FTITLE></CX5FX5FTITLE
  21728. > for your target language.</RBW-PARABODY
  21729. ></LB.LIST.BULLET
  21730. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21731. ></RBW-AUTOGEN
  21732. ></RBW-MARKER
  21733. ><RBW-PARABODY><CX5FX5FVARIABLE>initial&truehy;value</CX5FX5FVARIABLE
  21734. > is the default value of the attribute.</RBW-PARABODY
  21735. ></LB.LIST.BULLET
  21736. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00114.tif" origseq="107" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21737. ></FA.FIGURE.ANCHOR
  21738. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21739. >Operations</SL.SUBLABEL
  21740. ><B.BODY><RBW-IDXTERM TERM1="operation" TERM2="creating"></RBW-IDXTERM
  21741. >Operations are the actions that can be carried out on or by the objects. (See also <RBW-XREF REFID="34891" TYPE="XREF-TEXTCOPY">Propagation</RBW-XREF
  21742. >.) You specify operations in the bottom text area of the class symbol. Use the following syntax to specify an operation:</B.BODY
  21743. ><E.EXAMPLE>[+|#|&truehy;|$]operation&truehy;name[(parameter&truehy;list)][:return&truehy;type] [{abstract}]</E.EXAMPLE
  21744. ><B.BODY>where</B.BODY
  21745. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21746. ></RBW-AUTOGEN
  21747. ></RBW-MARKER
  21748. ><RBW-PARABODY>+ indicates a public operation</RBW-PARABODY
  21749. ></LB.LIST.BULLET
  21750. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21751. ></RBW-AUTOGEN
  21752. ></RBW-MARKER
  21753. ><RBW-PARABODY># indicates a protected operation</RBW-PARABODY
  21754. ></LB.LIST.BULLET
  21755. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21756. ></RBW-AUTOGEN
  21757. ></RBW-MARKER
  21758. ><RBW-PARABODY>&truehy; indicates a private operation</RBW-PARABODY
  21759. ></LB.LIST.BULLET
  21760. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21761. ></RBW-AUTOGEN
  21762. ></RBW-MARKER
  21763. ><RBW-PARABODY>$ indicates a class (static) operation — an operation that applies to the entire class of objects, rather than to one instance</RBW-PARABODY
  21764. ></LB.LIST.BULLET
  21765. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21766. ></RBW-AUTOGEN
  21767. ></RBW-MARKER
  21768. ><RBW-PARABODY>+$ indicates a class public operation</RBW-PARABODY
  21769. ></LB.LIST.BULLET
  21770. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21771. ></RBW-AUTOGEN
  21772. ></RBW-MARKER
  21773. ><RBW-PARABODY><CX5FX5FVARIABLE>parameter&truehy;list</CX5FX5FVARIABLE
  21774. > is a comma&truehy;separated list of zero or more parameters. Use the following syntax to specify each parameter:</RBW-PARABODY
  21775. ></LB.LIST.BULLET
  21776. ><E.EXAMPLE>parameter&truehy;name[:data&truehy;type]</E.EXAMPLE
  21777. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21778. ></RBW-AUTOGEN
  21779. ></RBW-MARKER
  21780. ><RBW-PARABODY><CX5FX5FVARIABLE>return&truehy;type</CX5FX5FVARIABLE
  21781. > is the data type of value returned by the operation.</RBW-PARABODY
  21782. ></LB.LIST.BULLET
  21783. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21784. ></RBW-AUTOGEN
  21785. ></RBW-MARKER
  21786. ><RBW-PARABODY>{abstract} indicates an abstract operation, which is an operation defined, but not implemented by, an abstract class. The operation must be implemented by all concrete descendant classes.</RBW-PARABODY
  21787. ></LB.LIST.BULLET
  21788. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00115.tif" origseq="32" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21789. ></FA.FIGURE.ANCHOR
  21790. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21791. ><RBW-IDXTERM TERM1="Class Definition Matrix" TERM2="and Class Association Diagram"></RBW-IDXTERM
  21792. ><RBW-IDXTERM TERM1="Class Association Diagram" TERM2="and Class Definition Matrix"></RBW-IDXTERM
  21793. >Class Definition Matrices (CDMs)</SL.SUBLABEL
  21794. ><B.BODY>When you specify the first attribute or operation for a class, ObjectTeam creates a Class Definition Matrix (CDM) for the class. The CDM appears in the Navigation and Information areas, but cannot be edited directly. When you open a CDM, ObjectTeam starts a Class Diagram editor, opening the Class Diagram that contains the class defined by the CDM. If the class appears in more than one Class Diagram, ObjectTeam prompts you to select the one that you want to open.</B.BODY
  21795. ></LABEL
  21796. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21797. ><RBW-ANCHOR ID="19961"></RBW-ANCHOR
  21798. >Association<RBW-IDXTERM TERM1="association" TERM2="symbol in CAD"></RBW-IDXTERM
  21799. ><RBW-IDXTERM TERM1="relationship" TERM2="association"></RBW-IDXTERM
  21800. >s</L.LABEL
  21801. ><B.BODY>Associations describe the relationships among objects. An association is a group of links in which each a link is a physical or conceptual connection between instances of an object. An association in a Class Diagram describes a set of potential links in the same way that a class describes a set of potential objects.</B.BODY
  21802. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00116.tif" origseq="83" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21803. ></FA.FIGURE.ANCHOR
  21804. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21805. >Role names</SL.SUBLABEL
  21806. ><BI.BODY.INTRO>An association is inherently bidirectional; thus, you can specify a role name for each end of the association. As the following figure shows, the role name at the far end of an association describes the association from the class at the near end to the class at the far end. In addition to the role names, you can also specify a name for the association.</BI.BODY.INTRO
  21807. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21808. ><RBW-IDXTERM TERM1="multiplicity"></RBW-IDXTERM
  21809. ><RBW-IDXTERM TERM1="association" TERM2="multiplicity of"></RBW-IDXTERM
  21810. ><RBW-IDXTERM TERM1="class" TERM2="associations between"></RBW-IDXTERM
  21811. >Multiplicity</SL.SUBLABEL
  21812. ><BI.BODY.INTRO>Multiplicity is specified at both ends of the association. The multiplicity at the far end of an association specifies how many instances of the class at the far end of the association can relate to a single instance of the class at the near end of the association. In the previous figure, each instance of class&truehy;A can be related to many instances of class&truehy;B; each instance of class&truehy;B must be related to exactly one instance of class&truehy;A.</BI.BODY.INTRO
  21813. ><B.BODY>The symbols in the control panel provide three multiplicity values: mandatory (1), optional (0..1), and many (*). After adding an association to the diagram, you can edit the multiplicities as needed. For example, you might edit a multiplicity value to indicate a multiplicity of 2 or more (2..*).</B.BODY
  21814. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00117.tif" origseq="23" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21815. ></FA.FIGURE.ANCHOR
  21816. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21817. >How to draw an association</SL.SUBLABEL
  21818. ><B.BODY>To draw an association:</B.BODY
  21819. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  21820. ></RBW-AUTOGEN
  21821. ></RBW-MARKER
  21822. ><RBW-PARABODY>In the diagram, create the two classes involved in the association.</RBW-PARABODY
  21823. ></LN.LIST.NUM
  21824. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  21825. ></RBW-AUTOGEN
  21826. ></RBW-MARKER
  21827. ><RBW-PARABODY>In the control panel, select the multiplicity for the beginning of the association, the multiplicity for the end of the association, and the association symbol. For example, to create a one&truehy;to&truehy;many association, select the Begin Mandatory Association symbol, the End Many Association, and the Association symbol.</RBW-PARABODY
  21828. ></LN.LIST.NUM
  21829. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  21830. ></RBW-AUTOGEN
  21831. ></RBW-MARKER
  21832. ><RBW-PARABODY>Click the first class involved in the association, and then click the second class.</RBW-PARABODY
  21833. ></LN.LIST.NUM
  21834. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  21835. ></RBW-AUTOGEN
  21836. ></RBW-MARKER
  21837. ><RBW-PARABODY>If necessary, edit the multiplicities of the association.</RBW-PARABODY
  21838. ></LN.LIST.NUM
  21839. ></LABEL
  21840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21841. ><RBW-ANCHOR ID="40661"></RBW-ANCHOR
  21842. >N&truehy;ary associations</L.LABEL
  21843. ><B.BODY>Most associations between three or more classes are not true n&truehy;ary associations. You can usually decompose these apparent n&truehy;ary associations into more meaningful and correct binary associations or phrase them as qualified associations.</B.BODY
  21844. ><B.BODY>True n&truehy;ary associations represent associations between three or more classes. The n&truehy;ary association is an atomic unit and cannot be subdivided into binary associations without losing information. </B.BODY
  21845. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00118.tif" origseq="21" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21846. ></FA.FIGURE.ANCHOR
  21847. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21848. >How to draw an n&truehy;ary association</SL.SUBLABEL
  21849. ><B.BODY>To draw an n&truehy;ary association:</B.BODY
  21850. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  21851. ></RBW-AUTOGEN
  21852. ></RBW-MARKER
  21853. ><RBW-PARABODY>In the diagram, create the classes involved in the association.</RBW-PARABODY
  21854. ></LN.LIST.NUM
  21855. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  21856. ></RBW-AUTOGEN
  21857. ></RBW-MARKER
  21858. ><RBW-PARABODY>In the control panel, click the N&truehy;ary Association symbol button.</RBW-PARABODY
  21859. ></LN.LIST.NUM
  21860. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  21861. ></RBW-AUTOGEN
  21862. ></RBW-MARKER
  21863. ><RBW-PARABODY>Click in the diagram where you want to place the symbol.</RBW-PARABODY
  21864. ></LN.LIST.NUM
  21865. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  21866. ></RBW-AUTOGEN
  21867. ></RBW-MARKER
  21868. ><RBW-PARABODY>In the control panel, click the N&truehy;ary Connector symbol button.</RBW-PARABODY
  21869. ></LN.LIST.NUM
  21870. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  21871. ></RBW-AUTOGEN
  21872. ></RBW-MARKER
  21873. ><RBW-PARABODY>Click a class involved in the n&truehy;ary association, and then click the n&truehy;ary association symbol.</RBW-PARABODY
  21874. ></LN.LIST.NUM
  21875. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  21876. ></RBW-AUTOGEN
  21877. ></RBW-MARKER
  21878. ><RBW-PARABODY>Repeat step 5 for each class in the n&truehy;ary association.</RBW-PARABODY
  21879. ></LN.LIST.NUM
  21880. ></LABEL
  21881. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21882. >More classes<RBW-IDXTERM TERM1="more classes" TERM2="symbol in CAD"></RBW-IDXTERM
  21883. ></L.LABEL
  21884. ><BI.BODY.INTRO>A more&truehy;classes symbol indicates that additional classes exist, but are not shown. This symbol cannot have a name.</BI.BODY.INTRO
  21885. ></LABEL
  21886. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21887. >Aggregation<RBW-IDXTERM TERM1="aggregation" TERM2="symbol in CAD"></RBW-IDXTERM
  21888. ><RBW-IDXTERM TERM1="class" TERM2="aggregation of"></RBW-IDXTERM
  21889. ><RBW-IDXTERM TERM1="relationship" TERM2="aggregation"></RBW-IDXTERM
  21890. ></L.LABEL
  21891. ><BI.BODY.INTRO>An aggregation is a relationship in which objects that represent the components of something are associated with an object that represents the entire assembly. For example, a car could be modeled as an aggregate of its parts.</BI.BODY.INTRO
  21892. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00119.tif" origseq="20" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21893. ></FA.FIGURE.ANCHOR
  21894. ><B.BODY>Aggregation is a special, strong form of association. (If two objects are bound tightly by a part&truehy;whole relationship, you show the relationship as an aggregation. If two objects are usually considered as independent, even though they may often be linked, you show the relationship as an association.) Aggregation adds semantic connotations in certain cases. In an aggregation, an aggregate object is made of components. Components are part of the aggregate. Significant properties of aggregation are transitivity, antisymmetry and propagation.</B.BODY
  21895. ></LABEL
  21896. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21897. >Qualified association</L.LABEL
  21898. ><B.BODY><RBW-IDXTERM TERM1="qualified association" TERM2="symbol in CAD"></RBW-IDXTERM
  21899. ><RBW-IDXTERM TERM1="association" TERM2="qualified"></RBW-IDXTERM
  21900. ><RBW-IDXTERM TERM1="relationship" TERM2="qualified association"></RBW-IDXTERM
  21901. >A qualified association is a one&truehy;to&truehy;many or many&truehy;to&truehy;many association in which the effective multiplicity is reduced by a qualifier. </B.BODY
  21902. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00120.tif" origseq="16" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21903. ></FA.FIGURE.ANCHOR
  21904. ></LABEL
  21905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21906. >Qualified aggregation</L.LABEL
  21907. ><B.BODY><RBW-IDXTERM TERM1="qualified aggregation" TERM2="symbol in CAD"></RBW-IDXTERM
  21908. ><RBW-IDXTERM TERM1="aggregation" TERM2="qualified"></RBW-IDXTERM
  21909. ><RBW-IDXTERM TERM1="relationship" TERM2="qualified aggregation"></RBW-IDXTERM
  21910. >A qualified aggregation is a one&truehy;to&truehy;many or many&truehy;to&truehy;many aggregation in which the effective multiplicity is reduced by a qualifier.</B.BODY
  21911. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00121.tif" origseq="87" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21912. ></FA.FIGURE.ANCHOR
  21913. ></LABEL
  21914. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21915. >Constraint</L.LABEL
  21916. ><BI.BODY.INTRO>Constraints restrict the relationship between any two objects in the Class Diagram: classes, attributes, or associations. </BI.BODY.INTRO
  21917. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00122.tif" origseq="46" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21918. ></FA.FIGURE.ANCHOR
  21919. ></LABEL
  21920. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21921. ><RBW-ANCHOR ID="27609"></RBW-ANCHOR
  21922. >Association class connector<RBW-IDXTERM TERM1="association class connector" TERM2="symbol in CAD"></RBW-IDXTERM
  21923. ></L.LABEL
  21924. ><B.BODY>Graphically, an association class connector links a class to an association (including n&truehy;ary associations). Semantically, the association, the association class, and the association class connector are a single model element. The association has class&truehy;like properties, such as attributes, operations, and associations, which are defined by the association class.</B.BODY
  21925. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21926. >How to insert an association class</SL.SUBLABEL
  21927. ><B.BODY>To insert an association class connector:</B.BODY
  21928. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  21929. ></RBW-AUTOGEN
  21930. ></RBW-MARKER
  21931. ><RBW-PARABODY>In the diagram, create the association and the association class.</RBW-PARABODY
  21932. ></LN.LIST.NUM
  21933. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  21934. ></RBW-AUTOGEN
  21935. ></RBW-MARKER
  21936. ><RBW-PARABODY>In the control panel, select the Association Class Connector symbol:</RBW-PARABODY
  21937. ></LN.LIST.NUM
  21938. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  21939. ></RBW-AUTOGEN
  21940. ></RBW-MARKER
  21941. ><RBW-PARABODY>Click the association, and then click the association class.</RBW-PARABODY
  21942. ></LN.LIST.NUM
  21943. ><LR.LIST.RESULT>A dotted line between the association and the association class.</LR.LIST.RESULT
  21944. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00123.tif" origseq="96" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21945. ></FA.FIGURE.ANCHOR
  21946. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00124.tif" origseq="86" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21947. ></FA.FIGURE.ANCHOR
  21948. ></LABEL
  21949. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21950. ><RBW-ANCHOR ID="33802"></RBW-ANCHOR
  21951. >Generalization<RBW-IDXTERM TERM1="generalization" TERM2="symbol in CAD"></RBW-IDXTERM
  21952. ><RBW-IDXTERM TERM1="association" TERM2="generalization"></RBW-IDXTERM
  21953. ><RBW-IDXTERM TERM1="relationship" TERM2="generalization"></RBW-IDXTERM
  21954. ><RBW-IDXTERM TERM1="hierarchy" TERM2="of classes"></RBW-IDXTERM
  21955. ></L.LABEL
  21956. ><B.BODY>Classes are arranged into hierarchies. <RBW-IDXTERM TERM1="superclass"></RBW-IDXTERM
  21957. ><RBW-IDXTERM TERM1="subclass"></RBW-IDXTERM
  21958. ><RBW-IDXTERM TERM1="class" TERM2="superclass"></RBW-IDXTERM
  21959. ><RBW-IDXTERM TERM1="class" TERM2="subclass"></RBW-IDXTERM
  21960. >A generalization is the relationship between a class and one or more refined versions of it. The class being refined is the superclass; each refined version is a subclass. Each subclass inherits all the features of its superclass, but adds its own attributes and operations.</B.BODY
  21961. ><B.BODY>Generalization is sometimes called the is&truehy;a relationship, because each instance of a subclass is also an instance of the superclass. A generalization describes an association between one independent class and several dependent classes; the independent class, which is the superclass, is a sort of largest common denominator of the various subclasses that are associated with it. Generalization (and inheritance) is a powerful abstraction for sharing similarities among classes while preserving their differences.</B.BODY
  21962. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21963. >Two types of generalization</SL.SUBLABEL
  21964. ><B.BODY>ObjectTeam supports two types of generalization:</B.BODY
  21965. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21966. ></RBW-AUTOGEN
  21967. ></RBW-MARKER
  21968. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Disjoint.</CX5FX5FBULLET.EMPHASIS
  21969. > A generalization is disjoint when a concrete class must inherit from exactly one subclass.</RBW-PARABODY
  21970. ></LB.LIST.BULLET
  21971. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00125.tif" origseq="8" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21972. ></FA2.FIGURE.ANCHOR.2
  21973. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  21974. ></RBW-AUTOGEN
  21975. ></RBW-MARKER
  21976. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Overlapping.</CX5FX5FBULLET.EMPHASIS
  21977. > A generalization is overlapping when a concrete class can inherit from more than one subclass.</RBW-PARABODY
  21978. ></LB.LIST.BULLET
  21979. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00126.tif" origseq="26" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  21980. ></FA2.FIGURE.ANCHOR.2
  21981. ><B.BODY>A class can inherit from more than one class hierarchy or from more than one subclass in an overlapping generalization, but can never inherit from two subclasses in the same disjoint generalization.</B.BODY
  21982. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  21983. >How to draw a generalization</SL.SUBLABEL
  21984. ><B.BODY>To draw a generalization:</B.BODY
  21985. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  21986. ></RBW-AUTOGEN
  21987. ></RBW-MARKER
  21988. ><RBW-PARABODY>In the diagram, create the classes involved in the hierarchy.</RBW-PARABODY
  21989. ></LN.LIST.NUM
  21990. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  21991. ></RBW-AUTOGEN
  21992. ></RBW-MARKER
  21993. ><RBW-PARABODY>In the control panel, click the Generalization or Overlapping Generalization symbol button.</RBW-PARABODY
  21994. ></LN.LIST.NUM
  21995. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  21996. ></RBW-AUTOGEN
  21997. ></RBW-MARKER
  21998. ><RBW-PARABODY>Click in the superclass, and then in the subclass.</RBW-PARABODY
  21999. ></LN.LIST.NUM
  22000. ><LR.LIST.RESULT>ObjectTeam draws the first leg of the generalization.</LR.LIST.RESULT
  22001. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  22002. ></RBW-AUTOGEN
  22003. ></RBW-MARKER
  22004. ><RBW-PARABODY>Click in the triangle of the generalization, and then in the next subclass.</RBW-PARABODY
  22005. ></LN.LIST.NUM
  22006. ><LR.LIST.RESULT>ObjectTeam draws the second leg of the generalization</LR.LIST.RESULT
  22007. ></LABEL
  22008. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22009. ><RBW-ANCHOR ID="34891"></RBW-ANCHOR
  22010. >Propagation</L.LABEL
  22011. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="propagation" TERM2="symbol in CAD"></RBW-IDXTERM
  22012. ><RBW-IDXTERM TERM1="operation" TERM2="propagation of"></RBW-IDXTERM
  22013. >Propagation applies one or more operations to an associated object when the operation is applied to the starting object. (If you specify more than one operation, use commas to separate the operation names.) In the following figure, applying operation on Class&truehy;A causes the same operation to be carried out on Class&truehy;B.</BI.BODY.INTRO
  22014. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00127.tif" origseq="31" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22015. ></FA.FIGURE.ANCHOR
  22016. ><B.BODY>The propagation symbol can be placed on or near an connector, and will move with the connector it belongs to. Before inserting a propagation symbol, firstt connect two objects with an connector and then insert the propagation symbol by clicking near the connector. You can move the propagation symbol during insertion, to prevent it from overlapping its connector.</B.BODY
  22017. ><B.BODY>A propagation symbol can be attached to the following connectors:</B.BODY
  22018. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22019. ></RBW-AUTOGEN
  22020. ></RBW-MARKER
  22021. ><RBW-PARABODY>Association</RBW-PARABODY
  22022. ></LB.LIST.BULLET
  22023. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22024. ></RBW-AUTOGEN
  22025. ></RBW-MARKER
  22026. ><RBW-PARABODY>Qualified association</RBW-PARABODY
  22027. ></LB.LIST.BULLET
  22028. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22029. ></RBW-AUTOGEN
  22030. ></RBW-MARKER
  22031. ><RBW-PARABODY>Aggregation</RBW-PARABODY
  22032. ></LB.LIST.BULLET
  22033. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22034. ></RBW-AUTOGEN
  22035. ></RBW-MARKER
  22036. ><RBW-PARABODY>Qualified aggregation</RBW-PARABODY
  22037. ></LB.LIST.BULLET
  22038. ></LABEL
  22039. ></SUBSECTION
  22040. ></SECTION
  22041. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="13208"></RBW-ANCHOR
  22042. >Collaboration Diagram</S.SECTION.HEAD
  22043. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22044. >Introduction</L.LABEL
  22045. ><B.BODY>The Collaboration Diagram shows a set of objects related in a particular context, and the set of messages exchanged between the objects to achieve a desired operation or result.</B.BODY
  22046. ><B.BODY>The COD is a graph of references to objects and the links between those objects, with message flows attached to its links. The diagram shows the objects relevant to the performance of an operation.</B.BODY
  22047. ><B.BODY>Use the Collaboration Diagram to show complex associations between classes.</B.BODY
  22048. ></LABEL
  22049. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22050. >Relation to other diagrams and objects</L.LABEL
  22051. ><B.BODY>A Collaboration Diagram can stand alone or be the instantiation of (parts of ) other diagrams. </B.BODY
  22052. ><B.BODY>In the Collaboration Diagram, message flows can be drawn along the links between objects to specify the interactions between the objects.</B.BODY
  22053. ><B.BODY>Its name is usually classified by a Class or Use Case name.</B.BODY
  22054. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22055. >Relation to Class Diagram</SL.SUBLABEL
  22056. ><B.BODY>The Collaboration diagram can be a decomposition of a Class, Class Diagram, or part of a Class Diagram.</B.BODY
  22057. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22058. >Relation to Use Case Diagram</SL.SUBLABEL
  22059. ><B.BODY>The Collaboration diagram can be a decomposition of a Use Case, Use Case Diagram, or part of a Use Case Diagram.</B.BODY
  22060. ></LABEL
  22061. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22062. >Example COD</L.LABEL
  22063. ><FA.FIGURE.ANCHOR>The following show an example of a Collaboration Diagram</FA.FIGURE.ANCHOR
  22064. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00128.unk" origfile="pics/codexamp.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22065. ></FA.FIGURE.ANCHOR
  22066. ></LABEL
  22067. ><SUBSECTION><SS.SUBSEC.HEAD>Symbols</SS.SUBSEC.HEAD
  22068. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22069. >Introduction</L.LABEL
  22070. ><B.BODY>This section describes the symbols used in the Collaboration diagram. The following table shows the symbols as they appear in the control panel.</B.BODY
  22071. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00129.unk" origfile="pics/cod_syms.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22072. ></FA.FIGURE.ANCHOR
  22073. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  22074. ></RBW-AUTOGEN
  22075. >The Vertex, Select, Note, and Note connector symbols are common to all diagrams. They are described in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  22076. >.</N.NOTE
  22077. ></LABEL
  22078. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22079. >Actor</L.LABEL
  22080. ><FA.FIGURE.ANCHOR>An actor in a Collaboration Diagram represents the person, software, hardware, or other agent external to the system that is interacting with the system. </FA.FIGURE.ANCHOR
  22081. ><B.BODY>The “stick man” figure represents the actor:</B.BODY
  22082. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00130.unk" origfile="pics/codactor.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22083. ></FA.FIGURE.ANCHOR
  22084. ><B.BODY>The actor has one label containing its name. This name has class syntax. By default its scope is Phase. </B.BODY
  22085. ></LABEL
  22086. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22087. >Instance</L.LABEL
  22088. ><B.BODY>An Instance is represented by a rectangle. It is an instantiation of a class in a Class Diagram or a Use Case in a Use Case Diagram</B.BODY
  22089. ><B.BODY>The instance is represented by a rectangle.</B.BODY
  22090. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00131.unk" origfile="pics/codinst.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22091. ></FA.FIGURE.ANCHOR
  22092. ><B.BODY>The instance has one label with the following syntax:</B.BODY
  22093. ><E.EXAMPLE><instance name><:instance type>. </E.EXAMPLE
  22094. ><B.BODY>The instance name has scope Phase and is considered a classname.</B.BODY
  22095. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22096. >Instance name</SL.SUBLABEL
  22097. ><B.BODY>the name of the instance</B.BODY
  22098. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22099. >Instance type</SL.SUBLABEL
  22100. ><B.BODY>The instanceType can be an item to correspond to a class or a use case.</B.BODY
  22101. ><B.BODY>The initial scope of an instance is Phase</B.BODY
  22102. ></LABEL
  22103. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22104. >N&truehy;ary Link</L.LABEL
  22105. ><B.BODY>An N&truehy;ary Link symbol is the node part of an n&truehy;ary link.It is an instance of an n&truehy;ary association (see <RBW-XREF REFID="40661" TYPE="XREF-TEXTCOPY">N&truehy;ary associations</RBW-XREF
  22106. >)</B.BODY
  22107. ><B.BODY>The n&truehy;ary link is represented by a diamond. </B.BODY
  22108. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00132.unk" origfile="pics/codnlink.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22109. ></FA.FIGURE.ANCHOR
  22110. ><B.BODY>the n&truehy;ary link is connected to the appropriate instances and actors by an n&truehy;ary link connector. </B.BODY
  22111. ></LABEL
  22112. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22113. >Link</L.LABEL
  22114. ><B.BODY>The link represents an instance of an association between two classes (see also <RBW-XREF REFID="19294" TYPE="XREF-TEXTCOPY">Class Diagram</RBW-XREF
  22115. >)</B.BODY
  22116. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00133.unk" origfile="pics/codlink.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22117. ></FA.FIGURE.ANCHOR
  22118. ><B.BODY>An association name can be attached to a link to indicate an instance. The name has class syntax</B.BODY
  22119. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22120. >Role names</SL.SUBLABEL
  22121. ><BI.BODY.INTRO>You can specify a link stereotype and a role name for each end of the link. See <RBW-XREF REFID="21173" TYPE="XREF-TEXTCOPY">Link role names</RBW-XREF
  22122. >. </BI.BODY.INTRO
  22123. ></LABEL
  22124. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22125. >Aggregation link</L.LABEL
  22126. ><B.BODY>The aggregation link is an instance of an aggregation in a Class Diagram. </B.BODY
  22127. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00134.unk" origfile="pics/codaggrl.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22128. ></FA.FIGURE.ANCHOR
  22129. ><B.BODY>An aggregation name can be attached to an aggregation link to indicate an instance. The name has class syntax</B.BODY
  22130. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22131. >Role names</SL.SUBLABEL
  22132. ><BI.BODY.INTRO>You can specify a link stereotype and a role name for each end of the aggregation link. See <RBW-XREF REFID="21173" TYPE="XREF-TEXTCOPY">Link role names</RBW-XREF
  22133. >. </BI.BODY.INTRO
  22134. ></LABEL
  22135. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22136. >Qualified link</L.LABEL
  22137. ><B.BODY>The Qualified Link consists of a link and a qualifier that represent the value of the qualifier in the association from which this link is an instantiation. </B.BODY
  22138. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00135.unk" origfile="pics/codquall.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22139. ></FA.FIGURE.ANCHOR
  22140. ><B.BODY>An qualified association name can be attached to a qualified link to indicate an instance. The name has class syntax</B.BODY
  22141. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22142. >Role names</SL.SUBLABEL
  22143. ><BI.BODY.INTRO>You can specify a link stereotype and a role name for each end of the qualified link. See <RBW-XREF REFID="21173" TYPE="XREF-TEXTCOPY">Link role names</RBW-XREF
  22144. >. </BI.BODY.INTRO
  22145. ></LABEL
  22146. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22147. >Qualified aggregation link</L.LABEL
  22148. ><B.BODY>The Qualified AggregationLink consists of a aggregation link and a qualifier that represent the value of the qualifier in the aggregation from which this link is an instantiation. </B.BODY
  22149. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00136.unk" origfile="pics/codquagg.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22150. ></FA.FIGURE.ANCHOR
  22151. ><B.BODY>An qualified aggregation name can be attached to a qualified aggregation link to indicate an instance. The name has class syntax</B.BODY
  22152. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22153. >Role names</SL.SUBLABEL
  22154. ><BI.BODY.INTRO>You can specify a link stereotype and a role name for each end of the qualified aggregation link. See <RBW-XREF REFID="21173" TYPE="XREF-TEXTCOPY">Link role names</RBW-XREF
  22155. >. </BI.BODY.INTRO
  22156. ></LABEL
  22157. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22158. ><RBW-ANCHOR ID="21173"></RBW-ANCHOR
  22159. >Link role names</L.LABEL
  22160. ><B.BODY>The connector representing a link (and also aggregation link, qualified link, qualified aggregation link and n&truehy;ary link connector)has the following labels</B.BODY
  22161. ><E.EXAMPLE>«Link Start Stereotype»role name</E.EXAMPLE
  22162. ><E.EXAMPLE>«Link End Stereotype»role name</E.EXAMPLE
  22163. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22164. >Link Stereotypes</SL.SUBLABEL
  22165. ><B.BODY>You can specify the stereotypes of a link through the link stereotypes in the control panel. For more information on the Link Start Stereotype and Link End Stereotype, see Link stereotypes on page 4–66.</B.BODY
  22166. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22167. >Role Names</SL.SUBLABEL
  22168. ><B.BODY>ObjectTeam adds the following qualifiers to the role names:</B.BODY
  22169. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22170. ></RBW-AUTOGEN
  22171. ></RBW-MARKER
  22172. ><RBW-PARABODY>For binary links the role name is qualified by the type of the instance at the opposite side of the link.</RBW-PARABODY
  22173. ></LB.LIST.BULLET
  22174. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22175. ></RBW-AUTOGEN
  22176. ></RBW-MARKER
  22177. ><RBW-PARABODY>For n&truehy;ary links the role name is qualified by the type of Instance it </RBW-PARABODY
  22178. ></LB.LIST.BULLET
  22179. ><LB.LIST.BULLET>is linked to.k Role Names</LB.LIST.BULLET
  22180. ></LABEL
  22181. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22182. >Messages</L.LABEL
  22183. ><B.BODY>A message flow carries a message from one object to another along a link (link, qualified link, aggregation link, qualified aggregation link, and n&truehy;ary link connector). </B.BODY
  22184. ><B.BODY>The message symbols can be placed on or near a connector, and will move with the connector they belong to. Before inserting a message, first connect two objects with a connector and then insert the message by clicking near that connector. You can move the message during insertion, to prevent it from overlapping its connector.</B.BODY
  22185. ><B.BODY>A message can be attached to the following connectors:</B.BODY
  22186. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22187. ></RBW-AUTOGEN
  22188. ></RBW-MARKER
  22189. ><RBW-PARABODY>Link</RBW-PARABODY
  22190. ></LB.LIST.BULLET
  22191. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22192. ></RBW-AUTOGEN
  22193. ></RBW-MARKER
  22194. ><RBW-PARABODY>Aggregation Link</RBW-PARABODY
  22195. ></LB.LIST.BULLET
  22196. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22197. ></RBW-AUTOGEN
  22198. ></RBW-MARKER
  22199. ><RBW-PARABODY>Qualified Link</RBW-PARABODY
  22200. ></LB.LIST.BULLET
  22201. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22202. ></RBW-AUTOGEN
  22203. ></RBW-MARKER
  22204. ><RBW-PARABODY>Qualified Aggregation Link</RBW-PARABODY
  22205. ></LB.LIST.BULLET
  22206. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22207. ></RBW-AUTOGEN
  22208. ></RBW-MARKER
  22209. ><RBW-PARABODY>N&truehy;ary Link Connector</RBW-PARABODY
  22210. ></LB.LIST.BULLET
  22211. ><B.BODY>A message flow in a Collaboration Diagram is characterized by direction and type.</B.BODY
  22212. ></LABEL
  22213. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22214. >Message direction</L.LABEL
  22215. ><B.BODY>There are two message directions:</B.BODY
  22216. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22217. ></RBW-AUTOGEN
  22218. ></RBW-MARKER
  22219. ><RBW-PARABODY>Backward Messages </RBW-PARABODY
  22220. ></LB.LIST.BULLET
  22221. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22222. ></RBW-AUTOGEN
  22223. ></RBW-MARKER
  22224. ><RBW-PARABODY>Forward Messages</RBW-PARABODY
  22225. ></LB.LIST.BULLET
  22226. ><B.BODY>The direction in which the link was drawn determines the direction of the message.</B.BODY
  22227. ></LABEL
  22228. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22229. >Message type</L.LABEL
  22230. ><B.BODY>The following types exist:</B.BODY
  22231. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22232. ></RBW-AUTOGEN
  22233. ></RBW-MARKER
  22234. ><RBW-PARABODY>Nested message, see <RBW-XREF REFID="40495" TYPE="XREF-TEXTCOPY">Nested message</RBW-XREF
  22235. ></RBW-PARABODY
  22236. ></LB.LIST.BULLET
  22237. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22238. ></RBW-AUTOGEN
  22239. ></RBW-MARKER
  22240. ><RBW-PARABODY>Flat message, see <RBW-XREF REFID="20230" TYPE="XREF-TEXTCOPY">Flat message</RBW-XREF
  22241. ></RBW-PARABODY
  22242. ></LB.LIST.BULLET
  22243. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22244. ></RBW-AUTOGEN
  22245. ></RBW-MARKER
  22246. ><RBW-PARABODY>Asynchronous message, see <RBW-XREF REFID="13738" TYPE="XREF-TEXTCOPY">Asynchronous message</RBW-XREF
  22247. ></RBW-PARABODY
  22248. ></LB.LIST.BULLET
  22249. ></LABEL
  22250. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22251. >Message Syntax</L.LABEL
  22252. ><B.BODY>The default syntax for a message name is:</B.BODY
  22253. ><E.EXAMPLE><predecessor> <guard&truehy;condition> <sequence&truehy;expression> </E.EXAMPLE
  22254. ><E.EXAMPLE><return&truehy;value> [ = | := ] <message&truehy;name> (<argument&truehy;list>) </E.EXAMPLE
  22255. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22256. ><predecessor> <guard&truehy;condition> </SL.SUBLABEL
  22257. ><B.BODY>A comma separated list of sequence numbers followed by a slash. The clause is omitted when the list is empty </B.BODY
  22258. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22259. ><sequence&truehy;expression> </SL.SUBLABEL
  22260. ><B.BODY>A dot separated list of number or names optionally followed by a condition or an iteration (both enclosed in square brackets, the iteration preceded by an asterisk) and separated from the rest of the label by a colon.</B.BODY
  22261. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22262. ><return&truehy;value> [ = | := ]</SL.SUBLABEL
  22263. ><B.BODY>A data elemnet with scope file. If the message does not return a value, thenthe return value and the assignment operator are omitted.</B.BODY
  22264. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22265. ><message&truehy;name> </SL.SUBLABEL
  22266. ><B.BODY>A process element with scope system.</B.BODY
  22267. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22268. ><argument&truehy;list></SL.SUBLABEL
  22269. ><B.BODY>A comma separated list of data elements with scope file. This list is enclosed in brackets and can be empty.</B.BODY
  22270. ></LABEL
  22271. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22272. ><RBW-ANCHOR ID="40495"></RBW-ANCHOR
  22273. >Nested message</L.LABEL
  22274. ><B.BODY>The nested message represents a procedure call or other nested flow of control. The nested sequence is completed before the outer level sequence resumes. </B.BODY
  22275. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00137.unk" origfile="pics/codnestd.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22276. ></FA.FIGURE.ANCHOR
  22277. ><B.BODY>The nested message symbol is represented by a filled solid arrowhead. </B.BODY
  22278. ></LABEL
  22279. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22280. ><RBW-ANCHOR ID="20230"></RBW-ANCHOR
  22281. >Flat message</L.LABEL
  22282. ><B.BODY>The flat message shows the progression to the next step in a sequence. </B.BODY
  22283. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00138.unk" origfile="pics/codflat.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22284. ></FA.FIGURE.ANCHOR
  22285. ><B.BODY>The flat message symbol is represented by a stick arrowhead.</B.BODY
  22286. ></LABEL
  22287. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22288. ><RBW-ANCHOR ID="13738"></RBW-ANCHOR
  22289. >Asynchronous message</L.LABEL
  22290. ><B.BODY>The asynchronous message shows an asynchronous message between two objects. </B.BODY
  22291. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00139.unk" origfile="pics/codasync.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22292. ></FA.FIGURE.ANCHOR
  22293. ><B.BODY>The asynchronous message symbol is represented by a half stick arrowhead. </B.BODY
  22294. ></LABEL
  22295. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22296. >N&truehy;ary link connector</L.LABEL
  22297. ><B.BODY>An n&truehy;ary link connector is the connector part of an n&truehy;ary link. One side of this connector must be connected to aninstance, the other side to an n&truehy;ary link symbol.</B.BODY
  22298. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00140.unk" origfile="pics/codnlnkc.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22299. ></FA.FIGURE.ANCHOR
  22300. ><B.BODY>An n&truehy;ary association role name can be attached to the n&truehy;ary link connector to indicate an instance. The name has class syntax</B.BODY
  22301. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22302. >Role names</SL.SUBLABEL
  22303. ><BI.BODY.INTRO>You can specify a link start stereotype and a role name for the n&truehy;ary link connector on de side connected to the instance. See <RBW-XREF REFID="21173" TYPE="XREF-TEXTCOPY">Link role names</RBW-XREF
  22304. >. </BI.BODY.INTRO
  22305. ></LABEL
  22306. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22307. ><RBW-ANCHOR ID="11708"></RBW-ANCHOR
  22308. >Link stereotypes</L.LABEL
  22309. ><B.BODY>You can attach a Stereotype to a Link Role Name to show the type of implementation of the role.</B.BODY
  22310. ><B.BODY>The direction in which the link was drawn determines where the Link Start Stereotype and the Link End Stereotype are placed.</B.BODY
  22311. ><B.BODY>You can assign one the following stereotypes:</B.BODY
  22312. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22313. ></RBW-AUTOGEN
  22314. ></RBW-MARKER
  22315. ><RBW-PARABODY>none (the empty buttons at the top of the Link Start Stereotype and Link End Stereotype columns on the control panel)</RBW-PARABODY
  22316. ></LB.LIST.BULLET
  22317. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22318. ></RBW-AUTOGEN
  22319. ></RBW-MARKER
  22320. ><RBW-PARABODY>«association»</RBW-PARABODY
  22321. ></LB.LIST.BULLET
  22322. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22323. ></RBW-AUTOGEN
  22324. ></RBW-MARKER
  22325. ><RBW-PARABODY>«parameter»</RBW-PARABODY
  22326. ></LB.LIST.BULLET
  22327. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22328. ></RBW-AUTOGEN
  22329. ></RBW-MARKER
  22330. ><RBW-PARABODY>«local»</RBW-PARABODY
  22331. ></LB.LIST.BULLET
  22332. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22333. ></RBW-AUTOGEN
  22334. ></RBW-MARKER
  22335. ><RBW-PARABODY>«global»</RBW-PARABODY
  22336. ></LB.LIST.BULLET
  22337. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22338. ></RBW-AUTOGEN
  22339. ></RBW-MARKER
  22340. ><RBW-PARABODY>«self»</RBW-PARABODY
  22341. ></LB.LIST.BULLET
  22342. ></LABEL
  22343. ></SUBSECTION
  22344. ></SECTION
  22345. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12305"></RBW-ANCHOR
  22346. >Sequence Diagram</S.SECTION.HEAD
  22347. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22348. >Purpose</L.LABEL
  22349. ><B.BODY>The Sequence Diagram (SD) is specifies the time and control aspects of a system.</B.BODY
  22350. ><B.BODY>Us<RBW-IDXTERM TERM1="Event Trace Diagram"></RBW-IDXTERM
  22351. >e the SD to analyze compl<RBW-IDXTERM TERM1="business event" TERM2="in ETD"></RBW-IDXTERM
  22352. >ex business events. Events are actions between the objects in your project. They can also transmit data.</B.BODY
  22353. ><B.BODY><RBW-IDXTERM TERM1="scenario, in ETD"></RBW-IDXTERM
  22354. >A scenario is the sequence of events during one execution of a program. A scenario can include all the events or only the events sent to or received by certain objects in the system.</B.BODY
  22355. ><B.BODY>Typically, you use SDs to describe only the more complex events. A diagram describing a particular scenario is called a sequence. An SD can contain more than one sequence.</B.BODY
  22356. ></LABEL
  22357. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22358. >Example SD</L.LABEL
  22359. ><B.BODY>The following SD shows a simple scenario for the use of an automatic teller machine. In this scenario, the system rejects the card. For the customer this transaction is simple: he inserts the card and the card is rejected. For the system, several actions are necessary. A constraint specifying the maximum length of the interval between these actions can be added.</B.BODY
  22360. ><B.BODY>The following illustration shows the SD for this scenario:</B.BODY
  22361. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00141.tif" origseq="69" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22362. ></FA.FIGURE.ANCHOR
  22363. ><B.BODY>This sequence is fairly general; you can work out the Insert Card event more completely by including details such as entering the personal identification number and requesting the type of transaction. The analyst must decide what level of detail to use in the SDs.</B.BODY
  22364. ></LABEL
  22365. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="Event Trace Diagram" TERM2="symbols in"></RBW-IDXTERM
  22366. ><RBW-IDXTERM TERM1="symbols" TERM2="in ETD"></RBW-IDXTERM
  22367. >Symbols</SS.SUBSEC.HEAD
  22368. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22369. >Introduction</L.LABEL
  22370. ><FA.FIGURE.ANCHOR>This section describes the symbols used in the Sequence Diagram. </FA.FIGURE.ANCHOR
  22371. ><B.BODY>The following illustration shows the symbols as they appear in the diagram control panel:</B.BODY
  22372. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00142.unk" origfile="pics/sd_symbs.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22373. ></FA.FIGURE.ANCHOR
  22374. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  22375. ></RBW-AUTOGEN
  22376. >The Vertex, Select, Note and Note connector symbols are common to all diagrams. They are described in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  22377. >.</N.NOTE
  22378. ></LABEL
  22379. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22380. >Initiator<RBW-IDXTERM TERM1="initiator" TERM2="symbol in ETD"></RBW-IDXTERM
  22381. ></L.LABEL
  22382. ><B.BODY>The initiator starts the sequence. It represents an external agent, such as a user, that interacts with the system. The initiator can be a class, but does not have to be.</B.BODY
  22383. ><B.BODY>The following illustration shows an initiator:</B.BODY
  22384. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00143.unk" origfile="pics/sd_init.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22385. ></FA.FIGURE.ANCHOR
  22386. ><FA.FIGURE.ANCHOR>Because a sequence describes a particular scenario occurring after one particular external event, each sequence can only have one initiator. However, you can draw more than one sequence in a diagram.</FA.FIGURE.ANCHOR
  22387. ></LABEL
  22388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22389. >Object<RBW-IDXTERM TERM1="object" TERM2="symbol in ETD"></RBW-IDXTERM
  22390. ></L.LABEL
  22391. ><B.BODY>The object line represents a portion of the lifetime of an object in the system. Time flows from top to bottom on the symbol. The spacing between event symbols is not important. It does not indicate the length of time between events.</B.BODY
  22392. ><B.BODY>The following illustration shows an object:</B.BODY
  22393. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00144.unk" origfile="pics/sd_objsym.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22394. ></FA.FIGURE.ANCHOR
  22395. ><B.BODY>An object is an instance of a class. The object name has the following syntax:</B.BODY
  22396. ><E.EXAMPLE><object_name>[:<class_name>]</E.EXAMPLE
  22397. ><B.BODY>If no class name is indicated, ObjectTeam assumes the class name is the same as the object name.</B.BODY
  22398. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22399. >Object properties</SL.SUBLABEL
  22400. ><B.BODY>The following properties can be set for the object:</B.BODY
  22401. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="136p"><COLSPEC COLNAME="2" COLWIDTH="316p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  22402. ></ENTRY
  22403. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  22404. ></ENTRY
  22405. ></RBW-ROW
  22406. ></THEAD
  22407. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>entity object</CELLBODY
  22408. ></ENTRY
  22409. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The object is a persistent object.</CELLBODY
  22410. ></ENTRY
  22411. ></RBW-ROW
  22412. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>interface object</CELLBODY
  22413. ></ENTRY
  22414. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The input and output for this object is external, that is, the object is activated by someone outside the system</CELLBODY
  22415. ></ENTRY
  22416. ></RBW-ROW
  22417. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>control object</CELLBODY
  22418. ></ENTRY
  22419. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>When an object is neither an entity object nor an interface object, it can be defined as a control object.</CELLBODY
  22420. ></ENTRY
  22421. ></RBW-ROW
  22422. ></TBODY
  22423. ></TGROUP
  22424. ></RBW-TABLE
  22425. ></LABEL
  22426. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22427. ><RBW-ANCHOR ID="17198"></RBW-ANCHOR
  22428. >Timing Constraint</L.LABEL
  22429. ><FA.FIGURE.ANCHOR>The timing constraint is a text tool used to set a constraint on the time interval between two messages. You can mark the messages with timing marks (see <RBW-XREF REFID="24347" TYPE="XREF-TEXTCOPY">Timing mark</RBW-XREF
  22430. >)</FA.FIGURE.ANCHOR
  22431. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00145.tif" origseq="110" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22432. ></FA.FIGURE.ANCHOR
  22433. ><B.BODY>How to use the timing constraint is explained below in <RBW-XREF REFID="31465" TYPE="XREF-TEXTCOPY">How to insert a timing constraint</RBW-XREF
  22434. >, and <RBW-XREF REFID="36061" TYPE="XREF-TEXTCOPY">How to move a timing constraint</RBW-XREF
  22435. >.</B.BODY
  22436. ></LABEL
  22437. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22438. ><RBW-ANCHOR ID="31465"></RBW-ANCHOR
  22439. >How to insert a timing constraint</L.LABEL
  22440. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  22441. ></RBW-AUTOGEN
  22442. ></RBW-MARKER
  22443. ><RBW-PARABODY>To insert a text block:</RBW-PARABODY
  22444. ></P.PROCEDURE
  22445. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00146.tif" origseq="99" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22446. ></FA.FIGURE.ANCHOR
  22447. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  22448. ></RBW-AUTOGEN
  22449. ></RBW-MARKER
  22450. ><RBW-PARABODY>In the control panel, click the text block tool.</RBW-PARABODY
  22451. ></LN.LIST.NUM
  22452. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  22453. ></RBW-AUTOGEN
  22454. ></RBW-MARKER
  22455. ><RBW-PARABODY>Click in the drawing area where you want to place the text block.</RBW-PARABODY
  22456. ></LN.LIST.NUM
  22457. ><LR.LIST.RESULT>A small square (a) appears where you have clicked. </LR.LIST.RESULT
  22458. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  22459. ></RBW-AUTOGEN
  22460. ></RBW-MARKER
  22461. ><RBW-PARABODY>Move the cursor down and to the right of the square.</RBW-PARABODY
  22462. ></LN.LIST.NUM
  22463. ><LR.LIST.RESULT>An I&truehy;bar appears (b).</LR.LIST.RESULT
  22464. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  22465. ></RBW-AUTOGEN
  22466. ></RBW-MARKER
  22467. ><RBW-PARABODY>Enter text in the text block (c).</RBW-PARABODY
  22468. ></LN.LIST.NUM
  22469. ><LR.LIST.RESULT>The small square disappears.</LR.LIST.RESULT
  22470. ><LT.LIST.TEXT>Text in text blocks is edited in the same way as text in notes (see <RBW-XREF REFID="42581" TYPE="XREF-TEXTCOPY">Working with Notes on page 3–30</RBW-XREF
  22471. >).</LT.LIST.TEXT
  22472. ></LABEL
  22473. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22474. ><RBW-ANCHOR ID="36061"></RBW-ANCHOR
  22475. >How to move a timing constraint</L.LABEL
  22476. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  22477. ></RBW-AUTOGEN
  22478. ></RBW-MARKER
  22479. ><RBW-PARABODY>To reposition a timing constraint: </RBW-PARABODY
  22480. ></P.PROCEDURE
  22481. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  22482. ></RBW-AUTOGEN
  22483. ></RBW-MARKER
  22484. ><RBW-PARABODY>Place the cursor over the timing constraint</RBW-PARABODY
  22485. ></LN.LIST.NUM
  22486. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  22487. ></RBW-AUTOGEN
  22488. ></RBW-MARKER
  22489. ><RBW-PARABODY>Press:</RBW-PARABODY
  22490. ></LN.LIST.NUM
  22491. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  22492. ></RBW-MARKER
  22493. ><RBW-PARABODY>both mouse buttons (Windows)</RBW-PARABODY
  22494. ></LB2.LIST.BULLET.2
  22495. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  22496. ></RBW-MARKER
  22497. ><RBW-PARABODY>middle mouse button (Unix)</RBW-PARABODY
  22498. ></LB2.LIST.BULLET.2
  22499. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  22500. ></RBW-AUTOGEN
  22501. ></RBW-MARKER
  22502. ><RBW-PARABODY>Drag the text block to its new position. </RBW-PARABODY
  22503. ></LN.LIST.NUM
  22504. ></LABEL
  22505. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22506. ><RBW-ANCHOR ID="24347"></RBW-ANCHOR
  22507. >Timing mark</L.LABEL
  22508. ><B.BODY>An event can be labeled on the initiator by a timing mark. The timing mark can be used in combination with the timing constraint (see <RBW-XREF REFID="17198" TYPE="XREF-TEXTCOPY">Timing Constraint</RBW-XREF
  22509. >) to set a time interval between two or more events.</B.BODY
  22510. ><B.BODY>The following illustration shows two timing marks.</B.BODY
  22511. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00147.tif" origseq="39" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22512. ></FA.FIGURE.ANCHOR
  22513. ><B.BODY>The timing mark is not required for every message, but it can be set for every begin and end of a message. </B.BODY
  22514. ><B.BODY>When the message is repositioned, the timing mark moves with it.</B.BODY
  22515. ></LABEL
  22516. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22517. >Messages</L.LABEL
  22518. ><BI.BODY.INTRO>An message represents an individual stimulus from one object to another. An message may be a signal that something has happened or can transmit data. </BI.BODY.INTRO
  22519. ><B.BODY>An message occurs at a point in time. More than one message can be sent simultaneously from the same point on the initiator or object line, that is, at the same point in time. </B.BODY
  22520. ><B.BODY>An object can also send a message to itself. Such a message must arrive at the object at a another point in time.</B.BODY
  22521. ><B.BODY>The following illustration shows a nested message:</B.BODY
  22522. ><B.BODY>There are several kinds of messages in a sequence diagram: </B.BODY
  22523. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22524. ></RBW-AUTOGEN
  22525. ></RBW-MARKER
  22526. ><RBW-PARABODY>Flat Message: see <RBW-XREF REFID="10145" TYPE="XREF-TEXTCOPY">Flat message</RBW-XREF
  22527. ></RBW-PARABODY
  22528. ></LB.LIST.BULLET
  22529. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22530. ></RBW-AUTOGEN
  22531. ></RBW-MARKER
  22532. ><RBW-PARABODY>Nested Message see <RBW-XREF REFID="12019" TYPE="XREF-TEXTCOPY">Nested message</RBW-XREF
  22533. ></RBW-PARABODY
  22534. ></LB.LIST.BULLET
  22535. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22536. ></RBW-AUTOGEN
  22537. ></RBW-MARKER
  22538. ><RBW-PARABODY>Asynchronous Message: see <RBW-XREF REFID="19095" TYPE="XREF-TEXTCOPY">Asynchronous message</RBW-XREF
  22539. ></RBW-PARABODY
  22540. ></LB.LIST.BULLET
  22541. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22542. ></RBW-AUTOGEN
  22543. ></RBW-MARKER
  22544. ><RBW-PARABODY>Return Message see <RBW-XREF REFID="39939" TYPE="XREF-TEXTCOPY">Return message</RBW-XREF
  22545. ></RBW-PARABODY
  22546. ></LB.LIST.BULLET
  22547. ><B.BODY>The syntax for a message flow is:</B.BODY
  22548. ><E.EXAMPLE><message_name>[(<argument_list>)]</E.EXAMPLE
  22549. ><B.BODY>The arguments in the argument list are separated by commas.</B.BODY
  22550. ></LABEL
  22551. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22552. ><RBW-ANCHOR ID="10145"></RBW-ANCHOR
  22553. >Flat message</L.LABEL
  22554. ><B.BODY>The Flat Message symbol is represented by a stick arrowhead. </B.BODY
  22555. ><B.BODY>It shows the progression to the next step in a sequence</B.BODY
  22556. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00148.unk" origfile="pics/sd_m_flat.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22557. ></FA.FIGURE.ANCHOR
  22558. ></LABEL
  22559. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22560. ><RBW-ANCHOR ID="12019"></RBW-ANCHOR
  22561. >Nested message</L.LABEL
  22562. ><B.BODY>The Nested Message symbol is represented by a filled solid arrowhead. </B.BODY
  22563. ><B.BODY>It represents a procedure call or other nested flow of control. The nested sequence is completed before the outer level sequence resumes.</B.BODY
  22564. ><B.BODY><RBW-GRAPHIC filename="00149.unk" origfile="pics/sd_m_nes.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22565. ></B.BODY
  22566. ></LABEL
  22567. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22568. ><RBW-ANCHOR ID="19095"></RBW-ANCHOR
  22569. >Asynchronous message</L.LABEL
  22570. ><B.BODY>The Asynchronous Message symbol is represented by a half stick arrowhead. </B.BODY
  22571. ><B.BODY>It shows an asynchronous message between two objects.</B.BODY
  22572. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00150.unk" origfile="pics/sd_m_asy.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22573. ></FA.FIGURE.ANCHOR
  22574. ></LABEL
  22575. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22576. ><RBW-ANCHOR ID="39939"></RBW-ANCHOR
  22577. >Return message</L.LABEL
  22578. ><B.BODY>A return message is a message that an object returns as a result of a process initiated by a message flow.</B.BODY
  22579. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00151.unk" origfile="pics/sd_m_ret.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22580. ></FA.FIGURE.ANCHOR
  22581. ></LABEL
  22582. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22583. >Create / Destroy messages</L.LABEL
  22584. ><B.BODY>When a message is drawn to the object name box the message becomes a “create message”.</B.BODY
  22585. ><B.BODY>When a message is drawn to the object terminator the message becomes a “destroy message”.</B.BODY
  22586. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00152.unk" origfile="pics/sd_crdest.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22587. ></FA.FIGURE.ANCHOR
  22588. ></LABEL
  22589. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22590. ><RBW-IDXTERM TERM1="event" TERM2="symbol in ETD"></RBW-IDXTERM
  22591. ><RBW-ANCHOR ID="41532"></RBW-ANCHOR
  22592. >In Scope region</L.LABEL
  22593. ><FA.FIGURE.ANCHOR>The In Scope region is a white rectangle that can be placed on top of an initiator or an object to show that the object is in scope. </FA.FIGURE.ANCHOR
  22594. ><B.BODY>The following illustration shows the In Scope region:</B.BODY
  22595. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00153.tif" origseq="95" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22596. ></FA.FIGURE.ANCHOR
  22597. ><B.BODY>When an message is nearby the symbol will be linked to that event. The InScope region can be moved up and down the axis of the object, but not away from it. When it is moved up or down, the event(s) attached to it will be moved with it. </B.BODY
  22598. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  22599. ></RBW-AUTOGEN
  22600. >When the event is moved, the InScope region is not moved. (This means that the event can be moved away from a region and connected to another).</N.NOTE
  22601. ></LABEL
  22602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22603. >Object Terminator</L.LABEL
  22604. ><FA.FIGURE.ANCHOR>The object termination symbol represents the destruction of the object. The object termination symbol has no labels.</FA.FIGURE.ANCHOR
  22605. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00154.unk" origfile="pics/sd_object.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22606. ></FA.FIGURE.ANCHOR
  22607. ></LABEL
  22608. ></SUBSECTION
  22609. ></SECTION
  22610. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="41704"></RBW-ANCHOR
  22611. ><RBW-ANCHOR ID="34271"></RBW-ANCHOR
  22612. >State Diagram</S.SECTION.HEAD
  22613. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22614. >Purpose</L.LABEL
  22615. ><B.BODY>The state diagram (STD) shows the sequence of states that an object goes through during its life. A state diagram defines:</B.BODY
  22616. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22617. ></RBW-AUTOGEN
  22618. ></RBW-MARKER
  22619. ><RBW-PARABODY>The external stimuli of the system: the events</RBW-PARABODY
  22620. ></LB.LIST.BULLET
  22621. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22622. ></RBW-AUTOGEN
  22623. ></RBW-MARKER
  22624. ><RBW-PARABODY>The values of objects: the states</RBW-PARABODY
  22625. ></LB.LIST.BULLET
  22626. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22627. ></RBW-AUTOGEN
  22628. ></RBW-MARKER
  22629. ><RBW-PARABODY>The changes of the object values: the transitions</RBW-PARABODY
  22630. ></LB.LIST.BULLET
  22631. ><LT.LIST.TEXT>More than one transition may leave a state. The first event to occur causes the corresponding transition to fire. Transitions are guarded by conditions, i.e. an event can only fire a transition if the condition of the event is true. A condition is valid over an interval of time.</LT.LIST.TEXT
  22632. ><B.BODY>When drawing a state diagram, concentrate on the following:</B.BODY
  22633. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22634. ></RBW-AUTOGEN
  22635. ></RBW-MARKER
  22636. ><RBW-PARABODY>What sorts of states the class can be in</RBW-PARABODY
  22637. ></LB.LIST.BULLET
  22638. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22639. ></RBW-AUTOGEN
  22640. ></RBW-MARKER
  22641. ><RBW-PARABODY>Which stimuli activate or re&truehy;activate the class</RBW-PARABODY
  22642. ></LB.LIST.BULLET
  22643. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22644. ></RBW-AUTOGEN
  22645. ></RBW-MARKER
  22646. ><RBW-PARABODY>Which actions the class executes after (re&truehy;)activation</RBW-PARABODY
  22647. ></LB.LIST.BULLET
  22648. ><B.BODY><RBW-IDXTERM TERM1="class" TERM2="state transitions"></RBW-IDXTERM
  22649. >A state diagram describes the behavior of a single class of objects. All instances of a class have the same behavior, because they share the same class features, so they all share the same state diagram. But as each object has its own attribute values, so each object also has its own state. Each object is independent of other objects and proceeds at its own pace.</B.BODY
  22650. ></LABEL
  22651. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22652. >Types of STDs</L.LABEL
  22653. ><B.BODY>There are two kinds of STDs:<RBW-IDXTERM TERM1="one-shot life cycle, in STD"></RBW-IDXTERM
  22654. ><RBW-IDXTERM TERM1="continuous loop, in STD"></RBW-IDXTERM
  22655. ></B.BODY
  22656. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22657. ></RBW-AUTOGEN
  22658. ></RBW-MARKER
  22659. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>One&truehy;shot life cycles</CX5FX5FBULLET.EMPHASIS
  22660. > describe objects with finite lives. It has initial and final states:</RBW-PARABODY
  22661. ></LB.LIST.BULLET
  22662. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  22663. ></RBW-MARKER
  22664. ><RBW-PARABODY>The initial state, in which the object is created, is a solid circle.</RBW-PARABODY
  22665. ></LB2.LIST.BULLET.2
  22666. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  22667. ></RBW-MARKER
  22668. ><RBW-PARABODY>The final state, in which the object is destroyed, is a bull’s&truehy;eye.</RBW-PARABODY
  22669. ></LB2.LIST.BULLET.2
  22670. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22671. ></RBW-AUTOGEN
  22672. ></RBW-MARKER
  22673. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Continuous loops</CX5FX5FBULLET.EMPHASIS
  22674. > describe objects where it is unimportant how the loop is started or ended. </RBW-PARABODY
  22675. ></LB.LIST.BULLET
  22676. ></LABEL
  22677. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22678. >Activities and actions</L.LABEL
  22679. ><B.BODY><RBW-IDXTERM TERM1="action, in STD"></RBW-IDXTERM
  22680. ><RBW-IDXTERM TERM1="activity, in STD"></RBW-IDXTERM
  22681. >You use activities and actions to describe the response of an object to an event:</B.BODY
  22682. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="81p"><COLSPEC COLNAME="2" COLWIDTH="126p"><COLSPEC COLNAME="3" COLWIDTH="126p"><COLSPEC COLNAME="4" COLWIDTH="117p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operation</CELLHEADING
  22683. ></ENTRY
  22684. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Internal Structure</CELLHEADING
  22685. ></ENTRY
  22686. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Character</CELLHEADING
  22687. ></ENTRY
  22688. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Associated With</CELLHEADING
  22689. ></ENTRY
  22690. ></RBW-ROW
  22691. ></THEAD
  22692. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Activity</CELLBODY
  22693. ></ENTRY
  22694. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Relevant for control purposes</CELLBODY
  22695. ></ENTRY
  22696. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sequential or continuous; takes time to complete</CELLBODY
  22697. ></ENTRY
  22698. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>State</CELLBODY
  22699. ></ENTRY
  22700. ></RBW-ROW
  22701. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Action</CELLBODY
  22702. ></ENTRY
  22703. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Not relevant for control purposes</CELLBODY
  22704. ></ENTRY
  22705. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Instantaneous</CELLBODY
  22706. ></ENTRY
  22707. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  22708. ></ENTRY
  22709. ></RBW-ROW
  22710. ></TBODY
  22711. ></TGROUP
  22712. ></RBW-TABLE
  22713. ><B.BODY>You can define an activity further through graphical decomposition. Opening an activity leads to another STD in which the activity is contained, or that is the definition itself.</B.BODY
  22714. ><B.BODY>An activity has a starting event, an ending event, and possibly some intermediate events. A continuous activity persists until an event terminates it by causing a transition from the state. A sequential activity terminates by itself after an interval of time.</B.BODY
  22715. ></LABEL
  22716. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22717. >Decomposition</L.LABEL
  22718. ><B.BODY>Do not use super states to specify events or concurrency. Specify these through decomposition diagrams. Use decomposition to define activities as well. Each state in the decomposition diagram represents one step of the activity. The decomposition diagram is a one&truehy;shot diagram with input and output transitions.</B.BODY
  22719. ></LABEL
  22720. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22721. >Example STD</L.LABEL
  22722. ><B.BODY>The following illustration shows a sample STD:</B.BODY
  22723. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00155.tif" origseq="2" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22724. ></FA.FIGURE.ANCHOR
  22725. ></LABEL
  22726. ><SUBSECTION><SS.SUBSEC.HEAD>Symbols<RBW-IDXTERM TERM1="State Transition Diagram" TERM2="symbols in"></RBW-IDXTERM
  22727. ><RBW-IDXTERM TERM1="symbols" TERM2="in STD"></RBW-IDXTERM
  22728. ></SS.SUBSEC.HEAD
  22729. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22730. >Introduction</L.LABEL
  22731. ><B.BODY>This section describes the symbols used in the STD. The following illustration shows the symbols as they appear in the diagram control panel:</B.BODY
  22732. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00156.unk" origfile="pics/std_syms.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22733. ></FA.FIGURE.ANCHOR
  22734. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  22735. ></RBW-AUTOGEN
  22736. >The Vertex, Select, Note and Note connector icons are common to all diagrams. They are described in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  22737. >.</N.NOTE
  22738. ></LABEL
  22739. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22740. >State<RBW-IDXTERM TERM1="state" TERM2="symbol in STD"></RBW-IDXTERM
  22741. ></L.LABEL
  22742. ><B.BODY>A state represents an externally observable mode of behavior, i.e. an interval of time over which some behavior persists. During its life, an object passes through various states of behavior. As a state occupies an interval of time, it has duration. A state is passive, which means that no transformations occur within a state. However, a state can have activities running internally. Use the <RBW-XREF REFID="32452" TYPE="XREF-TEXTCOPY">State with internal actions</RBW-XREF
  22743. > to add actions/activities to a state.</B.BODY
  22744. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00157.unk" origfile="pics/std_stat.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22745. ></FA.FIGURE.ANCHOR
  22746. ><B.BODY>The name of the state is the name of the behavior exhibited by the object. </B.BODY
  22747. ></LABEL
  22748. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22749. ><RBW-ANCHOR ID="32452"></RBW-ANCHOR
  22750. >State with internal actions</L.LABEL
  22751. ><FA.FIGURE.ANCHOR>A special kind of state is the state with internal actions. It is interchangeable with the state described above. In the bottom section you can type actions that are initiated by this state.</FA.FIGURE.ANCHOR
  22752. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00158.unk" origfile="pics/std_stia.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22753. ></FA.FIGURE.ANCHOR
  22754. ><B.BODY>The syntax of the action is as follows:</B.BODY
  22755. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="151p"><COLSPEC COLNAME="2" COLWIDTH="151p"><COLSPEC COLNAME="3" COLWIDTH="151p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Syntax</CELLHEADING
  22756. ></ENTRY
  22757. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Examples</CELLHEADING
  22758. ></ENTRY
  22759. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>explanation</CELLHEADING
  22760. ></ENTRY
  22761. ></RBW-ROW
  22762. ></THEAD
  22763. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>event/action</CELLBODY
  22764. ></ENTRY
  22765. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>entry/entry&truehy;action</CELLBODY
  22766. ><CELLBODY>coins in(amount)/add to balance</CELLBODY
  22767. ><CELLBODY>exit/exit&truehy;action</CELLBODY
  22768. ></ENTRY
  22769. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>action to enter the state</CELLBODY
  22770. ><CELLBODY>action that takes place inside the state</CELLBODY
  22771. ><CELLBODY>action to exit the state</CELLBODY
  22772. ></ENTRY
  22773. ></RBW-ROW
  22774. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>do/activity</CELLBODY
  22775. ></ENTRY
  22776. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>do/Warning: XtRemoveGrab asked to remove a widget not on the list</CELLBODY
  22777. ></ENTRY
  22778. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>an activity that may arise during the existence of the state</CELLBODY
  22779. ></ENTRY
  22780. ></RBW-ROW
  22781. ></TBODY
  22782. ></TGROUP
  22783. ></RBW-TABLE
  22784. ></LABEL
  22785. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22786. >Super State<RBW-IDXTERM TERM1="super state" TERM2="symbol in STD"></RBW-IDXTERM
  22787. ></L.LABEL
  22788. ><B.BODY>A super state is a way of generalizing parts of a diagram. The generalized part, the super state, can be treated from the outside as a single state.</B.BODY
  22789. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00159.unk" origfile="pics/std_sups.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22790. ></FA.FIGURE.ANCHOR
  22791. ><B.BODY>In the diagram, the super state is a rectangle with rounded corners. States and transitions inside the super state are connected to the outside via the super state only. Transition arrows can be attached to the super state from the inside and the outside. By nesting a relatively autonomous part of a diagram in a super state, the number of transitions can be reduced, thereby clearing up the diagram.</B.BODY
  22792. ></LABEL
  22793. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22794. >Initial state<RBW-IDXTERM TERM1="initial state" TERM2="symbol in STD"></RBW-IDXTERM
  22795. ></L.LABEL
  22796. ><BI.BODY.INTRO>The initial state is the first state of behavior of an object after its creation.</BI.BODY.INTRO
  22797. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00160.unk" origfile="pics/std_star.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22798. ></FA.FIGURE.ANCHOR
  22799. ></LABEL
  22800. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22801. >Final state<RBW-IDXTERM TERM1="final state" TERM2="symbol in STD"></RBW-IDXTERM
  22802. ></L.LABEL
  22803. ><BI.BODY.INTRO>The final state is the last state of behavior of an object before it expires or is destroyed.</BI.BODY.INTRO
  22804. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00161.unk" origfile="pics/std_fina.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22805. ></FA.FIGURE.ANCHOR
  22806. ></LABEL
  22807. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22808. >History State</L.LABEL
  22809. ><BI.BODY.INTRO>A history state is shown as a small circle with capital H and can only be inserted in a super state. Only one history state can exist in a one superstate.</BI.BODY.INTRO
  22810. ><B.BODY>The history state symbolizes the status quo of the super state and its sub states at the moment that an event is activated from the super state to a state external to the super state. </B.BODY
  22811. ><B.BODY>When the process resumes at the superstate, you can return a transition to the history state in the superstate to resume at the level that the superstate had before it was left.</B.BODY
  22812. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00162.unk" origfile="pics/std_hist.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22813. ></FA.FIGURE.ANCHOR
  22814. ><B.BODY>A history state can have multiple incoming events/actions. </B.BODY
  22815. ><B.BODY>It usually does not have outgoing events/actions.</B.BODY
  22816. ></LABEL
  22817. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22818. >Concurrent state separators and State regions</L.LABEL
  22819. ><BI.BODY.INTRO>Horizontal and vertical concurrent state separators can be used to create concurrent state regions in a super state.</BI.BODY.INTRO
  22820. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00163.unk" origfile="pics/std_comp.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22821. ></FA.FIGURE.ANCHOR
  22822. ></LABEL
  22823. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22824. >Complex transitions</L.LABEL
  22825. ><BI.BODY.INTRO>With the horizontal and vertical Complex Transition Node you can converge and diverge transitions.</BI.BODY.INTRO
  22826. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00164.unk" origfile="pics/std_cota.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22827. ></FA.FIGURE.ANCHOR
  22828. ><B.BODY>Use the horizontal Complex Transition Node to converge/diverge more or less vertical transitions, and the vertical Complex Transition Node to converge/diverge more or less horizontal transitions.</B.BODY
  22829. ></LABEL
  22830. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22831. >Class<RBW-IDXTERM TERM1="class" TERM2="symbol in STD"></RBW-IDXTERM
  22832. ></L.LABEL
  22833. ><B.BODY>A class is a group of objects with similar properties (attributes), common behavior (operations), common relationships to other objects and common semantics.</B.BODY
  22834. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00165.unk" origfile="pics/std_clas.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22835. ></FA.FIGURE.ANCHOR
  22836. ><B.BODY>STD classes can be further defined through graphical decomposition. Opening an STD class leads to a CD in which the STD class is contained, or that is the definition itself.</B.BODY
  22837. ></LABEL
  22838. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22839. >Transition<RBW-IDXTERM TERM1="event" TERM2="symbol in STD"></RBW-IDXTERM
  22840. ></L.LABEL
  22841. ><B.BODY>An event is something that happens at a point in time. It has no significant duration. An event causes, or “fires” a change of state: the transition. The arrow of the transition indicates the order in which the states appear. A complete STD specifies a state sequence that is caused by an event sequence.</B.BODY
  22842. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00166.unk" origfile="pics/std_tran.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22843. ></FA.FIGURE.ANCHOR
  22844. ><B.BODY>Note that events can only exist between two states: </B.BODY
  22845. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22846. ></RBW-AUTOGEN
  22847. ></RBW-MARKER
  22848. ><RBW-PARABODY>states</RBW-PARABODY
  22849. ></LB.LIST.BULLET
  22850. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22851. ></RBW-AUTOGEN
  22852. ></RBW-MARKER
  22853. ><RBW-PARABODY>states with internal actions</RBW-PARABODY
  22854. ></LB.LIST.BULLET
  22855. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22856. ></RBW-AUTOGEN
  22857. ></RBW-MARKER
  22858. ><RBW-PARABODY>superstates</RBW-PARABODY
  22859. ></LB.LIST.BULLET
  22860. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22861. ></RBW-AUTOGEN
  22862. ></RBW-MARKER
  22863. ><RBW-PARABODY>start states (only as source)</RBW-PARABODY
  22864. ></LB.LIST.BULLET
  22865. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22866. ></RBW-AUTOGEN
  22867. ></RBW-MARKER
  22868. ><RBW-PARABODY>final states (only as target)</RBW-PARABODY
  22869. ></LB.LIST.BULLET
  22870. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22871. ></RBW-AUTOGEN
  22872. ></RBW-MARKER
  22873. ><RBW-PARABODY>history states (only as target)</RBW-PARABODY
  22874. ></LB.LIST.BULLET
  22875. ><B.BODY>Events to classes are drawn with event messages.</B.BODY
  22876. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22877. >Label</SL.SUBLABEL
  22878. ><B.BODY>In STDs, the events are the label names of the transitions between the states. You list conditions in square brackets after an event name. An action is indicated on a transition after the event name; it is preceded by a slash.:</B.BODY
  22879. ><E.EXAMPLE>event [(attribute)] [/ action] [guard] [/ event2] </E.EXAMPLE
  22880. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  22881. ></RBW-AUTOGEN
  22882. ><event2> can only be a target.</N.NOTE
  22883. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  22884. ></RBW-AUTOGEN
  22885. >In the state symbols, you indicate the activities of that state of behavior through do: followed by the activity.</N.NOTE
  22886. ></LABEL
  22887. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22888. >Event message<RBW-IDXTERM TERM1="event message" TERM2="symbol in STD"></RBW-IDXTERM
  22889. ><RBW-IDXTERM TERM1="message" TERM2="symbol in STD"></RBW-IDXTERM
  22890. ></L.LABEL
  22891. ><B.BODY>An event message sends a message to a class.</B.BODY
  22892. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00167.unk" origfile="pics/std_evem.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22893. ></FA.FIGURE.ANCHOR
  22894. ><B.BODY>For every event message there must be an operation defined in a CD. Such an operation can be defined in two ways:</B.BODY
  22895. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22896. ></RBW-AUTOGEN
  22897. ></RBW-MARKER
  22898. ><RBW-PARABODY>Defined directly by the user for the class</RBW-PARABODY
  22899. ></LB.LIST.BULLET
  22900. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22901. ></RBW-AUTOGEN
  22902. ></RBW-MARKER
  22903. ><RBW-PARABODY>Added to the class indirectly during code generation as a result of one of the following:</RBW-PARABODY
  22904. ></LB.LIST.BULLET
  22905. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  22906. ></RBW-MARKER
  22907. ><RBW-PARABODY>Data attributes</RBW-PARABODY
  22908. ></LB2.LIST.BULLET.2
  22909. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  22910. ></RBW-MARKER
  22911. ><RBW-PARABODY>Associations</RBW-PARABODY
  22912. ></LB2.LIST.BULLET.2
  22913. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  22914. ></RBW-MARKER
  22915. ><RBW-PARABODY>Class persistency</RBW-PARABODY
  22916. ></LB2.LIST.BULLET.2
  22917. ><B.BODY>Event messages can be further defined through graphical decomposition. Opening an event message leads to a new STD. The new diagram’s name is the name of the class preceding the name of the opened event message. Event messages always originate from events and end in a class.</B.BODY
  22918. ></LABEL
  22919. ></SUBSECTION
  22920. ></SECTION
  22921. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35633"></RBW-ANCHOR
  22922. >Use Case Diagram</S.SECTION.HEAD
  22923. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22924. >Purpose</L.LABEL
  22925. ><B.BODY>UCDs allow you to capture business events by analyzing how objects external to the system interact with the system. A UCD represents a particular sequence of transactions between the system and an actor (an end user or system external to the system being analyzed). You can use UCDs to analyze system requirements and to help you define system boundaries.</B.BODY
  22926. ></LABEL
  22927. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22928. >Example UCD</L.LABEL
  22929. ><B.BODY>The following UCD models a banking system. Customer, Auditor, Clerk and Loan Officer are actors. Counter Transaction, Loan Application, and Audit are use cases — ways in which the actors use the system.</B.BODY
  22930. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00168.unk" origfile="pics/ucd_ex.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22931. ></FA.FIGURE.ANCHOR
  22932. ><B.BODY>Additional UCDs might be used to further refine this UCD. For example, you might have a UCD that describes the Loan Application use case in greater detail. You may also have a few Sequence Diagrams that describe the Counter Transaction use case in the form of a number of scenarios: one for a successful transaction and one or more for transactions that are not successful.</B.BODY
  22933. ><B.BODY>The analyst must choose the appropriate level of detail. You need enough detail to fully capture the business events and system requirements; however, you want to avoid using UCDs for functional decomposition.</B.BODY
  22934. ></LABEL
  22935. ><SUBSECTION><SS.SUBSEC.HEAD>Symbols</SS.SUBSEC.HEAD
  22936. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22937. >Introduction</L.LABEL
  22938. ><B.BODY><RBW-IDXTERM TERM1="Use Case Diagram" TERM2="symbols in"></RBW-IDXTERM
  22939. ><RBW-IDXTERM TERM1="symbols" TERM2="in UCD"></RBW-IDXTERM
  22940. >This section describes the symbols used in the UCD. The following illustration shows the symbols as they appear in the diagram control panel:</B.BODY
  22941. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00169.unk" origfile="pics/ucd_syms.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22942. ></FA.FIGURE.ANCHOR
  22943. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  22944. ></RBW-AUTOGEN
  22945. >The Vertex, Select, Note and Note connection icons are common to all diagrams. They are described in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  22946. >.</N.NOTE
  22947. ></LABEL
  22948. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22949. >Use case<RBW-IDXTERM TERM1="use case" TERM2="symbol in UCD"></RBW-IDXTERM
  22950. ></L.LABEL
  22951. ><B.BODY>The oval symbol represents a use case: the system or part of the system with which an actor communicates. If necessary, a use case can be further refined in another UCD.</B.BODY
  22952. ><FA.FIGURE.ANCHOR><DTAG-ERR rbeid="2946"><DTAG-MSG>Document has an empty ('') pathname
  22953. for a graphic included by reference</DTAG-MSG
  22954. ></DTAG-ERR
  22955. ><RBW-GRAPHIC filename="00170.unk" origseq="63" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  22956. ></FA.FIGURE.ANCHOR
  22957. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  22958. >Properties</SL.SUBLABEL
  22959. ><B.BODY>You can use the following properties to specify additional information about the use case:</B.BODY
  22960. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22961. ></RBW-AUTOGEN
  22962. ></RBW-MARKER
  22963. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Basic Course of Action, use case property"></RBW-IDXTERM
  22964. >Basic Course of Action.</CX5FX5FBULLET.EMPHASIS
  22965. > A free text field in which you can describe the most common or important sequence of transactions for the use case.</RBW-PARABODY
  22966. ></LB.LIST.BULLET
  22967. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22968. ></RBW-AUTOGEN
  22969. ></RBW-MARKER
  22970. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Alternative Course of Action, use case property"></RBW-IDXTERM
  22971. >Alternative Course of Action.</CX5FX5FBULLET.EMPHASIS
  22972. > A free text field in which you can describe the variants on the basic course; for example, the sequence of transactions that occurs in the case of an error.</RBW-PARABODY
  22973. ></LB.LIST.BULLET
  22974. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22975. ></RBW-AUTOGEN
  22976. ></RBW-MARKER
  22977. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Precondition, use case property"></RBW-IDXTERM
  22978. >Precondition.</CX5FX5FBULLET.EMPHASIS
  22979. > A free text field in which you can describe the conditions that must be met before the use case can be performed.</RBW-PARABODY
  22980. ></LB.LIST.BULLET
  22981. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22982. ></RBW-AUTOGEN
  22983. ></RBW-MARKER
  22984. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Postcondition, use case property"></RBW-IDXTERM
  22985. >Postcondition.</CX5FX5FBULLET.EMPHASIS
  22986. > A free text field in which you can describe the state of the system after the use case is performed.</RBW-PARABODY
  22987. ></LB.LIST.BULLET
  22988. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  22989. ></RBW-AUTOGEN
  22990. ></RBW-MARKER
  22991. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Classification, use case property"></RBW-IDXTERM
  22992. >Classification.</CX5FX5FBULLET.EMPHASIS
  22993. > A field that contains one of the following values:</RBW-PARABODY
  22994. ></LB.LIST.BULLET
  22995. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  22996. ></RBW-MARKER
  22997. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>primary</CX5FX5FBULLET.EMPHASIS
  22998. > (default) indicates that this use case represents the basic course of action.</RBW-PARABODY
  22999. ></LB2.LIST.BULLET.2
  23000. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  23001. ></RBW-MARKER
  23002. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>secondary</CX5FX5FBULLET.EMPHASIS
  23003. > indicates that this use case represents the alternative course of action.</RBW-PARABODY
  23004. ></LB2.LIST.BULLET.2
  23005. ></LABEL
  23006. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23007. >Actor<RBW-IDXTERM TERM1="actor" TERM2="symbol in UCD"></RBW-IDXTERM
  23008. ></L.LABEL
  23009. ><FA.FIGURE.ANCHOR>The “stick man” figure represents an entity external to the system — an end user or system — that is interacting with the system.</FA.FIGURE.ANCHOR
  23010. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00171.unk" origfile="pics/codactor.gif" origtype="X" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  23011. ></FA.FIGURE.ANCHOR
  23012. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23013. >Properties</SL.SUBLABEL
  23014. ><B.BODY>You can use the following properties to specify additional information about the actor:</B.BODY
  23015. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23016. ></RBW-AUTOGEN
  23017. ></RBW-MARKER
  23018. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Type, UCD actor property"></RBW-IDXTERM
  23019. >Type.</CX5FX5FBULLET.EMPHASIS
  23020. > A field that contains one of the following values:</RBW-PARABODY
  23021. ></LB.LIST.BULLET
  23022. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  23023. ></RBW-MARKER
  23024. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>user</CX5FX5FBULLET.EMPHASIS
  23025. > (default) indicates that the actor represents an end user.</RBW-PARABODY
  23026. ></LB2.LIST.BULLET.2
  23027. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  23028. ></RBW-MARKER
  23029. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>system</CX5FX5FBULLET.EMPHASIS
  23030. > indicates that the actor represents another system.</RBW-PARABODY
  23031. ></LB2.LIST.BULLET.2
  23032. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23033. ></RBW-AUTOGEN
  23034. ></RBW-MARKER
  23035. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Initiator, UCD actor property"></RBW-IDXTERM
  23036. >Initiator.</CX5FX5FBULLET.EMPHASIS
  23037. > A field that is either true or false:</RBW-PARABODY
  23038. ></LB.LIST.BULLET
  23039. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  23040. ></RBW-MARKER
  23041. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>true</CX5FX5FBULLET.EMPHASIS
  23042. > indicates that this actor initiates the use case.</RBW-PARABODY
  23043. ></LB2.LIST.BULLET.2
  23044. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  23045. ></RBW-MARKER
  23046. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>false</CX5FX5FBULLET.EMPHASIS
  23047. > (default) indicates that this actor participates in the use case, but does not initiate it.</RBW-PARABODY
  23048. ></LB2.LIST.BULLET.2
  23049. ></LABEL
  23050. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23051. >Communication association<RBW-IDXTERM TERM1="communication association" TERM2="symbol in UCD"></RBW-IDXTERM
  23052. ></L.LABEL
  23053. ><B.BODY>The line and the arrow represent the communication between the actor and the use case. To represent undirected (two&truehy;way) communication, use the line that has no arrowhead:</B.BODY
  23054. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00172.tif" origseq="65" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  23055. ></FA.FIGURE.ANCHOR
  23056. ><B.BODY>To represent directed (one&truehy;way) communication, use the arrow to show the direction of communication:</B.BODY
  23057. ><B.BODY><RBW-GRAPHIC filename="00173.tif" origseq="67" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  23058. ></B.BODY
  23059. ></LABEL
  23060. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23061. >Use case generalization</L.LABEL
  23062. ><B.BODY><RBW-IDXTERM TERM1="use case generalization" TERM2="symbol in UCD"></RBW-IDXTERM
  23063. >The dashed arrow indicates that the source use case includes the behavior of the destination use case.</B.BODY
  23064. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00174.tif" origseq="68" origtype="I" origdoc="../../sources/mg/dgmsuml.fm5.mif"></RBW-GRAPHIC
  23065. ></FA.FIGURE.ANCHOR
  23066. ></LABEL
  23067. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23068. >Use case generalization stereotypes</L.LABEL
  23069. ><B.BODY>The three stereotypes are:</B.BODY
  23070. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23071. >None</SL.SUBLABEL
  23072. ><B.BODY>This is the blank use case generalization stereotype button. The use case generalization is not further specified.</B.BODY
  23073. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23074. >Uses</SL.SUBLABEL
  23075. ><B.BODY>Marking a use case generalization with «uses» indicates that the source use case in the generalization includes the behaviour of the target use case.</B.BODY
  23076. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23077. >Extends</SL.SUBLABEL
  23078. ><B.BODY>Marking a use case generalization with «extends» indicates that an instance of the source use case in the generalization may include behaviour of an instance of the target use case.</B.BODY
  23079. ><RBWAUTO-0001></RBWAUTO-0001
  23080. ><!--
  23081.  
  23082.  
  23083.  
  23084.  
  23085.  
  23086. CONVERTING SOURCE FILE ../../sources/mg/mgcheck.fm5.mif
  23087.  
  23088.  
  23089. --><B.BODY></B.BODY
  23090. ><B.BODY></B.BODY
  23091. ><B.BODY></B.BODY
  23092. ><B.BODY></B.BODY
  23093. ><B.BODY></B.BODY
  23094. ></LABEL
  23095. ></SUBSECTION
  23096. ></SECTION
  23097. ></CHAPTER
  23098. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  23099. ></RBW-AUTOGEN
  23100. ><RBW-ANCHOR ID="30582"></RBW-ANCHOR
  23101. >Checking<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  23102. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  23103. ></RBW-SYSOBJ
  23104. ></C.CHAPTER.HEAD
  23105. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23106. >Introduction</L.LABEL
  23107. ><B.BODY>One advantage of doing design work online is that you can check your models using ObjectTeam’s checking utilities. These utilities can help you find errors and inconsistencies in your design, minimizing the risk of expensive design flaws. </B.BODY
  23108. ></LABEL
  23109. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23110. >Three types of checking</L.LABEL
  23111. ><B.BODY>ObjectTeam provides three types of checking:</B.BODY
  23112. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23113. ></RBW-AUTOGEN
  23114. ></RBW-MARKER
  23115. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Implicit checking</CX5FX5FBULLET.EMPHASIS
  23116. > is done whenever you use the diagram editors. Implicit checking ensures that your diagrams are always syntactically correct by preventing you from creating invalid objects or connections.</RBW-PARABODY
  23117. ></LB.LIST.BULLET
  23118. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23119. ></RBW-AUTOGEN
  23120. ></RBW-MARKER
  23121. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Explicit checking</CX5FX5FBULLET.EMPHASIS
  23122. > occurs when you click a Check menu. You can check individual diagrams or ensure that a set of diagrams are complete. Explicit checking is particularly useful for code generation, ensuring that the Class Diagrams (CDs) are complete and correct.</RBW-PARABODY
  23123. ></LB.LIST.BULLET
  23124. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23125. ></RBW-AUTOGEN
  23126. ></RBW-MARKER
  23127. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Code generation checking</CX5FX5FBULLET.EMPHASIS
  23128. > is done as part of code generation to minimize errors.</RBW-PARABODY
  23129. ></LB.LIST.BULLET
  23130. ><B.BODY>This chapter describes each type of checking and how to use explicit checking.</B.BODY
  23131. ></LABEL
  23132. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23133. >Customized checking</L.LABEL
  23134. ><B.BODY>Tcl scripts define all checking ObjectTeam performs. You can implement your own checks by modifying these scripts or by creating your own. For details on customizing checking, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  23135. ><CX5FX5FTITLE></CX5FX5FTITLE
  23136. >.</B.BODY
  23137. ></LABEL
  23138. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23139. >In this chapter</L.LABEL
  23140. ><B.BODY>This chapter contains the following sections:</B.BODY
  23141. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  23142. ></ENTRY
  23143. ></RBW-ROW
  23144. ></THEAD
  23145. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12375" TYPE="XREF-TEXTCOPY">Implicit Checking&rbwtab;5–2</RBW-XREF
  23146. ></SB.SECTION.BLOCK.TABLE
  23147. ></ENTRY
  23148. ></RBW-ROW
  23149. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22445" TYPE="XREF-TEXTCOPY">Explicit Checking&rbwtab;5–3</RBW-XREF
  23150. ></SB.SECTION.BLOCK.TABLE
  23151. ></ENTRY
  23152. ></RBW-ROW
  23153. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16460" TYPE="XREF-TEXTCOPY">Code Generation Checking&rbwtab;5–6</RBW-XREF
  23154. ></SB.SECTION.BLOCK.TABLE
  23155. ></ENTRY
  23156. ></RBW-ROW
  23157. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14409" TYPE="XREF-TEXTCOPY">Running a Check&rbwtab;5–7</RBW-XREF
  23158. ></SB.SECTION.BLOCK.TABLE
  23159. ></ENTRY
  23160. ></RBW-ROW
  23161. ></TBODY
  23162. ></TGROUP
  23163. ></RBW-TABLE
  23164. ></LABEL
  23165. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="checking" TERM2="implicit"></RBW-IDXTERM
  23166. ><RBW-IDXTERM TERM1="editing" TERM2="and checking"></RBW-IDXTERM
  23167. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  23168. ><RBW-IDXTERM TERM1="diagram" TERM2="checking, implicit"></RBW-IDXTERM
  23169. ><RBW-ANCHOR ID="12375"></RBW-ANCHOR
  23170. >Implicit Checking</S.SECTION.HEAD
  23171. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23172. >Introduction</L.LABEL
  23173. ><B.BODY>The ObjectTeam environment supports the OMT development method, which prescribes certain low&truehy;level details, such as the following:</B.BODY
  23174. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23175. ></RBW-AUTOGEN
  23176. ></RBW-MARKER
  23177. ><RBW-PARABODY>Which symbols you can use in a diagram</RBW-PARABODY
  23178. ></LB.LIST.BULLET
  23179. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23180. ></RBW-AUTOGEN
  23181. ></RBW-MARKER
  23182. ><RBW-PARABODY>Which of these symbols can be connected</RBW-PARABODY
  23183. ></LB.LIST.BULLET
  23184. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23185. ></RBW-AUTOGEN
  23186. ></RBW-MARKER
  23187. ><RBW-PARABODY>How these symbols are connected</RBW-PARABODY
  23188. ></LB.LIST.BULLET
  23189. ><B.BODY>Implicit checking enforces these rules. ObjectTeam monitors your actions while you create or modify a diagram. If you attempt to carry out an action that is inconsistent with the OMT notation, a warning appears in the message area of the editor.</B.BODY
  23190. ></LABEL
  23191. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23192. >Example</L.LABEL
  23193. ><B.BODY>For example, if you try to make an illegal connection, such as attaching a loop symbol from a class to an association, the editor displays the following message and prevents you from carrying out the action:</B.BODY
  23194. ><EWM.EXAMPLEW.MONO>No such connector type allowed between these component types.</EWM.EXAMPLEW.MONO
  23195. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00175.tif" origseq="2" origtype="I" origdoc="../../sources/mg/mgcheck.fm5.mif"></RBW-GRAPHIC
  23196. ></FA.FIGURE.ANCHOR
  23197. ></LABEL
  23198. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23199. >Other methodology constraints</L.LABEL
  23200. ><B.BODY>On a higher level, the methodology also dictates:</B.BODY
  23201. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23202. ></RBW-AUTOGEN
  23203. ></RBW-MARKER
  23204. ><RBW-PARABODY>What each type of diagram represents</RBW-PARABODY
  23205. ></LB.LIST.BULLET
  23206. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23207. ></RBW-AUTOGEN
  23208. ></RBW-MARKER
  23209. ><RBW-PARABODY>When to use each type of diagram</RBW-PARABODY
  23210. ></LB.LIST.BULLET
  23211. ><B.BODY>These high&truehy;level points are taken care of by the organization of your project into phases and the types of diagrams that are available.</B.BODY
  23212. ></LABEL
  23213. ></SECTION
  23214. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="checking" TERM2="explicit"></RBW-IDXTERM
  23215. ><RBW-IDXTERM TERM1="diagram" TERM2="checking, explicit"></RBW-IDXTERM
  23216. ><RBW-ANCHOR ID="22445"></RBW-ANCHOR
  23217. >Explicit Checking</S.SECTION.HEAD
  23218. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23219. >Introduction</L.LABEL
  23220. ><B.BODY><RBW-IDXTERM TERM1="diagram component" TERM2="checking"></RBW-IDXTERM
  23221. >Once you have completed a diagram, you can check whether its components are specified adequately from the Check menu:</B.BODY
  23222. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="162p"><COLSPEC COLNAME="2" COLWIDTH="288p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Check Menu Command</CELLHEADING
  23223. ></ENTRY
  23224. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Available From</CELLHEADING
  23225. ></ENTRY
  23226. ></RBW-ROW
  23227. ></THEAD
  23228. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contents</CELLBODY
  23229. ></ENTRY
  23230. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Browser and editors (all diagrams)</CELLBODY
  23231. ></ENTRY
  23232. ></RBW-ROW
  23233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Global Model</CELLBODY
  23234. ></ENTRY
  23235. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Browser</CELLBODY
  23236. ></ENTRY
  23237. ></RBW-ROW
  23238. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use Case Model</CELLBODY
  23239. ></ENTRY
  23240. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Browser</CELLBODY
  23241. ></ENTRY
  23242. ></RBW-ROW
  23243. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Local Model</CELLBODY
  23244. ></ENTRY
  23245. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Browser and editors (CD, COD, SD, STD)</CELLBODY
  23246. ></ENTRY
  23247. ></RBW-ROW
  23248. ></TBODY
  23249. ></TGROUP
  23250. ></RBW-TABLE
  23251. ><Q.QUERY><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZQUERY.CHARACTER>+&rbwtab;</CX5FX5FZQUERY.CHARACTER
  23252. ></RBW-AUTOGEN
  23253. ></RBW-MARKER
  23254. ><RBW-PARABODY>Check that Check Local model does check COD.</RBW-PARABODY
  23255. ></Q.QUERY
  23256. ></LABEL
  23257. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23258. >Phase affects rules that are checked<RBW-IDXTERM TERM1="phase" TERM2="affect on checking"></RBW-IDXTERM
  23259. ></L.LABEL
  23260. ><B.BODY>ObjectTeam provides a set of rules for each command on the Check menu. Which rules are checked when you use a particular Check menu command depends on the current phase. For example, the set of rules for the Local Model command includes the following:</B.BODY
  23261. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23262. ></RBW-AUTOGEN
  23263. ></RBW-MARKER
  23264. ><RBW-PARABODY>An attribute and a role on the same class cannot have the same name.</RBW-PARABODY
  23265. ></LB.LIST.BULLET
  23266. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23267. ></RBW-AUTOGEN
  23268. ></RBW-MARKER
  23269. ><RBW-PARABODY>A class must have an operation defined for each event that it receives.</RBW-PARABODY
  23270. ></LB.LIST.BULLET
  23271. ><B.BODY>If you are in the Analysis phase, only the first of these rules is checked. If you are in the Object Design phase, both rules are checked.</B.BODY
  23272. ></LABEL
  23273. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23274. ><RBW-IDXTERM TERM1="checking" TERM2="customizing"></RBW-IDXTERM
  23275. ><RBW-IDXTERM TERM1="customizing" TERM2="checking"></RBW-IDXTERM
  23276. >List of rules and customizing rules</L.LABEL
  23277. ><B.BODY>This remainder of this section describes each Check menu command briefly. For a complete list of the rules provided for each Check menu command, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  23278. ><CX5FX5FTITLE></CX5FX5FTITLE
  23279. >. That guide also describes how to customize Check menu commands by:</B.BODY
  23280. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23281. ></RBW-AUTOGEN
  23282. ></RBW-MARKER
  23283. ><RBW-PARABODY>Changing which rules are run during a particular phase</RBW-PARABODY
  23284. ></LB.LIST.BULLET
  23285. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23286. ></RBW-AUTOGEN
  23287. ></RBW-MARKER
  23288. ><RBW-PARABODY>Changing the message displayed when a rule is violated</RBW-PARABODY
  23289. ></LB.LIST.BULLET
  23290. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23291. ></RBW-AUTOGEN
  23292. ></RBW-MARKER
  23293. ><RBW-PARABODY>Modifying a rule provided by ObjectTeam</RBW-PARABODY
  23294. ></LB.LIST.BULLET
  23295. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23296. ></RBW-AUTOGEN
  23297. ></RBW-MARKER
  23298. ><RBW-PARABODY>Adding rules to those provided by ObjectTeam</RBW-PARABODY
  23299. ></LB.LIST.BULLET
  23300. ></LABEL
  23301. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23302. >Check Contents</L.LABEL
  23303. ><B.BODY>Check Contents checks the semantics of a diagram. Each diagram has a unique set of rules.</B.BODY
  23304. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23305. >Running Check Contents</SL.SUBLABEL
  23306. ><B.BODY>To select Check Contents from the Browser, you must first select a diagram in the Information area. Selecting Check Contents from the diagram editor checks the entire diagram regardless of whether you have selected objects in it.</B.BODY
  23307. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23308. >Sample rules</SL.SUBLABEL
  23309. ><B.BODY>For example, Check Contents for the CD includes a rule to verify that all link attribute symbols are connected to associations. Check Contents for the SD includes a rule to verify that each event trace has exactly one initiator.</B.BODY
  23310. ></LABEL
  23311. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23312. ><RBW-ANCHOR ID="17684"></RBW-ANCHOR
  23313. >Check Global Model<RBW-IDXTERM TERM1="checking" TERM2="Global Model"></RBW-IDXTERM
  23314. ><RBW-IDXTERM TERM1="Global Model (Check menu)"></RBW-IDXTERM
  23315. ></L.LABEL
  23316. ><B.BODY>Check Global Model checks all classes (and all associated events) in the current system.</B.BODY
  23317. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23318. >Running Check Global Model</SL.SUBLABEL
  23319. ><B.BODY>To use Check Global Model, you must be at System level in the Browser. It does not matter whether you have selected items in the Information area.</B.BODY
  23320. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23321. >Sample rules</SL.SUBLABEL
  23322. ><B.BODY>The rules for Check Global Model are the same as the rules for Check Local Model. See the sample rules for Check Local Model.</B.BODY
  23323. ></LABEL
  23324. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23325. ><RBW-ANCHOR ID="21018"></RBW-ANCHOR
  23326. >Check Local Model<RBW-IDXTERM TERM1="checking" TERM2="Local Model"></RBW-IDXTERM
  23327. ><RBW-IDXTERM TERM1="Local Model (Check menu)"></RBW-IDXTERM
  23328. ></L.LABEL
  23329. ><B.BODY>Check Local Model checks selected classes or all classes in a selected diagram.</B.BODY
  23330. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23331. >Running Check Local Model</SL.SUBLABEL
  23332. ><B.BODY>To run Check Local Model from the Browser, you must first select a diagram or CDM. </B.BODY
  23333. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23334. ></RBW-AUTOGEN
  23335. ></RBW-MARKER
  23336. ><RBW-PARABODY>If you have selected a diagram, ObjectTeam checks all classes in that diagram. The events checked depend on which diagram is selected, as shown in the table below.</RBW-PARABODY
  23337. ></LB.LIST.BULLET
  23338. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23339. ></RBW-AUTOGEN
  23340. ></RBW-MARKER
  23341. ><RBW-PARABODY>If you have selected a CDM, ObjectTeam checks that class and all its associated events.</RBW-PARABODY
  23342. ></LB.LIST.BULLET
  23343. ><B.BODY><RBW-IDXTERM TERM1="class" TERM2="checking"></RBW-IDXTERM
  23344. ><RBW-IDXTERM TERM1="event" TERM2="checking"></RBW-IDXTERM
  23345. ><RBW-IDXTERM TERM1="event message" TERM2="checking"></RBW-IDXTERM
  23346. ><RBW-IDXTERM TERM1="communication message" TERM2="checking"></RBW-IDXTERM
  23347. >When you run Check Local Model from a diagram, ObjectTeam checks all selected classes; if no classes are selected, it checks all classes. The events checked depend on which diagram is active, as shown in the table below. </B.BODY
  23348. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="198p"><COLSPEC COLNAME="2" COLWIDTH="252p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram Editor</CELLHEADING
  23349. ></ENTRY
  23350. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Of Events Checked</CELLHEADING
  23351. ></ENTRY
  23352. ></RBW-ROW
  23353. ></THEAD
  23354. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> CD (or CDM) </CELLBODY
  23355. ></ENTRY
  23356. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Events of all types</CELLBODY
  23357. ></ENTRY
  23358. ></RBW-ROW
  23359. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> COD </CELLBODY
  23360. ></ENTRY
  23361. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Communication Messages</CELLBODY
  23362. ></ENTRY
  23363. ></RBW-ROW
  23364. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> SD</CELLBODY
  23365. ></ENTRY
  23366. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Trace Events</CELLBODY
  23367. ></ENTRY
  23368. ></RBW-ROW
  23369. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> STD </CELLBODY
  23370. ></ENTRY
  23371. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD Events and Event Messages</CELLBODY
  23372. ></ENTRY
  23373. ></RBW-ROW
  23374. ></TBODY
  23375. ></TGROUP
  23376. ></RBW-TABLE
  23377. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23378. >Sample rules</SL.SUBLABEL
  23379. ><B.BODY>For example, Check Local Model includes a rule to check that no class has an attribute with the same name as a received event. It also includes a rule to ensure that special classes (such as enum and typedef) do not receive events.</B.BODY
  23380. ></LABEL
  23381. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23382. ><RBW-ANCHOR ID="13383"></RBW-ANCHOR
  23383. ><RBW-ANCHOR ID="checking"></RBW-ANCHOR
  23384. >Check Use Case Model</L.LABEL
  23385. ><B.BODY>Check Use Case Model checks all UCDs.</B.BODY
  23386. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23387. >Running Check Use Case Model</SL.SUBLABEL
  23388. ><B.BODY>To select Check Use Case Model from the Browser, you must first select a UCD in the Information area.</B.BODY
  23389. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23390. >Sample rules</SL.SUBLABEL
  23391. ><B.BODY>For example, the Check Use Case Model option includes a rule to check that each UCD has exactly one initiating actor and at least one associated SD.</B.BODY
  23392. ></LABEL
  23393. ></SECTION
  23394. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="checking" TERM2="for code generation"></RBW-IDXTERM
  23395. ><RBW-ANCHOR ID="16460"></RBW-ANCHOR
  23396. >Code Generation Checking</S.SECTION.HEAD
  23397. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23398. >Introduction</L.LABEL
  23399. ><B.BODY>From your design, you generate source code for an executable in a particular programming language. During code generation, ObjectTeam checks the syntax and semantics of all CDs that it is using. The results are reported in the Monitor window in which the code generator runs. </B.BODY
  23400. ></LABEL
  23401. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23402. >Check Local Model</L.LABEL
  23403. ><B.BODY>The checking process is particularly important for code generation, because errors stop the generation process. Warnings do not stop the generation process, but do indicate potential problems in your diagram. To ensure that your diagrams conform to all rules and restrictions, use Check | Local Model to check your diagrams before moving them to the Implementation phase.</B.BODY
  23404. ></LABEL
  23405. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23406. >For more information</L.LABEL
  23407. ><B.BODY>For more details on the code generation process, see the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  23408. ><CX5FX5FTITLE></CX5FX5FTITLE
  23409. > for the programming language that you are using.</B.BODY
  23410. ></LABEL
  23411. ></SECTION
  23412. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="checking" TERM2="invoking"></RBW-IDXTERM
  23413. ><RBW-ANCHOR ID="14409"></RBW-ANCHOR
  23414. >Running a Check</S.SECTION.HEAD
  23415. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23416. >Before you begin</L.LABEL
  23417. ><B.BODY>Save all diagrams before using any command on the Check menu.</B.BODY
  23418. ></LABEL
  23419. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23420. >How to run a check</L.LABEL
  23421. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  23422. ></RBW-AUTOGEN
  23423. ></RBW-MARKER
  23424. ><RBW-PARABODY>To run a check:</RBW-PARABODY
  23425. ></P.PROCEDURE
  23426. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  23427. ></RBW-AUTOGEN
  23428. ></RBW-MARKER
  23429. ><RBW-PARABODY>Start from the Browser or a diagram editor:</RBW-PARABODY
  23430. ></LN.LIST.NUM
  23431. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  23432. ></RBW-MARKER
  23433. ><RBW-PARABODY>In the Information area of the Browser, select the diagrams or CDMs that you want to check.</RBW-PARABODY
  23434. ></LB2.LIST.BULLET.2
  23435. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  23436. ></RBW-MARKER
  23437. ><RBW-PARABODY>In the diagram editor, make sure you have saved the current diagram.</RBW-PARABODY
  23438. ></LB2.LIST.BULLET.2
  23439. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  23440. ></RBW-AUTOGEN
  23441. ></RBW-MARKER
  23442. ><RBW-PARABODY>Click a command on the Check menu.</RBW-PARABODY
  23443. ></LN.LIST.NUM
  23444. ><LR.LIST.RESULT>ObjectTeam performs the checks, displaying the results in a Monitor window.</LR.LIST.RESULT
  23445. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00176.unk" origfile="pics/runcheck.gif" origtype="X" origdoc="../../sources/mg/mgcheck.fm5.mif"></RBW-GRAPHIC
  23446. ></FAR.FIGURE.ANCHOR.RIGHT
  23447. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  23448. ></RBW-AUTOGEN
  23449. ></RBW-MARKER
  23450. ><RBW-PARABODY>Optionally, from the Monitor window, save the results to a file or print them.</RBW-PARABODY
  23451. ></LN.LIST.NUM
  23452. ></LABEL
  23453. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23454. >Check status</L.LABEL
  23455. ><B.BODY><RBW-IDXTERM TERM1="checking" TERM2="diagram check status"></RBW-IDXTERM
  23456. ><RBW-IDXTERM TERM1="diagram" TERM2="check status"></RBW-IDXTERM
  23457. >Each diagram has a check status that can be included, for example, in a report. The check status is one of the following: </B.BODY
  23458. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23459. ></RBW-AUTOGEN
  23460. ></RBW-MARKER
  23461. ><RBW-PARABODY>Checked</RBW-PARABODY
  23462. ></LB.LIST.BULLET
  23463. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23464. ></RBW-AUTOGEN
  23465. ></RBW-MARKER
  23466. ><RBW-PARABODY>Not checked</RBW-PARABODY
  23467. ></LB.LIST.BULLET
  23468. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23469. ></RBW-AUTOGEN
  23470. ></RBW-MARKER
  23471. ><RBW-PARABODY>Check failed</RBW-PARABODY
  23472. ></LB.LIST.BULLET
  23473. ><B.BODY></B.BODY
  23474. ><RBWAUTO-0001></RBWAUTO-0001
  23475. ><!--
  23476.  
  23477.  
  23478.  
  23479.  
  23480.  
  23481. CONVERTING SOURCE FILE ../../sources/mg/mgreport.fm5.mif
  23482.  
  23483.  
  23484. --><B.BODY></B.BODY
  23485. ><B.BODY></B.BODY
  23486. ><B.BODY></B.BODY
  23487. ><B.BODY></B.BODY
  23488. ><B.BODY></B.BODY
  23489. ></LABEL
  23490. ></SECTION
  23491. ></CHAPTER
  23492. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 6&rbwtab;</CX5FX5FZCHAPTER.NUM
  23493. ></RBW-AUTOGEN
  23494. ><RBW-ANCHOR ID="21937"></RBW-ANCHOR
  23495. >Using the Report Tool and the Class Browser<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  23496. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  23497. ></RBW-SYSOBJ
  23498. ></C.CHAPTER.HEAD
  23499. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23500. >Introduction</L.LABEL
  23501. ><B.BODY>During the project, it is important to have an overview of project data. ObjectTeam provides two facilities that enable you to generate various views of that data:</B.BODY
  23502. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23503. ></RBW-AUTOGEN
  23504. ></RBW-MARKER
  23505. ><RBW-PARABODY>The Report tool</RBW-PARABODY
  23506. ></LB.LIST.BULLET
  23507. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23508. ></RBW-AUTOGEN
  23509. ></RBW-MARKER
  23510. ><RBW-PARABODY>The Class Browser</RBW-PARABODY
  23511. ></LB.LIST.BULLET
  23512. ></LABEL
  23513. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23514. >Report Tool</L.LABEL
  23515. ><B.BODY>The Report tool generates reports on data in a particular part of your project. For example, you can run a report on all classes present in a particular diagram, system, or phase. When you run a report, the repository is queried and the output displayed in a Monitor window. You can print the report or save the report data in a file.</B.BODY
  23516. ></LABEL
  23517. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23518. >Class Browser</L.LABEL
  23519. ><B.BODY>The Class Browser provides an overview of all classes and class features in a phase or system, and lets you navigate through the class hierarchy. You can print the information displayed.</B.BODY
  23520. ></LABEL
  23521. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23522. >In this chapter</L.LABEL
  23523. ><B.BODY>This chapter contains the following sections:</B.BODY
  23524. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  23525. ></ENTRY
  23526. ></RBW-ROW
  23527. ></THEAD
  23528. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27975" TYPE="XREF-TEXTCOPY">Reporting in ObjectTeam&rbwtab;6–2</RBW-XREF
  23529. ></SB.SECTION.BLOCK.TABLE
  23530. ></ENTRY
  23531. ></RBW-ROW
  23532. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36951" TYPE="XREF-TEXTCOPY">Using the Class Browser&rbwtab;6–11</RBW-XREF
  23533. ></SB.SECTION.BLOCK.TABLE
  23534. ></ENTRY
  23535. ></RBW-ROW
  23536. ></TBODY
  23537. ></TGROUP
  23538. ></RBW-TABLE
  23539. ></LABEL
  23540. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27975"></RBW-ANCHOR
  23541. >Reporting in ObjectTeam</S.SECTION.HEAD
  23542. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23543. >Introduction</L.LABEL
  23544. ><B.BODY>ObjectTeam offers a set of standard reports that can be run from the Browser and diagram editors. This section covers only these standard reports. For information on the following topics, refer to the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  23545. ><CX5FX5FTITLE></CX5FX5FTITLE
  23546. >:</B.BODY
  23547. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23548. ></RBW-AUTOGEN
  23549. ></RBW-MARKER
  23550. ><RBW-PARABODY>Making your own reports</RBW-PARABODY
  23551. ></LB.LIST.BULLET
  23552. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23553. ></RBW-AUTOGEN
  23554. ></RBW-MARKER
  23555. ><RBW-PARABODY>Incorporating your reports in the ObjectTeam interface</RBW-PARABODY
  23556. ></LB.LIST.BULLET
  23557. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23558. ></RBW-AUTOGEN
  23559. ></RBW-MARKER
  23560. ><RBW-PARABODY>Using reports made in previous versions of ObjectTeam</RBW-PARABODY
  23561. ></LB.LIST.BULLET
  23562. ></LABEL
  23563. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23564. >Reporting versus document generation</L.LABEL
  23565. ><B.BODY>The Report tool is ideal for obtaining information on the state of your project on an ad&truehy;hoc basis. If you need formal documentation on a particular part of your project, use the Document Generator instead. This tool is typically used when a phase in a project is finished. For information on the Document Generator, see the <CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  23566. ><CX5FX5FTITLE></CX5FX5FTITLE
  23567. >.</B.BODY
  23568. ></LABEL
  23569. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23570. ><RBW-IDXTERM TERM1="report" TERM2="list of"></RBW-IDXTERM
  23571. ><RBW-IDXTERM TERM1="project" TERM2="reports for"></RBW-IDXTERM
  23572. ><RBW-IDXTERM TERM1="system" TERM2="reports for"></RBW-IDXTERM
  23573. ><RBW-IDXTERM TERM1="configuration" TERM2="reports for"></RBW-IDXTERM
  23574. ><RBW-IDXTERM TERM1="phase" TERM2="reports for"></RBW-IDXTERM
  23575. ><RBW-IDXTERM TERM1="diagram" TERM2="reports for"></RBW-IDXTERM
  23576. ><RBW-IDXTERM TERM1="class" TERM2="reports for"></RBW-IDXTERM
  23577. ><RBW-IDXTERM TERM1="event" TERM2="reports for"></RBW-IDXTERM
  23578. ><RBW-IDXTERM TERM1="flow" TERM2="reports for"></RBW-IDXTERM
  23579. ><RBW-IDXTERM TERM1="actor" TERM2="reports for"></RBW-IDXTERM
  23580. ><RBW-IDXTERM TERM1="use case" TERM2="reports for"></RBW-IDXTERM
  23581. ><RBW-IDXTERM TERM1="Class Definition Matrix" TERM2="reports fo"></RBW-IDXTERM
  23582. ><RBW-IDXTERM TERM1="item" TERM2="reports for"></RBW-IDXTERM
  23583. ><RBW-IDXTERM TERM1="document" TERM2="reports for"></RBW-IDXTERM
  23584. ><RBW-IDXTERM TERM1="diagram component" TERM2="reports for"></RBW-IDXTERM
  23585. ><RBW-IDXTERM TERM1="communication message" TERM2="reports for"></RBW-IDXTERM
  23586. >Report options</L.LABEL
  23587. ><B.BODY>The report options available to you depend on the window you are in and, in the case of the Browser, the currently active level. </B.BODY
  23588. ><B.BODY>The following table lists all possible report options, where they can be invoked, and the information included in each. </B.BODY
  23589. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="115p"><COLSPEC COLNAME="2" COLWIDTH="109p"><COLSPEC COLNAME="3" COLWIDTH="109p"><COLSPEC COLNAME="4" COLWIDTH="283p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Report option</CELLHEADING
  23590. ></ENTRY
  23591. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module required</CELLHEADING
  23592. ></ENTRY
  23593. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>WHere Visible</CELLHEADING
  23594. ></ENTRY
  23595. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>contents</CELLHEADING
  23596. ></ENTRY
  23597. ></RBW-ROW
  23598. ></THEAD
  23599. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Corporate Groups</CELLBODY
  23600. ></ENTRY
  23601. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate </CELLBODY
  23602. ><CELLBODY>Modeling</CELLBODY
  23603. ></ENTRY
  23604. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate</CELLBODY
  23605. ></ENTRY
  23606. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate group name, saved group name, project name, system name, corporate group version, saved group version, creator, comments, contents, and reused in. See the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  23607. ><CX5FX5FTITLE></CX5FX5FTITLE
  23608. >.</CELLBODY
  23609. ></ENTRY
  23610. ></RBW-ROW
  23611. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Projects</CELLBODY
  23612. ></ENTRY
  23613. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23614. ></ENTRY
  23615. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate</CELLBODY
  23616. ></ENTRY
  23617. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project name, Configuration version names, project status, and who created the project</CELLBODY
  23618. ></ENTRY
  23619. ></RBW-ROW
  23620. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Configurations</CELLBODY
  23621. ></ENTRY
  23622. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23623. ></ENTRY
  23624. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, </CELLBODY
  23625. ><CELLBODY>Project</CELLBODY
  23626. ></ENTRY
  23627. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project name, Configuration version name, project status, and who created the project</CELLBODY
  23628. ></ENTRY
  23629. ></RBW-ROW
  23630. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Phases</CELLBODY
  23631. ></ENTRY
  23632. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23633. ></ENTRY
  23634. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Config</CELLBODY
  23635. ></ENTRY
  23636. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase name, phase type, version, status, and link</CELLBODY
  23637. ></ENTRY
  23638. ></RBW-ROW
  23639. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Systems</CELLBODY
  23640. ></ENTRY
  23641. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23642. ></ENTRY
  23643. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Config, Phase</CELLBODY
  23644. ></ENTRY
  23645. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project name, configuration version name, system name, phase name, selected system version, and status</CELLBODY
  23646. ></ENTRY
  23647. ></RBW-ROW
  23648. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Documents</CELLBODY
  23649. ></ENTRY
  23650. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>docwriter</CELLBODY
  23651. ></ENTRY
  23652. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Config, Phase</CELLBODY
  23653. ></ENTRY
  23654. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Document name, document version, status, link, documented system, editor, and directory</CELLBODY
  23655. ></ENTRY
  23656. ></RBW-ROW
  23657. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Saved Groups</CELLBODY
  23658. ></ENTRY
  23659. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate Modeling</CELLBODY
  23660. ></ENTRY
  23661. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Config, Phase, System</CELLBODY
  23662. ></ENTRY
  23663. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Saved group name, corporate group name (if promoted), version, creator, time created, in corporate, comments, contents</CELLBODY
  23664. ></ENTRY
  23665. ></RBW-ROW
  23666. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Groups</CELLBODY
  23667. ></ENTRY
  23668. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate </CELLBODY
  23669. ><CELLBODY>Modeling</CELLBODY
  23670. ></ENTRY
  23671. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Config, Phase, System</CELLBODY
  23672. ></ENTRY
  23673. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Group name, status, link, explicit files, explicit subs, filters/selectors</CELLBODY
  23674. ></ENTRY
  23675. ></RBW-ROW
  23676. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Files</CELLBODY
  23677. ></ENTRY
  23678. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23679. ></ENTRY
  23680. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Config, Phase, System, Document</CELLBODY
  23681. ></ENTRY
  23682. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>File name, file type, version, status, in corporate, link</CELLBODY
  23683. ></ENTRY
  23684. ></RBW-ROW
  23685. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On CDMs</CELLBODY
  23686. ></ENTRY
  23687. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23688. ></ENTRY
  23689. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System</CELLBODY
  23690. ></ENTRY
  23691. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>CDM name, referred to in diagram, in system version</CELLBODY
  23692. ></ENTRY
  23693. ></RBW-ROW
  23694. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Unreferenced CDMs</CELLBODY
  23695. ></ENTRY
  23696. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23697. ></ENTRY
  23698. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System</CELLBODY
  23699. ></ENTRY
  23700. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>CDM name. (A CDM becomes unreferenced if the name of its class is changed directly in the class symbol.)</CELLBODY
  23701. ></ENTRY
  23702. ></RBW-ROW
  23703. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Items and Properties</CELLBODY
  23704. ></ENTRY
  23705. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23706. ></ENTRY
  23707. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate, Project, Config, Phase, System, Document, All diagram editors</CELLBODY
  23708. ></ENTRY
  23709. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Item name, item type, status, scope/qualifier, property name, property value</CELLBODY
  23710. ></ENTRY
  23711. ></RBW-ROW
  23712. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Components and Properties</CELLBODY
  23713. ></ENTRY
  23714. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23715. ></ENTRY
  23716. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>System, All diagram editors</CELLBODY
  23717. ></ENTRY
  23718. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Component name, component type, status, scope/qualifier, property name, property value</CELLBODY
  23719. ></ENTRY
  23720. ></RBW-ROW
  23721. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Classes </CELLBODY
  23722. ></ENTRY
  23723. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23724. ></ENTRY
  23725. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System, CD</CELLBODY
  23726. ></ENTRY
  23727. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class name, Properties, Attributes, Operations</CELLBODY
  23728. ></ENTRY
  23729. ></RBW-ROW
  23730. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Class Generalizations</CELLBODY
  23731. ></ENTRY
  23732. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23733. ></ENTRY
  23734. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System, CD</CELLBODY
  23735. ></ENTRY
  23736. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Base class name, base class type, generalization type, derived class name, derived class type</CELLBODY
  23737. ></ENTRY
  23738. ></RBW-ROW
  23739. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Missing Operations</CELLBODY
  23740. ></ENTRY
  23741. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23742. ></ENTRY
  23743. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>System, CD</CELLBODY
  23744. ></ENTRY
  23745. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class, missing operations</CELLBODY
  23746. ></ENTRY
  23747. ></RBW-ROW
  23748. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On CCD Communications</CELLBODY
  23749. ></ENTRY
  23750. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT</CELLBODY
  23751. ></ENTRY
  23752. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System, CCD</CELLBODY
  23753. ></ENTRY
  23754. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Component name, component type, I/O, message, component name, diagram name</CELLBODY
  23755. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  23756. > Available only if the omt module is active. See Appendix A, OMT Support, for more information about the omt module and the CCD.</CELLBODY
  23757. ></ENTRY
  23758. ></RBW-ROW
  23759. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Communications</CELLBODY
  23760. ></ENTRY
  23761. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23762. ></ENTRY
  23763. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23764. ></ENTRY
  23765. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>List of all communications, e.g., in CODs</CELLBODY
  23766. ></ENTRY
  23767. ></RBW-ROW
  23768. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Events and Messages</CELLBODY
  23769. ></ENTRY
  23770. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23771. ></ENTRY
  23772. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System, CCD, STD</CELLBODY
  23773. ></ENTRY
  23774. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>From component, event, to component, diagram name</CELLBODY
  23775. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  23776. > See Appendix A, OMT Support, for more information about the CCD.</CELLBODY
  23777. ></ENTRY
  23778. ></RBW-ROW
  23779. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Flows</CELLBODY
  23780. ></ENTRY
  23781. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23782. ></ENTRY
  23783. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System, DFD</CELLBODY
  23784. ></ENTRY
  23785. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data flow: From type, from node; Control flow: Flow; Result flow: To node; Update flow: To type</CELLBODY
  23786. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  23787. > Available only if the omt module is active. See Appendix A, OMT Support, for more information about the omt module and the DFD.</CELLBODY
  23788. ></ENTRY
  23789. ></RBW-ROW
  23790. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Actors</CELLBODY
  23791. ></ENTRY
  23792. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23793. ></ENTRY
  23794. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System, UCD</CELLBODY
  23795. ></ENTRY
  23796. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each actor, the communication associations to or from the actor</CELLBODY
  23797. ></ENTRY
  23798. ></RBW-ROW
  23799. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Use Cases</CELLBODY
  23800. ></ENTRY
  23801. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23802. ></ENTRY
  23803. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase, System, UCD</CELLBODY
  23804. ></ENTRY
  23805. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each use case, the communication associations to or from it and any use case generalizations associated with it</CELLBODY
  23806. ></ENTRY
  23807. ></RBW-ROW
  23808. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Roles and Users</CELLBODY
  23809. ></ENTRY
  23810. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Security</CELLBODY
  23811. ></ENTRY
  23812. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23813. ></ENTRY
  23814. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Role, SecurityLevel, User, Use</CELLBODY
  23815. ></ENTRY
  23816. ></RBW-ROW
  23817. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Security</CELLBODY
  23818. ></ENTRY
  23819. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Security</CELLBODY
  23820. ></ENTRY
  23821. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23822. ></ENTRY
  23823. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>List of access rules for each controlled object</CELLBODY
  23824. ></ENTRY
  23825. ></RBW-ROW
  23826. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>On Categories</CELLBODY
  23827. ></ENTRY
  23828. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Smalltalk</CELLBODY
  23829. ></ENTRY
  23830. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  23831. ></ENTRY
  23832. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>List of all categories and their classes</CELLBODY
  23833. ></ENTRY
  23834. ></RBW-ROW
  23835. ></TBODY
  23836. ></TGROUP
  23837. ><RBW-ICONIZE></RBW-TABLE
  23838. ></LABEL
  23839. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23840. >Report scope</L.LABEL
  23841. ><B.BODY>As shown in the previous table, some reports can be called from different windows or from different Browser levels. Where you run a report from determines its scope. </B.BODY
  23842. ><B.BODY>For example, if you run a Report On Classes within the CD editor, the report includes only those classes in the current diagram. If you run Report On Classes on Phase level in the Browser, the report includes all classes in the current phase.</B.BODY
  23843. ></LABEL
  23844. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23845. >Report headers</L.LABEL
  23846. ><B.BODY><RBW-IDXTERM TERM1="report" TERM2="header information"></RBW-IDXTERM
  23847. >The header of a standard report contains the following general information:</B.BODY
  23848. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="162p"><COLSPEC COLNAME="2" COLWIDTH="288p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Field</CELLHEADING
  23849. ></ENTRY
  23850. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Shows</CELLHEADING
  23851. ></ENTRY
  23852. ></RBW-ROW
  23853. ></THEAD
  23854. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Report</CELLBODY
  23855. ></ENTRY
  23856. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the report</CELLBODY
  23857. ></ENTRY
  23858. ></RBW-ROW
  23859. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Date</CELLBODY
  23860. ></ENTRY
  23861. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The date the report was created</CELLBODY
  23862. ></ENTRY
  23863. ></RBW-ROW
  23864. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Creator</CELLBODY
  23865. ></ENTRY
  23866. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The user running the report</CELLBODY
  23867. ></ENTRY
  23868. ></RBW-ROW
  23869. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project</CELLBODY
  23870. ></ENTRY
  23871. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the current project</CELLBODY
  23872. ></ENTRY
  23873. ></RBW-ROW
  23874. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration version</CELLBODY
  23875. ></ENTRY
  23876. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the current configuration version</CELLBODY
  23877. ></ENTRY
  23878. ></RBW-ROW
  23879. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase version</CELLBODY
  23880. ></ENTRY
  23881. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the current phase</CELLBODY
  23882. ></ENTRY
  23883. ></RBW-ROW
  23884. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System version</CELLBODY
  23885. ></ENTRY
  23886. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the current system</CELLBODY
  23887. ></ENTRY
  23888. ></RBW-ROW
  23889. ></TBODY
  23890. ></TGROUP
  23891. ></RBW-TABLE
  23892. ><B.BODY>The names of the project, configuration version, phase version, and system version are only output if you are on one of these levels.</B.BODY
  23893. ><B.BODY>The following is an example of a report header: </B.BODY
  23894. ><ES.EXAMPLE.SCREEN>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</ES.EXAMPLE.SCREEN
  23895. ><ES.EXAMPLE.SCREEN>Object&rbwtab;| Report &rbwtab;&rbwtab;&rbwtab;: Classes &rbwtab;&rbwtab;Date &rbwtab;&rbwtab;: 29 Aug 1997 12:04:59</ES.EXAMPLE.SCREEN
  23896. ><ES.EXAMPLE.SCREEN>Team&rbwtab;| &rbwtab;&rbwtab;&rbwtab;&rbwtab;&rbwtab;Creator &rbwtab;&rbwtab;: docu</ES.EXAMPLE.SCREEN
  23897. ><ES.EXAMPLE.SCREEN>7.1.1&rbwtab;| Project &rbwtab;&rbwtab;&rbwtab;: hlkproj &rbwtab;&rbwtab;Phase Version &rbwtab;&rbwtab;: Analysis.HLKConfig:1</ES.EXAMPLE.SCREEN
  23898. ><ES.EXAMPLE.SCREEN>&rbwtab;| Configuration Version: HLKConfig.1 &rbwtab;&rbwtab;&rbwtab;&rbwtab;&rbwtab;SystemVersion &rbwtab;&rbwtab;: HLKSystem.HLKConfig.1</ES.EXAMPLE.SCREEN
  23899. ><ES.EXAMPLE.SCREEN>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</ES.EXAMPLE.SCREEN
  23900. ></LABEL
  23901. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23902. >In this section</L.LABEL
  23903. ><B.BODY>This section contains the following topics:</B.BODY
  23904. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  23905. ></ENTRY
  23906. ></RBW-ROW
  23907. ></THEAD
  23908. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19259" TYPE="XREF-TEXTCOPY">Running a Report&rbwtab;6–6</RBW-XREF
  23909. ></SB.SECTION.BLOCK.TABLE
  23910. ></ENTRY
  23911. ></RBW-ROW
  23912. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29428" TYPE="XREF-TEXTCOPY">Controlling Output in the Monitor Window&rbwtab;6–8</RBW-XREF
  23913. ></SB.SECTION.BLOCK.TABLE
  23914. ></ENTRY
  23915. ></RBW-ROW
  23916. ></TBODY
  23917. ></TGROUP
  23918. ></RBW-TABLE
  23919. ></LABEL
  23920. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19259"></RBW-ANCHOR
  23921. >Running a Report</SS.SUBSEC.HEAD
  23922. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23923. >Introduction</L.LABEL
  23924. ><B.BODY>Reports can be run from the Browser or from the diagram editors. For a list of all available reports, see <RBW-XREF REFID="27975" TYPE="XREF-TEXTCOPY">Reporting in ObjectTeam</RBW-XREF
  23925. >.</B.BODY
  23926. ></LABEL
  23927. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23928. >How to run a report</L.LABEL
  23929. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  23930. ></RBW-AUTOGEN
  23931. ></RBW-MARKER
  23932. ><RBW-PARABODY>To run a report, select Utilities | Reports | On <CX5FX5FTERM>report option</CX5FX5FTERM
  23933. >.</RBW-PARABODY
  23934. ></P.PROCEDURE
  23935. ><LRS.LIST.RESULT.SINGLE><RBW-IDXTERM TERM1="report" TERM2="producing"></RBW-IDXTERM
  23936. ><RBW-IDXTERM TERM1="Reports (Utilities menu)"></RBW-IDXTERM
  23937. >The report is output in a Monitor window. </LRS.LIST.RESULT.SINGLE
  23938. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00177.unk" origfile="pics/runrport.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  23939. ></FAR.FIGURE.ANCHOR.RIGHT
  23940. ></LABEL
  23941. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23942. >How to run a report on properties</L.LABEL
  23943. ><B.BODY>The following reports take the name of a property as an argument:</B.BODY
  23944. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23945. ></RBW-AUTOGEN
  23946. ></RBW-MARKER
  23947. ><RBW-PARABODY>Report On Items and Properties </RBW-PARABODY
  23948. ></LB.LIST.BULLET
  23949. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23950. ></RBW-AUTOGEN
  23951. ></RBW-MARKER
  23952. ><RBW-PARABODY>Report On Components and Properties</RBW-PARABODY
  23953. ></LB.LIST.BULLET
  23954. ><B.BODY>If you specify a property name, the report includes only those items or components for which the specified property is set. If you do not specify a property name, the report inludes all items or components.</B.BODY
  23955. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  23956. ></RBW-AUTOGEN
  23957. ></RBW-MARKER
  23958. ><RBW-PARABODY>To run one of the above reports:</RBW-PARABODY
  23959. ></P.PROCEDURE
  23960. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  23961. ></RBW-AUTOGEN
  23962. ></RBW-MARKER
  23963. ><RBW-PARABODY>Select Utilities | Reports | On Items and Properties, or Utilities | Reports | On Components and Properties</RBW-PARABODY
  23964. ></LN.LIST.NUM
  23965. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  23966. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  23967. ></RBW-AUTOGEN
  23968. ></RBW-MARKER
  23969. ><RBW-PARABODY>Type the short name of one or more properties, separated by spaces, and click OK.</RBW-PARABODY
  23970. ></LN.LIST.NUM
  23971. ><LR.LIST.RESULT>The report is output in a Monitor window.</LR.LIST.RESULT
  23972. ><B.BODY>For a list of short names of ObjectTeam properties, see <RBW-XREF REFID="22035" TYPE="XREF-TEXTCOPY">Specifying Properties</RBW-XREF
  23973. >.</B.BODY
  23974. ></LABEL
  23975. ></SUBSECTION
  23976. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29428"></RBW-ANCHOR
  23977. >Controlling Output in the Monitor Window</SS.SUBSEC.HEAD
  23978. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23979. >Introduction</L.LABEL
  23980. ><B.BODY>You can control the output of a report in the Monitor window in two ways:</B.BODY
  23981. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23982. ></RBW-AUTOGEN
  23983. ></RBW-MARKER
  23984. ><RBW-PARABODY>Setting ObjectTeam options in the Browser or Monitor window</RBW-PARABODY
  23985. ></LB.LIST.BULLET
  23986. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  23987. ></RBW-AUTOGEN
  23988. ></RBW-MARKER
  23989. ><RBW-PARABODY>Using the control selection boxes in the Monitor window</RBW-PARABODY
  23990. ></LB.LIST.BULLET
  23991. ><B.BODY>For information on how to make your option settings available to other users, see the discussion of the user environment in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  23992. ><CX5FX5FTITLE></CX5FX5FTITLE
  23993. >.</B.BODY
  23994. ></LABEL
  23995. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  23996. ><RBW-ANCHOR ID="report"></RBW-ANCHOR
  23997. ><RBW-ANCHOR ID="Printer Setup (Options menu)"></RBW-ANCHOR
  23998. >How to set the line length and page length</L.LABEL
  23999. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24000. ></RBW-AUTOGEN
  24001. ></RBW-MARKER
  24002. ><RBW-PARABODY>To set the line length and page length of your report:</RBW-PARABODY
  24003. ></P.PROCEDURE
  24004. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24005. ></RBW-AUTOGEN
  24006. ></RBW-MARKER
  24007. ><RBW-PARABODY>In the Browser or Monitor window, select Options | Printer Setup | Text.</RBW-PARABODY
  24008. ></LN.LIST.NUM
  24009. ><LR.LIST.RESULT>The Printer Setup dialog box appears.</LR.LIST.RESULT
  24010. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24011. ></RBW-AUTOGEN
  24012. >Selecting Options | Printer Setup in the Diagram Editors brings up the Printer Setup dialog box for the default <CX5FX5FTERM>graphical</CX5FX5FTERM
  24013. > printer, which does not affect the output of your report. </N2.NOTE.2
  24014. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24015. ></RBW-AUTOGEN
  24016. ></RBW-MARKER
  24017. ><RBW-PARABODY>Specify the desired line length and page length, and click OK.</RBW-PARABODY
  24018. ></LN.LIST.NUM
  24019. ><LR.LIST.RESULT>The next time you open a Monitor window and run a report, ObjectTeam uses the new settings. (The new settings do not affect currently open Monitor windows.)</LR.LIST.RESULT
  24020. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24021. >Line length</SL.SUBLABEL
  24022. ><B.BODY>Reports are designed to fit the default line length of 132 characters. Specifying a shorter line causes wrapping, which may make the report difficult to read.</B.BODY
  24023. ></LABEL
  24024. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24025. >How to scroll through a report</L.LABEL
  24026. ><B.BODY>Reports are usually wider and longer than the default Monitor window. To view the entire contents of the report, enlarge the window or use the scroll bars. </B.BODY
  24027. ></LABEL
  24028. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24029. >How to suspend output of a report<RBW-ANCHOR ID="Suspend Output (Options menu)"></RBW-ANCHOR
  24030. ></L.LABEL
  24031. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24032. ></RBW-AUTOGEN
  24033. ></RBW-MARKER
  24034. ><RBW-PARABODY>To temporarily stop the output from scrolling in the Monitor window while it is being produced, select Options | Suspend Output. </RBW-PARABODY
  24035. ></P.PROCEDURE
  24036. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24037. ></RBW-AUTOGEN
  24038. >The report continues running in the background. When you cancel Suspend Output, the output continues scrolling.</N.NOTE
  24039. ></LABEL
  24040. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24041. >How to stop a report in progress<RBW-ANCHOR ID="Terminate (Process menu);Abort (Process menu);Kill (Process menu)"></RBW-ANCHOR
  24042. ></L.LABEL
  24043. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24044. ></RBW-AUTOGEN
  24045. ></RBW-MARKER
  24046. ><RBW-PARABODY>To stop a report in progress, in the Monitor window, select Process | Terminate.</RBW-PARABODY
  24047. ></P.PROCEDURE
  24048. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24049. ></RBW-AUTOGEN
  24050. >On UNIX systems three termination options are available in the process menu.</N.NOTE
  24051. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="123p"><COLSPEC COLNAME="2" COLWIDTH="322p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  24052. ></ENTRY
  24053. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  24054. ></ENTRY
  24055. ></RBW-ROW
  24056. ></THEAD
  24057. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Terminate</CELLBODY
  24058. ></ENTRY
  24059. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sends a SIGTERM signal to the process. The process is aborted through its own handler.</CELLBODY
  24060. ></ENTRY
  24061. ></RBW-ROW
  24062. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Abort</CELLBODY
  24063. ></ENTRY
  24064. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sends a SIGQUIT signal to the process. The process is aborted through its own handler and a core is dumped.</CELLBODY
  24065. ></ENTRY
  24066. ></RBW-ROW
  24067. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Kill</CELLBODY
  24068. ></ENTRY
  24069. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sends a SIGKILL signal to the process. The process is aborted by the operating system. No locks on tables or files are removed.</CELLBODY
  24070. ></ENTRY
  24071. ></RBW-ROW
  24072. ></TBODY
  24073. ></TGROUP
  24074. ></RBW-TABLE
  24075. ></LABEL
  24076. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24077. >How to print your report<RBW-ANCHOR ID="report"></RBW-ANCHOR
  24078. ></L.LABEL
  24079. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24080. ></RBW-AUTOGEN
  24081. ></RBW-MARKER
  24082. ><RBW-PARABODY>To print your report, in the Monitor window select File | Print.</RBW-PARABODY
  24083. ></P.PROCEDURE
  24084. ><LRS.LIST.RESULT.SINGLE>The output is sent to the default printer.</LRS.LIST.RESULT.SINGLE
  24085. ></LABEL
  24086. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24087. >How to <RBW-ANCHOR ID="16590"></RBW-ANCHOR
  24088. >set your default printer<RBW-ANCHOR ID="Printer Setup (Options menu)"></RBW-ANCHOR
  24089. ></L.LABEL
  24090. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24091. ></RBW-AUTOGEN
  24092. ></RBW-MARKER
  24093. ><RBW-PARABODY>To set the default printer:</RBW-PARABODY
  24094. ></P.PROCEDURE
  24095. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24096. ></RBW-AUTOGEN
  24097. ></RBW-MARKER
  24098. ><RBW-PARABODY>In the Monitor window, select Options | Printer Setup.</RBW-PARABODY
  24099. ></LN.LIST.NUM
  24100. ><LR.LIST.RESULT>The Printer Setup dialog box appears.</LR.LIST.RESULT
  24101. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00178.unk" origfile="pics/pr_setup.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24102. ></FA2.FIGURE.ANCHOR.2
  24103. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24104. ></RBW-AUTOGEN
  24105. ></RBW-MARKER
  24106. ><RBW-PARABODY>Specify the Printer Command, and click OK.</RBW-PARABODY
  24107. ></LN.LIST.NUM
  24108. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24109. >Alternative</SL.SUBLABEL
  24110. ><B.BODY>You can also set the default printer from the Browser using Options | Printer Setup | Text, as described in <RBW-XREF REFID="35959" TYPE="XREF-TEXTCOPY">Printing</RBW-XREF
  24111. >.</B.BODY
  24112. ></LABEL
  24113. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24114. >How to save your report<RBW-ANCHOR ID="Save Output (File menu)"></RBW-ANCHOR
  24115. ></L.LABEL
  24116. ><BI.BODY.INTRO>Once the report is finished, you can save it to a file. </BI.BODY.INTRO
  24117. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24118. ></RBW-AUTOGEN
  24119. ></RBW-MARKER
  24120. ><RBW-PARABODY>To save your report:</RBW-PARABODY
  24121. ></P.PROCEDURE
  24122. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24123. ></RBW-AUTOGEN
  24124. ></RBW-MARKER
  24125. ><RBW-PARABODY>In the Monitor window, select File | Save Output.</RBW-PARABODY
  24126. ></LN.LIST.NUM
  24127. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  24128. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24129. ></RBW-AUTOGEN
  24130. ></RBW-MARKER
  24131. ><RBW-PARABODY>Select a directory, type the name of the log file, and click OK.</RBW-PARABODY
  24132. ></LN.LIST.NUM
  24133. ></LABEL
  24134. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24135. >When your report is finished<RBW-ANCHOR ID="Exit (File menu)"></RBW-ANCHOR
  24136. ><RBW-ANCHOR ID="Reuse (Options menu), Monitor window;Clear Screen (Options menu), Monitor window"></RBW-ANCHOR
  24137. ></L.LABEL
  24138. ><B.BODY>Once the report is finished, you can close the Monitor window or keep it open for further use.</B.BODY
  24139. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24140. ></RBW-AUTOGEN
  24141. ></RBW-MARKER
  24142. ><RBW-PARABODY>To close the Monitor window, select File | Exit.</RBW-PARABODY
  24143. ></P.PROCEDURE
  24144. ><B.BODY>If you wish to leave the window open, you have two options:</B.BODY
  24145. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24146. ></RBW-AUTOGEN
  24147. ></RBW-MARKER
  24148. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Options | Reuse.</CX5FX5FBULLET.EMPHASIS
  24149. > A check mark next to this option directs ObjectTeam to reuse the window. Clearing the check mark locks the window and prevents ObjectTeam from using it for output from any other tool. If you run another report, a separate Monitor window is opened.</RBW-PARABODY
  24150. ></LB.LIST.BULLET
  24151. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24152. ></RBW-AUTOGEN
  24153. ></RBW-MARKER
  24154. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Options | Clear Screen.</CX5FX5FBULLET.EMPHASIS
  24155. > A check mark next to this option directs ObjectTeam to clear the window before using it for output. Clearing the check mark causes ObjectTeam to concatenate other reports or output to the end of the current contents of the window. </RBW-PARABODY
  24156. ></LB.LIST.BULLET
  24157. ></LABEL
  24158. ></SUBSECTION
  24159. ></SECTION
  24160. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36951"></RBW-ANCHOR
  24161. >Using the Class Browser</S.SECTION.HEAD
  24162. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24163. >Introduction</L.LABEL
  24164. ><B.BODY>The Class Browser allows you to examine the classes in the current phase or system, and their associations, attributes, and operations.</B.BODY
  24165. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24166. ></RBW-AUTOGEN
  24167. >Only classes that appear in a CD appear in the Class Browser. If a class is defined by a CDM but does not appear in a CD, it does not appear in the Class Browser.</N.NOTE
  24168. ></LABEL
  24169. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24170. >How to <RBW-IDXTERM TERM1="Class Browser" TERM2="starting"></RBW-IDXTERM
  24171. ><RBW-IDXTERM TERM1="Class Browser (Utilities menu)"></RBW-IDXTERM
  24172. >start the Class Browser</L.LABEL
  24173. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24174. ></RBW-AUTOGEN
  24175. ></RBW-MARKER
  24176. ><RBW-PARABODY>To start the Class Browser in the Browser, or in any Diagram Editor, select Utilities | Class Browser.</RBW-PARABODY
  24177. ></P.PROCEDURE
  24178. ><LRS.LIST.RESULT.SINGLE>The Class Browser window appears. If you started the Class Browser on Phase level, all classes in that phase are displayed in the Classes list. If you started the Class Browser on System level or from a diagram editor, only the classes in that system are displayed in the Classes list.</LRS.LIST.RESULT.SINGLE
  24179. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00179.unk" origfile="pics/cl_brows.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24180. ></FA.FIGURE.ANCHOR
  24181. ></LABEL
  24182. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24183. >Layout of the Class Browser window</L.LABEL
  24184. ><B.BODY><RBW-IDXTERM TERM1="superclass" TERM2="in Class Browser"></RBW-IDXTERM
  24185. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  24186. ><RBW-IDXTERM TERM1="subclass" TERM2="in Class Browser"></RBW-IDXTERM
  24187. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  24188. ><RBW-IDXTERM TERM1="class" TERM2="in Class Browser"></RBW-IDXTERM
  24189. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  24190. ><RBW-IDXTERM TERM1="attribute" TERM2="in Class Browser"></RBW-IDXTERM
  24191. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  24192. ><RBW-IDXTERM TERM1="operation" TERM2="in Class Browser"></RBW-IDXTERM
  24193. ><RBW-IDXTERM TERM1="association" TERM2="in Class Browser"></RBW-IDXTERM
  24194. >The Class Browser presents class information in five list boxes.</B.BODY
  24195. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>List box</CELLHEADING
  24196. ></ENTRY
  24197. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Information Format</CELLHEADING
  24198. ></ENTRY
  24199. ></RBW-ROW
  24200. ></THEAD
  24201. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Superclasses</CELLBODY
  24202. ></ENTRY
  24203. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  24204. > </CELLBODY
  24205. ></ENTRY
  24206. ></RBW-ROW
  24207. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Classes</CELLBODY
  24208. ></ENTRY
  24209. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  24210. > </CELLBODY
  24211. ></ENTRY
  24212. ></RBW-ROW
  24213. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Subclasses</CELLBODY
  24214. ></ENTRY
  24215. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  24216. > </CELLBODY
  24217. ></ENTRY
  24218. ></RBW-ROW
  24219. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Features (Attributes)</CELLBODY
  24220. ></ENTRY
  24221. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>attribute_name</CX5FX5FTERM
  24222. >: <CX5FX5FTERM>attribute_type</CX5FX5FTERM
  24223. > </CELLBODY
  24224. ><CELLBODY>The following implicit properties are displayed:</CELLBODY
  24225. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24226. ></RBW-AUTOGEN
  24227. ></RBW-MARKER
  24228. ><RBW-PARABODY>class attributes ($)</RBW-PARABODY
  24229. ></CELLBULLET
  24230. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24231. ></RBW-AUTOGEN
  24232. ></RBW-MARKER
  24233. ><RBW-PARABODY>derived attributes (/)</RBW-PARABODY
  24234. ></CELLBULLET
  24235. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24236. ></RBW-AUTOGEN
  24237. ></RBW-MARKER
  24238. ><RBW-PARABODY>keys (*) </RBW-PARABODY
  24239. ></CELLBULLET
  24240. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24241. ></RBW-AUTOGEN
  24242. ></RBW-MARKER
  24243. ><RBW-PARABODY>initial values (= <CX5FX5FTERM>value</CX5FX5FTERM
  24244. >)</RBW-PARABODY
  24245. ></CELLBULLET
  24246. ></ENTRY
  24247. ></RBW-ROW
  24248. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Features (Operations)</CELLBODY
  24249. ></ENTRY
  24250. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>operation_name</CX5FX5FTERM
  24251. >(<CX5FX5FTERM>parameter_list</CX5FX5FTERM
  24252. >): <CX5FX5FTERM>operation_type</CX5FX5FTERM
  24253. > </CELLBODY
  24254. ><CELLBODY>where <CX5FX5FTERM>parameter_list</CX5FX5FTERM
  24255. > is a sequence of (comma&truehy;separated) parameters, each having the format <CX5FX5FTERM>parameter_name</CX5FX5FTERM
  24256. >: <CX5FX5FTERM>parameter_type</CX5FX5FTERM
  24257. >.</CELLBODY
  24258. ><CELLBODY>The following implicit properties are displayed:</CELLBODY
  24259. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24260. ></RBW-AUTOGEN
  24261. ></RBW-MARKER
  24262. ><RBW-PARABODY>class operations ($) </RBW-PARABODY
  24263. ></CELLBULLET
  24264. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24265. ></RBW-AUTOGEN
  24266. ></RBW-MARKER
  24267. ><RBW-PARABODY>abstract operations ({abstract})</RBW-PARABODY
  24268. ></CELLBULLET
  24269. ></ENTRY
  24270. ></RBW-ROW
  24271. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Associations</CELLBODY
  24272. ></ENTRY
  24273. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Binary and n&truehy;ary associations are formatted as follows:</CELLBODY
  24274. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24275. ></RBW-AUTOGEN
  24276. ></RBW-MARKER
  24277. ><RBW-PARABODY>Binary: [<CX5FX5FTERM>qualifier</CX5FX5FTERM
  24278. >]&truehy;&truehy;&truehy;<CX5FX5FTERM>association_name&truehy;&truehy;&truehy;</CX5FX5FTERM
  24279. ><CX5FX5FTERM>role&truehy;&truehy;&truehy;</CX5FX5FTERM
  24280. ><CX5FX5FTERM>class_name</CX5FX5FTERM
  24281. > </RBW-PARABODY
  24282. ></CELLBULLET
  24283. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24284. ></RBW-AUTOGEN
  24285. ></RBW-MARKER
  24286. ><RBW-PARABODY>N&truehy;ary: <CX5FX5FTERM>&truehy;&truehy;&truehy;association_name&truehy;&truehy;&truehy;role&truehy;&truehy;&truehy;class_name, </CX5FX5FTERM
  24287. ></RBW-PARABODY
  24288. ></CELLBULLET
  24289. ><CELLBULLET><RBW-MARKER><RBWAUTO-0008>&rbwtab;</RBWAUTO-0008
  24290. ></RBW-MARKER
  24291. ><RBW-PARABODY> &truehy;&truehy;&truehy;role&truehy;&truehy;&truehy;class_name, etc.</RBW-PARABODY
  24292. ></CELLBULLET
  24293. ><CELLBODY>The following implicit properties are displayed:</CELLBODY
  24294. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24295. ></RBW-AUTOGEN
  24296. ></RBW-MARKER
  24297. ><RBW-PARABODY>many (represented by an asterisk)</RBW-PARABODY
  24298. ></CELLBULLET
  24299. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24300. ></RBW-AUTOGEN
  24301. ></RBW-MARKER
  24302. ><RBW-PARABODY>optional (represented by an O)</RBW-PARABODY
  24303. ></CELLBULLET
  24304. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24305. ></RBW-AUTOGEN
  24306. ></RBW-MARKER
  24307. ><RBW-PARABODY>mandatory (no symbol)</RBW-PARABODY
  24308. ></CELLBULLET
  24309. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24310. ></RBW-AUTOGEN
  24311. ></RBW-MARKER
  24312. ><RBW-PARABODY>derived associations (/) </RBW-PARABODY
  24313. ></CELLBULLET
  24314. ></ENTRY
  24315. ></RBW-ROW
  24316. ></TBODY
  24317. ></TGROUP
  24318. ></RBW-TABLE
  24319. ></LABEL
  24320. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24321. >How to open a class<RBW-IDXTERM TERM1="Open (File menu)" TERM2="Class Browser"></RBW-IDXTERM
  24322. ></L.LABEL
  24323. ><B.BODY>When you start the Class Browser or after you reload classes, only the Classes list contains data. To populate the other list boxes, you open one of the listed classes.</B.BODY
  24324. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24325. ></RBW-AUTOGEN
  24326. ></RBW-MARKER
  24327. ><RBW-PARABODY>To open a class, double&truehy;click a class name in the Classes list. Alternatively, select a class name in the Classes list and select File | Open.</RBW-PARABODY
  24328. ></P.PROCEDURE
  24329. ><LRS.LIST.RESULT.SINGLE>The other list boxes are filled with information related to the opened class. </LRS.LIST.RESULT.SINGLE
  24330. ></LABEL
  24331. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24332. >How to display inherited information<RBW-IDXTERM TERM1="Flat (View menu in Class Browser)"></RBW-IDXTERM
  24333. ></L.LABEL
  24334. ><BI.BODY.INTRO>By default, the Class Browser displays only the attributes and operations of the selected class, and the Associations list displays only the class at the other end of the association. Sometimes, it is useful to see the information classes inherit from their parent classes.</BI.BODY.INTRO
  24335. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24336. ></RBW-AUTOGEN
  24337. ></RBW-MARKER
  24338. ><RBW-PARABODY>To view inherited information, select View | Flat.</RBW-PARABODY
  24339. ></P.PROCEDURE
  24340. ><LR.LIST.RESULT>All features and association entries are prefixed with the class name they belong to. The Associations list displays the classes at both ends of associations.</LR.LIST.RESULT
  24341. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24342. ></RBW-AUTOGEN
  24343. ></RBW-MARKER
  24344. ><RBW-PARABODY>To return to the default view, select View | Flat again.</RBW-PARABODY
  24345. ></P.PROCEDURE
  24346. ></LABEL
  24347. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24348. >How to sort entries<RBW-IDXTERM TERM1="Class Browser" TERM2="sorting entries"></RBW-IDXTERM
  24349. ><RBW-IDXTERM TERM1="Sort Case Sensitive (Options menu in Class Browser)"></RBW-IDXTERM
  24350. ></L.LABEL
  24351. ><BI.BODY.INTRO>Entries in the display area are sorted alphabetically, but are not case sensitive. </BI.BODY.INTRO
  24352. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24353. ></RBW-AUTOGEN
  24354. ></RBW-MARKER
  24355. ><RBW-PARABODY>To make the sorting case sensitive, select Options | Sort Case Sensitive.</RBW-PARABODY
  24356. ></P.PROCEDURE
  24357. ><B.BODY>For details on saving option settings to your user environment file, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  24358. ><CX5FX5FTITLE></CX5FX5FTITLE
  24359. >.</B.BODY
  24360. ></LABEL
  24361. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24362. >How to open a CD</L.LABEL
  24363. ><B.BODY>If you want to edit the diagram in which a class appears, you can open the CD directly from the Class Browser.</B.BODY
  24364. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24365. ></RBW-AUTOGEN
  24366. ></RBW-MARKER
  24367. ><RBW-PARABODY>To open a CD, select Utilities | Edit Class Diagram. </RBW-PARABODY
  24368. ></P.PROCEDURE
  24369. ><LRS.LIST.RESULT.SINGLE>ObjectTeam opens the CD editor and displays the CD in which the selected class appear.</LRS.LIST.RESULT.SINGLE
  24370. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24371. ></RBW-AUTOGEN
  24372. >If the selected class appears in more than one diagram, ObjectTeam prompts you to select the CD you want to edit.</N.NOTE
  24373. ></LABEL
  24374. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24375. >How to <RBW-IDXTERM TERM1="Class Browser" TERM2="updating"></RBW-IDXTERM
  24376. >reload classes</L.LABEL
  24377. ><B.BODY>You can leave the Class Browser open while you work in a Diagram Editor or in the Browser. If you add, delete, or modify classes, you can update the Class Browser by selecting File | Reload Classes.</B.BODY
  24378. ></LABEL
  24379. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24380. >In this section</L.LABEL
  24381. ><B.BODY>This section contains the following topics:</B.BODY
  24382. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  24383. ></ENTRY
  24384. ></RBW-ROW
  24385. ></THEAD
  24386. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41148" TYPE="XREF-TEXTCOPY">Using Filters&rbwtab;6–14</RBW-XREF
  24387. ></SB.SECTION.BLOCK.TABLE
  24388. ></ENTRY
  24389. ></RBW-ROW
  24390. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19543" TYPE="XREF-TEXTCOPY">Navigating Between Classes&rbwtab;6–17</RBW-XREF
  24391. ></SB.SECTION.BLOCK.TABLE
  24392. ></ENTRY
  24393. ></RBW-ROW
  24394. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31963" TYPE="XREF-TEXTCOPY">Searching&rbwtab;6–18</RBW-XREF
  24395. ></SB.SECTION.BLOCK.TABLE
  24396. ></ENTRY
  24397. ></RBW-ROW
  24398. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10311" TYPE="XREF-TEXTCOPY">Examining Items&rbwtab;6–20</RBW-XREF
  24399. ></SB.SECTION.BLOCK.TABLE
  24400. ></ENTRY
  24401. ></RBW-ROW
  24402. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14379" TYPE="XREF-TEXTCOPY">Printing from the Class Browser&rbwtab;6–21</RBW-XREF
  24403. ></SB.SECTION.BLOCK.TABLE
  24404. ></ENTRY
  24405. ></RBW-ROW
  24406. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10544" TYPE="XREF-TEXTCOPY">Changing the Class Browser Font&rbwtab;6–22</RBW-XREF
  24407. ></SB.SECTION.BLOCK.TABLE
  24408. ></ENTRY
  24409. ></RBW-ROW
  24410. ></TBODY
  24411. ></TGROUP
  24412. ></RBW-TABLE
  24413. ></LABEL
  24414. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="41148"></RBW-ANCHOR
  24415. >Using Filters</SS.SUBSEC.HEAD
  24416. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24417. >Introduction</L.LABEL
  24418. ><B.BODY><RBW-IDXTERM TERM1="Class Browser" TERM2="filtering"></RBW-IDXTERM
  24419. ><RBW-IDXTERM TERM1="filter" TERM2="in Class Browser"></RBW-IDXTERM
  24420. >You can use filters to restrict the information displayed in the Features list. Filters are helpful when you have many attributes or operations. You set filters using the Filter Features dialog box.</B.BODY
  24421. ></LABEL
  24422. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24423. >How filters work</L.LABEL
  24424. ><B.BODY>The Filter Features dialog box lets you set <CX5FX5FTERM>filter elements</CX5FX5FTERM
  24425. > that specify which attributes and operations to display in the Features list. You can filter attributes or operations by name, data type, or by the value of any of their item properties. </B.BODY
  24426. ><B.BODY>When you assign a value to a filter element, only attributes or operations matching the specified value are displayed in the Class Browser. </B.BODY
  24427. ><B.BODY>For example, if you set the value of the attribute filter element Type to <CX5FX5FINPUT>int</CX5FX5FINPUT
  24428. >, only attributes of type integer are displayed in the Class Browser.</B.BODY
  24429. ><B.BODY>For each filter element, the Filter Features dialog box displays:</B.BODY
  24430. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24431. ></RBW-AUTOGEN
  24432. ></RBW-MARKER
  24433. ><RBW-PARABODY>The name of the filter element (for example, name, type, item property name)</RBW-PARABODY
  24434. ></LB.LIST.BULLET
  24435. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24436. ></RBW-AUTOGEN
  24437. ></RBW-MARKER
  24438. ><RBW-PARABODY>Whether this filter element is switched on</RBW-PARABODY
  24439. ></LB.LIST.BULLET
  24440. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24441. ></RBW-AUTOGEN
  24442. ></RBW-MARKER
  24443. ><RBW-PARABODY>The current value of the filter</RBW-PARABODY
  24444. ></LB.LIST.BULLET
  24445. ></LABEL
  24446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24447. >How to set a filter<RBW-IDXTERM TERM1="Filter Features (View menu in Class Browser)"></RBW-IDXTERM
  24448. ></L.LABEL
  24449. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24450. ></RBW-AUTOGEN
  24451. ></RBW-MARKER
  24452. ><RBW-PARABODY>To set a filter:</RBW-PARABODY
  24453. ></P.PROCEDURE
  24454. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24455. ></RBW-AUTOGEN
  24456. ></RBW-MARKER
  24457. ><RBW-PARABODY>Select View | Filter Features.</RBW-PARABODY
  24458. ></LN.LIST.NUM
  24459. ><LR.LIST.RESULT>The Filter Features dialog box appears.</LR.LIST.RESULT
  24460. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00180.unk" origfile="pics/cb_filt.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24461. ></FA2.FIGURE.ANCHOR.2
  24462. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24463. ></RBW-AUTOGEN
  24464. ></RBW-MARKER
  24465. ><RBW-PARABODY>Select either Attributes or Operations from the list.</RBW-PARABODY
  24466. ></LN.LIST.NUM
  24467. ><LR.LIST.RESULT>The list of valid filter elements is displayed in the Filter Settings list.</LR.LIST.RESULT
  24468. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24469. ></RBW-AUTOGEN
  24470. >Note that the item properties listed here include both those set explicitly using the Edit Properties dialog box and those set implicitly by entering certain special characters in your diagram.</N2.NOTE.2
  24471. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  24472. ></RBW-AUTOGEN
  24473. ></RBW-MARKER
  24474. ><RBW-PARABODY>Select the Filter Enabled check box.</RBW-PARABODY
  24475. ></LN.LIST.NUM
  24476. ><LR.LIST.RESULT>This check box switches on all of the filter settings specified in the Filter Settings list box. </LR.LIST.RESULT
  24477. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24478. ></RBW-AUTOGEN
  24479. >Because you can switch on filters separately for class attributes and class operations, you can enable filters for either one, or both if you prefer.</N2.NOTE.2
  24480. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  24481. ></RBW-AUTOGEN
  24482. ></RBW-MARKER
  24483. ><RBW-PARABODY>Select a property name in the list box and click Set Filter Element. Alternatively, double&truehy;click the property name.</RBW-PARABODY
  24484. ></LN.LIST.NUM
  24485. ><LR.LIST.RESULT>The Set Filter Element dialog box appears.</LR.LIST.RESULT
  24486. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00181.unk" origfile="pics/cbf_valu.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24487. ></FA2.FIGURE.ANCHOR.2
  24488. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  24489. ></RBW-AUTOGEN
  24490. ></RBW-MARKER
  24491. ><RBW-PARABODY>Specify a value for the filter.</RBW-PARABODY
  24492. ></LN.LIST.NUM
  24493. ><LR.LIST.RESULT>For text values, you can use a wildcard string using glob&truehy;style pattern matching. For Boolean values, type a 0 or 1.</LR.LIST.RESULT
  24494. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  24495. ></RBW-AUTOGEN
  24496. ></RBW-MARKER
  24497. ><RBW-PARABODY>Click the Enabled check box and click OK.</RBW-PARABODY
  24498. ></LN.LIST.NUM
  24499. ><LR.LIST.RESULT>This setting provides greater control of the filter set in Step 3. In the Filter Settings list box, the filter now shows Yes in the Enabled field, and the entered value in the Value field. </LR.LIST.RESULT
  24500. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  24501. ></RBW-AUTOGEN
  24502. ></RBW-MARKER
  24503. ><RBW-PARABODY>Click OK to apply your settings to the Class Browser.</RBW-PARABODY
  24504. ></LN.LIST.NUM
  24505. ><LT.LIST.TEXT>To activate the filters but keep the Filter Features dialog box open, click Apply. </LT.LIST.TEXT
  24506. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24507. ></RBW-AUTOGEN
  24508. >To discard any changes you have made to the settings in the Filter Features dialog box, click Reset. This command sets the filters to the values in effect when the dialog box was opened. Click Cancel to reset the values and quit the dialog box.</N2.NOTE.2
  24509. ><LR.LIST.RESULT>ObjectTeam updates the information in the list boxes in the Class Browser to reflect your filter settings. </LR.LIST.RESULT
  24510. ></LABEL
  24511. ></SUBSECTION
  24512. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="class" TERM2="navigating between"></RBW-IDXTERM
  24513. ><RBW-IDXTERM TERM1="Class Browser" TERM2="navigating between classes"></RBW-IDXTERM
  24514. ><RBW-IDXTERM TERM1="navigating" TERM2="between classes"></RBW-IDXTERM
  24515. ><RBW-ANCHOR ID="19543"></RBW-ANCHOR
  24516. >Navigating Between Classes</SS.SUBSEC.HEAD
  24517. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24518. >Introduction</L.LABEL
  24519. ><B.BODY>You can navigate your class hierarchy in the Class Browser by opening classes in the Subclasses, Superclasses, Features and Associations lists.</B.BODY
  24520. ></LABEL
  24521. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24522. >What you can open</L.LABEL
  24523. ><B.BODY>When you double&truehy;click an entry in the Features or Associations lists, the Class Browser looks for a class name in the entry. For example, classes sometimes appear in attribute entries as attribute data types or in operation entries as parameter data types. If the Class Browser cannot find a class name, it displays a message. The class at the other end of an association is always displayed for associations. </B.BODY
  24524. ><B.BODY>In Flat view, class names prefix all entries so you can open any entry. </B.BODY
  24525. ></LABEL
  24526. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24527. >How to navigate between classes</L.LABEL
  24528. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24529. ></RBW-AUTOGEN
  24530. ></RBW-MARKER
  24531. ><RBW-PARABODY>To open a class in the Superclasses, Classes, or Subclasses lists, open a class name.</RBW-PARABODY
  24532. ></P.PROCEDURE
  24533. ><LRS.LIST.RESULT.SINGLE>The other list boxes display information for that class.</LRS.LIST.RESULT.SINGLE
  24534. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24535. ></RBW-AUTOGEN
  24536. ></RBW-MARKER
  24537. ><RBW-PARABODY>To open a class in the Features list, double&truehy;click an attribute or operation entry. </RBW-PARABODY
  24538. ></P.PROCEDURE
  24539. ><LRS.LIST.RESULT.SINGLE>If a class name appears in the entry, it is selected and opened.</LRS.LIST.RESULT.SINGLE
  24540. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24541. ></RBW-AUTOGEN
  24542. ></RBW-MARKER
  24543. ><RBW-PARABODY>To open a class at the other end of an association, double&truehy;click an association entry.</RBW-PARABODY
  24544. ></P.PROCEDURE
  24545. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24546. ></RBW-AUTOGEN
  24547. >If you are in Flat view, a list displays with a list of class names at each end of the selected association. Click a class name and click OK.</N.NOTE
  24548. ><LRS.LIST.RESULT.SINGLE>The class at the other end of the association is opened.</LRS.LIST.RESULT.SINGLE
  24549. ></LABEL
  24550. ></SUBSECTION
  24551. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31963"></RBW-ANCHOR
  24552. >Searching</SS.SUBSEC.HEAD
  24553. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24554. >How to search for a class</L.LABEL
  24555. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24556. ></RBW-AUTOGEN
  24557. ></RBW-MARKER
  24558. ><RBW-PARABODY>To search for a class:</RBW-PARABODY
  24559. ></P.PROCEDURE
  24560. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24561. ></RBW-AUTOGEN
  24562. ></RBW-MARKER
  24563. ><RBW-PARABODY>Select File | Find Class.</RBW-PARABODY
  24564. ></LN.LIST.NUM
  24565. ><LR.LIST.RESULT>The Find Class dialog box appears.</LR.LIST.RESULT
  24566. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00182.unk" origfile="pics/findclas.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24567. ></FA2.FIGURE.ANCHOR.2
  24568. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24569. ></RBW-AUTOGEN
  24570. ></RBW-MARKER
  24571. ><RBW-PARABODY>Type the name of the class to be found, and click OK.</RBW-PARABODY
  24572. ></LN.LIST.NUM
  24573. ><LR.LIST.RESULT>The first class that matches the specified name is selected and opened.</LR.LIST.RESULT
  24574. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24575. ></RBW-AUTOGEN
  24576. ></RBW-MARKER
  24577. ><RBW-PARABODY>To search for multiple classes:</RBW-PARABODY
  24578. ></P.PROCEDURE
  24579. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24580. ></RBW-AUTOGEN
  24581. ></RBW-MARKER
  24582. ><RBW-PARABODY>Select File | Find Class.</RBW-PARABODY
  24583. ></LN.LIST.NUM
  24584. ><LR.LIST.RESULT>The Find Class dialog box appears.</LR.LIST.RESULT
  24585. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24586. ></RBW-AUTOGEN
  24587. ></RBW-MARKER
  24588. ><RBW-PARABODY>Type a search string, and click Next.</RBW-PARABODY
  24589. ></LN.LIST.NUM
  24590. ><LR.LIST.RESULT>The next class that matches your criteria is selected and opened.</LR.LIST.RESULT
  24591. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24592. ></RBW-AUTOGEN
  24593. >The search string should use Tcl glob&truehy;style pattern matching. For details on this syntax, see <CX5FX5FTERM>Tcl and the Tk Toolkit</CX5FX5FTERM
  24594. > by John Ousterhout.</N2.NOTE.2
  24595. ><B.BODY>By default, the search is not case sensitive. To make the search case sensitive, click the Case Sensitive check box.</B.BODY
  24596. ></LABEL
  24597. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24598. >How to search for an attribute or operation</L.LABEL
  24599. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24600. ></RBW-AUTOGEN
  24601. ></RBW-MARKER
  24602. ><RBW-PARABODY>To search for a class attribute or operation:<RBW-IDXTERM TERM1="attribute" TERM2="finding"></RBW-IDXTERM
  24603. ><RBW-IDXTERM TERM1="operation" TERM2="finding"></RBW-IDXTERM
  24604. ><RBW-IDXTERM TERM1="Find Feature (File menu in Class Browser)"></RBW-IDXTERM
  24605. ></RBW-PARABODY
  24606. ></P.PROCEDURE
  24607. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24608. ></RBW-AUTOGEN
  24609. ></RBW-MARKER
  24610. ><RBW-PARABODY>Select File | Find Feature.</RBW-PARABODY
  24611. ></LN.LIST.NUM
  24612. ><LR.LIST.RESULT>The Find Feature dialog box appears.</LR.LIST.RESULT
  24613. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00183.unk" origfile="pics/findfeat.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24614. ></FA2.FIGURE.ANCHOR.2
  24615. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24616. ></RBW-AUTOGEN
  24617. ></RBW-MARKER
  24618. ><RBW-PARABODY>Click the Attributes or Operations check boxes. You can choose either or both of them.</RBW-PARABODY
  24619. ></LN.LIST.NUM
  24620. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  24621. ></RBW-AUTOGEN
  24622. ></RBW-MARKER
  24623. ><RBW-PARABODY>Specify the name of the attribute or operation to be found and click OK.</RBW-PARABODY
  24624. ></LN.LIST.NUM
  24625. ><LR.LIST.RESULT>The first class containing the specified feature is selected and opened.</LR.LIST.RESULT
  24626. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24627. ></RBW-AUTOGEN
  24628. ></RBW-MARKER
  24629. ><RBW-PARABODY>To search for multiple class attributes or operations:</RBW-PARABODY
  24630. ></P.PROCEDURE
  24631. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24632. ></RBW-AUTOGEN
  24633. ></RBW-MARKER
  24634. ><RBW-PARABODY>Select File | Find Feature.</RBW-PARABODY
  24635. ></LN.LIST.NUM
  24636. ><LR.LIST.RESULT>The Find Feature dialog box appears.</LR.LIST.RESULT
  24637. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24638. ></RBW-AUTOGEN
  24639. ></RBW-MARKER
  24640. ><RBW-PARABODY>Select the Attributes or Operations check boxes.</RBW-PARABODY
  24641. ></LN.LIST.NUM
  24642. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  24643. ></RBW-AUTOGEN
  24644. ></RBW-MARKER
  24645. ><RBW-PARABODY>Type a search string and click Next.</RBW-PARABODY
  24646. ></LN.LIST.NUM
  24647. ><LR.LIST.RESULT>The next class containing the specified feature is selected and opened.</LR.LIST.RESULT
  24648. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24649. ></RBW-AUTOGEN
  24650. >The search string should use Tcl glob&truehy;style pattern matching. For details on this syntax, see <CX5FX5FTERM>Tcl and the Tk Toolkit</CX5FX5FTERM
  24651. > by John Ousterhout.</N2.NOTE.2
  24652. ><B.BODY>By default, the search is not case sensitive. To make the search case sensitive, click the Case Sensitive check box.</B.BODY
  24653. ><B.BODY>To apply feature filtering to the search, click the Use Feature Filters check box. Only those features that come through the filter are displayed. For details on setting filters, see <RBW-XREF REFID="41148" TYPE="XREF-TEXTCOPY">Using Filters</RBW-XREF
  24654. >.</B.BODY
  24655. ></LABEL
  24656. ></SUBSECTION
  24657. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10311"></RBW-ANCHOR
  24658. >Examining Items<RBW-IDXTERM TERM1="item" TERM2="displaying"></RBW-IDXTERM
  24659. ><RBW-IDXTERM TERM1="displaying" TERM2="items"></RBW-IDXTERM
  24660. ><RBW-IDXTERM TERM1="Class Browser" TERM2="displaying items"></RBW-IDXTERM
  24661. ></SS.SUBSEC.HEAD
  24662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24663. >Introduction</L.LABEL
  24664. ><B.BODY>You can use the Class Browser to display more detailed information for items. </B.BODY
  24665. ></LABEL
  24666. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24667. >How to examine the properties of a selected item<RBW-IDXTERM TERM1="property" TERM2="displaying in Class Browser"></RBW-IDXTERM
  24668. ><RBW-IDXTERM TERM1="Show Properties (Item menu in Class Browser)"></RBW-IDXTERM
  24669. ></L.LABEL
  24670. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24671. ></RBW-AUTOGEN
  24672. ></RBW-MARKER
  24673. ><RBW-PARABODY>To examine the properties of a particular item:</RBW-PARABODY
  24674. ></P.PROCEDURE
  24675. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24676. ></RBW-AUTOGEN
  24677. ></RBW-MARKER
  24678. ><RBW-PARABODY>Select an entry in one of the list boxes.</RBW-PARABODY
  24679. ></LN.LIST.NUM
  24680. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24681. ></RBW-AUTOGEN
  24682. ></RBW-MARKER
  24683. ><RBW-PARABODY>Select Item | Show Properties. </RBW-PARABODY
  24684. ></LN.LIST.NUM
  24685. ><LR.LIST.RESULT>The Show Properties dialog box appears. This is the same dialog box that is displayed when you select Item | Show Properties in the Diagram Editors.</LR.LIST.RESULT
  24686. ><B.BODY>For details on setting and viewing item properties, see <RBW-XREF REFID="22035" TYPE="XREF-TEXTCOPY">Specifying Properties</RBW-XREF
  24687. >.</B.BODY
  24688. ></LABEL
  24689. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24690. >How to examine the scope of a selected item<RBW-IDXTERM TERM1="scope of item" TERM2="displaying"></RBW-IDXTERM
  24691. ><RBW-IDXTERM TERM1="Show Scope (Item menu in Class Browser)"></RBW-IDXTERM
  24692. ><RBW-IDXTERM TERM1="item" TERM2="displaying"></RBW-IDXTERM
  24693. ><RBW-IDXTERM TERM1="item" TERM2="scope of"></RBW-IDXTERM
  24694. ></L.LABEL
  24695. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24696. ></RBW-AUTOGEN
  24697. ></RBW-MARKER
  24698. ><RBW-PARABODY>To examine the scope of a particular item:</RBW-PARABODY
  24699. ></P.PROCEDURE
  24700. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24701. ></RBW-AUTOGEN
  24702. ></RBW-MARKER
  24703. ><RBW-PARABODY>Select an entry in one of the list boxes.</RBW-PARABODY
  24704. ></LN.LIST.NUM
  24705. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24706. ></RBW-AUTOGEN
  24707. ></RBW-MARKER
  24708. ><RBW-PARABODY>Select Item | Show Scope. </RBW-PARABODY
  24709. ></LN.LIST.NUM
  24710. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24711. ></RBW-AUTOGEN
  24712. >You can view the scope of only one item at a time. So if the entry contains more than one item (for example an association might contain an association name, role name, and class name), the Item Selection dialog box appears, allowing you to choose the item whose scope you want to see. Click the item name and click OK.</N2.NOTE.2
  24713. ><LR.LIST.RESULT>The Show Scope dialog box appears. </LR.LIST.RESULT
  24714. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00184.unk" origfile="pics/showscop.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24715. ></FA2.FIGURE.ANCHOR.2
  24716. ></LABEL
  24717. ></SUBSECTION
  24718. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14379"></RBW-ANCHOR
  24719. ><RBW-IDXTERM TERM1="printing" TERM2="from Class Browser"></RBW-IDXTERM
  24720. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  24721. ><RBW-IDXTERM TERM1="Class Browser" TERM2="printing"></RBW-IDXTERM
  24722. >Printing from the Class Browser</SS.SUBSEC.HEAD
  24723. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24724. >Introduction</L.LABEL
  24725. ><B.BODY>You can print the data of the currently opened class to the default printer. You can change the default printer option settings.</B.BODY
  24726. ><B.BODY>For details on saving option settings to your user environment file, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  24727. ><CX5FX5FTITLE></CX5FX5FTITLE
  24728. >.</B.BODY
  24729. ></LABEL
  24730. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24731. ><RBW-IDXTERM TERM1="class" TERM2="printing"></RBW-IDXTERM
  24732. >How to print class data</L.LABEL
  24733. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24734. ></RBW-AUTOGEN
  24735. ></RBW-MARKER
  24736. ><RBW-PARABODY>To print class data, select File | Print View. </RBW-PARABODY
  24737. ></P.PROCEDURE
  24738. ><LR.LIST.RESULT>The class data is printed on the default printer.</LR.LIST.RESULT
  24739. ></LABEL
  24740. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24741. >How to set the default printer</L.LABEL
  24742. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24743. ></RBW-AUTOGEN
  24744. ></RBW-MARKER
  24745. ><RBW-PARABODY>To set the default printer:</RBW-PARABODY
  24746. ></P.PROCEDURE
  24747. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24748. ></RBW-AUTOGEN
  24749. ></RBW-MARKER
  24750. ><RBW-PARABODY>Select Options | Printer Setup.</RBW-PARABODY
  24751. ></LN.LIST.NUM
  24752. ><LR.LIST.RESULT>The Printer Setup dialog box appears.</LR.LIST.RESULT
  24753. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00185.unk" origfile="pics/pr_setup.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24754. ></FA2.FIGURE.ANCHOR.2
  24755. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24756. ></RBW-AUTOGEN
  24757. ></RBW-MARKER
  24758. ><RBW-PARABODY>Specify the print command in the Printer Command field and click OK.</RBW-PARABODY
  24759. ></LN.LIST.NUM
  24760. ><LR.LIST.RESULT>The next time you print, this print command is used.</LR.LIST.RESULT
  24761. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24762. >Alternative</SL.SUBLABEL
  24763. ><B.BODY>You can also set the default printer from the Browser using Options | Printer Setup | Text, as described in <RBW-XREF REFID="35959" TYPE="XREF-TEXTCOPY">Printing</RBW-XREF
  24764. >.</B.BODY
  24765. ></LABEL
  24766. ></SUBSECTION
  24767. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="changing" TERM2="Class Browser fonts"></RBW-IDXTERM
  24768. ><RBW-IDXTERM TERM1="Class Browser" TERM2="changing font"></RBW-IDXTERM
  24769. ><RBW-IDXTERM TERM1="Font (Options menu)" TERM2="Class Browser"></RBW-IDXTERM
  24770. ><RBW-ANCHOR ID="10544"></RBW-ANCHOR
  24771. >Changing the Class Browser Font</SS.SUBSEC.HEAD
  24772. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24773. >Introduction</L.LABEL
  24774. ><B.BODY>You can specify the fonts used in the Class Browser lists by changing your font option settings.</B.BODY
  24775. ><B.BODY>To save option settings to your user environment file, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  24776. ><CX5FX5FTITLE></CX5FX5FTITLE
  24777. >.</B.BODY
  24778. ></LABEL
  24779. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24780. >How to change the Class Browser font</L.LABEL
  24781. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  24782. ></RBW-AUTOGEN
  24783. ></RBW-MARKER
  24784. ><RBW-PARABODY>To change the Class Browser font:</RBW-PARABODY
  24785. ></P.PROCEDURE
  24786. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  24787. ></RBW-AUTOGEN
  24788. ></RBW-MARKER
  24789. ><RBW-PARABODY>Select Options | Font...</RBW-PARABODY
  24790. ></LN.LIST.NUM
  24791. ><LR.LIST.RESULT>The Class Browser Font dialog box appears. The following figures show both the Windows version (first) and the UNIX version (second).</LR.LIST.RESULT
  24792. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00186.unk" origfile="pics/cb_fontw.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24793. ></FA2.FIGURE.ANCHOR.2
  24794. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00187.unk" origfile="pics/cb_fontu.gif" origtype="X" origdoc="../../sources/mg/mgreport.fm5.mif"></RBW-GRAPHIC
  24795. ></FA2.FIGURE.ANCHOR.2
  24796. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  24797. ></RBW-AUTOGEN
  24798. ></RBW-MARKER
  24799. ><RBW-PARABODY>Select a font family, style, and size. Then click OK.</RBW-PARABODY
  24800. ></LN.LIST.NUM
  24801. ><LR.LIST.RESULT>ObjectTeam applies the specified font. </LR.LIST.RESULT
  24802. ><RBWAUTO-0001></RBWAUTO-0001
  24803. ><!--
  24804.  
  24805.  
  24806.  
  24807.  
  24808.  
  24809. CONVERTING SOURCE FILE ../../sources/mg/dgmsomt.fm5.mif
  24810.  
  24811.  
  24812. --><B.BODY></B.BODY
  24813. ><B.BODY></B.BODY
  24814. ><B.BODY></B.BODY
  24815. ><B.BODY></B.BODY
  24816. ><B.BODY></B.BODY
  24817. ></LABEL
  24818. ></SUBSECTION
  24819. ></SECTION
  24820. ></CHAPTER
  24821. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  24822. ></RBW-AUTOGEN
  24823. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  24824. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  24825. ></RBW-SYSOBJ
  24826. ><RBW-ANCHOR ID="39383"></RBW-ANCHOR
  24827. >OMT Support</A.APPENDIX.HEAD
  24828. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24829. >Introduction</L.LABEL
  24830. ><B.BODY>The Unified Modeling Language (UML) has been positioned by James Rumbaugh and others as the legitimate successor of the Object Modeling Technique (OMT). </B.BODY
  24831. ><B.BODY>Previous releases of ObjectTeam supported OMT and future releases of ObjectTeam will support UML. To support our customers during the transition from OMT to UML, the current release of ObjectTeam supports both.</B.BODY
  24832. ></LABEL
  24833. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24834. >OMT module</L.LABEL
  24835. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>OMT</CX5FX5FEMPHASIS
  24836. > provides the menu items and Tcl code required to create and use diagrams supported by the OMT methodology. Therefore, this module must be active if you want to work with ObjectTeam according to this methodology.</B.BODY
  24837. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  24838. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24839. >For more information</SL.SUBLABEL
  24840. ><B.BODY><RBWAUTO-0009><RBW-SYSATTRS><RBW-SYSATTR ATTRNAME="MIFconds">C++</RBW-SYSATTR
  24841. ></RBW-SYSATTRS
  24842. >See </RBWAUTO-0009
  24843. ><CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  24844. ><CX5FX5FTITLE><RBWAUTO-0009><RBW-SYSATTRS><RBW-SYSATTR ATTRNAME="MIFconds">C++</RBW-SYSATTR
  24845. ></RBW-SYSATTRS
  24846. ></RBWAUTO-0009
  24847. ></CX5FX5FTITLE
  24848. ><RBWAUTO-0009><RBW-SYSATTRS><RBW-SYSATTR ATTRNAME="MIFconds">C++</RBW-SYSATTR
  24849. ></RBW-SYSATTRS
  24850. > for details on how to activate a module.</RBWAUTO-0009
  24851. ></B.BODY
  24852. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24853. >Diagrams</SL.SUBLABEL
  24854. ><B.BODY>By activating the <CX5FX5FEMPHASIS>OMT</CX5FX5FEMPHASIS
  24855. > module you add the following diagrams to ObjectTeam:</B.BODY
  24856. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24857. ></RBW-AUTOGEN
  24858. ></RBW-MARKER
  24859. ><RBW-PARABODY><RBW-XREF REFID="41568" TYPE="XREF-TEXTCOPY">Class Communication Diagram</RBW-XREF
  24860. ></RBW-PARABODY
  24861. ></LB.LIST.BULLET
  24862. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24863. ></RBW-AUTOGEN
  24864. ></RBW-MARKER
  24865. ><RBW-PARABODY><RBW-XREF REFID="20188" TYPE="XREF-TEXTCOPY">Data Flow Diagram</RBW-XREF
  24866. ></RBW-PARABODY
  24867. ></LB.LIST.BULLET
  24868. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24869. ></RBW-AUTOGEN
  24870. ></RBW-MARKER
  24871. ><RBW-PARABODY><RBW-XREF REFID="41861" TYPE="XREF-TEXTCOPY">Message Generalization Diagram</RBW-XREF
  24872. ></RBW-PARABODY
  24873. ></LB.LIST.BULLET
  24874. ><B.BODY>The differences between UML and OMT diagrams are the following:</B.BODY
  24875. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="168p"><COLSPEC COLNAME="2" COLWIDTH="280p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>UML Diagram</CELLHEADING
  24876. ></ENTRY
  24877. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>OMT Equivalent</CELLHEADING
  24878. ></ENTRY
  24879. ></RBW-ROW
  24880. ></THEAD
  24881. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19294" TYPE="XREF-TEXTCOPY">Class Diagram</RBW-XREF
  24882. ></CELLBODY
  24883. ></ENTRY
  24884. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Association Diagram</CELLBODY
  24885. ></ENTRY
  24886. ></RBW-ROW
  24887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13208" TYPE="XREF-TEXTCOPY">Collaboration Diagram</RBW-XREF
  24888. ></CELLBODY
  24889. ></ENTRY
  24890. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These diagrams replace some of the functionality represented by the CCD and MGD. Although CODs remain available even if you choose to use OMT notation, do NOT use both CODs and CCDs in the same project.</CELLBODY
  24891. ></ENTRY
  24892. ></RBW-ROW
  24893. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12305" TYPE="XREF-TEXTCOPY">Sequence Diagram</RBW-XREF
  24894. ></CELLBODY
  24895. ></ENTRY
  24896. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event Trace Diagram</CELLBODY
  24897. ></ENTRY
  24898. ></RBW-ROW
  24899. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34271" TYPE="XREF-TEXTCOPY">State Transition Diagram</RBW-XREF
  24900. ></CELLBODY
  24901. ></ENTRY
  24902. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>State Transition Diagrams</CELLBODY
  24903. ></ENTRY
  24904. ></RBW-ROW
  24905. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17920" TYPE="XREF-TEXTCOPY">Use Case Diagram</RBW-XREF
  24906. ></CELLBODY
  24907. ></ENTRY
  24908. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use Case Diagram</CELLBODY
  24909. ></ENTRY
  24910. ></RBW-ROW
  24911. ></TBODY
  24912. ></TGROUP
  24913. ></RBW-TABLE
  24914. ></LABEL
  24915. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24916. >UML and OMT look</L.LABEL
  24917. ><B.BODY>ObjectTeam allows you to choose between the UML or the OMT notation in the following diagram editors:</B.BODY
  24918. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="168p"><COLSPEC COLNAME="2" COLWIDTH="280p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram</CELLHEADING
  24919. ></ENTRY
  24920. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>OMT Equivalent</CELLHEADING
  24921. ></ENTRY
  24922. ></RBW-ROW
  24923. ></THEAD
  24924. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19294" TYPE="XREF-TEXTCOPY">Class Diagram</RBW-XREF
  24925. ></CELLBODY
  24926. ></ENTRY
  24927. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Association Diagram</CELLBODY
  24928. ></ENTRY
  24929. ></RBW-ROW
  24930. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12305" TYPE="XREF-TEXTCOPY">Sequence Diagram</RBW-XREF
  24931. ></CELLBODY
  24932. ></ENTRY
  24933. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event Trace Diagram</CELLBODY
  24934. ></ENTRY
  24935. ></RBW-ROW
  24936. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34271" TYPE="XREF-TEXTCOPY">State Transition Diagram</RBW-XREF
  24937. ></CELLBODY
  24938. ></ENTRY
  24939. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>State Transition Diagrams</CELLBODY
  24940. ></ENTRY
  24941. ></RBW-ROW
  24942. ></TBODY
  24943. ></TGROUP
  24944. ></RBW-TABLE
  24945. ><B.BODY>You can switch from UML look to OMT look, or vice versa, using the commands Options | OMT Look and Options | UML Look in the diagram editors.</B.BODY
  24946. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  24947. ></RBW-AUTOGEN
  24948. >The module OMT does not need to be active for switching looks.</N.NOTE
  24949. ></LABEL
  24950. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24951. >Future support for OMT</L.LABEL
  24952. ><BI.BODY.INTRO>If you choose OMT in the current release, be aware that you can lose information when you upgrade to a future release of ObjectTeam:</BI.BODY.INTRO
  24953. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24954. ></RBW-AUTOGEN
  24955. ></RBW-MARKER
  24956. ><RBW-PARABODY>The Class, Sequence, State, and Use Case Diagrams are also supported for UML. Information specified in these diagrams will be preserved during future ObjectTeam upgrades.</RBW-PARABODY
  24957. ></LB.LIST.BULLET
  24958. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24959. ></RBW-AUTOGEN
  24960. ></RBW-MARKER
  24961. ><RBW-PARABODY>The Class Communication, Data Flow, and Message Generalization diagrams are not supported for UML. Information specified in these diagrams will be lost during future ObjectTeam upgrades. </RBW-PARABODY
  24962. ></LB.LIST.BULLET
  24963. ></LABEL
  24964. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  24965. ><RBW-ANCHOR ID="25359"></RBW-ANCHOR
  24966. >Relationships Among Diagrams</L.LABEL
  24967. ><B.BODY>In ObjectTeam, the components in one diagram are often related to the components in another. For example, an actor in a UCD is a class in a CD. This has two consequences for your work in ObjectTeam:</B.BODY
  24968. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24969. ></RBW-AUTOGEN
  24970. ></RBW-MARKER
  24971. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Navigation.</CX5FX5FBULLET.EMPHASIS
  24972. > ObjectTeam provides special navigation paths that allow you to move from a component in one diagram to another related diagram. See <RBW-XREF REFID="33913" TYPE="XREF-TEXTCOPY">Navigating Between Diagrams on page 3–7</RBW-XREF
  24973. > for more information.</RBW-PARABODY
  24974. ></LB.LIST.BULLET
  24975. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  24976. ></RBW-AUTOGEN
  24977. ></RBW-MARKER
  24978. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Semantic checking.</CX5FX5FBULLET.EMPHASIS
  24979. > The following table shows the semantic equivalence of diagram follows. The Check utility ensures that your ObjectTeam model respects these semantics. For a complete list of the checks performed for each diagram, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  24980. ><CX5FX5FTITLE></CX5FX5FTITLE
  24981. >.</RBW-PARABODY
  24982. ></LB.LIST.BULLET
  24983. ><RBW-TABLE><TGROUP COLS="7"><COLSPEC COLNAME="1" COLWIDTH="72p"><COLSPEC COLNAME="2" COLWIDTH="72p"><COLSPEC COLNAME="3" COLWIDTH="90p"><COLSPEC COLNAME="4" COLWIDTH="72p"><COLSPEC COLNAME="5" COLWIDTH="72p"><COLSPEC COLNAME="6" COLWIDTH="72p"><COLSPEC COLNAME="7" COLWIDTH="108p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD</CELLHEADING
  24984. ></ENTRY
  24985. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CCD</CELLHEADING
  24986. ></ENTRY
  24987. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>DFD</CELLHEADING
  24988. ></ENTRY
  24989. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>MGD</CELLHEADING
  24990. ></ENTRY
  24991. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>SD</CELLHEADING
  24992. ></ENTRY
  24993. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLHEADING>STD</CELLHEADING
  24994. ></ENTRY
  24995. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLHEADING>UCD</CELLHEADING
  24996. ></ENTRY
  24997. ></RBW-ROW
  24998. ></THEAD
  24999. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  25000. ></ENTRY
  25001. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  25002. ></ENTRY
  25003. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>actor or data store</CELLBODY
  25004. ></ENTRY
  25005. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25006. ></ENTRY
  25007. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>object</CELLBODY
  25008. ></ENTRY
  25009. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  25010. ></ENTRY
  25011. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25012. ></ENTRY
  25013. ></RBW-ROW
  25014. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  25015. ></ENTRY
  25016. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>actor</CELLBODY
  25017. ></ENTRY
  25018. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25019. ></ENTRY
  25020. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25021. ></ENTRY
  25022. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>initiator</CELLBODY
  25023. ></ENTRY
  25024. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  25025. ></ENTRY
  25026. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>actor</CELLBODY
  25027. ></ENTRY
  25028. ></RBW-ROW
  25029. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  25030. ></ENTRY
  25031. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>message</CELLBODY
  25032. ></ENTRY
  25033. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>data process, control flow, or update flow</CELLBODY
  25034. ></ENTRY
  25035. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>message</CELLBODY
  25036. ></ENTRY
  25037. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>event</CELLBODY
  25038. ></ENTRY
  25039. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>event or event message</CELLBODY
  25040. ></ENTRY
  25041. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>communication association</CELLBODY
  25042. ></ENTRY
  25043. ></RBW-ROW
  25044. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25045. ></ENTRY
  25046. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25047. ></ENTRY
  25048. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25049. ></ENTRY
  25050. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25051. ></ENTRY
  25052. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualified SD</CELLBODY
  25053. ></ENTRY
  25054. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25055. ></ENTRY
  25056. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>use case</CELLBODY
  25057. ></ENTRY
  25058. ></RBW-ROW
  25059. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  25060. ></ENTRY
  25061. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25062. ></ENTRY
  25063. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>data flow</CELLBODY
  25064. ></ENTRY
  25065. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25066. ></ENTRY
  25067. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25068. ></ENTRY
  25069. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25070. ></ENTRY
  25071. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25072. ></ENTRY
  25073. ></RBW-ROW
  25074. ></TBODY
  25075. ></TGROUP
  25076. ><RBW-ICONIZE></RBW-TABLE
  25077. ></LABEL
  25078. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25079. >In this chapter</L.LABEL
  25080. ><B.BODY>This chapter contains the following sections:</B.BODY
  25081. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  25082. ></ENTRY
  25083. ></RBW-ROW
  25084. ></THEAD
  25085. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19294" TYPE="XREF-TEXTCOPY">Class Diagram&rbwtab;A–4</RBW-XREF
  25086. ></SB.SECTION.BLOCK.TABLE
  25087. ></ENTRY
  25088. ></RBW-ROW
  25089. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41568" TYPE="XREF-TEXTCOPY">Class Communication Diagram&rbwtab;A–7</RBW-XREF
  25090. ></SB.SECTION.BLOCK.TABLE
  25091. ></ENTRY
  25092. ></RBW-ROW
  25093. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20188" TYPE="XREF-TEXTCOPY">Data Flow Diagram&rbwtab;A–11</RBW-XREF
  25094. ></SB.SECTION.BLOCK.TABLE
  25095. ></ENTRY
  25096. ></RBW-ROW
  25097. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41861" TYPE="XREF-TEXTCOPY">Message Generalization Diagram&rbwtab;A–17</RBW-XREF
  25098. ></SB.SECTION.BLOCK.TABLE
  25099. ></ENTRY
  25100. ></RBW-ROW
  25101. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12305" TYPE="XREF-TEXTCOPY">Sequence Diagram&rbwtab;A–19</RBW-XREF
  25102. ></SB.SECTION.BLOCK.TABLE
  25103. ></ENTRY
  25104. ></RBW-ROW
  25105. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34271" TYPE="XREF-TEXTCOPY">State Transition Diagram&rbwtab;A–20</RBW-XREF
  25106. ></SB.SECTION.BLOCK.TABLE
  25107. ></ENTRY
  25108. ></RBW-ROW
  25109. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17920" TYPE="XREF-TEXTCOPY">Use Case Diagram&rbwtab;A–21</RBW-XREF
  25110. ></SB.SECTION.BLOCK.TABLE
  25111. ></ENTRY
  25112. ></RBW-ROW
  25113. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25261" TYPE="XREF-TEXTCOPY">Navigation Between Diagrams&rbwtab;A–22</RBW-XREF
  25114. ></SB.SECTION.BLOCK.TABLE
  25115. ></ENTRY
  25116. ></RBW-ROW
  25117. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE>Summary of Notation&rbwtab;A–46</SB.SECTION.BLOCK.TABLE
  25118. ></ENTRY
  25119. ></RBW-ROW
  25120. ></TBODY
  25121. ></TGROUP
  25122. ></RBW-TABLE
  25123. ></LABEL
  25124. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="19294"></RBW-ANCHOR
  25125. >Class Diagram</S.SECTION.HEAD
  25126. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25127. >Introduction</L.LABEL
  25128. ><B.BODY>The Class Diagram supports UML and OMT notation. This section describes the diagram symbols used when you select OMT notation using Options | Diagram.</B.BODY
  25129. ></LABEL
  25130. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25131. >Control panel</L.LABEL
  25132. ><B.BODY>The following table shows the OMT symbols as they appear in the control panel of the Class Diagram.</B.BODY
  25133. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  25134. ></RBW-AUTOGEN
  25135. >The bold names indicate the symbols that are unique to OMT. This section describes only these OMT symbols. The remaining symbols are the same in OMT and UML and are described in <RBW-XREF REFID="19294" TYPE="XREF-TEXTCOPY">Class Diagram on page 4–3</RBW-XREF
  25136. >. </N.NOTE
  25137. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="90p"><COLSPEC COLNAME="3" COLWIDTH="90p"><COLSPEC COLNAME="4" COLWIDTH="144p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  25138. ></ENTRY
  25139. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00188.unk" origfile="pics/icclas.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25140. ></CG.CELLBODY.GRAPHIC
  25141. ></ENTRY
  25142. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00189.unk" origfile="pics/icnary.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25143. ></CG.CELLBODY.GRAPHIC
  25144. ></ENTRY
  25145. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>N&truehy;ary association</CELLBODY
  25146. ></ENTRY
  25147. ></RBW-ROW
  25148. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>More classes</CELLBODY
  25149. ></ENTRY
  25150. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00190.unk" origfile="pics/icmore.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25151. ></CG.CELLBODY.GRAPHIC
  25152. ></ENTRY
  25153. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00191.unk" origfile="pics/icnote.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25154. ></CG.CELLBODY.GRAPHIC
  25155. ></ENTRY
  25156. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Note</CELLBODY
  25157. ></ENTRY
  25158. ></RBW-ROW
  25159. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Vertex</CELLBODY
  25160. ></ENTRY
  25161. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00192.unk" origfile="pics/icvert.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25162. ></CG.CELLBODY.GRAPHIC
  25163. ></ENTRY
  25164. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00193.unk" origfile="pics/icassc.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25165. ></CG.CELLBODY.GRAPHIC
  25166. ></ENTRY
  25167. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  25168. ></ENTRY
  25169. ></RBW-ROW
  25170. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Aggregation</CELLBODY
  25171. ></ENTRY
  25172. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00194.unk" origfile="pics/icaggr.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25173. ></CG.CELLBODY.GRAPHIC
  25174. ></ENTRY
  25175. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00195.unk" origfile="pics/icqual.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25176. ></CG.CELLBODY.GRAPHIC
  25177. ></ENTRY
  25178. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualified association</CELLBODY
  25179. ></ENTRY
  25180. ></RBW-ROW
  25181. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualified aggregation</CELLBODY
  25182. ></ENTRY
  25183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00196.unk" origfile="pics/icqaggr.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25184. ></CG.CELLBODY.GRAPHIC
  25185. ></ENTRY
  25186. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00197.unk" origfile="pics/icnaryc.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25187. ></CG.CELLBODY.GRAPHIC
  25188. ></ENTRY
  25189. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>N&truehy;ary connector</CELLBODY
  25190. ></ENTRY
  25191. ></RBW-ROW
  25192. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constraint</CELLBODY
  25193. ></ENTRY
  25194. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00198.unk" origfile="pics/icconstr.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25195. ></CG.CELLBODY.GRAPHIC
  25196. ></ENTRY
  25197. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00199.unk" origfile="pics/iclnkc2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25198. ></CG.CELLBODY.GRAPHIC
  25199. ></ENTRY
  25200. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>Association class connector</CX5FX5FBULLET.EMPHASIS
  25201. ></CELLBODY
  25202. ></ENTRY
  25203. ></RBW-ROW
  25204. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>Generalization</CX5FX5FBULLET.EMPHASIS
  25205. ></CELLBODY
  25206. ></ENTRY
  25207. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00200.unk" origfile="pics/icgen2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25208. ></CG.CELLBODY.GRAPHIC
  25209. ></ENTRY
  25210. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00201.unk" origfile="pics/icogen2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25211. ></CG.CELLBODY.GRAPHIC
  25212. ></ENTRY
  25213. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>Overlapping generalization</CX5FX5FBULLET.EMPHASIS
  25214. ></CELLBODY
  25215. ></ENTRY
  25216. ></RBW-ROW
  25217. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Note connector</CELLBODY
  25218. ></ENTRY
  25219. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00202.unk" origfile="pics/icnotec.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25220. ></CG.CELLBODY.GRAPHIC
  25221. ></ENTRY
  25222. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00203.unk" origfile="pics/icprop.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25223. ></CG.CELLBODY.GRAPHIC
  25224. ></ENTRY
  25225. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Propagation</CELLBODY
  25226. ></ENTRY
  25227. ></RBW-ROW
  25228. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Select</CELLBODY
  25229. ></ENTRY
  25230. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00204.unk" origfile="pics/icselect.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25231. ></CG.CELLBODY.GRAPHIC
  25232. ></ENTRY
  25233. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC></CG.CELLBODY.GRAPHIC
  25234. ></ENTRY
  25235. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25236. ></ENTRY
  25237. ></RBW-ROW
  25238. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>Begin mandatory association</CX5FX5FBULLET.EMPHASIS
  25239. ></CELLBODY
  25240. ></ENTRY
  25241. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00205.unk" origfile="pics/icmand2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25242. ></CG.CELLBODY.GRAPHIC
  25243. ></ENTRY
  25244. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00206.unk" origfile="pics/icmand2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25245. ></CG.CELLBODY.GRAPHIC
  25246. ></ENTRY
  25247. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>End mandatory association</CX5FX5FBULLET.EMPHASIS
  25248. ></CELLBODY
  25249. ></ENTRY
  25250. ></RBW-ROW
  25251. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>Begin optional association</CX5FX5FBULLET.EMPHASIS
  25252. ></CELLBODY
  25253. ></ENTRY
  25254. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00207.unk" origfile="pics/icopt2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25255. ></CG.CELLBODY.GRAPHIC
  25256. ></ENTRY
  25257. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00208.unk" origfile="pics/icopt2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25258. ></CG.CELLBODY.GRAPHIC
  25259. ></ENTRY
  25260. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>End optional association</CX5FX5FBULLET.EMPHASIS
  25261. ></CELLBODY
  25262. ></ENTRY
  25263. ></RBW-ROW
  25264. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>Begin many association</CX5FX5FBULLET.EMPHASIS
  25265. ></CELLBODY
  25266. ></ENTRY
  25267. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00209.unk" origfile="pics/icmany2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25268. ></CG.CELLBODY.GRAPHIC
  25269. ></ENTRY
  25270. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00210.unk" origfile="pics/icmany2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25271. ></CG.CELLBODY.GRAPHIC
  25272. ></ENTRY
  25273. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>End many association</CX5FX5FBULLET.EMPHASIS
  25274. ></CELLBODY
  25275. ></ENTRY
  25276. ></RBW-ROW
  25277. ></TBODY
  25278. ></TGROUP
  25279. ></RBW-TABLE
  25280. ></LABEL
  25281. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25282. >Link attribute box</L.LABEL
  25283. ><B.BODY>In the current release of ObjectTeam, the link attribute box is not available anymore, neither in OMT, nor in UML notation. You can use an association as class instead to model the same situation </B.BODY
  25284. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25285. >For more information</SL.SUBLABEL
  25286. ><B.BODY>See <RBW-XREF REFID="27609" TYPE="XREF-TEXTCOPY">Association class connector on page 4–11</RBW-XREF
  25287. >.</B.BODY
  25288. ></LABEL
  25289. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25290. >Container class<RBW-IDXTERM TERM1="container class" TERM2="symbol in CAD"></RBW-IDXTERM
  25291. ><RBW-IDXTERM TERM1="class" TERM2="container"></RBW-IDXTERM
  25292. ></L.LABEL
  25293. ><B.BODY>In the current release of ObjectTeam, the container class is not available anymore, neither in OMT, nor in UML notation. You can use a regular class instead to model a container class.</B.BODY
  25294. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25295. >For more information</SL.SUBLABEL
  25296. ><B.BODY>See <RBW-XREF REFID="39851" TYPE="XREF-TEXTCOPY">Class on page 4–4</RBW-XREF
  25297. >.</B.BODY
  25298. ></LABEL
  25299. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25300. >Association class connector</L.LABEL
  25301. ><BI.BODY.INTRO>Association class connectors are similar in OMT and UML. These are the only differences:</BI.BODY.INTRO
  25302. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25303. ></RBW-AUTOGEN
  25304. ></RBW-MARKER
  25305. ><RBW-PARABODY>The notation:</RBW-PARABODY
  25306. ></LB.LIST.BULLET
  25307. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>OMT</CELLHEADING
  25308. ></ENTRY
  25309. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>UML</CELLHEADING
  25310. ></ENTRY
  25311. ></RBW-ROW
  25312. ></THEAD
  25313. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00211.unk" origfile="pics/iclnkc2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25314. ></CG.CELLBODY.GRAPHIC
  25315. ></ENTRY
  25316. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00212.unk" origfile="pics/iclnkc.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25317. ></CG.CELLBODY.GRAPHIC
  25318. ></ENTRY
  25319. ></RBW-ROW
  25320. ></TBODY
  25321. ></TGROUP
  25322. ></RBW-TABLE
  25323. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25324. ></RBW-AUTOGEN
  25325. ></RBW-MARKER
  25326. ><RBW-PARABODY>In OMT, an association class connector can connect either an attribute or class to an association. In UML, an association class connector connects a class to an association.</RBW-PARABODY
  25327. ></LB.LIST.BULLET
  25328. ><B.BODY>For more information, see <RBW-XREF REFID="27609" TYPE="XREF-TEXTCOPY">Association class connector on page 4–11</RBW-XREF
  25329. >.</B.BODY
  25330. ></LABEL
  25331. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25332. ><RBW-ANCHOR ID="26078"></RBW-ANCHOR
  25333. >Generalization</L.LABEL
  25334. ><B.BODY>Semantically, generalizations are the same in OMT and UML. The only difference is the notation.</B.BODY
  25335. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="90p"><COLSPEC COLNAME="3" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type of Generalization</CELLHEADING
  25336. ></ENTRY
  25337. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>OMT</CELLHEADING
  25338. ></ENTRY
  25339. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>UML</CELLHEADING
  25340. ></ENTRY
  25341. ></RBW-ROW
  25342. ></THEAD
  25343. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Disjoin</CELLBODY
  25344. ></ENTRY
  25345. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00213.unk" origfile="pics/icgen2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25346. ></CG.CELLBODY.GRAPHIC
  25347. ></ENTRY
  25348. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00214.unk" origfile="pics/icgen.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25349. ></CG.CELLBODY.GRAPHIC
  25350. ></ENTRY
  25351. ></RBW-ROW
  25352. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overlapping</CELLBODY
  25353. ></ENTRY
  25354. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00215.unk" origfile="pics/icogen2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25355. ></CG.CELLBODY.GRAPHIC
  25356. ></ENTRY
  25357. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00216.unk" origfile="pics/icogen.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25358. ></CG.CELLBODY.GRAPHIC
  25359. ></ENTRY
  25360. ></RBW-ROW
  25361. ></TBODY
  25362. ></TGROUP
  25363. ></RBW-TABLE
  25364. ><B.BODY>For more information, see <RBW-XREF REFID="33802" TYPE="XREF-TEXTCOPY">Generalization on page 4–12</RBW-XREF
  25365. >.</B.BODY
  25366. ></LABEL
  25367. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25368. >Multiplicity</L.LABEL
  25369. ><B.BODY>Semantically, multiplicity of associations is the same in OMT and UML. The only difference is the notation.</B.BODY
  25370. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="90p"><COLSPEC COLNAME="3" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  25371. ></ENTRY
  25372. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>OMT</CELLHEADING
  25373. ></ENTRY
  25374. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>UML</CELLHEADING
  25375. ></ENTRY
  25376. ></RBW-ROW
  25377. ></THEAD
  25378. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Mandatory</CELLBODY
  25379. ></ENTRY
  25380. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00217.unk" origfile="pics/icmand2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25381. ></CG.CELLBODY.GRAPHIC
  25382. ></ENTRY
  25383. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00218.unk" origfile="pics/icmand.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25384. ></CG.CELLBODY.GRAPHIC
  25385. ></ENTRY
  25386. ></RBW-ROW
  25387. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional</CELLBODY
  25388. ></ENTRY
  25389. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00219.unk" origfile="pics/icopt2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25390. ></CG.CELLBODY.GRAPHIC
  25391. ></ENTRY
  25392. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00220.unk" origfile="pics/icopt.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25393. ></CG.CELLBODY.GRAPHIC
  25394. ></ENTRY
  25395. ></RBW-ROW
  25396. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Many</CELLBODY
  25397. ></ENTRY
  25398. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00221.unk" origfile="pics/icmany2.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25399. ></CG.CELLBODY.GRAPHIC
  25400. ></ENTRY
  25401. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00222.unk" origfile="pics/icmany.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25402. ></CG.CELLBODY.GRAPHIC
  25403. ></ENTRY
  25404. ></RBW-ROW
  25405. ></TBODY
  25406. ></TGROUP
  25407. ></RBW-TABLE
  25408. ><B.BODY>In UML, the multiplicity of the association is always indicated by a multiplicity specification that appears above the association connector.</B.BODY
  25409. ><B.BODY>In OMT, you can add a multiplicity specification after adding the association. For example, to indicate a multiplicity of 2 or more, add the following multiplicity specification to a many association: 2+.</B.BODY
  25410. ><B.BODY>For more information, see <RBW-XREF REFID="19961" TYPE="XREF-TEXTCOPY">Associations on page 4–7</RBW-XREF
  25411. >.</B.BODY
  25412. ><B.BODY></B.BODY
  25413. ></LABEL
  25414. ></SECTION
  25415. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="41568"></RBW-ANCHOR
  25416. >Class Communication Diagram</S.SECTION.HEAD
  25417. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25418. >Introduction</L.LABEL
  25419. ><B.BODY>The Class Communication Diagram (CCD) is not a standard OMT diagram. It is an ObjectTeam diagram used to support OMT. This diagram is added to ObjectTeam when you activate the omtdgms module, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  25420. ><CX5FX5FTITLE></CX5FX5FTITLE
  25421. >.</B.BODY
  25422. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  25423. ></RBW-AUTOGEN
  25424. >Information specified in the CCD will be lost during future ObjectTeam upgrades.</W.WARNING
  25425. ></LABEL
  25426. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25427. >Purpose</L.LABEL
  25428. ><B.BODY>You<RBW-IDXTERM TERM1="Class Communication Diagram"></RBW-IDXTERM
  25429. > use CCDs to focus on the interaction and communication between classes and to identify the boundaries of the system. The diagrams show the communication between classes or groups of classes.</B.BODY
  25430. ><B.BODY>In a CCD, the communication patterns between classes are modeled by grouping the classes into subjects. The patterns between the individual classes of the subject are modeled in separate diagrams. You can use the CCD to generalize a number of communication sequences. CCDs are the class&truehy;level equivalent of SDs. They are similar to the Event Flow Diagrams in the OMT book.</B.BODY
  25431. ><B.BODY>When drawing a CCD, the following points are of interest:</B.BODY
  25432. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25433. ></RBW-AUTOGEN
  25434. ></RBW-MARKER
  25435. ><RBW-PARABODY>Which classes can be grouped into subjects</RBW-PARABODY
  25436. ></LB.LIST.BULLET
  25437. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25438. ></RBW-AUTOGEN
  25439. ></RBW-MARKER
  25440. ><RBW-PARABODY>How these subjects communicate</RBW-PARABODY
  25441. ></LB.LIST.BULLET
  25442. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25443. ></RBW-AUTOGEN
  25444. ></RBW-MARKER
  25445. ><RBW-PARABODY>How the classes of the subjects communicate</RBW-PARABODY
  25446. ></LB.LIST.BULLET
  25447. ><B.BODY>The structure of the messages that make up the communication is not of interest.</B.BODY
  25448. ></LABEL
  25449. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25450. >Example CCD</L.LABEL
  25451. ><B.BODY>The following figure shows a simple CCD. A member of a video store communicates with a clerk to rent and return products.</B.BODY
  25452. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00223.unk" origfile="pics/ccdexamp.gif" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25453. ></FA.FIGURE.ANCHOR
  25454. ></LABEL
  25455. ><SUBSECTION><SS.SUBSEC.HEAD>Symbols<RBW-IDXTERM TERM1="Class Communication Diagram" TERM2="symbols in"></RBW-IDXTERM
  25456. ><RBW-IDXTERM TERM1="symbols" TERM2="in CCD"></RBW-IDXTERM
  25457. ></SS.SUBSEC.HEAD
  25458. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25459. >Introduction</L.LABEL
  25460. ><B.BODY>This section describes the symbols used in the CCD. The following illustration shows the symbols as they appear in the diagram Control Panel:</B.BODY
  25461. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00224.tif" origseq="156" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25462. ></FA.FIGURE.ANCHOR
  25463. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  25464. ></RBW-AUTOGEN
  25465. >The Vertex, Select, Note, and Note connector symbols are common to all diagrams. They are described in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  25466. >.</N.NOTE
  25467. ></LABEL
  25468. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25469. >Class<RBW-IDXTERM TERM1="class" TERM2="symbol in CCD"></RBW-IDXTERM
  25470. ></L.LABEL
  25471. ><B.BODY>A class is a group of objects with similar properties (attributes), common behavior (operations), common relationships to other objects, and common semantics. Classes are arranged into hierarchies. They share common structure and behavior and are associated with other classes. You can distinguish abstract classes from concrete classes. An abstract class has no direct instances but its descendant classes do.</B.BODY
  25472. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00225.unk" origfile="pics/class" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25473. ></FA.FIGURE.ANCHOR
  25474. ><B.BODY>Objects in a class have the same attributes and behavior patterns. Most objects distinguish themselves through differences in their attribute values and relationships to other objects. </B.BODY
  25475. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25476. >Decomposing classes</SL.SUBLABEL
  25477. ><B.BODY>To specify the internal communication of a class, actor, or subject, you break down that component into smaller units in a CCD. You can continue this process of breaking down classes, actors, or subjects until you reach a level on which further decomposition seems impossible or meaningless.<RBW-IDXTERM TERM1="Class Communication Diagram" TERM2="decomposition of"></RBW-IDXTERM
  25478. ></B.BODY
  25479. ><B.BODY>To decompose an actor, class, or subject, open one of these diagram components. The editor window clears and loads a new CCD that contains at least the opened component. You can now draw a CCD for the opened component.</B.BODY
  25480. ></LABEL
  25481. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25482. >Class reference<RBW-IDXTERM TERM1="class reference" TERM2="symbol in CCD"></RBW-IDXTERM
  25483. ><RBW-IDXTERM TERM1="class" TERM2="reference to existing"></RBW-IDXTERM
  25484. ></L.LABEL
  25485. ><BI.BODY.INTRO>A class reference represents any class that exists in another CCD, whether in the same system or a different one.</BI.BODY.INTRO
  25486. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00226.unk" origfile="pics/clsref" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25487. ></FA.FIGURE.ANCHOR
  25488. ></LABEL
  25489. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25490. >Container class<RBW-IDXTERM TERM1="container class" TERM2="symbol in CCD"></RBW-IDXTERM
  25491. ></L.LABEL
  25492. ><B.BODY>A container class implements general purpose data structures. It refers to a possible actual implementation of the class. The container class refers to the organization or structure of the data so that algorithms can use it. These data structures are generally part of the library that comes with an object oriented programming language. A general purpose data structure is an instance of a container class. Possible data structures are sets, bags, dynamic arrays, lists, queues, stacks, dictionaries, associations, and trees. Container classes serve as a framework for organizing collections of other objects.</B.BODY
  25493. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00227.unk" origfile="pics/ctcls" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25494. ></FA.FIGURE.ANCHOR
  25495. ></LABEL
  25496. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25497. >Actor<RBW-IDXTERM TERM1="actor" TERM2="symbol in CCD"></RBW-IDXTERM
  25498. ></L.LABEL
  25499. ><B.BODY>An actor is a system boundary. It represents the interaction of the system with individuals or with another system. The actor is a kind of initiator. This initiator indicates that information or some other kind of response is required from the system.</B.BODY
  25500. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00228.unk" origfile="pics/actor" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25501. ></FA.FIGURE.ANCHOR
  25502. ></LABEL
  25503. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25504. >Subject<RBW-IDXTERM TERM1="subject" TERM2="symbol in CCD"></RBW-IDXTERM
  25505. ><RBW-IDXTERM TERM1="class" TERM2="subject group"></RBW-IDXTERM
  25506. ></L.LABEL
  25507. ><B.BODY>A subject is a group of classes that belong to the same CAD. So, a subject in a CCD represents a CAD. It can also represent a whole separate system. For large projects, it is useful to define all the subjects as separate systems.</B.BODY
  25508. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00229.unk" origfile="pics/subject" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25509. ></FA.FIGURE.ANCHOR
  25510. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25511. >New system</SL.SUBLABEL
  25512. ><B.BODY><RBW-IDXTERM TERM1="system" TERM2="creating from CCD"></RBW-IDXTERM
  25513. >When you open a subject with scope phase, you can create a new system. If you choose to do so, a new empty CCD is also created in the new system. The name of the new system is the name of the opened subject.</B.BODY
  25514. ></LABEL
  25515. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25516. >Communication message<RBW-IDXTERM TERM1="communication message" TERM2="symbol in CCD"></RBW-IDXTERM
  25517. ><RBW-IDXTERM TERM1="message" TERM2="symbol in CCD"></RBW-IDXTERM
  25518. ></L.LABEL
  25519. ><B.BODY>A communication message is a connector between classes, subjects and actors. It calls the operations that the classes contain, but does not represent the actions themselves. It tells a class to do what it was designed to do.</B.BODY
  25520. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00230.unk" origfile="pics/commmsg" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25521. ></FA.FIGURE.ANCHOR
  25522. ></LABEL
  25523. ></SUBSECTION
  25524. ></SECTION
  25525. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="20188"></RBW-ANCHOR
  25526. >Data Flow Diagram<RBW-IDXTERM TERM1="Data Flow Diagram"></RBW-IDXTERM
  25527. ></S.SECTION.HEAD
  25528. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25529. >Introduction</L.LABEL
  25530. ><B.BODY>The Data Flow Diagram (DFD) is an OMT diagram that is added to ObjectTeam when you activate the omtdgms module, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  25531. ><CX5FX5FTITLE></CX5FX5FTITLE
  25532. >.</B.BODY
  25533. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  25534. ></RBW-AUTOGEN
  25535. >Information specified in the DFD will be lost during future ObjectTeam upgrades.</W.WARNING
  25536. ></LABEL
  25537. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25538. >Purpose</L.LABEL
  25539. ><B.BODY>In OMT, you use DFDs to model what happens with data. You model the system as a network of processes that transform and exchange data. </B.BODY
  25540. ><B.BODY>The DFDs show the flow of data values from their sources in objects through the processes that transform them to their destination in other objects. Values can include input values, output values, and internal data stores. Control information is only shown in the form of control flows. </B.BODY
  25541. ><B.BODY>The following table lists the important elements of DFDs:</B.BODY
  25542. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol</CELLHEADING
  25543. ></ENTRY
  25544. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Stands For</CELLHEADING
  25545. ></ENTRY
  25546. ></RBW-ROW
  25547. ></THEAD
  25548. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data process</CELLBODY
  25549. ></ENTRY
  25550. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data processing</CELLBODY
  25551. ></ENTRY
  25552. ></RBW-ROW
  25553. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data flow</CELLBODY
  25554. ></ENTRY
  25555. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data flow or the exchange of data between processes</CELLBODY
  25556. ></ENTRY
  25557. ></RBW-ROW
  25558. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data store</CELLBODY
  25559. ></ENTRY
  25560. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data storage</CELLBODY
  25561. ></ENTRY
  25562. ></RBW-ROW
  25563. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Actor</CELLBODY
  25564. ></ENTRY
  25565. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object producing and consuming data</CELLBODY
  25566. ></ENTRY
  25567. ></RBW-ROW
  25568. ></TBODY
  25569. ></TGROUP
  25570. ></RBW-TABLE
  25571. ></LABEL
  25572. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25573. >Guidelines</L.LABEL
  25574. ><B.BODY>You can follow certain guidelines to draw meaningful DFDs.</B.BODY
  25575. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25576. ></RBW-AUTOGEN
  25577. ></RBW-MARKER
  25578. ><RBW-PARABODY>Optional input flows do not exist. A process can perform its function only if all its input flows are always available. </RBW-PARABODY
  25579. ></LB.LIST.BULLET
  25580. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25581. ></RBW-AUTOGEN
  25582. ></RBW-MARKER
  25583. ><RBW-PARABODY>You cannot assign the same data to two output flows from the same process. If a process produces more than one data flow, these flows are mutually exclusive. </RBW-PARABODY
  25584. ></LB.LIST.BULLET
  25585. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25586. ></RBW-AUTOGEN
  25587. ></RBW-MARKER
  25588. ><RBW-PARABODY>You can split a flow, and you can merge two flows into one. </RBW-PARABODY
  25589. ></LB.LIST.BULLET
  25590. ></LABEL
  25591. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25592. >Decomposition</L.LABEL
  25593. ><B.BODY><RBW-IDXTERM TERM1="Data Flow Diagram" TERM2="decomposition"></RBW-IDXTERM
  25594. >To specify what a high&truehy;level process does, it down into smaller units in more DFDs. A high&truehy;level process is an entire DFD. Each high&truehy;level process is decomposed into other processes with data flows and data stores. Each decomposition is a DFD in itself. You can continue to break down processes until you reach a level on which further decomposition seems impossible or meaningless. </B.BODY
  25595. ><B.BODY>The data flows of the opened process are connected in the new diagram to the process related to the opened process. Vertices, and the flows and objects connected to them, are transferred with the flows that are connected to the decomposed process.</B.BODY
  25596. ></LABEL
  25597. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25598. >Example DFD</L.LABEL
  25599. ><BI.BODY.INTRO>The following illustration shows a sample DFD:</BI.BODY.INTRO
  25600. ><B.BODY><RBW-GRAPHIC filename="00231.tif" origseq="13" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25601. ></B.BODY
  25602. ><FA.FIGURE.ANCHOR></FA.FIGURE.ANCHOR
  25603. ></LABEL
  25604. ><SUBSECTION><SS.SUBSEC.HEAD>Symbols<RBW-IDXTERM TERM1="Data Flow Diagram" TERM2="symbols in"></RBW-IDXTERM
  25605. ><RBW-IDXTERM TERM1="symbols" TERM2="in DFD"></RBW-IDXTERM
  25606. ></SS.SUBSEC.HEAD
  25607. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25608. >Introduction</L.LABEL
  25609. ><B.BODY>This section describes the symbols used in the DFD. The following illustration shows the symbols as they appear in the diagram control panel:</B.BODY
  25610. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00232.tif" origseq="131" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25611. ></FA.FIGURE.ANCHOR
  25612. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  25613. ></RBW-AUTOGEN
  25614. >The Vertex, Select, Note and, Note connector symbols are common to all diagrams. They are described in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  25615. >.</N.NOTE
  25616. ></LABEL
  25617. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25618. >Data process<RBW-IDXTERM TERM1="data process" TERM2="symbol in DFD"></RBW-IDXTERM
  25619. ><RBW-IDXTERM TERM1="process" TERM2="symbol in DFD"></RBW-IDXTERM
  25620. ></L.LABEL
  25621. ><B.BODY>A data process transforms data values. </B.BODY
  25622. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00233.unk" origfile="pics/dtaproc" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25623. ></FA.FIGURE.ANCHOR
  25624. ><B.BODY>You can make a distinction between the following types of processes:</B.BODY
  25625. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Process Type</CELLHEADING
  25626. ></ENTRY
  25627. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  25628. ></ENTRY
  25629. ></RBW-ROW
  25630. ></THEAD
  25631. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>High&truehy;level</CELLBODY
  25632. ></ENTRY
  25633. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process containing nonfunctional components such as data stores or external objects that cause side effects</CELLBODY
  25634. ></ENTRY
  25635. ></RBW-ROW
  25636. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Low&truehy;level</CELLBODY
  25637. ></ENTRY
  25638. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pure function without side effects such as the sum of two numbers</CELLBODY
  25639. ></ENTRY
  25640. ></RBW-ROW
  25641. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Leaf or atomic processes</CELLBODY
  25642. ></ENTRY
  25643. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Process that is not further decomposed </CELLBODY
  25644. ></ENTRY
  25645. ></RBW-ROW
  25646. ></TBODY
  25647. ></TGROUP
  25648. ></RBW-TABLE
  25649. ><B.BODY>The name of a process is usually a description of the transformation it performs.</B.BODY
  25650. ><B.BODY>There are three sorts of transformation:</B.BODY
  25651. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25652. ></RBW-AUTOGEN
  25653. ></RBW-MARKER
  25654. ><RBW-PARABODY>Transformation of the structure, e.g. reformatting</RBW-PARABODY
  25655. ></LB.LIST.BULLET
  25656. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25657. ></RBW-AUTOGEN
  25658. ></RBW-MARKER
  25659. ><RBW-PARABODY>Transformation of information contained in data</RBW-PARABODY
  25660. ></LB.LIST.BULLET
  25661. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25662. ></RBW-AUTOGEN
  25663. ></RBW-MARKER
  25664. ><RBW-PARABODY>Generation of new information </RBW-PARABODY
  25665. ></LB.LIST.BULLET
  25666. ><B.BODY>If you open a process, you can either create a new DFD or open an existing DFD in which the process is specified.</B.BODY
  25667. ><B.BODY>The data flows of the opened process are connected in the new diagram to the process with the name of the opened process. Vertices, and the flows and objects connected to them, are transferred with the flows that are connected to the decomposed process.</B.BODY
  25668. ><B.BODY>If a data process has a decomposition at a lower level, an asterisk is placed inside the ellipse. The data process can be opened only if it has a name.</B.BODY
  25669. ></LABEL
  25670. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25671. >Data store<RBW-IDXTERM TERM1="data store" TERM2="symbol in DFD"></RBW-IDXTERM
  25672. ></L.LABEL
  25673. ><B.BODY>A data store stores data passively for later access. A data store responds to requests to store and access data. It does not generate any operations on its own. A data store allows values to be accessed in an order different from the order in which they were generated. </B.BODY
  25674. ><B.BODY>Input flows indicate information or operations that modify the stored data such as adding or deleting elements or changing values. Output flows indicate information retrieved from the store; this information can be an entire value or a component of a value.</B.BODY
  25675. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00234.tif" origseq="75" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25676. ></FA.FIGURE.ANCHOR
  25677. ></LABEL
  25678. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25679. >Actor<RBW-IDXTERM TERM1="actor" TERM2="symbol in DFD"></RBW-IDXTERM
  25680. ></L.LABEL
  25681. ><B.BODY>An actor produces and consumes data, driving the DFD. Actors lie on the boundary of the diagram; they terminate the flow of data as sources and sinks of data. They are also known as terminators. Data flows between an actor and a diagram are inputs to and outputs of the diagram. The system interacts with people through the actor.</B.BODY
  25682. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00235.unk" origfile="pics/dfdactor" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25683. ></FA.FIGURE.ANCHOR
  25684. ></LABEL
  25685. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25686. >Anchor<RBW-IDXTERM TERM1="anchor" TERM2="symbol in DFD"></RBW-IDXTERM
  25687. ></L.LABEL
  25688. ><B.BODY>A DFD anchor provides a start or end point. In decomposition diagrams, anchors represent the nodes connected to the decomposed process in the higher level diagram.</B.BODY
  25689. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00236.unk" origfile="pics/dfdanchr" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25690. ></FA.FIGURE.ANCHOR
  25691. ></LABEL
  25692. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25693. >Data flow<RBW-IDXTERM TERM1="data flow" TERM2="symbol in DFD"></RBW-IDXTERM
  25694. ></L.LABEL
  25695. ><B.BODY>A data flow moves data between processes or between processes and data stores. As such, it represents a data value at some point within a computation and an intermediate value within a computation if the flow is internal to the diagram. This value is not changed. </B.BODY
  25696. ><B.BODY>The names of input and output flows can indicate their roles in the computation or the type of the value they move. Data names are preferably nouns. The name of a typical piece of data, the data aspect, is written alongside the arrow.</B.BODY
  25697. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00237.tif" origseq="78" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25698. ></FA2.FIGURE.ANCHOR.2
  25699. ><B.BODY>See also <RBW-XREF REFID="20192" TYPE="XREF-TEXTCOPY">Flow names and inheritance</RBW-XREF
  25700. > below.</B.BODY
  25701. ></LABEL
  25702. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25703. >Result flow<RBW-IDXTERM TERM1="result flow" TERM2="symbol in DFD"></RBW-IDXTERM
  25704. ></L.LABEL
  25705. ><B.BODY>A result flow is a data flow that generates an object used as the target of another operation. The value of the flow is subsequently treated as an object, usually a data store.</B.BODY
  25706. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00238.tif" origseq="79" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25707. ></FA2.FIGURE.ANCHOR.2
  25708. ><B.BODY>See also <RBW-XREF REFID="20192" TYPE="XREF-TEXTCOPY">Flow names and inheritance</RBW-XREF
  25709. > below.</B.BODY
  25710. ></LABEL
  25711. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25712. >Control flow<RBW-IDXTERM TERM1="control flow" TERM2="symbol in DFD"></RBW-IDXTERM
  25713. ></L.LABEL
  25714. ><B.BODY>A control flow is a signal that carries out a command or indicates that something has occurred. A control flow occurs at a discrete point in time. The arrow indicates the direction of the control flow. The name of the event is written beside the arrow.</B.BODY
  25715. ><B.BODY>Control flows can correspond to messages in CCDs or events in STDs; however, because they duplicate information in the DFD, use them sparingly.</B.BODY
  25716. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00239.tif" origseq="80" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25717. ></FA2.FIGURE.ANCHOR.2
  25718. ><B.BODY>See also <RBW-XREF REFID="20192" TYPE="XREF-TEXTCOPY">Flow names and inheritance</RBW-XREF
  25719. > below.</B.BODY
  25720. ></LABEL
  25721. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25722. >Update flow<RBW-IDXTERM TERM1="update flow" TERM2="symbol in DFD"></RBW-IDXTERM
  25723. ></L.LABEL
  25724. ><B.BODY>Update (or bidirectional) flows are used to indicate an update of a data store, that is, a read, change, and store operation on a data flow.</B.BODY
  25725. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00240.tif" origseq="81" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25726. ></FA2.FIGURE.ANCHOR.2
  25727. ><B.BODY>See also <RBW-XREF REFID="20192" TYPE="XREF-TEXTCOPY">Flow names and inheritance</RBW-XREF
  25728. > below.</B.BODY
  25729. ></LABEL
  25730. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25731. ><RBW-ANCHOR ID="20192"></RBW-ANCHOR
  25732. >Flow names and inheritance</L.LABEL
  25733. ><B.BODY><RBW-IDXTERM TERM1="flow" TERM2="symbol in DFD"></RBW-IDXTERM
  25734. >Flows in DFDs must be named. However, flows can inherit the names of the objects they are connected to. The table below shows the rules for inheritance of names. These rules are applied in the order shown, until nothing more can be inherited. In some situations, the flow’s inherited name causes an error when a Check command is carried out. The result of the inheritance is confusing in the diagram.</B.BODY
  25735. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="130p"><COLSPEC COLNAME="3" COLWIDTH="189p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Original Situation</CELLHEADING
  25736. ></ENTRY
  25737. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Situation After Inheritance</CELLHEADING
  25738. ></ENTRY
  25739. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Explanation</CELLHEADING
  25740. ></ENTRY
  25741. ></RBW-ROW
  25742. ></THEAD
  25743. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00241.tif" origseq="82" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25744. ></CG.CELLBODY.GRAPHIC
  25745. ></ENTRY
  25746. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00242.tif" origseq="86" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25747. ></CG.CELLBODY.GRAPHIC
  25748. ></ENTRY
  25749. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diverging flows without names inherit the name of an incoming flow with a name. If the incoming flow has several names, each diverging flow inherits all of them.</CELLBODY
  25750. ></ENTRY
  25751. ></RBW-ROW
  25752. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00243.tif" origseq="92" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25753. ></CG.CELLBODY.GRAPHIC
  25754. ></ENTRY
  25755. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00244.tif" origseq="96" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25756. ></CG.CELLBODY.GRAPHIC
  25757. ></ENTRY
  25758. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Converging flows without names inherit the name of an outgoing flow with a name. If the outgoing flow has several names, each converging flow inherits all of them.</CELLBODY
  25759. ></ENTRY
  25760. ></RBW-ROW
  25761. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00245.tif" origseq="102" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25762. ></CG.CELLBODY.GRAPHIC
  25763. ></ENTRY
  25764. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00246.tif" origseq="104" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25765. ></CG.CELLBODY.GRAPHIC
  25766. ></ENTRY
  25767. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Flows connected to a data store, control store, message queue, message box, event queue, or event flag inherit the name of that node.</CELLBODY
  25768. ></ENTRY
  25769. ></RBW-ROW
  25770. ></TBODY
  25771. ></TGROUP
  25772. ></RBW-TABLE
  25773. ><B.BODY><RBW-IDXTERM TERM1="composite flow, in DFD"></RBW-IDXTERM
  25774. ><RBW-IDXTERM TERM1="diverging flow, in DFD"></RBW-IDXTERM
  25775. ><RBW-IDXTERM TERM1="converging flow, in DFD"></RBW-IDXTERM
  25776. ><RBW-IDXTERM TERM1="split flow, in DFD"></RBW-IDXTERM
  25777. ><RBW-IDXTERM TERM1="merging flow, in DFD"></RBW-IDXTERM
  25778. >A forked (converging or diverging) data flow is either a split or merging data flow, or a composite data flow. A composite data flow has one name for each branch. A composite flow can split into the original flows again. A split or a merging data flow has only one name.</B.BODY
  25779. ><B.BODY>The name of the flow is taken as type name if no data type is specified.</B.BODY
  25780. ></LABEL
  25781. ></SUBSECTION
  25782. ></SECTION
  25783. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="41861"></RBW-ANCHOR
  25784. >Message Generalization Diagram</S.SECTION.HEAD
  25785. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25786. >Introduction</L.LABEL
  25787. ><B.BODY>The Message Generalization Diagram (MGD) is an OMT diagram that is added to ObjectTeam when you activate the omtdgms module, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  25788. ><CX5FX5FTITLE></CX5FX5FTITLE
  25789. >.</B.BODY
  25790. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  25791. ></RBW-AUTOGEN
  25792. >Information specified in the MGD will be lost during future ObjectTeam upgrades.</W.WARNING
  25793. ></LABEL
  25794. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25795. >Purpose</L.LABEL
  25796. ><B.BODY><RBW-IDXTERM TERM1="hierarchy" TERM2="of messages"></RBW-IDXTERM
  25797. ><RBW-IDXTERM TERM1="Message Generalization Diagram"></RBW-IDXTERM
  25798. >A communication message in a CCD or a communication association in a UCD can represent more than one message. You use the MGD to define the messages that make up the communication message or communication association. The MGD focuses on a hierarchical breakdown of a complex message in the CCD or UCD.</B.BODY
  25799. ></LABEL
  25800. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25801. >Example MGD</L.LABEL
  25802. ><B.BODY><RBW-IDXTERM TERM1="communication message" TERM2="decomposition in MGD"></RBW-IDXTERM
  25803. >A message that represents a number of messages is a <CX5FX5FTERM>generalized message</CX5FX5FTERM
  25804. >. In the MGD, the generalized message appears at the top of the hierarchy. Messages at the bottom of the hierarchy represent the specific messages. </B.BODY
  25805. ><B.BODY>In the following figure the set of messages that are generated as a result of choosing an option on a form are grouped into the general message RentalFormCommands. The hierarchy in this example has two levels; you can create hierarchies with as many levels as necessary.</B.BODY
  25806. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00247.tif" origseq="58" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25807. ></FAR.FIGURE.ANCHOR.RIGHT
  25808. ></LABEL
  25809. ><SUBSECTION><SS.SUBSEC.HEAD>Symbols<RBW-IDXTERM TERM1="Message Generalization Diagram" TERM2="symbols in"></RBW-IDXTERM
  25810. ><RBW-IDXTERM TERM1="symbols" TERM2="in MGD"></RBW-IDXTERM
  25811. ></SS.SUBSEC.HEAD
  25812. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25813. >Introduction</L.LABEL
  25814. ><B.BODY>This section describes the symbols used in the MGD. The following illustration shows the symbols as they appear in the diagram Control Panel:</B.BODY
  25815. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00248.tif" origseq="176" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25816. ></FA.FIGURE.ANCHOR
  25817. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  25818. ></RBW-AUTOGEN
  25819. >The Vertex, Select, Note and, Note connector symbols are common to all diagrams. They are described in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  25820. >.</N.NOTE
  25821. ></LABEL
  25822. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25823. >Message definition<RBW-IDXTERM TERM1="message" TERM2="symbol in MGD"></RBW-IDXTERM
  25824. ></L.LABEL
  25825. ><B.BODY>A Message Definition describes a message or part of a composite message.</B.BODY
  25826. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00249.unk" origfile="pics/msdef" origtype="X" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25827. ></FA.FIGURE.ANCHOR
  25828. ><B.BODY>Each message definition can be a combination of other messages. Such messages are indicated by more message definition symbols and the message generalization connector that joins them to the top message definition. </B.BODY
  25829. ><B.BODY>You can define the message definition in a separate MGD by using File | Open.</B.BODY
  25830. ></LABEL
  25831. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25832. >Message generalization connector<RBW-IDXTERM TERM1="message generalization connector" TERM2="symbol in MGD"></RBW-IDXTERM
  25833. ></L.LABEL
  25834. ><B.BODY>A Message Generalization Connector establishes the relationship that messages and parts of messages have with each other. The message definition, drawn on top, acts as top message. Its constituent messages or parts of the message are placed underneath.</B.BODY
  25835. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00250.tif" origseq="61" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  25836. ></FA.FIGURE.ANCHOR
  25837. ></LABEL
  25838. ></SUBSECTION
  25839. ></SECTION
  25840. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12305"></RBW-ANCHOR
  25841. >Sequence Diagram</S.SECTION.HEAD
  25842. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25843. >Introduction</L.LABEL
  25844. ><B.BODY>The Sequence Diagram supports both UML and OMT notation. The diagram and its symbols are same under both notations.</B.BODY
  25845. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  25846. ></RBW-AUTOGEN
  25847. >In OMT, the Sequence Diagram (SD) is called an Event Trace Diagram (ETD). In ObjectTeam, the name Sequence Diagram (SD) is used for both UML and OMT.</N.NOTE
  25848. ></LABEL
  25849. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25850. >For more information</L.LABEL
  25851. ><B.BODY>For more information about this diagram, see <RBW-XREF REFID="14788" TYPE="XREF-TEXTCOPY">Sequence Diagram (Event Trace Diagram)</RBW-XREF
  25852. >.</B.BODY
  25853. ></LABEL
  25854. ></SECTION
  25855. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34271"></RBW-ANCHOR
  25856. >State Transition Diagram</S.SECTION.HEAD
  25857. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25858. >Introduction</L.LABEL
  25859. ><B.BODY>If you switch to OMT notation using Options | Diagram, the notation for the following State Transition Diagram element changes:</B.BODY
  25860. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  25861. ></RBW-AUTOGEN
  25862. ></RBW-MARKER
  25863. ><RBW-PARABODY>Activity</RBW-PARABODY
  25864. ></LB.LIST.BULLET
  25865. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  25866. ></RBW-AUTOGEN
  25867. >Send events, state attributes, concurrent states, history states, and complex transitions are not used in OMT. These UML symbols remain available in the State Transition Diagram even when you choose OMT notation.</N.NOTE
  25868. ></LABEL
  25869. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25870. >OMT notation</L.LABEL
  25871. ><B.BODY>The following figure shows the State Transition Diagram with OMT notation selected:</B.BODY
  25872. ><FAR.FIGURE.ANCHOR.RIGHT></FAR.FIGURE.ANCHOR.RIGHT
  25873. ></LABEL
  25874. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25875. >UML notation</L.LABEL
  25876. ><B.BODY>For comparison, the following figure shows the same StateTransition Diagram with UML notation selected:</B.BODY
  25877. ><FAR.FIGURE.ANCHOR.RIGHT></FAR.FIGURE.ANCHOR.RIGHT
  25878. ></LABEL
  25879. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25880. >For more information</L.LABEL
  25881. ><B.BODY>For more information about this diagram, see <RBW-XREF REFID="41704" TYPE="XREF-TEXTCOPY">State Diagram on page 4–29</RBW-XREF
  25882. >.</B.BODY
  25883. ></LABEL
  25884. ></SECTION
  25885. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17920"></RBW-ANCHOR
  25886. >Use Case Diagram</S.SECTION.HEAD
  25887. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25888. >Introduction</L.LABEL
  25889. ><B.BODY>The Use Case Diagram supports both UML and OMT notation. The diagram and its symbols are same under both notations.</B.BODY
  25890. ></LABEL
  25891. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25892. >For more information</L.LABEL
  25893. ><B.BODY>For more information about this diagram, see <RBW-XREF REFID="35633" TYPE="XREF-TEXTCOPY">Use Case Diagram on page 4–36</RBW-XREF
  25894. >.</B.BODY
  25895. ></LABEL
  25896. ></SECTION
  25897. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25261"></RBW-ANCHOR
  25898. >Navigation Between Diagrams</S.SECTION.HEAD
  25899. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25900. >Introduction</L.LABEL
  25901. ><B.BODY>The following table shows the OMT navigation options that appear by default. You can customize these options, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  25902. ><CX5FX5FTITLE></CX5FX5FTITLE
  25903. >.</B.BODY
  25904. ></LABEL
  25905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25906. >Navigation options</L.LABEL
  25907. ><B.BODY>Each navigation option creates and opens a new diagram or opens an existing diagram.</B.BODY
  25908. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="139p"><COLSPEC COLNAME="2" COLWIDTH="303p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>option</CELLHEADING
  25909. ></ENTRY
  25910. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operation</CELLHEADING
  25911. ></ENTRY
  25912. ></RBW-ROW
  25913. ></THEAD
  25914. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition</CELLBODY
  25915. ></ENTRY
  25916. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create a diagram of the same type; the current diagram is closed.</CELLBODY
  25917. ></ENTRY
  25918. ></RBW-ROW
  25919. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram</CELLBODY
  25920. ></ENTRY
  25921. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create a diagram of a different type.</CELLBODY
  25922. ></ENTRY
  25923. ></RBW-ROW
  25924. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create system</CELLBODY
  25925. ><CELLBODY>(CCD subject only)</CELLBODY
  25926. ></ENTRY
  25927. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create a system and a CCD in that system.</CELLBODY
  25928. ></ENTRY
  25929. ></RBW-ROW
  25930. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Load diagram</CELLBODY
  25931. ></ENTRY
  25932. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Open a diagram of the same type; the current diagram is closed.</CELLBODY
  25933. ></ENTRY
  25934. ></RBW-ROW
  25935. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Start editor</CELLBODY
  25936. ></ENTRY
  25937. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Open a diagram of a different type.</CELLBODY
  25938. ></ENTRY
  25939. ></RBW-ROW
  25940. ></TBODY
  25941. ></TGROUP
  25942. ></RBW-TABLE
  25943. ></LABEL
  25944. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  25945. ><RBW-ANCHOR ID="39004"></RBW-ANCHOR
  25946. >Navigation paths</L.LABEL
  25947. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  25948. ></RBW-AUTOGEN
  25949. >The CD, COD, SD, STD, and UCD are described in Chapter 4, Exploring Each Diagram. The CCD, DFD, MGD and the navigation options to and from these diagrams are described in Appendix A, OMT Support.</N.NOTE
  25950. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  25951. ></RBW-AUTOGEN
  25952. >Unless mentioned otherwise, all new diagrams are created within the system from which the navigation process started.</N.NOTE
  25953. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="106p"><COLSPEC COLNAME="2" COLWIDTH="69p"><COLSPEC COLNAME="3" COLWIDTH="169p"><COLSPEC COLNAME="4" COLWIDTH="75p"><COLSPEC COLNAME="5" COLWIDTH="207p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram Object</CELLHEADING
  25954. ></ENTRY
  25955. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Select Item</CELLHEADING
  25956. ></ENTRY
  25957. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Select Operation</CELLHEADING
  25958. ></ENTRY
  25959. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Of Diagram</CELLHEADING
  25960. ></ENTRY
  25961. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING> Diagram Name</CELLHEADING
  25962. ></ENTRY
  25963. ></RBW-ROW
  25964. ></THEAD
  25965. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CD Class</CELLBODY
  25966. ></ENTRY
  25967. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Name</CELLBODY
  25968. ></ENTRY
  25969. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  25970. ><CELLBODY>Load diagram</CELLBODY
  25971. ></ENTRY
  25972. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  25973. ></ENTRY
  25974. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name</CELLBODY
  25975. ><CELLBODY>class_name</CELLBODY
  25976. ></ENTRY
  25977. ></RBW-ROW
  25978. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25979. ></ENTRY
  25980. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25981. ></ENTRY
  25982. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and</CELLBODY
  25983. ><CELLBODY>Start editor</CELLBODY
  25984. ></ENTRY
  25985. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cod</CELLBODY
  25986. ></ENTRY
  25987. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name (assign cod_name)</CELLBODY
  25988. ><CELLBODY>class_name : cod_name</CELLBODY
  25989. ></ENTRY
  25990. ></RBW-ROW
  25991. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25992. ></ENTRY
  25993. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  25994. ></ENTRY
  25995. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and</CELLBODY
  25996. ><CELLBODY>Start editor</CELLBODY
  25997. ></ENTRY
  25998. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd (sd)</CELLBODY
  25999. ></ENTRY
  26000. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name (assign sd_name)</CELLBODY
  26001. ><CELLBODY>class_name : sd_name</CELLBODY
  26002. ></ENTRY
  26003. ></RBW-ROW
  26004. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26005. ></ENTRY
  26006. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26007. ></ENTRY
  26008. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  26009. ><CELLBODY>Start editor</CELLBODY
  26010. ></ENTRY
  26011. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>std</CELLBODY
  26012. ></ENTRY
  26013. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name : top</CELLBODY
  26014. ><CELLBODY>class_name : top</CELLBODY
  26015. ></ENTRY
  26016. ></RBW-ROW
  26017. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>(CD Attribute) </CELLBODY
  26018. ></ENTRY
  26019. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Type</CELLBODY
  26020. ></ENTRY
  26021. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>Same as CD Class</CX5FX5FEMPHASIS
  26022. ></CELLBODY
  26023. ></ENTRY
  26024. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26025. ></ENTRY
  26026. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>replace class_name with attributeType_name</CX5FX5FEMPHASIS
  26027. ></CELLBODY
  26028. ></ENTRY
  26029. ></RBW-ROW
  26030. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>(CD Operation)</CELLBODY
  26031. ></ENTRY
  26032. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Return Type</CELLBODY
  26033. ></ENTRY
  26034. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>Same as CD Class</CX5FX5FEMPHASIS
  26035. ></CELLBODY
  26036. ></ENTRY
  26037. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26038. ></ENTRY
  26039. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>replace class_name with returnType_name</CX5FX5FEMPHASIS
  26040. ></CELLBODY
  26041. ></ENTRY
  26042. ></RBW-ROW
  26043. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CCD Actor</CELLBODY
  26044. ></ENTRY
  26045. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26046. ></ENTRY
  26047. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  26048. ><CELLBODY>Load diagram</CELLBODY
  26049. ></ENTRY
  26050. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd</CELLBODY
  26051. ></ENTRY
  26052. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccdActor_name</CELLBODY
  26053. ><CELLBODY>ccdActor_name</CELLBODY
  26054. ></ENTRY
  26055. ></RBW-ROW
  26056. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26057. ></ENTRY
  26058. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26059. ></ENTRY
  26060. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  26061. ><CELLBODY>Start editor</CELLBODY
  26062. ></ENTRY
  26063. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  26064. ></ENTRY
  26065. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccdActor_name</CELLBODY
  26066. ><CELLBODY>ccdActor_name</CELLBODY
  26067. ></ENTRY
  26068. ></RBW-ROW
  26069. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CCD Class,</CELLBODY
  26070. ><CELLBODY>Class Reference,</CELLBODY
  26071. ><CELLBODY>Container Class</CELLBODY
  26072. ></ENTRY
  26073. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26074. ></ENTRY
  26075. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or </CELLBODY
  26076. ><CELLBODY>Start Editor</CELLBODY
  26077. ></ENTRY
  26078. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd</CELLBODY
  26079. ></ENTRY
  26080. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccdClass_name</CELLBODY
  26081. ><CELLBODY>ccdClass_name</CELLBODY
  26082. ></ENTRY
  26083. ></RBW-ROW
  26084. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26085. ></ENTRY
  26086. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26087. ></ENTRY
  26088. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or </CELLBODY
  26089. ><CELLBODY>Start Editor</CELLBODY
  26090. ></ENTRY
  26091. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  26092. ></ENTRY
  26093. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccdClass_name</CELLBODY
  26094. ><CELLBODY>ccdClass_name</CELLBODY
  26095. ></ENTRY
  26096. ></RBW-ROW
  26097. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26098. ></ENTRY
  26099. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26100. ></ENTRY
  26101. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and </CELLBODY
  26102. ><CELLBODY>Start Editor</CELLBODY
  26103. ></ENTRY
  26104. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>sd</CELLBODY
  26105. ></ENTRY
  26106. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccdClass_name (assign sd_name)</CELLBODY
  26107. ><CELLBODY>ccdClass_name : sd_name</CELLBODY
  26108. ></ENTRY
  26109. ></RBW-ROW
  26110. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26111. ></ENTRY
  26112. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26113. ></ENTRY
  26114. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or </CELLBODY
  26115. ><CELLBODY>Start Editor</CELLBODY
  26116. ></ENTRY
  26117. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>std</CELLBODY
  26118. ></ENTRY
  26119. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccdClass_name : top</CELLBODY
  26120. ><CELLBODY>ccdClass_name : top</CELLBODY
  26121. ></ENTRY
  26122. ></RBW-ROW
  26123. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CCD Subject</CELLBODY
  26124. ></ENTRY
  26125. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26126. ></ENTRY
  26127. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  26128. ><CELLBODY></CELLBODY
  26129. ><CELLBODY></CELLBODY
  26130. ><CELLBODY>Start editor</CELLBODY
  26131. ></ENTRY
  26132. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  26133. ></ENTRY
  26134. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>subject_name <CX5FX5FEMPHASIS>in current system if no system has been created</CX5FX5FEMPHASIS
  26135. ></CELLBODY
  26136. ><CELLBODY>subject_name <CX5FX5FEMPHASIS>in system subject_name if system has been created</CX5FX5FEMPHASIS
  26137. > </CELLBODY
  26138. ><CELLBODY>(See also Create System below)</CELLBODY
  26139. ></ENTRY
  26140. ></RBW-ROW
  26141. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26142. ></ENTRY
  26143. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26144. ></ENTRY
  26145. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and</CELLBODY
  26146. ><CELLBODY></CELLBODY
  26147. ><CELLBODY></CELLBODY
  26148. ><CELLBODY>Start editor</CELLBODY
  26149. ></ENTRY
  26150. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd (sd)</CELLBODY
  26151. ></ENTRY
  26152. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>subject_name (assign sd_name) <CX5FX5FEMPHASIS>in current system if no system has been created</CX5FX5FEMPHASIS
  26153. ></CELLBODY
  26154. ><CELLBODY>subject_name: sd_name <CX5FX5FEMPHASIS>in system subject_name if system has been created </CX5FX5FEMPHASIS
  26155. ></CELLBODY
  26156. ><CELLBODY>(See also Create System below)</CELLBODY
  26157. ></ENTRY
  26158. ></RBW-ROW
  26159. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26160. ></ENTRY
  26161. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26162. ></ENTRY
  26163. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>if no cd or sd was created:</CX5FX5FEMPHASIS
  26164. ></CELLBODY
  26165. ><CELLBODY>Create System or</CELLBODY
  26166. ><CELLBODY>Start Editor</CELLBODY
  26167. ><CELLBODY></CELLBODY
  26168. ><CELLBODY><CX5FX5FEMPHASIS>if cd or sd was created:</CX5FX5FEMPHASIS
  26169. ></CELLBODY
  26170. ><CELLBODY>Make decomposition or</CELLBODY
  26171. ><CELLBODY>Load Diagram</CELLBODY
  26172. ></ENTRY
  26173. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd</CELLBODY
  26174. ></ENTRY
  26175. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>system subject_name and diagram subject_name</CELLBODY
  26176. ><CELLBODY>diagram subject_name in system subject_name</CELLBODY
  26177. ><CELLBODY>diagram subject_name in current system</CELLBODY
  26178. ><CELLBODY>diagram subject_name in current system</CELLBODY
  26179. ></ENTRY
  26180. ></RBW-ROW
  26181. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CCD Message</CELLBODY
  26182. ></ENTRY
  26183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26184. ></ENTRY
  26185. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  26186. ><CELLBODY>Start editor</CELLBODY
  26187. ></ENTRY
  26188. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>mgd</CELLBODY
  26189. ></ENTRY
  26190. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccdMessage_name</CELLBODY
  26191. ><CELLBODY>ccdMessage_name </CELLBODY
  26192. ></ENTRY
  26193. ></RBW-ROW
  26194. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>COD Instance</CELLBODY
  26195. ></ENTRY
  26196. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Instance Type</CELLBODY
  26197. ></ENTRY
  26198. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create CD diagram or</CELLBODY
  26199. ><CELLBODY>Start CD editor</CELLBODY
  26200. ></ENTRY
  26201. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  26202. ></ENTRY
  26203. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>instanceType_name</CELLBODY
  26204. ><CELLBODY>instanceType_name</CELLBODY
  26205. ></ENTRY
  26206. ></RBW-ROW
  26207. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DFD Actor</CELLBODY
  26208. ></ENTRY
  26209. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26210. ></ENTRY
  26211. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or </CELLBODY
  26212. ><CELLBODY>Start Editor</CELLBODY
  26213. ></ENTRY
  26214. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  26215. ></ENTRY
  26216. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>dfdActor_name</CELLBODY
  26217. ><CELLBODY>dfdActor_name</CELLBODY
  26218. ></ENTRY
  26219. ></RBW-ROW
  26220. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DFD Data process</CELLBODY
  26221. ></ENTRY
  26222. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26223. ></ENTRY
  26224. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  26225. ><CELLBODY>Load diagram</CELLBODY
  26226. ></ENTRY
  26227. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>dfd</CELLBODY
  26228. ></ENTRY
  26229. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>dataprocess_name</CELLBODY
  26230. ><CELLBODY>dataprocess_name</CELLBODY
  26231. ></ENTRY
  26232. ></RBW-ROW
  26233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DFD Data Store,</CELLBODY
  26234. ><CELLBODY>Data Flow, </CELLBODY
  26235. ><CELLBODY>Update Flow</CELLBODY
  26236. ></ENTRY
  26237. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26238. ></ENTRY
  26239. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or </CELLBODY
  26240. ><CELLBODY>Start Editor</CELLBODY
  26241. ></ENTRY
  26242. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  26243. ></ENTRY
  26244. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>store/flow_name</CELLBODY
  26245. ><CELLBODY>store/flow_name</CELLBODY
  26246. ></ENTRY
  26247. ></RBW-ROW
  26248. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>MGD Message</CELLBODY
  26249. ></ENTRY
  26250. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26251. ></ENTRY
  26252. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  26253. ><CELLBODY>Load diagram</CELLBODY
  26254. ></ENTRY
  26255. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>mgd</CELLBODY
  26256. ><CELLBODY></CELLBODY
  26257. ></ENTRY
  26258. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>mgdMessage_name</CELLBODY
  26259. ><CELLBODY>mgdMessage_name</CELLBODY
  26260. ></ENTRY
  26261. ></RBW-ROW
  26262. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD Message</CELLBODY
  26263. ><CELLBODY>(Nested, Flat, Asynchronous, Return Message</CELLBODY
  26264. ></ENTRY
  26265. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26266. ></ENTRY
  26267. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and</CELLBODY
  26268. ><CELLBODY>Start editor</CELLBODY
  26269. ></ENTRY
  26270. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>mgd</CELLBODY
  26271. ></ENTRY
  26272. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>sdMessage_name (assign sd_name)</CELLBODY
  26273. ><CELLBODY>sdMessage : sd_name</CELLBODY
  26274. ></ENTRY
  26275. ></RBW-ROW
  26276. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD Object]</CELLBODY
  26277. ></ENTRY
  26278. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object Type</CELLBODY
  26279. ></ENTRY
  26280. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  26281. ><CELLBODY>Load diagram</CELLBODY
  26282. ></ENTRY
  26283. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd (sd)</CELLBODY
  26284. ></ENTRY
  26285. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>objectType_name (assign sd_name)</CELLBODY
  26286. ><CELLBODY>objectType_name : sd_name</CELLBODY
  26287. ></ENTRY
  26288. ></RBW-ROW
  26289. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26290. ></ENTRY
  26291. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26292. ></ENTRY
  26293. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  26294. ><CELLBODY>Start editor</CELLBODY
  26295. ></ENTRY
  26296. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad (cd)</CELLBODY
  26297. ></ENTRY
  26298. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>objectType_name</CELLBODY
  26299. ><CELLBODY>objectType_name</CELLBODY
  26300. ></ENTRY
  26301. ></RBW-ROW
  26302. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26303. ></ENTRY
  26304. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26305. ></ENTRY
  26306. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  26307. ><CELLBODY>Start editor</CELLBODY
  26308. ></ENTRY
  26309. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd</CELLBODY
  26310. ></ENTRY
  26311. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>bjectType_name</CELLBODY
  26312. ><CELLBODY>objectType_name</CELLBODY
  26313. ></ENTRY
  26314. ></RBW-ROW
  26315. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26316. ></ENTRY
  26317. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26318. ></ENTRY
  26319. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram or</CELLBODY
  26320. ><CELLBODY>Start editor</CELLBODY
  26321. ></ENTRY
  26322. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>std</CELLBODY
  26323. ></ENTRY
  26324. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>objectType_name : top</CELLBODY
  26325. ><CELLBODY>objectType_name : top</CELLBODY
  26326. ></ENTRY
  26327. ></RBW-ROW
  26328. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD State With Internal Actions</CELLBODY
  26329. ></ENTRY
  26330. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event / Action</CELLBODY
  26331. ></ENTRY
  26332. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  26333. ><CELLBODY>Load diagram</CELLBODY
  26334. ></ENTRY
  26335. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>std</CELLBODY
  26336. ></ENTRY
  26337. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>std_name : action_name</CELLBODY
  26338. ><CELLBODY>std_name : action_name</CELLBODY
  26339. ></ENTRY
  26340. ></RBW-ROW
  26341. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UCD Use Case</CELLBODY
  26342. ></ENTRY
  26343. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26344. ></ENTRY
  26345. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make decomposition or</CELLBODY
  26346. ><CELLBODY>Load diagram</CELLBODY
  26347. ></ENTRY
  26348. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>ucd</CELLBODY
  26349. ></ENTRY
  26350. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>useCase_name</CELLBODY
  26351. ><CELLBODY>useCase_name</CELLBODY
  26352. ></ENTRY
  26353. ></RBW-ROW
  26354. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26355. ></ENTRY
  26356. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26357. ></ENTRY
  26358. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and</CELLBODY
  26359. ><CELLBODY>Start editor</CELLBODY
  26360. ></ENTRY
  26361. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cod</CELLBODY
  26362. ></ENTRY
  26363. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>useCase_name (assign cod_name)</CELLBODY
  26364. ><CELLBODY>useCase_name: cod_name</CELLBODY
  26365. ></ENTRY
  26366. ></RBW-ROW
  26367. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26368. ></ENTRY
  26369. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26370. ></ENTRY
  26371. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create diagram and</CELLBODY
  26372. ><CELLBODY>Start editor</CELLBODY
  26373. ></ENTRY
  26374. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd (sd)</CELLBODY
  26375. ></ENTRY
  26376. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>useCase_name (assign sd_name)</CELLBODY
  26377. ><CELLBODY>useCase_name : sd_name</CELLBODY
  26378. ></ENTRY
  26379. ></RBW-ROW
  26380. ></TBODY
  26381. ></TGROUP
  26382. ><RBW-ICONIZE></RBW-TABLE
  26383. ><B.BODY>Explanation of the columns:</B.BODY
  26384. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26385. ></RBW-AUTOGEN
  26386. ></RBW-MARKER
  26387. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Diagram Object</CX5FX5FBULLET.EMPHASIS
  26388. >: the object that you select in a diagram to navigate from with File | Open.</RBW-PARABODY
  26389. ></LB.LIST.BULLET
  26390. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26391. ></RBW-AUTOGEN
  26392. ></RBW-MARKER
  26393. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Select Item</CX5FX5FBULLET.EMPHASIS
  26394. >: the item that you select in the Select Item dialog box.</RBW-PARABODY
  26395. ></LB.LIST.BULLET
  26396. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26397. ></RBW-AUTOGEN
  26398. ></RBW-MARKER
  26399. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Select Operation</CX5FX5FBULLET.EMPHASIS
  26400. >: the operations that appear in the Select Operation dialog box. </RBW-PARABODY
  26401. ></LB.LIST.BULLET
  26402. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26403. ></RBW-AUTOGEN
  26404. ></RBW-MARKER
  26405. ><RBW-PARABODY><CX5FX5FFILE.NAME>Of type:</CX5FX5FFILE.NAME
  26406. > the type of the diagram to be created/opened.</RBW-PARABODY
  26407. ></LB.LIST.BULLET
  26408. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26409. ></RBW-AUTOGEN
  26410. ></RBW-MARKER
  26411. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Diagram Name</CX5FX5FBULLET.EMPHASIS
  26412. >: See <RBW-XREF REFID="34996" TYPE="XREF-TEXTCOPY">Diagram Name</RBW-XREF
  26413. >.</RBW-PARABODY
  26414. ></LB.LIST.BULLET
  26415. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26416. ></RBW-AUTOGEN
  26417. ></RBW-MARKER
  26418. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>System</CX5FX5FBULLET.EMPHASIS
  26419. >: (not mentioned in the table but displayed in the Select Operation dialog box). See <RBW-XREF REFID="30952" TYPE="XREF-TEXTCOPY">Systems you can navigate to</RBW-XREF
  26420. >.</RBW-PARABODY
  26421. ></LB.LIST.BULLET
  26422. ></LABEL
  26423. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  26424. ><RBW-ANCHOR ID="34996"></RBW-ANCHOR
  26425. >Diagram Name </L.LABEL
  26426. ><B.BODY>The diagram names are generated from the component name from which the navigation was started. </B.BODY
  26427. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  26428. ></RBW-MARKER
  26429. ><RBW-PARABODY>When you create a CD, CCD, DFD, MGD or UCD, the name of the component is assigned to the diagram name. </RBW-PARABODY
  26430. ></LB2.LIST.BULLET.2
  26431. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  26432. ></RBW-MARKER
  26433. ><RBW-PARABODY>When you create a COD, or SD, the name of the component is assigned to the qualifier, and a dialog box appears in which you can assign the diagram name.</RBW-PARABODY
  26434. ></LB2.LIST.BULLET.2
  26435. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  26436. ></RBW-MARKER
  26437. ><RBW-PARABODY>When you create an STD, the name of the component is assigned to the qualifier. If the navigation process was started from a CD or SD, the STD diagram name is given the name top</RBW-PARABODY
  26438. ></LB2.LIST.BULLET.2
  26439. ><B.BODY>The names of the new diagrams (and systems) are generated from the component name. These names remain linked to the original component. If you change the name of the component in the original diagram, ObjectTeam changes the name of the generated diagram (or system).</B.BODY
  26440. ></LABEL
  26441. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  26442. ><RBW-ANCHOR ID="30952"></RBW-ANCHOR
  26443. >Systems you can navigate to</L.LABEL
  26444. ><B.BODY>The System column in the Select Operation dialog box displays the name of the system in which the create or open action will take place. </B.BODY
  26445. ><B.BODY>If the item you are navigating from is already defined in that system, an asterisk is placed in front of the system name.</B.BODY
  26446. ><B.BODY>When selecting an open or create operation, you can determine in which system the operation will be carried out by checking the value of the system field:</B.BODY
  26447. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="82p"><COLSPEC COLNAME="2" COLWIDTH="112p"><COLSPEC COLNAME="3" COLWIDTH="252p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Asterisk</CELLHEADING
  26448. ></ENTRY
  26449. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>System </CELLHEADING
  26450. ></ENTRY
  26451. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Situation</CELLHEADING
  26452. ></ENTRY
  26453. ></RBW-ROW
  26454. ></THEAD
  26455. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes</CELLBODY
  26456. ></ENTRY
  26457. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>current system_name</CELLBODY
  26458. ></ENTRY
  26459. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The item is defined in the current system. The operation will be carried out in this system.</CELLBODY
  26460. ></ENTRY
  26461. ></RBW-ROW
  26462. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes</CELLBODY
  26463. ></ENTRY
  26464. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>other system_name</CELLBODY
  26465. ></ENTRY
  26466. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The item is defined in another system. The operation will be carried out in the other system.</CELLBODY
  26467. ></ENTRY
  26468. ></RBW-ROW
  26469. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>no</CELLBODY
  26470. ></ENTRY
  26471. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>current system_name</CELLBODY
  26472. ></ENTRY
  26473. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Either of the following:</CELLBODY
  26474. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26475. ></RBW-AUTOGEN
  26476. ></RBW-MARKER
  26477. ><RBW-PARABODY>The item is not defined anywhere. For example, you have created a class without a CDM or properties. </RBW-PARABODY
  26478. ></CELLBULLET
  26479. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26480. ></RBW-AUTOGEN
  26481. ></RBW-MARKER
  26482. ><RBW-PARABODY>The class is defined in another system and referenced in this system. </RBW-PARABODY
  26483. ></CELLBULLET
  26484. ><CELLBODY>In both cases, the operation will be carried out in this system.</CELLBODY
  26485. ></ENTRY
  26486. ></RBW-ROW
  26487. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>no</CELLBODY
  26488. ></ENTRY
  26489. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>other system_name</CELLBODY
  26490. ></ENTRY
  26491. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The item is defined in the current system but is referenced in another system. The operation will be carried out in the other system.</CELLBODY
  26492. ></ENTRY
  26493. ></RBW-ROW
  26494. ></TBODY
  26495. ></TGROUP
  26496. ></RBW-TABLE
  26497. ><B.BODY></B.BODY
  26498. ></LABEL
  26499. ></SECTION
  26500. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="31869"></RBW-ANCHOR
  26501. >Summary of Notation</S.SECTION.HEAD
  26502. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  26503. >In this section</L.LABEL
  26504. ><B.BODY>This section contains the following topics:</B.BODY
  26505. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  26506. ></ENTRY
  26507. ></RBW-ROW
  26508. ></THEAD
  26509. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37510" TYPE="XREF-TEXTCOPY">Class Diagram, Basic Concepts&rbwtab;A–28</RBW-XREF
  26510. ></SB.SECTION.BLOCK.TABLE
  26511. ></ENTRY
  26512. ></RBW-ROW
  26513. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12968" TYPE="XREF-TEXTCOPY">Class Diagram, Advanced Concepts&rbwtab;A–29</RBW-XREF
  26514. ></SB.SECTION.BLOCK.TABLE
  26515. ></ENTRY
  26516. ></RBW-ROW
  26517. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22155" TYPE="XREF-TEXTCOPY">Class Diagram, ObjectTeam Extensions&rbwtab;A–30</RBW-XREF
  26518. ></SB.SECTION.BLOCK.TABLE
  26519. ></ENTRY
  26520. ></RBW-ROW
  26521. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33055" TYPE="XREF-TEXTCOPY">Class Communication Diagram&rbwtab;A–31</RBW-XREF
  26522. ></SB.SECTION.BLOCK.TABLE
  26523. ></ENTRY
  26524. ></RBW-ROW
  26525. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29425" TYPE="XREF-TEXTCOPY">Data Flow Diagram&rbwtab;A–32</RBW-XREF
  26526. ></SB.SECTION.BLOCK.TABLE
  26527. ></ENTRY
  26528. ></RBW-ROW
  26529. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23409" TYPE="XREF-TEXTCOPY">Message Generalization Diagram&rbwtab;A–33</RBW-XREF
  26530. ></SB.SECTION.BLOCK.TABLE
  26531. ></ENTRY
  26532. ></RBW-ROW
  26533. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14788" TYPE="XREF-TEXTCOPY">Sequence Diagram (Event Trace Diagram)&rbwtab;A–34</RBW-XREF
  26534. ></SB.SECTION.BLOCK.TABLE
  26535. ></ENTRY
  26536. ></RBW-ROW
  26537. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33340" TYPE="XREF-TEXTCOPY">State Diagram&rbwtab;A–35</RBW-XREF
  26538. ></SB.SECTION.BLOCK.TABLE
  26539. ></ENTRY
  26540. ></RBW-ROW
  26541. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34161" TYPE="XREF-TEXTCOPY">Use Case Diagram&rbwtab;A–36</RBW-XREF
  26542. ></SB.SECTION.BLOCK.TABLE
  26543. ></ENTRY
  26544. ></RBW-ROW
  26545. ></TBODY
  26546. ></TGROUP
  26547. ></RBW-TABLE
  26548. ></LABEL
  26549. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37510"></RBW-ANCHOR
  26550. >Class Diagram, Basic Concepts<RBW-IDXTERM TERM1="Object Model" TERM2="notation"></RBW-IDXTERM
  26551. ></SS.SUBSEC.HEAD
  26552. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00251.tif" origseq="199" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26553. ></FAR.FIGURE.ANCHOR.RIGHT
  26554. ></SUBSECTION
  26555. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12968"></RBW-ANCHOR
  26556. >Class Diagram, Advanced Concepts<RBW-IDXTERM TERM1="Object Model" TERM2="notation"></RBW-IDXTERM
  26557. ></SS.SUBSEC.HEAD
  26558. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00252.tif" origseq="201" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26559. ></FAR.FIGURE.ANCHOR.RIGHT
  26560. ></SUBSECTION
  26561. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22155"></RBW-ANCHOR
  26562. >Class Diagram, ObjectTeam Extensions<RBW-IDXTERM TERM1="Object Model" TERM2="notation"></RBW-IDXTERM
  26563. ></SS.SUBSEC.HEAD
  26564. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00253.tif" origseq="213" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26565. ></FAR.FIGURE.ANCHOR.RIGHT
  26566. ></SUBSECTION
  26567. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33055"></RBW-ANCHOR
  26568. >Class Communication Diagram<RBW-IDXTERM TERM1="Class Communication Model" TERM2="notation"></RBW-IDXTERM
  26569. ></SS.SUBSEC.HEAD
  26570. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00254.tif" origseq="42" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26571. ></FAR.FIGURE.ANCHOR.RIGHT
  26572. ></SUBSECTION
  26573. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29425"></RBW-ANCHOR
  26574. >Data Flow Diagram<RBW-IDXTERM TERM1="Functional Model" TERM2="notation"></RBW-IDXTERM
  26575. ></SS.SUBSEC.HEAD
  26576. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00255.tif" origseq="107" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26577. ></FAR.FIGURE.ANCHOR.RIGHT
  26578. ></SUBSECTION
  26579. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23409"></RBW-ANCHOR
  26580. >Message Generalization Diagram<RBW-IDXTERM TERM1="Class Communication Model" TERM2="notation"></RBW-IDXTERM
  26581. ></SS.SUBSEC.HEAD
  26582. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00256.tif" origseq="3" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26583. ></FA.FIGURE.ANCHOR
  26584. ></SUBSECTION
  26585. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14788"></RBW-ANCHOR
  26586. >Sequence Diagram<RBW-IDXTERM TERM1="Dynamic Model" TERM2="notation"></RBW-IDXTERM
  26587. > (Event Trace Diagram)</SS.SUBSEC.HEAD
  26588. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00257.tif" origseq="7" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26589. ></FA.FIGURE.ANCHOR
  26590. ></SUBSECTION
  26591. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33340"></RBW-ANCHOR
  26592. >State Diagram<RBW-IDXTERM TERM1="Dynamic Model" TERM2="notation"></RBW-IDXTERM
  26593. ></SS.SUBSEC.HEAD
  26594. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00258.tif" origseq="63" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26595. ></FAR.FIGURE.ANCHOR.RIGHT
  26596. ></SUBSECTION
  26597. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34161"></RBW-ANCHOR
  26598. >Use Case Diagram</SS.SUBSEC.HEAD
  26599. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00259.tif" origseq="115" origtype="I" origdoc="../../sources/mg/dgmsomt.fm5.mif"></RBW-GRAPHIC
  26600. ></FA.FIGURE.ANCHOR
  26601. ><B.BODY></B.BODY
  26602. ><RBWAUTO-0001></RBWAUTO-0001
  26603. ><!--
  26604.  
  26605.  
  26606.  
  26607.  
  26608.  
  26609. CONVERTING SOURCE FILE ../../sources/mg/items.fm5.mif
  26610.  
  26611.  
  26612. --><B.BODY></B.BODY
  26613. ><B.BODY></B.BODY
  26614. ><B.BODY></B.BODY
  26615. ><B.BODY></B.BODY
  26616. ><B.BODY></B.BODY
  26617. ></SUBSECTION
  26618. ></SECTION
  26619. ></APPENDIX
  26620. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix B&rbwtab;</CX5FX5FZCHAPTER.NUM
  26621. ></RBW-AUTOGEN
  26622. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  26623. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  26624. ></RBW-SYSOBJ
  26625. ><RBW-IDXTERM TERM1="item" TERM2="details of"></RBW-IDXTERM
  26626. ><RBW-IDXTERM TERM1="diagram component" TERM2="details of"></RBW-IDXTERM
  26627. ><RBW-IDXTERM TERM1="scope of item" TERM2="valid values"></RBW-IDXTERM
  26628. ><RBW-IDXTERM TERM1="item" TERM2="types of, detailed"></RBW-IDXTERM
  26629. ><RBW-ANCHOR ID="14387"></RBW-ANCHOR
  26630. >Type and Scope of Diagram Components</A.APPENDIX.HEAD
  26631. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  26632. >Introduction</L.LABEL
  26633. ><B.BODY>The following tables list all diagram components. The columns are as follows:</B.BODY
  26634. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26635. ></RBW-AUTOGEN
  26636. ></RBW-MARKER
  26637. ><RBW-PARABODY>Symbol Type groups the different kinds of symbols (nodes, connectors, and so on).</RBW-PARABODY
  26638. ></LB.LIST.BULLET
  26639. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26640. ></RBW-AUTOGEN
  26641. ></RBW-MARKER
  26642. ><RBW-PARABODY>Component Name identifies the internal name of the component (class, association, actor, and so on).</RBW-PARABODY
  26643. ></LB.LIST.BULLET
  26644. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26645. ></RBW-AUTOGEN
  26646. ></RBW-MARKER
  26647. ><RBW-PARABODY>Label identifies the internal name of the label associated with a component. Most labels have a name; many also have additional labels as well.</RBW-PARABODY
  26648. ></LB.LIST.BULLET
  26649. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26650. ></RBW-AUTOGEN
  26651. ></RBW-MARKER
  26652. ><RBW-PARABODY>Item Type identifies the type of the item associated with the symbol or label. If no item type is listed, the element is not an item in the repository.</RBW-PARABODY
  26653. ></LB.LIST.BULLET
  26654. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  26655. ></RBW-AUTOGEN
  26656. ></RBW-MARKER
  26657. ><RBW-PARABODY>Item Scope lists all valid scopes for the item associated with the symbol or label; the initial scope is indicated in bold. A scope Q indicates that the item is a qualified item; its scope is always the same as its owner item.</RBW-PARABODY
  26658. ></LB.LIST.BULLET
  26659. ></LABEL
  26660. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  26661. >Class Diagram (CD)</L.LABEL
  26662. ><B.BODY>File type cad; item type cl </B.BODY
  26663. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  26664. ></RBW-AUTOGEN
  26665. >This table does not list type and scope information for class attributes and methods. See the CDM table for this information.</N.NOTE
  26666. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="108p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  26667. ></ENTRY
  26668. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  26669. ></ENTRY
  26670. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  26671. ></ENTRY
  26672. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  26673. ></ENTRY
  26674. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  26675. ></ENTRY
  26676. ></RBW-ROW
  26677. ></THEAD
  26678. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  26679. ></ENTRY
  26680. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad_class</CELLBODY
  26681. ></ENTRY
  26682. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26683. ><CELLBODY>attributes</CELLBODY
  26684. ><CELLBODY>methods</CELLBODY
  26685. ></ENTRY
  26686. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  26687. ><CELLBODY>&truehy;</CELLBODY
  26688. ><CELLBODY>&truehy;</CELLBODY
  26689. ></ENTRY
  26690. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  26691. >, S</CELLBODY
  26692. ><CELLBODY>&truehy;</CELLBODY
  26693. ><CELLBODY>&truehy;</CELLBODY
  26694. ></ENTRY
  26695. ></RBW-ROW
  26696. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26697. ></ENTRY
  26698. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad_container</CELLBODY
  26699. ></ENTRY
  26700. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26701. ><CELLBODY>attributes</CELLBODY
  26702. ><CELLBODY>methods</CELLBODY
  26703. ></ENTRY
  26704. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  26705. ><CELLBODY>&truehy;</CELLBODY
  26706. ><CELLBODY>&truehy;</CELLBODY
  26707. ></ENTRY
  26708. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  26709. >, S</CELLBODY
  26710. ><CELLBODY>&truehy;</CELLBODY
  26711. ><CELLBODY>&truehy;</CELLBODY
  26712. ></ENTRY
  26713. ></RBW-ROW
  26714. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26715. ></ENTRY
  26716. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>nary&truehy;assoc</CELLBODY
  26717. ></ENTRY
  26718. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26719. ></ENTRY
  26720. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  26721. ></ENTRY
  26722. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FBULLET.EMPHASIS>S</CX5FX5FBULLET.EMPHASIS
  26723. > </CELLBODY
  26724. ></ENTRY
  26725. ></RBW-ROW
  26726. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26727. ></ENTRY
  26728. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>link_attr_box</CELLBODY
  26729. ></ENTRY
  26730. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>attributes</CELLBODY
  26731. ></ENTRY
  26732. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26733. ></ENTRY
  26734. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26735. ></ENTRY
  26736. ></RBW-ROW
  26737. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26738. ></ENTRY
  26739. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>more_classes</CELLBODY
  26740. ></ENTRY
  26741. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26742. ></ENTRY
  26743. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26744. ></ENTRY
  26745. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26746. ></ENTRY
  26747. ></RBW-ROW
  26748. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26749. ></ENTRY
  26750. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generalization</CELLBODY
  26751. ></ENTRY
  26752. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26753. ></ENTRY
  26754. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  26755. ></ENTRY
  26756. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  26757. > </CELLBODY
  26758. ></ENTRY
  26759. ></RBW-ROW
  26760. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26761. ></ENTRY
  26762. ><ENTRY COLNAME="2" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>overlap_gen</CELLBODY
  26763. ></ENTRY
  26764. ><ENTRY COLNAME="3" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26765. ></ENTRY
  26766. ><ENTRY COLNAME="4" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  26767. ></ENTRY
  26768. ><ENTRY COLNAME="5" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  26769. > </CELLBODY
  26770. ></ENTRY
  26771. ></RBW-ROW
  26772. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26773. ></ENTRY
  26774. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note</CELLBODY
  26775. ></ENTRY
  26776. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_text</CELLBODY
  26777. ></ENTRY
  26778. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26779. ></ENTRY
  26780. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26781. ></ENTRY
  26782. ></RBW-ROW
  26783. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  26784. ></ENTRY
  26785. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>association</CELLBODY
  26786. ></ENTRY
  26787. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26788. ><CELLBODY>role_start</CELLBODY
  26789. ><CELLBODY>constraint_start</CELLBODY
  26790. ><CELLBODY>role_end</CELLBODY
  26791. ><CELLBODY>constraint_end</CELLBODY
  26792. ></ENTRY
  26793. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  26794. ><CELLBODY>de</CELLBODY
  26795. ><CELLBODY>&truehy;</CELLBODY
  26796. ><CELLBODY>de</CELLBODY
  26797. ><CELLBODY>&truehy;</CELLBODY
  26798. ></ENTRY
  26799. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FBULLET.EMPHASIS>S</CX5FX5FBULLET.EMPHASIS
  26800. > </CELLBODY
  26801. ><CELLBODY>Q</CELLBODY
  26802. ><CELLBODY>&truehy;</CELLBODY
  26803. ><CELLBODY>Q</CELLBODY
  26804. ><CELLBODY>&truehy;</CELLBODY
  26805. ></ENTRY
  26806. ></RBW-ROW
  26807. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26808. ></ENTRY
  26809. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>aggregation</CELLBODY
  26810. ></ENTRY
  26811. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26812. ><CELLBODY>role_start</CELLBODY
  26813. ><CELLBODY>constraint_start</CELLBODY
  26814. ><CELLBODY>role_end</CELLBODY
  26815. ><CELLBODY>constraint_end</CELLBODY
  26816. ></ENTRY
  26817. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  26818. ><CELLBODY>de</CELLBODY
  26819. ><CELLBODY>&truehy;</CELLBODY
  26820. ><CELLBODY>de</CELLBODY
  26821. ><CELLBODY>&truehy;</CELLBODY
  26822. ></ENTRY
  26823. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FBULLET.EMPHASIS>S</CX5FX5FBULLET.EMPHASIS
  26824. > </CELLBODY
  26825. ><CELLBODY>Q </CELLBODY
  26826. ><CELLBODY>&truehy;</CELLBODY
  26827. ><CELLBODY>Q</CELLBODY
  26828. ><CELLBODY>&truehy;</CELLBODY
  26829. ></ENTRY
  26830. ></RBW-ROW
  26831. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26832. ></ENTRY
  26833. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualif_assoc</CELLBODY
  26834. ></ENTRY
  26835. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26836. ><CELLBODY>role_start</CELLBODY
  26837. ><CELLBODY>constraint_start</CELLBODY
  26838. ><CELLBODY>role_end</CELLBODY
  26839. ><CELLBODY>constraint_end</CELLBODY
  26840. ><CELLBODY>qualifier</CELLBODY
  26841. ></ENTRY
  26842. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  26843. ><CELLBODY>de</CELLBODY
  26844. ><CELLBODY>&truehy;</CELLBODY
  26845. ><CELLBODY>de</CELLBODY
  26846. ><CELLBODY>&truehy;</CELLBODY
  26847. ><CELLBODY>de</CELLBODY
  26848. ></ENTRY
  26849. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FBULLET.EMPHASIS>S</CX5FX5FBULLET.EMPHASIS
  26850. > </CELLBODY
  26851. ><CELLBODY>Q</CELLBODY
  26852. ><CELLBODY>&truehy;</CELLBODY
  26853. ><CELLBODY>Q</CELLBODY
  26854. ><CELLBODY>&truehy;</CELLBODY
  26855. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  26856. > </CELLBODY
  26857. ></ENTRY
  26858. ></RBW-ROW
  26859. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26860. ></ENTRY
  26861. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualif_aggr</CELLBODY
  26862. ></ENTRY
  26863. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26864. ><CELLBODY>role_start</CELLBODY
  26865. ><CELLBODY>constraint_start</CELLBODY
  26866. ><CELLBODY>role_end</CELLBODY
  26867. ><CELLBODY>constraint_end</CELLBODY
  26868. ><CELLBODY>qualifier</CELLBODY
  26869. ></ENTRY
  26870. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  26871. ><CELLBODY>de</CELLBODY
  26872. ><CELLBODY>&truehy;</CELLBODY
  26873. ><CELLBODY>de</CELLBODY
  26874. ><CELLBODY>&truehy;</CELLBODY
  26875. ><CELLBODY>de</CELLBODY
  26876. ></ENTRY
  26877. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FBULLET.EMPHASIS>S</CX5FX5FBULLET.EMPHASIS
  26878. > </CELLBODY
  26879. ><CELLBODY>Q</CELLBODY
  26880. ><CELLBODY>&truehy;</CELLBODY
  26881. ><CELLBODY>Q</CELLBODY
  26882. ><CELLBODY>&truehy;</CELLBODY
  26883. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  26884. > </CELLBODY
  26885. ></ENTRY
  26886. ></RBW-ROW
  26887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26888. ></ENTRY
  26889. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>nary_assoc_conn </CELLBODY
  26890. ></ENTRY
  26891. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>role</CELLBODY
  26892. ><CELLBODY>constraint</CELLBODY
  26893. ></ENTRY
  26894. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  26895. ><CELLBODY>&truehy;</CELLBODY
  26896. ></ENTRY
  26897. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  26898. ><CELLBODY>&truehy;</CELLBODY
  26899. ></ENTRY
  26900. ></RBW-ROW
  26901. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26902. ></ENTRY
  26903. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generalization_conn</CELLBODY
  26904. ></ENTRY
  26905. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26906. ></ENTRY
  26907. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26908. ></ENTRY
  26909. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26910. ></ENTRY
  26911. ></RBW-ROW
  26912. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26913. ></ENTRY
  26914. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>overlap_gen_conn</CELLBODY
  26915. ></ENTRY
  26916. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26917. ></ENTRY
  26918. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26919. ></ENTRY
  26920. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26921. ></ENTRY
  26922. ></RBW-ROW
  26923. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26924. ></ENTRY
  26925. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>loop</CELLBODY
  26926. ></ENTRY
  26927. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26928. ></ENTRY
  26929. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26930. ></ENTRY
  26931. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26932. ></ENTRY
  26933. ></RBW-ROW
  26934. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26935. ></ENTRY
  26936. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>constraint</CELLBODY
  26937. ></ENTRY
  26938. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>constraint</CELLBODY
  26939. ></ENTRY
  26940. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26941. ></ENTRY
  26942. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26943. ></ENTRY
  26944. ></RBW-ROW
  26945. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26946. ></ENTRY
  26947. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_conn</CELLBODY
  26948. ></ENTRY
  26949. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26950. ></ENTRY
  26951. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26952. ></ENTRY
  26953. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  26954. ></ENTRY
  26955. ></RBW-ROW
  26956. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connected</CELLBODY
  26957. ><CELLBODY>Nodes</CELLBODY
  26958. ></ENTRY
  26959. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>propagation</CELLBODY
  26960. ></ENTRY
  26961. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  26962. ></ENTRY
  26963. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  26964. ></ENTRY
  26965. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  26966. > </CELLBODY
  26967. ></ENTRY
  26968. ></RBW-ROW
  26969. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  26970. ></ENTRY
  26971. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>link_attrib</CELLBODY
  26972. ></ENTRY
  26973. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name_type</CELLBODY
  26974. ><CELLBODY></CELLBODY
  26975. ></ENTRY
  26976. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  26977. ><CELLBODY>cl</CELLBODY
  26978. ></ENTRY
  26979. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  26980. ><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  26981. >, S</CELLBODY
  26982. ></ENTRY
  26983. ></RBW-ROW
  26984. ></TBODY
  26985. ></TGROUP
  26986. ></RBW-TABLE
  26987. ></LABEL
  26988. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  26989. >Class Communication Diagram (CCD)</L.LABEL
  26990. ><B.BODY>File type ccd; item type cl</B.BODY
  26991. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="99p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  26992. ></ENTRY
  26993. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  26994. ></ENTRY
  26995. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  26996. ></ENTRY
  26997. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  26998. ></ENTRY
  26999. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  27000. ></ENTRY
  27001. ></RBW-ROW
  27002. ></THEAD
  27003. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  27004. ></ENTRY
  27005. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd_class</CELLBODY
  27006. ></ENTRY
  27007. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27008. ></ENTRY
  27009. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27010. ></ENTRY
  27011. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27012. >, S</CELLBODY
  27013. ></ENTRY
  27014. ></RBW-ROW
  27015. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27016. ></ENTRY
  27017. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd_class_ref</CELLBODY
  27018. ></ENTRY
  27019. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27020. ></ENTRY
  27021. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27022. ></ENTRY
  27023. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27024. >, S</CELLBODY
  27025. ></ENTRY
  27026. ></RBW-ROW
  27027. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27028. ></ENTRY
  27029. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd_container</CELLBODY
  27030. ></ENTRY
  27031. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27032. ></ENTRY
  27033. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27034. ></ENTRY
  27035. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27036. >, S</CELLBODY
  27037. ></ENTRY
  27038. ></RBW-ROW
  27039. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27040. ></ENTRY
  27041. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>subject</CELLBODY
  27042. ></ENTRY
  27043. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27044. ></ENTRY
  27045. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27046. ></ENTRY
  27047. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27048. >, S</CELLBODY
  27049. ></ENTRY
  27050. ></RBW-ROW
  27051. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27052. ></ENTRY
  27053. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd_actor</CELLBODY
  27054. ></ENTRY
  27055. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27056. ></ENTRY
  27057. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27058. ></ENTRY
  27059. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27060. >, S</CELLBODY
  27061. ></ENTRY
  27062. ></RBW-ROW
  27063. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27064. ></ENTRY
  27065. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note</CELLBODY
  27066. ></ENTRY
  27067. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_text</CELLBODY
  27068. ></ENTRY
  27069. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27070. ></ENTRY
  27071. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>&truehy;</CX5FX5FPROCEDURE.NAME
  27072. ></CELLBODY
  27073. ></ENTRY
  27074. ></RBW-ROW
  27075. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  27076. ></ENTRY
  27077. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>com_message</CELLBODY
  27078. ></ENTRY
  27079. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27080. ></ENTRY
  27081. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27082. ></ENTRY
  27083. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27084. ></CELLBODY
  27085. ></ENTRY
  27086. ></RBW-ROW
  27087. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27088. ></ENTRY
  27089. ><ENTRY COLNAME="2" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_conn</CELLBODY
  27090. ></ENTRY
  27091. ><ENTRY COLNAME="3" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27092. ></ENTRY
  27093. ><ENTRY COLNAME="4" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27094. ></ENTRY
  27095. ><ENTRY COLNAME="5" ROWSEP="0" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27096. ></ENTRY
  27097. ></RBW-ROW
  27098. ></TBODY
  27099. ></TGROUP
  27100. ></RBW-TABLE
  27101. ></LABEL
  27102. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  27103. >Class Definition Matrix (CDM)</L.LABEL
  27104. ><B.BODY>File type cdm; item type cl</B.BODY
  27105. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="99p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  27106. ></ENTRY
  27107. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  27108. ></ENTRY
  27109. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  27110. ></ENTRY
  27111. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  27112. ></ENTRY
  27113. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  27114. ></ENTRY
  27115. ></RBW-ROW
  27116. ></THEAD
  27117. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Rows</CELLBODY
  27118. ></ENTRY
  27119. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  27120. ></ENTRY
  27121. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name_type</CELLBODY
  27122. ><CELLBODY></CELLBODY
  27123. ></ENTRY
  27124. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27125. ><CELLBODY>cl</CELLBODY
  27126. ></ENTRY
  27127. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q </CELLBODY
  27128. ><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27129. >, S</CELLBODY
  27130. ></ENTRY
  27131. ></RBW-ROW
  27132. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27133. ></ENTRY
  27134. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>method</CELLBODY
  27135. ></ENTRY
  27136. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name_type</CELLBODY
  27137. ><CELLBODY></CELLBODY
  27138. ></ENTRY
  27139. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27140. ><CELLBODY>cl</CELLBODY
  27141. ></ENTRY
  27142. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27143. ><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27144. >, S</CELLBODY
  27145. ></ENTRY
  27146. ></RBW-ROW
  27147. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cells</CELLBODY
  27148. ></ENTRY
  27149. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>parameter</CELLBODY
  27150. ></ENTRY
  27151. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name_type</CELLBODY
  27152. ><CELLBODY></CELLBODY
  27153. ></ENTRY
  27154. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27155. ><CELLBODY>cl</CELLBODY
  27156. ></ENTRY
  27157. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27158. > </CELLBODY
  27159. ><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27160. >, S</CELLBODY
  27161. ></ENTRY
  27162. ></RBW-ROW
  27163. ></TBODY
  27164. ></TGROUP
  27165. ></RBW-TABLE
  27166. ></LABEL
  27167. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  27168. >Collaboration Diagram (COD)</L.LABEL
  27169. ><B.BODY>File type cod; item type cl:ce</B.BODY
  27170. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="99p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  27171. ></ENTRY
  27172. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  27173. ></ENTRY
  27174. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  27175. ></ENTRY
  27176. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  27177. ></ENTRY
  27178. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  27179. ></ENTRY
  27180. ></RBW-ROW
  27181. ></THEAD
  27182. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  27183. ></ENTRY
  27184. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cod_actor</CELLBODY
  27185. ></ENTRY
  27186. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27187. ></ENTRY
  27188. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27189. ></ENTRY
  27190. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>P</CX5FX5FBULLET.EMPHASIS
  27191. >, S</CELLBODY
  27192. ></ENTRY
  27193. ></RBW-ROW
  27194. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27195. ></ENTRY
  27196. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>instance</CELLBODY
  27197. ></ENTRY
  27198. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name_type</CELLBODY
  27199. ><CELLBODY></CELLBODY
  27200. ></ENTRY
  27201. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27202. ><CELLBODY>cl</CELLBODY
  27203. ></ENTRY
  27204. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27205. > </CELLBODY
  27206. ><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27207. >, S</CELLBODY
  27208. ></ENTRY
  27209. ></RBW-ROW
  27210. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27211. ></ENTRY
  27212. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>nary_link</CELLBODY
  27213. ></ENTRY
  27214. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27215. ></ENTRY
  27216. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27217. ></ENTRY
  27218. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P,<CX5FX5FPROCEDURE.NAME> S</CX5FX5FPROCEDURE.NAME
  27219. ></CELLBODY
  27220. ></ENTRY
  27221. ></RBW-ROW
  27222. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27223. ></ENTRY
  27224. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note</CELLBODY
  27225. ></ENTRY
  27226. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_text</CELLBODY
  27227. ></ENTRY
  27228. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27229. ></ENTRY
  27230. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27231. ></ENTRY
  27232. ></RBW-ROW
  27233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  27234. ></ENTRY
  27235. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>link</CELLBODY
  27236. ></ENTRY
  27237. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27238. ><CELLBODY>role_start</CELLBODY
  27239. ><CELLBODY>role_end</CELLBODY
  27240. ></ENTRY
  27241. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27242. ><CELLBODY>de</CELLBODY
  27243. ><CELLBODY>de</CELLBODY
  27244. ></ENTRY
  27245. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27246. ></CELLBODY
  27247. ><CELLBODY>Q</CELLBODY
  27248. ><CELLBODY>Q</CELLBODY
  27249. ></ENTRY
  27250. ></RBW-ROW
  27251. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27252. ></ENTRY
  27253. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>aggr_link</CELLBODY
  27254. ></ENTRY
  27255. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27256. ><CELLBODY>role_start</CELLBODY
  27257. ><CELLBODY>role_end</CELLBODY
  27258. ></ENTRY
  27259. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27260. ><CELLBODY>de</CELLBODY
  27261. ><CELLBODY>de</CELLBODY
  27262. ></ENTRY
  27263. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27264. ></CELLBODY
  27265. ><CELLBODY>Q</CELLBODY
  27266. ><CELLBODY>Q</CELLBODY
  27267. ></ENTRY
  27268. ></RBW-ROW
  27269. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27270. ></ENTRY
  27271. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualif_link</CELLBODY
  27272. ></ENTRY
  27273. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27274. ><CELLBODY>role_start</CELLBODY
  27275. ><CELLBODY>role_end</CELLBODY
  27276. ><CELLBODY>qualifier</CELLBODY
  27277. ></ENTRY
  27278. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27279. ><CELLBODY>de</CELLBODY
  27280. ><CELLBODY>de</CELLBODY
  27281. ><CELLBODY>&truehy;</CELLBODY
  27282. ></ENTRY
  27283. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27284. ></CELLBODY
  27285. ><CELLBODY>Q</CELLBODY
  27286. ><CELLBODY>Q</CELLBODY
  27287. ><CELLBODY>&truehy;</CELLBODY
  27288. ></ENTRY
  27289. ></RBW-ROW
  27290. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27291. ></ENTRY
  27292. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualif_aggr_link</CELLBODY
  27293. ></ENTRY
  27294. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27295. ><CELLBODY>role_start</CELLBODY
  27296. ><CELLBODY>role_end</CELLBODY
  27297. ><CELLBODY>qualifier</CELLBODY
  27298. ></ENTRY
  27299. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27300. ><CELLBODY>de</CELLBODY
  27301. ><CELLBODY>de</CELLBODY
  27302. ><CELLBODY>&truehy;</CELLBODY
  27303. ></ENTRY
  27304. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27305. ></CELLBODY
  27306. ><CELLBODY>Q</CELLBODY
  27307. ><CELLBODY>Q</CELLBODY
  27308. ><CELLBODY>&truehy;</CELLBODY
  27309. ></ENTRY
  27310. ></RBW-ROW
  27311. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27312. ></ENTRY
  27313. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>nary_link_conn</CELLBODY
  27314. ></ENTRY
  27315. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>role</CELLBODY
  27316. ></ENTRY
  27317. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27318. ></ENTRY
  27319. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27320. ></ENTRY
  27321. ></RBW-ROW
  27322. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27323. ></ENTRY
  27324. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_conn</CELLBODY
  27325. ></ENTRY
  27326. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27327. ></ENTRY
  27328. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27329. ></ENTRY
  27330. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27331. ></ENTRY
  27332. ></RBW-ROW
  27333. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connected Nodes</CELLBODY
  27334. ></ENTRY
  27335. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>cod_message</CELLBODY
  27336. ></ENTRY
  27337. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>event</CELLBODY
  27338. ></ENTRY
  27339. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27340. ><CELLBODY>de</CELLBODY
  27341. ></ENTRY
  27342. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27343. ></CELLBODY
  27344. ><CELLBODY>F</CELLBODY
  27345. ></ENTRY
  27346. ></RBW-ROW
  27347. ></TBODY
  27348. ></TGROUP
  27349. ></RBW-TABLE
  27350. ></LABEL
  27351. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  27352. >Data Flow Diagram (DFD)</L.LABEL
  27353. ><B.BODY>File type dfd; item type pe</B.BODY
  27354. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="108p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  27355. ></ENTRY
  27356. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  27357. ></ENTRY
  27358. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  27359. ></ENTRY
  27360. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  27361. ></ENTRY
  27362. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  27363. ></ENTRY
  27364. ></RBW-ROW
  27365. ></THEAD
  27366. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  27367. ></ENTRY
  27368. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>data_proc</CELLBODY
  27369. ></ENTRY
  27370. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27371. ></ENTRY
  27372. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27373. ></ENTRY
  27374. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>P, <CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27375. > </CELLBODY
  27376. ></ENTRY
  27377. ></RBW-ROW
  27378. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27379. ></ENTRY
  27380. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>data_store</CELLBODY
  27381. ></ENTRY
  27382. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27383. ></ENTRY
  27384. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27385. ></ENTRY
  27386. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27387. > </CELLBODY
  27388. ></ENTRY
  27389. ></RBW-ROW
  27390. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27391. ></ENTRY
  27392. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>dfd_actor</CELLBODY
  27393. ></ENTRY
  27394. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27395. ></ENTRY
  27396. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27397. ></ENTRY
  27398. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27399. >, S</CELLBODY
  27400. ></ENTRY
  27401. ></RBW-ROW
  27402. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27403. ></ENTRY
  27404. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>dfd_anchor</CELLBODY
  27405. ></ENTRY
  27406. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27407. ></ENTRY
  27408. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27409. ></ENTRY
  27410. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27411. ></ENTRY
  27412. ></RBW-ROW
  27413. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27414. ></ENTRY
  27415. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note</CELLBODY
  27416. ></ENTRY
  27417. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_text</CELLBODY
  27418. ></ENTRY
  27419. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27420. ></ENTRY
  27421. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27422. ></ENTRY
  27423. ></RBW-ROW
  27424. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27425. ></ENTRY
  27426. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>data_vertex</CELLBODY
  27427. ></ENTRY
  27428. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27429. ></ENTRY
  27430. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27431. ></ENTRY
  27432. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27433. ></ENTRY
  27434. ></RBW-ROW
  27435. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27436. ></ENTRY
  27437. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ctrl_vertex</CELLBODY
  27438. ></ENTRY
  27439. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27440. ></ENTRY
  27441. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27442. ></ENTRY
  27443. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27444. ></ENTRY
  27445. ></RBW-ROW
  27446. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27447. ></ENTRY
  27448. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update_vertex</CELLBODY
  27449. ></ENTRY
  27450. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27451. ></ENTRY
  27452. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27453. ></ENTRY
  27454. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27455. ></ENTRY
  27456. ></RBW-ROW
  27457. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27458. ></ENTRY
  27459. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>result_vertex</CELLBODY
  27460. ></ENTRY
  27461. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27462. ></ENTRY
  27463. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27464. ></ENTRY
  27465. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27466. ></ENTRY
  27467. ></RBW-ROW
  27468. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  27469. ></ENTRY
  27470. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>data_flow</CELLBODY
  27471. ></ENTRY
  27472. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27473. ></ENTRY
  27474. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27475. ></ENTRY
  27476. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27477. > </CELLBODY
  27478. ></ENTRY
  27479. ></RBW-ROW
  27480. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27481. ></ENTRY
  27482. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>update_flow</CELLBODY
  27483. ></ENTRY
  27484. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27485. ></ENTRY
  27486. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27487. ></ENTRY
  27488. ><ENTRY COLNAME="5" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27489. > </CELLBODY
  27490. ></ENTRY
  27491. ></RBW-ROW
  27492. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27493. ></ENTRY
  27494. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>result_flow</CELLBODY
  27495. ></ENTRY
  27496. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27497. ></ENTRY
  27498. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27499. ></ENTRY
  27500. ><ENTRY COLNAME="5" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>&truehy;</CX5FX5FPROCEDURE.NAME
  27501. > </CELLBODY
  27502. ></ENTRY
  27503. ></RBW-ROW
  27504. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27505. ></ENTRY
  27506. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>ctrl_flow</CELLBODY
  27507. ></ENTRY
  27508. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27509. ></ENTRY
  27510. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27511. ></ENTRY
  27512. ><ENTRY COLNAME="5" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27513. > </CELLBODY
  27514. ></ENTRY
  27515. ></RBW-ROW
  27516. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27517. ></ENTRY
  27518. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_conn</CELLBODY
  27519. ></ENTRY
  27520. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27521. ></ENTRY
  27522. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27523. ></ENTRY
  27524. ><ENTRY COLNAME="5" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27525. ></ENTRY
  27526. ></RBW-ROW
  27527. ></TBODY
  27528. ></TGROUP
  27529. ></RBW-TABLE
  27530. ></LABEL
  27531. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  27532. >Message Generalization Diagram (MGD)</L.LABEL
  27533. ><B.BODY>File type mgd; item type pe</B.BODY
  27534. ><B.BODY></B.BODY
  27535. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="108p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  27536. ></ENTRY
  27537. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  27538. ></ENTRY
  27539. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  27540. ></ENTRY
  27541. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  27542. ></ENTRY
  27543. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  27544. ></ENTRY
  27545. ></RBW-ROW
  27546. ></THEAD
  27547. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  27548. ></ENTRY
  27549. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>message_def</CELLBODY
  27550. ></ENTRY
  27551. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27552. ></ENTRY
  27553. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27554. ></ENTRY
  27555. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27556. > </CELLBODY
  27557. ></ENTRY
  27558. ></RBW-ROW
  27559. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27560. ></ENTRY
  27561. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>message_gen</CELLBODY
  27562. ></ENTRY
  27563. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27564. ></ENTRY
  27565. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27566. ></ENTRY
  27567. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27568. ></ENTRY
  27569. ></RBW-ROW
  27570. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27571. ></ENTRY
  27572. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note</CELLBODY
  27573. ></ENTRY
  27574. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_text</CELLBODY
  27575. ></ENTRY
  27576. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27577. ></ENTRY
  27578. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27579. ></ENTRY
  27580. ></RBW-ROW
  27581. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  27582. ></ENTRY
  27583. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>message_gen_conn</CELLBODY
  27584. ></ENTRY
  27585. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27586. ></ENTRY
  27587. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27588. ></ENTRY
  27589. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>&truehy;</CX5FX5FPROCEDURE.NAME
  27590. > </CELLBODY
  27591. ></ENTRY
  27592. ></RBW-ROW
  27593. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27594. ></ENTRY
  27595. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_conn</CELLBODY
  27596. ></ENTRY
  27597. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27598. ></ENTRY
  27599. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27600. ></ENTRY
  27601. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27602. ></ENTRY
  27603. ></RBW-ROW
  27604. ></TBODY
  27605. ></TGROUP
  27606. ></RBW-TABLE
  27607. ></LABEL
  27608. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  27609. >Sequence Diagram (SD)</L.LABEL
  27610. ><B.BODY>File type etd; item type cl:et</B.BODY
  27611. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="126p"><COLSPEC COLNAME="3" COLWIDTH="126p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  27612. ></ENTRY
  27613. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  27614. ></ENTRY
  27615. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  27616. ></ENTRY
  27617. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  27618. ></ENTRY
  27619. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  27620. ></ENTRY
  27621. ></RBW-ROW
  27622. ></THEAD
  27623. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  27624. ></ENTRY
  27625. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd_object </CELLBODY
  27626. ></ENTRY
  27627. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name_type</CELLBODY
  27628. ><CELLBODY></CELLBODY
  27629. ></ENTRY
  27630. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27631. ><CELLBODY>cl</CELLBODY
  27632. ></ENTRY
  27633. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27634. > </CELLBODY
  27635. ><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27636. >, S </CELLBODY
  27637. ></ENTRY
  27638. ></RBW-ROW
  27639. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27640. ></ENTRY
  27641. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd_initiator </CELLBODY
  27642. ></ENTRY
  27643. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name_type</CELLBODY
  27644. ><CELLBODY></CELLBODY
  27645. ></ENTRY
  27646. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  27647. ><CELLBODY>cl</CELLBODY
  27648. ></ENTRY
  27649. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27650. > </CELLBODY
  27651. ><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27652. >, S</CELLBODY
  27653. ></ENTRY
  27654. ></RBW-ROW
  27655. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27656. ></ENTRY
  27657. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd_timing_constr</CELLBODY
  27658. ></ENTRY
  27659. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>timing_constraint</CELLBODY
  27660. ></ENTRY
  27661. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27662. ></ENTRY
  27663. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27664. ></ENTRY
  27665. ></RBW-ROW
  27666. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27667. ></ENTRY
  27668. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note</CELLBODY
  27669. ></ENTRY
  27670. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_text</CELLBODY
  27671. ></ENTRY
  27672. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27673. ></ENTRY
  27674. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27675. ></ENTRY
  27676. ></RBW-ROW
  27677. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  27678. ></ENTRY
  27679. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd_event</CELLBODY
  27680. ></ENTRY
  27681. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>event</CELLBODY
  27682. ><CELLBODY></CELLBODY
  27683. ><CELLBODY>timing_mark_start</CELLBODY
  27684. ><CELLBODY>timing_mark_end</CELLBODY
  27685. ></ENTRY
  27686. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27687. ><CELLBODY>de</CELLBODY
  27688. ><CELLBODY>&truehy;</CELLBODY
  27689. ><CELLBODY>&truehy;</CELLBODY
  27690. ></ENTRY
  27691. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27692. > </CELLBODY
  27693. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27694. > </CELLBODY
  27695. ><CELLBODY>&truehy;</CELLBODY
  27696. ><CELLBODY>&truehy;</CELLBODY
  27697. ></ENTRY
  27698. ></RBW-ROW
  27699. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27700. ></ENTRY
  27701. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_conn</CELLBODY
  27702. ></ENTRY
  27703. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27704. ></ENTRY
  27705. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27706. ></ENTRY
  27707. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27708. ></ENTRY
  27709. ></RBW-ROW
  27710. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connected Nodes</CELLBODY
  27711. ></ENTRY
  27712. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>in_scope_region</CELLBODY
  27713. ></ENTRY
  27714. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27715. ></ENTRY
  27716. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27717. ></ENTRY
  27718. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27719. ></ENTRY
  27720. ></RBW-ROW
  27721. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27722. ></ENTRY
  27723. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>object_termination</CELLBODY
  27724. ></ENTRY
  27725. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27726. ></ENTRY
  27727. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27728. ></ENTRY
  27729. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27730. ></ENTRY
  27731. ></RBW-ROW
  27732. ></TBODY
  27733. ></TGROUP
  27734. ></RBW-TABLE
  27735. ></LABEL
  27736. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  27737. >State Transition Diagram (STD)</L.LABEL
  27738. ><B.BODY>File type std; item type cl:pe</B.BODY
  27739. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="99p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  27740. ></ENTRY
  27741. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  27742. ></ENTRY
  27743. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  27744. ></ENTRY
  27745. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  27746. ></ENTRY
  27747. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  27748. ></ENTRY
  27749. ></RBW-ROW
  27750. ></THEAD
  27751. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  27752. ></ENTRY
  27753. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name_state</CELLBODY
  27754. ></ENTRY
  27755. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27756. ></ENTRY
  27757. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>st</CELLBODY
  27758. ></ENTRY
  27759. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27760. ></ENTRY
  27761. ></RBW-ROW
  27762. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27763. ></ENTRY
  27764. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>state</CELLBODY
  27765. ></ENTRY
  27766. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27767. ><CELLBODY>editor_only</CELLBODY
  27768. ></ENTRY
  27769. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>st</CELLBODY
  27770. ><CELLBODY>&truehy;</CELLBODY
  27771. ></ENTRY
  27772. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27773. ></ENTRY
  27774. ></RBW-ROW
  27775. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27776. ></ENTRY
  27777. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>super_state</CELLBODY
  27778. ></ENTRY
  27779. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27780. ></ENTRY
  27781. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>st</CELLBODY
  27782. ></ENTRY
  27783. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27784. ></ENTRY
  27785. ></RBW-ROW
  27786. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27787. ></ENTRY
  27788. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ver_compl_trans</CELLBODY
  27789. ></ENTRY
  27790. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>editor_only</CELLBODY
  27791. ><CELLBODY>event</CELLBODY
  27792. ><CELLBODY></CELLBODY
  27793. ><CELLBODY>condition</CELLBODY
  27794. ><CELLBODY>action</CELLBODY
  27795. ><CELLBODY></CELLBODY
  27796. ><CELLBODY>send_clause</CELLBODY
  27797. ><CELLBODY></CELLBODY
  27798. ></ENTRY
  27799. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27800. ><CELLBODY>pe</CELLBODY
  27801. ><CELLBODY>de</CELLBODY
  27802. ><CELLBODY>&truehy;</CELLBODY
  27803. ><CELLBODY>pe</CELLBODY
  27804. ><CELLBODY>de</CELLBODY
  27805. ><CELLBODY>pe</CELLBODY
  27806. ><CELLBODY>de</CELLBODY
  27807. ></ENTRY
  27808. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27809. ><CELLBODY>&truehy;</CELLBODY
  27810. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27811. ></CELLBODY
  27812. ><CELLBODY>&truehy;</CELLBODY
  27813. ><CELLBODY>&truehy;</CELLBODY
  27814. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27815. ></CELLBODY
  27816. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>S</CX5FX5FBULLET.EMPHASIS
  27817. ></CELLBODY
  27818. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27819. ></CELLBODY
  27820. ></ENTRY
  27821. ></RBW-ROW
  27822. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27823. ></ENTRY
  27824. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>hor_compl_trans</CELLBODY
  27825. ></ENTRY
  27826. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>editor_only</CELLBODY
  27827. ><CELLBODY>event</CELLBODY
  27828. ><CELLBODY></CELLBODY
  27829. ><CELLBODY>condition</CELLBODY
  27830. ><CELLBODY>action</CELLBODY
  27831. ><CELLBODY></CELLBODY
  27832. ><CELLBODY>send_clause</CELLBODY
  27833. ><CELLBODY></CELLBODY
  27834. ></ENTRY
  27835. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27836. ><CELLBODY>pe</CELLBODY
  27837. ><CELLBODY>de</CELLBODY
  27838. ><CELLBODY>&truehy;</CELLBODY
  27839. ><CELLBODY>pe</CELLBODY
  27840. ><CELLBODY>de</CELLBODY
  27841. ><CELLBODY>pe</CELLBODY
  27842. ><CELLBODY>de</CELLBODY
  27843. ></ENTRY
  27844. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27845. ><CELLBODY>&truehy;</CELLBODY
  27846. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27847. ></CELLBODY
  27848. ><CELLBODY>&truehy;</CELLBODY
  27849. ><CELLBODY>&truehy;</CELLBODY
  27850. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27851. ></CELLBODY
  27852. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>S</CX5FX5FBULLET.EMPHASIS
  27853. ></CELLBODY
  27854. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27855. ></CELLBODY
  27856. ></ENTRY
  27857. ></RBW-ROW
  27858. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27859. ></ENTRY
  27860. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>std_class</CELLBODY
  27861. ></ENTRY
  27862. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27863. ></ENTRY
  27864. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  27865. ></ENTRY
  27866. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  27867. >, S</CELLBODY
  27868. ></ENTRY
  27869. ></RBW-ROW
  27870. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27871. ></ENTRY
  27872. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>start_state</CELLBODY
  27873. ></ENTRY
  27874. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27875. ></ENTRY
  27876. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>st</CELLBODY
  27877. ></ENTRY
  27878. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27879. ></ENTRY
  27880. ></RBW-ROW
  27881. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27882. ></ENTRY
  27883. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>final_state</CELLBODY
  27884. ></ENTRY
  27885. ><ENTRY COLNAME="3" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27886. ></ENTRY
  27887. ><ENTRY COLNAME="4" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27888. ><CELLBODY>de</CELLBODY
  27889. ></ENTRY
  27890. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27891. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27892. > </CELLBODY
  27893. ></ENTRY
  27894. ></RBW-ROW
  27895. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27896. ></ENTRY
  27897. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note</CELLBODY
  27898. ></ENTRY
  27899. ><ENTRY COLNAME="3" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_text</CELLBODY
  27900. ></ENTRY
  27901. ><ENTRY COLNAME="4" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27902. ></ENTRY
  27903. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27904. ></ENTRY
  27905. ></RBW-ROW
  27906. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  27907. ></ENTRY
  27908. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>transition</CELLBODY
  27909. ></ENTRY
  27910. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>editor_only</CELLBODY
  27911. ><CELLBODY>event</CELLBODY
  27912. ><CELLBODY></CELLBODY
  27913. ><CELLBODY>condition</CELLBODY
  27914. ><CELLBODY>action</CELLBODY
  27915. ><CELLBODY></CELLBODY
  27916. ><CELLBODY>send_clause</CELLBODY
  27917. ></ENTRY
  27918. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27919. ><CELLBODY>pe</CELLBODY
  27920. ><CELLBODY>de</CELLBODY
  27921. ><CELLBODY>&truehy;</CELLBODY
  27922. ><CELLBODY>pe</CELLBODY
  27923. ><CELLBODY>de</CELLBODY
  27924. ><CELLBODY>pe</CELLBODY
  27925. ><CELLBODY>de</CELLBODY
  27926. ></ENTRY
  27927. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27928. ><CELLBODY>Q</CELLBODY
  27929. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27930. > </CELLBODY
  27931. ><CELLBODY><CX5FX5FPROCEDURE.NAME>&truehy;</CX5FX5FPROCEDURE.NAME
  27932. > </CELLBODY
  27933. ><CELLBODY>Q</CELLBODY
  27934. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27935. > </CELLBODY
  27936. ><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  27937. ></CELLBODY
  27938. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27939. ></CELLBODY
  27940. ></ENTRY
  27941. ></RBW-ROW
  27942. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27943. ></ENTRY
  27944. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>event_msg</CELLBODY
  27945. ></ENTRY
  27946. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>event</CELLBODY
  27947. ></ENTRY
  27948. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  27949. ><CELLBODY>de</CELLBODY
  27950. ></ENTRY
  27951. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27952. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  27953. > </CELLBODY
  27954. ></ENTRY
  27955. ></RBW-ROW
  27956. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27957. ></ENTRY
  27958. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_conn</CELLBODY
  27959. ></ENTRY
  27960. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27961. ></ENTRY
  27962. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27963. ></ENTRY
  27964. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27965. ></ENTRY
  27966. ></RBW-ROW
  27967. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connected Nodes</CELLBODY
  27968. ></ENTRY
  27969. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>state_region</CELLBODY
  27970. ></ENTRY
  27971. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  27972. ></ENTRY
  27973. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>st</CELLBODY
  27974. ></ENTRY
  27975. ><ENTRY COLNAME="5" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  27976. ></ENTRY
  27977. ></RBW-ROW
  27978. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27979. ></ENTRY
  27980. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>history_state</CELLBODY
  27981. ></ENTRY
  27982. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27983. ></ENTRY
  27984. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27985. ></ENTRY
  27986. ><ENTRY COLNAME="5" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  27987. ></ENTRY
  27988. ></RBW-ROW
  27989. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  27990. ></ENTRY
  27991. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>state_action</CELLBODY
  27992. ></ENTRY
  27993. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>event</CELLBODY
  27994. ><CELLBODY></CELLBODY
  27995. ><CELLBODY></CELLBODY
  27996. ><CELLBODY>condition</CELLBODY
  27997. ><CELLBODY>action</CELLBODY
  27998. ><CELLBODY></CELLBODY
  27999. ><CELLBODY>send_clause</CELLBODY
  28000. ></ENTRY
  28001. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  28002. ><CELLBODY>de</CELLBODY
  28003. ><CELLBODY>rs</CELLBODY
  28004. ><CELLBODY>&truehy;</CELLBODY
  28005. ><CELLBODY>pe</CELLBODY
  28006. ><CELLBODY>de</CELLBODY
  28007. ><CELLBODY>pe</CELLBODY
  28008. ><CELLBODY>de</CELLBODY
  28009. ></ENTRY
  28010. ><ENTRY COLNAME="5" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q </CELLBODY
  28011. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  28012. > </CELLBODY
  28013. ><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  28014. ></CELLBODY
  28015. ><CELLBODY><CX5FX5FPROCEDURE.NAME>&truehy;</CX5FX5FPROCEDURE.NAME
  28016. > </CELLBODY
  28017. ><CELLBODY>Q</CELLBODY
  28018. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  28019. > </CELLBODY
  28020. ><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  28021. ></CELLBODY
  28022. ><CELLBODY><CX5FX5FPROCEDURE.NAME>F</CX5FX5FPROCEDURE.NAME
  28023. ></CELLBODY
  28024. ></ENTRY
  28025. ></RBW-ROW
  28026. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  28027. ></ENTRY
  28028. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>activity</CELLBODY
  28029. ></ENTRY
  28030. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  28031. ></ENTRY
  28032. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  28033. ></ENTRY
  28034. ><ENTRY COLNAME="5" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Q</CELLBODY
  28035. ></ENTRY
  28036. ></RBW-ROW
  28037. ></TBODY
  28038. ></TGROUP
  28039. ></RBW-TABLE
  28040. ></LABEL
  28041. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28042. >Use Case Diagram (UCD)</L.LABEL
  28043. ><B.BODY>File type ucd; item type cl</B.BODY
  28044. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="99p"><COLSPEC COLNAME="4" COLWIDTH="54p"><COLSPEC COLNAME="5" COLWIDTH="54p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Symbol Type</CELLHEADING
  28045. ></ENTRY
  28046. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Component Name</CELLHEADING
  28047. ></ENTRY
  28048. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Label</CELLHEADING
  28049. ></ENTRY
  28050. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item type</CELLHEADING
  28051. ></ENTRY
  28052. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Item Scope</CELLHEADING
  28053. ></ENTRY
  28054. ></RBW-ROW
  28055. ></THEAD
  28056. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  28057. ></ENTRY
  28058. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>use_case</CELLBODY
  28059. ></ENTRY
  28060. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  28061. ></ENTRY
  28062. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  28063. ></ENTRY
  28064. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>P</CX5FX5FPROCEDURE.NAME
  28065. >, S</CELLBODY
  28066. ></ENTRY
  28067. ></RBW-ROW
  28068. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  28069. ></ENTRY
  28070. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ucd_actor</CELLBODY
  28071. ></ENTRY
  28072. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  28073. ></ENTRY
  28074. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  28075. ></ENTRY
  28076. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>P</CX5FX5FBULLET.EMPHASIS
  28077. >, S</CELLBODY
  28078. ></ENTRY
  28079. ></RBW-ROW
  28080. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  28081. ></ENTRY
  28082. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note</CELLBODY
  28083. ></ENTRY
  28084. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_text</CELLBODY
  28085. ></ENTRY
  28086. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  28087. ></ENTRY
  28088. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  28089. ></ENTRY
  28090. ></RBW-ROW
  28091. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  28092. ></ENTRY
  28093. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>und_com_assoc</CELLBODY
  28094. ></ENTRY
  28095. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  28096. ></ENTRY
  28097. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  28098. ></ENTRY
  28099. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  28100. > </CELLBODY
  28101. ></ENTRY
  28102. ></RBW-ROW
  28103. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  28104. ></ENTRY
  28105. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>dir_com_assoc</CELLBODY
  28106. ></ENTRY
  28107. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  28108. ></ENTRY
  28109. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  28110. ></ENTRY
  28111. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>S</CX5FX5FPROCEDURE.NAME
  28112. > </CELLBODY
  28113. ></ENTRY
  28114. ></RBW-ROW
  28115. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  28116. ></ENTRY
  28117. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>use_case_gen</CELLBODY
  28118. ></ENTRY
  28119. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  28120. ></ENTRY
  28121. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  28122. ></ENTRY
  28123. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME>&truehy;</CX5FX5FPROCEDURE.NAME
  28124. > </CELLBODY
  28125. ></ENTRY
  28126. ></RBW-ROW
  28127. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  28128. ></ENTRY
  28129. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>note_conn</CELLBODY
  28130. ></ENTRY
  28131. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  28132. ></ENTRY
  28133. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  28134. ></ENTRY
  28135. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  28136. ></ENTRY
  28137. ></RBW-ROW
  28138. ></TBODY
  28139. ></TGROUP
  28140. ></RBW-TABLE
  28141. ><B.BODY></B.BODY
  28142. ><B.BODY></B.BODY
  28143. ><RBWAUTO-0001></RBWAUTO-0001
  28144. ><!--
  28145.  
  28146.  
  28147.  
  28148.  
  28149.  
  28150. CONVERTING SOURCE FILE ../../sources/pmg/pmgbk.mif
  28151.  
  28152.  
  28153. --><B.BODY></B.BODY
  28154. ><B.BODY></B.BODY
  28155. ><B.BODY></B.BODY
  28156. ><B.BODY></B.BODY
  28157. ><B.BODY></B.BODY
  28158. ></LABEL
  28159. ></APPENDIX
  28160. ></BOOK
  28161. ><BOOK><BH.BOOK.HEAD>Project Management Guide</BH.BOOK.HEAD
  28162. ><!--
  28163.  
  28164.  
  28165.  
  28166.  
  28167.  
  28168. CONVERTING SOURCE FILE ../../sources/pmg/pmgpref.fm5.mif
  28169.  
  28170.  
  28171. --><B.BODY></B.BODY
  28172. ><B.BODY></B.BODY
  28173. ><B.BODY></B.BODY
  28174. ><B.BODY></B.BODY
  28175. ><B.BODY></B.BODY
  28176. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  28177. ><RBW-TEXTFLD TYPE="text">Project Management Guide</RBW-TEXTFLD
  28178. ></RBW-SYSOBJ
  28179. ></CN.CHAPTER.NOX23
  28180. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28181. >About this manual</L.LABEL
  28182. ><B.BODY>This manual describes how to use versions, groups, and access control. It also describes how to save Browser settings and how to determine where generated files are placed in the file system.</B.BODY
  28183. ><B.BODY>These features are particularly useful to the ObjectTeam administrator. Depending on the size and complexity of their projects, project leaders and project members might also find these features useful.</B.BODY
  28184. ></LABEL
  28185. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28186. >Prerequisites</L.LABEL
  28187. ><B.BODY>This manual assumes that you are familiar with the following products and concepts:</B.BODY
  28188. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28189. ></RBW-AUTOGEN
  28190. ></RBW-MARKER
  28191. ><RBW-PARABODY>The operating system you are using. For more information, refer to your operating system documentation.</RBW-PARABODY
  28192. ></LB.LIST.BULLET
  28193. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28194. ></RBW-AUTOGEN
  28195. ></RBW-MARKER
  28196. ><RBW-PARABODY>The Unified Modeling Language (UML) for Object&truehy;Oriented Development, as developed by Grady Booch, Ivar Jacobson, and James Rumbaugh.</RBW-PARABODY
  28197. ></LB.LIST.BULLET
  28198. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28199. ></RBW-AUTOGEN
  28200. ></RBW-MARKER
  28201. ><RBW-PARABODY>The basic operation of ObjectTeam, as presented in <CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  28202. ><CX5FX5FTITLE></CX5FX5FTITLE
  28203. > and the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  28204. ><CX5FX5FTITLE></CX5FX5FTITLE
  28205. >.</RBW-PARABODY
  28206. ></LB.LIST.BULLET
  28207. ><B.BODY><RBW-IDXTERM SEEALSO="version" TERM1="object"></RBW-IDXTERM
  28208. > <RBW-IDXTERM SEEALSO="version" TERM1="item generation"></RBW-IDXTERM
  28209. > <RBW-IDXTERM SEE="access control" TERM1="security"></RBW-IDXTERM
  28210. > <RBW-IDXTERM SEEALSO="role right" TERM1="access control"></RBW-IDXTERM
  28211. ><RBW-IDXTERM SEEALSO="role right" TERM1=""></RBW-IDXTERM
  28212. ><RBW-IDXTERM SEEALSO="access rule" TERM1="access control"></RBW-IDXTERM
  28213. > <RBW-IDXTERM SEEALSO="access right" TERM1="access control"></RBW-IDXTERM
  28214. > <RBW-IDXTERM SEE="Class Definition Matrix" TERM1="CDM"></RBW-IDXTERM
  28215. > <RBW-IDXTERM SEEALSO="access right" TERM1="access control"></RBW-IDXTERM
  28216. > <RBW-IDXTERM SEE="Class Definition Matrix" TERM1="CDM"></RBW-IDXTERM
  28217. > <RBW-IDXTERM SEEALSO="version" TERM1="backGround version"></RBW-IDXTERM
  28218. ><RBW-IDXTERM SEEALSO="version" TERM1=""></RBW-IDXTERM
  28219. ><RBW-IDXTERM SEEALSO="version" TERM1="frozen version"></RBW-IDXTERM
  28220. > <RBW-IDXTERM SEEALSO="version" TERM1="working version"></RBW-IDXTERM
  28221. ></B.BODY
  28222. ><RBWAUTO-0001></RBWAUTO-0001
  28223. ><!--
  28224.  
  28225.  
  28226.  
  28227.  
  28228.  
  28229. CONVERTING SOURCE FILE ../../sources/pmg/version.fm5.mif
  28230.  
  28231.  
  28232. --><B.BODY></B.BODY
  28233. ><B.BODY></B.BODY
  28234. ><B.BODY></B.BODY
  28235. ><B.BODY></B.BODY
  28236. ><B.BODY></B.BODY
  28237. ></LABEL
  28238. ></CHAPTERNONUM
  28239. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  28240. ></RBW-AUTOGEN
  28241. ><RBW-ANCHOR ID="22309"></RBW-ANCHOR
  28242. >Version and Configuration Management<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  28243. ><RBW-TEXTFLD TYPE="text">Project Management Guide</RBW-TEXTFLD
  28244. ></RBW-SYSOBJ
  28245. ></C.CHAPTER.HEAD
  28246. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28247. >Introduction</L.LABEL
  28248. ><B.BODY>This chapter describes ObjectTeam’s powerful version and configuration management system.</B.BODY
  28249. ></LABEL
  28250. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28251. >Project hierarchy</L.LABEL
  28252. ><B.BODY>The following illustration shows the ObjectTeam project hierarchy. You should be familiar with all the objects shown here.</B.BODY
  28253. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00260.tif" origseq="5" origtype="I" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  28254. ></FA.FIGURE.ANCHOR
  28255. ></LABEL
  28256. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28257. >Object versions</L.LABEL
  28258. ><B.BODY>ObjectTeam allows you to create versions of all the objects in this hierarchy, with the exception of the project object. Each version of a parent object points to a version of each of its child objects. For example, each version of a phase object points to a version of each of its child system objects.</B.BODY
  28259. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00261.tif" origseq="35" origtype="I" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  28260. ></FA.FIGURE.ANCHOR
  28261. ></LABEL
  28262. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28263. >Configurations</L.LABEL
  28264. ><B.BODY>Through the links between versions, a version of a configuration effectively points to a version of every object in it.</B.BODY
  28265. ><B.BODY>Each version has a status that indicates whether it can be edited (working) or not (frozen). Only frozen versions can be shared by multiple configurations.</B.BODY
  28266. ></LABEL
  28267. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28268. >Access control</L.LABEL
  28269. ><B.BODY>This chapter focuses on how to use versions and configurations. However, it is important to note that access to object versions is also controlled through the access control mechanism described in <RBW-XREF REFID="21532" TYPE="XREF-TEXTCOPY">Chapter 5, Access Control</RBW-XREF
  28270. >.</B.BODY
  28271. ></LABEL
  28272. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28273. >In this chapter</L.LABEL
  28274. ><B.BODY>This chapter contains the following sections:</B.BODY
  28275. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  28276. ></ENTRY
  28277. ></RBW-ROW
  28278. ></THEAD
  28279. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40212" TYPE="XREF-TEXTCOPY">Versions&rbwtab;1–3</RBW-XREF
  28280. ></SB.SECTION.BLOCK.TABLE
  28281. ></ENTRY
  28282. ></RBW-ROW
  28283. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40939" TYPE="XREF-TEXTCOPY">Configurations&rbwtab;1–7</RBW-XREF
  28284. ></SB.SECTION.BLOCK.TABLE
  28285. ></ENTRY
  28286. ></RBW-ROW
  28287. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40295" TYPE="XREF-TEXTCOPY">Item Generations and Property Values&rbwtab;1–9</RBW-XREF
  28288. ></SB.SECTION.BLOCK.TABLE
  28289. ></ENTRY
  28290. ></RBW-ROW
  28291. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34596" TYPE="XREF-TEXTCOPY">Version Browser&rbwtab;1–11</RBW-XREF
  28292. ></SB.SECTION.BLOCK.TABLE
  28293. ></ENTRY
  28294. ></RBW-ROW
  28295. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38448" TYPE="XREF-TEXTCOPY">Working With Versions and Configurations&rbwtab;1–14</RBW-XREF
  28296. ></SB.SECTION.BLOCK.TABLE
  28297. ></ENTRY
  28298. ></RBW-ROW
  28299. ></TBODY
  28300. ></TGROUP
  28301. ></RBW-TABLE
  28302. ></LABEL
  28303. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40212"></RBW-ANCHOR
  28304. >Versions</S.SECTION.HEAD
  28305. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28306. ><RBW-ANCHOR ID="35287"></RBW-ANCHOR
  28307. >Objects that have versions</L.LABEL
  28308. ><B.BODY><RBW-IDXTERM TERM1="object" TERM2="that have versions"></RBW-IDXTERM
  28309. >The following types of objects are under version control. When you create, delete, or modify these types of objects, you always create, delete, or modify a version of the object.</B.BODY
  28310. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28311. ></RBW-AUTOGEN
  28312. ></RBW-MARKER
  28313. ><RBW-PARABODY>Configurations</RBW-PARABODY
  28314. ></LB.LIST.BULLET
  28315. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28316. ></RBW-AUTOGEN
  28317. ></RBW-MARKER
  28318. ><RBW-PARABODY>Phases</RBW-PARABODY
  28319. ></LB.LIST.BULLET
  28320. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28321. ></RBW-AUTOGEN
  28322. ></RBW-MARKER
  28323. ><RBW-PARABODY>Systems</RBW-PARABODY
  28324. ></LB.LIST.BULLET
  28325. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28326. ></RBW-AUTOGEN
  28327. ></RBW-MARKER
  28328. ><RBW-PARABODY>System files, such as diagrams and CDMs<RBW-IDXTERM TERM1="diagram" TERM2="versioning"></RBW-IDXTERM
  28329. ><RBW-IDXTERM TERM1="file" TERM2="versioning"></RBW-IDXTERM
  28330. ></RBW-PARABODY
  28331. ></LB.LIST.BULLET
  28332. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28333. ></RBW-AUTOGEN
  28334. ></RBW-MARKER
  28335. ><RBW-PARABODY>Groups</RBW-PARABODY
  28336. ></LB.LIST.BULLET
  28337. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28338. ></RBW-AUTOGEN
  28339. ></RBW-MARKER
  28340. ><RBW-PARABODY>Text files</RBW-PARABODY
  28341. ></LB.LIST.BULLET
  28342. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28343. ></RBW-AUTOGEN
  28344. ></RBW-MARKER
  28345. ><RBW-PARABODY>Customization files</RBW-PARABODY
  28346. ></LB.LIST.BULLET
  28347. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28348. ></RBW-AUTOGEN
  28349. ></RBW-MARKER
  28350. ><RBW-PARABODY>Documents and document objects, such as document structure matrixes and file sections (see the <CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  28351. ><CX5FX5FTITLE></CX5FX5FTITLE
  28352. > for more information)</RBW-PARABODY
  28353. ></LB.LIST.BULLET
  28354. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28355. >Items</SL.SUBLABEL
  28356. ><B.BODY>You cannot create versions of items. Item values are saved with system versions or file versions, depending on the item scope. See <RBW-XREF REFID="40295" TYPE="XREF-TEXTCOPY">Item Generations and Property Values</RBW-XREF
  28357. > for more information.</B.BODY
  28358. ></LABEL
  28359. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28360. >Hierarchy of object versions</L.LABEL
  28361. ><B.BODY>The ObjectTeam project hierarchy defines the content of each type of object.</B.BODY
  28362. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  28363. ></ENTRY
  28364. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Content</CELLHEADING
  28365. ></ENTRY
  28366. ></RBW-ROW
  28367. ></THEAD
  28368. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration</CELLBODY
  28369. ></ENTRY
  28370. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Each configuration version contains one or more phase versions, as well as one or more customization file versions.</CELLBODY
  28371. ></ENTRY
  28372. ></RBW-ROW
  28373. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase</CELLBODY
  28374. ></ENTRY
  28375. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Each phase version contains one or more system versions, as well as one or more customization file versions.</CELLBODY
  28376. ></ENTRY
  28377. ></RBW-ROW
  28378. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System</CELLBODY
  28379. ></ENTRY
  28380. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Each system version contains one or more file versions and one or more group versions, as well as one or more customization file versions.</CELLBODY
  28381. ></ENTRY
  28382. ></RBW-ROW
  28383. ></TBODY
  28384. ></TGROUP
  28385. ></RBW-TABLE
  28386. ></LABEL
  28387. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28388. >Version states</L.LABEL
  28389. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="state of"></RBW-IDXTERM
  28390. >Each version of an object can be in one of three states: </B.BODY
  28391. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>State</CELLHEADING
  28392. ></ENTRY
  28393. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  28394. ></ENTRY
  28395. ></RBW-ROW
  28396. ></THEAD
  28397. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="working version" TERM2="definition of"></RBW-IDXTERM
  28398. >working</CELLBODY
  28399. ></ENTRY
  28400. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>An object version in this state can be edited. Its component object versions can be working or frozen. A working object version must be in exactly one configuration version.</CELLBODY
  28401. ></ENTRY
  28402. ></RBW-ROW
  28403. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="frozen version" TERM2="definition of"></RBW-IDXTERM
  28404. >frozen</CELLBODY
  28405. ></ENTRY
  28406. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>An object version in this state cannot be edited. Its component object versions are also frozen. A frozen object version can be in one or more configuration versions. </CELLBODY
  28407. ></ENTRY
  28408. ></RBW-ROW
  28409. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="backGround version" TERM2="definition"></RBW-IDXTERM
  28410. >backGround</CELLBODY
  28411. ></ENTRY
  28412. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>An object version in this state is frozen and is not in any configuration version. Background versions are removed from the repository and stored in the file system. </CELLBODY
  28413. ></ENTRY
  28414. ></RBW-ROW
  28415. ></TBODY
  28416. ></TGROUP
  28417. ></RBW-TABLE
  28418. ></LABEL
  28419. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28420. >Version identifier</L.LABEL
  28421. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="version" TERM2="identifier"></RBW-IDXTERM
  28422. ><RBW-IDXTERM TERM1="identifier" TERM2="for version"></RBW-IDXTERM
  28423. >When you create a new object version, ObjectTeam automatically assigns it a version identifier of the form:</BI.BODY.INTRO
  28424. ><E.EXAMPLE><CX5FX5FTERM>configuration_name</CX5FX5FTERM
  28425. >.<CX5FX5FTERM>version_number</CX5FX5FTERM
  28426. > </E.EXAMPLE
  28427. ><B.BODY>where:</B.BODY
  28428. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28429. ></RBW-AUTOGEN
  28430. ></RBW-MARKER
  28431. ><RBW-PARABODY><CX5FX5FTERM>configuration_name</CX5FX5FTERM
  28432. > is the name of the current configuration</RBW-PARABODY
  28433. ></LB.LIST.BULLET
  28434. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28435. ></RBW-AUTOGEN
  28436. ></RBW-MARKER
  28437. ><RBW-PARABODY><CX5FX5FTERM>version_number</CX5FX5FTERM
  28438. > is a unique number for this object of the form:</RBW-PARABODY
  28439. ></LB.LIST.BULLET
  28440. ><E.EXAMPLE><CX5FX5FTERM>part_1</CX5FX5FTERM
  28441. >.<CX5FX5FTERM>part_2</CX5FX5FTERM
  28442. >.<CX5FX5FTERM>part_3</CX5FX5FTERM
  28443. >...<CX5FX5FTERM>part_n</CX5FX5FTERM
  28444. > </E.EXAMPLE
  28445. ><LT.LIST.TEXT>Each <CX5FX5FTERM>part</CX5FX5FTERM
  28446. > is an integer and there are as many parts as necessary (to a maximum of 10).</LT.LIST.TEXT
  28447. ></LABEL
  28448. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28449. >Version number</L.LABEL
  28450. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="number"></RBW-IDXTERM
  28451. ><RBW-IDXTERM TERM1="frozen version" TERM2="version numbering"></RBW-IDXTERM
  28452. >ObjectTeam assigns new version numbers. <RBW-IDXTERM TERM1="numbering of versions"></RBW-IDXTERM
  28453. ></B.BODY
  28454. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28455. ></RBW-AUTOGEN
  28456. ></RBW-MARKER
  28457. ><RBW-PARABODY>An object version is either the first object version or it is created from a frozen object version. </RBW-PARABODY
  28458. ></LB.LIST.BULLET
  28459. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28460. ></RBW-AUTOGEN
  28461. ></RBW-MARKER
  28462. ><RBW-PARABODY>The version number for the first object version is 1. The version number for any other object version is derived from the version number of the frozen object version used to create it.</RBW-PARABODY
  28463. ></LB.LIST.BULLET
  28464. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28465. ></RBW-AUTOGEN
  28466. ></RBW-MARKER
  28467. ><RBW-PARABODY>A frozen object version can be used to create one or more new object versions.</RBW-PARABODY
  28468. ></LB.LIST.BULLET
  28469. ><B.BODY>This table shows the pattern that exists in version numbering:</B.BODY
  28470. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="162p"><COLSPEC COLNAME="2" COLWIDTH="171p"><COLSPEC COLNAME="3" COLWIDTH="117p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Version Being Created</CELLHEADING
  28471. ></ENTRY
  28472. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Rule For Determining New Version Number</CELLHEADING
  28473. ></ENTRY
  28474. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Example (Frozen Version &truehy;> New Version)</CELLHEADING
  28475. ></ENTRY
  28476. ></RBW-ROW
  28477. ></THEAD
  28478. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>First object version</CELLBODY
  28479. ></ENTRY
  28480. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version is 1.</CELLBODY
  28481. ></ENTRY
  28482. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  28483. ></ENTRY
  28484. ></RBW-ROW
  28485. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>First object version based on a frozen version</CELLBODY
  28486. ></ENTRY
  28487. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Increment the last part of the version number.</CELLBODY
  28488. ></ENTRY
  28489. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>1 &truehy;> 2 or</CELLBODY
  28490. ><CELLBODY>1.1 &truehy;> 1.2</CELLBODY
  28491. ></ENTRY
  28492. ></RBW-ROW
  28493. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Second object version based on the same frozen version</CELLBODY
  28494. ></ENTRY
  28495. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Add .1 to the frozen version number.</CELLBODY
  28496. ></ENTRY
  28497. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>1 &truehy;> 1.1 or</CELLBODY
  28498. ><CELLBODY>1.1 &truehy;> 1.1.1</CELLBODY
  28499. ></ENTRY
  28500. ></RBW-ROW
  28501. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Third object version based on the same frozen version</CELLBODY
  28502. ></ENTRY
  28503. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Add .0.1 to the frozen version number.</CELLBODY
  28504. ></ENTRY
  28505. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>1 &truehy;> 1.0.1 or</CELLBODY
  28506. ><CELLBODY>2.2 &truehy;> 2.2.0.1</CELLBODY
  28507. ></ENTRY
  28508. ></RBW-ROW
  28509. ></TBODY
  28510. ></TGROUP
  28511. ></RBW-TABLE
  28512. ></LABEL
  28513. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28514. >Examples of version numbering</L.LABEL
  28515. ><B.BODY>The following table and illustration provide examples of version numbering:</B.BODY
  28516. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="36p"><COLSPEC COLNAME="2" COLWIDTH="414p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  28517. ></ENTRY
  28518. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  28519. ></ENTRY
  28520. ></RBW-ROW
  28521. ></THEAD
  28522. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  28523. ></ENTRY
  28524. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the first version of the object. This creates version 1.</CELLBODY
  28525. ></ENTRY
  28526. ></RBW-ROW
  28527. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  28528. ></ENTRY
  28529. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Freeze version 1 and use it to create a new object version.</CELLBODY
  28530. ><CELLBODY>This creates version 2.</CELLBODY
  28531. ></ENTRY
  28532. ></RBW-ROW
  28533. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  28534. ></ENTRY
  28535. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create a second new object version based on version 1. </CELLBODY
  28536. ><CELLBODY>This creates version 1.1.</CELLBODY
  28537. ></ENTRY
  28538. ></RBW-ROW
  28539. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  28540. ></ENTRY
  28541. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create a third new object version based on version 1. </CELLBODY
  28542. ><CELLBODY>This creates version 1.0.1.</CELLBODY
  28543. ></ENTRY
  28544. ></RBW-ROW
  28545. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  28546. ></ENTRY
  28547. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Freeze version 2 and use it to create two new object versions.</CELLBODY
  28548. ><CELLBODY>This creates versions 3 and 2.1.</CELLBODY
  28549. ></ENTRY
  28550. ></RBW-ROW
  28551. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  28552. ></ENTRY
  28553. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Freeze version 2.1 and use it to create three new object versions.</CELLBODY
  28554. ><CELLBODY>This creates versions 2.2, 2.1.1, and 2.1.0.1.</CELLBODY
  28555. ></ENTRY
  28556. ></RBW-ROW
  28557. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  28558. ></ENTRY
  28559. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Freeze version 2.2 and use it to create a new object version.</CELLBODY
  28560. ><CELLBODY>This creates version 2.3.</CELLBODY
  28561. ></ENTRY
  28562. ></RBW-ROW
  28563. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>8</CELLBODY
  28564. ></ENTRY
  28565. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Freeze version 2.1.1 and use it to create two new object versions.</CELLBODY
  28566. ><CELLBODY>This creates versions 2.1.2 and 2.1.1.1.</CELLBODY
  28567. ></ENTRY
  28568. ></RBW-ROW
  28569. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>9</CELLBODY
  28570. ></ENTRY
  28571. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Freeze version 2.1.2 and use it to create two new object versions.</CELLBODY
  28572. ><CELLBODY>This creates versions 2.1.3 and 2.1.2.1.</CELLBODY
  28573. ></ENTRY
  28574. ></RBW-ROW
  28575. ></TBODY
  28576. ></TGROUP
  28577. ></RBW-TABLE
  28578. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00262.tif" origseq="1" origtype="I" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  28579. ></FA.FIGURE.ANCHOR
  28580. ></LABEL
  28581. ></SECTION
  28582. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40939"></RBW-ANCHOR
  28583. >Configurations</S.SECTION.HEAD
  28584. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28585. >Introduction</L.LABEL
  28586. ><B.BODY>In ObjectTeam, you are always working in the context of a configuration version.</B.BODY
  28587. ></LABEL
  28588. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28589. >Adding object versions</L.LABEL
  28590. ><B.BODY>You add object versions to your configuration version in one of two ways:</B.BODY
  28591. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28592. ></RBW-AUTOGEN
  28593. ></RBW-MARKER
  28594. ><RBW-PARABODY>Create an object, which adds a new working object version to your configuration version.</RBW-PARABODY
  28595. ></LB.LIST.BULLET
  28596. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28597. ></RBW-AUTOGEN
  28598. ></RBW-MARKER
  28599. ><RBW-PARABODY>Select a frozen object version, which adds the frozen object version to your configuration version.</RBW-PARABODY
  28600. ></LB.LIST.BULLET
  28601. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  28602. ></RBW-AUTOGEN
  28603. >Once you have added the frozen version to your configuration, you can create a new working version of the frozen object version. You can then modify the new version.</T2.TIP.2
  28604. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  28605. ></RBW-AUTOGEN
  28606. >If you create an object version in your configuration and the version number is not what you expect, there may be an existing object with the same name that is unselected. Use the Version Browser to examine the version hierarchy. For more details, see <RBW-XREF REFID="34596" TYPE="XREF-TEXTCOPY">Version Browser</RBW-XREF
  28607. >.</W.WARNING
  28608. ></LABEL
  28609. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28610. >Removing object versions</L.LABEL
  28611. ><B.BODY>You remove object versions from your configuration version in one of two ways:</B.BODY
  28612. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28613. ></RBW-AUTOGEN
  28614. ></RBW-MARKER
  28615. ><RBW-PARABODY>Delete a working or frozen object version.</RBW-PARABODY
  28616. ></LB.LIST.BULLET
  28617. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  28618. ></RBW-AUTOGEN
  28619. >If a frozen object version is selected in more than one configuration version, you cannot delete it.</N2.NOTE.2
  28620. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28621. ></RBW-AUTOGEN
  28622. ></RBW-MARKER
  28623. ><RBW-PARABODY>Deselect a frozen object version.</RBW-PARABODY
  28624. ></LB.LIST.BULLET
  28625. ></LABEL
  28626. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28627. >One or more configurations</L.LABEL
  28628. ><B.BODY>A project can have one or more configurations. Most projects, even projects being worked on by a team of developers, use only one configuration. Your project only needs multiple configurations if you need to maintain separate, parallel streams of development.</B.BODY
  28629. ></LABEL
  28630. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28631. >One configuration</L.LABEL
  28632. ><B.BODY>Large projects being worked on by multiple developers often need only one configuration. Most of Cayenne’s development projects use a single configuration. In this case, developers generally work in their own systems. If developers happen to work on the same system, they are locked out of files currently in use by another developer, preventing potential conflicts.</B.BODY
  28633. ></LABEL
  28634. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28635. >Multiple configurations</L.LABEL
  28636. ><B.BODY>Multiple configurations in a project allow you to maintain separate, parallel streams of development. You must then merge the separate branches to create an integrated version model. Multiple configurations are particularly useful in the following situations:</B.BODY
  28637. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28638. ></RBW-AUTOGEN
  28639. ></RBW-MARKER
  28640. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Shielded development areas.</CX5FX5FBULLET.EMPHASIS
  28641. > With a single configuration, the work of every developer potentially impacts the work of every other developer. Multiple configurations ensure that the changes made by one developer (or group of developers) does not affect the work of another developer (or group of developers) until you choose to merge the configurations.</RBW-PARABODY
  28642. ></LB.LIST.BULLET
  28643. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28644. ></RBW-AUTOGEN
  28645. ></RBW-MARKER
  28646. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Parallel release schedules.</CX5FX5FBULLET.EMPHASIS
  28647. > If you need to maintain multiple versions of your model simultaneously, you can do so using multiple configurations. For example, you can have a configuration for Release X and a second configuration for Release X+1. You now can use one configuration for critical corrections to the older version of the model while you use the second configuration to develop the new version of the model.</RBW-PARABODY
  28648. ></LB.LIST.BULLET
  28649. ></LABEL
  28650. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28651. >For more information</L.LABEL
  28652. ><B.BODY><RBW-XREF REFID="14035" TYPE="XREF-TEXTCOPY">Chapter 2, Parallel Development</RBW-XREF
  28653. >, describes how to use multiple configurations. It also describes how to merge the configurations to create an integrated version of the model.</B.BODY
  28654. ></LABEL
  28655. ></SECTION
  28656. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40295"></RBW-ANCHOR
  28657. >Item Generations and Property Values</S.SECTION.HEAD
  28658. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28659. >Item generations</L.LABEL
  28660. ><B.BODY><RBW-IDXTERM TERM1="item generation"></RBW-IDXTERM
  28661. ><RBW-IDXTERM TERM1="item" TERM2="versioning"></RBW-IDXTERM
  28662. >Items contain important model information, such as property values. You cannot create versions of items. Instead, ObjectTeam creates and handles item generations for you.</B.BODY
  28663. ></LABEL
  28664. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28665. >Item scope determines where its properties are stored</L.LABEL
  28666. ><B.BODY>The scope of an item determines where the properties associated with that item are stored.</B.BODY
  28667. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28668. ></RBW-AUTOGEN
  28669. ></RBW-MARKER
  28670. ><RBW-PARABODY>Properties of items with scope file are stored with the File version.</RBW-PARABODY
  28671. ></LB.LIST.BULLET
  28672. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28673. ></RBW-AUTOGEN
  28674. ></RBW-MARKER
  28675. ><RBW-PARABODY>Properties of items with scope system or phaseDef are stored with the system version.</RBW-PARABODY
  28676. ></LB.LIST.BULLET
  28677. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28678. >Example</SL.SUBLABEL
  28679. ><B.BODY>An etd_event item cannot have scope file; therefore, it is always stored with a system version. The etd_event item contains, for example, the value of the Free Text property for the event connector in the Sequence Diagram (SD). When you freeze a system version, ObjectTeam freezes the associated etd_event item generations, including the value of the Free Text property for the event connector.</B.BODY
  28680. ></LABEL
  28681. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28682. >Not all properties are connected to Items</L.LABEL
  28683. ><B.BODY>Not all properties are associated with items. Many objects in the repository can have associated properties. These properties are stored with the object.</B.BODY
  28684. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28685. >Example</SL.SUBLABEL
  28686. ><B.BODY>The Free Text property for a diagram is associated with the file version of the diagram. When you freeze a diagram file version, ObjectTeam freezes its associated properties, including the value of the Free Text property for the diagram.</B.BODY
  28687. ></LABEL
  28688. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28689. >Freezing property values</L.LABEL
  28690. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="of property value"></RBW-IDXTERM
  28691. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  28692. ><RBW-IDXTERM TERM1="property" TERM2="versioning of"></RBW-IDXTERM
  28693. ><RBW-IDXTERM TERM1="freezing" TERM2="property values"></RBW-IDXTERM
  28694. >You cannot freeze item generations directly. Item generations are frozen with the system or file version in which they are stored.</B.BODY
  28695. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28696. ></RBW-AUTOGEN
  28697. ></RBW-MARKER
  28698. ><RBW-PARABODY>When you a file version, ObjectTeam freezes the file version and all properties of items with scope file.</RBW-PARABODY
  28699. ></LB.LIST.BULLET
  28700. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28701. ></RBW-AUTOGEN
  28702. ></RBW-MARKER
  28703. ><RBW-PARABODY>When you freeze a system version, ObjectTeam freezes the system version and all of its child file versions. Freezing a system version freezes all the property values in that system version, including all the property values in all the file versions in that system version.</RBW-PARABODY
  28704. ></LB.LIST.BULLET
  28705. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28706. >SavedGroups</SL.SUBLABEL
  28707. ><B.BODY>If you are using corporate groups, you can create a group that contains the files and items that you want to save called a SavedGroup. The SavedGroup is a snapshot of the current state of all files and items in the group. See <RBW-XREF REFID="11810" TYPE="XREF-TEXTCOPY">Chapter 4, Using Groups</RBW-XREF
  28708. >, for more information.</B.BODY
  28709. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  28710. ></RBW-AUTOGEN
  28711. >Creating a group version is not the same as creating a SavedGroup. A group version contains only the rules by which ObjectTeam determines the contents of the group. It does not contain the files and items in the group.</N.NOTE
  28712. ></LABEL
  28713. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28714. >Configurations should not share file versions</L.LABEL
  28715. ><B.BODY><RBW-IDXTERM TERM1="configuration" TERM2="sharing versions"></RBW-IDXTERM
  28716. ><RBW-IDXTERM TERM1="version" TERM2="sharing"></RBW-IDXTERM
  28717. >Configurations should share system versions rather than file versions. If the configurations share file versions, the property values visible from the <CX5FX5FEMPHASIS>shared</CX5FX5FEMPHASIS
  28718. > file version might be different in each configuration:</B.BODY
  28719. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28720. ></RBW-AUTOGEN
  28721. ></RBW-MARKER
  28722. ><RBW-PARABODY>The property values stored with the frozen file version are the same in both configurations.</RBW-PARABODY
  28723. ></LB.LIST.BULLET
  28724. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28725. ></RBW-AUTOGEN
  28726. ></RBW-MARKER
  28727. ><RBW-PARABODY>The property values stored with the system version are unique to each configuration.</RBW-PARABODY
  28728. ></LB.LIST.BULLET
  28729. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28730. >For more information</SL.SUBLABEL
  28731. ><B.BODY><RBW-XREF REFID="14035" TYPE="XREF-TEXTCOPY">Chapter 2, Parallel Development</RBW-XREF
  28732. >, describes how to use multiple configurations in a project.</B.BODY
  28733. ></LABEL
  28734. ></SECTION
  28735. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34596"></RBW-ANCHOR
  28736. >Version Browser</S.SECTION.HEAD
  28737. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28738. >Browser and Version Browser</L.LABEL
  28739. ><B.BODY>The Browser displays object versions in the context of the project hierarchy. Thus, in the Browser, you can examine all object versions that are currently selected in your project.</B.BODY
  28740. ><B.BODY>The Version Browser displays all versions of an object, regardless of whether or not they are currently selected in your project.</B.BODY
  28741. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00263.unk" origfile="pics/vbbrows.gif" origtype="X" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  28742. ></FAR.FIGURE.ANCHOR.RIGHT
  28743. ></LABEL
  28744. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28745. >Notation</L.LABEL
  28746. ><B.BODY>The Version Browser uses the following notation:</B.BODY
  28747. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28748. ></RBW-AUTOGEN
  28749. ></RBW-MARKER
  28750. ><RBW-PARABODY>The root node represents the object. It displays the name of the object and the number of versions of that object that exist.</RBW-PARABODY
  28751. ></LB.LIST.BULLET
  28752. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28753. ></RBW-AUTOGEN
  28754. ></RBW-MARKER
  28755. ><RBW-PARABODY>Each of the other nodes represents an object version. Each displays the version identifier and the creator’s user name. The border style indicates version status:</RBW-PARABODY
  28756. ></LB.LIST.BULLET
  28757. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Border Style</CELLHEADING
  28758. ></ENTRY
  28759. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Status</CELLHEADING
  28760. ></ENTRY
  28761. ></RBW-ROW
  28762. ></THEAD
  28763. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dashed line</CELLBODY
  28764. ></ENTRY
  28765. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Background</CELLBODY
  28766. ></ENTRY
  28767. ></RBW-ROW
  28768. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Solid line</CELLBODY
  28769. ></ENTRY
  28770. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Frozen</CELLBODY
  28771. ></ENTRY
  28772. ></RBW-ROW
  28773. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Bolded line</CELLBODY
  28774. ></ENTRY
  28775. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Working</CELLBODY
  28776. ></ENTRY
  28777. ></RBW-ROW
  28778. ></TBODY
  28779. ></TGROUP
  28780. ></RBW-TABLE
  28781. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28782. ></RBW-AUTOGEN
  28783. ></RBW-MARKER
  28784. ><RBW-PARABODY>The straight arrows show the version hierarchy. In the previous illustration, myconfig.3 is derived from myconfig.2 is derived from main.1. Both main2. and myconfig.2 are derived from main.1.</RBW-PARABODY
  28785. ></LB.LIST.BULLET
  28786. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  28787. ></RBW-AUTOGEN
  28788. ></RBW-MARKER
  28789. ><RBW-PARABODY>The curved lines represent Merge Links, which are only used during merge. A Merge Link points from a source version to a target version. It indicates that ObjectTeam should use the target version rather than the source version. See <RBW-XREF REFID="11562" TYPE="XREF-TEXTCOPY">Working With Merge Links</RBW-XREF
  28790. > for more information.</RBW-PARABODY
  28791. ></LB.LIST.BULLET
  28792. ></LABEL
  28793. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28794. >How to open a Version Browser</L.LABEL
  28795. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  28796. ></RBW-AUTOGEN
  28797. ></RBW-MARKER
  28798. ><RBW-PARABODY>To open a Version Browser:</RBW-PARABODY
  28799. ></P.PROCEDURE
  28800. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  28801. ></RBW-AUTOGEN
  28802. ></RBW-MARKER
  28803. ><RBW-PARABODY>In the Browser, select an object version.</RBW-PARABODY
  28804. ></LN.LIST.NUM
  28805. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  28806. ></RBW-AUTOGEN
  28807. ></RBW-MARKER
  28808. ><RBW-PARABODY>Select Version | Version Browser.</RBW-PARABODY
  28809. ></LN.LIST.NUM
  28810. ><LR.LIST.RESULT>The Version Browser appears. It displays all versions of the selected object.</LR.LIST.RESULT
  28811. ></LABEL
  28812. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28813. >How to update the display</L.LABEL
  28814. ><B.BODY>When you update the Version Browser display, you can redisplay information about the current object or select a new object.</B.BODY
  28815. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  28816. ></RBW-AUTOGEN
  28817. ></RBW-MARKER
  28818. ><RBW-PARABODY>To redisplay information about the current object, select View | Refresh.</RBW-PARABODY
  28819. ></P.PROCEDURE
  28820. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  28821. ></RBW-AUTOGEN
  28822. ></RBW-MARKER
  28823. ><RBW-PARABODY>To display information about a different object, drag a new object from the Browser into the Version Browser. (In Windows, use the left mouse button. In Unix, use the middle mouse button.)</RBW-PARABODY
  28824. ></P.PROCEDURE
  28825. ></LABEL
  28826. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28827. >How to examine an object version</L.LABEL
  28828. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  28829. ></RBW-AUTOGEN
  28830. ></RBW-MARKER
  28831. ><RBW-PARABODY>To examine an object version:</RBW-PARABODY
  28832. ></P.PROCEDURE
  28833. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  28834. ></RBW-AUTOGEN
  28835. ></RBW-MARKER
  28836. ><RBW-PARABODY>Select the object version.</RBW-PARABODY
  28837. ></LN.LIST.NUM
  28838. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  28839. ></RBW-AUTOGEN
  28840. ></RBW-MARKER
  28841. ><RBW-PARABODY>Select one of the following commands:</RBW-PARABODY
  28842. ></LN.LIST.NUM
  28843. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  28844. ></RBW-MARKER
  28845. ><RBW-PARABODY>File | Info displays an Info dialog box.</RBW-PARABODY
  28846. ></LB2.LIST.BULLET.2
  28847. ><T3.TIP.3><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  28848. ></RBW-AUTOGEN
  28849. >Use File | Info to see which object versions have selected the current object version.</T3.TIP.3
  28850. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  28851. ></RBW-MARKER
  28852. ><RBW-PARABODY>File | Edit opens an editor. Available for file versions only.</RBW-PARABODY
  28853. ></LB2.LIST.BULLET.2
  28854. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  28855. ></RBW-MARKER
  28856. ><RBW-PARABODY>File | Show opens a read&truehy;only editor. Available for file versions only.</RBW-PARABODY
  28857. ></LB2.LIST.BULLET.2
  28858. ></LABEL
  28859. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28860. >How to change fonts and colors</L.LABEL
  28861. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  28862. ></RBW-AUTOGEN
  28863. ></RBW-MARKER
  28864. ><RBW-PARABODY>To change the fonts and colors used in the Version Browser, use the Options menu.</RBW-PARABODY
  28865. ></P.PROCEDURE
  28866. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="270p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Command</CELLHEADING
  28867. ></ENTRY
  28868. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  28869. ></ENTRY
  28870. ></RBW-ROW
  28871. ></THEAD
  28872. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Primary Font</CELLBODY
  28873. ></ENTRY
  28874. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>First line of text in a node</CELLBODY
  28875. ></ENTRY
  28876. ></RBW-ROW
  28877. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Secondary Font</CELLBODY
  28878. ></ENTRY
  28879. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Second line of text in a node</CELLBODY
  28880. ></ENTRY
  28881. ></RBW-ROW
  28882. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Color | Foreground</CELLBODY
  28883. ></ENTRY
  28884. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text, node borders, and hierarchy arrows</CELLBODY
  28885. ></ENTRY
  28886. ></RBW-ROW
  28887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Color | Background</CELLBODY
  28888. ></ENTRY
  28889. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Window background</CELLBODY
  28890. ></ENTRY
  28891. ></RBW-ROW
  28892. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Color | Node</CELLBODY
  28893. ></ENTRY
  28894. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Node (when not selected)</CELLBODY
  28895. ></ENTRY
  28896. ></RBW-ROW
  28897. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Color | Merge Arrow</CELLBODY
  28898. ></ENTRY
  28899. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Merge arrow</CELLBODY
  28900. ></ENTRY
  28901. ></RBW-ROW
  28902. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Color | Primary Selection</CELLBODY
  28903. ></ENTRY
  28904. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>First selected node when one or two nodes are selected; all selected nodes when more than two nodes are selected</CELLBODY
  28905. ></ENTRY
  28906. ></RBW-ROW
  28907. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Color | Secondary Selection</CELLBODY
  28908. ></ENTRY
  28909. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Second selected node when two nodes are selected; Secondary Selection is useful when you are selecting the source and target versions for merge</CELLBODY
  28910. ></ENTRY
  28911. ></RBW-ROW
  28912. ></TBODY
  28913. ></TGROUP
  28914. ></RBW-TABLE
  28915. ></LABEL
  28916. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28917. >How to print the display</L.LABEL
  28918. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  28919. ></RBW-AUTOGEN
  28920. ></RBW-MARKER
  28921. ><RBW-PARABODY>To print the display area of the Version Browser, select File | Print View.</RBW-PARABODY
  28922. ></P.PROCEDURE
  28923. ></LABEL
  28924. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28925. >Version menu commands</L.LABEL
  28926. ><B.BODY>Most of the commands on the Version menu in the Version Browser are also in the Version menu in the Browser. For descriptions of these commands, see <RBW-XREF REFID="38448" TYPE="XREF-TEXTCOPY">Working With Versions and Configurations</RBW-XREF
  28927. >.</B.BODY
  28928. ></LABEL
  28929. ></SECTION
  28930. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="38448"></RBW-ANCHOR
  28931. >Working With Versions and Configurations</S.SECTION.HEAD
  28932. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  28933. ><RBW-ANCHOR ID="11036"></RBW-ANCHOR
  28934. >Version commands</L.LABEL
  28935. ><B.BODY>Most of the commands for working with object versions are on the Version menu of both the Version Browser and the Browser. The following table provides brief descriptions of each command. <RBW-IDXTERM TERM1="configuration" TERM2="commands, list of"></RBW-IDXTERM
  28936. ><RBW-IDXTERM TERM1="version" TERM2="commands, list of"></RBW-IDXTERM
  28937. ></B.BODY
  28938. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="81p"><COLSPEC COLNAME="3" COLWIDTH="81p"><COLSPEC COLNAME="4" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  28939. ></ENTRY
  28940. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>In Version Browser</CELLHEADING
  28941. ></ENTRY
  28942. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>In Browser</CELLHEADING
  28943. ></ENTRY
  28944. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  28945. ></ENTRY
  28946. ></RBW-ROW
  28947. ></THEAD
  28948. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>New</CELLBODY
  28949. ></ENTRY
  28950. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  28951. ></ENTRY
  28952. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  28953. ></ENTRY
  28954. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>The first version of an object is created when you create the object. Use New to create subsequent versions of an object.</CELLBODY
  28955. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  28956. > <RBW-XREF REFID="17270" TYPE="XREF-TEXTCOPY">Creating Versions</RBW-XREF
  28957. ></CELLBODY
  28958. ></ENTRY
  28959. ></RBW-ROW
  28960. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delete</CELLBODY
  28961. ></ENTRY
  28962. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  28963. ></ENTRY
  28964. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  28965. ></ENTRY
  28966. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deletes leaf object versions, which are object versions that have not been used to create new object versions.</CELLBODY
  28967. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  28968. > <RBW-XREF REFID="23201" TYPE="XREF-TEXTCOPY">Deleting Versions</RBW-XREF
  28969. ></CELLBODY
  28970. ></ENTRY
  28971. ></RBW-ROW
  28972. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Freeze</CELLBODY
  28973. ></ENTRY
  28974. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  28975. ></ENTRY
  28976. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  28977. ></ENTRY
  28978. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Changes the status of an object version from working to frozen. A frozen object version cannot be edited.</CELLBODY
  28979. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  28980. > <RBW-XREF REFID="34174" TYPE="XREF-TEXTCOPY">Freezing Versions</RBW-XREF
  28981. ></CELLBODY
  28982. ></ENTRY
  28983. ></RBW-ROW
  28984. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Unfreeze</CELLBODY
  28985. ></ENTRY
  28986. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  28987. ></ENTRY
  28988. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  28989. ></ENTRY
  28990. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Changes the status of an object version from frozen to working. A working object version can be edited.</CELLBODY
  28991. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See</CX5FX5FBULLET.EMPHASIS
  28992. >:<RBW-XREF REFID="26343" TYPE="XREF-TEXTCOPY">Unfreezing Versions</RBW-XREF
  28993. ></CELLBODY
  28994. ></ENTRY
  28995. ></RBW-ROW
  28996. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Select | New</CELLBODY
  28997. ></ENTRY
  28998. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  28999. ></ENTRY
  29000. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29001. ></ENTRY
  29002. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Adds to a configuration a version of an object that is not yet in the configuration.</CELLBODY
  29003. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  29004. > <RBW-XREF REFID="29758" TYPE="XREF-TEXTCOPY">Selecting Versions</RBW-XREF
  29005. ></CELLBODY
  29006. ></ENTRY
  29007. ></RBW-ROW
  29008. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Select | Selected</CELLBODY
  29009. ></ENTRY
  29010. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29011. ></ENTRY
  29012. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29013. ></ENTRY
  29014. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Adds to a configuration a different version of an object that is already in the configuration.</CELLBODY
  29015. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  29016. > <RBW-XREF REFID="29758" TYPE="XREF-TEXTCOPY">Selecting Versions</RBW-XREF
  29017. ></CELLBODY
  29018. ></ENTRY
  29019. ></RBW-ROW
  29020. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deselect</CELLBODY
  29021. ></ENTRY
  29022. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29023. ></ENTRY
  29024. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29025. ></ENTRY
  29026. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Removes an object version from a configuration.</CELLBODY
  29027. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  29028. > <RBW-XREF REFID="36489" TYPE="XREF-TEXTCOPY">Deselecting Versions</RBW-XREF
  29029. ></CELLBODY
  29030. ></ENTRY
  29031. ></RBW-ROW
  29032. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deactivate</CELLBODY
  29033. ></ENTRY
  29034. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29035. ></ENTRY
  29036. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29037. ></ENTRY
  29038. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Does either of the following:</CELLBODY
  29039. ><CELLBULLET><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  29040. >Changes the status of a configuration version from frozen to backGround. </CELLBULLET
  29041. ><CELLBULLET><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  29042. >Removes a corporate group from a system version, as described in <RBW-XREF REFID="11810" TYPE="XREF-TEXTCOPY">Chapter 4, Using Groups</RBW-XREF
  29043. >.</CELLBULLET
  29044. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  29045. > <RBW-XREF REFID="33346" TYPE="XREF-TEXTCOPY">Deactivating and Activating Configuration Versions</RBW-XREF
  29046. ></CELLBODY
  29047. ></ENTRY
  29048. ></RBW-ROW
  29049. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Activate</CELLBODY
  29050. ></ENTRY
  29051. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29052. ></ENTRY
  29053. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29054. ></ENTRY
  29055. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Does either of the following:</CELLBODY
  29056. ><CELLBULLET><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  29057. >Changes the status of a configuration version from backGround to frozen. </CELLBULLET
  29058. ><CELLBULLET><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  29059. >Can also add a corporate group to a system version, as described in <RBW-XREF REFID="11810" TYPE="XREF-TEXTCOPY">Chapter 4, Using Groups</RBW-XREF
  29060. >.</CELLBULLET
  29061. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  29062. > <RBW-XREF REFID="33346" TYPE="XREF-TEXTCOPY">Deactivating and Activating Configuration Versions</RBW-XREF
  29063. ></CELLBODY
  29064. ></ENTRY
  29065. ></RBW-ROW
  29066. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File | Chang e |  Link Status</CELLBODY
  29067. ></ENTRY
  29068. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29069. ></ENTRY
  29070. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29071. ></ENTRY
  29072. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Changes the status of links between parent object versions and child object versions. (<CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  29073. > This command is on the File menu, not the Version menu.)</CELLBODY
  29074. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  29075. > <RBW-XREF REFID="19213" TYPE="XREF-TEXTCOPY">Changing Link Status</RBW-XREF
  29076. ></CELLBODY
  29077. ></ENTRY
  29078. ></RBW-ROW
  29079. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Compare</CELLBODY
  29080. ></ENTRY
  29081. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29082. ></ENTRY
  29083. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29084. ></ENTRY
  29085. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>For file versions, compares two versions of the same file, listing their differences.</CELLBODY
  29086. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  29087. > <RBW-XREF REFID="19986" TYPE="XREF-TEXTCOPY">Comparing File Versions</RBW-XREF
  29088. ></CELLBODY
  29089. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  29090. > For configuration, phase, or system versions, merges two versions, as described in <RBW-XREF REFID="14035" TYPE="XREF-TEXTCOPY">Chapter 2, Parallel Development</RBW-XREF
  29091. >.</CELLBODY
  29092. ></ENTRY
  29093. ></RBW-ROW
  29094. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Copy</CELLBODY
  29095. ></ENTRY
  29096. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29097. ></ENTRY
  29098. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29099. ></ENTRY
  29100. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Copies the contents of another object version into the current object version.</CELLBODY
  29101. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  29102. > <RBW-XREF REFID="26571" TYPE="XREF-TEXTCOPY">Copying Versions</RBW-XREF
  29103. ></CELLBODY
  29104. ></ENTRY
  29105. ></RBW-ROW
  29106. ></TBODY
  29107. ></TGROUP
  29108. ><RBW-ICONIZE></RBW-TABLE
  29109. ></LABEL
  29110. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29111. >Parent&truehy;child relationships</L.LABEL
  29112. ><B.BODY><RBW-IDXTERM TERM1="object" TERM2="parent-child relationships"></RBW-IDXTERM
  29113. >In most cases, applying a version&truehy;related command to a parent object also effects its child objects. For example, freezing a phase version also freezes its system versions. The following table shows the parent&truehy;child relationships between object versions:</B.BODY
  29114. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Parent</CELLHEADING
  29115. ></ENTRY
  29116. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Child</CELLHEADING
  29117. ></ENTRY
  29118. ></RBW-ROW
  29119. ></THEAD
  29120. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration version</CELLBODY
  29121. ></ENTRY
  29122. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase versions</CELLBODY
  29123. ></ENTRY
  29124. ></RBW-ROW
  29125. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase version</CELLBODY
  29126. ></ENTRY
  29127. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System versions</CELLBODY
  29128. ><CELLBODY>Document versions</CELLBODY
  29129. ></ENTRY
  29130. ></RBW-ROW
  29131. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System version</CELLBODY
  29132. ></ENTRY
  29133. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System file versions, such as diagram file versions and CDM versions</CELLBODY
  29134. ></ENTRY
  29135. ></RBW-ROW
  29136. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Document version</CELLBODY
  29137. ></ENTRY
  29138. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Document file versions, such as Document Structure Matrix versions and File Section versions</CELLBODY
  29139. ></ENTRY
  29140. ></RBW-ROW
  29141. ></TBODY
  29142. ></TGROUP
  29143. ></RBW-TABLE
  29144. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  29145. ></RBW-AUTOGEN
  29146. >Working with many object versions at once can cause system resource problems. If you are applying a version&truehy;related command (see <RBW-XREF REFID="11036" TYPE="XREF-TEXTCOPY">Version commands</RBW-XREF
  29147. >) to an object version that has more than 50 child object versions, perform the action on the child objects first, then on the parent object.</W.WARNING
  29148. ></LABEL
  29149. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29150. >Merge commands</L.LABEL
  29151. ><B.BODY>The following commands, which also appear on the Version menu, are used only for merge. They are described in <RBW-XREF REFID="14035" TYPE="XREF-TEXTCOPY">Chapter 2, Parallel Development</RBW-XREF
  29152. >.</B.BODY
  29153. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="81p"><COLSPEC COLNAME="3" COLWIDTH="81p"><COLSPEC COLNAME="4" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  29154. ></ENTRY
  29155. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>In Version Browser</CELLHEADING
  29156. ></ENTRY
  29157. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>In Browser</CELLHEADING
  29158. ></ENTRY
  29159. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  29160. ></ENTRY
  29161. ></RBW-ROW
  29162. ></THEAD
  29163. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Merge</CELLBODY
  29164. ></ENTRY
  29165. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29166. ></ENTRY
  29167. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29168. ></ENTRY
  29169. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Merges two configurations.</CELLBODY
  29170. ></ENTRY
  29171. ></RBW-ROW
  29172. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Compare</CELLBODY
  29173. ></ENTRY
  29174. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29175. ></ENTRY
  29176. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29177. ></ENTRY
  29178. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>For configuration, phase, or system versions, merges two versions. </CELLBODY
  29179. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  29180. > For file versions, compares two versions of the same file, as described in <RBW-XREF REFID="19986" TYPE="XREF-TEXTCOPY">Comparing File Versions</RBW-XREF
  29181. >.</CELLBODY
  29182. ></ENTRY
  29183. ></RBW-ROW
  29184. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Merge Link</CELLBODY
  29185. ></ENTRY
  29186. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29187. ></ENTRY
  29188. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29189. ></ENTRY
  29190. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Creates a Merge Link between two versions of the same object. </CELLBODY
  29191. ></ENTRY
  29192. ></RBW-ROW
  29193. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delete Merge Link</CELLBODY
  29194. ></ENTRY
  29195. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29196. ></ENTRY
  29197. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29198. ></ENTRY
  29199. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deletes the Merge Link between two versions. </CELLBODY
  29200. ></ENTRY
  29201. ></RBW-ROW
  29202. ></TBODY
  29203. ></TGROUP
  29204. ><RBW-ICONIZE></RBW-TABLE
  29205. ></LABEL
  29206. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29207. >Document commands</L.LABEL
  29208. ><B.BODY>The following commands, which also appear on the Version menu, are available only at the Document level. They are described in <CX5FX5FTITLE>ObjectTeam Document Generation Guide</CX5FX5FTITLE
  29209. ><CX5FX5FTITLE></CX5FX5FTITLE
  29210. >.</B.BODY
  29211. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="81p"><COLSPEC COLNAME="3" COLWIDTH="81p"><COLSPEC COLNAME="4" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  29212. ></ENTRY
  29213. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>In Version Browser</CELLHEADING
  29214. ></ENTRY
  29215. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>In Browser</CELLHEADING
  29216. ></ENTRY
  29217. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  29218. ></ENTRY
  29219. ></RBW-ROW
  29220. ></THEAD
  29221. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make Fixed</CELLBODY
  29222. ><CELLBODY>Select Fixed</CELLBODY
  29223. ><CELLBODY>Make Selected</CELLBODY
  29224. ><CELLBODY>Make Snapshot</CELLBODY
  29225. ><CELLBODY>Make Current<RBW-IDXTERM TERM1="Make Fixed (Version menu)"></RBW-IDXTERM
  29226. ><RBW-IDXTERM TERM1="Select Fixed (Version menu)"></RBW-IDXTERM
  29227. ><RBW-IDXTERM TERM1="Make Selected (Version menu)"></RBW-IDXTERM
  29228. ><RBW-IDXTERM TERM1="Make Snapshot (Version menu)"></RBW-IDXTERM
  29229. ><RBW-IDXTERM TERM1="Make Current (Version menu)"></RBW-IDXTERM
  29230. ></CELLBODY
  29231. ></ENTRY
  29232. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29233. ></ENTRY
  29234. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29235. ></ENTRY
  29236. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Control the status of links in the file and property sections. </CELLBODY
  29237. ></ENTRY
  29238. ></RBW-ROW
  29239. ></TBODY
  29240. ></TGROUP
  29241. ><RBW-ICONIZE></RBW-TABLE
  29242. ></LABEL
  29243. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="creating" TERM2="versions of Browser objects"></RBW-IDXTERM
  29244. ><RBW-ANCHOR ID="17270"></RBW-ANCHOR
  29245. >Creating Versions</SS.SUBSEC.HEAD
  29246. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29247. >Introduction</L.LABEL
  29248. ><B.BODY>You can make a new version of any object listed in <RBW-XREF REFID="35287" TYPE="XREF-TEXTCOPY">Objects that have versions</RBW-XREF
  29249. >.</B.BODY
  29250. ></LABEL
  29251. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29252. >Ways to create versions</L.LABEL
  29253. ><B.BODY>When you create an object for the first time, you create a version of it. The <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  29254. ><CX5FX5FTITLE></CX5FX5FTITLE
  29255. > describes how to create each type of object.</B.BODY
  29256. ><B.BODY>To create subsequent versions of an object, use Version | New, as described in this section.</B.BODY
  29257. ></LABEL
  29258. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29259. >Prerequisites</L.LABEL
  29260. ><B.BODY>If you are creating a new version of an existing object:</B.BODY
  29261. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29262. ></RBW-AUTOGEN
  29263. ></RBW-MARKER
  29264. ><RBW-PARABODY>The existing object version must be frozen.</RBW-PARABODY
  29265. ></LB.LIST.BULLET
  29266. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  29267. ></RBW-AUTOGEN
  29268. >You can create a new version from the working version of an object. However, ObjectTeam first freezes the working version, and then creates the new version from the frozen version.</N2.NOTE.2
  29269. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29270. ></RBW-AUTOGEN
  29271. ></RBW-MARKER
  29272. ><RBW-PARABODY>The parent object version, if any, must be working. </RBW-PARABODY
  29273. ></LB.LIST.BULLET
  29274. ><LT.LIST.TEXT>For example, if a phase version is frozen, you cannot create a new version of a system in that phase. You must create a new phase version (or unfreeze the phase version): you can then create a new version of a system in that working phase version.</LT.LIST.TEXT
  29275. ></LABEL
  29276. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29277. >Results</L.LABEL
  29278. ><B.BODY>When you create a new version of an existing object:</B.BODY
  29279. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29280. ></RBW-AUTOGEN
  29281. ></RBW-MARKER
  29282. ><RBW-PARABODY>The new object version has a status of working and is identical to the frozen version used to create it. <RBW-IDXTERM TERM1="working version" TERM2="creating with New"></RBW-IDXTERM
  29283. ></RBW-PARABODY
  29284. ></LB.LIST.BULLET
  29285. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29286. ></RBW-AUTOGEN
  29287. ></RBW-MARKER
  29288. ><RBW-PARABODY>The frozen object version is removed from your configuration version. If it is not used in any other configuration version, it is removed from the repository and given the status backGround.<RBW-IDXTERM TERM1="frozen version" TERM2="creating with New"></RBW-IDXTERM
  29289. ><RBW-IDXTERM TERM1="backGround version" TERM2="creating with New"></RBW-IDXTERM
  29290. ></RBW-PARABODY
  29291. ></LB.LIST.BULLET
  29292. ></LABEL
  29293. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29294. >Effect on parent and child versions</L.LABEL
  29295. ><B.BODY>Creating a new version of an object affects its parent and child versions as follows:</B.BODY
  29296. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29297. ></RBW-AUTOGEN
  29298. ></RBW-MARKER
  29299. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on parent.</CX5FX5FBULLET.EMPHASIS
  29300. > If the parent object version has a dynamicFrozen link to the child object, the link is updated. (See <RBW-XREF REFID="19213" TYPE="XREF-TEXTCOPY">Changing Link Status</RBW-XREF
  29301. >.)<RBW-IDXTERM TERM1="dynamicFrozen link" TERM2="updated by New"></RBW-IDXTERM
  29302. ></RBW-PARABODY
  29303. ></LB.LIST.BULLET
  29304. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29305. ></RBW-AUTOGEN
  29306. ></RBW-MARKER
  29307. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on child.</CX5FX5FBULLET.EMPHASIS
  29308. > Creating a new version of a parent object has no effect on the child object versions. The frozen and new versions of the parent object both point to the same frozen versions of the child objects.</RBW-PARABODY
  29309. ></LB.LIST.BULLET
  29310. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  29311. ></RBW-AUTOGEN
  29312. >If you create a new parent object version based on a working version, ObjectTeam freezes the parent object version, which also freezes its child object versions.</N2.NOTE.2
  29313. ></LABEL
  29314. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29315. >To create a new version</L.LABEL
  29316. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29317. ></RBW-AUTOGEN
  29318. ></RBW-MARKER
  29319. ><RBW-PARABODY>To create a new version of an existing object:</RBW-PARABODY
  29320. ></P.PROCEDURE
  29321. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29322. ></RBW-AUTOGEN
  29323. ></RBW-MARKER
  29324. ><RBW-PARABODY>In the Information area, select the frozen (or working) version of the object.</RBW-PARABODY
  29325. ></LN.LIST.NUM
  29326. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29327. ></RBW-AUTOGEN
  29328. ></RBW-MARKER
  29329. ><RBW-PARABODY>Select Version | New.</RBW-PARABODY
  29330. ></LN.LIST.NUM
  29331. ><LR.LIST.RESULT>ObjectTeam creates a new version of the object, making it the working version of the object. The working version of the object is added to your configuration. The frozen version is removed from your configuration.</LR.LIST.RESULT
  29332. ><W2.WARNING.2><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  29333. ></RBW-AUTOGEN
  29334. >If you create an object version in your configuration and the version number is not what you expect, there may be an existing object with the same name that is deselected. Use the Version Browser to examine the version hierarchy. For more details, see <RBW-XREF REFID="34596" TYPE="XREF-TEXTCOPY">Version Browser</RBW-XREF
  29335. >.</W2.WARNING.2
  29336. ></LABEL
  29337. ></SUBSECTION
  29338. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="version" TERM2="deleting"></RBW-IDXTERM
  29339. ><RBW-ANCHOR ID="23201"></RBW-ANCHOR
  29340. >Deleting Versions</SS.SUBSEC.HEAD
  29341. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29342. >Introduction</L.LABEL
  29343. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="deleting"></RBW-IDXTERM
  29344. ><RBW-IDXTERM TERM1="deleting" TERM2="version"></RBW-IDXTERM
  29345. >Deleting an object version removes it from the repository and the file system.</B.BODY
  29346. ></LABEL
  29347. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29348. >What versions can be be deleted</L.LABEL
  29349. ><B.BODY>Only object versions that meet the following criteria can be deleted:</B.BODY
  29350. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29351. ></RBW-AUTOGEN
  29352. ></RBW-MARKER
  29353. ><RBW-PARABODY>The object version is not referenced by another configuration.</RBW-PARABODY
  29354. ></LB.LIST.BULLET
  29355. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29356. ></RBW-AUTOGEN
  29357. ></RBW-MARKER
  29358. ><RBW-PARABODY>It is a <CX5FX5FEMPHASIS>leaf object version</CX5FX5FEMPHASIS
  29359. >, one that has not been used to create other object versions.</RBW-PARABODY
  29360. ></LB.LIST.BULLET
  29361. ></LABEL
  29362. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29363. >Two ways to delete versions</L.LABEL
  29364. ><B.BODY>You can delete object versions using either File | Delete or Version | Delete.</B.BODY
  29365. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29366. ></RBW-AUTOGEN
  29367. ></RBW-MARKER
  29368. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>File | Delete</CX5FX5FBULLET.EMPHASIS
  29369. > deletes the selected object version. If you attempt to delete a non&truehy;leaf object version, ObjectTeam displays a message.<RBW-IDXTERM TERM1="Delete (File menu)"></RBW-IDXTERM
  29370. ></RBW-PARABODY
  29371. ></LB.LIST.BULLET
  29372. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29373. ></RBW-AUTOGEN
  29374. ></RBW-MARKER
  29375. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Version | Delete</CX5FX5FBULLET.EMPHASIS
  29376. > deletes the selected object version, if it is the only leaf object version. If it is not, ObjectTeam displays a dialog box that lists all leaf object versions of the selected object. You can select and delete one or more of the leaf object versions.<RBW-IDXTERM TERM1="Delete (Version menu)"></RBW-IDXTERM
  29377. ></RBW-PARABODY
  29378. ></LB.LIST.BULLET
  29379. ></LABEL
  29380. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29381. >Effect on parent and child versions</L.LABEL
  29382. ><B.BODY>Deleting an object version affects its parent and child versions as follows:</B.BODY
  29383. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29384. ></RBW-AUTOGEN
  29385. ></RBW-MARKER
  29386. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on parent.</CX5FX5FBULLET.EMPHASIS
  29387. > If you delete a child object version, its parent object version no longer has a link to the child object.</RBW-PARABODY
  29388. ></LB.LIST.BULLET
  29389. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29390. ></RBW-AUTOGEN
  29391. ></RBW-MARKER
  29392. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on child.</CX5FX5FBULLET.EMPHASIS
  29393. > If you delete a parent object version, the working child object versions are also deleted. Frozen child object versions are not affected.</RBW-PARABODY
  29394. ></LB.LIST.BULLET
  29395. ></LABEL
  29396. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29397. >How to use File | Delete</L.LABEL
  29398. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29399. ></RBW-AUTOGEN
  29400. ></RBW-MARKER
  29401. ><RBW-PARABODY>To delete one or more object versions using File | Delete:</RBW-PARABODY
  29402. ></P.PROCEDURE
  29403. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29404. ></RBW-AUTOGEN
  29405. ></RBW-MARKER
  29406. ><RBW-PARABODY>In the information area, select the object versions that you want to delete.</RBW-PARABODY
  29407. ></LN.LIST.NUM
  29408. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29409. ></RBW-AUTOGEN
  29410. ></RBW-MARKER
  29411. ><RBW-PARABODY>Select File | Delete.</RBW-PARABODY
  29412. ></LN.LIST.NUM
  29413. ><LR.LIST.RESULT>ObjectTeam deletes the selected object versions.</LR.LIST.RESULT
  29414. ></LABEL
  29415. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29416. >How to use Version | Delete</L.LABEL
  29417. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29418. ></RBW-AUTOGEN
  29419. ></RBW-MARKER
  29420. ><RBW-PARABODY>To delete one or more object versions using Version | Delete:</RBW-PARABODY
  29421. ></P.PROCEDURE
  29422. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29423. ></RBW-AUTOGEN
  29424. ></RBW-MARKER
  29425. ><RBW-PARABODY>In the information area, select the object version that you want to delete. You can select only one object version.</RBW-PARABODY
  29426. ></LN.LIST.NUM
  29427. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29428. ></RBW-AUTOGEN
  29429. ></RBW-MARKER
  29430. ><RBW-PARABODY>Select Version | Delete.</RBW-PARABODY
  29431. ></LN.LIST.NUM
  29432. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  29433. ></RBW-MARKER
  29434. ><RBW-PARABODY>If the selected object version is the only leaf object version, ObjectTeam deletes it. </RBW-PARABODY
  29435. ></LB2.LIST.BULLET.2
  29436. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  29437. ></RBW-MARKER
  29438. ><RBW-PARABODY>If the selected object version is not the only leaf object version, ObjectTeam displays a dialog box, listing all the leaf object versions of the selected object.</RBW-PARABODY
  29439. ></LB2.LIST.BULLET.2
  29440. ><LT2.LIST.TEXT.2>Select the versions that you want to delete, and then click OK.</LT2.LIST.TEXT.2
  29441. ><LR2.LIST.RESULT.2>ObjectTeam deletes the selected object versions.</LR2.LIST.RESULT.2
  29442. ></LABEL
  29443. ></SUBSECTION
  29444. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="freezing" TERM2="versions"></RBW-IDXTERM
  29445. ><RBW-IDXTERM TERM1="version" TERM2="freezing"></RBW-IDXTERM
  29446. ><RBW-ANCHOR ID="34174"></RBW-ANCHOR
  29447. >Freezing Versions</SS.SUBSEC.HEAD
  29448. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29449. >Introduction</L.LABEL
  29450. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="freezing"></RBW-IDXTERM
  29451. ><RBW-IDXTERM TERM1="freezing" TERM2="versions"></RBW-IDXTERM
  29452. ><RBW-IDXTERM TERM1="Freeze (Version menu)"></RBW-IDXTERM
  29453. ><RBW-IDXTERM TERM1="frozen version" TERM2="creating with Freeze"></RBW-IDXTERM
  29454. ><RBW-IDXTERM TERM1="object" TERM2="freezing"></RBW-IDXTERM
  29455. >Freezing an object version changes its status from working to frozen. The frozen object version cannot be edited.</B.BODY
  29456. ><B.BODY>Typically, you freeze an object version to make it available to other users or so that you can return to it. For example, you are about to change the model, but you want to be able to return to the current version if the changes do not work.</B.BODY
  29457. ></LABEL
  29458. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29459. >Only working versions can be frozen </L.LABEL
  29460. ><B.BODY>Only object versions with a status of working can be frozen; all other object versions are already frozen.</B.BODY
  29461. ></LABEL
  29462. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29463. >Effect on parent and child versions</L.LABEL
  29464. ><B.BODY>Freezing an object version affects its parent and child versions as follows:</B.BODY
  29465. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29466. ></RBW-AUTOGEN
  29467. ></RBW-MARKER
  29468. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on parent.</CX5FX5FBULLET.EMPHASIS
  29469. > If the parent object version has a dynamicFrozen link to the child object, the link is updated. (See <RBW-XREF REFID="19213" TYPE="XREF-TEXTCOPY">Changing Link Status</RBW-XREF
  29470. >.)<RBW-IDXTERM TERM1="dynamicFrozen link" TERM2="updated by Freeze"></RBW-IDXTERM
  29471. ></RBW-PARABODY
  29472. ></LB.LIST.BULLET
  29473. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29474. ></RBW-AUTOGEN
  29475. ></RBW-MARKER
  29476. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on child.</CX5FX5FBULLET.EMPHASIS
  29477. > Working child object versions are also frozen. Frozen child object versions are not affected.</RBW-PARABODY
  29478. ></LB.LIST.BULLET
  29479. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29480. >Links to child object versions</SL.SUBLABEL
  29481. ><B.BODY>Freezing a parent object version also freezes the links to its child objects. As a result, a frozen parent version always references the same child object versions, regardless of the status of the links. (Link status is described in <RBW-XREF REFID="19213" TYPE="XREF-TEXTCOPY">Changing Link Status</RBW-XREF
  29482. >.)</B.BODY
  29483. ></LABEL
  29484. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29485. >Notes about diagram files and groups</L.LABEL
  29486. ><B.BODY>Following are a few notes on freezing diagram files and groups:</B.BODY
  29487. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29488. ></RBW-AUTOGEN
  29489. ></RBW-MARKER
  29490. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Diagram files.</CX5FX5FBULLET.EMPHASIS
  29491. > When you freeze a diagram file, you freeze the file only. You do not freeze the items referenced in the file. For example, freezing a Class Diagram (CD) does not freeze the CDMs of the classes that appear in the CD.<RBW-IDXTERM TERM1="diagram" TERM2="freezing"></RBW-IDXTERM
  29492. ><RBW-IDXTERM TERM1="property" TERM2="freezing"></RBW-IDXTERM
  29493. ><RBW-IDXTERM TERM1="group" TERM2="freezing"></RBW-IDXTERM
  29494. ></RBW-PARABODY
  29495. ></LB.LIST.BULLET
  29496. ><LT.LIST.TEXT>If you want to freeze both the diagram file and the items that it references, use Groups and SavedGroups, as described in <RBW-XREF REFID="11810" TYPE="XREF-TEXTCOPY">Chapter 4, Using Groups</RBW-XREF
  29497. >.</LT.LIST.TEXT
  29498. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29499. ></RBW-AUTOGEN
  29500. ></RBW-MARKER
  29501. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Groups.</CX5FX5FBULLET.EMPHASIS
  29502. > When you freeze a group, you freeze the rules that define the contents of the group, not the files and items in it. See <RBW-XREF REFID="11810" TYPE="XREF-TEXTCOPY">Chapter 4, Using Groups</RBW-XREF
  29503. >, for more information.</RBW-PARABODY
  29504. ></LB.LIST.BULLET
  29505. ></LABEL
  29506. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29507. >How to freeze an object version</L.LABEL
  29508. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29509. ></RBW-AUTOGEN
  29510. ></RBW-MARKER
  29511. ><RBW-PARABODY>To freeze an object version:</RBW-PARABODY
  29512. ></P.PROCEDURE
  29513. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29514. ></RBW-AUTOGEN
  29515. ></RBW-MARKER
  29516. ><RBW-PARABODY>In the information area, select one or more working object versions.</RBW-PARABODY
  29517. ></LN.LIST.NUM
  29518. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29519. ></RBW-AUTOGEN
  29520. ></RBW-MARKER
  29521. ><RBW-PARABODY>Select Version | Freeze.</RBW-PARABODY
  29522. ></LN.LIST.NUM
  29523. ><LR.LIST.RESULT>The Freeze Version dialog box appears.</LR.LIST.RESULT
  29524. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  29525. ></RBW-AUTOGEN
  29526. ></RBW-MARKER
  29527. ><RBW-PARABODY>Enter a brief comment that describes the object version, and then click OK.</RBW-PARABODY
  29528. ></LN.LIST.NUM
  29529. ><LT.LIST.TEXT>The comment is stored with the frozen version and displayed when ObjectTeam lists the object versions. Careful use of comments can help you identify the object version that you want to use.</LT.LIST.TEXT
  29530. ><LR.LIST.RESULT>ObjectTeam freezes the object version.</LR.LIST.RESULT
  29531. ></LABEL
  29532. ></SUBSECTION
  29533. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="version" TERM2="unfreezing"></RBW-IDXTERM
  29534. ><RBW-ANCHOR ID="26343"></RBW-ANCHOR
  29535. >Unfreezing Versions</SS.SUBSEC.HEAD
  29536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29537. >Introduction</L.LABEL
  29538. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="unfreezing"></RBW-IDXTERM
  29539. ><RBW-IDXTERM TERM1="Unfreeze (Version menu)"></RBW-IDXTERM
  29540. ><RBW-IDXTERM TERM1="frozen version" TERM2="unfreezing"></RBW-IDXTERM
  29541. ><RBW-IDXTERM TERM1="object" TERM2="unfreezing"></RBW-IDXTERM
  29542. ><RBW-IDXTERM TERM1="working version" TERM2="creating with Unfreeze"></RBW-IDXTERM
  29543. >Unfreezing an object version changes its status from frozen to working. The working object version can be edited.</B.BODY
  29544. ></LABEL
  29545. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29546. >What versions can be unfrozen</L.LABEL
  29547. ><B.BODY>Only object versions that meet the following criteria can be unfrozen:</B.BODY
  29548. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29549. ></RBW-AUTOGEN
  29550. ></RBW-MARKER
  29551. ><RBW-PARABODY>The object version must have a status of frozen.</RBW-PARABODY
  29552. ></LB.LIST.BULLET
  29553. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29554. ></RBW-AUTOGEN
  29555. ></RBW-MARKER
  29556. ><RBW-PARABODY>The parent object version, if any, must have a status of working.</RBW-PARABODY
  29557. ></LB.LIST.BULLET
  29558. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29559. ></RBW-AUTOGEN
  29560. ></RBW-MARKER
  29561. ><RBW-PARABODY>The object version cannot be referenced in any other configuration.</RBW-PARABODY
  29562. ></LB.LIST.BULLET
  29563. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29564. ></RBW-AUTOGEN
  29565. ></RBW-MARKER
  29566. ><RBW-PARABODY>The object version must be a leaf object version, which is one that has not been used to create other object versions.<RBW-IDXTERM TERM1="leaf object version" TERM2="unfreezing"></RBW-IDXTERM
  29567. ></RBW-PARABODY
  29568. ></LB.LIST.BULLET
  29569. ></LABEL
  29570. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29571. >Effect on parent and child versions</L.LABEL
  29572. ><B.BODY>Unfreezing an object version has no effect on either its parent or child versions.</B.BODY
  29573. ></LABEL
  29574. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29575. >How to unfreeze an object version</L.LABEL
  29576. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29577. ></RBW-AUTOGEN
  29578. ></RBW-MARKER
  29579. ><RBW-PARABODY>To unfreeze an object version:</RBW-PARABODY
  29580. ></P.PROCEDURE
  29581. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29582. ></RBW-AUTOGEN
  29583. ></RBW-MARKER
  29584. ><RBW-PARABODY>In the information area, select one or more frozen object versions.</RBW-PARABODY
  29585. ></LN.LIST.NUM
  29586. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29587. ></RBW-AUTOGEN
  29588. ></RBW-MARKER
  29589. ><RBW-PARABODY>Select Version | Unfreeze.</RBW-PARABODY
  29590. ></LN.LIST.NUM
  29591. ><LR.LIST.RESULT>ObjectTeam unfreezes the selected object versions.</LR.LIST.RESULT
  29592. ></LABEL
  29593. ></SUBSECTION
  29594. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="selecting" TERM2="versions"></RBW-IDXTERM
  29595. ><RBW-IDXTERM TERM1="version" TERM2="selecting"></RBW-IDXTERM
  29596. ><RBW-ANCHOR ID="29758"></RBW-ANCHOR
  29597. >Selecting Versions</SS.SUBSEC.HEAD
  29598. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29599. >Introduction</L.LABEL
  29600. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="selecting"></RBW-IDXTERM
  29601. ><RBW-IDXTERM TERM1="selecting" TERM2="versions"></RBW-IDXTERM
  29602. ><RBW-IDXTERM TERM1="frozen version" TERM2="selecting"></RBW-IDXTERM
  29603. ><RBW-IDXTERM TERM1="backGround version" TERM2="selecting"></RBW-IDXTERM
  29604. ><RBW-IDXTERM TERM1="configuration" TERM2="adding version to"></RBW-IDXTERM
  29605. >Selecting an object version adds it to your configuration.</B.BODY
  29606. ></LABEL
  29607. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29608. >Only frozen versions can be selected</L.LABEL
  29609. ><B.BODY>Only frozen or backGround object versions can be selected.</B.BODY
  29610. ></LABEL
  29611. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29612. >Purpose</L.LABEL
  29613. ><B.BODY>You build your development environment by adding object versions to your configuration. You can add object versions that you are working on or versions that other project members are working on.</B.BODY
  29614. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29615. ></RBW-AUTOGEN
  29616. ></RBW-MARKER
  29617. ><RBW-PARABODY>Typically, if you are working on an object, you create the object and then create new versions of it as necessary. In this case, selecting an version is useful when you want to use a previous version of the object.</RBW-PARABODY
  29618. ></LB.LIST.BULLET
  29619. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29620. ></RBW-AUTOGEN
  29621. ></RBW-MARKER
  29622. ><RBW-PARABODY>You can also select a version of an object that someone else is working on. You do not interfere with the work of the other person because you can add only frozen versions of the objects to your configuration. The working version of the object is in the configuration of the person working on it.</RBW-PARABODY
  29623. ></LB.LIST.BULLET
  29624. ></LABEL
  29625. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29626. >Effect on parent and child versions</L.LABEL
  29627. ><B.BODY>Selecting an object version affects its parent and child versions as follows:</B.BODY
  29628. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29629. ></RBW-AUTOGEN
  29630. ></RBW-MARKER
  29631. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on parent.</CX5FX5FBULLET.EMPHASIS
  29632. > A link to the selected object version is added to the parent object version.</RBW-PARABODY
  29633. ></LB.LIST.BULLET
  29634. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29635. ></RBW-AUTOGEN
  29636. ></RBW-MARKER
  29637. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on child.</CX5FX5FBULLET.EMPHASIS
  29638. > Child object versions are also added to the configuration version.</RBW-PARABODY
  29639. ></LB.LIST.BULLET
  29640. ></LABEL
  29641. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29642. >Ways to select objects</L.LABEL
  29643. ><B.BODY><RBW-IDXTERM TERM1="Select (Version menu)"></RBW-IDXTERM
  29644. >Which command you use to select an object version depends on whether a version of that object is already in your configuration version:</B.BODY
  29645. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29646. ></RBW-AUTOGEN
  29647. ></RBW-MARKER
  29648. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Choose a different version of an object.</CX5FX5FBULLET.EMPHASIS
  29649. > If the object is already in your configuration version, but you want to select a different version of the object, select the object version and then select Version | Select | Selected.</RBW-PARABODY
  29650. ></LB.LIST.BULLET
  29651. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29652. ></RBW-AUTOGEN
  29653. ></RBW-MARKER
  29654. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Choose a new object.</CX5FX5FBULLET.EMPHASIS
  29655. > If the object is not in your configuration version, select Version | Select | New.</RBW-PARABODY
  29656. ></LB.LIST.BULLET
  29657. ></LABEL
  29658. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29659. >How to select a different version </L.LABEL
  29660. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29661. ></RBW-AUTOGEN
  29662. ></RBW-MARKER
  29663. ><RBW-PARABODY>To select a different version of an object that is already in your configuration version:</RBW-PARABODY
  29664. ></P.PROCEDURE
  29665. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29666. ></RBW-AUTOGEN
  29667. ></RBW-MARKER
  29668. ><RBW-PARABODY>In the information area, select the object version.</RBW-PARABODY
  29669. ></LN.LIST.NUM
  29670. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29671. ></RBW-AUTOGEN
  29672. ></RBW-MARKER
  29673. ><RBW-PARABODY>Select Version | Select | Selected.</RBW-PARABODY
  29674. ></LN.LIST.NUM
  29675. ><LR.LIST.RESULT>A dialog box appears, displaying all other frozen versions of the object.</LR.LIST.RESULT
  29676. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  29677. ></RBW-AUTOGEN
  29678. ></RBW-MARKER
  29679. ><RBW-PARABODY>Select the object version that you want to use. Then click OK.</RBW-PARABODY
  29680. ></LN.LIST.NUM
  29681. ><LR.LIST.RESULT>ObjectTeam adds the object version you selected in the dialog box to your configuration version. It removes the object version selected in the information area from your configuration version; if that object version is not used in any other configuration it is removed from the repository and given the status backGround.</LR.LIST.RESULT
  29682. ></LABEL
  29683. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29684. >How to select a new object</L.LABEL
  29685. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29686. ></RBW-AUTOGEN
  29687. ></RBW-MARKER
  29688. ><RBW-PARABODY>To select an object version when the object is not yet in your configuration version:</RBW-PARABODY
  29689. ></P.PROCEDURE
  29690. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29691. ></RBW-AUTOGEN
  29692. ></RBW-MARKER
  29693. ><RBW-PARABODY>Move to the appropriate level; for example, to select a system version, move to the phase level.</RBW-PARABODY
  29694. ></LN.LIST.NUM
  29695. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29696. ></RBW-AUTOGEN
  29697. ></RBW-MARKER
  29698. ><RBW-PARABODY>Select Version | Select | New.</RBW-PARABODY
  29699. ></LN.LIST.NUM
  29700. ><LR.LIST.RESULT>A dialog box appears, displaying all available frozen object versions.</LR.LIST.RESULT
  29701. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  29702. ></RBW-AUTOGEN
  29703. ></RBW-MARKER
  29704. ><RBW-PARABODY>Select the object version that you want to use. Then click OK.</RBW-PARABODY
  29705. ></LN.LIST.NUM
  29706. ><LR.LIST.RESULT>ObjectTeam adds the selected object version to your configuration version.</LR.LIST.RESULT
  29707. ></LABEL
  29708. ></SUBSECTION
  29709. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36489"></RBW-ANCHOR
  29710. >Deselecting Versions</SS.SUBSEC.HEAD
  29711. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29712. >Introduction</L.LABEL
  29713. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="canceling"></RBW-IDXTERM
  29714. ><RBW-IDXTERM TERM1="canceling" TERM2="versions"></RBW-IDXTERM
  29715. ><RBW-IDXTERM TERM1="Deselect (Version menu)"></RBW-IDXTERM
  29716. ><RBW-IDXTERM TERM1="frozen version" TERM2="canceling"></RBW-IDXTERM
  29717. ><RBW-IDXTERM TERM1="configuration" TERM2="removing versions from"></RBW-IDXTERM
  29718. >Deselecting an object version removes it from your configuration. If it is not used in any other configuration, it is removed from the repository and given the status backGround.</B.BODY
  29719. ></LABEL
  29720. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29721. >Only frozen versions can be deselected</L.LABEL
  29722. ><B.BODY>Only frozen object versions can be deselected.</B.BODY
  29723. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  29724. ></RBW-AUTOGEN
  29725. >You can deselect a working version. However, ObjectTeam first freezes the working version, and then deselects that frozen version.</N.NOTE
  29726. ></LABEL
  29727. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29728. >Effect on parent and child versions</L.LABEL
  29729. ><B.BODY>Selecting an object version effects its parent and child versions as follows:</B.BODY
  29730. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29731. ></RBW-AUTOGEN
  29732. ></RBW-MARKER
  29733. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on parent.</CX5FX5FBULLET.EMPHASIS
  29734. > If you deselect a child object version, its parent object version no longer has a link to the child object.</RBW-PARABODY
  29735. ></LB.LIST.BULLET
  29736. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29737. ></RBW-AUTOGEN
  29738. ></RBW-MARKER
  29739. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Effect on child.</CX5FX5FBULLET.EMPHASIS
  29740. > If you deselect a parent object version, the child object versions are also removed from the configuration version.</RBW-PARABODY
  29741. ></LB.LIST.BULLET
  29742. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  29743. ></RBW-AUTOGEN
  29744. >If you deselect a working object version, ObjectTeam freezes that object version, which also freezes its child object versions.</N2.NOTE.2
  29745. ></LABEL
  29746. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29747. >How to deselect an object version </L.LABEL
  29748. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29749. ></RBW-AUTOGEN
  29750. ></RBW-MARKER
  29751. ><RBW-PARABODY>To remove an object version from your configuration version:</RBW-PARABODY
  29752. ></P.PROCEDURE
  29753. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29754. ></RBW-AUTOGEN
  29755. ></RBW-MARKER
  29756. ><RBW-PARABODY>In the information area, select one or more object versions that you want to remove from your configuration version.</RBW-PARABODY
  29757. ></LN.LIST.NUM
  29758. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29759. ></RBW-AUTOGEN
  29760. ></RBW-MARKER
  29761. ><RBW-PARABODY>Select Version | Deselect.</RBW-PARABODY
  29762. ></LN.LIST.NUM
  29763. ><LR.LIST.RESULT>ObjectTeam removes the selected object version from your configuration version. If it is not used in any other configuration, it is removed from the repository and given the status backGround.</LR.LIST.RESULT
  29764. ></LABEL
  29765. ></SUBSECTION
  29766. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="removing" TERM2="object versions from Browser"></RBW-IDXTERM
  29767. ><RBW-IDXTERM TERM1="version" TERM2="removing from Browser"></RBW-IDXTERM
  29768. ><RBW-ANCHOR ID="33346"></RBW-ANCHOR
  29769. >Deactivating and Activating Configuration Versions</SS.SUBSEC.HEAD
  29770. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29771. >Deactivating a configuration version</L.LABEL
  29772. ><B.BODY><RBW-IDXTERM TERM1="configuration" TERM2="deactivating"></RBW-IDXTERM
  29773. ><RBW-IDXTERM TERM1="deselecting" TERM2="configurations"></RBW-IDXTERM
  29774. ><RBW-IDXTERM TERM1="Deactivate (Version menu)" TERM2="configuration"></RBW-IDXTERM
  29775. ><RBW-IDXTERM TERM1="backGround version" TERM2="creating with Deactivate"></RBW-IDXTERM
  29776. >Deactivating a configuration version changes its status from frozen to backGround. It also removes the configuration version from the repository and stores it in the file system. (Removing data from the repository can improve database performance.) The configuration version is still visible in the Browser.</B.BODY
  29777. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  29778. ></RBW-AUTOGEN
  29779. >Version | Deactivate is also used to remove Corporate Groups from a System version, as described in <RBW-XREF REFID="11810" TYPE="XREF-TEXTCOPY">Chapter 4, Using Groups</RBW-XREF
  29780. >.</N.NOTE
  29781. ></LABEL
  29782. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29783. >Activating a configuration version</L.LABEL
  29784. ><B.BODY><RBW-IDXTERM TERM1="configuration" TERM2="activating"></RBW-IDXTERM
  29785. ><RBW-IDXTERM TERM1="activating" TERM2="configuration"></RBW-IDXTERM
  29786. ><RBW-IDXTERM TERM1="Activate (Version menu)"></RBW-IDXTERM
  29787. ><RBW-IDXTERM TERM1="frozen version" TERM2="activating"></RBW-IDXTERM
  29788. ><RBW-IDXTERM TERM1="restoring" TERM2="backGround version"></RBW-IDXTERM
  29789. >Activating a configuration version changes its status from backGround to frozen, and moves the configuration version back into the repository.</B.BODY
  29790. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  29791. ></RBW-AUTOGEN
  29792. >Version | Activate is also used to add Corporate Groups to a System version, as described in <RBW-XREF REFID="11810" TYPE="XREF-TEXTCOPY">Chapter 4, Using Groups</RBW-XREF
  29793. >.</N.NOTE
  29794. ></LABEL
  29795. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29796. >Only for configuration versions</L.LABEL
  29797. ><B.BODY>Only configuration versions can be deactivated and activated.</B.BODY
  29798. ></LABEL
  29799. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29800. >Effect on child versions</L.LABEL
  29801. ><B.BODY>The parent object of a configuration version is the project. Deactivating or activating a configuration version has no effect on the project object.</B.BODY
  29802. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29803. ></RBW-AUTOGEN
  29804. ></RBW-MARKER
  29805. ><RBW-PARABODY>Deactivating a configuration version also deactivates all its child object versions, unless a child object version is used by another configuration, in which case it is not affected.</RBW-PARABODY
  29806. ></LB.LIST.BULLET
  29807. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29808. ></RBW-AUTOGEN
  29809. ></RBW-MARKER
  29810. ><RBW-PARABODY>Activating a configuration version also activates all its child object versions.</RBW-PARABODY
  29811. ></LB.LIST.BULLET
  29812. ></LABEL
  29813. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29814. >How to deactivate a configuration</L.LABEL
  29815. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29816. ></RBW-AUTOGEN
  29817. ></RBW-MARKER
  29818. ><RBW-PARABODY>To deactivate a configuration version:</RBW-PARABODY
  29819. ></P.PROCEDURE
  29820. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29821. ></RBW-AUTOGEN
  29822. ></RBW-MARKER
  29823. ><RBW-PARABODY>In the information area, select the frozen configuration version that you want to deactivate.</RBW-PARABODY
  29824. ></LN.LIST.NUM
  29825. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29826. ></RBW-AUTOGEN
  29827. ></RBW-MARKER
  29828. ><RBW-PARABODY>Select Version | Deactivate.</RBW-PARABODY
  29829. ></LN.LIST.NUM
  29830. ><LR.LIST.RESULT>ObjectTeam deactivates the configuration version.</LR.LIST.RESULT
  29831. ></LABEL
  29832. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29833. >How to activate a configuration</L.LABEL
  29834. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29835. ></RBW-AUTOGEN
  29836. ></RBW-MARKER
  29837. ><RBW-PARABODY>To activate a configuration version:</RBW-PARABODY
  29838. ></P.PROCEDURE
  29839. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29840. ></RBW-AUTOGEN
  29841. ></RBW-MARKER
  29842. ><RBW-PARABODY>In the Information area, select the backGround configuration version that you want to activate.</RBW-PARABODY
  29843. ></LN.LIST.NUM
  29844. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29845. ></RBW-AUTOGEN
  29846. ></RBW-MARKER
  29847. ><RBW-PARABODY>Select Version | Activate.</RBW-PARABODY
  29848. ></LN.LIST.NUM
  29849. ><LR.LIST.RESULT>ObjectTeam activates the configuration version.</LR.LIST.RESULT
  29850. ></LABEL
  29851. ></SUBSECTION
  29852. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19213"></RBW-ANCHOR
  29853. >Changing Link Status</SS.SUBSEC.HEAD
  29854. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29855. >Introduction</L.LABEL
  29856. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="link status"></RBW-IDXTERM
  29857. ><RBW-IDXTERM TERM1="configuration" TERM2="links to versions"></RBW-IDXTERM
  29858. >A parent object version does not contain its child object versions. Instead, the parent object version contains a list of links between the parent object version and the child object versions.</B.BODY
  29859. ></LABEL
  29860. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29861. >Purpose</L.LABEL
  29862. ><B.BODY><RBW-IDXTERM TERM1="link status"></RBW-IDXTERM
  29863. >An object version always has a link to its parent object, and you can always change the status of the link. However, link status is useful only when you are not the person creating new frozen versions of the object. The following scenario illustrates this situation.</B.BODY
  29864. ><B.BODY>You want to reference an object that a colleague is working on. You use Version | Select to add a frozen version of the object to your configuration version. Your colleague continues to work on it and creates a new frozen version. The link status of the object in your configuration determines whether your configuration version references that new frozen version of the object automatically.</B.BODY
  29865. ></LABEL
  29866. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29867. >Link status</L.LABEL
  29868. ><B.BODY>The status of each link allows you to choose the stability of the child object version:</B.BODY
  29869. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29870. ></RBW-AUTOGEN
  29871. ></RBW-MARKER
  29872. ><RBW-PARABODY>A fixed link (the default) points to a specific object version. If configurationA contains a fixed link to a frozen object version, and another configuration creates a new frozen version of the object, configurationA is not affected.<RBW-IDXTERM TERM1="fixed, link status"></RBW-IDXTERM
  29873. ></RBW-PARABODY
  29874. ></LB.LIST.BULLET
  29875. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29876. ></RBW-AUTOGEN
  29877. ></RBW-MARKER
  29878. ><RBW-PARABODY>A dynamicFrozen link points to the most recent object version. If configurationA contains a dynamicFrozen link to a frozen object version, and another configuration creates a new frozen version of the object, ObjectTeam updates the link in configurationA to point to the new frozen version of the object.<RBW-IDXTERM TERM1="dynamicFrozen link" TERM2="definition"></RBW-IDXTERM
  29879. ></RBW-PARABODY
  29880. ></LB.LIST.BULLET
  29881. ></LABEL
  29882. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29883. >Link status displayed in Details view</L.LABEL
  29884. ><B.BODY>When you are using Details view in the Browser, the status of an object’s link appears in the information area. (To display the Details view, select View | Details, if it is not already selected.)</B.BODY
  29885. ></LABEL
  29886. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29887. >How to change the status of a link</L.LABEL
  29888. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  29889. ></RBW-AUTOGEN
  29890. ></RBW-MARKER
  29891. ><RBW-PARABODY>To change the status of a link:</RBW-PARABODY
  29892. ></P.PROCEDURE
  29893. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  29894. ></RBW-AUTOGEN
  29895. ></RBW-MARKER
  29896. ><RBW-PARABODY>In the information area, select the child object version.</RBW-PARABODY
  29897. ></LN.LIST.NUM
  29898. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  29899. ></RBW-AUTOGEN
  29900. ></RBW-MARKER
  29901. ><RBW-PARABODY>Select File | Change | Link Status.</RBW-PARABODY
  29902. ></LN.LIST.NUM
  29903. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  29904. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  29905. ></RBW-AUTOGEN
  29906. ></RBW-MARKER
  29907. ><RBW-PARABODY>Select the link status that you want to use.</RBW-PARABODY
  29908. ></LN.LIST.NUM
  29909. ></LABEL
  29910. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29911. >Example</L.LABEL
  29912. ><BI.BODY.INTRO>In the following illustration, Pat’s configuration and Lou’s configuration both point to the same frozen version of Object Design phase.</BI.BODY.INTRO
  29913. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00264.tif" origseq="59" origtype="I" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  29914. ></FAR.FIGURE.ANCHOR.RIGHT
  29915. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29916. >Pat creates a new version</SL.SUBLABEL
  29917. ><B.BODY>Pat wants to work on the core system. He creates a new version of the object design phase and then a new version of the core system. Lou’s configuration is not affected.</B.BODY
  29918. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00265.tif" origseq="28" origtype="I" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  29919. ></FAR.FIGURE.ANCHOR.RIGHT
  29920. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29921. >Pat freezes the new version</SL.SUBLABEL
  29922. ><B.BODY>Pat finishes his work on the core system and freezes the object design phase, which also freezes the core system. What happens to Lou’s configuration depends on the link status for the object design phase in Lou’s configuration.</B.BODY
  29923. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29924. ></RBW-AUTOGEN
  29925. ></RBW-MARKER
  29926. ><RBW-PARABODY>If the link status is fixed, Lou’s configuration is not affected.</RBW-PARABODY
  29927. ></LB.LIST.BULLET
  29928. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29929. ></RBW-AUTOGEN
  29930. ></RBW-MARKER
  29931. ><RBW-PARABODY>If the link status is dynamicFrozen, Lou’s configuration is updated to point to the most recent version of the object design phase. Once again, Pat’s configuration and Lou’s configuration both point to the same frozen version of object design phase.</RBW-PARABODY
  29932. ></LB.LIST.BULLET
  29933. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00266.tif" origseq="54" origtype="I" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  29934. ></FAR.FIGURE.ANCHOR.RIGHT
  29935. ></LABEL
  29936. ></SUBSECTION
  29937. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="comparing" TERM2="versions"></RBW-IDXTERM
  29938. ><RBW-IDXTERM TERM1="version" TERM2="comparing"></RBW-IDXTERM
  29939. ><RBW-ANCHOR ID="19986"></RBW-ANCHOR
  29940. >Comparing File Versions</SS.SUBSEC.HEAD
  29941. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29942. >Introduction</L.LABEL
  29943. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="comparing"></RBW-IDXTERM
  29944. ><RBW-IDXTERM TERM1="Compare (Version menu)"></RBW-IDXTERM
  29945. ><RBW-IDXTERM TERM1="frozen version" TERM2="comparing"></RBW-IDXTERM
  29946. ><RBW-IDXTERM TERM1="working version" TERM2="comparing"></RBW-IDXTERM
  29947. >You can use Version | Compare to compare an object version in your configuration version with any frozen version of that object. Version compare is available for the following types of objects:<RBW-IDXTERM TERM1="file version" TERM2="comparing"></RBW-IDXTERM
  29948. ></B.BODY
  29949. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29950. ></RBW-AUTOGEN
  29951. ></RBW-MARKER
  29952. ><RBW-PARABODY>Text files on the system level of the implementation phase</RBW-PARABODY
  29953. ></LB.LIST.BULLET
  29954. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29955. ></RBW-AUTOGEN
  29956. ></RBW-MARKER
  29957. ><RBW-PARABODY>Local sections on the document level</RBW-PARABODY
  29958. ></LB.LIST.BULLET
  29959. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  29960. ></RBW-AUTOGEN
  29961. ></RBW-MARKER
  29962. ><RBW-PARABODY>Diagrams and matrices on the system level</RBW-PARABODY
  29963. ></LB.LIST.BULLET
  29964. ></LABEL
  29965. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29966. >Compare command for text files and local sections</L.LABEL
  29967. ><B.BODY>By default, ObjectTeam uses the fcomp utility to compare text files and local sections. You can use Options | Compare Command to specify a different utility.<RBW-IDXTERM TERM1="Compare Command (Options menu)"></RBW-IDXTERM
  29968. ><RBW-IDXTERM TERM1="comparing" TERM2="specifying compare utility"></RBW-IDXTERM
  29969. ><RBW-IDXTERM TERM1="fcomp utility"></RBW-IDXTERM
  29970. ></B.BODY
  29971. ></LABEL
  29972. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  29973. >Compare command for diagrams and matrixes</L.LABEL
  29974. ><B.BODY>ObjectTeam uses the udmcmp utility to compare diagrams and matrices. You can customize the udmcmp utility, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  29975. ><CX5FX5FTITLE></CX5FX5FTITLE
  29976. >.<RBW-IDXTERM TERM1="udmcmp utility"></RBW-IDXTERM
  29977. ></B.BODY
  29978. ><B.BODY>By default, this utility reports diagrams or matrices as identical if the elements in the following table are identical:</B.BODY
  29979. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Elements</CELLHEADING
  29980. ></ENTRY
  29981. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram </CELLHEADING
  29982. ></ENTRY
  29983. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Matrix</CELLHEADING
  29984. ></ENTRY
  29985. ></RBW-ROW
  29986. ></THEAD
  29987. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nodes</CELLBODY
  29988. ></ENTRY
  29989. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29990. ></ENTRY
  29991. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29992. ></ENTRY
  29993. ></RBW-ROW
  29994. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Connectors</CELLBODY
  29995. ></ENTRY
  29996. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  29997. ></ENTRY
  29998. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  29999. ></ENTRY
  30000. ></RBW-ROW
  30001. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Node connectors</CELLBODY
  30002. ></ENTRY
  30003. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30004. ></ENTRY
  30005. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  30006. ></ENTRY
  30007. ></RBW-ROW
  30008. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Rows</CELLBODY
  30009. ></ENTRY
  30010. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  30011. ></ENTRY
  30012. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30013. ></ENTRY
  30014. ></RBW-ROW
  30015. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cells</CELLBODY
  30016. ></ENTRY
  30017. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  30018. ></ENTRY
  30019. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30020. ></ENTRY
  30021. ></RBW-ROW
  30022. ></TBODY
  30023. ></TGROUP
  30024. ></RBW-TABLE
  30025. ><B.BODY>By default, the udmcmp utility finds nodes, connectors, connected nodes, and rows to be identical if the elements in the following table are identical:</B.BODY
  30026. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Elements</CELLHEADING
  30027. ></ENTRY
  30028. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Diagram component</CELLHEADING
  30029. ></ENTRY
  30030. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Matrix components</CELLHEADING
  30031. ></ENTRY
  30032. ></RBW-ROW
  30033. ></THEAD
  30034. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Component type</CELLBODY
  30035. ></ENTRY
  30036. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30037. ></ENTRY
  30038. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30039. ></ENTRY
  30040. ></RBW-ROW
  30041. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Labels</CELLBODY
  30042. ></ENTRY
  30043. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30044. ></ENTRY
  30045. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30046. ></ENTRY
  30047. ></RBW-ROW
  30048. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Component attributes</CELLBODY
  30049. ></ENTRY
  30050. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30051. ></ENTRY
  30052. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30053. ></ENTRY
  30054. ></RBW-ROW
  30055. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Coordinates</CELLBODY
  30056. ></ENTRY
  30057. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30058. ></ENTRY
  30059. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  30060. ></ENTRY
  30061. ></RBW-ROW
  30062. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Size</CELLBODY
  30063. ></ENTRY
  30064. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30065. ></ENTRY
  30066. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  30067. ></ENTRY
  30068. ></RBW-ROW
  30069. ></TBODY
  30070. ></TGROUP
  30071. ></RBW-TABLE
  30072. ></LABEL
  30073. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30074. >To compare diagrams or matrices</L.LABEL
  30075. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  30076. ></RBW-AUTOGEN
  30077. ></RBW-MARKER
  30078. ><RBW-PARABODY>To compare versions of a diagram or matrix:<RBW-IDXTERM TERM1="diagram" TERM2="comparing"></RBW-IDXTERM
  30079. ><RBW-IDXTERM TERM1="Class Definition Matrix" TERM2="comparing"></RBW-IDXTERM
  30080. ></RBW-PARABODY
  30081. ></P.PROCEDURE
  30082. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30083. ></RBW-AUTOGEN
  30084. ></RBW-MARKER
  30085. ><RBW-PARABODY>In the information area, select a diagram or matrix.</RBW-PARABODY
  30086. ></LN.LIST.NUM
  30087. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30088. ></RBW-AUTOGEN
  30089. ></RBW-MARKER
  30090. ><RBW-PARABODY>Select Version | Compare.</RBW-PARABODY
  30091. ></LN.LIST.NUM
  30092. ><LR.LIST.RESULT>The Compare Version dialog box appears.</LR.LIST.RESULT
  30093. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00267.unk" origfile="pics/compvers.gif" origtype="X" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  30094. ></FA2.FIGURE.ANCHOR.2
  30095. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30096. ></RBW-AUTOGEN
  30097. ></RBW-MARKER
  30098. ><RBW-PARABODY>Select the version that you want to compare against. Then click OK.</RBW-PARABODY
  30099. ></LN.LIST.NUM
  30100. ><LR.LIST.RESULT>ObjectTeam compares the two object versions, and displays the results in a Monitor window.</LR.LIST.RESULT
  30101. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00268.unk" origfile="pics/compoutp.gif" origtype="X" origdoc="../../sources/pmg/version.fm5.mif"></RBW-GRAPHIC
  30102. ></FAR.FIGURE.ANCHOR.RIGHT
  30103. ></LABEL
  30104. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30105. >How to compare versions of a text file or a local section</L.LABEL
  30106. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  30107. ></RBW-AUTOGEN
  30108. ></RBW-MARKER
  30109. ><RBW-PARABODY>To compare versions of a text file or a local section:<RBW-IDXTERM TERM1="text file, comparing"></RBW-IDXTERM
  30110. ><RBW-IDXTERM TERM1="local section, comparing"></RBW-IDXTERM
  30111. ></RBW-PARABODY
  30112. ></P.PROCEDURE
  30113. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30114. ></RBW-AUTOGEN
  30115. ></RBW-MARKER
  30116. ><RBW-PARABODY>Select a text file at the system level in the implementation phase, or a local section at the document level.</RBW-PARABODY
  30117. ></LN.LIST.NUM
  30118. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30119. ></RBW-AUTOGEN
  30120. ></RBW-MARKER
  30121. ><RBW-PARABODY>Select Version | Compare.</RBW-PARABODY
  30122. ></LN.LIST.NUM
  30123. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30124. ></RBW-AUTOGEN
  30125. ></RBW-MARKER
  30126. ><RBW-PARABODY>Select the version that you want to compare against. Then click OK.</RBW-PARABODY
  30127. ></LN.LIST.NUM
  30128. ></LABEL
  30129. ></SUBSECTION
  30130. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="copying" TERM2="versions"></RBW-IDXTERM
  30131. ><RBW-IDXTERM TERM1="version" TERM2="copying"></RBW-IDXTERM
  30132. ><RBW-ANCHOR ID="26571"></RBW-ANCHOR
  30133. >Copying Versions</SS.SUBSEC.HEAD
  30134. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30135. >Introduction</L.LABEL
  30136. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="copying"></RBW-IDXTERM
  30137. ><RBW-IDXTERM TERM1="copying" TERM2="versions"></RBW-IDXTERM
  30138. ><RBW-IDXTERM TERM1="Copy (Version menu)"></RBW-IDXTERM
  30139. ><RBW-IDXTERM TERM1="frozen version" TERM2="copying"></RBW-IDXTERM
  30140. ><RBW-IDXTERM TERM1="working version" TERM2="copying"></RBW-IDXTERM
  30141. >Use Version | Copy to copy the contents of a selected object version into the current object version.</B.BODY
  30142. ></LABEL
  30143. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30144. >Object versions that can be copied</L.LABEL
  30145. ><B.BODY>The following object versions can be copied:</B.BODY
  30146. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30147. ></RBW-AUTOGEN
  30148. ></RBW-MARKER
  30149. ><RBW-PARABODY>Frozen versions of the selected object</RBW-PARABODY
  30150. ></LB.LIST.BULLET
  30151. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30152. ></RBW-AUTOGEN
  30153. ></RBW-MARKER
  30154. ><RBW-PARABODY>Working and frozen versions of any object in the project that is compatible with the selected object</RBW-PARABODY
  30155. ></LB.LIST.BULLET
  30156. ></LABEL
  30157. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30158. >How to copy an object version</L.LABEL
  30159. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  30160. ></RBW-AUTOGEN
  30161. ></RBW-MARKER
  30162. ><RBW-PARABODY>To copy an object version:</RBW-PARABODY
  30163. ></P.PROCEDURE
  30164. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30165. ></RBW-AUTOGEN
  30166. ></RBW-MARKER
  30167. ><RBW-PARABODY>In the information area, select the object version into which you want to copy the data.</RBW-PARABODY
  30168. ></LN.LIST.NUM
  30169. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30170. ></RBW-AUTOGEN
  30171. ></RBW-MARKER
  30172. ><RBW-PARABODY>Select Version | Copy.</RBW-PARABODY
  30173. ></LN.LIST.NUM
  30174. ><LR.LIST.RESULT>A dialog box appears, displaying all object versions that can be copied into the selected object version. </LR.LIST.RESULT
  30175. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30176. ></RBW-AUTOGEN
  30177. ></RBW-MARKER
  30178. ><RBW-PARABODY>Select the object version that you want to copy. Then click OK.</RBW-PARABODY
  30179. ></LN.LIST.NUM
  30180. ><LR.LIST.RESULT>ObjectTeam copies the object version selected in the dialog box into the object version selected in the information area.</LR.LIST.RESULT
  30181. ><B.BODY></B.BODY
  30182. ><RBWAUTO-0001></RBWAUTO-0001
  30183. ><!--
  30184.  
  30185.  
  30186.  
  30187.  
  30188.  
  30189. CONVERTING SOURCE FILE ../../sources/pmg/vbparal.fm5.mif
  30190.  
  30191.  
  30192. --><B.BODY></B.BODY
  30193. ><B.BODY></B.BODY
  30194. ><B.BODY></B.BODY
  30195. ><B.BODY></B.BODY
  30196. ><B.BODY></B.BODY
  30197. ></LABEL
  30198. ></SUBSECTION
  30199. ></SECTION
  30200. ></CHAPTER
  30201. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  30202. ></RBW-AUTOGEN
  30203. >Parallel <RBW-ANCHOR ID="14035"></RBW-ANCHOR
  30204. >Development</C.CHAPTER.HEAD
  30205. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30206. >Definition of parallel development</L.LABEL
  30207. ><B.BODY>Parallel development occurs when a system must be modified along two or more paths simultaneously. For example:</B.BODY
  30208. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30209. ></RBW-AUTOGEN
  30210. ></RBW-MARKER
  30211. ><RBW-PARABODY>If you have multiple developers working on the model and want to have a shielded development area for each developer (or group of developers).</RBW-PARABODY
  30212. ></LB.LIST.BULLET
  30213. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30214. ></RBW-AUTOGEN
  30215. ></RBW-MARKER
  30216. ><RBW-PARABODY>If you are developing a new release of a model and, simultaneously, need to make updates to the current release of the model.</RBW-PARABODY
  30217. ></LB.LIST.BULLET
  30218. ></LABEL
  30219. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30220. >Support for parallel development</L.LABEL
  30221. ><B.BODY>In ObjectTeam, you can create separate configurations for each branch of development. When you are ready, you can merge the configurations.</B.BODY
  30222. ><B.BODY>This chapter provides examples of how and when you might use parallel development in ObjectTeam. It then describes how to merge the configurations used in parallel development.</B.BODY
  30223. ></LABEL
  30224. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30225. >Prerequisite</L.LABEL
  30226. ><B.BODY>Before merging configurations (phases or systems), you must be familiar with versions and configurations, as described in <RBW-XREF REFID="22309" TYPE="XREF-TEXTCOPY">Chapter 1, Version and Configuration Management</RBW-XREF
  30227. >.</B.BODY
  30228. ></LABEL
  30229. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30230. >In this chapter</L.LABEL
  30231. ><B.BODY>This chapter contains the following sections:</B.BODY
  30232. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  30233. ></ENTRY
  30234. ></RBW-ROW
  30235. ></THEAD
  30236. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38995" TYPE="XREF-TEXTCOPY">Sample Scenarios&rbwtab;2–2</RBW-XREF
  30237. ></SB.SECTION.BLOCK.TABLE
  30238. ></ENTRY
  30239. ></RBW-ROW
  30240. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25813" TYPE="XREF-TEXTCOPY">Using Multiple Configurations&rbwtab;2–5</RBW-XREF
  30241. ></SB.SECTION.BLOCK.TABLE
  30242. ></ENTRY
  30243. ></RBW-ROW
  30244. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17775" TYPE="XREF-TEXTCOPY">Merging Configurations, Phases, and Systems&rbwtab;2–7</RBW-XREF
  30245. ></SB.SECTION.BLOCK.TABLE
  30246. ></ENTRY
  30247. ></RBW-ROW
  30248. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28900" TYPE="XREF-TEXTCOPY">Merge Rules&rbwtab;2–19</RBW-XREF
  30249. ></SB.SECTION.BLOCK.TABLE
  30250. ></ENTRY
  30251. ></RBW-ROW
  30252. ></TBODY
  30253. ></TGROUP
  30254. ></RBW-TABLE
  30255. ></LABEL
  30256. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="38995"></RBW-ANCHOR
  30257. >Sample Scenarios</S.SECTION.HEAD
  30258. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30259. >Two scenarios</L.LABEL
  30260. ><B.BODY>This section provides two examples of how you might use parallel development in ObjectTeam:</B.BODY
  30261. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30262. ></RBW-AUTOGEN
  30263. ></RBW-MARKER
  30264. ><RBW-PARABODY>Scenario 1 uses parallel development to provide shielded development areas for the developers working on a model.</RBW-PARABODY
  30265. ></LB.LIST.BULLET
  30266. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30267. ></RBW-AUTOGEN
  30268. ></RBW-MARKER
  30269. ><RBW-PARABODY>Scenario 2 uses parallel development to allow developers to work on multiple releases of a model.</RBW-PARABODY
  30270. ></LB.LIST.BULLET
  30271. ></LABEL
  30272. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30273. >Scenario 1: team development</L.LABEL
  30274. ><B.BODY>In this scenario, multiple developers are working on one model. They are each working in their own configuration, rather than sharing a single configuration. Periodically, you must merge the developers’ changes into an integrated version of the model. The following figure illustrates this scenario.</B.BODY
  30275. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00269.tif" origseq="1" origtype="I" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  30276. ></FA.FIGURE.ANCHOR
  30277. ></LABEL
  30278. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30279. >Configurations used</L.LABEL
  30280. ><B.BODY>In this scenario, you use the following configurations:</B.BODY
  30281. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30282. ></RBW-AUTOGEN
  30283. ></RBW-MARKER
  30284. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>One Main configuration.</CX5FX5FBULLET.EMPHASIS
  30285. > This configuration contains the integrated version of the model. All development changes are periodically merged into this one configuration.</RBW-PARABODY
  30286. ></LB.LIST.BULLET
  30287. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30288. ></RBW-AUTOGEN
  30289. ></RBW-MARKER
  30290. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>A configuration for each developer (Developer configurations).</CX5FX5FBULLET.EMPHASIS
  30291. > Each developer, or group of developers, works in a separate configuration. Periodically, the Developer configurations are merged into the Main configuration.</RBW-PARABODY
  30292. ></LB.LIST.BULLET
  30293. ></LABEL
  30294. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30295. >Process</L.LABEL
  30296. ><B.BODY>The following steps outline the parallel development process:</B.BODY
  30297. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30298. ></RBW-AUTOGEN
  30299. ></RBW-MARKER
  30300. ><RBW-PARABODY>At the beginning of the cycle, the Main configuration holds the most recent version of the model.</RBW-PARABODY
  30301. ></LN.LIST.NUM
  30302. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30303. ></RBW-AUTOGEN
  30304. ></RBW-MARKER
  30305. ><RBW-PARABODY>The developers add to their configurations the most recent system versions from the Main configuration.</RBW-PARABODY
  30306. ></LN.LIST.NUM
  30307. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30308. ></RBW-AUTOGEN
  30309. ></RBW-MARKER
  30310. ><RBW-PARABODY>In their own configurations, the developers create new versions of the systems and modify them as necessary. Typically, each developer focuses on a different system or different set of systems.</RBW-PARABODY
  30311. ></LN.LIST.NUM
  30312. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  30313. ></RBW-AUTOGEN
  30314. ></RBW-MARKER
  30315. ><RBW-PARABODY>When you are ready to integrate the developers’ changes, the developers freeze their configurations and you merge each Developer configuration into the Main configuration.</RBW-PARABODY
  30316. ></LN.LIST.NUM
  30317. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  30318. ></RBW-AUTOGEN
  30319. ></RBW-MARKER
  30320. ><RBW-PARABODY>The Main configuration again holds the most recent version of the model. Return to step 1 to repeat the development cycle.</RBW-PARABODY
  30321. ></LN.LIST.NUM
  30322. ></LABEL
  30323. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30324. >Scenario 2: parallel release schedules</L.LABEL
  30325. ><B.BODY>In this scenario, you have released a version of your model (Release X). You are ready to begin work on the next release (Release X+1), but must occasionally update the current release (Release X) to correct critical errors. The following figure illustrates this scenario.</B.BODY
  30326. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00270.tif" origseq="5" origtype="I" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  30327. ></FA.FIGURE.ANCHOR
  30328. ></LABEL
  30329. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30330. >Configurations used</L.LABEL
  30331. ><B.BODY>In this scenario, you use two configurations:</B.BODY
  30332. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30333. ></RBW-AUTOGEN
  30334. ></RBW-MARKER
  30335. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>The Main configuration.</CX5FX5FBULLET.EMPHASIS
  30336. > This configuration contains the integrated version of the Release X+1 model. </RBW-PARABODY
  30337. ></LB.LIST.BULLET
  30338. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30339. ></RBW-AUTOGEN
  30340. ></RBW-MARKER
  30341. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>The ReleaseX configuration.</CX5FX5FBULLET.EMPHASIS
  30342. > This configuration contains the integrated version of the Release X model.</RBW-PARABODY
  30343. ></LB.LIST.BULLET
  30344. ></LABEL
  30345. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30346. >Process</L.LABEL
  30347. ><BI.BODY.INTRO>The following steps outline the parallel development process:</BI.BODY.INTRO
  30348. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30349. ></RBW-AUTOGEN
  30350. ></RBW-MARKER
  30351. ><RBW-PARABODY>Release X occurs. The Main and ReleaseX configurations both contain the Release X version of the model.</RBW-PARABODY
  30352. ></LN.LIST.NUM
  30353. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30354. ></RBW-AUTOGEN
  30355. ></RBW-MARKER
  30356. ><RBW-PARABODY>Developers working on Release X+1 update the Main configuration. Developers working on Release X update the ReleaseX configuration.</RBW-PARABODY
  30357. ></LN.LIST.NUM
  30358. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  30359. ></RBW-AUTOGEN
  30360. >If multiple developers are working on a release, you can use parallel development, as described in the previous scenario.</T2.TIP.2
  30361. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30362. ></RBW-AUTOGEN
  30363. ></RBW-MARKER
  30364. ><RBW-PARABODY>When development of Release X+1 is complete, you create a ReleaseX+1 configuration.</RBW-PARABODY
  30365. ></LN.LIST.NUM
  30366. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  30367. ></RBW-AUTOGEN
  30368. ></RBW-MARKER
  30369. ><RBW-PARABODY>In the ReleaseX+1 configuration, select all the latest system versions from the ReleaseX configuration.</RBW-PARABODY
  30370. ></LN.LIST.NUM
  30371. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  30372. ></RBW-AUTOGEN
  30373. ></RBW-MARKER
  30374. ><RBW-PARABODY>Merge the Main configuration into the ReleaseX+1 configuration.</RBW-PARABODY
  30375. ></LN.LIST.NUM
  30376. ><LT.LIST.TEXT>If an object has been changed in both ReleaseX and ReleaseX+1, the merge process warns you of the conflicting object versions. You examine the conflicting Release X and Release X+1 versions of the object and reconcile the changes.</LT.LIST.TEXT
  30377. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  30378. ></RBW-AUTOGEN
  30379. ></RBW-MARKER
  30380. ><RBW-PARABODY>The ReleaseX+1 configuration now contains the finished Release X+1 version of the model. In the Main configuration, select all the latest system versions from the Release X+1 configuration.</RBW-PARABODY
  30381. ></LN.LIST.NUM
  30382. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  30383. ></RBW-AUTOGEN
  30384. ></RBW-MARKER
  30385. ><RBW-PARABODY>Return to step 1 to begin work on the next release.</RBW-PARABODY
  30386. ></LN.LIST.NUM
  30387. ></LABEL
  30388. ></SECTION
  30389. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25813"></RBW-ANCHOR
  30390. >Using Multiple Configurations</S.SECTION.HEAD
  30391. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30392. >Introduction</L.LABEL
  30393. ><B.BODY>When a project uses multiple configurations, the configurations share <CX5FX5FEMPHASIS>frozen</CX5FX5FEMPHASIS
  30394. > object versions. To work on a shared object, you create a new <CX5FX5FEMPHASIS>working</CX5FX5FEMPHASIS
  30395. > version of the object in your configuration.</B.BODY
  30396. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30397. ></RBW-AUTOGEN
  30398. ></RBW-MARKER
  30399. ><RBW-PARABODY><RBW-IDXTERM TERM1="object" TERM2="in configuration"></RBW-IDXTERM
  30400. >Each configuration can contain one version of a particular object.</RBW-PARABODY
  30401. ></LB.LIST.BULLET
  30402. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30403. ></RBW-AUTOGEN
  30404. ></RBW-MARKER
  30405. ><RBW-PARABODY><RBW-IDXTERM TERM1="working version" TERM2="in configuration"></RBW-IDXTERM
  30406. >A <CX5FX5FOBJECT.NAME>working</CX5FX5FOBJECT.NAME
  30407. > version of an object is in exactly one configuration. That is, the same object version cannot be edited in two configurations.</RBW-PARABODY
  30408. ></LB.LIST.BULLET
  30409. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30410. ></RBW-AUTOGEN
  30411. ></RBW-MARKER
  30412. ><RBW-PARABODY>A <CX5FX5FOBJECT.NAME>frozen</CX5FX5FOBJECT.NAME
  30413. > version of an object can be in any number of configurations. </RBW-PARABODY
  30414. ></LB.LIST.BULLET
  30415. ></LABEL
  30416. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30417. >Example</L.LABEL
  30418. ><B.BODY>The following example shows how two configurations, a Main configuration and a Developer configuration, might be used in a project.</B.BODY
  30419. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30420. >Main configuration</SL.SUBLABEL
  30421. ><BI.BODY.INTRO>The Main configuration contains an Object Design Phase version and two System versions; the Phase and System versions are <CX5FX5FOBJECT.NAME>frozen</CX5FX5FOBJECT.NAME
  30422. > versions. Lou’s configuration is empty.</BI.BODY.INTRO
  30423. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00271.tif" origseq="8" origtype="I" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  30424. ></FA.FIGURE.ANCHOR
  30425. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30426. >Developer configuration</SL.SUBLABEL
  30427. ><B.BODY>The developer, Lou, wants to edit the Core system. She adds the <CX5FX5FOBJECT.NAME>frozen</CX5FX5FOBJECT.NAME
  30428. > Object Design Phase version to her configuration. Because the Phase version points to the <CX5FX5FOBJECT.NAME>frozen</CX5FX5FOBJECT.NAME
  30429. > System versions, the System versions are also added to Lou’s configuration. Both configurations now point to the same Phase and System versions.</B.BODY
  30430. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00272.tif" origseq="15" origtype="I" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  30431. ></FA.FIGURE.ANCHOR
  30432. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30433. >Changing the Developer configuration</SL.SUBLABEL
  30434. ><BI.BODY.INTRO>Lou wants to work on the Core system, so she creates a new version of the Object Design Phase and a new version of the Core system. The new versions become <CX5FX5FOBJECT.NAME>working</CX5FX5FOBJECT.NAME
  30435. > versions in Lou’s configuration. The Main configuration does not change. The two configurations now point to the same version of the GUI NT system, but different versions of the Core system.</BI.BODY.INTRO
  30436. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00273.tif" origseq="24" origtype="I" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  30437. ></FA.FIGURE.ANCHOR
  30438. ></LABEL
  30439. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30440. >Share System versions, not File versions</L.LABEL
  30441. ><B.BODY><RBW-IDXTERM TERM1="configuration" TERM2="sharing versions"></RBW-IDXTERM
  30442. ><RBW-IDXTERM TERM1="version" TERM2="sharing"></RBW-IDXTERM
  30443. >Configurations should share <CX5FX5FEMPHASIS>frozen</CX5FX5FEMPHASIS
  30444. > System versions rather than File versions.</B.BODY
  30445. ><B.BODY>If two configurations contain the same frozen System version, the property values in that System version are the same in both configurations. If two configurations contain the same frozen File version, not all property values available in that File version are the same in both configuations.</B.BODY
  30446. ><B.BODY>See <RBW-XREF REFID="40295" TYPE="XREF-TEXTCOPY">Item Generations and Property Values</RBW-XREF
  30447. > for more information.</B.BODY
  30448. ></LABEL
  30449. ></SECTION
  30450. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17775"></RBW-ANCHOR
  30451. >Merging Configurations, Phases, and Systems</S.SECTION.HEAD
  30452. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30453. >Introduction</L.LABEL
  30454. ><B.BODY>You can merge</B.BODY
  30455. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30456. ></RBW-AUTOGEN
  30457. ></RBW-MARKER
  30458. ><RBW-PARABODY>Two configuration versions</RBW-PARABODY
  30459. ></LB.LIST.BULLET
  30460. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30461. ></RBW-AUTOGEN
  30462. ></RBW-MARKER
  30463. ><RBW-PARABODY>Two versions of the same phase</RBW-PARABODY
  30464. ></LB.LIST.BULLET
  30465. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30466. ></RBW-AUTOGEN
  30467. ></RBW-MARKER
  30468. ><RBW-PARABODY>Two versions of the same system</RBW-PARABODY
  30469. ></LB.LIST.BULLET
  30470. ></LABEL
  30471. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30472. >Purpose</L.LABEL
  30473. ><B.BODY>You merge a source configuration, phase, or system into a target configuration, phase, or system. The merge operation updates the target based on the changes made to the source.</B.BODY
  30474. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  30475. ></RBW-AUTOGEN
  30476. >The merge operation is designed to support parallel development. It is not designed to merge two unrelated configurations, phases, or systems.</N.NOTE
  30477. ></LABEL
  30478. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30479. >Process</L.LABEL
  30480. ><B.BODY>The following steps provide an overview of the merge process. This section describes each step in greater detail.</B.BODY
  30481. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30482. ></RBW-AUTOGEN
  30483. ></RBW-MARKER
  30484. ><RBW-PARABODY>You select a target configuration, phase, or system. You select a source configuration, phase, or system. You start the merge.</RBW-PARABODY
  30485. ></LN.LIST.NUM
  30486. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  30487. > <RBW-XREF REFID="18382" TYPE="XREF-TEXTCOPY">Starting the Merge</RBW-XREF
  30488. >.</LT.LIST.TEXT
  30489. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30490. ></RBW-AUTOGEN
  30491. ></RBW-MARKER
  30492. ><RBW-PARABODY>ObjectTeam examines all elements in the source in preparation for merging them into the target:</RBW-PARABODY
  30493. ></LN.LIST.NUM
  30494. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30495. ></RBW-MARKER
  30496. ><RBW-PARABODY>If the source version of the element is already in the target, it does not need to be merged.</RBW-PARABODY
  30497. ></LB2.LIST.BULLET.2
  30498. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30499. ></RBW-MARKER
  30500. ><RBW-PARABODY>If no version of the element is in the target, ObjectTeam can merge the element into the target.</RBW-PARABODY
  30501. ></LB2.LIST.BULLET.2
  30502. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30503. ></RBW-MARKER
  30504. ><RBW-PARABODY>If the source and target elements are directly derived from one another, ObjectTeam can merge the element into the target.</RBW-PARABODY
  30505. ></LB2.LIST.BULLET.2
  30506. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30507. ></RBW-MARKER
  30508. ><RBW-PARABODY>If the source and target elements are not directly derived from one another, the source element conflicts with the target element. You must resolve the conflict before ObjectTeam can merge the element into the target.</RBW-PARABODY
  30509. ></LB2.LIST.BULLET.2
  30510. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  30511. > <RBW-XREF REFID="28900" TYPE="XREF-TEXTCOPY">Merge Rules</RBW-XREF
  30512. >.</LT.LIST.TEXT
  30513. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30514. ></RBW-AUTOGEN
  30515. ></RBW-MARKER
  30516. ><RBW-PARABODY>ObjectTeam opens a Merge window. The window lists each source element that must be merged into the target and whether or not the source element conflicts with a target element.</RBW-PARABODY
  30517. ></LN.LIST.NUM
  30518. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  30519. > <RBW-XREF REFID="14654" TYPE="XREF-TEXTCOPY">Reviewing the Results in the Merge Window</RBW-XREF
  30520. >.</LT.LIST.TEXT
  30521. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  30522. ></RBW-AUTOGEN
  30523. ></RBW-MARKER
  30524. ><RBW-PARABODY>You use the Merge window to merge each source element into the target.</RBW-PARABODY
  30525. ></LN.LIST.NUM
  30526. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30527. ></RBW-MARKER
  30528. ><RBW-PARABODY>If the source element does not conflict with the target element, you can either merge the source element into the target or use the target element.</RBW-PARABODY
  30529. ></LB2.LIST.BULLET.2
  30530. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30531. ></RBW-MARKER
  30532. ><RBW-PARABODY>If the source element conflicts with the target element, you can either use the source element or use the target element. Typically, you examine the conflicting elements, merge them by hand, and then use your merged version of the element.</RBW-PARABODY
  30533. ></LB2.LIST.BULLET.2
  30534. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>See:</CX5FX5FBULLET.EMPHASIS
  30535. > <RBW-XREF REFID="22277" TYPE="XREF-TEXTCOPY">Merging the Source Elements Into the Target</RBW-XREF
  30536. >.</LT.LIST.TEXT
  30537. ></LABEL
  30538. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30539. >In this section</L.LABEL
  30540. ><B.BODY>This section contains the following topics:</B.BODY
  30541. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  30542. ></ENTRY
  30543. ></RBW-ROW
  30544. ></THEAD
  30545. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18382" TYPE="XREF-TEXTCOPY">Starting the Merge&rbwtab;2–9</RBW-XREF
  30546. ></SB.SECTION.BLOCK.TABLE
  30547. ></ENTRY
  30548. ></RBW-ROW
  30549. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14654" TYPE="XREF-TEXTCOPY">Reviewing the Results in the Merge Window&rbwtab;2–11</RBW-XREF
  30550. ></SB.SECTION.BLOCK.TABLE
  30551. ></ENTRY
  30552. ></RBW-ROW
  30553. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22277" TYPE="XREF-TEXTCOPY">Merging the Source Elements Into the Target&rbwtab;2–14</RBW-XREF
  30554. ></SB.SECTION.BLOCK.TABLE
  30555. ></ENTRY
  30556. ></RBW-ROW
  30557. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11562" TYPE="XREF-TEXTCOPY">Working With Merge Links&rbwtab;2–18</RBW-XREF
  30558. ></SB.SECTION.BLOCK.TABLE
  30559. ></ENTRY
  30560. ></RBW-ROW
  30561. ></TBODY
  30562. ></TGROUP
  30563. ></RBW-TABLE
  30564. ><B.BODY></B.BODY
  30565. ></LABEL
  30566. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18382"></RBW-ANCHOR
  30567. >Starting the Merge</SS.SUBSEC.HEAD
  30568. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30569. >Introduction</L.LABEL
  30570. ><B.BODY>Starting a merge operation does not change the source or target configuration, phase, or system. It displays the Merge window. The target is changed when you use the Merge window to merge the source into the target, as described in <RBW-XREF REFID="22277" TYPE="XREF-TEXTCOPY">Merging the Source Elements Into the Target</RBW-XREF
  30571. >.</B.BODY
  30572. ></LABEL
  30573. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30574. >Status of versions</L.LABEL
  30575. ><B.BODY>You can merge configuration, phase, and system versions that have a status of <CX5FX5FEMPHASIS>working</CX5FX5FEMPHASIS
  30576. > or <CX5FX5FEMPHASIS>frozen</CX5FX5FEMPHASIS
  30577. >. You cannot merge versions that have a status of <CX5FX5FEMPHASIS>background</CX5FX5FEMPHASIS
  30578. >.</B.BODY
  30579. ><B.BODY>If the status of the target version is <CX5FX5FEMPHASIS>working</CX5FX5FEMPHASIS
  30580. >, the source elements are merged into that target version. If the status is <CX5FX5FEMPHASIS>frozen</CX5FX5FEMPHASIS
  30581. >, ObjectTeam creates a new version of the target object and merges the source elements into that new version.</B.BODY
  30582. ></LABEL
  30583. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30584. >How to merge configurations</L.LABEL
  30585. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  30586. ></RBW-AUTOGEN
  30587. ></RBW-MARKER
  30588. ><RBW-PARABODY>To merge two configurations:</RBW-PARABODY
  30589. ></P.PROCEDURE
  30590. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30591. ></RBW-AUTOGEN
  30592. ></RBW-MARKER
  30593. ><RBW-PARABODY>In the Browser, open the Project that contains the configurations.</RBW-PARABODY
  30594. ></LN.LIST.NUM
  30595. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30596. ></RBW-AUTOGEN
  30597. ></RBW-MARKER
  30598. ><RBW-PARABODY>Select the target configuration.</RBW-PARABODY
  30599. ></LN.LIST.NUM
  30600. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30601. ></RBW-AUTOGEN
  30602. ></RBW-MARKER
  30603. ><RBW-PARABODY>Select Version | Merge.</RBW-PARABODY
  30604. ></LN.LIST.NUM
  30605. ><LR.LIST.RESULT>The Select Source dialog box appears.</LR.LIST.RESULT
  30606. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  30607. ></RBW-AUTOGEN
  30608. ></RBW-MARKER
  30609. ><RBW-PARABODY>Select the source configuration and select OK.</RBW-PARABODY
  30610. ></LN.LIST.NUM
  30611. ><LR.LIST.RESULT>ObjectTeam examines each object in the source, determines how it should be merged into the target, and displays the results in the Merge window.</LR.LIST.RESULT
  30612. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  30613. ></RBW-AUTOGEN
  30614. ></RBW-MARKER
  30615. ><RBW-PARABODY>Examine the results, as described in <RBW-XREF REFID="14654" TYPE="XREF-TEXTCOPY">Reviewing the Results in the Merge Window</RBW-XREF
  30616. >.</RBW-PARABODY
  30617. ></LN.LIST.NUM
  30618. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  30619. ></RBW-AUTOGEN
  30620. ></RBW-MARKER
  30621. ><RBW-PARABODY>Optionally, merge the source elements into the target, as described in <RBW-XREF REFID="22277" TYPE="XREF-TEXTCOPY">Merging the Source Elements Into the Target</RBW-XREF
  30622. >.</RBW-PARABODY
  30623. ></LN.LIST.NUM
  30624. ></LABEL
  30625. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30626. >How to merge versions of a phase or system</L.LABEL
  30627. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  30628. ></RBW-AUTOGEN
  30629. ></RBW-MARKER
  30630. ><RBW-PARABODY>To merge two versions of a phase or system:</RBW-PARABODY
  30631. ></P.PROCEDURE
  30632. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30633. ></RBW-AUTOGEN
  30634. ></RBW-MARKER
  30635. ><RBW-PARABODY>Open the Version Browser for the phase or system.</RBW-PARABODY
  30636. ></LN.LIST.NUM
  30637. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30638. ></RBW-AUTOGEN
  30639. ></RBW-MARKER
  30640. ><RBW-PARABODY>Select the target version.</RBW-PARABODY
  30641. ></LN.LIST.NUM
  30642. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30643. ></RBW-AUTOGEN
  30644. ></RBW-MARKER
  30645. ><RBW-PARABODY>Press and hold the Control key while you select the source version.</RBW-PARABODY
  30646. ></LN.LIST.NUM
  30647. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  30648. ></RBW-AUTOGEN
  30649. ></RBW-MARKER
  30650. ><RBW-PARABODY>Select Version | Merge.</RBW-PARABODY
  30651. ></LN.LIST.NUM
  30652. ><LR.LIST.RESULT>ObjectTeam examines each object in the source, determines how it should be merged into the target, and displays the results in the Merge window.</LR.LIST.RESULT
  30653. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  30654. ></RBW-AUTOGEN
  30655. ></RBW-MARKER
  30656. ><RBW-PARABODY>Examine the results, as described in <RBW-XREF REFID="14654" TYPE="XREF-TEXTCOPY">Reviewing the Results in the Merge Window</RBW-XREF
  30657. >.</RBW-PARABODY
  30658. ></LN.LIST.NUM
  30659. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  30660. ></RBW-AUTOGEN
  30661. ></RBW-MARKER
  30662. ><RBW-PARABODY>Optionally, merge the source elements into the target, as described in <RBW-XREF REFID="22277" TYPE="XREF-TEXTCOPY">Merging the Source Elements Into the Target</RBW-XREF
  30663. >.</RBW-PARABODY
  30664. ></LN.LIST.NUM
  30665. ></LABEL
  30666. ></SUBSECTION
  30667. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14654"></RBW-ANCHOR
  30668. >Reviewing the Results in the Merge Window</SS.SUBSEC.HEAD
  30669. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30670. >Introduction</L.LABEL
  30671. ><B.BODY>The following illustration shows a Merge window. The title bar lists the source and target object versions that you are merging.</B.BODY
  30672. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00274.unk" origfile="pics/mergwin.gif" origtype="X" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  30673. ></FAR.FIGURE.ANCHOR.RIGHT
  30674. ></LABEL
  30675. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30676. >Display area</L.LABEL
  30677. ><B.BODY>The Merge window lists all elements in the source object version that are not in the target object version. If the source version of an element is in the target, it is not listed in the Merge window.</B.BODY
  30678. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  30679. ></RBW-AUTOGEN
  30680. >If the Merge window is empty, the source object version is a subset of (or identical to) the target object version.</T.TIP
  30681. ></LABEL
  30682. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30683. >Information displayed</L.LABEL
  30684. ><B.BODY>Like the Browser, the Merge window has a Navigation area and an Information area. When you select an object in the Navigation area, the Information area displays the following information for each element in that object:</B.BODY
  30685. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Column</CELLHEADING
  30686. ></ENTRY
  30687. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  30688. ></ENTRY
  30689. ></RBW-ROW
  30690. ></THEAD
  30691. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name</CELLBODY
  30692. ></ENTRY
  30693. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object name.</CELLBODY
  30694. ></ENTRY
  30695. ></RBW-ROW
  30696. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type</CELLBODY
  30697. ></ENTRY
  30698. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object type.</CELLBODY
  30699. ></ENTRY
  30700. ></RBW-ROW
  30701. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property Name</CELLBODY
  30702. ></ENTRY
  30703. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property name.</CELLBODY
  30704. ></ENTRY
  30705. ></RBW-ROW
  30706. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Conflict</CELLBODY
  30707. ></ENTRY
  30708. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A value of No or Yes.</CELLBODY
  30709. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>No</CX5FX5FBULLET.EMPHASIS
  30710. >. The source and target elements do not conflict; ObjectTeam can merge the source element into the target. This occurs when the source element is not in the target, the source and target elements are directly derived from one another, or the source element is a System or Phase that contains no conflicting elements.</CELLBODY
  30711. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>Yes</CX5FX5FBULLET.EMPHASIS
  30712. >. The source element conflicts with the target; you must resolve the conflict before ObjectTeam can merge the source element into the target. This occurs when the source and target elements are not directly derived from one another, or the source element is a System or Phase that contains conflicting elements.</CELLBODY
  30713. ></ENTRY
  30714. ></RBW-ROW
  30715. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Base Version</CELLBODY
  30716. ></ENTRY
  30717. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version of <CX5FX5FVARIABLE>Name</CX5FX5FVARIABLE
  30718. > from which both the From Version and the To Version were derived. </CELLBODY
  30719. ><CELLBODY><CX5FX5FEMPHASIS>Tip</CX5FX5FEMPHASIS
  30720. >: If there is no Base Version, the From and To Versions are not derived from the same version.</CELLBODY
  30721. ></ENTRY
  30722. ></RBW-ROW
  30723. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>From Version</CELLBODY
  30724. ></ENTRY
  30725. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version of <CX5FX5FVARIABLE>Name</CX5FX5FVARIABLE
  30726. > (if any) that is selected in the source version of the object selected in the Navigation area. </CELLBODY
  30727. ><CELLBODY><CX5FX5FEMPHASIS>Tip</CX5FX5FEMPHASIS
  30728. >: If the Base Version and From Version are the same (or from the same configuration), and the To Version is different (or from a different configuration), the To Version is the most recent version.</CELLBODY
  30729. ></ENTRY
  30730. ></RBW-ROW
  30731. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>To Version</CELLBODY
  30732. ></ENTRY
  30733. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version of <CX5FX5FVARIABLE>Name</CX5FX5FVARIABLE
  30734. > (if any) that is selected in the target version of the object selected in the Navigation area. </CELLBODY
  30735. ><CELLBODY><CX5FX5FEMPHASIS>Tip</CX5FX5FEMPHASIS
  30736. >: If the Base Version and From Version are the same (or from the same configuration), and the To Version is different (or from a different configuration), the To Version is the most recent version.</CELLBODY
  30737. ></ENTRY
  30738. ></RBW-ROW
  30739. ></TBODY
  30740. ></TGROUP
  30741. ></RBW-TABLE
  30742. ></LABEL
  30743. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30744. >How to filter the information</L.LABEL
  30745. ><B.BODY>Select or clear the View | Show All Merge Objects command to filter the information displayed in the Merge window.</B.BODY
  30746. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30747. ></RBW-AUTOGEN
  30748. ></RBW-MARKER
  30749. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Select</CX5FX5FBULLET.EMPHASIS
  30750. > this command to show all elements in the source object version that must be merged into the target object version.</RBW-PARABODY
  30751. ></LB.LIST.BULLET
  30752. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30753. ></RBW-AUTOGEN
  30754. ></RBW-MARKER
  30755. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Clear</CX5FX5FBULLET.EMPHASIS
  30756. > this command (the default) to show the minimum amount of information necessary to merge the source into the target:</RBW-PARABODY
  30757. ></LB.LIST.BULLET
  30758. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30759. ></RBW-MARKER
  30760. ><RBW-PARABODY>If a phase or system in the source object version contains conflicting elements, show all elements in the phase or system.</RBW-PARABODY
  30761. ></LB2.LIST.BULLET.2
  30762. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30763. ></RBW-MARKER
  30764. ><RBW-PARABODY>If a phase or system in the source object version contains no conflicting elements, show the phase or system but not the elements that it contains.</RBW-PARABODY
  30765. ></LB2.LIST.BULLET.2
  30766. ></LABEL
  30767. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30768. >How to display details about an element</L.LABEL
  30769. ><B.BODY>Use the following commands to display information about an element:</B.BODY
  30770. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30771. ></RBW-AUTOGEN
  30772. ></RBW-MARKER
  30773. ><RBW-PARABODY>File | Info displays a dialog box that shows</RBW-PARABODY
  30774. ></LB.LIST.BULLET
  30775. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30776. ></RBW-MARKER
  30777. ><RBW-PARABODY>For an object version, where the source and target versions of the element are selected.</RBW-PARABODY
  30778. ></LB2.LIST.BULLET.2
  30779. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30780. ></RBW-MARKER
  30781. ><RBW-PARABODY>For an item, the scope of the source and the target element.</RBW-PARABODY
  30782. ></LB2.LIST.BULLET.2
  30783. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30784. ></RBW-MARKER
  30785. ><RBW-PARABODY>For a property, the value of the source and the target element.</RBW-PARABODY
  30786. ></LB2.LIST.BULLET.2
  30787. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30788. ></RBW-AUTOGEN
  30789. ></RBW-MARKER
  30790. ><RBW-PARABODY>File | Open Source opens an editor for the source version of the element. Available for File versions only.</RBW-PARABODY
  30791. ></LB.LIST.BULLET
  30792. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30793. ></RBW-AUTOGEN
  30794. ></RBW-MARKER
  30795. ><RBW-PARABODY>File | Open Target opens an editor for the target version of the element. Available for File versions only. </RBW-PARABODY
  30796. ></LB.LIST.BULLET
  30797. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  30798. ></RBW-AUTOGEN
  30799. >When examining conflicting file versions, you might find it useful to compare them. See <RBW-XREF REFID="19986" TYPE="XREF-TEXTCOPY">Comparing File Versions</RBW-XREF
  30800. >.</T.TIP
  30801. ></LABEL
  30802. ></SUBSECTION
  30803. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22277"></RBW-ANCHOR
  30804. >Merging the Source Elements Into the Target</SS.SUBSEC.HEAD
  30805. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30806. >Merge all source elements</L.LABEL
  30807. ><B.BODY>Use the Merge window to merge the source elements into the target. To completely merge the source object version into the target object version, you must merge into the target <CX5FX5FEMPHASIS>all</CX5FX5FEMPHASIS
  30808. > of the source elements listed in the Merge window.</B.BODY
  30809. ></LABEL
  30810. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30811. >How to merge source elements into the target</L.LABEL
  30812. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  30813. ></RBW-AUTOGEN
  30814. ></RBW-MARKER
  30815. ><RBW-PARABODY>To merge source elements into the target object version:</RBW-PARABODY
  30816. ></P.PROCEDURE
  30817. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  30818. ></RBW-AUTOGEN
  30819. ></RBW-MARKER
  30820. ><RBW-PARABODY>Select one or more source elements in the Information area of the Merge window.</RBW-PARABODY
  30821. ></LN.LIST.NUM
  30822. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  30823. ></RBW-AUTOGEN
  30824. >To select multiple elements, press and hold the Control key while selecting the elements, or use the Edit | Select All and Edit | Invert Selection commands.</T2.TIP.2
  30825. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  30826. ></RBW-AUTOGEN
  30827. ></RBW-MARKER
  30828. ><RBW-PARABODY>Select one of the following commands from the Version menu:</RBW-PARABODY
  30829. ></LN.LIST.NUM
  30830. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30831. ></RBW-MARKER
  30832. ><RBW-PARABODY><RBW-XREF REFID="14540" TYPE="XREF-TEXTCOPY">Merge command</RBW-XREF
  30833. ></RBW-PARABODY
  30834. ></LB2.LIST.BULLET.2
  30835. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30836. ></RBW-MARKER
  30837. ><RBW-PARABODY><RBW-XREF REFID="24858" TYPE="XREF-TEXTCOPY">Overwrite command</RBW-XREF
  30838. ></RBW-PARABODY
  30839. ></LB2.LIST.BULLET.2
  30840. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  30841. ></RBW-MARKER
  30842. ><RBW-PARABODY><RBW-XREF REFID="37744" TYPE="XREF-TEXTCOPY">Create Merge Link command</RBW-XREF
  30843. ></RBW-PARABODY
  30844. ></LB2.LIST.BULLET.2
  30845. ><LR.LIST.RESULT>ObjectTeam executes the command and removes the selected elements from the Information area of the Merge window.</LR.LIST.RESULT
  30846. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  30847. ></RBW-AUTOGEN
  30848. ></RBW-MARKER
  30849. ><RBW-PARABODY>Repeat steps 1 and 2 until all source elements have been merged into the target.</RBW-PARABODY
  30850. ></LN.LIST.NUM
  30851. ></LABEL
  30852. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30853. ><RBW-ANCHOR ID="14540"></RBW-ANCHOR
  30854. >Merge command</L.LABEL
  30855. ><B.BODY>Select the Merge command when either</B.BODY
  30856. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30857. ></RBW-AUTOGEN
  30858. ></RBW-MARKER
  30859. ><RBW-PARABODY>the selected source element is a phase or system and you want to merge the source version into the target version.</RBW-PARABODY
  30860. ></LB.LIST.BULLET
  30861. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  30862. ></RBW-AUTOGEN
  30863. >If the source version of the phase or system contains an element that conflicts with the target, that element is not merged. It remains in the Merge window.</N2.NOTE.2
  30864. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30865. ></RBW-AUTOGEN
  30866. ></RBW-MARKER
  30867. ><RBW-PARABODY>the selected source element is in a System version (it is a file, property, or item), it does not conflict with the target, and you want to use the source version of the element.</RBW-PARABODY
  30868. ></LB.LIST.BULLET
  30869. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30870. >Example</SL.SUBLABEL
  30871. ><B.BODY>In the following example, you are merging the dev1 configuration into the main configuration. The dev1 configuration contains only one phase. When the Merge window appears, you select the phase and then select the Merge command. The following table shows the effect of the Merge command. Explanatory notes follow the table.</B.BODY
  30872. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="171p"><COLSPEC COLNAME="2" COLWIDTH="171p"><COLSPEC COLNAME="3" COLWIDTH="171p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Source</CELLHEADING
  30873. ></ENTRY
  30874. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Target</CELLHEADING
  30875. ></ENTRY
  30876. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>New (Merged) Target</CELLHEADING
  30877. ></ENTRY
  30878. ></RBW-ROW
  30879. ></THEAD
  30880. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dev1 (v1)</CELLBODY
  30881. ><CELLBODY>   ObjectDesign (dev.1)</CELLBODY
  30882. ><CELLBODY>      systemA (dev.1)</CELLBODY
  30883. ><CELLBODY>         diagram1 (main.7)</CELLBODY
  30884. ><CELLBODY>         diagram2 (dev.1)</CELLBODY
  30885. ><CELLBODY>         classMatrix2 (dev.2)</CELLBODY
  30886. ><CELLBODY>         item1 (phaseDef)</CELLBODY
  30887. ><CELLBODY>         item2 (system)</CELLBODY
  30888. ><CELLBODY>         item3 (phaseDef)</CELLBODY
  30889. ><CELLBODY>         FreeText: newValue</CELLBODY
  30890. ></ENTRY
  30891. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>main (v1)</CELLBODY
  30892. ><CELLBODY>   Analysis (main.3)</CELLBODY
  30893. ><CELLBODY>   SystemDesign (main.5)</CELLBODY
  30894. ><CELLBODY>   ObjectDesign (main.4)</CELLBODY
  30895. ><CELLBODY>      systemA (main.10)</CELLBODY
  30896. ><CELLBODY>         diagram1 (main.7)</CELLBODY
  30897. ><CELLBODY>         diagram2 (main.6)</CELLBODY
  30898. ><CELLBODY>         classMatrix2 (main.8)</CELLBODY
  30899. ><CELLBODY>         item1 (phaseDef)</CELLBODY
  30900. ><CELLBODY>         item2 (system)</CELLBODY
  30901. ><CELLBODY>         FreeText: valueX</CELLBODY
  30902. ><CELLBODY>      systemB (main.4)</CELLBODY
  30903. ><CELLBODY>      systemC (main.2)</CELLBODY
  30904. ></ENTRY
  30905. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>main (v2)</CELLBODY
  30906. ><CELLBODY>   Analysis (main.3)</CELLBODY
  30907. ><CELLBODY>   SystemDesign (main.5)</CELLBODY
  30908. ><CELLBODY>   ObjectDesign (main.5)</CELLBODY
  30909. ><CELLBODY>      systemA (main.11)</CELLBODY
  30910. ><CELLBODY>         diagram1 (main.7)</CELLBODY
  30911. ><CELLBODY>         classMatrix2 (dev.2)</CELLBODY
  30912. ><CELLBODY>         item1 (phaseDef)</CELLBODY
  30913. ><CELLBODY>         item2 (system)</CELLBODY
  30914. ><CELLBODY>         item3 (phaseDef)</CELLBODY
  30915. ><CELLBODY>         FreeText: **conflict**</CELLBODY
  30916. ><CELLBODY>      systemB (main.4)</CELLBODY
  30917. ><CELLBODY>      systemC (main.2)</CELLBODY
  30918. ></ENTRY
  30919. ></RBW-ROW
  30920. ></TBODY
  30921. ></TGROUP
  30922. ><RBW-ICONIZE></RBW-TABLE
  30923. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30924. ></RBW-AUTOGEN
  30925. ></RBW-MARKER
  30926. ><RBW-PARABODY>The target configuration, main (v1) is frozen, therefore, ObjectTeam creates a new version of the target configuration, main (v2).</RBW-PARABODY
  30927. ></LB.LIST.BULLET
  30928. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30929. ></RBW-AUTOGEN
  30930. ></RBW-MARKER
  30931. ><RBW-PARABODY>All elements in the dev1 configuration are either new or directly derived from the main configuration. Therefore, none of the source elements conflict with the target.</RBW-PARABODY
  30932. ></LB.LIST.BULLET
  30933. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30934. ></RBW-AUTOGEN
  30935. ></RBW-MARKER
  30936. ><RBW-PARABODY>The dev1 configuration contains a new version of the Object Design phase, therefore, ObjectTeam creates a new version of the Object Design phase (main.5) in main (v2).</RBW-PARABODY
  30937. ></LB.LIST.BULLET
  30938. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30939. ></RBW-AUTOGEN
  30940. ></RBW-MARKER
  30941. ><RBW-PARABODY>The source Object Design phase contains a new version of systemA. In this example, the target version of systemA (main.10) has also been changed; therefore, ObjectTeam creates a new version of systemA (main.11) in the target Object Design phase.</RBW-PARABODY
  30942. ></LB.LIST.BULLET
  30943. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  30944. ></RBW-AUTOGEN
  30945. >If the target version of systemA (main.10) had not been changed, the source version of systemA (dev.1) would be selected in main (v2).</N2.NOTE.2
  30946. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30947. ></RBW-AUTOGEN
  30948. ></RBW-MARKER
  30949. ><RBW-PARABODY>The source version of systemA contains new versions of diagram2 and classMatrix2, therefore, ObjectTeam selects these new versions in the target version of systemA.</RBW-PARABODY
  30950. ></LB.LIST.BULLET
  30951. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30952. ></RBW-AUTOGEN
  30953. ></RBW-MARKER
  30954. ><RBW-PARABODY>The source version of systemA contains a new item, item3, therefore, ObjectTeam copies this new item to the target version of systemA.</RBW-PARABODY
  30955. ></LB.LIST.BULLET
  30956. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  30957. ></RBW-AUTOGEN
  30958. ></RBW-MARKER
  30959. ><RBW-PARABODY>The source version of systemA has a new value for the FreeText property. It conflicts with the target value, so cannot be merged.</RBW-PARABODY
  30960. ></LB.LIST.BULLET
  30961. ></LABEL
  30962. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30963. ><RBW-ANCHOR ID="24858"></RBW-ANCHOR
  30964. >Overwrite command</L.LABEL
  30965. ><B.BODY>Select the Overwrite command when the source element conflicts with the target and you want to use the source version of the selected element instead of the target version.</B.BODY
  30966. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  30967. ></RBW-AUTOGEN
  30968. >The Overwrite command is only available when the source element conflicts with the target.</N.NOTE
  30969. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  30970. >Example</SL.SUBLABEL
  30971. ><B.BODY>In the following example, you are merging the dev1 configuration into the main configuration. Both configurations are frozen.</B.BODY
  30972. ><B.BODY>The source version of the Object Design phase (ObjectDesign, dev.1) is directly derived from target version. The source version of systemA (systemA, dev.1) is not directly derived from the target version. When the Merge window appears, it indicates that the source version of systemA conflicts with the target version.</B.BODY
  30973. ><B.BODY>You select systemA and then select the Overwrite command. The following table shows the effect of the Overwrite command. Explanatory notes follow the table.</B.BODY
  30974. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="171p"><COLSPEC COLNAME="2" COLWIDTH="171p"><COLSPEC COLNAME="3" COLWIDTH="171p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Source</CELLHEADING
  30975. ></ENTRY
  30976. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Target</CELLHEADING
  30977. ></ENTRY
  30978. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>New (Merged) target</CELLHEADING
  30979. ></ENTRY
  30980. ></RBW-ROW
  30981. ></THEAD
  30982. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dev1 (v1)</CELLBODY
  30983. ><CELLBODY>   ObjectDesign (dev.1)</CELLBODY
  30984. ><CELLBODY>      systemA (dev.1)</CELLBODY
  30985. ><CELLBODY>         diagram1 (main.7)</CELLBODY
  30986. ><CELLBODY>         classMatrix2 (dev.2)</CELLBODY
  30987. ><CELLBODY>         item1 (phaseDef)</CELLBODY
  30988. ><CELLBODY>         item2 (system)</CELLBODY
  30989. ><CELLBODY>         item3 (phaseDef)</CELLBODY
  30990. ><CELLBODY>         FreeText: newValue</CELLBODY
  30991. ></ENTRY
  30992. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>main (v1)</CELLBODY
  30993. ><CELLBODY>   Analysis (main.3)</CELLBODY
  30994. ><CELLBODY>   SystemDesign (main.5)</CELLBODY
  30995. ><CELLBODY>   ObjectDesign (main.4)</CELLBODY
  30996. ><CELLBODY>      systemA (main.10)</CELLBODY
  30997. ><CELLBODY>         diagram1 (main.7)</CELLBODY
  30998. ><CELLBODY>         classMatrix2 (main.8)</CELLBODY
  30999. ><CELLBODY>         item1 (phaseDef)</CELLBODY
  31000. ><CELLBODY>         item2 (system)</CELLBODY
  31001. ><CELLBODY>         FreeText: valueX</CELLBODY
  31002. ><CELLBODY>      systemB (main.4)</CELLBODY
  31003. ><CELLBODY>      systemC (main.2)</CELLBODY
  31004. ></ENTRY
  31005. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>main (v2)</CELLBODY
  31006. ><CELLBODY>   Analysis (main.3)</CELLBODY
  31007. ><CELLBODY>   SystemDesign (main.5)</CELLBODY
  31008. ><CELLBODY>   ObjectDesign (main.5)</CELLBODY
  31009. ><CELLBODY>      systemA (dev.1)</CELLBODY
  31010. ><CELLBODY>      systemB (main.4)</CELLBODY
  31011. ><CELLBODY>      systemC (main.2)</CELLBODY
  31012. ></ENTRY
  31013. ></RBW-ROW
  31014. ></TBODY
  31015. ></TGROUP
  31016. ><RBW-ICONIZE></RBW-TABLE
  31017. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31018. ></RBW-AUTOGEN
  31019. ></RBW-MARKER
  31020. ><RBW-PARABODY>To create a new system version in the target configuration, ObjectTeam must first create a new configuration version (main, v2) and a new phase version (ObjectDesign, main.5).</RBW-PARABODY
  31021. ></LB.LIST.BULLET
  31022. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31023. ></RBW-AUTOGEN
  31024. ></RBW-MARKER
  31025. ><RBW-PARABODY>In the new target phase version, ObjectTeam can now select the source version of systemA.</RBW-PARABODY
  31026. ></LB.LIST.BULLET
  31027. ></LABEL
  31028. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31029. ><RBW-ANCHOR ID="37744"></RBW-ANCHOR
  31030. >Create Merge Link command</L.LABEL
  31031. ><B.BODY>Select the Create Merge Link command when you want to use the target version of the selected element rather than the source version. </B.BODY
  31032. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  31033. ></RBW-AUTOGEN
  31034. >The Create Merge Link command is only available when the source element is an object version. It is not available when the source element is a property or item.</N.NOTE
  31035. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31036. >Merge Links</SL.SUBLABEL
  31037. ><B.BODY>To store the fact that you want to use the target version of an element instead of the source version, ObjectTeam adds a Merge Link to the target version. The Merge Link points from the source version to the target version. In the future, when you merge these source and target versions, ObjectTeam sees the Merge Link and ignores the source version.</B.BODY
  31038. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  31039. ></RBW-AUTOGEN
  31040. >You can display, create, and delete Merge Links in the Version Browser, as described in <RBW-XREF REFID="11562" TYPE="XREF-TEXTCOPY">Working With Merge Links</RBW-XREF
  31041. >.</N.NOTE
  31042. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31043. >Example</SL.SUBLABEL
  31044. ><B.BODY>In the following example, you are merging the dev1 configuration into the main configuration. Both configurations are frozen.</B.BODY
  31045. ><B.BODY>The source version of the Object Design phase (ObjectDesign, dev.1) is directly derived from target version. The source version of systemA (systemA, dev.1) is not directly derived from the target version. When the Merge window appears, it indicates that the source version of systemA conflicts with the target version.</B.BODY
  31046. ><B.BODY>You select systemA and then select the Create Merge Link command. The following table shows the effect of the Create Merge Link command. The new target version of systemA (main.11) is identical to the old target version (main.10), except for the addition of the Merge Link.</B.BODY
  31047. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="171p"><COLSPEC COLNAME="2" COLWIDTH="171p"><COLSPEC COLNAME="3" COLWIDTH="171p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Source</CELLHEADING
  31048. ></ENTRY
  31049. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Target</CELLHEADING
  31050. ></ENTRY
  31051. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>New (Merged) target</CELLHEADING
  31052. ></ENTRY
  31053. ></RBW-ROW
  31054. ></THEAD
  31055. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dev1 (v1)</CELLBODY
  31056. ><CELLBODY>   ObjectDesign (dev.1)</CELLBODY
  31057. ><CELLBODY>      systemA (dev.1)</CELLBODY
  31058. ><CELLBODY>         diagram1 (main.7)</CELLBODY
  31059. ><CELLBODY>         classMatrix2 (dev.2)</CELLBODY
  31060. ><CELLBODY>         item1 (phaseDef)</CELLBODY
  31061. ><CELLBODY>         item2 (system)</CELLBODY
  31062. ><CELLBODY>         item3 (phaseDef)</CELLBODY
  31063. ><CELLBODY>         FreeText: newValue</CELLBODY
  31064. ></ENTRY
  31065. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>main (v1)</CELLBODY
  31066. ><CELLBODY>   Analysis (main.3)</CELLBODY
  31067. ><CELLBODY>   SystemDesign (main.5)</CELLBODY
  31068. ><CELLBODY>   ObjectDesign (main.4)</CELLBODY
  31069. ><CELLBODY>      systemA (main.10)</CELLBODY
  31070. ><CELLBODY>         diagram1 (main.7)</CELLBODY
  31071. ><CELLBODY>         classMatrix2 (main.8)</CELLBODY
  31072. ><CELLBODY>         item1 (phaseDef)</CELLBODY
  31073. ><CELLBODY>         item2 (system)</CELLBODY
  31074. ><CELLBODY>         FreeText: valueX</CELLBODY
  31075. ><CELLBODY>      systemB (main.4)</CELLBODY
  31076. ><CELLBODY>      systemC (main.2)</CELLBODY
  31077. ></ENTRY
  31078. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>main (v2)</CELLBODY
  31079. ><CELLBODY>   Analysis (main.3)</CELLBODY
  31080. ><CELLBODY>   SystemDesign (main.5)</CELLBODY
  31081. ><CELLBODY>   ObjectDesign (main.5)</CELLBODY
  31082. ><CELLBODY>      systemA (main.11)</CELLBODY
  31083. ><CELLBODY>      systemB (main.4)</CELLBODY
  31084. ><CELLBODY>      systemC (main.2)</CELLBODY
  31085. ></ENTRY
  31086. ></RBW-ROW
  31087. ></TBODY
  31088. ></TGROUP
  31089. ><RBW-ICONIZE></RBW-TABLE
  31090. ></LABEL
  31091. ></SUBSECTION
  31092. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="11562"></RBW-ANCHOR
  31093. >Working With Merge Links</SS.SUBSEC.HEAD
  31094. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31095. >Definition</L.LABEL
  31096. ><B.BODY>A Merge Link is stored on a target object version. It points from a source object version to the target object version. When you merge the source version into the target version, ObjectTeam sees the Merge Link and ignores the source version. Merge Links are only used during merge.</B.BODY
  31097. ></LABEL
  31098. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31099. >How to view Merge Links</L.LABEL
  31100. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31101. ></RBW-AUTOGEN
  31102. ></RBW-MARKER
  31103. ><RBW-PARABODY>To view Merge Links, use the Version Browser:</RBW-PARABODY
  31104. ></P.PROCEDURE
  31105. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31106. ></RBW-AUTOGEN
  31107. ></RBW-MARKER
  31108. ><RBW-PARABODY>In the Browser, or Merge window, select an object version that has a Merge Link.</RBW-PARABODY
  31109. ></LN.LIST.NUM
  31110. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31111. ></RBW-AUTOGEN
  31112. ></RBW-MARKER
  31113. ><RBW-PARABODY>Select Version | Version Browser.</RBW-PARABODY
  31114. ></LN.LIST.NUM
  31115. ><LR.LIST.RESULT>The Version Browser appears. It displays all versions of the object, including any Merge Links between versions.</LR.LIST.RESULT
  31116. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31117. >For more information</SL.SUBLABEL
  31118. ><B.BODY>See <RBW-XREF REFID="34596" TYPE="XREF-TEXTCOPY">Version Browser</RBW-XREF
  31119. > for a complete description of the Version Browser.</B.BODY
  31120. ></LABEL
  31121. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31122. >How to create a Merge Link</L.LABEL
  31123. ><B.BODY>Typically, you create Merge Links during a merge operation, as described in <RBW-XREF REFID="37744" TYPE="XREF-TEXTCOPY">Create Merge Link command</RBW-XREF
  31124. >. You can also create Merge Links in the Version Browser.</B.BODY
  31125. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31126. ></RBW-AUTOGEN
  31127. ></RBW-MARKER
  31128. ><RBW-PARABODY>To create a Merge Link in the Version Browser:</RBW-PARABODY
  31129. ></P.PROCEDURE
  31130. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31131. ></RBW-AUTOGEN
  31132. ></RBW-MARKER
  31133. ><RBW-PARABODY>In the Version Browser, display the object for which you want to create a Merge Link.</RBW-PARABODY
  31134. ></LN.LIST.NUM
  31135. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31136. ></RBW-AUTOGEN
  31137. ></RBW-MARKER
  31138. ><RBW-PARABODY>Select the source object version.</RBW-PARABODY
  31139. ></LN.LIST.NUM
  31140. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  31141. ></RBW-AUTOGEN
  31142. ></RBW-MARKER
  31143. ><RBW-PARABODY>Select the target object version.</RBW-PARABODY
  31144. ></LN.LIST.NUM
  31145. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  31146. ></RBW-AUTOGEN
  31147. ></RBW-MARKER
  31148. ><RBW-PARABODY>Select Version | Create Merge Link.</RBW-PARABODY
  31149. ></LN.LIST.NUM
  31150. ><LR.LIST.RESULT>ObjectTeam adds to the target object version a Merge Link that points from the source version to the target version.</LR.LIST.RESULT
  31151. ></LABEL
  31152. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31153. >How to delete a Merge Link</L.LABEL
  31154. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31155. ></RBW-AUTOGEN
  31156. ></RBW-MARKER
  31157. ><RBW-PARABODY>To delete a Merge Link, use the Version Browser:</RBW-PARABODY
  31158. ></P.PROCEDURE
  31159. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31160. ></RBW-AUTOGEN
  31161. ></RBW-MARKER
  31162. ><RBW-PARABODY>In the Version Browser, display the object version that has the Merge Link.</RBW-PARABODY
  31163. ></LN.LIST.NUM
  31164. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31165. ></RBW-AUTOGEN
  31166. ></RBW-MARKER
  31167. ><RBW-PARABODY>Select the source version of the Merge Link.</RBW-PARABODY
  31168. ></LN.LIST.NUM
  31169. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  31170. ></RBW-AUTOGEN
  31171. ></RBW-MARKER
  31172. ><RBW-PARABODY>Select the target version of the Merge Link.</RBW-PARABODY
  31173. ></LN.LIST.NUM
  31174. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  31175. ></RBW-AUTOGEN
  31176. ></RBW-MARKER
  31177. ><RBW-PARABODY>Select Version | Delete Merge Link.</RBW-PARABODY
  31178. ></LN.LIST.NUM
  31179. ></LABEL
  31180. ></SUBSECTION
  31181. ></SECTION
  31182. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28900"></RBW-ANCHOR
  31183. >Merge Rules</S.SECTION.HEAD
  31184. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31185. >What source elements are merged</L.LABEL
  31186. ><B.BODY>When you merge a source configuration, phase, or system version into a target source configuration, phase, or system version, ObjectTeam merges each source element into the target. The following table lists the elements that appear in system, phase, and configuration versions.</B.BODY
  31187. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="153p"><COLSPEC COLNAME="2" COLWIDTH="297p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Version</CELLHEADING
  31188. ></ENTRY
  31189. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Elements It Contains</CELLHEADING
  31190. ></ENTRY
  31191. ></RBW-ROW
  31192. ></THEAD
  31193. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System version</CELLBODY
  31194. ></ENTRY
  31195. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Selected file versions</CELLBODY
  31196. ><CELLBODY>Selected group versions</CELLBODY
  31197. ><CELLBODY>Selected customization file versions</CELLBODY
  31198. ><CELLBODY>Reused corporate group versions</CELLBODY
  31199. ><CELLBODY>System&truehy;level properties</CELLBODY
  31200. ><CELLBODY>Items</CELLBODY
  31201. ><CELLBODY>Item properties</CELLBODY
  31202. ></ENTRY
  31203. ></RBW-ROW
  31204. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase version</CELLBODY
  31205. ></ENTRY
  31206. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Selected system versions (as described above)</CELLBODY
  31207. ><CELLBODY>Selected customization file versions</CELLBODY
  31208. ><CELLBODY>Phase&truehy;level properties</CELLBODY
  31209. ></ENTRY
  31210. ></RBW-ROW
  31211. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration version</CELLBODY
  31212. ></ENTRY
  31213. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Selected phase versions (as described above)</CELLBODY
  31214. ><CELLBODY>Selected customization file versions</CELLBODY
  31215. ><CELLBODY>Configuration&truehy;level properties</CELLBODY
  31216. ></ENTRY
  31217. ></RBW-ROW
  31218. ></TBODY
  31219. ></TGROUP
  31220. ></RBW-TABLE
  31221. ></LABEL
  31222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31223. >Comparing source and target elements</L.LABEL
  31224. ><B.BODY>How ObjectTeam compares source and target elements depends on the object type of the element:</B.BODY
  31225. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31226. ></RBW-AUTOGEN
  31227. ></RBW-MARKER
  31228. ><RBW-PARABODY>If the element is an object version (for example, a phase, system, or file) ObjectTeam compares the version numbers of the source and target object versions. </RBW-PARABODY
  31229. ></LB.LIST.BULLET
  31230. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31231. ></RBW-AUTOGEN
  31232. ></RBW-MARKER
  31233. ><RBW-PARABODY>If the element is an item, ObjectTeam compares the name, type, and scope of the source and target items.</RBW-PARABODY
  31234. ></LB.LIST.BULLET
  31235. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31236. ></RBW-AUTOGEN
  31237. ></RBW-MARKER
  31238. ><RBW-PARABODY>If the element is a property, ObjectTeam compares the values of the source and target properties.</RBW-PARABODY
  31239. ></LB.LIST.BULLET
  31240. ><B.BODY>The remainder of this section describes the merge rules for each type of object.</B.BODY
  31241. ></LABEL
  31242. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31243. ><RBW-ANCHOR ID="41435"></RBW-ANCHOR
  31244. >File versions</L.LABEL
  31245. ><BI.BODY.INTRO>When merging a source system into a target system, ObjectTeam examines each file version selected in the source system:</BI.BODY.INTRO
  31246. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31247. ></RBW-AUTOGEN
  31248. ></RBW-MARKER
  31249. ><RBW-PARABODY>If no version of the file is selected in the target system, ObjectTeam can merge the source file version into the target.</RBW-PARABODY
  31250. ></LB.LIST.BULLET
  31251. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31252. ></RBW-AUTOGEN
  31253. ></RBW-MARKER
  31254. ><RBW-PARABODY>If the source and target versions of the file are derived from one another, ObjectTeam can merge the source file version into the target.</RBW-PARABODY
  31255. ></LB.LIST.BULLET
  31256. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  31257. ></RBW-AUTOGEN
  31258. >To see which version is more recent, compare the Base Version, To Version, and From Version columns in the Merge window. If the Base and To Versions are the same, the From (source) Version is more recent. If the Base and From Versions are the same, the To (target) Version is more recent.</T2.TIP.2
  31259. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31260. ></RBW-AUTOGEN
  31261. ></RBW-MARKER
  31262. ><RBW-PARABODY>If the source and target versions of the file are not derived from one another, the source version conflicts with the target version.</RBW-PARABODY
  31263. ></LB.LIST.BULLET
  31264. ></LABEL
  31265. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31266. >Group versions</L.LABEL
  31267. ><B.BODY>When merging a source system into a target system, ObjectTeam examines each group version selected in the source system. The rules for examining group versions are the same as those for examining file versions (see <RBW-XREF REFID="41435" TYPE="XREF-TEXTCOPY">File versions</RBW-XREF
  31268. >).</B.BODY
  31269. ></LABEL
  31270. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31271. >Customization file versions</L.LABEL
  31272. ><B.BODY>When merging a source system, phase, or configuration into a target system, phase, or configuration ObjectTeam examines each customization file version selected in the source system, phase, or configuration. The rules for examining customization file versions are the same as those for examining file versions (see <RBW-XREF REFID="41435" TYPE="XREF-TEXTCOPY">File versions</RBW-XREF
  31273. >).</B.BODY
  31274. ></LABEL
  31275. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31276. >Reused corporate group versions</L.LABEL
  31277. ><B.BODY>When merging a source system into a target system, ObjectTeam examines each reused corporate group version selected in the source system:</B.BODY
  31278. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31279. ></RBW-AUTOGEN
  31280. ></RBW-MARKER
  31281. ><RBW-PARABODY>If no version of the corporate group is selected in the target system, ObjectTeam can merge the source corporate group version into the target.</RBW-PARABODY
  31282. ></LB.LIST.BULLET
  31283. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31284. ></RBW-AUTOGEN
  31285. ></RBW-MARKER
  31286. ><RBW-PARABODY>If a different version of the corporate group version is reused in the target system, ObjectTeam can merge the source corporate group version into the target.</RBW-PARABODY
  31287. ></LB.LIST.BULLET
  31288. ></LABEL
  31289. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31290. >Items</L.LABEL
  31291. ><BI.BODY.INTRO>When merging a source system into a target system, ObjectTeam examines each item in the source system:</BI.BODY.INTRO
  31292. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31293. ></RBW-AUTOGEN
  31294. ></RBW-MARKER
  31295. ><RBW-PARABODY>If the item does not exist in the target system</RBW-PARABODY
  31296. ></LB.LIST.BULLET
  31297. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  31298. ></RBW-MARKER
  31299. ><RBW-PARABODY>and ObjectTeam can create it in the target using the same scope that is used in the source, ObjectTeam can merge the item into the target.</RBW-PARABODY
  31300. ></LB2.LIST.BULLET.2
  31301. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  31302. ></RBW-MARKER
  31303. ><RBW-PARABODY>and ObjectTeam cannot create it in the target using the same scope that is used in the source, then the item conflicts with the target.</RBW-PARABODY
  31304. ></LB2.LIST.BULLET.2
  31305. ><LT.LIST.TEXT>After merging the source item into the target system, ObjectTeam copies the source item properties into the target, as described in <RBW-XREF REFID="27757" TYPE="XREF-TEXTCOPY">Properties</RBW-XREF
  31306. >.</LT.LIST.TEXT
  31307. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31308. ></RBW-AUTOGEN
  31309. ></RBW-MARKER
  31310. ><RBW-PARABODY>If the item exists in the target system, and the scope of the source item is different than the scope of the target item, the source item conflicts with the target.</RBW-PARABODY
  31311. ></LB.LIST.BULLET
  31312. ></LABEL
  31313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31314. ><RBW-ANCHOR ID="27757"></RBW-ANCHOR
  31315. >Properties</L.LABEL
  31316. ><B.BODY>When merging a source system, phase, or configuration into a target system, phase, or configuration ObjectTeam examines each property in the source system, phase, or configuration.</B.BODY
  31317. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  31318. ></RBW-AUTOGEN
  31319. >The same rules are used for all properties (system&truehy;, phase&truehy;, and configuration&truehy;level properties, as well as item properties).</N.NOTE
  31320. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31321. >Background</SL.SUBLABEL
  31322. ><B.BODY>To determine which property values to use, ObjectTeam compares three values:</B.BODY
  31323. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31324. ></RBW-AUTOGEN
  31325. ></RBW-MARKER
  31326. ><RBW-PARABODY>Source property — the value of the property as defined in the source item, system, phase, or configuration. If the source property is not set, its value is null.</RBW-PARABODY
  31327. ></LB.LIST.BULLET
  31328. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31329. ></RBW-AUTOGEN
  31330. ></RBW-MARKER
  31331. ><RBW-PARABODY>Target property — the value of the property as defined in the target item, system, phase, or configuration. If the target property is not set, its value is null.</RBW-PARABODY
  31332. ></LB.LIST.BULLET
  31333. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31334. ></RBW-AUTOGEN
  31335. ></RBW-MARKER
  31336. ><RBW-PARABODY>Base property — the value of the property as defined in the base system, phase, or configuration. The base version is the version from which both the source and target versions are derived. If the base property is not set, or the source and target versions are not derived from the same version, the base property is null.</RBW-PARABODY
  31337. ></LB.LIST.BULLET
  31338. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31339. >Rules</SL.SUBLABEL
  31340. ><B.BODY>ObjectTeam uses the following rules to examine each source property:</B.BODY
  31341. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31342. ></RBW-AUTOGEN
  31343. ></RBW-MARKER
  31344. ><RBW-PARABODY>If the source and target properties are different, the target property is not null, and the base property is the same as either the target or the source, ObjectTeam can merge the source property into the target.</RBW-PARABODY
  31345. ></LB.LIST.BULLET
  31346. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  31347. ></RBW-AUTOGEN
  31348. >To see which property value is more recent, compare the base, source, and target values. If the base and source are the same, the target is more recent. If the base and target are the same, the source is more recent.</T2.TIP.2
  31349. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31350. ></RBW-AUTOGEN
  31351. ></RBW-MARKER
  31352. ><RBW-PARABODY>If the target and base properties are both null, ObjectTeam can merge the source property into the target.</RBW-PARABODY
  31353. ></LB.LIST.BULLET
  31354. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31355. ></RBW-AUTOGEN
  31356. ></RBW-MARKER
  31357. ><RBW-PARABODY>If the source, target, and base properties are all different, the source property conflicts with the target.</RBW-PARABODY
  31358. ></LB.LIST.BULLET
  31359. ></LABEL
  31360. ></SECTION
  31361. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="20556"></RBW-ANCHOR
  31362. >Merging Systems into Another Phase</S.SECTION.HEAD
  31363. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31364. >Introduction</L.LABEL
  31365. ><B.BODY>This section describes how to merge systems and their contents from one phase into the next, from Analysis into System Design, for example, or from System Design into Object Design.</B.BODY
  31366. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  31367. ></RBW-AUTOGEN
  31368. >You do not merge systems from the Object Design phase into the Implementation phase, but you generate their contents into language&truehy;specific code files using an ObjectTeam code generator. For details on generating code, see the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  31369. ><CX5FX5FTITLE></CX5FX5FTITLE
  31370. > for your target language.</N.NOTE
  31371. ></LABEL
  31372. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31373. >Phase boundaries</L.LABEL
  31374. ><B.BODY>Each phase is a shielded development area. Changes to a system in one phase do not (automatically) affect systems in any other phase. For example, work in the System Design phase does not change analysis data in the Analysis phase.</B.BODY
  31375. ><B.BODY>However, work done in one phase can affect systems in other phases. If you have merged a system from the Analysis phase into the System Design phase, you can go back and modify a new version of that system in the Analysis phase.</B.BODY
  31376. ><B.BODY>You must then decide whether those changes affect the system in the System Design phase and, if necessary, merge these changes into the System Design phase. These changes can be merged using ObjectTeam’s built&truehy;in merge mechanism.</B.BODY
  31377. ></LABEL
  31378. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31379. >Merging data</L.LABEL
  31380. ><B.BODY>When you merge systems into another phase, ObjectTeam actually carries out three tasks:</B.BODY
  31381. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31382. ></RBW-AUTOGEN
  31383. ></RBW-MARKER
  31384. ><RBW-PARABODY>It copies system data from one phase to the other </RBW-PARABODY
  31385. ></LB.LIST.BULLET
  31386. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31387. ></RBW-AUTOGEN
  31388. ></RBW-MARKER
  31389. ><RBW-PARABODY>It freezes the source system (needed to create a merge link)</RBW-PARABODY
  31390. ></LB.LIST.BULLET
  31391. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31392. ></RBW-AUTOGEN
  31393. ></RBW-MARKER
  31394. ><RBW-PARABODY>It creates merge links</RBW-PARABODY
  31395. ></LB.LIST.BULLET
  31396. ><B.BODY>ObjectTeam uses a mechanism called “merging” to carry out these tasks (see <RBW-XREF REFID="17775" TYPE="XREF-TEXTCOPY">Merging Configurations, Phases, and Systems</RBW-XREF
  31397. >).</B.BODY
  31398. ></LABEL
  31399. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31400. >How to merge systems</L.LABEL
  31401. ><B.BODY>You use the ObjectTeam Merge Window to merge data from one phase into the next. In the Merge Window, you select which system(s) you want to merge.</B.BODY
  31402. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31403. ></RBW-AUTOGEN
  31404. ></RBW-MARKER
  31405. ><RBW-PARABODY>To merge systems from the previous phase:</RBW-PARABODY
  31406. ></P.PROCEDURE
  31407. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31408. ></RBW-AUTOGEN
  31409. ></RBW-MARKER
  31410. ><RBW-PARABODY>In the ObjectTeam Browser, move to Phase into which you want to merge system data from the previous phase.</RBW-PARABODY
  31411. ></LN.LIST.NUM
  31412. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31413. ></RBW-AUTOGEN
  31414. ></RBW-MARKER
  31415. ><RBW-PARABODY>Select Utilities | Merge From Previous Phase</RBW-PARABODY
  31416. ></LN.LIST.NUM
  31417. ><LR.LIST.RESULT>The Merge Window appears.</LR.LIST.RESULT
  31418. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>For details:</CX5FX5FBULLET.EMPHASIS
  31419. > See <RBW-XREF REFID="40524" TYPE="XREF-TEXTCOPY">The ObjectTeam Merge Window</RBW-XREF
  31420. >.</LT.LIST.TEXT
  31421. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  31422. ></RBW-AUTOGEN
  31423. >If the Merge Window is empty, there is nothing to merge: the source object(s) are then identical to the target object(s).</N2.NOTE.2
  31424. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  31425. ></RBW-AUTOGEN
  31426. ></RBW-MARKER
  31427. ><RBW-PARABODY>In the Information Area of the ObjectTeam Merge Window, select the system(s) you want to merge.</RBW-PARABODY
  31428. ></LN.LIST.NUM
  31429. ><W2.WARNING.2><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  31430. ></RBW-AUTOGEN
  31431. >If you want to preserve any changes made in a system in the current phase, do only select non&truehy;conflicting systems. A system is non&truehy;conflicting if it has a No in the Conflict field. </W2.WARNING.2
  31432. ><LT.LIST.TEXT>See <RBW-XREF REFID="38403" TYPE="XREF-TEXTCOPY">Dealing with Merge Conflicts</RBW-XREF
  31433. > for details.</LT.LIST.TEXT
  31434. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  31435. ></RBW-AUTOGEN
  31436. ></RBW-MARKER
  31437. ><RBW-PARABODY>Select Version | Merge</RBW-PARABODY
  31438. ></LN.LIST.NUM
  31439. ><LR.LIST.RESULT>The data from the source system(s) is copied to the target phase, the source system(s) are frozen, and merge links are created.</LR.LIST.RESULT
  31440. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31441. >Merging from other Phase</SL.SUBLABEL
  31442. ><B.BODY>You can also merge system data from a Phase other than the previous, using Utilities | Merge From Other Phase. You select the source Phase from the Select Merge Source dialog box, after which the Merge Window appears.</B.BODY
  31443. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00275.unk" origfile="pics/dbmerge.gif" origtype="X" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  31444. ></FA.FIGURE.ANCHOR
  31445. ></LABEL
  31446. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40524"></RBW-ANCHOR
  31447. >The ObjectTeam Merge Window</SS.SUBSEC.HEAD
  31448. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31449. >Introduction</L.LABEL
  31450. ><B.BODY>The ObjectTeam Merge Window is very similar to the Merge Window that is used for merging versions (See <RBW-XREF REFID="40524" TYPE="XREF-TEXTCOPY">The ObjectTeam Merge Window</RBW-XREF
  31451. >). It contains two panes: </B.BODY
  31452. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31453. ></RBW-AUTOGEN
  31454. ></RBW-MARKER
  31455. ><RBW-PARABODY>Navigation area (at the left)</RBW-PARABODY
  31456. ></LB.LIST.BULLET
  31457. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31458. ></RBW-AUTOGEN
  31459. ></RBW-MARKER
  31460. ><RBW-PARABODY>Information area (at the right)</RBW-PARABODY
  31461. ></LB.LIST.BULLET
  31462. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00276.unk" origfile="../mg/pics/impwdw.gif" origtype="X" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  31463. ></FAR.FIGURE.ANCHOR.RIGHT
  31464. ></LABEL
  31465. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31466. >Information Area</L.LABEL
  31467. ><B.BODY>The Information Area lists the contents of the object selected in the Navigation Area. It contains the following columns:</B.BODY
  31468. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Column</CELLHEADING
  31469. ></ENTRY
  31470. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  31471. ></ENTRY
  31472. ></RBW-ROW
  31473. ></THEAD
  31474. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name</CELLBODY
  31475. ></ENTRY
  31476. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object name.</CELLBODY
  31477. ></ENTRY
  31478. ></RBW-ROW
  31479. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type</CELLBODY
  31480. ></ENTRY
  31481. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object type.</CELLBODY
  31482. ></ENTRY
  31483. ></RBW-ROW
  31484. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property Name</CELLBODY
  31485. ></ENTRY
  31486. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property name (only applicable for item and file properties)</CELLBODY
  31487. ></ENTRY
  31488. ></RBW-ROW
  31489. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Conflict</CELLBODY
  31490. ></ENTRY
  31491. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A value of No or Yes (see <RBW-XREF REFID="38403" TYPE="XREF-TEXTCOPY">Dealing with Merge Conflicts</RBW-XREF
  31492. >)</CELLBODY
  31493. ></ENTRY
  31494. ></RBW-ROW
  31495. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Base Version</CELLBODY
  31496. ></ENTRY
  31497. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version of <CX5FX5FVARIABLE>Name</CX5FX5FVARIABLE
  31498. > from which both the From Version and the To Version were derived. </CELLBODY
  31499. ><CELLBODY><CX5FX5FEMPHASIS>Tip</CX5FX5FEMPHASIS
  31500. >: If there is no Base Version, the From and To Versions are not derived from the same version.</CELLBODY
  31501. ></ENTRY
  31502. ></RBW-ROW
  31503. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>From Version</CELLBODY
  31504. ></ENTRY
  31505. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version of <CX5FX5FVARIABLE>Name</CX5FX5FVARIABLE
  31506. > (if any) that is selected in the source version of the object selected in the Navigation area. </CELLBODY
  31507. ><CELLBODY><CX5FX5FEMPHASIS>Tip</CX5FX5FEMPHASIS
  31508. >: If the Base Version and From Version are the same (or from the same configuration), and the To Version is different (or from a different configuration), the To Version is the most recent version.</CELLBODY
  31509. ></ENTRY
  31510. ></RBW-ROW
  31511. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>To Version</CELLBODY
  31512. ></ENTRY
  31513. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Version of <CX5FX5FVARIABLE>Name</CX5FX5FVARIABLE
  31514. > (if any) that is selected in the target version of the object selected in the Navigation area. </CELLBODY
  31515. ></ENTRY
  31516. ></RBW-ROW
  31517. ></TBODY
  31518. ></TGROUP
  31519. ></RBW-TABLE
  31520. ><B.BODY></B.BODY
  31521. ></LABEL
  31522. ></SUBSECTION
  31523. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38403"></RBW-ANCHOR
  31524. >Dealing with Merge Conflicts</SS.SUBSEC.HEAD
  31525. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31526. >When do objects conflict</L.LABEL
  31527. ><B.BODY>The source object conflicts with the target in either of the following situations:</B.BODY
  31528. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31529. ></RBW-AUTOGEN
  31530. ></RBW-MARKER
  31531. ><RBW-PARABODY>The names of the source and target objects are identical, but they are not directly derived from one another</RBW-PARABODY
  31532. ></LB.LIST.BULLET
  31533. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31534. ></RBW-AUTOGEN
  31535. ></RBW-MARKER
  31536. ><RBW-PARABODY>The source element is a System that contains conflicting objects</RBW-PARABODY
  31537. ></LB.LIST.BULLET
  31538. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  31539. ></RBW-AUTOGEN
  31540. >Conflicting objects can be identified in the Information Area of the ObjectTeam Merge Window by a Yes in the Conflict column.</T.TIP
  31541. ></LABEL
  31542. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31543. >Conflict example</L.LABEL
  31544. ><B.BODY>The following scenario is an example of how conflicts between objects can arise:</B.BODY
  31545. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31546. ></RBW-AUTOGEN
  31547. ></RBW-MARKER
  31548. ><RBW-PARABODY>You merged a system from the previous Phase into the current Phase</RBW-PARABODY
  31549. ></LN.LIST.NUM
  31550. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31551. ></RBW-AUTOGEN
  31552. ></RBW-MARKER
  31553. ><RBW-PARABODY>You have created a new version of the merged System in the current Phase and made changes to this new version: you have added attributes and operations to classes in CDs, for example.</RBW-PARABODY
  31554. ></LN.LIST.NUM
  31555. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  31556. ></RBW-AUTOGEN
  31557. ></RBW-MARKER
  31558. ><RBW-PARABODY>Somebody (maybe you) has created a new version of the corresponding System in the previous Phase, and has made changes too. Attributes have been added to existing classes, for example.</RBW-PARABODY
  31559. ></LN.LIST.NUM
  31560. ><B.BODY>The situation is now as follows:</B.BODY
  31561. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31562. ></RBW-AUTOGEN
  31563. ></RBW-MARKER
  31564. ><RBW-PARABODY>The System in the previous Phase contains features that are lacking in the corresponding system in the current Phase </RBW-PARABODY
  31565. ></LB.LIST.BULLET
  31566. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  31567. ></RBW-AUTOGEN
  31568. ></RBW-MARKER
  31569. ><RBW-PARABODY>The system in the current Phase contains features that are lacking in the corresponding system in the current Phase.</RBW-PARABODY
  31570. ></LB.LIST.BULLET
  31571. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00277.tif" origseq="33" origtype="I" origdoc="../../sources/pmg/vbparal.fm5.mif"></RBW-GRAPHIC
  31572. ></FA.FIGURE.ANCHOR
  31573. ><B.BODY>If you now merged version 2 of the previous Phase into the current Phase, the changes made to the classes in the current Phase would be lost, since the CDMs are copied from the other Phase. The CDMs related to existing classes are conflicting.</B.BODY
  31574. ><B.BODY>But if you do not merge the CDMs from the previous Phase, the changes made to the classes in the previous Phase will not be processed in the current Phase.</B.BODY
  31575. ><B.BODY>The conflict that has arisen must be resolved.</B.BODY
  31576. ></LABEL
  31577. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31578. >Resolving a conflict</L.LABEL
  31579. ><B.BODY>To resolve a conflict, you have to decide between <CX5FX5FEMPHASIS>preserving </CX5FX5FEMPHASIS
  31580. >the<CX5FX5FEMPHASIS> </CX5FX5FEMPHASIS
  31581. >conflicting target object<CX5FX5FEMPHASIS> </CX5FX5FEMPHASIS
  31582. >or<CX5FX5FEMPHASIS> overwriting</CX5FX5FEMPHASIS
  31583. > it.</B.BODY
  31584. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31585. >Preserving the target object</SL.SUBLABEL
  31586. ><B.BODY>When data is merged into another Phase, ObjectTeam normally copies data from the previous phase to the current. If you want to preserve your data, you do not want that to happen. Create a merge link to prevent ObjectTeam from overwriting the target object.</B.BODY
  31587. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31588. >Overwriting the target object</SL.SUBLABEL
  31589. ><B.BODY>If you want a conflicting target object to be overwritten by its corresponding source object, you merge the source object, or the system that contains the conflicting object. The source object will then be copied over the target object and a merge link will be created automatically.</B.BODY
  31590. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  31591. ></RBW-AUTOGEN
  31592. >Changes made to a new version of the target object will be lost.</W.WARNING
  31593. ></LABEL
  31594. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31595. >Creating merge links</L.LABEL
  31596. ><B.BODY>Create a merge link for target objects that you do not want to be overwritten by the source object during a merge action.</B.BODY
  31597. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31598. ></RBW-AUTOGEN
  31599. ></RBW-MARKER
  31600. ><RBW-PARABODY>To create a merge link:</RBW-PARABODY
  31601. ></P.PROCEDURE
  31602. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31603. ></RBW-AUTOGEN
  31604. ></RBW-MARKER
  31605. ><RBW-PARABODY>In the Merge Window, open the system that contains the conflicting target object.</RBW-PARABODY
  31606. ></LN.LIST.NUM
  31607. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31608. ></RBW-AUTOGEN
  31609. ></RBW-MARKER
  31610. ><RBW-PARABODY>Select the conflicting target object in the Information Area of the Merge Window.</RBW-PARABODY
  31611. ></LN.LIST.NUM
  31612. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  31613. ></RBW-AUTOGEN
  31614. ></RBW-MARKER
  31615. ><RBW-PARABODY>Select Version | Create Merge Link.</RBW-PARABODY
  31616. ></LN.LIST.NUM
  31617. ><LR.LIST.RESULT>The Link From ...To ... dialog box appears.</LR.LIST.RESULT
  31618. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  31619. ></RBW-AUTOGEN
  31620. ></RBW-MARKER
  31621. ><RBW-PARABODY>Enter an (optional) comment and click OK.</RBW-PARABODY
  31622. ></LN.LIST.NUM
  31623. ><LR.LIST.RESULT>A merge link is created, the source object is frozen, and the conflicting target object disappears from the Merge Window. No data is copied. </LR.LIST.RESULT
  31624. ><B.BODY>If you now (re)merge the parent system, the target object will be ignored because of the merge link.</B.BODY
  31625. ></LABEL
  31626. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31627. >Removing merge links</L.LABEL
  31628. ><B.BODY>Merge links can be created implicitly or explicitly. They are created <CX5FX5FEMPHASIS>implicitly</CX5FX5FEMPHASIS
  31629. > when objects are merged. They are created <CX5FX5FEMPHASIS>explicitly</CX5FX5FEMPHASIS
  31630. > on conflicting objects when you select Version | Create Merge Link in the Merge Window. </B.BODY
  31631. ><B.BODY>You can remove a merge link by unfreezing the source object.</B.BODY
  31632. ></LABEL
  31633. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31634. >Unreferenced CDMs and items</L.LABEL
  31635. ><B.BODY>Objects in the target phase can be overwritten as a result of a merge action, but they are never <CX5FX5FEMPHASIS>removed</CX5FX5FEMPHASIS
  31636. >. For example, if a class disappears from the target CD because it was overwritten by the source CD (which did not contain the class), the corresponding CDM becomes unreferenced, but it will not be removed.</B.BODY
  31637. ><B.BODY>Or, similarly, if an attribute disappears from a class as a result of a merge action, the item becomes unreferenced, and will not be removed from the set of defined items.</B.BODY
  31638. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  31639. ></RBW-AUTOGEN
  31640. >You can remove all unreferenced items from a system, or a diagram using Utilities | Delete Unreferenced Items on Phase or System level. You cannot remove unreferenced CDMs this way, but you can find out all the unreferenced CDMs in a system by running a report using Utilities | Reports | On Unreferenced CDMs.</T.TIP
  31641. ></LABEL
  31642. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31643. >Comparing conflicting objects</L.LABEL
  31644. ><B.BODY>Before you decide to overwrite or preserve a conflicting object, you might want to check what the differences are between the source and the target object. </B.BODY
  31645. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31646. ></RBW-AUTOGEN
  31647. ></RBW-MARKER
  31648. ><RBW-PARABODY>To compare the source and the target object:</RBW-PARABODY
  31649. ></P.PROCEDURE
  31650. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31651. ></RBW-AUTOGEN
  31652. ></RBW-MARKER
  31653. ><RBW-PARABODY>Select the conflicting target object in the Information Area of the Merge Window.</RBW-PARABODY
  31654. ></LN.LIST.NUM
  31655. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31656. ></RBW-AUTOGEN
  31657. ></RBW-MARKER
  31658. ><RBW-PARABODY>Select Version | Compare</RBW-PARABODY
  31659. ></LN.LIST.NUM
  31660. ><LR.LIST.RESULT>A Monitoring Window appears, listing the differences between the source and the target object.</LR.LIST.RESULT
  31661. ></LABEL
  31662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31663. >Version management</L.LABEL
  31664. ><B.BODY>From the Merge Window, you can start up the Version Browser for a particular object. In the Version Browser you can, among other things, select, deselect, delete, freeze and unfreeze versions of an object.</B.BODY
  31665. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31666. ></RBW-AUTOGEN
  31667. ></RBW-MARKER
  31668. ><RBW-PARABODY>To start the Version Browser:</RBW-PARABODY
  31669. ></P.PROCEDURE
  31670. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31671. ></RBW-AUTOGEN
  31672. ></RBW-MARKER
  31673. ><RBW-PARABODY>Select the object in the Information Area </RBW-PARABODY
  31674. ></LN.LIST.NUM
  31675. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31676. ></RBW-AUTOGEN
  31677. ></RBW-MARKER
  31678. ><RBW-PARABODY>Select Version | Version Browser.</RBW-PARABODY
  31679. ></LN.LIST.NUM
  31680. ><LR.LIST.RESULT>The Version Browser starts up for the selected object.</LR.LIST.RESULT
  31681. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  31682. ></RBW-AUTOGEN
  31683. >The Version Browser displays merge links between object versions within the same phase. However, it does not display merge links between object versions from different phases.</N.NOTE
  31684. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31685. >For more information</SL.SUBLABEL
  31686. ><B.BODY>See <RBW-XREF REFID="34596" TYPE="XREF-TEXTCOPY">Version Browser</RBW-XREF
  31687. > in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  31688. ><CX5FX5FTITLE></CX5FX5FTITLE
  31689. > for more information on the Version Browser.</B.BODY
  31690. ><RBWAUTO-0001></RBWAUTO-0001
  31691. ><!--
  31692.  
  31693.  
  31694.  
  31695.  
  31696.  
  31697. CONVERTING SOURCE FILE ../../sources/pmg/userenv.fm5.mif
  31698.  
  31699.  
  31700. --><B.BODY></B.BODY
  31701. ><B.BODY></B.BODY
  31702. ><B.BODY></B.BODY
  31703. ><B.BODY></B.BODY
  31704. ><B.BODY></B.BODY
  31705. ></LABEL
  31706. ></SUBSECTION
  31707. ></SECTION
  31708. ></CHAPTER
  31709. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  31710. ></RBW-AUTOGEN
  31711. >User Environment<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  31712. ><RBW-TEXTFLD TYPE="text">Project Management Guide</RBW-TEXTFLD
  31713. ></RBW-SYSOBJ
  31714. ></C.CHAPTER.HEAD
  31715. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31716. >Introduction</L.LABEL
  31717. ><B.BODY>The chapter shows you how to set and save settings for the Browser and generated files. These settings define your user environment.</B.BODY
  31718. ></LABEL
  31719. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31720. >Browser settings</L.LABEL
  31721. ><B.BODY><CX5FX5FTERM>Browser settings</CX5FX5FTERM
  31722. > control the appearance of the Browser, as well as the default settings for many dialog box fields. ObjectTeam automatically saves these settings to a file in your home directory. Optionally, you can explicitly save selected settings at a specific level in the project hierarchy. </B.BODY
  31723. ></LABEL
  31724. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31725. >Generated files</L.LABEL
  31726. ><B.BODY>Certain ObjectTeam tools, such as the Document Generator and Code Generator, produce files as their output. These files must be stored in the file system so that they are accessible to external tools, such as compilers and DTP packages. In a multiuser environment, each user should have a set of directories in which to store these generated files. </B.BODY
  31727. ></LABEL
  31728. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31729. >How to start a second Browser with the same settings</L.LABEL
  31730. ><B.BODY>Sometimes it is useful to have more than one Browser window open. When you start a new Browser from the current Browser, ObjectTeam uses the current Browser settings as the initial settings for the new Browser.<RBW-IDXTERM TERM1="Browser" TERM2="starting"></RBW-IDXTERM
  31731. ><RBW-IDXTERM TERM1="Clone (Utilities menu)"></RBW-IDXTERM
  31732. ></B.BODY
  31733. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31734. ></RBW-AUTOGEN
  31735. ></RBW-MARKER
  31736. ><RBW-PARABODY>To start a new Browser, select Utilities | Clone.<RBW-IDXTERM TERM1="cloning a Browser"></RBW-IDXTERM
  31737. ></RBW-PARABODY
  31738. ></P.PROCEDURE
  31739. ><LRS.LIST.RESULT.SINGLE>A second Browser appears.</LRS.LIST.RESULT.SINGLE
  31740. ></LABEL
  31741. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31742. >In this chapter</L.LABEL
  31743. ><B.BODY>This chapter contains the following sections:</B.BODY
  31744. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  31745. ></ENTRY
  31746. ></RBW-ROW
  31747. ></THEAD
  31748. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35360" TYPE="XREF-TEXTCOPY">Browser Settings&rbwtab;3–2</RBW-XREF
  31749. ></SB.SECTION.BLOCK.TABLE
  31750. ></ENTRY
  31751. ></RBW-ROW
  31752. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20105" TYPE="XREF-TEXTCOPY">File Paths for Generated Files&rbwtab;3–4</RBW-XREF
  31753. ></SB.SECTION.BLOCK.TABLE
  31754. ></ENTRY
  31755. ></RBW-ROW
  31756. ></TBODY
  31757. ></TGROUP
  31758. ></RBW-TABLE
  31759. ></LABEL
  31760. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35360"></RBW-ANCHOR
  31761. >Browser Settings</S.SECTION.HEAD
  31762. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31763. >Definition</L.LABEL
  31764. ><B.BODY><RBW-IDXTERM TERM1="user environment" TERM2="Browser settings"></RBW-IDXTERM
  31765. ><RBW-IDXTERM TERM1="saving" TERM2="Browser settings"></RBW-IDXTERM
  31766. ><RBW-IDXTERM TERM1="Browser" TERM2="saving settings"></RBW-IDXTERM
  31767. ><CX5FX5FTERM>Browser settings</CX5FX5FTERM
  31768. > control the appearance of the browser, and the default settings for many dialog box fields. </B.BODY
  31769. ></LABEL
  31770. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31771. >Saved in two ways</L.LABEL
  31772. ><B.BODY>The value of each browser setting is stored as an M4 environment variable. These variables are saved automatically and can also be saved explicitly.</B.BODY
  31773. ></LABEL
  31774. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31775. >Saved automatically to Meta4UserEnv file</L.LABEL
  31776. ><B.BODY><RBW-IDXTERM TERM1="Meta4UserEnv file"></RBW-IDXTERM
  31777. >When you exit from the Browser, ObjectTeam saves the current settings to the Meta4UserEnv file. When you start the Browser, ObjectTeam uses this file to initialize the Browser settings. As a result, your latest Browser settings are restored each time you start the Browser.</B.BODY
  31778. ></LABEL
  31779. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31780. >Saved explicitly to m4env file</L.LABEL
  31781. ><B.BODY><RBW-IDXTERM TERM1="Copy User Environment (Options menu)"></RBW-IDXTERM
  31782. ><RBW-IDXTERM TERM1="m4env file"></RBW-IDXTERM
  31783. >You can use Options | Copy User Environment to save selected Browser settings to the corporate, project, configuration, phase, or system level. This command creates an m4env file at the specified level. (Only a corporate administrator can save settings to the corporate level.)</B.BODY
  31784. ><B.BODY>If an m4env file exists, ObjectTeam uses the saved settings when you are at the level that holds the m4env file or at any lower level. If the same setting is saved at two different levels, ObjectTeam uses the setting saved at the higher level; the setting at the lower level is ignored.</B.BODY
  31785. ></LABEL
  31786. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31787. >When to explicitly save Browser settings</L.LABEL
  31788. ><B.BODY>Saving a Browser setting to a particular level ensures that the setting is always used at that level and lower.</B.BODY
  31789. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31790. >Example</SL.SUBLABEL
  31791. ><B.BODY>Options | Printer Setup | Graphics allows you to specify the printer used to print diagrams. If you save this Browser setting at the project level, you ensure that all diagrams are printed using the specified printer. ObjectTeam users working in that project cannot use the Options | Printer Setup | Graphics dialog box to change the setting.</B.BODY
  31792. ></LABEL
  31793. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31794. >How to explicitly save Browser settings</L.LABEL
  31795. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31796. ></RBW-AUTOGEN
  31797. ></RBW-MARKER
  31798. ><RBW-PARABODY>To save one or more Browser settings:<RBW-IDXTERM TERM1="copying" TERM2="context settings to another level"></RBW-IDXTERM
  31799. ></RBW-PARABODY
  31800. ></P.PROCEDURE
  31801. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31802. ></RBW-AUTOGEN
  31803. ></RBW-MARKER
  31804. ><RBW-PARABODY>Move to the level at which you want to save the settings or to a level below it.</RBW-PARABODY
  31805. ></LN.LIST.NUM
  31806. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31807. ></RBW-AUTOGEN
  31808. ></RBW-MARKER
  31809. ><RBW-PARABODY>Select Options | Copy User Environment.</RBW-PARABODY
  31810. ></LN.LIST.NUM
  31811. ><LR.LIST.RESULT>A submenu appears, allowing you to select the level at which you want to save the settings. The submenu includes only the current level and higher levels. For example, if you are at the configuration level, the submenu commands are: To ConfigVersion Environment, To Project Environment, and To Corporate Environment.</LR.LIST.RESULT
  31812. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  31813. ></RBW-AUTOGEN
  31814. ></RBW-MARKER
  31815. ><RBW-PARABODY>Select the appropriate menu item.</RBW-PARABODY
  31816. ></LN.LIST.NUM
  31817. ><LR.LIST.RESULT>A Copy Environment dialog box similar to the following appears:</LR.LIST.RESULT
  31818. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00278.unk" origfile="pics/cpenvir.gif" origtype="X" origdoc="../../sources/pmg/userenv.fm5.mif"></RBW-GRAPHIC
  31819. ></FA2.FIGURE.ANCHOR.2
  31820. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  31821. ></RBW-AUTOGEN
  31822. ></RBW-MARKER
  31823. ><RBW-PARABODY>Select the settings that you want to save. Then click OK.</RBW-PARABODY
  31824. ></LN.LIST.NUM
  31825. ><LR.LIST.RESULT>ObjectTeam saves the settings to an m4env file at the selected level.</LR.LIST.RESULT
  31826. ></LABEL
  31827. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31828. >For more information</L.LABEL
  31829. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  31830. ><CX5FX5FTITLE></CX5FX5FTITLE
  31831. > describes each M4 environment variable, and the m4env and Meta4UserEnv files.</B.BODY
  31832. ></LABEL
  31833. ></SECTION
  31834. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="20105"></RBW-ANCHOR
  31835. >File Paths for Generated Files</S.SECTION.HEAD
  31836. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31837. >Introduction</L.LABEL
  31838. ><B.BODY><RBW-IDXTERM TERM1="user environment" TERM2="file paths"></RBW-IDXTERM
  31839. ><RBW-IDXTERM TERM1="saving" TERM2="file path settings"></RBW-IDXTERM
  31840. ><RBW-IDXTERM TERM1="file path" TERM2="saving"></RBW-IDXTERM
  31841. ><RBW-IDXTERM TERM1="generated files, file paths for"></RBW-IDXTERM
  31842. >Certain ObjectTeam tools, such as the Document Generator and the Code Generator, produce files as their output. These files must be stored in the file system to be accessible to external tools, such as compilers and DTP packages. The collection of files in the file system produced by a particular user is part of the user environment.</B.BODY
  31843. ></LABEL
  31844. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31845. >File location</L.LABEL
  31846. ><B.BODY><RBW-IDXTERM TERM1="fileSystemPath property"></RBW-IDXTERM
  31847. >ObjectTeam uses the File System Path Part property to determine the location of a generated file. You can set this property at any level (corporate, project, configuration version, phase version, system version, or file version). The File System Path Part properties at the different levels provide the path information, as shown in the following table.</B.BODY
  31848. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  31849. ></RBW-AUTOGEN
  31850. >The File System Path Part property can refer to a nonexistent directory. ObjectTeam creates the directories, if necessary.</N.NOTE
  31851. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Path</CELLHEADING
  31852. ></ENTRY
  31853. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Determined By</CELLHEADING
  31854. ></ENTRY
  31855. ></RBW-ROW
  31856. ></THEAD
  31857. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate</CELLBODY
  31858. ></ENTRY
  31859. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The property value at corporate&truehy;level. If the value begins with a slash mark (/), it is treated as an absolute path. If this value is a dot (.) or specifies a relative directory, the path is <CX5FX5FVARIABLE>user_home_dir</CX5FX5FVARIABLE
  31860. >/<CX5FX5FVARIABLE>fileSystemPath_value</CX5FX5FVARIABLE
  31861. >. If the property is not set, the path is <CX5FX5FTERM>user_home_dir</CX5FX5FTERM
  31862. >.</CELLBODY
  31863. ></ENTRY
  31864. ></RBW-ROW
  31865. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project</CELLBODY
  31866. ></ENTRY
  31867. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The result of adding the current corporate path to the value of the property fileSystemPath of the project. If this value is a dot, nothing is added to the current path. If this is an absolute directory, it becomes the path of the project. If the property is not set, the name of the project is added to the path.</CELLBODY
  31868. ></ENTRY
  31869. ></RBW-ROW
  31870. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration version</CELLBODY
  31871. ></ENTRY
  31872. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The result of adding the current project path to the value of the File System Path Part property of the configuration version. If this value is a dot, nothing is added to the current path. If it is an absolute directory, it becomes the path of the configuration version. If the property is not set, the following is added:</CELLBODY
  31873. ><CELLBODY><CX5FX5FTERM>configVersion</CX5FX5FTERM
  31874. >_<CX5FX5FTERM>configVersion_number</CX5FX5FTERM
  31875. ></CELLBODY
  31876. ></ENTRY
  31877. ></RBW-ROW
  31878. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase version</CELLBODY
  31879. ></ENTRY
  31880. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The result of adding the current configuration version path to the value of the File System Path Part property of the phase version. If this value is a dot, nothing is added to the current path. If it is an absolute directory, it becomes the path of the phase version. If the property is not set, the name of the phase version is added.</CELLBODY
  31881. ></ENTRY
  31882. ></RBW-ROW
  31883. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System version</CELLBODY
  31884. ></ENTRY
  31885. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The result of adding the current phase version path to the value of the File System Path Part property of the system version. If this value is a dot, nothing is added to the current path. If it is an absolute directory, it becomes the path of the system version. If the property is not set, the name of the system version is added.</CELLBODY
  31886. ></ENTRY
  31887. ></RBW-ROW
  31888. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File version</CELLBODY
  31889. ></ENTRY
  31890. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The result of adding the current system version path to the value of the File System Path Part property of the file version. If this value is a dot, nothing is added to the current path. If it is an absolute directory, it becomes the path of the file version. If the property is not set, the name of the file version is added.</CELLBODY
  31891. ></ENTRY
  31892. ></RBW-ROW
  31893. ></TBODY
  31894. ></TGROUP
  31895. ></RBW-TABLE
  31896. ></LABEL
  31897. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31898. >Example</L.LABEL
  31899. ><B.BODY>User Jim is generating a document Core_sys in the Object Design phase in configuration version test.1. The File System Path Part property is not set for configuration version, phase version, system version or file version. By default, the generated files are saved in:</B.BODY
  31900. ><E.EXAMPLE>/user/jim/test_1/ObjectDesign/Core_sys</E.EXAMPLE
  31901. ><B.BODY>Jim now sets the File System Path Part property of his configuration version test.1 to testdocs. Also, because he does not want to navigate down the file system tree to look at his generated files, he specifies that the phase name be left out of the path by specifying a dot (.) for the File System Path Part property of the phase version. As a result, the generated files are now saved in the following folder:</B.BODY
  31902. ><E.EXAMPLE>/user/jim/testdocs/Core_sys</E.EXAMPLE
  31903. ></LABEL
  31904. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31905. >Recommendation</L.LABEL
  31906. ><B.BODY>Cayenne strongly recommends that the File System Path Part property be set at corporate (or project) level to point to a network drive. This setting ensures that all generated files are stored in a central location, which simplifies backups, and that all generated files can be accessed by all members of the project team.</B.BODY
  31907. ></LABEL
  31908. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31909. >Changing the File System Path Part</L.LABEL
  31910. ><B.BODY>ObjectTeam uses the File System Path Part property to locate generated files. Always use caution when changing this property.</B.BODY
  31911. ></LABEL
  31912. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31913. ><RBW-ANCHOR ID="37818"></RBW-ANCHOR
  31914. >How to change the File System Path Part property</L.LABEL
  31915. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31916. >Before you begin</SL.SUBLABEL
  31917. ><B.BODY>Freeze all generated files affected by the change. For example, if you are changing the property at the project level, freeze all generated files in the project. (Freezing the files stores the content of the file in the repository.)</B.BODY
  31918. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  31919. ></RBW-AUTOGEN
  31920. ></RBW-MARKER
  31921. ><RBW-PARABODY>To change the value of the File System Path Part property:</RBW-PARABODY
  31922. ></P.PROCEDURE
  31923. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  31924. ></RBW-AUTOGEN
  31925. ></RBW-MARKER
  31926. ><RBW-PARABODY>Select the objects for which you want to change the File System Path Part property.</RBW-PARABODY
  31927. ></LN.LIST.NUM
  31928. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  31929. ></RBW-AUTOGEN
  31930. ></RBW-MARKER
  31931. ><RBW-PARABODY>Select File | Properties | Edit.</RBW-PARABODY
  31932. ></LN.LIST.NUM
  31933. ><LR.LIST.RESULT>The Edit Properties dialog box appears. </LR.LIST.RESULT
  31934. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00279.unk" origfile="pics/flsypprp.gif" origtype="X" origdoc="../../sources/pmg/userenv.fm5.mif"></RBW-GRAPHIC
  31935. ></FA2.FIGURE.ANCHOR.2
  31936. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  31937. ></RBW-AUTOGEN
  31938. ></RBW-MARKER
  31939. ><RBW-PARABODY>Select an object from the list box.</RBW-PARABODY
  31940. ></LN.LIST.NUM
  31941. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  31942. ></RBW-AUTOGEN
  31943. ></RBW-MARKER
  31944. ><RBW-PARABODY>In the File System Path Part field, specify the desired path.</RBW-PARABODY
  31945. ></LN.LIST.NUM
  31946. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  31947. ></RBW-AUTOGEN
  31948. ></RBW-MARKER
  31949. ><RBW-PARABODY>Repeat steps 3 and 4 until you have set the File System Path Part for each select object.</RBW-PARABODY
  31950. ></LN.LIST.NUM
  31951. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  31952. ></RBW-AUTOGEN
  31953. ></RBW-MARKER
  31954. ><RBW-PARABODY>Click OK to close the Edit Properties dialog box.</RBW-PARABODY
  31955. ></LN.LIST.NUM
  31956. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31957. >Accessing the generated files in the new location</SL.SUBLABEL
  31958. ><B.BODY>After changing the File System Path Part property, you can access any generated file. When you access the file, ObjectTeam looks in the new location for the file. The file does not exist.ObjectTeam then copies the latest version of the file out of the repository and into the new location.</B.BODY
  31959. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  31960. ></RBW-AUTOGEN
  31961. >If you did not freeze the generated files, ObjectTeam creates an empty version of the generated file in the new location.</N2.NOTE.2
  31962. ><RBWAUTO-0001></RBWAUTO-0001
  31963. ><!--
  31964.  
  31965.  
  31966.  
  31967.  
  31968.  
  31969. CONVERTING SOURCE FILE ../../sources/pmg/groups.fm5.mif
  31970.  
  31971.  
  31972. --><B.BODY></B.BODY
  31973. ><B.BODY></B.BODY
  31974. ><B.BODY></B.BODY
  31975. ><B.BODY></B.BODY
  31976. ><B.BODY></B.BODY
  31977. ></LABEL
  31978. ></SECTION
  31979. ></CHAPTER
  31980. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  31981. ></RBW-AUTOGEN
  31982. ><RBW-ANCHOR ID="11810"></RBW-ANCHOR
  31983. >Using Groups<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  31984. ><RBW-TEXTFLD TYPE="text">Project Management Guide</RBW-TEXTFLD
  31985. ></RBW-SYSOBJ
  31986. ></C.CHAPTER.HEAD
  31987. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31988. >Group</L.LABEL
  31989. ><B.BODY><RBW-IDXTERM TERM1="group" TERM2="definition"></RBW-IDXTERM
  31990. >A grou<RBW-IDXTERM TERM1="group" TERM2="definition"></RBW-IDXTERM
  31991. >p is an organizational unit in a system that combines files and items. Groups are not part of the hierarchical tree structure of the project, but rather a view of a selected part of the currently visible contents of a system. </B.BODY
  31992. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00280.tif" origseq="55" origtype="I" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  31993. ></FA.FIGURE.ANCHOR
  31994. ></LABEL
  31995. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  31996. >Purpose</L.LABEL
  31997. ><B.BODY><RBW-IDXTERM TERM1="group" TERM2="purpose"></RBW-IDXTERM
  31998. >The primary uses of groups are as follows:</B.BODY
  31999. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32000. ></RBW-AUTOGEN
  32001. ></RBW-MARKER
  32002. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Versioning.</CX5FX5FBULLET.EMPHASIS
  32003. > Diagram versions do not include the items referenced in the diagram. If you want to be able to restore a diagram and the items and item properties in it, you must create and save a group that contains the diagram and its related items.</RBW-PARABODY
  32004. ></LB.LIST.BULLET
  32005. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32006. ></RBW-AUTOGEN
  32007. ></RBW-MARKER
  32008. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Corporate modeling.</CX5FX5FBULLET.EMPHASIS
  32009. > Often a diagram or portion of a diagram can be reused by different projects. If you create a group that contains the relevant diagram components and related items, you can promote that group to the corporate level. A corporate group can be accessed by other projects, but cannot be changed by any project.</RBW-PARABODY
  32010. ></LB.LIST.BULLET
  32011. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32012. ></RBW-AUTOGEN
  32013. ></RBW-MARKER
  32014. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Sharing model data.</CX5FX5FBULLET.EMPHASIS
  32015. > Often portions of a system, perhaps a class or a portion of a diagram, created by one developer can be a useful starting point for another developer. If you create a group that contains the relevant diagram components and related items, other developers can copy the group to their own configurations and then modify the components as necessary.</RBW-PARABODY
  32016. ></LB.LIST.BULLET
  32017. ></LABEL
  32018. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32019. >Prerequisites</L.LABEL
  32020. ><B.BODY><RBW-IDXTERM TERM1="group" TERM2="prerequisites for using"></RBW-IDXTERM
  32021. >To create useful groups, you must carefully specify the related files and items that belong in it. To do so, you must be familiar with the following:</B.BODY
  32022. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32023. ></RBW-AUTOGEN
  32024. ></RBW-MARKER
  32025. ><RBW-PARABODY>Files and file types</RBW-PARABODY
  32026. ></LB.LIST.BULLET
  32027. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32028. ></RBW-AUTOGEN
  32029. ></RBW-MARKER
  32030. ><RBW-PARABODY>Items and item types</RBW-PARABODY
  32031. ></LB.LIST.BULLET
  32032. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32033. ></RBW-AUTOGEN
  32034. ></RBW-MARKER
  32035. ><RBW-PARABODY>The relationship between files and items and how they are used to store diagram information</RBW-PARABODY
  32036. ></LB.LIST.BULLET
  32037. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32038. >For more information</SL.SUBLABEL
  32039. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  32040. ><CX5FX5FTITLE></CX5FX5FTITLE
  32041. > provides basic information about files and items.</B.BODY
  32042. ></LABEL
  32043. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32044. >Corporate Modeling module required</L.LABEL
  32045. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>Corporate Modeling </CX5FX5FEMPHASIS
  32046. >provides the menu items and Tcl code required to use (corporate) groups in ObjectTeam. Therefore, this module must be active on the Browser levels where it is going to be used.</B.BODY
  32047. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  32048. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32049. >For more information</SL.SUBLABEL
  32050. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  32051. ><CX5FX5FTITLE></CX5FX5FTITLE
  32052. > for details on how to activate a module.</B.BODY
  32053. ></LABEL
  32054. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32055. >In this chapter</L.LABEL
  32056. ><B.BODY>This chapter contains the following sections:</B.BODY
  32057. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  32058. ></ENTRY
  32059. ></RBW-ROW
  32060. ></THEAD
  32061. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36657" TYPE="XREF-TEXTCOPY">Creating Groups&rbwtab;4–3</RBW-XREF
  32062. ></SB.SECTION.BLOCK.TABLE
  32063. ></ENTRY
  32064. ></RBW-ROW
  32065. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35319" TYPE="XREF-TEXTCOPY">Creating Group Versions and SavedGroup Versions&rbwtab;4–18</RBW-XREF
  32066. ></SB.SECTION.BLOCK.TABLE
  32067. ></ENTRY
  32068. ></RBW-ROW
  32069. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28675" TYPE="XREF-TEXTCOPY">Creating and Using Corporate Groups&rbwtab;4–21</RBW-XREF
  32070. ></SB.SECTION.BLOCK.TABLE
  32071. ></ENTRY
  32072. ></RBW-ROW
  32073. ></TBODY
  32074. ></TGROUP
  32075. ></RBW-TABLE
  32076. ></LABEL
  32077. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36657"></RBW-ANCHOR
  32078. >Creating Groups</S.SECTION.HEAD
  32079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32080. >Two steps</L.LABEL
  32081. ><B.BODY><RBW-IDXTERM TERM1="group" TERM2="creating"></RBW-IDXTERM
  32082. ><RBW-IDXTERM TERM1="creating" TERM2="groups"></RBW-IDXTERM
  32083. >Creating a group is a two&truehy;step process:</B.BODY
  32084. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32085. ></RBW-AUTOGEN
  32086. ></RBW-MARKER
  32087. ><RBW-PARABODY>Create the group.</RBW-PARABODY
  32088. ></LN.LIST.NUM
  32089. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32090. ></RBW-AUTOGEN
  32091. ></RBW-MARKER
  32092. ><RBW-PARABODY>Specify its contents.</RBW-PARABODY
  32093. ></LN.LIST.NUM
  32094. ></LABEL
  32095. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32096. >You use rules to specify the contents</L.LABEL
  32097. ><B.BODY>Specifying the contents of a group means identifying the files and items in it. Because your systems are constantly changing, you specify rules that ObjectTeam can use to identify the files and items in the group, rather than specifying individual files and items.</B.BODY
  32098. ></LABEL
  32099. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32100. >ObjectTeam uses the rules to build the group</L.LABEL
  32101. ><B.BODY>The following table shows how ObjectTeam uses the set of rules that you specify to determine the contents of the group:</B.BODY
  32102. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  32103. ></ENTRY
  32104. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  32105. ></ENTRY
  32106. ></RBW-ROW
  32107. ></THEAD
  32108. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  32109. ></ENTRY
  32110. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Uses the Explicit File and File Filter rules to add files to the group.</CELLBODY
  32111. ></ENTRY
  32112. ></RBW-ROW
  32113. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  32114. ></ENTRY
  32115. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Uses the Item Filter rule to add items to the group.</CELLBODY
  32116. ></ENTRY
  32117. ></RBW-ROW
  32118. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  32119. ></ENTRY
  32120. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Uses the File Selectors rule to add additional files to the group based on what items are already in the group.</CELLBODY
  32121. ></ENTRY
  32122. ></RBW-ROW
  32123. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  32124. ></ENTRY
  32125. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Uses the Item Selectors rule to add additional items to the group based on what files are already in the group.</CELLBODY
  32126. ></ENTRY
  32127. ></RBW-ROW
  32128. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  32129. ></ENTRY
  32130. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Repeats steps 3 and 4 until they no longer add files or items to the group.</CELLBODY
  32131. ></ENTRY
  32132. ></RBW-ROW
  32133. ></TBODY
  32134. ></TGROUP
  32135. ></RBW-TABLE
  32136. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  32137. ></RBW-AUTOGEN
  32138. >You can specify one or more rules. ObjectTeam uses all the rules that you specify to identify the files and items in the group.</N.NOTE
  32139. ></LABEL
  32140. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32141. >Subgroups</L.LABEL
  32142. ><B.BODY>The modes Explicit Group Version and Group Version Filter can only be used for group versions that contain subgroups. Unlike group versions in the current release, group versions in previous releases of ObjectTeam could contain subgroups.</B.BODY
  32143. ></LABEL
  32144. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32145. >Groups contain current file versions</L.LABEL
  32146. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="of object in group"></RBW-IDXTERM
  32147. >When ObjectTeam adds a file to a group, it uses the current, selected version of the file. To create a group composed of specific file versions, you must use saved groups, as described in <RBW-XREF REFID="35319" TYPE="XREF-TEXTCOPY">Creating Group Versions and SavedGroup Versions</RBW-XREF
  32148. >.</B.BODY
  32149. ></LABEL
  32150. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32151. ><RBW-IDXTERM TERM1="group" TERM2="creating"></RBW-IDXTERM
  32152. ><RBW-IDXTERM TERM1="creating" TERM2="groups"></RBW-IDXTERM
  32153. >How to create a group</L.LABEL
  32154. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32155. ></RBW-AUTOGEN
  32156. ></RBW-MARKER
  32157. ><RBW-PARABODY><RBW-IDXTERM TERM1="group" TERM2="creating"></RBW-IDXTERM
  32158. ><RBW-IDXTERM TERM1="creating" TERM2="groups"></RBW-IDXTERM
  32159. >To create a group:</RBW-PARABODY
  32160. ></P.PROCEDURE
  32161. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32162. ></RBW-AUTOGEN
  32163. ></RBW-MARKER
  32164. ><RBW-PARABODY>Move to the system level.</RBW-PARABODY
  32165. ></LN.LIST.NUM
  32166. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32167. ></RBW-AUTOGEN
  32168. ></RBW-MARKER
  32169. ><RBW-PARABODY>Select File | New | Group Version.</RBW-PARABODY
  32170. ></LN.LIST.NUM
  32171. ><LR.LIST.RESULT>The New Group Version dialog box appears.</LR.LIST.RESULT
  32172. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  32173. ></RBW-AUTOGEN
  32174. ></RBW-MARKER
  32175. ><RBW-PARABODY>Specify the group name.</RBW-PARABODY
  32176. ></LN.LIST.NUM
  32177. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  32178. ></RBW-AUTOGEN
  32179. ></RBW-MARKER
  32180. ><RBW-PARABODY>Do you want to specify the contents of the group at this time?</RBW-PARABODY
  32181. ></LN.LIST.NUM
  32182. ><LT.LIST.TEXT>If <CX5FX5FBULLET.EMPHASIS>yes</CX5FX5FBULLET.EMPHASIS
  32183. >, click Edit.</LT.LIST.TEXT
  32184. ><LR.LIST.RESULT>The Edit Group Structure dialog box appears. Use the following procedure to specify the contents of the group.</LR.LIST.RESULT
  32185. ><LT.LIST.TEXT>If <CX5FX5FBULLET.EMPHASIS>no</CX5FX5FBULLET.EMPHASIS
  32186. >, click OK.</LT.LIST.TEXT
  32187. ><LT.LIST.TEXT>ObjectTeam creates an empty group. </LT.LIST.TEXT
  32188. ></LABEL
  32189. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32190. >How to specify the contents of a group</L.LABEL
  32191. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32192. ></RBW-AUTOGEN
  32193. ></RBW-MARKER
  32194. ><RBW-PARABODY>To specify the contents of a group:</RBW-PARABODY
  32195. ></P.PROCEDURE
  32196. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32197. ></RBW-AUTOGEN
  32198. ></RBW-MARKER
  32199. ><RBW-PARABODY>Open the group. (In the information area, double&truehy;click on the group, or select the group and then click File | Open.)</RBW-PARABODY
  32200. ></LN.LIST.NUM
  32201. ><LR.LIST.RESULT><RBW-IDXTERM TERM1="Edit Group Structure dialog box" TERM2="picture of"></RBW-IDXTERM
  32202. >The Edit Group Structure dialog box appears. Overview mode, the default mode (see <RBW-XREF REFID="19688" TYPE="XREF-TEXTCOPY">Overview Mode</RBW-XREF
  32203. >),displays all files and items in the group.</LR.LIST.RESULT
  32204. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00281.unk" origfile="pics/edgrpstr.gif" origtype="X" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  32205. ></FA2.FIGURE.ANCHOR.2
  32206. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32207. ></RBW-AUTOGEN
  32208. ></RBW-MARKER
  32209. ><RBW-PARABODY>Use Explicit File and File Filter modes to specify the rules for adding files to the group.</RBW-PARABODY
  32210. ></LN.LIST.NUM
  32211. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  32212. ></RBW-AUTOGEN
  32213. ></RBW-MARKER
  32214. ><RBW-PARABODY>Use Item Filter mode to specify the rules for adding items to the group.</RBW-PARABODY
  32215. ></LN.LIST.NUM
  32216. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  32217. ></RBW-AUTOGEN
  32218. ></RBW-MARKER
  32219. ><RBW-PARABODY>Use File Selector mode to specify the rules for adding files to the group based on what items are already in the group.</RBW-PARABODY
  32220. ></LN.LIST.NUM
  32221. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  32222. ></RBW-AUTOGEN
  32223. ></RBW-MARKER
  32224. ><RBW-PARABODY>Use Item Selector mode to specify the rules for adding items to the group based on what files are already in the group.</RBW-PARABODY
  32225. ></LN.LIST.NUM
  32226. ></LABEL
  32227. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32228. >In this section</L.LABEL
  32229. ><B.BODY>The remainder of this section describes how to use each mode of the Edit Group Structure dialog box to specify the rules that define the contents of a group.</B.BODY
  32230. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  32231. ></ENTRY
  32232. ></RBW-ROW
  32233. ></THEAD
  32234. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19688" TYPE="XREF-TEXTCOPY">Overview Mode&rbwtab;4–6</RBW-XREF
  32235. ></SB.SECTION.BLOCK.TABLE
  32236. ></ENTRY
  32237. ></RBW-ROW
  32238. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31630" TYPE="XREF-TEXTCOPY">Explicit File Mode&rbwtab;4–7</RBW-XREF
  32239. ></SB.SECTION.BLOCK.TABLE
  32240. ></ENTRY
  32241. ></RBW-ROW
  32242. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26915" TYPE="XREF-TEXTCOPY">File Filter Mode&rbwtab;4–9</RBW-XREF
  32243. ></SB.SECTION.BLOCK.TABLE
  32244. ></ENTRY
  32245. ></RBW-ROW
  32246. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22021" TYPE="XREF-TEXTCOPY">Item Filter Mode&rbwtab;4–12</RBW-XREF
  32247. ></SB.SECTION.BLOCK.TABLE
  32248. ></ENTRY
  32249. ></RBW-ROW
  32250. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24674" TYPE="XREF-TEXTCOPY">File Selector Mode&rbwtab;4–14</RBW-XREF
  32251. ></SB.SECTION.BLOCK.TABLE
  32252. ></ENTRY
  32253. ></RBW-ROW
  32254. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25711" TYPE="XREF-TEXTCOPY">Item Selector Selector Mode&rbwtab;4–16</RBW-XREF
  32255. ></SB.SECTION.BLOCK.TABLE
  32256. ></ENTRY
  32257. ></RBW-ROW
  32258. ></TBODY
  32259. ></TGROUP
  32260. ></RBW-TABLE
  32261. ></LABEL
  32262. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19688"></RBW-ANCHOR
  32263. >Overview Mode</SS.SUBSEC.HEAD
  32264. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32265. >Purpose</L.LABEL
  32266. ><B.BODY><RBW-IDXTERM TERM1="displaying" TERM2="groups"></RBW-IDXTERM
  32267. ><RBW-IDXTERM TERM1="Overview mode (Edit Group Structure dialog)"></RBW-IDXTERM
  32268. ><RBW-IDXTERM TERM1="group" TERM2="displaying contents of"></RBW-IDXTERM
  32269. >Use Overview mode to display the current contents of the group.</B.BODY
  32270. ></LABEL
  32271. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32272. ><RBW-IDXTERM TERM1="Edit Group Structure dialog box" TERM2="Overview mode"></RBW-IDXTERM
  32273. >Edit Group Structure dialog box</L.LABEL
  32274. ><B.BODY>In this mode, the Contents list displays all files and items in the group.</B.BODY
  32275. ><B.BODY>The New, Show, and Delete buttons are unavailable.</B.BODY
  32276. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00282.unk" origfile="pics/edgrpstr.gif" origtype="X" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  32277. ></FA.FIGURE.ANCHOR
  32278. ></LABEL
  32279. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32280. >How to view the contents of the group</L.LABEL
  32281. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32282. ></RBW-AUTOGEN
  32283. ></RBW-MARKER
  32284. ><RBW-PARABODY>To view the contents of the group, select Overview mode.</RBW-PARABODY
  32285. ></P.PROCEDURE
  32286. ></LABEL
  32287. ></SUBSECTION
  32288. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31630"></RBW-ANCHOR
  32289. >Explicit File Mode</SS.SUBSEC.HEAD
  32290. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32291. >Purpose</L.LABEL
  32292. ><B.BODY><RBW-IDXTERM TERM1="Explicit File mode (Edit Group Structure dialog)"></RBW-IDXTERM
  32293. ><RBW-IDXTERM TERM1="group" TERM2="explicit file mode"></RBW-IDXTERM
  32294. >Use Explicit File mode to add selected files to the group.</B.BODY
  32295. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32296. >Adding a file adds an item</SL.SUBLABEL
  32297. ><B.BODY>When you add a file to the group, ObjectTeam also adds the item associated with that file. For example, if you use Explicit File to add the CoreClasses CD to the group, the group contains</B.BODY
  32298. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32299. ></RBW-AUTOGEN
  32300. ></RBW-MARKER
  32301. ><RBW-PARABODY>File CoreClasses of type cad</RBW-PARABODY
  32302. ></LB.LIST.BULLET
  32303. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32304. ></RBW-AUTOGEN
  32305. ></RBW-MARKER
  32306. ><RBW-PARABODY>Item CoreClasses of type cl</RBW-PARABODY
  32307. ></LB.LIST.BULLET
  32308. ></LABEL
  32309. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32310. ><RBW-IDXTERM TERM1="Edit Group Structure dialog box" TERM2="Explicit File mode"></RBW-IDXTERM
  32311. >Edit Group Structure dialog box</L.LABEL
  32312. ><B.BODY>In this mode, the fields of the Edit Group Structure dialog box are used as follows:</B.BODY
  32313. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32314. ></RBW-AUTOGEN
  32315. ></RBW-MARKER
  32316. ><RBW-PARABODY>The Contents list displays the files added to the group using Explicit File mode. </RBW-PARABODY
  32317. ></LB.LIST.BULLET
  32318. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  32319. ></RBW-AUTOGEN
  32320. >To see both the files and items that are in the group, select Overview mode.</N2.NOTE.2
  32321. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32322. ></RBW-AUTOGEN
  32323. ></RBW-MARKER
  32324. ><RBW-PARABODY>The New button allows you to select one or more files to add to the group.</RBW-PARABODY
  32325. ></LB.LIST.BULLET
  32326. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32327. ></RBW-AUTOGEN
  32328. ></RBW-MARKER
  32329. ><RBW-PARABODY>The Delete button allows you to remove one or more files from the group.</RBW-PARABODY
  32330. ></LB.LIST.BULLET
  32331. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32332. ></RBW-AUTOGEN
  32333. ></RBW-MARKER
  32334. ><RBW-PARABODY>The Show button is unavailable.</RBW-PARABODY
  32335. ></LB.LIST.BULLET
  32336. ></LABEL
  32337. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32338. ><RBW-IDXTERM TERM1="New dialog box" TERM2="Explicit File mode"></RBW-IDXTERM
  32339. >New Explicit File dialog box</L.LABEL
  32340. ><B.BODY>The New Explicit File dialog box allows you to select one or more files.</B.BODY
  32341. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00283.unk" origfile="pics/nwexplfl.gif" origtype="X" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  32342. ></FA.FIGURE.ANCHOR
  32343. ></LABEL
  32344. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32345. >How to add one or more files </L.LABEL
  32346. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32347. ></RBW-AUTOGEN
  32348. ></RBW-MARKER
  32349. ><RBW-PARABODY>To add one or more selected files to a group:</RBW-PARABODY
  32350. ></P.PROCEDURE
  32351. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32352. ></RBW-AUTOGEN
  32353. ></RBW-MARKER
  32354. ><RBW-PARABODY>Select Explicit File mode.</RBW-PARABODY
  32355. ></LN.LIST.NUM
  32356. ><LR.LIST.RESULT>The Contents list displays the files added to the group using Explicit File mode.</LR.LIST.RESULT
  32357. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32358. ></RBW-AUTOGEN
  32359. ></RBW-MARKER
  32360. ><RBW-PARABODY>Click New... </RBW-PARABODY
  32361. ></LN.LIST.NUM
  32362. ><LR.LIST.RESULT>The New Explicit File dialog box appears, displaying a list of all files in the current system that are not in the group.</LR.LIST.RESULT
  32363. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  32364. ></RBW-AUTOGEN
  32365. ></RBW-MARKER
  32366. ><RBW-PARABODY>Select one or more files. Then click OK.</RBW-PARABODY
  32367. ></LN.LIST.NUM
  32368. ><LR.LIST.RESULT>ObjectTeam adds the files and their items to the group and updates the Contents list, displaying the files added to the group.</LR.LIST.RESULT
  32369. ></LABEL
  32370. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32371. >How to remove files</L.LABEL
  32372. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  32373. ></RBW-AUTOGEN
  32374. >In Explicit File mode, you can remove only those files that were added using Explicit File mode.</N.NOTE
  32375. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32376. ></RBW-AUTOGEN
  32377. ></RBW-MARKER
  32378. ><RBW-PARABODY>To remove one or more files from the group:</RBW-PARABODY
  32379. ></P.PROCEDURE
  32380. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32381. ></RBW-AUTOGEN
  32382. ></RBW-MARKER
  32383. ><RBW-PARABODY>In Explicit File mode, click Delete...</RBW-PARABODY
  32384. ></LN.LIST.NUM
  32385. ><LR.LIST.RESULT>A dialog box appears, displaying the files added using Explicit File mode.</LR.LIST.RESULT
  32386. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32387. ></RBW-AUTOGEN
  32388. ></RBW-MARKER
  32389. ><RBW-PARABODY>Select one or more files. Then click OK.</RBW-PARABODY
  32390. ></LN.LIST.NUM
  32391. ><LR.LIST.RESULT>ObjectTeam removes the files and their items from the group and updates the Contents list.</LR.LIST.RESULT
  32392. ></LABEL
  32393. ></SUBSECTION
  32394. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26915"></RBW-ANCHOR
  32395. >File Filter Mode</SS.SUBSEC.HEAD
  32396. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32397. >Purpose</L.LABEL
  32398. ><B.BODY><RBW-IDXTERM TERM1="File Filter mode (Edit Group Structure dialog)"></RBW-IDXTERM
  32399. ><RBW-IDXTERM TERM1="group" TERM2="file filter mode"></RBW-IDXTERM
  32400. >Use File Filter mode to create a filter that defines a set of files to add to the group. You can create filters based on name, type, and property values.</B.BODY
  32401. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32402. >Adding a file adds an item</SL.SUBLABEL
  32403. ><B.BODY>When you add a file to the group, ObjectTeam also adds the item associated with that file. For example, if you create a file filter that adds the CoreClasses CD to the group, the group contains<RBW-IDXTERM TERM1="item" TERM2="adding to group"></RBW-IDXTERM
  32404. ></B.BODY
  32405. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32406. ></RBW-AUTOGEN
  32407. ></RBW-MARKER
  32408. ><RBW-PARABODY>File CoreClasses of type cad</RBW-PARABODY
  32409. ></LB.LIST.BULLET
  32410. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32411. ></RBW-AUTOGEN
  32412. ></RBW-MARKER
  32413. ><RBW-PARABODY>Item CoreClasses of type cl</RBW-PARABODY
  32414. ></LB.LIST.BULLET
  32415. ></LABEL
  32416. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32417. ><RBW-IDXTERM TERM1="Edit Group Structure dialog box" TERM2="File Filter mode"></RBW-IDXTERM
  32418. >Edit Group Structure dialog box</L.LABEL
  32419. ><B.BODY>In this mode, the boxes of the Edit Group Structure dialog box are used as follows:</B.BODY
  32420. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32421. ></RBW-AUTOGEN
  32422. ></RBW-MARKER
  32423. ><RBW-PARABODY>The Contents list initially displays all files added to the group using File Filter mode.</RBW-PARABODY
  32424. ></LB.LIST.BULLET
  32425. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  32426. ></RBW-AUTOGEN
  32427. >To see both the files and items that are in the group, select Overview mode.</N2.NOTE.2
  32428. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32429. ></RBW-AUTOGEN
  32430. ></RBW-MARKER
  32431. ><RBW-PARABODY>The New button allows you to create a filter that adds files to the group.</RBW-PARABODY
  32432. ></LB.LIST.BULLET
  32433. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32434. ></RBW-AUTOGEN
  32435. ></RBW-MARKER
  32436. ><RBW-PARABODY>The Delete button allows you to delete one or more file filters.</RBW-PARABODY
  32437. ></LB.LIST.BULLET
  32438. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32439. ></RBW-AUTOGEN
  32440. ></RBW-MARKER
  32441. ><RBW-PARABODY>The Show button allows you select one or more file filters, then updates the Contents list to show only those files added to the group using the selected filters. (To display all files added to the group using File Filter mode, select all file filters.)</RBW-PARABODY
  32442. ></LB.LIST.BULLET
  32443. ></LABEL
  32444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32445. ><RBW-IDXTERM TERM1="New dialog box" TERM2="File Filter mode"></RBW-IDXTERM
  32446. >New Item Filter dialog box</L.LABEL
  32447. ><B.BODY>The New Item Filter dialog box allows you to create a file filter. Select one or more of the options, which are described following the illustration:</B.BODY
  32448. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00284.unk" origfile="pics/nwitfltr.gif" origtype="X" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  32449. ></FA.FIGURE.ANCHOR
  32450. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32451. ></RBW-AUTOGEN
  32452. ></RBW-MARKER
  32453. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Name.</CX5FX5FBULLET.EMPHASIS
  32454. > Select the Name check box and use Tcl global pattern matching to specify a file name. For example, to add all files whose names begin with client or are qualified by client, type <CX5FX5FINPUT>client*</CX5FX5FINPUT
  32455. >; to add only files qualified by client, type <CX5FX5FINPUT>client:*</CX5FX5FINPUT
  32456. >.</RBW-PARABODY
  32457. ></LB.LIST.BULLET
  32458. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32459. ></RBW-AUTOGEN
  32460. ></RBW-MARKER
  32461. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Type.</CX5FX5FBULLET.EMPHASIS
  32462. > Select the Type check box and use Tcl global pattern matching to specify a file type. The following table lists the file types, which are case sensitive:</RBW-PARABODY
  32463. ></LB.LIST.BULLET
  32464. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="378p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cad</CELLBODY
  32465. ></ENTRY
  32466. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Diagram</CELLBODY
  32467. ></ENTRY
  32468. ></RBW-ROW
  32469. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ccd</CELLBODY
  32470. ></ENTRY
  32471. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Communication Diagram</CELLBODY
  32472. ></ENTRY
  32473. ></RBW-ROW
  32474. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cdm</CELLBODY
  32475. ></ENTRY
  32476. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Definition Matrix</CELLBODY
  32477. ></ENTRY
  32478. ></RBW-ROW
  32479. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cod</CELLBODY
  32480. ></ENTRY
  32481. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Collaboration Diagram</CELLBODY
  32482. ></ENTRY
  32483. ></RBW-ROW
  32484. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dfd</CELLBODY
  32485. ></ENTRY
  32486. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Flow Diagram</CELLBODY
  32487. ></ENTRY
  32488. ></RBW-ROW
  32489. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>etd</CELLBODY
  32490. ></ENTRY
  32491. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sequence Diagram</CELLBODY
  32492. ></ENTRY
  32493. ></RBW-ROW
  32494. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>mgd</CELLBODY
  32495. ></ENTRY
  32496. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Message Generalization Diagram</CELLBODY
  32497. ></ENTRY
  32498. ></RBW-ROW
  32499. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>std</CELLBODY
  32500. ></ENTRY
  32501. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>State Transition Diagram</CELLBODY
  32502. ></ENTRY
  32503. ></RBW-ROW
  32504. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ucd</CELLBODY
  32505. ></ENTRY
  32506. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use Case Diagram</CELLBODY
  32507. ></ENTRY
  32508. ></RBW-ROW
  32509. ></TBODY
  32510. ></TGROUP
  32511. ></RBW-TABLE
  32512. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32513. ></RBW-AUTOGEN
  32514. ></RBW-MARKER
  32515. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Property.</CX5FX5FBULLET.EMPHASIS
  32516. > Select the Property check box, specify a property name, and use Tcl global pattern matching to specify a property value.</RBW-PARABODY
  32517. ></LB.LIST.BULLET
  32518. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32519. >For more information</SL.SUBLABEL
  32520. ><B.BODY>See the Tcl documentation for details on Tcl global pattern matching. See <RBW-XREF REFID="39383" TYPE="XREF-TEXTCOPY">Appendix A, OMT Support</RBW-XREF
  32521. >, for more information about the OMT diagrams.</B.BODY
  32522. ></LABEL
  32523. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32524. >How to add a file filter</L.LABEL
  32525. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32526. ></RBW-AUTOGEN
  32527. ></RBW-MARKER
  32528. ><RBW-PARABODY>To add a file filter:</RBW-PARABODY
  32529. ></P.PROCEDURE
  32530. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32531. ></RBW-AUTOGEN
  32532. ></RBW-MARKER
  32533. ><RBW-PARABODY>Select File Filter mode.</RBW-PARABODY
  32534. ></LN.LIST.NUM
  32535. ><LR.LIST.RESULT>The Contents list displays the files added to the group using file filters.</LR.LIST.RESULT
  32536. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32537. ></RBW-AUTOGEN
  32538. ></RBW-MARKER
  32539. ><RBW-PARABODY>Click New... </RBW-PARABODY
  32540. ></LN.LIST.NUM
  32541. ><LR.LIST.RESULT>The New File Filter dialog box appears.</LR.LIST.RESULT
  32542. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  32543. ></RBW-AUTOGEN
  32544. ></RBW-MARKER
  32545. ><RBW-PARABODY>Specify the options. Then select OK.</RBW-PARABODY
  32546. ></LN.LIST.NUM
  32547. ><LR.LIST.RESULT>ObjectTeam adds the files that match the filter criteria to the group, adds the items associated with those files to the group, and updates the Contents list to include the files added to the group.</LR.LIST.RESULT
  32548. ></LABEL
  32549. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32550. >How to display the files added by a particular file filter</L.LABEL
  32551. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32552. ></RBW-AUTOGEN
  32553. ></RBW-MARKER
  32554. ><RBW-PARABODY>To display the files added to group by a particular file filter:</RBW-PARABODY
  32555. ></P.PROCEDURE
  32556. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32557. ></RBW-AUTOGEN
  32558. ></RBW-MARKER
  32559. ><RBW-PARABODY>In File Filter mode, click Show...</RBW-PARABODY
  32560. ></LN.LIST.NUM
  32561. ><LR.LIST.RESULT>A dialog box appears, displaying a list of all file filters. </LR.LIST.RESULT
  32562. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32563. ></RBW-AUTOGEN
  32564. ></RBW-MARKER
  32565. ><RBW-PARABODY>Select one or more of the file filters. Then click OK.</RBW-PARABODY
  32566. ></LN.LIST.NUM
  32567. ><LR.LIST.RESULT>The files added to the group by the selected file filters are displayed in the Contents list.</LR.LIST.RESULT
  32568. ></LABEL
  32569. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32570. >How to remove a file filter</L.LABEL
  32571. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32572. ></RBW-AUTOGEN
  32573. ></RBW-MARKER
  32574. ><RBW-PARABODY>To remove a file filter:</RBW-PARABODY
  32575. ></P.PROCEDURE
  32576. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32577. ></RBW-AUTOGEN
  32578. ></RBW-MARKER
  32579. ><RBW-PARABODY>In File Filter mode, click Delete...</RBW-PARABODY
  32580. ></LN.LIST.NUM
  32581. ><LR.LIST.RESULT>A dialog box appears displaying a list of all file filters. </LR.LIST.RESULT
  32582. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32583. ></RBW-AUTOGEN
  32584. ></RBW-MARKER
  32585. ><RBW-PARABODY>Select one or more of the file filters. Then click OK.</RBW-PARABODY
  32586. ></LN.LIST.NUM
  32587. ><LR.LIST.RESULT>ObjectTeam removes the selected file filters. Files added to the group only by the selected file filters are removed from the group along with their associated items.</LR.LIST.RESULT
  32588. ></LABEL
  32589. ></SUBSECTION
  32590. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22021"></RBW-ANCHOR
  32591. >Item Filter Mode</SS.SUBSEC.HEAD
  32592. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32593. >Purpose</L.LABEL
  32594. ><B.BODY><RBW-IDXTERM TERM1="Item Filter mode (Edit Group Structure dialog)"></RBW-IDXTERM
  32595. ><RBW-IDXTERM TERM1="group" TERM2="item filter mode"></RBW-IDXTERM
  32596. >Use Item Filter mode to create a filter that defines a set of items to add to the group. You can create item filters based on name, type, and property values.</B.BODY
  32597. ></LABEL
  32598. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32599. ><RBW-IDXTERM TERM1="Edit Group Structure dialog box" TERM2="Item Filter mode"></RBW-IDXTERM
  32600. >Edit Group Structure dialog box</L.LABEL
  32601. ><B.BODY>In this mode, the fields of the Edit Group Structure dialog box are used as follows:</B.BODY
  32602. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32603. ></RBW-AUTOGEN
  32604. ></RBW-MARKER
  32605. ><RBW-PARABODY>The Contents list box initially displays all items added to the group using Item Filter mode.</RBW-PARABODY
  32606. ></LB.LIST.BULLET
  32607. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32608. ></RBW-AUTOGEN
  32609. ></RBW-MARKER
  32610. ><RBW-PARABODY>The New button allows you to create a filter that adds items to the group.</RBW-PARABODY
  32611. ></LB.LIST.BULLET
  32612. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32613. ></RBW-AUTOGEN
  32614. ></RBW-MARKER
  32615. ><RBW-PARABODY>The Delete button allows you to delete one or more item filters.</RBW-PARABODY
  32616. ></LB.LIST.BULLET
  32617. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32618. ></RBW-AUTOGEN
  32619. ></RBW-MARKER
  32620. ><RBW-PARABODY>The Show button allows you select one or more item filters, and then updates the Contents list to show only those items added to the group using the selected filters. (To display all items added to the group using Item Filter mode, select all item filters.)</RBW-PARABODY
  32621. ></LB.LIST.BULLET
  32622. ></LABEL
  32623. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32624. ><RBW-IDXTERM TERM1="New dialog box" TERM2="Item Filter mode"></RBW-IDXTERM
  32625. >New Item Filter dialog box</L.LABEL
  32626. ><B.BODY>The New Item Filter dialog box allows you to create an item filter. Select one or more of the options, which are described following the illustration.</B.BODY
  32627. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00285.unk" origfile="pics/nwitfltr.gif" origtype="X" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  32628. ></FA.FIGURE.ANCHOR
  32629. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32630. ></RBW-AUTOGEN
  32631. ></RBW-MARKER
  32632. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Name.</CX5FX5FBULLET.EMPHASIS
  32633. > Select the Name check box and use Tcl global pattern matching to specify an item name. For example, to add all items whose names begin with client or are qualified by client, type <CX5FX5FINPUT>client*</CX5FX5FINPUT
  32634. >. To add only items qualified by client, type <CX5FX5FINPUT>client:*</CX5FX5FINPUT
  32635. >.</RBW-PARABODY
  32636. ></LB.LIST.BULLET
  32637. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32638. ></RBW-AUTOGEN
  32639. ></RBW-MARKER
  32640. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Type.</CX5FX5FBULLET.EMPHASIS
  32641. > Select the Type check box and use Tcl global pattern matching to specify an item type. The following table lists the item types, which are case sensitive:</RBW-PARABODY
  32642. ></LB.LIST.BULLET
  32643. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="378p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cl</CELLBODY
  32644. ></ENTRY
  32645. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  32646. ></ENTRY
  32647. ></RBW-ROW
  32648. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>de</CELLBODY
  32649. ></ENTRY
  32650. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>data element</CELLBODY
  32651. ></ENTRY
  32652. ></RBW-ROW
  32653. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>et</CELLBODY
  32654. ></ENTRY
  32655. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>event trace</CELLBODY
  32656. ></ENTRY
  32657. ></RBW-ROW
  32658. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pe</CELLBODY
  32659. ></ENTRY
  32660. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>process element</CELLBODY
  32661. ></ENTRY
  32662. ></RBW-ROW
  32663. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>st</CELLBODY
  32664. ></ENTRY
  32665. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>state</CELLBODY
  32666. ></ENTRY
  32667. ></RBW-ROW
  32668. ></TBODY
  32669. ></TGROUP
  32670. ></RBW-TABLE
  32671. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32672. ></RBW-AUTOGEN
  32673. ></RBW-MARKER
  32674. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Property.</CX5FX5FBULLET.EMPHASIS
  32675. > Select the Property check box, specify a property name, and use Tcl global pattern matching to specify a property value.</RBW-PARABODY
  32676. ></LB.LIST.BULLET
  32677. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32678. >For more information</SL.SUBLABEL
  32679. ><B.BODY>See the Tcl documentation for details on Tcl global pattern matching.</B.BODY
  32680. ></LABEL
  32681. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32682. >Using item filters</L.LABEL
  32683. ><B.BODY>Adding and removing item filters is similar to adding and removing file items. Displaying the items added to the group using a particular item filter is similar to displaying the files added the group using a particular file filter.</B.BODY
  32684. ><B.BODY>For details on these procedures, see <RBW-XREF REFID="26915" TYPE="XREF-TEXTCOPY">File Filter Mode</RBW-XREF
  32685. >.</B.BODY
  32686. ></LABEL
  32687. ></SUBSECTION
  32688. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24674"></RBW-ANCHOR
  32689. >File Selector Mode</SS.SUBSEC.HEAD
  32690. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32691. >Purpose</L.LABEL
  32692. ><B.BODY><RBW-IDXTERM TERM1="File Selector mode (Edit Group Structure dialog)"></RBW-IDXTERM
  32693. ><RBW-IDXTERM TERM1="group" TERM2="file selector mode"></RBW-IDXTERM
  32694. >Use File Selector mode to specify selection criteria that add files to the group based on what items are already in it.</B.BODY
  32695. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32696. >Adding a file adds an item</SL.SUBLABEL
  32697. ><B.BODY>When you add a file to the group, ObjectTeam also adds the item associated with it. For example, if you specify selection criteria that adds the CoreClasses CD to the group, the group contains</B.BODY
  32698. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32699. ></RBW-AUTOGEN
  32700. ></RBW-MARKER
  32701. ><RBW-PARABODY>File CoreClasses of type cad</RBW-PARABODY
  32702. ></LB.LIST.BULLET
  32703. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32704. ></RBW-AUTOGEN
  32705. ></RBW-MARKER
  32706. ><RBW-PARABODY>Item CoreClasses of type cl</RBW-PARABODY
  32707. ></LB.LIST.BULLET
  32708. ></LABEL
  32709. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32710. ><RBW-IDXTERM TERM1="Edit Group Structure dialog box" TERM2="File Selector mode"></RBW-IDXTERM
  32711. >Edit Group Structure dialog box</L.LABEL
  32712. ><B.BODY>In this mode, the boxes of the Edit Group Structure dialog box are used as follows:</B.BODY
  32713. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32714. ></RBW-AUTOGEN
  32715. ></RBW-MARKER
  32716. ><RBW-PARABODY>The Contents list displays all files and items in the group.</RBW-PARABODY
  32717. ></LB.LIST.BULLET
  32718. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32719. ></RBW-AUTOGEN
  32720. ></RBW-MARKER
  32721. ><RBW-PARABODY>The New button allows you to specify the selection criteria that add files to the group based on what items are already in the group.</RBW-PARABODY
  32722. ></LB.LIST.BULLET
  32723. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32724. ></RBW-AUTOGEN
  32725. ></RBW-MARKER
  32726. ><RBW-PARABODY>The Delete button allows you to delete selection criteria.</RBW-PARABODY
  32727. ></LB.LIST.BULLET
  32728. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32729. ></RBW-AUTOGEN
  32730. ></RBW-MARKER
  32731. ><RBW-PARABODY>The Show button is unavailable.</RBW-PARABODY
  32732. ></LB.LIST.BULLET
  32733. ></LABEL
  32734. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32735. ><RBW-IDXTERM TERM1="New dialog box" TERM2="File Selector mode"></RBW-IDXTERM
  32736. >New File Selector dialog box</L.LABEL
  32737. ><B.BODY>The New File Selector dialog box allows you to specify selection criteria that add files to the group.</B.BODY
  32738. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00286.unk" origfile="pics/nwfilsel.gif" origtype="X" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  32739. ></FA.FIGURE.ANCHOR
  32740. ><B.BODY>The selection criteria works as follows:</B.BODY
  32741. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32742. ></RBW-AUTOGEN
  32743. ></RBW-MARKER
  32744. ><RBW-PARABODY>ObjectTeam collects all items that are in the group and whose criteria match the type specified in the Item Type box.</RBW-PARABODY
  32745. ></LN.LIST.NUM
  32746. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32747. ></RBW-AUTOGEN
  32748. ></RBW-MARKER
  32749. ><RBW-PARABODY>It then uses those items and the Decomp Flags<CX5FX5FBULLET.EMPHASIS> </CX5FX5FBULLET.EMPHASIS
  32750. >box to locate files that are not already in the group.</RBW-PARABODY
  32751. ></LN.LIST.NUM
  32752. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Decomp FlagS</CELLHEADING
  32753. ></ENTRY
  32754. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Files Located</CELLHEADING
  32755. ></ENTRY
  32756. ></RBW-ROW
  32757. ></THEAD
  32758. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Files</CELLBODY
  32759. ></ENTRY
  32760. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Any file attached to any of the items</CELLBODY
  32761. ></ENTRY
  32762. ></RBW-ROW
  32763. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Components</CELLBODY
  32764. ></ENTRY
  32765. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Any file that contains a component that is attached to any of the items</CELLBODY
  32766. ></ENTRY
  32767. ></RBW-ROW
  32768. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parents</CELLBODY
  32769. ></ENTRY
  32770. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Any file that contains a parent component (for example, a superclass) that is attached to any of the items</CELLBODY
  32771. ></ENTRY
  32772. ></RBW-ROW
  32773. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Leafs</CELLBODY
  32774. ></ENTRY
  32775. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Any file that contains a leaf component (for example, a subclass) that is attached to any of the items</CELLBODY
  32776. ></ENTRY
  32777. ></RBW-ROW
  32778. ></TBODY
  32779. ></TGROUP
  32780. ></RBW-TABLE
  32781. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  32782. ></RBW-AUTOGEN
  32783. ></RBW-MARKER
  32784. ><RBW-PARABODY>ObjectTeam adds to the group any file that is found in step 2 and that has a type specified in the File Types<CX5FX5FBULLET.EMPHASIS> </CX5FX5FBULLET.EMPHASIS
  32785. >box.</RBW-PARABODY
  32786. ></LN.LIST.NUM
  32787. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  32788. ></RBW-AUTOGEN
  32789. >You can specify one item type, one or more decomp flags, and one or more file types. You can specify one set of criteria for each item type.</N.NOTE
  32790. ></LABEL
  32791. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32792. >How to add a file selector</L.LABEL
  32793. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32794. ></RBW-AUTOGEN
  32795. ></RBW-MARKER
  32796. ><RBW-PARABODY>To add a file selector:</RBW-PARABODY
  32797. ></P.PROCEDURE
  32798. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32799. ></RBW-AUTOGEN
  32800. ></RBW-MARKER
  32801. ><RBW-PARABODY>In File Selector mode, click New...</RBW-PARABODY
  32802. ></LN.LIST.NUM
  32803. ><LR.LIST.RESULT>The New File Selector dialog box appears.</LR.LIST.RESULT
  32804. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32805. ></RBW-AUTOGEN
  32806. ></RBW-MARKER
  32807. ><RBW-PARABODY>Specify the file selection criteria. Then click OK.</RBW-PARABODY
  32808. ></LN.LIST.NUM
  32809. ><LR.LIST.RESULT>ObjectTeam uses the file selection criteria and all other rules specified in all other modes of the Edit File Structure dialog box to update the contents of the group. It then updates the Contents list box to display all files and items in the group.</LR.LIST.RESULT
  32810. ></LABEL
  32811. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32812. >How to remove a file selector</L.LABEL
  32813. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32814. ></RBW-AUTOGEN
  32815. ></RBW-MARKER
  32816. ><RBW-PARABODY>To remove a file selector:</RBW-PARABODY
  32817. ></P.PROCEDURE
  32818. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32819. ></RBW-AUTOGEN
  32820. ></RBW-MARKER
  32821. ><RBW-PARABODY>In File Selector mode, click Delete...</RBW-PARABODY
  32822. ></LN.LIST.NUM
  32823. ><LR.LIST.RESULT>A dialog box appears, displaying a list of all file selectors. </LR.LIST.RESULT
  32824. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32825. ></RBW-AUTOGEN
  32826. ></RBW-MARKER
  32827. ><RBW-PARABODY>Select one or more of the file selectors. Then click OK.</RBW-PARABODY
  32828. ></LN.LIST.NUM
  32829. ><LR.LIST.RESULT>ObjectTeam removes the selected file selection criteria, uses the remaining file selection criteria and all other rules specified in all other modes of the Edit File Structure dialog box to update the contents of the group. It then updates the Contents list box to display all files and items in the group.</LR.LIST.RESULT
  32830. ></LABEL
  32831. ></SUBSECTION
  32832. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="25711"></RBW-ANCHOR
  32833. >Item Selector Selector Mode</SS.SUBSEC.HEAD
  32834. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32835. >Purpose</L.LABEL
  32836. ><B.BODY><RBW-IDXTERM TERM1="Item Selector mode (Edit Group Structure dialog)"></RBW-IDXTERM
  32837. ><RBW-IDXTERM TERM1="group" TERM2="item selector mode"></RBW-IDXTERM
  32838. >Use Item Selector mode to specify selection criteria that add items to the group based on what files are already in the group.</B.BODY
  32839. ></LABEL
  32840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32841. ><RBW-IDXTERM TERM1="Edit Group Structure dialog box" TERM2="Item Selector mode"></RBW-IDXTERM
  32842. >Edit Group Structure dialog box</L.LABEL
  32843. ><B.BODY>In this mode, the fields of the Edit Group Structure dialog box are used as follows:</B.BODY
  32844. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32845. ></RBW-AUTOGEN
  32846. ></RBW-MARKER
  32847. ><RBW-PARABODY>The Contents list displays all files and items in the group.</RBW-PARABODY
  32848. ></LB.LIST.BULLET
  32849. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32850. ></RBW-AUTOGEN
  32851. ></RBW-MARKER
  32852. ><RBW-PARABODY>The New button allows you to specify the selection criteria that add items to the group based on what files are already in the group.</RBW-PARABODY
  32853. ></LB.LIST.BULLET
  32854. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32855. ></RBW-AUTOGEN
  32856. ></RBW-MARKER
  32857. ><RBW-PARABODY>The Delete button allows you to delete selection criteria.</RBW-PARABODY
  32858. ></LB.LIST.BULLET
  32859. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32860. ></RBW-AUTOGEN
  32861. ></RBW-MARKER
  32862. ><RBW-PARABODY>The Show button is unavailable.</RBW-PARABODY
  32863. ></LB.LIST.BULLET
  32864. ></LABEL
  32865. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32866. ><RBW-IDXTERM TERM1="New dialog box" TERM2="Item Selector mode"></RBW-IDXTERM
  32867. >New dialog box</L.LABEL
  32868. ><B.BODY>The New Item Selector dialog box allows you to specify selection criteria that adds items to the group.</B.BODY
  32869. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00287.unk" origfile="pics/nwitmsel.gif" origtype="X" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  32870. ></FA.FIGURE.ANCHOR
  32871. ><B.BODY>The selection criteria work as follows:</B.BODY
  32872. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32873. ></RBW-AUTOGEN
  32874. ></RBW-MARKER
  32875. ><RBW-PARABODY>ObjectTeam collects all files that are in the group and that have the type specified in the File Type box.</RBW-PARABODY
  32876. ></LN.LIST.NUM
  32877. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32878. ></RBW-AUTOGEN
  32879. ></RBW-MARKER
  32880. ><RBW-PARABODY>ObjectTeam adds to the group all the items in all of those files that match the criteria specified in the Type and Qualified boxes. The Qualified field for each item type can be Yes or Don’t Care.</RBW-PARABODY
  32881. ></LN.LIST.NUM
  32882. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  32883. ></RBW-MARKER
  32884. ><RBW-PARABODY>If you specify Yes, all qualified items of the specified type match the criteria and are added to the group.</RBW-PARABODY
  32885. ></LB2.LIST.BULLET.2
  32886. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  32887. ></RBW-MARKER
  32888. ><RBW-PARABODY>If you specify Don’t Care, all items of the specified type match the criteria and are added to the group.</RBW-PARABODY
  32889. ></LB2.LIST.BULLET.2
  32890. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  32891. ></RBW-AUTOGEN
  32892. >You can specify one file type and one or more item types (with qualification). You can specify one set of criteria for each file type.</N.NOTE
  32893. ></LABEL
  32894. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32895. >Using the Qualified box</L.LABEL
  32896. ><B.BODY><RBW-IDXTERM TERM1="Qualified item, in group"></RBW-IDXTERM
  32897. >The following illustration shows a class (on the left) and the item types associated with each element of the class (on the right).</B.BODY
  32898. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00288.tif" origseq="12" origtype="I" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  32899. ></FA.FIGURE.ANCHOR
  32900. ><B.BODY>If the group contains the CDM file, Person, an item selector that specifies items of type de with the qualification Don’t Care returns all items of type de:</B.BODY
  32901. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32902. ></RBW-AUTOGEN
  32903. ></RBW-MARKER
  32904. ><RBW-PARABODY>The <CX5FX5FOBJECT.NAME>birthdate</CX5FX5FOBJECT.NAME
  32905. > attribute</RBW-PARABODY
  32906. ></LB.LIST.BULLET
  32907. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32908. ></RBW-AUTOGEN
  32909. ></RBW-MARKER
  32910. ><RBW-PARABODY>The <CX5FX5FOBJECT.NAME>now</CX5FX5FOBJECT.NAME
  32911. > argument</RBW-PARABODY
  32912. ></LB.LIST.BULLET
  32913. ><B.BODY>An item selector that specifies items of type de with the qualification Yes, returns all <CX5FX5FEMPHASIS>qualified</CX5FX5FEMPHASIS
  32914. > items of type de:</B.BODY
  32915. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32916. ></RBW-AUTOGEN
  32917. ></RBW-MARKER
  32918. ><RBW-PARABODY>The <CX5FX5FOBJECT.NAME>birthdate</CX5FX5FOBJECT.NAME
  32919. > attribute</RBW-PARABODY
  32920. ></LB.LIST.BULLET
  32921. ></LABEL
  32922. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32923. >How to add an item selector</L.LABEL
  32924. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32925. ></RBW-AUTOGEN
  32926. ></RBW-MARKER
  32927. ><RBW-PARABODY>To add an item selector:</RBW-PARABODY
  32928. ></P.PROCEDURE
  32929. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32930. ></RBW-AUTOGEN
  32931. ></RBW-MARKER
  32932. ><RBW-PARABODY>In Item Selector mode, click New... </RBW-PARABODY
  32933. ></LN.LIST.NUM
  32934. ><LR.LIST.RESULT>The New Item Selector dialog box appears.</LR.LIST.RESULT
  32935. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32936. ></RBW-AUTOGEN
  32937. ></RBW-MARKER
  32938. ><RBW-PARABODY>Specify the item selection criteria. Then click OK.</RBW-PARABODY
  32939. ></LN.LIST.NUM
  32940. ><LR.LIST.RESULT>ObjectTeam uses the item selection criteria, and all other rules specified in all other modes of the Edit File Structure dialog box to update the contents of the group. It then updates the Contents list to display all files and items in the group.</LR.LIST.RESULT
  32941. ></LABEL
  32942. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32943. >How to remove an item selector</L.LABEL
  32944. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  32945. ></RBW-AUTOGEN
  32946. ></RBW-MARKER
  32947. ><RBW-PARABODY>To remove an item selector:</RBW-PARABODY
  32948. ></P.PROCEDURE
  32949. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  32950. ></RBW-AUTOGEN
  32951. ></RBW-MARKER
  32952. ><RBW-PARABODY>In Item Selector mode, click Delete...</RBW-PARABODY
  32953. ></LN.LIST.NUM
  32954. ><LR.LIST.RESULT>A dialog box appears, displaying a list of all item selectors. </LR.LIST.RESULT
  32955. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  32956. ></RBW-AUTOGEN
  32957. ></RBW-MARKER
  32958. ><RBW-PARABODY>Select one or more of the item selectors. Then click OK.</RBW-PARABODY
  32959. ></LN.LIST.NUM
  32960. ><LR.LIST.RESULT>ObjectTeam removes the selected item selection criteria and uses the remaining item selection criteria and all other rules specified in all other modes of the Edit File Structure dialog box to update the contents of the group. It then updates the Contents list to display all files and items in the group.</LR.LIST.RESULT
  32961. ></LABEL
  32962. ></SUBSECTION
  32963. ></SECTION
  32964. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35319"></RBW-ANCHOR
  32965. >Creating Group Versions and SavedGroup Versions</S.SECTION.HEAD
  32966. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32967. >Introduction </L.LABEL
  32968. ><B.BODY>Groups have a special type of version control. The reason is that they are not so much a part of the hierarchical tree structure of the project, but rather a view of a selected part of the currently visible contents of a system. </B.BODY
  32969. ></LABEL
  32970. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32971. >Two version types</L.LABEL
  32972. ><B.BODY>Group versions support two version types:</B.BODY
  32973. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32974. ></RBW-AUTOGEN
  32975. ></RBW-MARKER
  32976. ><RBW-PARABODY>Group version stores the settings of the Edit Group Structure dialog box.<RBW-IDXTERM TERM1="group" TERM2="version of"></RBW-IDXTERM
  32977. ><RBW-IDXTERM TERM1="version" TERM2="of group"></RBW-IDXTERM
  32978. ></RBW-PARABODY
  32979. ></LB.LIST.BULLET
  32980. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  32981. ></RBW-AUTOGEN
  32982. ></RBW-MARKER
  32983. ><RBW-PARABODY>SavedGroup version stores the names and versions of all files and items in the group.<RBW-IDXTERM TERM1="group" TERM2="saving contents of"></RBW-IDXTERM
  32984. ><RBW-IDXTERM TERM1="saving" TERM2="group contents"></RBW-IDXTERM
  32985. ><RBW-IDXTERM TERM1="SavedGroup" TERM2="definition"></RBW-IDXTERM
  32986. ></RBW-PARABODY
  32987. ></LB.LIST.BULLET
  32988. ><B.BODY>You need a group to make a SavedGroup. You need a SavedGroup to make a corporate group.</B.BODY
  32989. ></LABEL
  32990. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32991. >Group versions</L.LABEL
  32992. ><B.BODY>Freezing a group version and creating a new one does not affect the members of the group. Only the settings of the explicit lists, filters, and selectors defined in the Edit Group Structure dialog box are part of the group. The main reason for freezing a group version is so that you can modify the composition of the group and be able to restore the original composition if necessary.</B.BODY
  32993. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  32994. ></RBW-AUTOGEN
  32995. >Groups that are part of the current group are not frozen automatically. If you want to be able to restore the exact settings of the group structure, you must freeze the included groups also.</N.NOTE
  32996. ></LABEL
  32997. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  32998. ><RBW-IDXTERM TERM1="freezing" TERM2="group"></RBW-IDXTERM
  32999. ><RBW-IDXTERM TERM1="group" TERM2="freezing"></RBW-IDXTERM
  33000. >How to freeze a group</L.LABEL
  33001. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33002. ></RBW-AUTOGEN
  33003. ></RBW-MARKER
  33004. ><RBW-PARABODY>To freeze a selected group:<RBW-IDXTERM TERM1="freezing" TERM2="group"></RBW-IDXTERM
  33005. ><RBW-IDXTERM TERM1="group" TERM2="freezing"></RBW-IDXTERM
  33006. ></RBW-PARABODY
  33007. ></P.PROCEDURE
  33008. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33009. ></RBW-AUTOGEN
  33010. ></RBW-MARKER
  33011. ><RBW-PARABODY>Select a group in the information area of the Browser.</RBW-PARABODY
  33012. ></LN.LIST.NUM
  33013. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33014. ></RBW-AUTOGEN
  33015. ></RBW-MARKER
  33016. ><RBW-PARABODY>Select Version | Freeze.</RBW-PARABODY
  33017. ></LN.LIST.NUM
  33018. ><LR.LIST.RESULT>A dialog box appears in which you can enter a comment.</LR.LIST.RESULT
  33019. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33020. ></RBW-AUTOGEN
  33021. ></RBW-MARKER
  33022. ><RBW-PARABODY>Include a comment. Then click OK.</RBW-PARABODY
  33023. ></LN.LIST.NUM
  33024. ><LR.LIST.RESULT>ObjectTeam freezes the group.</LR.LIST.RESULT
  33025. ></LABEL
  33026. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33027. >Copying group versions between systems</L.LABEL
  33028. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33029. ></RBW-AUTOGEN
  33030. ></RBW-MARKER
  33031. ><RBW-PARABODY>To copy a group version from one system to another:</RBW-PARABODY
  33032. ></P.PROCEDURE
  33033. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33034. ></RBW-AUTOGEN
  33035. ></RBW-MARKER
  33036. ><RBW-PARABODY>Select the group version you want to copy in the information area of the Browser</RBW-PARABODY
  33037. ></LN.LIST.NUM
  33038. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33039. ></RBW-AUTOGEN
  33040. ></RBW-MARKER
  33041. ><RBW-PARABODY>Select Edit | Copy (or Edit | Cut).</RBW-PARABODY
  33042. ></LN.LIST.NUM
  33043. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33044. ></RBW-AUTOGEN
  33045. ></RBW-MARKER
  33046. ><RBW-PARABODY>Open the system into which you want to copy the group.</RBW-PARABODY
  33047. ></LN.LIST.NUM
  33048. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  33049. ></RBW-AUTOGEN
  33050. ></RBW-MARKER
  33051. ><RBW-PARABODY>Select Edit | Paste.</RBW-PARABODY
  33052. ></LN.LIST.NUM
  33053. ><LR.LIST.RESULT>The Copy Group dialog appears.</LR.LIST.RESULT
  33054. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  33055. ></RBW-AUTOGEN
  33056. ></RBW-MARKER
  33057. ><RBW-PARABODY>Select Copy Definition and/or Copy Contents and click OK.</RBW-PARABODY
  33058. ></LN.LIST.NUM
  33059. ><LR.LIST.RESULT>Copy Definition copies the definition of the group to the new system. Copy Contents copies the actual contents the group. </LR.LIST.RESULT
  33060. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33061. ></RBW-AUTOGEN
  33062. >You can also import a group by dragging it to a system.</N.NOTE
  33063. ></LABEL
  33064. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33065. >SavedGroup versions</L.LABEL
  33066. ><BI.BODY.INTRO>When you create a SavedGroup version, ObjectTeam stores a list of all objects in the group with their versions in the <saved groups> pseudo object. All objects in the group are frozen. </BI.BODY.INTRO
  33067. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00289.tif" origseq="20" origtype="I" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  33068. ></FAR.FIGURE.ANCHOR.RIGHT
  33069. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33070. >Purpose</SL.SUBLABEL
  33071. ><B.BODY>The main reason for creating saved groups is to be able to easily retrieve earlier versions of diagrams, including their associated items and properties. Diagram versions do not include the items referenced in the diagram. If you want to be able to restore a diagram, and the items and item properties in it, create a saved group that contains the diagrams and the items and properties in the diagram. Restoring the saved group restores your diagram, including the items and properties. <RBW-IDXTERM TERM1="diagram" TERM2="and SavedGroup"></RBW-IDXTERM
  33072. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  33073. ><RBW-IDXTERM TERM1="item" TERM2="and SavedGroup"></RBW-IDXTERM
  33074. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  33075. ><RBW-IDXTERM TERM1="property" TERM2="and SavedGroup"></RBW-IDXTERM
  33076. ></B.BODY
  33077. ></LABEL
  33078. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33079. ><RBW-ANCHOR ID="11006"></RBW-ANCHOR
  33080. >How to create a SavedGroup<RBW-IDXTERM TERM1="snapshot, of group"></RBW-IDXTERM
  33081. ></L.LABEL
  33082. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33083. ></RBW-AUTOGEN
  33084. ></RBW-MARKER
  33085. ><RBW-PARABODY>To create a SavedGroup:<RBW-IDXTERM TERM1="SavedGroup" TERM2="creating"></RBW-IDXTERM
  33086. ><RBW-IDXTERM TERM1="creating" TERM2="SavedGroups"></RBW-IDXTERM
  33087. ><RBW-IDXTERM TERM1="version" TERM2="of SavedGroup"></RBW-IDXTERM
  33088. ></RBW-PARABODY
  33089. ></P.PROCEDURE
  33090. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33091. ></RBW-AUTOGEN
  33092. ></RBW-MARKER
  33093. ><RBW-PARABODY>On the system level, select a group in the information area.</RBW-PARABODY
  33094. ></LN.LIST.NUM
  33095. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33096. ></RBW-AUTOGEN
  33097. ></RBW-MARKER
  33098. ><RBW-PARABODY>Select Version | Snapshot.</RBW-PARABODY
  33099. ></LN.LIST.NUM
  33100. ><LR.LIST.RESULT>A dialog box appears in which you can enter a comment, such as the reason the saved group was created. This comment appears in the Info dialog box.</LR.LIST.RESULT
  33101. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33102. ></RBW-AUTOGEN
  33103. ></RBW-MARKER
  33104. ><RBW-PARABODY>Enter a comment, and then click OK.</RBW-PARABODY
  33105. ></LN.LIST.NUM
  33106. ><LR.LIST.RESULT>In the <saved groups> pseudo object, ObjectTeam creates a saved group version with the same name as the group version and the contents of the group version are frozen.</LR.LIST.RESULT
  33107. ></LABEL
  33108. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33109. >Restoring a SavedGroup </L.LABEL
  33110. ><B.BODY>When you restore a SavedGroup version, the object versions listed in the SavedGroup become the selected versions and appear in the information area. Other versions of these objects are unselected but still available.</B.BODY
  33111. ><BI.BODY.INTRO>For files, the versions that were the selected versions when the SavedGroup was made, become the selected versions again. The items and their properties are overwritten by the items and properties as they were at the time the SavedGroup was created. The group composition, defined in the Edit Group Structure dialog box is not affected.</BI.BODY.INTRO
  33112. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00290.tif" origseq="37" origtype="I" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  33113. ></FA.FIGURE.ANCHOR
  33114. ></LABEL
  33115. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33116. >How to recall a saved group versions</L.LABEL
  33117. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33118. ></RBW-AUTOGEN
  33119. ></RBW-MARKER
  33120. ><RBW-PARABODY>To recall a SavedGroup version:<RBW-IDXTERM TERM1="restoring" TERM2="SavedGroup"></RBW-IDXTERM
  33121. ><RBW-IDXTERM TERM1="group" TERM2="restoring saved"></RBW-IDXTERM
  33122. ><RBW-IDXTERM TERM1="SavedGroup" TERM2="restoring"></RBW-IDXTERM
  33123. ><RBW-IDXTERM TERM1="Restore (Version menu)"></RBW-IDXTERM
  33124. ></RBW-PARABODY
  33125. ></P.PROCEDURE
  33126. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33127. ></RBW-AUTOGEN
  33128. ></RBW-MARKER
  33129. ><RBW-PARABODY>Move to the system level.</RBW-PARABODY
  33130. ></LN.LIST.NUM
  33131. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33132. ></RBW-AUTOGEN
  33133. ></RBW-MARKER
  33134. ><RBW-PARABODY>Select View | Pseudo to display the pseudo objects.</RBW-PARABODY
  33135. ></LN.LIST.NUM
  33136. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33137. ></RBW-AUTOGEN
  33138. ></RBW-MARKER
  33139. ><RBW-PARABODY>Open the <saved groups> pseudo object.</RBW-PARABODY
  33140. ></LN.LIST.NUM
  33141. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  33142. ></RBW-AUTOGEN
  33143. ></RBW-MARKER
  33144. ><RBW-PARABODY>Select the SavedGroup version.</RBW-PARABODY
  33145. ></LN.LIST.NUM
  33146. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  33147. ></RBW-AUTOGEN
  33148. ></RBW-MARKER
  33149. ><RBW-PARABODY>Select Version | Restore.</RBW-PARABODY
  33150. ></LN.LIST.NUM
  33151. ><LR.LIST.RESULT>ObjectTeam restores the SavedGroup version, as described above.</LR.LIST.RESULT
  33152. ></LABEL
  33153. ></SECTION
  33154. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28675"></RBW-ANCHOR
  33155. >Creating and Using Corporate Groups<RBW-IDXTERM TERM1="corporate group" TERM2="definition of"></RBW-IDXTERM
  33156. ><RBW-IDXTERM TERM1="group" TERM2="corporate"></RBW-IDXTERM
  33157. ></S.SECTION.HEAD
  33158. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33159. >Corporate groups</L.LABEL
  33160. ><B.BODY>By promoting a SavedGroup from system to corporate level, you create a corporate group. The group and its contents become available for use in all other projects. Together, these corporate groups form the corporate model.<RBW-IDXTERM TERM1="corporate modeling"></RBW-IDXTERM
  33161. ><RBW-IDXTERM TERM1="modeling, corporate"></RBW-IDXTERM
  33162. ></B.BODY
  33163. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00291.tif" origseq="2" origtype="I" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  33164. ></FA.FIGURE.ANCHOR
  33165. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33166. ></RBW-AUTOGEN
  33167. >Because corporate groups are always created from SavedGroups, a corporate group and its contents are always frozen. </N.NOTE
  33168. ></LABEL
  33169. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33170. >Purpose</L.LABEL
  33171. ><B.BODY>Corporate groups allow you to share design data among projects. One primary use of the corporate model is make one set of commonly used subsystems available to projects throughout the corporation. Doing so reduces both development time and maintenance time. Careful use of corporate groups can also promote standardization and stimulate reuse of design data.</B.BODY
  33172. ><B.BODY>A corporate group can be created only from a SavedGroup; thus, ObjectTeam ensures that the corporate model is not changed arbitrarily. Conversely, a system always has a fixed link to a corporate group; thus, ObjectTeam ensures that changes to the corporate model do not change the system unexpectedly.</B.BODY
  33173. ></LABEL
  33174. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33175. >Creating corporate groups</L.LABEL
  33176. ><B.BODY><RBW-IDXTERM TERM1="creating" TERM2="corporate groups"></RBW-IDXTERM
  33177. ><RBW-IDXTERM TERM1="corporate group" TERM2="creating"></RBW-IDXTERM
  33178. ><RBW-IDXTERM TERM1="group" TERM2="promoting to corporate"></RBW-IDXTERM
  33179. >When you promote a SavedGroup to the corporate level, it becomes a corporate group. Creating a new version of the SavedGroup does not update the corresponding corporate group. If you want to replace the corporate group, you must promote the new version of the SavedGroup to the corporate level. This promotion ensures that the corporate model is not changed arbitrarily.</B.BODY
  33180. ></LABEL
  33181. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33182. >How to create a corporate group</L.LABEL
  33183. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33184. ></RBW-AUTOGEN
  33185. ></RBW-MARKER
  33186. ><RBW-PARABODY>To create a corporate group:</RBW-PARABODY
  33187. ></P.PROCEDURE
  33188. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33189. ></RBW-AUTOGEN
  33190. ></RBW-MARKER
  33191. ><RBW-PARABODY>In the Browser, open a <saved groups> pseudo object.</RBW-PARABODY
  33192. ></LN.LIST.NUM
  33193. ><LT.LIST.TEXT>For details on how to create a saved group, see <RBW-XREF REFID="11006" TYPE="XREF-TEXTCOPY">How to create a SavedGroup</RBW-XREF
  33194. >.</LT.LIST.TEXT
  33195. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33196. ></RBW-AUTOGEN
  33197. >The <saved groups> object is visible in two places: under the group itself or on the system level. The <saved groups> object under the group shows all saved group versions of that group. The <saved groups> object on the system level shows all saved group versions for all groups within the system.</N2.NOTE.2
  33198. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33199. ></RBW-AUTOGEN
  33200. ></RBW-MARKER
  33201. ><RBW-PARABODY>Select a SavedGroup.</RBW-PARABODY
  33202. ></LN.LIST.NUM
  33203. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33204. ></RBW-AUTOGEN
  33205. ></RBW-MARKER
  33206. ><RBW-PARABODY>Select Version | Make Corporate.</RBW-PARABODY
  33207. ></LN.LIST.NUM
  33208. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  33209. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00292.unk" origfile="pics/makecorp.gif" origtype="X" origdoc="../../sources/pmg/groups.fm5.mif"></RBW-GRAPHIC
  33210. ></FA2.FIGURE.ANCHOR.2
  33211. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  33212. ></RBW-AUTOGEN
  33213. ></RBW-MARKER
  33214. ><RBW-PARABODY>Specify a name for the corporate group and, optionally, a comment describing the group. Then select OK.</RBW-PARABODY
  33215. ></LN.LIST.NUM
  33216. ><LR.LIST.RESULT>ObjectTeam makes the SavedGroup a corporate group. In the Information area of the Browser, under the heading <CX5FX5FPROCEDURE.NAME>In Corporate</CX5FX5FPROCEDURE.NAME
  33217. >, the status <CX5FX5FPROCEDURE.NAME>Yes</CX5FX5FPROCEDURE.NAME
  33218. > appears next to the file versions that make up this group version, indicating that these file versions are now part of the corporate model. The name of the corporate group is added to the pseudo object <corporate groups> on the corporate level.</LR.LIST.RESULT
  33219. ></LABEL
  33220. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33221. >Reusing corporate groups</L.LABEL
  33222. ><B.BODY><RBW-IDXTERM TERM1="corporate group" TERM2="reusing"></RBW-IDXTERM
  33223. ><RBW-IDXTERM TERM1="reusing corporate data"></RBW-IDXTERM
  33224. ><RBW-IDXTERM TERM1="group" TERM2="reusing"></RBW-IDXTERM
  33225. ><RBW-IDXTERM TERM1="item" TERM2="reusing"></RBW-IDXTERM
  33226. ><RBW-IDXTERM TERM1="property" TERM2="reusing"></RBW-IDXTERM
  33227. ><RBW-IDXTERM TERM1="object" TERM2="reusing"></RBW-IDXTERM
  33228. ><RBW-IDXTERM TERM1="file" TERM2="reusing"></RBW-IDXTERM
  33229. >To reuse a corporate group, copy it into your system. When you copy the corporate group into your system, the following occurs:</B.BODY
  33230. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  33231. ></RBW-AUTOGEN
  33232. ></RBW-MARKER
  33233. ><RBW-PARABODY>All file versions and items in the corporate group version are copied to the system. Conflicts between existing item generations in the system and item generations from the corporate group are solved by overwriting the existing item generations.</RBW-PARABODY
  33234. ></LB.LIST.BULLET
  33235. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  33236. ></RBW-AUTOGEN
  33237. ></RBW-MARKER
  33238. ><RBW-PARABODY>A fixed link to the corporate group version is established. You cannot establish a dynamic link. If someone changes the corporate group, and you want those changes in your system, you must copy the corporate group into your system again. Doing so ensures that changes to the corporate model do not affect any system without warning.</RBW-PARABODY
  33239. ></LB.LIST.BULLET
  33240. ><B.BODY>You cannot modify the properties of the files and items copied from the corporate group, but you can modify their scope.</B.BODY
  33241. ></LABEL
  33242. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33243. >How to reuse a corporate group</L.LABEL
  33244. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33245. ></RBW-AUTOGEN
  33246. ></RBW-MARKER
  33247. ><RBW-PARABODY>To reuse a corporate group:<RBW-IDXTERM TERM1="configuration" TERM2="adding corporate group to"></RBW-IDXTERM
  33248. ><RBW-IDXTERM TERM1="corporate group" TERM2="adding to System"></RBW-IDXTERM
  33249. ></RBW-PARABODY
  33250. ></P.PROCEDURE
  33251. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33252. ></RBW-AUTOGEN
  33253. ></RBW-MARKER
  33254. ><RBW-PARABODY>Open the system in which you want to use the corporate group.</RBW-PARABODY
  33255. ></LN.LIST.NUM
  33256. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33257. ></RBW-AUTOGEN
  33258. ></RBW-MARKER
  33259. ><RBW-PARABODY>Select Version | Activate.</RBW-PARABODY
  33260. ></LN.LIST.NUM
  33261. ><LR.LIST.RESULT>A dialog box appears, displaying all corporate groups.</LR.LIST.RESULT
  33262. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33263. ></RBW-AUTOGEN
  33264. ></RBW-MARKER
  33265. ><RBW-PARABODY>Select the corporate group that you want to use, and then click OK.</RBW-PARABODY
  33266. ></LN.LIST.NUM
  33267. ><LR.LIST.RESULT>ObjectTeam adds references to the files (or groups) of the selected corporate group to the system,and then updates the information area of the Browser. All the files have fixed links and a status of reused.</LR.LIST.RESULT
  33268. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33269. ></RBW-AUTOGEN
  33270. >You can also activate a corporate group by dragging and dropping it into a system.</N.NOTE
  33271. ></LABEL
  33272. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33273. >How to remove a corporate group</L.LABEL
  33274. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33275. ></RBW-AUTOGEN
  33276. ></RBW-MARKER
  33277. ><RBW-PARABODY>To remove a corporate group from a system:<RBW-IDXTERM TERM1="corporate group" TERM2="deleting"></RBW-IDXTERM
  33278. ><RBW-IDXTERM TERM1="deleting" TERM2="corporate group"></RBW-IDXTERM
  33279. ><RBW-IDXTERM TERM1="Deactivate (Version menu)" TERM2="corporate group"></RBW-IDXTERM
  33280. ><RBW-IDXTERM TERM1="corporate group" TERM2="removing from System"></RBW-IDXTERM
  33281. ><RBW-IDXTERM TERM1="removing" TERM2="corporate group from System"></RBW-IDXTERM
  33282. ></RBW-PARABODY
  33283. ></P.PROCEDURE
  33284. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33285. ></RBW-AUTOGEN
  33286. ></RBW-MARKER
  33287. ><RBW-PARABODY>Open the system.</RBW-PARABODY
  33288. ></LN.LIST.NUM
  33289. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33290. ></RBW-AUTOGEN
  33291. ></RBW-MARKER
  33292. ><RBW-PARABODY>Select Version | Deactivate.</RBW-PARABODY
  33293. ></LN.LIST.NUM
  33294. ><LR.LIST.RESULT>A dialog box appears, displaying all corporate groups in the system.</LR.LIST.RESULT
  33295. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33296. ></RBW-AUTOGEN
  33297. ></RBW-MARKER
  33298. ><RBW-PARABODY>Select the corporate group that you want to remove, and then click OK.</RBW-PARABODY
  33299. ></LN.LIST.NUM
  33300. ><LR.LIST.RESULT>ObjectTeam removes all references to the files or groups of the selected corporate group from the system,and then updates the information area of the Browser. </LR.LIST.RESULT
  33301. ><RBWAUTO-0001></RBWAUTO-0001
  33302. ><!--
  33303.  
  33304.  
  33305.  
  33306.  
  33307.  
  33308. CONVERTING SOURCE FILE ../../sources/pmg/access.fm5.mif
  33309.  
  33310.  
  33311. --><B.BODY></B.BODY
  33312. ><B.BODY></B.BODY
  33313. ><B.BODY></B.BODY
  33314. ><B.BODY></B.BODY
  33315. ><B.BODY></B.BODY
  33316. ></LABEL
  33317. ></SECTION
  33318. ></CHAPTER
  33319. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  33320. ></RBW-AUTOGEN
  33321. ><RBW-ANCHOR ID="21532"></RBW-ANCHOR
  33322. >Access Control<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  33323. ><RBW-TEXTFLD TYPE="text">Project Management Guide</RBW-TEXTFLD
  33324. ></RBW-SYSOBJ
  33325. ></C.CHAPTER.HEAD
  33326. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33327. >Purpose</L.LABEL
  33328. ><B.BODY><RBW-IDXTERM TERM1="diagram" TERM2="access control"></RBW-IDXTERM
  33329. ><RBW-IDXTERM TERM1="file" TERM2="access control"></RBW-IDXTERM
  33330. ><RBW-IDXTERM TERM1="access control" TERM2="purpose"></RBW-IDXTERM
  33331. >Because the Cayenne repository is a shared resource, access control is particularly important. Using the features described in this chapter, the corporate administrator can give project members access to appropriate areas of the repository, restricting access to other areas.</B.BODY
  33332. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33333. >Example</SL.SUBLABEL
  33334. ><B.BODY>Your organization has project leaders, analysts, designers and programmers. You use the access control features to give the project leaders read/write access to the entire project, the analysts read/write access to the analysis phase, the designers read access to the analysis phase and read/write access to the design phase, and the programmers read access to the design phase and read/write access to the implementation phase.</B.BODY
  33335. ></LABEL
  33336. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33337. >Security module required</L.LABEL
  33338. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>Security</CX5FX5FEMPHASIS
  33339. > provides the menu items and Tcl code required to use the security and access control features of ObjectTeam. Therefore, this module must be active on the Browser levels where it is going to be used.</B.BODY
  33340. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  33341. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33342. >For more information</SL.SUBLABEL
  33343. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  33344. ><CX5FX5FTITLE></CX5FX5FTITLE
  33345. > for details on how to activate a module.</B.BODY
  33346. ></LABEL
  33347. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33348. ><RBW-IDXTERM TERM1="role" TERM2="for access control"></RBW-IDXTERM
  33349. >How it works</L.LABEL
  33350. ><B.BODY>In ObjectTeam, you control access to the repository as follows:</B.BODY
  33351. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33352. ></RBW-AUTOGEN
  33353. ></RBW-MARKER
  33354. ><RBW-PARABODY>At the corporate level, you define users and roles.</RBW-PARABODY
  33355. ></LN.LIST.NUM
  33356. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33357. ></RBW-AUTOGEN
  33358. ></RBW-MARKER
  33359. ><RBW-PARABODY>At the corporate or project level, you create UserRoleLinks. A link between a user and a role indicates that the user has access to the role.</RBW-PARABODY
  33360. ></LN.LIST.NUM
  33361. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33362. ></RBW-AUTOGEN
  33363. ></RBW-MARKER
  33364. ><RBW-PARABODY>ObjectTeam defines a set of actions for each object; for example, the set of actions for the system object includes Create and Destroy. </RBW-PARABODY
  33365. ></LN.LIST.NUM
  33366. ><LT.LIST.TEXT>For every object, you define a set of access rules that specifies, for every role and every action, whether the role can perform the action.</LT.LIST.TEXT
  33367. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00293.unk" origfile="pics/userrole.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33368. ></FA.FIGURE.ANCHOR
  33369. ></LABEL
  33370. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33371. >Automating Access Control </L.LABEL
  33372. ><B.BODY>If you know who the users of a project are going to be, what roles they must be able to play, and what access each role needs to have, you can use ObjectTeam’s automatic access control mechanism. This mechanism allows you to set up access control before the users of the project populate and use objects in it.</B.BODY
  33373. ><B.BODY>You specify the Users, Roles, UserRoleLinks, and the allowed and prohibited actions on phase objects within a configuration version in two customization files. </B.BODY
  33374. ><B.BODY>These files are the input for Security | Setup Access on the configuration level. This command creates users, roles, user role links, and access rules according to the specifications in the customization files.</B.BODY
  33375. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33376. >For more information</SL.SUBLABEL
  33377. ><B.BODY>See <RBW-XREF REFID="33041" TYPE="XREF-TEXTCOPY">How to Set up Access Control Automatically</RBW-XREF
  33378. >.</B.BODY
  33379. ></LABEL
  33380. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33381. >Managing the details</L.LABEL
  33382. ><BI.BODY.INTRO>The combination of users, roles, and access rules allows you to control access to every object in the repository. ObjectTeam does not require that you specify access rules for every object in the repository. It helps you manage access rules by allowing you to use the repository’s class hierarchy to specify access rules at the level appropriate for your site. For example, you can specify a set of access rules at the project level to define access control for all objects in a project.</BI.BODY.INTRO
  33383. ></LABEL
  33384. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33385. >The access control process</L.LABEL
  33386. ><B.BODY>This illustration gives an overview of the relationships between the terms in the access control process. It does not explain the entire security process.</B.BODY
  33387. ><FAW.FIGURE.ANCHOR.WIDE><RBW-GRAPHIC filename="00294.tif" origseq="6" origtype="I" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33388. ></FAW.FIGURE.ANCHOR.WIDE
  33389. ></LABEL
  33390. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33391. >Definitions</L.LABEL
  33392. ><B.BODY>The following terms are used throughout this chapter:</B.BODY
  33393. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Term</CELLHEADING
  33394. ></ENTRY
  33395. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Definition</CELLHEADING
  33396. ></ENTRY
  33397. ></RBW-ROW
  33398. ></THEAD
  33399. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="user" TERM2="definition of"></RBW-IDXTERM
  33400. >User</CELLBODY
  33401. ></ENTRY
  33402. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Names derived from the operating system users. By registering users in the repository with the same name as in the operating system, access can be controlled per user.</CELLBODY
  33403. ></ENTRY
  33404. ></RBW-ROW
  33405. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="UserRoleLink" TERM2="definition"></RBW-IDXTERM
  33406. >UserRoleLink</CELLBODY
  33407. ></ENTRY
  33408. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A UserRoleLink between a role and a user means the user has access to the role. The status of a UserRoleLink determines whether the role is always activated, initially activated, or initially deactivated.</CELLBODY
  33409. ></ENTRY
  33410. ></RBW-ROW
  33411. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="role" TERM2="definition"></RBW-IDXTERM
  33412. >Role</CELLBODY
  33413. ></ENTRY
  33414. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>An intermediate object between users and actions on objects. Object access is defined for roles. A user can activate one or more roles.</CELLBODY
  33415. ></ENTRY
  33416. ></RBW-ROW
  33417. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access rule</CELLBODY
  33418. ></ENTRY
  33419. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A rule that defines whether a role is permitted to perform an action on an object. The collection of all access rules for an object and a role is a RoleRight. Access rules can be defined per object or per class of objects.</CELLBODY
  33420. ></ENTRY
  33421. ></RBW-ROW
  33422. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>(Controlled) Action</CELLBODY
  33423. ></ENTRY
  33424. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Everything in the repository is an object. Each object has its own set of actions. </CELLBODY
  33425. ></ENTRY
  33426. ></RBW-ROW
  33427. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Controlled list</CELLBODY
  33428. ></ENTRY
  33429. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Every parent object in the repository has a controlled list for each of its child object types. When a child object is created, ObjectTeam adds that object to the appropriate controlled list on the parent object.</CELLBODY
  33430. ></ENTRY
  33431. ></RBW-ROW
  33432. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access Right</CELLBODY
  33433. ></ENTRY
  33434. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Your effective roles and the object’s role rights determine your access rights to an object</CELLBODY
  33435. ></ENTRY
  33436. ></RBW-ROW
  33437. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>RoleRight</CELLBODY
  33438. ></ENTRY
  33439. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies for each role and action whether the role can perform the action.</CELLBODY
  33440. ></ENTRY
  33441. ></RBW-ROW
  33442. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OwnRight / Childright</CELLBODY
  33443. ></ENTRY
  33444. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> <RBW-IDXTERM TERM1="ownRight"></RBW-IDXTERM
  33445. ><RBW-IDXTERM TERM1="role right" TERM2="ownRight"></RBW-IDXTERM
  33446. >Determines who can add objects to or remove objects from the Controlled List. <RBW-IDXTERM TERM1="childRight"></RBW-IDXTERM
  33447. ><RBW-IDXTERM TERM1="role right" TERM2="childRight"></RBW-IDXTERM
  33448. >A childRight specifies the <CX5FX5FEMPHASIS>initial</CX5FX5FEMPHASIS
  33449. > role rights assigned to the objects added to the controlled list.</CELLBODY
  33450. ></ENTRY
  33451. ></RBW-ROW
  33452. ></TBODY
  33453. ></TGROUP
  33454. ></RBW-TABLE
  33455. ></LABEL
  33456. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33457. >Version and configuration management</L.LABEL
  33458. ><B.BODY>This chapter focuses on how to control access to objects using the access control mechanisms. However, it is important to note the access to object versions is also controlled through versions and configurations, as described in <RBW-XREF REFID="22309" TYPE="XREF-TEXTCOPY">Chapter 1, Version and Configuration Management</RBW-XREF
  33459. >.</B.BODY
  33460. ></LABEL
  33461. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33462. >In this chapter</L.LABEL
  33463. ><B.BODY>This chapter contains the following sections:</B.BODY
  33464. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  33465. ></ENTRY
  33466. ></RBW-ROW
  33467. ></THEAD
  33468. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12942" TYPE="XREF-TEXTCOPY">Users&rbwtab;5–6</RBW-XREF
  33469. ></SB.SECTION.BLOCK.TABLE
  33470. ></ENTRY
  33471. ></RBW-ROW
  33472. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18086" TYPE="XREF-TEXTCOPY">Roles&rbwtab;5–8</RBW-XREF
  33473. ></SB.SECTION.BLOCK.TABLE
  33474. ></ENTRY
  33475. ></RBW-ROW
  33476. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19607" TYPE="XREF-TEXTCOPY">UserRoleLinks&rbwtab;5–10</RBW-XREF
  33477. ></SB.SECTION.BLOCK.TABLE
  33478. ></ENTRY
  33479. ></RBW-ROW
  33480. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19190" TYPE="XREF-TEXTCOPY">Access Control Rules&rbwtab;5–13</RBW-XREF
  33481. ></SB.SECTION.BLOCK.TABLE
  33482. ></ENTRY
  33483. ></RBW-ROW
  33484. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20462" TYPE="XREF-TEXTCOPY">How ObjectTeam Evaluates Access Rights&rbwtab;5–31</RBW-XREF
  33485. ></SB.SECTION.BLOCK.TABLE
  33486. ></ENTRY
  33487. ></RBW-ROW
  33488. ></TBODY
  33489. ></TGROUP
  33490. ></RBW-TABLE
  33491. ></LABEL
  33492. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12942"></RBW-ANCHOR
  33493. >Users</S.SECTION.HEAD
  33494. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33495. >Introduction</L.LABEL
  33496. ><B.BODY><RBW-IDXTERM TERM1="pseudo object" TERM2=""></RBW-IDXTERM
  33497. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  33498. >Users are defined at the corporate level. They are listed in the pseudo object <users>. The following illustration shows <users> unfolded:</B.BODY
  33499. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00295.unk" origfile="pics/br_users.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33500. ></FA.FIGURE.ANCHOR
  33501. ></LABEL
  33502. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33503. >Purpose</L.LABEL
  33504. ><B.BODY>The repository should contain a user object for every person who uses ObjectTeam. During a session, the user object identifies the person using ObjectTeam.</B.BODY
  33505. ></LABEL
  33506. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33507. >ObjectTeam users must match operating system users</L.LABEL
  33508. ><B.BODY>Users do not log on to ObjectTeam, but they do log on to the operating system. When a user starts the Browser, ObjectTeam does the following:</B.BODY
  33509. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33510. ></RBW-AUTOGEN
  33511. ></RBW-MARKER
  33512. ><RBW-PARABODY>Reads the user’s log on name from the operating system.<RBW-IDXTERM TERM1="login name, as user name"></RBW-IDXTERM
  33513. ><RBW-IDXTERM TERM1="user" TERM2="login name"></RBW-IDXTERM
  33514. ></RBW-PARABODY
  33515. ></LN.LIST.NUM
  33516. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33517. ></RBW-AUTOGEN
  33518. ></RBW-MARKER
  33519. ><RBW-PARABODY>Searches the repository for a user with that name.</RBW-PARABODY
  33520. ></LN.LIST.NUM
  33521. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33522. ></RBW-AUTOGEN
  33523. ></RBW-MARKER
  33524. ><RBW-PARABODY>If the user name is in the repository, ObjectTeam uses it for the session. Otherwise, it uses the user name Guest.</RBW-PARABODY
  33525. ></LN.LIST.NUM
  33526. ></LABEL
  33527. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33528. >How to create a user</L.LABEL
  33529. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33530. ></RBW-AUTOGEN
  33531. >To create a user, you must be at the corporate level and have the SuperUser role activated.</N.NOTE
  33532. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33533. ></RBW-AUTOGEN
  33534. ></RBW-MARKER
  33535. ><RBW-PARABODY>To create a user:<RBW-IDXTERM TERM1="user" TERM2="creating"></RBW-IDXTERM
  33536. ><RBW-IDXTERM TERM1="creating" TERM2="users"></RBW-IDXTERM
  33537. ></RBW-PARABODY
  33538. ></P.PROCEDURE
  33539. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33540. ></RBW-AUTOGEN
  33541. ></RBW-MARKER
  33542. ><RBW-PARABODY>On Corporate level, open the pseudo object <users>. </RBW-PARABODY
  33543. ></LN.LIST.NUM
  33544. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33545. ></RBW-AUTOGEN
  33546. ></RBW-MARKER
  33547. ><RBW-PARABODY>Select File | New | User.</RBW-PARABODY
  33548. ></LN.LIST.NUM
  33549. ><LR.LIST.RESULT>The New User dialog box appears.</LR.LIST.RESULT
  33550. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00296.unk" origfile="pics/newuser.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33551. ></FA2.FIGURE.ANCHOR.2
  33552. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33553. ></RBW-AUTOGEN
  33554. ></RBW-MARKER
  33555. ><RBW-PARABODY>Enter the name of the new user, and then click OK.</RBW-PARABODY
  33556. ></LN.LIST.NUM
  33557. ><LR.LIST.RESULT>ObjectTeam creates the user. It also creates a role with the same name as the user and makes it the user’s default role.</LR.LIST.RESULT
  33558. ></LABEL
  33559. ></SECTION
  33560. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18086"></RBW-ANCHOR
  33561. >Roles</S.SECTION.HEAD
  33562. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33563. >Introduction</L.LABEL
  33564. ><B.BODY><RBW-IDXTERM TERM1="pseudo object" TERM2=""></RBW-IDXTERM
  33565. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  33566. >Roles are defined at the corporate level. They are listed in the pseudo object <roles>. </B.BODY
  33567. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33568. ></RBW-AUTOGEN
  33569. >The roles described in this chapter have no relation to the roles used to specify associations in Class Diagrams (CDs).</N.NOTE
  33570. ></LABEL
  33571. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33572. >Purpose</L.LABEL
  33573. ><B.BODY>Access to objects is based on roles. A user can activate one or more roles. Generally, if a certain role has access to an object and a user has that role active, the user has access to the object.</B.BODY
  33574. ></LABEL
  33575. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33576. >Roles that ObjectTeam defines</L.LABEL
  33577. ><B.BODY>ObjectTeam creates the following special roles:</B.BODY
  33578. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  33579. ></RBW-AUTOGEN
  33580. ></RBW-MARKER
  33581. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="SuperUser role"></RBW-IDXTERM
  33582. ><RBW-IDXTERM TERM1="role" TERM2="SuperUser"></RBW-IDXTERM
  33583. >SuperUser.</CX5FX5FBULLET.EMPHASIS
  33584. > When a user creates a repository, ObjectTeam creates a SuperUser role and a corporate&truehy;level UserRoleLink between the role and the user; the status of the UserRoleLink is defaultOn. The SuperUser role at corporate level has unrestricted access to all objects in the repository, can create users and roles, and can create UserRoleLinks at the corporate or project level.</RBW-PARABODY
  33585. ></LB.LIST.BULLET
  33586. ><LT.LIST.TEXT>When a user creates a project, ObjectTeam creates a SuperUser role and a project&truehy;level UserRoleLink between the role and the user. The status for the UserRoleLink is defaultOff; the user activates the role when necessary. The SuperUser role at the project level has unrestricted access to all objects in the project and can create UserRoleLinks at the project level.</LT.LIST.TEXT
  33587. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  33588. ></RBW-AUTOGEN
  33589. ></RBW-MARKER
  33590. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Default role"></RBW-IDXTERM
  33591. ><RBW-IDXTERM TERM1="role" TERM2="Default"></RBW-IDXTERM
  33592. >Default roles.</CX5FX5FBULLET.EMPHASIS
  33593. > When you create a new user, ObjectTeam creates a role with the same name and creates a corporate&truehy;level UserRoleLink between the role and the user. To ensure that the user’s default role is always activated, the status for the UserRoleLink is alwaysOn.</RBW-PARABODY
  33594. ></LB.LIST.BULLET
  33595. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  33596. ></RBW-AUTOGEN
  33597. ></RBW-MARKER
  33598. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="role" TERM2="Guest"></RBW-IDXTERM
  33599. ><RBW-IDXTERM TERM1="Guest role"></RBW-IDXTERM
  33600. >Guest.</CX5FX5FBULLET.EMPHASIS
  33601. > Every repository contains a guest user, a guest role, and a corporate&truehy;level UserRoleLink between them. To ensure that the Guest role is always activated for a Guest user, the status for the UserRoleLink is alwaysOn. If an unknown user starts the Browser, ObjectTeam uses the Guest user and role for the session. </RBW-PARABODY
  33602. ></LB.LIST.BULLET
  33603. ></LABEL
  33604. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33605. >Roles that you define</L.LABEL
  33606. ><B.BODY>You can define additional roles. Typically, the roles that you define are based on the job functions required for a project; for example, you can create the roles Analyst and Programmer.</B.BODY
  33607. ></LABEL
  33608. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33609. ><RBW-IDXTERM TERM1="role" TERM2="creating"></RBW-IDXTERM
  33610. ><RBW-IDXTERM TERM1="creating" TERM2="roles"></RBW-IDXTERM
  33611. >How to create a new role</L.LABEL
  33612. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33613. ></RBW-AUTOGEN
  33614. >To create a role, you must be at the corporate level and have the SuperUser role activated.</N.NOTE
  33615. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33616. ></RBW-AUTOGEN
  33617. ></RBW-MARKER
  33618. ><RBW-PARABODY>To create a new role:</RBW-PARABODY
  33619. ></P.PROCEDURE
  33620. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33621. ></RBW-AUTOGEN
  33622. ></RBW-MARKER
  33623. ><RBW-PARABODY>On the corporate level, open the pseudo object <roles>. </RBW-PARABODY
  33624. ></LN.LIST.NUM
  33625. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33626. ></RBW-AUTOGEN
  33627. ></RBW-MARKER
  33628. ><RBW-PARABODY>Select File | New | Role.</RBW-PARABODY
  33629. ></LN.LIST.NUM
  33630. ><LR.LIST.RESULT>The New Role dialog box appears.</LR.LIST.RESULT
  33631. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00297.unk" origfile="pics/newrole.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33632. ></FA2.FIGURE.ANCHOR.2
  33633. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33634. ></RBW-AUTOGEN
  33635. ></RBW-MARKER
  33636. ><RBW-PARABODY>Enter the name of the new role, and then click OK. </RBW-PARABODY
  33637. ></LN.LIST.NUM
  33638. ><LR.LIST.RESULT>ObjectTeam creates the role. To give a user access to this role, create a UserRoleLink between the user and the role, as described in <RBW-XREF REFID="19607" TYPE="XREF-TEXTCOPY">UserRoleLinks</RBW-XREF
  33639. >.</LR.LIST.RESULT
  33640. ></LABEL
  33641. ></SECTION
  33642. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="19607"></RBW-ANCHOR
  33643. >UserRoleLinks<RBW-IDXTERM TERM1="role" TERM2="and UserRoleLinks"></RBW-IDXTERM
  33644. ></S.SECTION.HEAD
  33645. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33646. >Introduction</L.LABEL
  33647. ><B.BODY>UserRoleLinks can be defined at the corporate or project level. UserRoleLinks defined at the project level supplement those defined at the corporate level.</B.BODY
  33648. ></LABEL
  33649. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33650. >Purpose</L.LABEL
  33651. ><B.BODY>UserRoleLinks define a link between a user and role. If such a link exists, the user has access to the role.</B.BODY
  33652. ><B.BODY>The UserRoleLinks provide a many&truehy;to&truehy;many relationship between users and roles. That is, each user can have access to one or more roles, and each role can be accessed by one or more users.</B.BODY
  33653. ></LABEL
  33654. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33655. >Status of UserRoleLinks</L.LABEL
  33656. ><B.BODY><RBW-IDXTERM TERM1="UserRoleLink" TERM2="status of"></RBW-IDXTERM
  33657. ><RBW-IDXTERM TERM1="defaultOff, UserRoleLink status"></RBW-IDXTERM
  33658. ><RBW-IDXTERM TERM1="defaultOn, UserRoleLink status"></RBW-IDXTERM
  33659. ><RBW-IDXTERM TERM1="alwaysOn, UserRoleLink status"></RBW-IDXTERM
  33660. >The status of a UserRoleLink determines the degree of control that the user has in activating and deactivating the role.</B.BODY
  33661. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="81p"><COLSPEC COLNAME="2" COLWIDTH="369p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Status</CELLHEADING
  33662. ></ENTRY
  33663. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  33664. ></ENTRY
  33665. ></RBW-ROW
  33666. ></THEAD
  33667. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>defaultOff</CELLBODY
  33668. ></ENTRY
  33669. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Initially, the role is deactivated; the user can activate the role.</CELLBODY
  33670. ></ENTRY
  33671. ></RBW-ROW
  33672. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>defaultOn</CELLBODY
  33673. ></ENTRY
  33674. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Initially, the role is activated; the user can deactivate the role.</CELLBODY
  33675. ></ENTRY
  33676. ></RBW-ROW
  33677. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>always On</CELLBODY
  33678. ></ENTRY
  33679. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Initially, the role is activated; the user cannot deactivate the role.</CELLBODY
  33680. ></ENTRY
  33681. ></RBW-ROW
  33682. ></TBODY
  33683. ></TGROUP
  33684. ></RBW-TABLE
  33685. ></LABEL
  33686. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33687. >How to examine UserRoleLinks</L.LABEL
  33688. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33689. ></RBW-AUTOGEN
  33690. ></RBW-MARKER
  33691. ><RBW-PARABODY>To examine the UserRoleLinks for a particular role:<RBW-IDXTERM TERM1="user" TERM2="and UserRoleLinks"></RBW-IDXTERM
  33692. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  33693. ><RBW-IDXTERM TERM1="role" TERM2="and UserRoleLinks"></RBW-IDXTERM
  33694. ><RBW-IDXTERM TERM1="displaying" TERM2="UserRoleLinks"></RBW-IDXTERM
  33695. ></RBW-PARABODY
  33696. ></P.PROCEDURE
  33697. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33698. ></RBW-AUTOGEN
  33699. ></RBW-MARKER
  33700. ><RBW-PARABODY>To examine corporate&truehy;level UserRoleLinks, move to the corporate level. To examine project&truehy;level UserRoleLinks, move to the project level.</RBW-PARABODY
  33701. ></LN.LIST.NUM
  33702. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33703. ></RBW-AUTOGEN
  33704. ></RBW-MARKER
  33705. ><RBW-PARABODY>Open the <roles> object.</RBW-PARABODY
  33706. ></LN.LIST.NUM
  33707. ><LR.LIST.RESULT>The information area lists all roles defined in the repository.</LR.LIST.RESULT
  33708. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33709. ></RBW-AUTOGEN
  33710. ></RBW-MARKER
  33711. ><RBW-PARABODY>Open the role that you are interested in.</RBW-PARABODY
  33712. ></LN.LIST.NUM
  33713. ><LR.LIST.RESULT>The information area lists all users linked to this role; that is, it displays all the UserRoleLinks for this role.</LR.LIST.RESULT
  33714. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33715. ></RBW-AUTOGEN
  33716. >At the corporate level, you can examine the UserRoleLinks for a particular user. Open the <users> object, and then open the user that you are interested in. The information area lists all roles linked to this user; that is, it displays all UserRoleLinks for this user.</N.NOTE
  33717. ></LABEL
  33718. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33719. >How to create a UserRoleLink<RBW-IDXTERM TERM1="creating" TERM2="UserRoleLinks"></RBW-IDXTERM
  33720. ><RBW-IDXTERM TERM1="UserRoleLink" TERM2="creating"></RBW-IDXTERM
  33721. ></L.LABEL
  33722. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33723. ></RBW-AUTOGEN
  33724. ></RBW-MARKER
  33725. ><RBW-PARABODY>To create a UserRoleLink:</RBW-PARABODY
  33726. ></P.PROCEDURE
  33727. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33728. ></RBW-AUTOGEN
  33729. ></RBW-MARKER
  33730. ><RBW-PARABODY>Activate the SuperUser role.</RBW-PARABODY
  33731. ></LN.LIST.NUM
  33732. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33733. ></RBW-AUTOGEN
  33734. ></RBW-MARKER
  33735. ><RBW-PARABODY>To create a corporate&truehy;level UserRoleLink, move to the corporate level. To create a project&truehy;level UserRoleLink, move to the project level.</RBW-PARABODY
  33736. ></LN.LIST.NUM
  33737. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33738. ></RBW-AUTOGEN
  33739. ></RBW-MARKER
  33740. ><RBW-PARABODY>Open the <roles> object. </RBW-PARABODY
  33741. ></LN.LIST.NUM
  33742. ><LR.LIST.RESULT>The information area lists all roles defined in the repository.</LR.LIST.RESULT
  33743. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  33744. ></RBW-AUTOGEN
  33745. ></RBW-MARKER
  33746. ><RBW-PARABODY>Open the role that you are interested in.</RBW-PARABODY
  33747. ></LN.LIST.NUM
  33748. ><LR.LIST.RESULT>The information area lists all users linked to this role.</LR.LIST.RESULT
  33749. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  33750. ></RBW-AUTOGEN
  33751. ></RBW-MARKER
  33752. ><RBW-PARABODY>Select File | New | UserRoleLink(s). </RBW-PARABODY
  33753. ></LN.LIST.NUM
  33754. ><LR.LIST.RESULT>A dialog box appears with a list of all users not already linked to this role. If all users are already linked to this role, File | New | UserRoleLink is unavailable.</LR.LIST.RESULT
  33755. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00298.unk" origfile="pics/nwusrlnk.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33756. ></FA2.FIGURE.ANCHOR.2
  33757. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  33758. ></RBW-AUTOGEN
  33759. ></RBW-MARKER
  33760. ><RBW-PARABODY>Select one or more users. Then click OK.</RBW-PARABODY
  33761. ></LN.LIST.NUM
  33762. ><LR.LIST.RESULT>ObjectTeam creates a link between the role and the user, and updates the Information area.</LR.LIST.RESULT
  33763. ></LABEL
  33764. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33765. >How to change the status of a UserRoleLink</L.LABEL
  33766. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  33767. ></RBW-AUTOGEN
  33768. >You can change the status of your own UserRoleLinks, unless the status is alwaysOn. To change a status of alwaysOn or to change the status of another user’s UserRoleLink, you must have the SuperUser role activated.</N.NOTE
  33769. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33770. ></RBW-AUTOGEN
  33771. ></RBW-MARKER
  33772. ><RBW-PARABODY>To change the status of a UserRoleLink:<RBW-IDXTERM TERM1="changing" TERM2="UserRoleLink status"></RBW-IDXTERM
  33773. ></RBW-PARABODY
  33774. ></P.PROCEDURE
  33775. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33776. ></RBW-AUTOGEN
  33777. ></RBW-MARKER
  33778. ><RBW-PARABODY>To change the status of a corporate&truehy;level UserRoleLink, move to the corporate level. To change the status of a project&truehy;level UserRoleLink, move to the project level.</RBW-PARABODY
  33779. ></LN.LIST.NUM
  33780. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33781. ></RBW-AUTOGEN
  33782. ></RBW-MARKER
  33783. ><RBW-PARABODY>Open the <roles> object.</RBW-PARABODY
  33784. ></LN.LIST.NUM
  33785. ><LR.LIST.RESULT>The information area lists all roles defined in the repository.</LR.LIST.RESULT
  33786. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33787. ></RBW-AUTOGEN
  33788. ></RBW-MARKER
  33789. ><RBW-PARABODY>Open the role that you are interested in.</RBW-PARABODY
  33790. ></LN.LIST.NUM
  33791. ><LR.LIST.RESULT>The information area lists all users linked to this role; that is, it displays all UserRoleLinks for this role.</LR.LIST.RESULT
  33792. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  33793. ></RBW-AUTOGEN
  33794. ></RBW-MARKER
  33795. ><RBW-PARABODY>Select the UserRoleLink whose link status you want to change.</RBW-PARABODY
  33796. ></LN.LIST.NUM
  33797. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  33798. ></RBW-AUTOGEN
  33799. ></RBW-MARKER
  33800. ><RBW-PARABODY>Select File | Change | Link Status.</RBW-PARABODY
  33801. ></LN.LIST.NUM
  33802. ><LR.LIST.RESULT>The Change Link Status dialog box appears.</LR.LIST.RESULT
  33803. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00299.unk" origfile="pics/linkstat.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33804. ></FA2.FIGURE.ANCHOR.2
  33805. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  33806. ></RBW-AUTOGEN
  33807. ></RBW-MARKER
  33808. ><RBW-PARABODY>Select the new link status. Then click OK.</RBW-PARABODY
  33809. ></LN.LIST.NUM
  33810. ></LABEL
  33811. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33812. >How to activate a role</L.LABEL
  33813. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33814. ></RBW-AUTOGEN
  33815. ></RBW-MARKER
  33816. ><RBW-PARABODY>To activate a role:<RBW-IDXTERM TERM1="role" TERM2="activating"></RBW-IDXTERM
  33817. ><RBW-IDXTERM TERM1="activating" TERM2="roles"></RBW-IDXTERM
  33818. ><RBW-IDXTERM TERM1="Activate Role (Security menu)"></RBW-IDXTERM
  33819. ></RBW-PARABODY
  33820. ></P.PROCEDURE
  33821. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33822. ></RBW-AUTOGEN
  33823. ></RBW-MARKER
  33824. ><RBW-PARABODY>Move to level at which you want to activate the role, either corporate or project.</RBW-PARABODY
  33825. ></LN.LIST.NUM
  33826. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33827. ></RBW-AUTOGEN
  33828. ></RBW-MARKER
  33829. ><RBW-PARABODY>Select Security | Activate Role.</RBW-PARABODY
  33830. ></LN.LIST.NUM
  33831. ><LR.LIST.RESULT>The Activate Role dialog box appears.</LR.LIST.RESULT
  33832. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00300.unk" origfile="pics/activrol.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33833. ></FA2.FIGURE.ANCHOR.2
  33834. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33835. ></RBW-AUTOGEN
  33836. ></RBW-MARKER
  33837. ><RBW-PARABODY>Select the role that you want to activate. Then select OK.</RBW-PARABODY
  33838. ></LN.LIST.NUM
  33839. ></LABEL
  33840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33841. >How to examine which roles are activated</L.LABEL
  33842. ><B.BODY><RBW-IDXTERM TERM1="Effective Context (File menu)"></RBW-IDXTERM
  33843. ><RBW-IDXTERM TERM1="role" TERM2="and effective context"></RBW-IDXTERM
  33844. ><RBW-IDXTERM TERM1="user" TERM2="and effective context"></RBW-IDXTERM
  33845. >The roles you have activated define your effective context, which determines your access to repository objects. If you have activated project&truehy;level roles, these roles are in your effective context only if you are at or below project level.</B.BODY
  33846. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33847. ></RBW-AUTOGEN
  33848. ></RBW-MARKER
  33849. ><RBW-PARABODY>To examine your effective context, select Security | Show Effective Roles.<RBW-IDXTERM TERM1="displaying" TERM2="effective context"></RBW-IDXTERM
  33850. ></RBW-PARABODY
  33851. ></P.PROCEDURE
  33852. ><LRS.LIST.RESULT.SINGLE>The Effective Context dialog box appears, displaying your currently active roles.</LRS.LIST.RESULT.SINGLE
  33853. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00301.unk" origfile="pics/effcntxt.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33854. ></FA.FIGURE.ANCHOR
  33855. ></LABEL
  33856. ></SECTION
  33857. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="19190"></RBW-ANCHOR
  33858. >Access Control Rules</S.SECTION.HEAD
  33859. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33860. >Introduction</L.LABEL
  33861. ><B.BODY>Once you have specified roles, you can define role rights for each object. </B.BODY
  33862. ></LABEL
  33863. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33864. >Role rights</L.LABEL
  33865. ><B.BODY>ObjectTeam defines a set of actions for each object. To specify the role rights for an object, you specify, for each role and each action, whether the role can perform the action. </B.BODY
  33866. ><B.BODY>The following illustration shows the dialog box that you use to specify the role rights for an object:</B.BODY
  33867. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00302.unk" origfile="pics/rolerits.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33868. ></FA.FIGURE.ANCHOR
  33869. ></LABEL
  33870. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33871. >Controlled actions</L.LABEL
  33872. ><B.BODY>ObjectTeam defines a set of valid actions for each type of object in the repository. Because you can control acess to each action, the actions are called controlled actions.</B.BODY
  33873. ></LABEL
  33874. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33875. >Controlled objects</L.LABEL
  33876. ><B.BODY>You can specify role rights for every object in the repository. Any object for which role rights can be defined is called a controlled object.</B.BODY
  33877. ></LABEL
  33878. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33879. >Controlled classes and controlled lists</L.LABEL
  33880. ><BI.BODY.INTRO>Specifying the role rights for every object in the repository would be a time&truehy;consuming and error&truehy;prone task. ObjectTeam provides two mechanisms that allow you to define role rights that controlled objects can inherit:</BI.BODY.INTRO
  33881. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  33882. ></RBW-AUTOGEN
  33883. ></RBW-MARKER
  33884. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Controlled classes</CX5FX5FBULLET.EMPHASIS
  33885. > allow you to define role rights for a class of objects. You can define role rights for controlled classes at the corporate or project level.</RBW-PARABODY
  33886. ></LB.LIST.BULLET
  33887. ><LT.LIST.TEXT>For example, if you set the role rights for the controlled class, ConfigVersion, at the project level, every configuration version that you create in that project inherits those role rights.</LT.LIST.TEXT
  33888. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  33889. ></RBW-AUTOGEN
  33890. ></RBW-MARKER
  33891. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Controlled lists</CX5FX5FBULLET.EMPHASIS
  33892. > allow you to define role rights for an object’s child objects. Controlled lists are available only for objects that have child objects, this includes all objects that are under version control because each version is considered a child object.</RBW-PARABODY
  33893. ></LB.LIST.BULLET
  33894. ><LT.LIST.TEXT>See <RBW-XREF REFID="38414" TYPE="XREF-TEXTCOPY">Controlled Lists</RBW-XREF
  33895. > for examples of role rights on controlled lists.</LT.LIST.TEXT
  33896. ></LABEL
  33897. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33898. >Specifying role rights</L.LABEL
  33899. ><B.BODY>Typically, the corporate administrator defines role rights on controlled classes and controlled lists at the corporate level. A project leader might modify the role rights on the controlled classes and controlled lists at the project level. Occassionally, a project leader or team member might modify the role rights for a controlled object to control access to that particular object.</B.BODY
  33900. ></LABEL
  33901. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33902. >In this section</L.LABEL
  33903. ><B.BODY>This section contains the following topics:</B.BODY
  33904. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  33905. ></ENTRY
  33906. ></RBW-ROW
  33907. ></THEAD
  33908. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19555" TYPE="XREF-TEXTCOPY">Role Rights, Access Rules, and Access Rights&rbwtab;5–15</RBW-XREF
  33909. ></SB.SECTION.BLOCK.TABLE
  33910. ></ENTRY
  33911. ></RBW-ROW
  33912. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14288" TYPE="XREF-TEXTCOPY">Controlled Actions&rbwtab;5–18</RBW-XREF
  33913. ></SB.SECTION.BLOCK.TABLE
  33914. ></ENTRY
  33915. ></RBW-ROW
  33916. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42002" TYPE="XREF-TEXTCOPY">Controlled Classes&rbwtab;5–20</RBW-XREF
  33917. ></SB.SECTION.BLOCK.TABLE
  33918. ></ENTRY
  33919. ></RBW-ROW
  33920. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42612" TYPE="XREF-TEXTCOPY">Controlled Objects&rbwtab;5–23</RBW-XREF
  33921. ></SB.SECTION.BLOCK.TABLE
  33922. ></ENTRY
  33923. ></RBW-ROW
  33924. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38414" TYPE="XREF-TEXTCOPY">Controlled Lists&rbwtab;5–25</RBW-XREF
  33925. ></SB.SECTION.BLOCK.TABLE
  33926. ></ENTRY
  33927. ></RBW-ROW
  33928. ></TBODY
  33929. ></TGROUP
  33930. ></RBW-TABLE
  33931. ></LABEL
  33932. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19555"></RBW-ANCHOR
  33933. >Role Rights, Access Rules, and Access Rights</SS.SUBSEC.HEAD
  33934. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33935. >Introduction</L.LABEL
  33936. ><B.BODY>This section provides the basic procedures you use to specify and examine access control rules.</B.BODY
  33937. ></LABEL
  33938. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33939. >Definitions</L.LABEL
  33940. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33941. ><RBW-IDXTERM TERM1="access rule" TERM2="definition"></RBW-IDXTERM
  33942. >Access rules</SL.SUBLABEL
  33943. ><B.BODY>On an object, each combination of role and action define an access rule. The set of access rules for an object are the object’s role rights.</B.BODY
  33944. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33945. >Role rights</SL.SUBLABEL
  33946. ><B.BODY>You specify role rights for each object. For each role and each action, the role rights specify whether the role can perform the action.</B.BODY
  33947. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33948. ><RBW-IDXTERM TERM1="access right" TERM2="definition"></RBW-IDXTERM
  33949. >Access rights</SL.SUBLABEL
  33950. ><B.BODY>You view the access rights for each object. ObjectTeam uses your effective context and the object’s role rights to determine your access rights to the object.</B.BODY
  33951. ></LABEL
  33952. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  33953. >How to specify role rights</L.LABEL
  33954. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  33955. ></RBW-AUTOGEN
  33956. ></RBW-MARKER
  33957. ><RBW-PARABODY>To specify the role rights (and access rules) for an object:<RBW-IDXTERM TERM1="role right" TERM2="specifying"></RBW-IDXTERM
  33958. ><RBW-IDXTERM TERM1="Role Rights (Security menu)" TERM2="Edit"></RBW-IDXTERM
  33959. ></RBW-PARABODY
  33960. ></P.PROCEDURE
  33961. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  33962. ></RBW-AUTOGEN
  33963. ></RBW-MARKER
  33964. ><RBW-PARABODY>Select the object.</RBW-PARABODY
  33965. ></LN.LIST.NUM
  33966. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  33967. ></RBW-AUTOGEN
  33968. ></RBW-MARKER
  33969. ><RBW-PARABODY>Select Security | Role Rights | Edit.</RBW-PARABODY
  33970. ></LN.LIST.NUM
  33971. ><LR.LIST.RESULT>The Edit Role Rights dialog box appears.</LR.LIST.RESULT
  33972. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00303.unk" origfile="pics/rolerits.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  33973. ></FA2.FIGURE.ANCHOR.2
  33974. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  33975. ></RBW-AUTOGEN
  33976. ></RBW-MARKER
  33977. ><RBW-PARABODY>In the Objects list, if necessary, select the object whose role rights you want to edit. </RBW-PARABODY
  33978. ></LN.LIST.NUM
  33979. ><LT.LIST.TEXT>You can specify role rights for controlled objects, controlled classes, and controlled lists. (See <RBW-XREF REFID="42612" TYPE="XREF-TEXTCOPY">Controlled Objects</RBW-XREF
  33980. >, <RBW-XREF REFID="42002" TYPE="XREF-TEXTCOPY">Controlled Classes</RBW-XREF
  33981. >, and <RBW-XREF REFID="38414" TYPE="XREF-TEXTCOPY">Controlled Lists</RBW-XREF
  33982. > for more information.)</LT.LIST.TEXT
  33983. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  33984. ></RBW-AUTOGEN
  33985. ></RBW-MARKER
  33986. ><RBW-PARABODY>In the Roles list, select the role whose rights you want to edit. (See <RBW-XREF REFID="18086" TYPE="XREF-TEXTCOPY">Roles</RBW-XREF
  33987. > for more information.)</RBW-PARABODY
  33988. ></LN.LIST.NUM
  33989. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  33990. ></RBW-AUTOGEN
  33991. ></RBW-MARKER
  33992. ><RBW-PARABODY>In the Actions list, specify one of the following permissions for each action:<RBW-IDXTERM TERM1="access rule" TERM2="permissions"></RBW-IDXTERM
  33993. ><RBW-IDXTERM TERM1="permission" TERM2="definition"></RBW-IDXTERM
  33994. ></RBW-PARABODY
  33995. ></LN.LIST.NUM
  33996. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Permission</CELLHEADING
  33997. ></ENTRY
  33998. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Meaning</CELLHEADING
  33999. ></ENTRY
  34000. ></RBW-ROW
  34001. ></THEAD
  34002. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="allowed (access permission)"></RBW-IDXTERM
  34003. >Allowed</CELLBODY
  34004. ></ENTRY
  34005. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The action is permitted for the selected role.</CELLBODY
  34006. ></ENTRY
  34007. ></RBW-ROW
  34008. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="prohibited (access permission)"></RBW-IDXTERM
  34009. >Prohibited</CELLBODY
  34010. ></ENTRY
  34011. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The action is denied for the selected role.</CELLBODY
  34012. ></ENTRY
  34013. ></RBW-ROW
  34014. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="undefined (access permission)"></RBW-IDXTERM
  34015. >Undefined</CELLBODY
  34016. ></ENTRY
  34017. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>There is no setting for this action for the selected role.</CELLBODY
  34018. ></ENTRY
  34019. ></RBW-ROW
  34020. ></TBODY
  34021. ></TGROUP
  34022. ></RBW-TABLE
  34023. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  34024. ></RBW-AUTOGEN
  34025. ></RBW-MARKER
  34026. ><RBW-PARABODY>Click OK or Apply.</RBW-PARABODY
  34027. ></LN.LIST.NUM
  34028. ><LR.LIST.RESULT>ObjectTeam updates the object’s role rights. (See <RBW-XREF REFID="20462" TYPE="XREF-TEXTCOPY">How ObjectTeam Evaluates Access Rights</RBW-XREF
  34029. > for an explanation of how ObjectTeam uses the role rights to determine whether a user has access to an object.)</LR.LIST.RESULT
  34030. ></LABEL
  34031. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34032. >How to view role rights for an object</L.LABEL
  34033. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34034. ></RBW-AUTOGEN
  34035. ></RBW-MARKER
  34036. ><RBW-PARABODY>To view the role rights for an object:<RBW-IDXTERM TERM1="role right" TERM2="displaying"></RBW-IDXTERM
  34037. ><RBW-IDXTERM TERM1="displaying" TERM2="role rights"></RBW-IDXTERM
  34038. ><RBW-IDXTERM TERM1="Role Rights (Security menu)" TERM2="Show"></RBW-IDXTERM
  34039. ></RBW-PARABODY
  34040. ></P.PROCEDURE
  34041. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34042. ></RBW-AUTOGEN
  34043. ></RBW-MARKER
  34044. ><RBW-PARABODY>Select the object.</RBW-PARABODY
  34045. ></LN.LIST.NUM
  34046. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34047. ></RBW-AUTOGEN
  34048. ></RBW-MARKER
  34049. ><RBW-PARABODY>Select Security | Role Rights | Show.</RBW-PARABODY
  34050. ></LN.LIST.NUM
  34051. ><LR.LIST.RESULT>The Show Role Rights dialog box appears. This dialog box is similar to the Edit Role Rights dialog box shown in the previous section.</LR.LIST.RESULT
  34052. ></LABEL
  34053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34054. >How to view access rules for an object</L.LABEL
  34055. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34056. ></RBW-AUTOGEN
  34057. ></RBW-MARKER
  34058. ><RBW-PARABODY>To view the access rules for an object:<RBWAUTO-0010><RBW-IDXTERM TERM1="access rule" TERM2="displaying"></RBW-IDXTERM
  34059. ><RBW-IDXTERM TERM1="displaying" TERM2="access rules"></RBW-IDXTERM
  34060. ><RBW-IDXTERM TERM1="pseudo object" TERM2=""></RBW-IDXTERM
  34061. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  34062. ></RBWAUTO-0010
  34063. ></RBW-PARABODY
  34064. ></P.PROCEDURE
  34065. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34066. ></RBW-AUTOGEN
  34067. ></RBW-MARKER
  34068. ><RBW-PARABODY>In the information area of the Browser, select the object.</RBW-PARABODY
  34069. ></LN.LIST.NUM
  34070. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34071. ></RBW-AUTOGEN
  34072. ></RBW-MARKER
  34073. ><RBW-PARABODY>Select Security | Show Access Rights</RBW-PARABODY
  34074. ></LN.LIST.NUM
  34075. ><LR.LIST.RESULT>The object’s access rules appear in the Show Access Rights dialog box.</LR.LIST.RESULT
  34076. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34077. >Not all access rules are stored in the repository</SL.SUBLABEL
  34078. ><B.BODY>ObjectTeam stores all access rules that allow or prohibit an action. If one or more actions are allowed or prohibited for a role, ObjectTeam stores all the access rules for that role. If all actions for a role are undefined, ObjectTeam does not store access rules for that role.</B.BODY
  34079. ><B.BODY>For example, in the Edit Role Rights dialog box shown earlier in this section, no action is allowed or prohibited for the docu role. If, for example, the destroyAction were prohibited for the docu role, eight access rules for the docu role would be stored , one for each valid action.</B.BODY
  34080. ></LABEL
  34081. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34082. >How to view access rights</L.LABEL
  34083. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34084. ></RBW-AUTOGEN
  34085. ></RBW-MARKER
  34086. ><RBW-PARABODY>To view your access rights for an object:<RBW-IDXTERM TERM1="access right" TERM2="displaying"></RBW-IDXTERM
  34087. ><RBW-IDXTERM TERM1="displaying" TERM2="access rights"></RBW-IDXTERM
  34088. ></RBW-PARABODY
  34089. ></P.PROCEDURE
  34090. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34091. ></RBW-AUTOGEN
  34092. ></RBW-MARKER
  34093. ><RBW-PARABODY>Select the object.</RBW-PARABODY
  34094. ></LN.LIST.NUM
  34095. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34096. ></RBW-AUTOGEN
  34097. ></RBW-MARKER
  34098. ><RBW-PARABODY>Select Security | Show Access Rights.<RBW-IDXTERM TERM1="Show Access Rights (Security menu)"></RBW-IDXTERM
  34099. ></RBW-PARABODY
  34100. ></LN.LIST.NUM
  34101. ><LR.LIST.RESULT>The Show Access Rights dialog appears, displaying your access rights to the object based on your effective context.</LR.LIST.RESULT
  34102. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00304.unk" origfile="pics/showrits.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  34103. ></FA2.FIGURE.ANCHOR.2
  34104. ></LABEL
  34105. ></SUBSECTION
  34106. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="access control" TERM2="controlled actions"></RBW-IDXTERM
  34107. ><RBW-IDXTERM TERM1="controlled action"></RBW-IDXTERM
  34108. ><RBW-ANCHOR ID="14288"></RBW-ANCHOR
  34109. >Controlled Actions</SS.SUBSEC.HEAD
  34110. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34111. >Introduction</L.LABEL
  34112. ><B.BODY>For each object type, ObjectTeam defines a set of actions; for example, actions for the Project object include create and destroy. These actions are called controlled actions because you can specify access control rules for them.</B.BODY
  34113. ><B.BODY>The controlled actions for an object type are defined by ObjectTeam and cannot be changed.</B.BODY
  34114. ></LABEL
  34115. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34116. >How to view an object’s controlled actions</L.LABEL
  34117. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34118. ></RBW-AUTOGEN
  34119. ></RBW-MARKER
  34120. ><RBW-PARABODY>To view an object’s controlled actions:<RBW-IDXTERM TERM1="displaying" TERM2="controlled action"></RBW-IDXTERM
  34121. ></RBW-PARABODY
  34122. ></P.PROCEDURE
  34123. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34124. ></RBW-AUTOGEN
  34125. ></RBW-MARKER
  34126. ><RBW-PARABODY>In the navigation or information area of the Browser, highlight the object.</RBW-PARABODY
  34127. ></LN.LIST.NUM
  34128. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34129. ></RBW-AUTOGEN
  34130. ></RBW-MARKER
  34131. ><RBW-PARABODY>Select File | Info.</RBW-PARABODY
  34132. ></LN.LIST.NUM
  34133. ><LR.LIST.RESULT>The Info dialog box appears, listing the object’s controlled actions.</LR.LIST.RESULT
  34134. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00305.unk" origfile="pics/accinfo.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  34135. ></FA2.FIGURE.ANCHOR.2
  34136. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34137. >Alternative</SL.SUBLABEL
  34138. ><B.BODY>The Edit Role Rights, Show Role Rights, and Show Access Rights dialog boxes, as described in <RBW-XREF REFID="19555" TYPE="XREF-TEXTCOPY">Role Rights, Access Rules, and Access Rights</RBW-XREF
  34139. >, also include this information. They list all controlled actions; the actions that do not apply to the selected object appear dimmed.</B.BODY
  34140. ></LABEL
  34141. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34142. >List of controlled actions</L.LABEL
  34143. ><B.BODY><RBW-IDXTERM TERM1="controlAction"></RBW-IDXTERM
  34144. ><RBW-IDXTERM TERM1="createAction"></RBW-IDXTERM
  34145. ><RBW-IDXTERM TERM1="destroyAction"></RBW-IDXTERM
  34146. ><RBW-IDXTERM TERM1="readAction"></RBW-IDXTERM
  34147. ><RBW-IDXTERM TERM1="modifyAction"></RBW-IDXTERM
  34148. ><RBW-IDXTERM TERM1="insertAction"></RBW-IDXTERM
  34149. ><RBW-IDXTERM TERM1="removeAction"></RBW-IDXTERM
  34150. ><RBW-IDXTERM TERM1="freezeAction"></RBW-IDXTERM
  34151. ><RBW-IDXTERM TERM1="unfreezeAction"></RBW-IDXTERM
  34152. ><RBW-IDXTERM TERM1="modifyStatusAction"></RBW-IDXTERM
  34153. >The following table describes all controlled actions:</B.BODY
  34154. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  34155. ></ENTRY
  34156. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Use</CELLHEADING
  34157. ></ENTRY
  34158. ></RBW-ROW
  34159. ></THEAD
  34160. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>control</CELLBODY
  34161. ></ENTRY
  34162. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Controls access to all other actions. If a role is allowed this action, it can change the permissions of other actions; otherwise, the role cannot change permissions of other actions.</CELLBODY
  34163. ></ENTRY
  34164. ></RBW-ROW
  34165. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>create</CELLBODY
  34166. ></ENTRY
  34167. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Applies to controlled classes. By setting rights to this action you can control whether someone can make a particular controlled object. For example, if create for controlled class ConfigurationVersionList is set to denied, the user cannot make any new configuration versions.</CELLBODY
  34168. ></ENTRY
  34169. ></RBW-ROW
  34170. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>destroy</CELLBODY
  34171. ></ENTRY
  34172. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Applies to controlled classes.</CELLBODY
  34173. ></ENTRY
  34174. ></RBW-ROW
  34175. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>read</CELLBODY
  34176. ></ENTRY
  34177. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Applies to all object and controls whether a user can examine an object’s contents. </CELLBODY
  34178. ></ENTRY
  34179. ></RBW-ROW
  34180. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>modify</CELLBODY
  34181. ></ENTRY
  34182. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Applies to all objects and controls a user’s ability to change some property of an object, including its status. For example, without modify rights to a system version object, a user cannot make a new version of that system version or edit its properties.</CELLBODY
  34183. ></ENTRY
  34184. ></RBW-ROW
  34185. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert</CELLBODY
  34186. ></ENTRY
  34187. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This applies to controlled lists and controls a user’s rights to insert object in that list, that is, to make new versions of an object. For example without insert rights to a SystemVersionList, a user cannot add any objects to that list and make a new version of a particular system.</CELLBODY
  34188. ></ENTRY
  34189. ></RBW-ROW
  34190. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>remove</CELLBODY
  34191. ></ENTRY
  34192. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Applies to controlled lists.</CELLBODY
  34193. ></ENTRY
  34194. ></RBW-ROW
  34195. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>freeze</CELLBODY
  34196. ></ENTRY
  34197. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Applies to version of objects. It controls the ability to freeze objects, and thus change their status.</CELLBODY
  34198. ></ENTRY
  34199. ></RBW-ROW
  34200. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>unfreeze</CELLBODY
  34201. ></ENTRY
  34202. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Applies to versions of objects.</CELLBODY
  34203. ></ENTRY
  34204. ></RBW-ROW
  34205. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>modifyStatus</CELLBODY
  34206. ></ENTRY
  34207. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Applies to versions of objects. It controls the ability to change the status of objects. For example, you could prevent a user from changing the status of an object version from fixed to dynamic frozen.</CELLBODY
  34208. ></ENTRY
  34209. ></RBW-ROW
  34210. ></TBODY
  34211. ></TGROUP
  34212. ></RBW-TABLE
  34213. ><B.BODY></B.BODY
  34214. ></LABEL
  34215. ></SUBSECTION
  34216. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="access control" TERM2="controlled classes"></RBW-IDXTERM
  34217. ><RBW-ANCHOR ID="42002"></RBW-ANCHOR
  34218. >Controlled Classes<RBW-IDXTERM TERM1="controlled class" TERM2="definition"></RBW-IDXTERM
  34219. ><RBW-IDXTERM TERM1="object" TERM2="role rights for class of"></RBW-IDXTERM
  34220. ><RBW-IDXTERM TERM1="role right" TERM2="for class of object"></RBW-IDXTERM
  34221. ></SS.SUBSEC.HEAD
  34222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34223. >Introduction</L.LABEL
  34224. ><B.BODY>The role rights that you specify for a controlled class apply to all objects of that type. This provides an easy way to specify role rights for a large number of objects at one time.</B.BODY
  34225. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34226. >Conflicts</SL.SUBLABEL
  34227. ><B.BODY>If you specify role rights on a controlled class and an object of that type, ObjectTeam uses the most restrictive access control rules to determine access rights. Thus, if an action is prohibited on either the controlled class or the object, ObjectTeam prohibits the action.</B.BODY
  34228. ></LABEL
  34229. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34230. >Example</L.LABEL
  34231. ><B.BODY>The controlled class GroupVersion is defined at the project level. In the role rights for the controlled class GroupVersion, you prohibit the destroyAction for the tester role. All group versions in the project now have the role rights for the controlled class GroupVersion. The tester role cannot delete a group version from the project.</B.BODY
  34232. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00306.unk" origfile="pics/accrule1.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  34233. ></FA.FIGURE.ANCHOR
  34234. ></LABEL
  34235. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34236. >ObjectTeam defines controlled classes</L.LABEL
  34237. ><B.BODY>ObjectTeam defines corporate&truehy;level and project&truehy;level controlled classes. You cannot add or delete controlled classes.</B.BODY
  34238. ></LABEL
  34239. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34240. >Corporate&truehy;level controlled classes</L.LABEL
  34241. ><B.BODY><RBW-IDXTERM TERM1="controlled class" TERM2="list of (corporate level)"></RBW-IDXTERM
  34242. >The following controlled classes are defined on the corporate level:</B.BODY
  34243. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="162p"><COLSPEC COLNAME="2" COLWIDTH="288p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate</CELLBODY
  34244. ></ENTRY
  34245. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileVersionList</CELLBODY
  34246. ></ENTRY
  34247. ></RBW-ROW
  34248. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CorporateGroup</CELLBODY
  34249. ></ENTRY
  34250. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>LevelCustomFileLink</CELLBODY
  34251. ></ENTRY
  34252. ></RBW-ROW
  34253. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CorporateGroupVersion</CELLBODY
  34254. ></ENTRY
  34255. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>LevelCustomFileLinkList</CELLBODY
  34256. ></ENTRY
  34257. ></RBW-ROW
  34258. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFile</CELLBODY
  34259. ></ENTRY
  34260. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project</CELLBODY
  34261. ></ENTRY
  34262. ></RBW-ROW
  34263. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileList</CELLBODY
  34264. ></ENTRY
  34265. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ProjectList</CELLBODY
  34266. ></ENTRY
  34267. ></RBW-ROW
  34268. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileVersion</CELLBODY
  34269. ></ENTRY
  34270. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34271. ></ENTRY
  34272. ></RBW-ROW
  34273. ></TBODY
  34274. ></TGROUP
  34275. ></RBW-TABLE
  34276. ></LABEL
  34277. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34278. >Project&truehy;level controlled classes</L.LABEL
  34279. ><B.BODY>The following <RBW-IDXTERM TERM1="controlled class" TERM2="list of (project level)"></RBW-IDXTERM
  34280. >controlled classes are defined on the project level:</B.BODY
  34281. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="162p"><COLSPEC COLNAME="2" COLWIDTH="288p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Config</CELLBODY
  34282. ></ENTRY
  34283. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ItemPropertyReference</CELLBODY
  34284. ></ENTRY
  34285. ></RBW-ROW
  34286. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ConfigList</CELLBODY
  34287. ></ENTRY
  34288. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>LevelCustomFileLink</CELLBODY
  34289. ></ENTRY
  34290. ></RBW-ROW
  34291. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ConfigPhaseLink</CELLBODY
  34292. ></ENTRY
  34293. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>LevelCustomFileLinkList</CELLBODY
  34294. ></ENTRY
  34295. ></RBW-ROW
  34296. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ConfigPhaseLinkList</CELLBODY
  34297. ></ENTRY
  34298. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase</CELLBODY
  34299. ></ENTRY
  34300. ></RBW-ROW
  34301. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ConfigVersion</CELLBODY
  34302. ></ENTRY
  34303. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PhaseList</CELLBODY
  34304. ></ENTRY
  34305. ></RBW-ROW
  34306. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ConfigVersionList</CELLBODY
  34307. ></ENTRY
  34308. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PhaseSystemLink</CELLBODY
  34309. ></ENTRY
  34310. ></RBW-ROW
  34311. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CorporateGroup</CELLBODY
  34312. ></ENTRY
  34313. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PhaseSystemLinkList</CELLBODY
  34314. ></ENTRY
  34315. ></RBW-ROW
  34316. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CorporateGroupVersion</CELLBODY
  34317. ></ENTRY
  34318. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PhaseVersion</CELLBODY
  34319. ></ENTRY
  34320. ></RBW-ROW
  34321. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFile</CELLBODY
  34322. ></ENTRY
  34323. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PhaseVersionList</CELLBODY
  34324. ></ENTRY
  34325. ></RBW-ROW
  34326. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileList</CELLBODY
  34327. ></ENTRY
  34328. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PropertyReferenceList</CELLBODY
  34329. ></ENTRY
  34330. ></RBW-ROW
  34331. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileVersion</CELLBODY
  34332. ></ENTRY
  34333. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SavedGroup</CELLBODY
  34334. ></ENTRY
  34335. ></RBW-ROW
  34336. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileVersionList</CELLBODY
  34337. ></ENTRY
  34338. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SavedGroupVersion</CELLBODY
  34339. ></ENTRY
  34340. ></RBW-ROW
  34341. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ExternalLink</CELLBODY
  34342. ></ENTRY
  34343. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System</CELLBODY
  34344. ></ENTRY
  34345. ></RBW-ROW
  34346. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ExternalLinkList</CELLBODY
  34347. ></ENTRY
  34348. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemCorporateLink</CELLBODY
  34349. ></ENTRY
  34350. ></RBW-ROW
  34351. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File</CELLBODY
  34352. ></ENTRY
  34353. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemCorporateLinkList</CELLBODY
  34354. ></ENTRY
  34355. ></RBW-ROW
  34356. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>FileList</CELLBODY
  34357. ></ENTRY
  34358. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemFileLink</CELLBODY
  34359. ></ENTRY
  34360. ></RBW-ROW
  34361. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>FilePropertyReference</CELLBODY
  34362. ></ENTRY
  34363. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemFileLinkList</CELLBODY
  34364. ></ENTRY
  34365. ></RBW-ROW
  34366. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>FileVersion</CELLBODY
  34367. ></ENTRY
  34368. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemFileReference</CELLBODY
  34369. ></ENTRY
  34370. ></RBW-ROW
  34371. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>FileVersionList</CELLBODY
  34372. ></ENTRY
  34373. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemFileReferenceList</CELLBODY
  34374. ></ENTRY
  34375. ></RBW-ROW
  34376. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Group</CELLBODY
  34377. ></ENTRY
  34378. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemGroupLink</CELLBODY
  34379. ></ENTRY
  34380. ></RBW-ROW
  34381. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>GroupGroupLink</CELLBODY
  34382. ></ENTRY
  34383. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemGroupLinkList</CELLBODY
  34384. ></ENTRY
  34385. ></RBW-ROW
  34386. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>GroupList</CELLBODY
  34387. ></ENTRY
  34388. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemList</CELLBODY
  34389. ></ENTRY
  34390. ></RBW-ROW
  34391. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>GroupVersion</CELLBODY
  34392. ></ENTRY
  34393. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemVersion</CELLBODY
  34394. ></ENTRY
  34395. ></RBW-ROW
  34396. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>GroupVersionList</CELLBODY
  34397. ></ENTRY
  34398. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemVersionList</CELLBODY
  34399. ></ENTRY
  34400. ></RBW-ROW
  34401. ></TBODY
  34402. ></TGROUP
  34403. ></RBW-TABLE
  34404. ></LABEL
  34405. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34406. >How to specify role rights</L.LABEL
  34407. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34408. ></RBW-AUTOGEN
  34409. ></RBW-MARKER
  34410. ><RBW-PARABODY>To specify the role rights for a controlled class:</RBW-PARABODY
  34411. ></P.PROCEDURE
  34412. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34413. ></RBW-AUTOGEN
  34414. ></RBW-MARKER
  34415. ><RBW-PARABODY>Move to corporate or project level, depending on which controlled class you are interested in. </RBW-PARABODY
  34416. ></LN.LIST.NUM
  34417. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34418. ></RBW-AUTOGEN
  34419. ></RBW-MARKER
  34420. ><RBW-PARABODY>Select Security | Role Rights | Edit Controlled Classes...</RBW-PARABODY
  34421. ></LN.LIST.NUM
  34422. ><LR.LIST.RESULT>The Edit Controlled Class Role Rights dialog box appears.</LR.LIST.RESULT
  34423. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00307.unk" origfile="pics/edctrlcl.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  34424. ></FAR.FIGURE.ANCHOR.RIGHT
  34425. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  34426. ></RBW-AUTOGEN
  34427. ></RBW-MARKER
  34428. ><RBW-PARABODY>Select a Controlled Class from the Objects list.</RBW-PARABODY
  34429. ></LN.LIST.NUM
  34430. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  34431. ></RBW-AUTOGEN
  34432. ></RBW-MARKER
  34433. ><RBW-PARABODY>Select a Role from the Roles list.</RBW-PARABODY
  34434. ></LN.LIST.NUM
  34435. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  34436. ></RBW-AUTOGEN
  34437. ></RBW-MARKER
  34438. ><RBW-PARABODY>Specify the role rights of the controlled class in the Actions list.</RBW-PARABODY
  34439. ></LN.LIST.NUM
  34440. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  34441. ></RBW-AUTOGEN
  34442. >When you specify the role rights for a controlled class, ObjectTeam does not change the role rights for all objects of that type. However, when evaluating access rules for an object, ObjectTeam checks the role rights of its controlled class.</N.NOTE
  34443. ></LABEL
  34444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34445. >How to view role rights</L.LABEL
  34446. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34447. ></RBW-AUTOGEN
  34448. ></RBW-MARKER
  34449. ><RBW-PARABODY>To view the role rights of controlled classes:<RBW-IDXTERM TERM1="controlled class" TERM2="displaying"></RBW-IDXTERM
  34450. ><RBW-IDXTERM TERM1="displaying" TERM2="controlled class"></RBW-IDXTERM
  34451. ></RBW-PARABODY
  34452. ></P.PROCEDURE
  34453. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34454. ></RBW-AUTOGEN
  34455. ></RBW-MARKER
  34456. ><RBW-PARABODY>Move to the corporate or project level, depending on which controlled class you are interested in. </RBW-PARABODY
  34457. ></LN.LIST.NUM
  34458. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34459. ></RBW-AUTOGEN
  34460. ></RBW-MARKER
  34461. ><RBW-PARABODY>Select Security | Role Rights | .<RBW-IDXTERM TERM1="pseudo object" TERM2=""></RBW-IDXTERM
  34462. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  34463. >Show Controlled Classes...</RBW-PARABODY
  34464. ></LN.LIST.NUM
  34465. ><LR.LIST.RESULT>The dialog box Show Controlled Class Role Rights appears.</LR.LIST.RESULT
  34466. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  34467. ></RBW-AUTOGEN
  34468. ></RBW-MARKER
  34469. ><RBW-PARABODY>Select a Controlled Class from the Objects list.</RBW-PARABODY
  34470. ></LN.LIST.NUM
  34471. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  34472. ></RBW-AUTOGEN
  34473. ></RBW-MARKER
  34474. ><RBW-PARABODY>Select a Role from the Roles list.</RBW-PARABODY
  34475. ></LN.LIST.NUM
  34476. ><LR.LIST.RESULT>Under Actions the role rights of the selected controlled class are now displayed. </LR.LIST.RESULT
  34477. ></LABEL
  34478. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34479. >For more information</L.LABEL
  34480. ><B.BODY>For more information about role rights, access rules, access rights, and the procedures used to view and specify them, see <RBW-XREF REFID="19555" TYPE="XREF-TEXTCOPY">Role Rights, Access Rules, and Access Rights</RBW-XREF
  34481. >.</B.BODY
  34482. ></LABEL
  34483. ></SUBSECTION
  34484. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="access control" TERM2="controlled objects"></RBW-IDXTERM
  34485. ><RBW-ANCHOR ID="42612"></RBW-ANCHOR
  34486. >Controlled Objects</SS.SUBSEC.HEAD
  34487. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34488. >Introduction</L.LABEL
  34489. ><B.BODY><RBW-IDXTERM TERM1="controlled object"></RBW-IDXTERM
  34490. >Any object for which you can define role rights is called a controlled object. The role rights that you specify for a controlled object apply only to that object, which allows you to limit access to it.</B.BODY
  34491. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34492. >Conflicts</SL.SUBLABEL
  34493. ><B.BODY>If you specify role rights on both a controlled class and a controlled object of that type, ObjectTeam uses the most restrictive role rights to determine the user’s access rights. Thus, if an action is prohibited on either the class or the object, ObjectTeam prohibits the action.</B.BODY
  34494. ></LABEL
  34495. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34496. >Initial role rights</L.LABEL
  34497. ><B.BODY><RBW-IDXTERM TERM1="object" TERM2="role rights, initial"></RBW-IDXTERM
  34498. ><RBW-IDXTERM TERM1="role right" TERM2="initial value"></RBW-IDXTERM
  34499. >When you create an object, ObjectTeam provides the following initial role rights for it:</B.BODY
  34500. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34501. ></RBW-AUTOGEN
  34502. ></RBW-MARKER
  34503. ><RBW-PARABODY>ControlAction allowed for the default role of the creating user.</RBW-PARABODY
  34504. ></LB.LIST.BULLET
  34505. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34506. ></RBW-AUTOGEN
  34507. ></RBW-MARKER
  34508. ><RBW-PARABODY>All other actions for the default role of the creating user are undefined.</RBW-PARABODY
  34509. ></LB.LIST.BULLET
  34510. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34511. ></RBW-AUTOGEN
  34512. ></RBW-MARKER
  34513. ><RBW-PARABODY>All actions for all other roles are undefined.</RBW-PARABODY
  34514. ></LB.LIST.BULLET
  34515. ></LABEL
  34516. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34517. >Example</L.LABEL
  34518. ><B.BODY>The controlled class GroupVersion is defined on the project level. In the role rights for the controlled class GroupVersion, you allow the destroyAction for the tester role. However, for the controlled object myGroupVersion, you prohibit the destroyAction for the tester role. The tester role can delete any group version from the project except myGroupVersion.</B.BODY
  34519. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00308.unk" origfile="pics/accrule2.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  34520. ></FA.FIGURE.ANCHOR
  34521. ></LABEL
  34522. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34523. >How to specify role rights</L.LABEL
  34524. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34525. ></RBW-AUTOGEN
  34526. ></RBW-MARKER
  34527. ><RBW-PARABODY>To specify the role rights for a controlled object:</RBW-PARABODY
  34528. ></P.PROCEDURE
  34529. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34530. ></RBW-AUTOGEN
  34531. ></RBW-MARKER
  34532. ><RBW-PARABODY>Select the object in the information area</RBW-PARABODY
  34533. ></LN.LIST.NUM
  34534. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34535. ></RBW-AUTOGEN
  34536. ></RBW-MARKER
  34537. ><RBW-PARABODY>Select Security | Role Rights | Edit.</RBW-PARABODY
  34538. ></LN.LIST.NUM
  34539. ><LR.LIST.RESULT>The Edit Role Rights dialog box appears.</LR.LIST.RESULT
  34540. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  34541. ></RBW-AUTOGEN
  34542. ></RBW-MARKER
  34543. ><RBW-PARABODY>Make sure you have selected the object in the Objects list.</RBW-PARABODY
  34544. ></LN.LIST.NUM
  34545. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  34546. ></RBW-AUTOGEN
  34547. ></RBW-MARKER
  34548. ><RBW-PARABODY>Select a role from the Roles list.</RBW-PARABODY
  34549. ></LN.LIST.NUM
  34550. ><LR.LIST.RESULT>You can now specify the role rights of the object in the Actions list..</LR.LIST.RESULT
  34551. ></LABEL
  34552. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34553. >How to view role rights </L.LABEL
  34554. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34555. ></RBW-AUTOGEN
  34556. ></RBW-MARKER
  34557. ><RBW-PARABODY>To view the role rights for a controlled object:</RBW-PARABODY
  34558. ></P.PROCEDURE
  34559. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34560. ></RBW-AUTOGEN
  34561. ></RBW-MARKER
  34562. ><RBW-PARABODY>Select the object in the information area</RBW-PARABODY
  34563. ></LN.LIST.NUM
  34564. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34565. ></RBW-AUTOGEN
  34566. ></RBW-MARKER
  34567. ><RBW-PARABODY>Select Security | Role Rights | Show.<RBW-IDXTERM TERM1="displaying" TERM2="controlled object"></RBW-IDXTERM
  34568. ></RBW-PARABODY
  34569. ></LN.LIST.NUM
  34570. ><LR.LIST.RESULT>The Show Role Rights dialog box appears.</LR.LIST.RESULT
  34571. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  34572. ></RBW-AUTOGEN
  34573. ></RBW-MARKER
  34574. ><RBW-PARABODY>Make sure you have selected the object in the Objects list.</RBW-PARABODY
  34575. ></LN.LIST.NUM
  34576. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  34577. ></RBW-AUTOGEN
  34578. ></RBW-MARKER
  34579. ><RBW-PARABODY>Select a role from the Roles list.</RBW-PARABODY
  34580. ></LN.LIST.NUM
  34581. ><LR.LIST.RESULT>The role rights of the object are now displayed in the Actions list.</LR.LIST.RESULT
  34582. ></LABEL
  34583. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34584. >How to view access rights</L.LABEL
  34585. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34586. ></RBW-AUTOGEN
  34587. ></RBW-MARKER
  34588. ><RBW-PARABODY>To view your access rights for a controlled object:</RBW-PARABODY
  34589. ></P.PROCEDURE
  34590. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34591. ></RBW-AUTOGEN
  34592. ></RBW-MARKER
  34593. ><RBW-PARABODY>Select the object</RBW-PARABODY
  34594. ></LN.LIST.NUM
  34595. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34596. ></RBW-AUTOGEN
  34597. ></RBW-MARKER
  34598. ><RBW-PARABODY>Select Security | Show Access Rights.</RBW-PARABODY
  34599. ></LN.LIST.NUM
  34600. ><LRS.LIST.RESULT.SINGLE>The Show Access Rights dialog box appears, displaying your access rights to the object based on your effective context.</LRS.LIST.RESULT.SINGLE
  34601. ></LABEL
  34602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34603. >For more information</L.LABEL
  34604. ><B.BODY>For more information about role rights, access rules, access rights, and the procedures used to view and specify them, see <RBW-XREF REFID="19555" TYPE="XREF-TEXTCOPY">Role Rights, Access Rules, and Access Rights</RBW-XREF
  34605. >.</B.BODY
  34606. ></LABEL
  34607. ></SUBSECTION
  34608. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="access control" TERM2="controlled lists"></RBW-IDXTERM
  34609. ><RBW-ANCHOR ID="38414"></RBW-ANCHOR
  34610. >Controlled Lists</SS.SUBSEC.HEAD
  34611. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34612. >Introduction</L.LABEL
  34613. ><B.BODY><RBW-IDXTERM TERM1="controlled list" TERM2="definition"></RBW-IDXTERM
  34614. ><RBW-IDXTERM TERM1="object" TERM2="role rights for children of"></RBW-IDXTERM
  34615. ><RBW-IDXTERM TERM1="role right" TERM2="for child objects"></RBW-IDXTERM
  34616. >In ObjectTeam, a parent object has a controlled list for each of its child object types. When you create a child object, ObjectTeam adds it to the appropriate controlled list on the parent object.</B.BODY
  34617. ><B.BODY><RBW-IDXTERM TERM1="version" TERM2="access control for"></RBW-IDXTERM
  34618. >For example, each system object has a controlled list, SystemVersionList. When you create a new version of the system, ObjectTeam adds the system version to SystemVersionList. Similarly, each project object has a controlled list, ConfigList. When you add a configuration to the project, ObjectTeam adds the configuration object to ConfigList.</B.BODY
  34619. ></LABEL
  34620. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34621. >Two types of role rights</L.LABEL
  34622. ><B.BODY>For each controlled list, you specify two types of role rights: </B.BODY
  34623. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34624. ></RBW-AUTOGEN
  34625. ></RBW-MARKER
  34626. ><RBW-PARABODY><RBW-IDXTERM TERM1="ownRight"></RBW-IDXTERM
  34627. ><RBW-IDXTERM TERM1="role right" TERM2="ownRight"></RBW-IDXTERM
  34628. >ownRight determines who can add objects to or remove objects from the controlled list. You use ownRight role rights to control who creates and deletes child objects.</RBW-PARABODY
  34629. ></LB.LIST.BULLET
  34630. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34631. ></RBW-AUTOGEN
  34632. ></RBW-MARKER
  34633. ><RBW-PARABODY><RBW-IDXTERM TERM1="childRight"></RBW-IDXTERM
  34634. ><RBW-IDXTERM TERM1="role right" TERM2="childRight"></RBW-IDXTERM
  34635. >childRight specifies the initial role rights assigned to the objects added to the controlled list. You use childRight role rights to define the initial role rights of child objects.</RBW-PARABODY
  34636. ></LB.LIST.BULLET
  34637. ></LABEL
  34638. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34639. >Naming conventions for controlled lists</L.LABEL
  34640. ><B.BODY>The following naming convention identifies the contents of each list:</B.BODY
  34641. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34642. ></RBW-AUTOGEN
  34643. ></RBW-MARKER
  34644. ><RBW-PARABODY><CX5FX5FTERM>xxx</CX5FX5FTERM
  34645. >List lists child objects other than versions.</RBW-PARABODY
  34646. ></LB.LIST.BULLET
  34647. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34648. ></RBW-AUTOGEN
  34649. ></RBW-MARKER
  34650. ><RBW-PARABODY><CX5FX5FTERM>xxx</CX5FX5FTERM
  34651. >VersionList lists versions.</RBW-PARABODY
  34652. ></LB.LIST.BULLET
  34653. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34654. ></RBW-AUTOGEN
  34655. ></RBW-MARKER
  34656. ><RBW-PARABODY><CX5FX5FTERM>xxx</CX5FX5FTERM
  34657. >LinkList lists links between versions of the parent object and versions of the child object.</RBW-PARABODY
  34658. ></LB.LIST.BULLET
  34659. ><B.BODY>The links created and entered into this list are not immediately visible in the Browser. For example, the object that links a phase version and a system version does not appear in the Browser. However, Browser operations often affect the links created and entered into this list. For example, when you change the link status of a system version from fixed to dynamicFrozen you are changing the property of the link object.</B.BODY
  34660. ></LABEL
  34661. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34662. >List of controlled lists</L.LABEL
  34663. ><B.BODY>The following table lists all parent objects and their controlled lists.</B.BODY
  34664. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="180p"><COLSPEC COLNAME="3" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object </CELLHEADING
  34665. ></ENTRY
  34666. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Controlled List</CELLHEADING
  34667. ></ENTRY
  34668. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Contents Of Controlled List</CELLHEADING
  34669. ></ENTRY
  34670. ></RBW-ROW
  34671. ></THEAD
  34672. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Corporate </CELLBODY
  34673. ></ENTRY
  34674. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ProjectList</CELLBODY
  34675. ></ENTRY
  34676. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Projects</CELLBODY
  34677. ></ENTRY
  34678. ></RBW-ROW
  34679. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project </CELLBODY
  34680. ></ENTRY
  34681. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ConfigList</CELLBODY
  34682. ></ENTRY
  34683. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configurations</CELLBODY
  34684. ></ENTRY
  34685. ></RBW-ROW
  34686. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34687. ></ENTRY
  34688. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PhaseList</CELLBODY
  34689. ></ENTRY
  34690. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phases</CELLBODY
  34691. ></ENTRY
  34692. ></RBW-ROW
  34693. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34694. ></ENTRY
  34695. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileList</CELLBODY
  34696. ></ENTRY
  34697. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customization files</CELLBODY
  34698. ></ENTRY
  34699. ></RBW-ROW
  34700. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34701. ></ENTRY
  34702. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>LevelCustomFileLinkList</CELLBODY
  34703. ></ENTRY
  34704. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between project and customization file versions</CELLBODY
  34705. ></ENTRY
  34706. ></RBW-ROW
  34707. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Config</CELLBODY
  34708. ></ENTRY
  34709. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ConfigVersionList</CELLBODY
  34710. ></ENTRY
  34711. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration versions</CELLBODY
  34712. ></ENTRY
  34713. ></RBW-ROW
  34714. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34715. ></ENTRY
  34716. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ConfigPhaseLinkList</CELLBODY
  34717. ></ENTRY
  34718. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between configuration versions and phase versions</CELLBODY
  34719. ></ENTRY
  34720. ></RBW-ROW
  34721. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34722. ></ENTRY
  34723. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileList</CELLBODY
  34724. ></ENTRY
  34725. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customization files</CELLBODY
  34726. ></ENTRY
  34727. ></RBW-ROW
  34728. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34729. ></ENTRY
  34730. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>LevelCustomFileLinkList</CELLBODY
  34731. ></ENTRY
  34732. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between configuration versions and customization file versions</CELLBODY
  34733. ></ENTRY
  34734. ></RBW-ROW
  34735. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase</CELLBODY
  34736. ></ENTRY
  34737. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PhaseVersionList</CELLBODY
  34738. ></ENTRY
  34739. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase versions</CELLBODY
  34740. ></ENTRY
  34741. ></RBW-ROW
  34742. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34743. ></ENTRY
  34744. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemList</CELLBODY
  34745. ></ENTRY
  34746. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>System versions</CELLBODY
  34747. ></ENTRY
  34748. ></RBW-ROW
  34749. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34750. ></ENTRY
  34751. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PhaseSystemLinkList</CELLBODY
  34752. ></ENTRY
  34753. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between phase versions and system versions</CELLBODY
  34754. ></ENTRY
  34755. ></RBW-ROW
  34756. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34757. ></ENTRY
  34758. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileList</CELLBODY
  34759. ></ENTRY
  34760. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customization files</CELLBODY
  34761. ></ENTRY
  34762. ></RBW-ROW
  34763. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34764. ></ENTRY
  34765. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>LevelCustomFileLinkList</CELLBODY
  34766. ></ENTRY
  34767. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between phase versions and customization file versions</CELLBODY
  34768. ></ENTRY
  34769. ></RBW-ROW
  34770. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>System</CELLBODY
  34771. ></ENTRY
  34772. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemVersionList</CELLBODY
  34773. ></ENTRY
  34774. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>System versions</CELLBODY
  34775. ></ENTRY
  34776. ></RBW-ROW
  34777. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34778. ></ENTRY
  34779. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ExternalLinkList</CELLBODY
  34780. ></ENTRY
  34781. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>External links</CELLBODY
  34782. ></ENTRY
  34783. ></RBW-ROW
  34784. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34785. ></ENTRY
  34786. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>FileList</CELLBODY
  34787. ></ENTRY
  34788. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Files</CELLBODY
  34789. ></ENTRY
  34790. ></RBW-ROW
  34791. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34792. ></ENTRY
  34793. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemFileLinkList</CELLBODY
  34794. ></ENTRY
  34795. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between system versions and file versions</CELLBODY
  34796. ></ENTRY
  34797. ></RBW-ROW
  34798. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34799. ></ENTRY
  34800. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>GroupList</CELLBODY
  34801. ></ENTRY
  34802. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Groups</CELLBODY
  34803. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  34804. > This list does not contain corporate groups; there is no controlled list for corporate groups.</CELLBODY
  34805. ></ENTRY
  34806. ></RBW-ROW
  34807. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34808. ></ENTRY
  34809. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemGroupLinkList</CELLBODY
  34810. ></ENTRY
  34811. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between system versions and group versions</CELLBODY
  34812. ></ENTRY
  34813. ></RBW-ROW
  34814. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34815. ></ENTRY
  34816. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SystemCorporateLinkList</CELLBODY
  34817. ></ENTRY
  34818. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between system versions and corporate group versions</CELLBODY
  34819. ></ENTRY
  34820. ></RBW-ROW
  34821. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34822. ></ENTRY
  34823. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileList</CELLBODY
  34824. ></ENTRY
  34825. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customization files</CELLBODY
  34826. ></ENTRY
  34827. ></RBW-ROW
  34828. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  34829. ></ENTRY
  34830. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>LevelCustomFileLinkList</CELLBODY
  34831. ></ENTRY
  34832. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Links between system versions and customization file versions</CELLBODY
  34833. ></ENTRY
  34834. ></RBW-ROW
  34835. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Group</CELLBODY
  34836. ></ENTRY
  34837. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>GroupVersionList</CELLBODY
  34838. ></ENTRY
  34839. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Group versions</CELLBODY
  34840. ></ENTRY
  34841. ></RBW-ROW
  34842. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File</CELLBODY
  34843. ></ENTRY
  34844. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>FileVersionList</CELLBODY
  34845. ></ENTRY
  34846. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>File versions</CELLBODY
  34847. ></ENTRY
  34848. ></RBW-ROW
  34849. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFile</CELLBODY
  34850. ></ENTRY
  34851. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CustomFileVersionList</CELLBODY
  34852. ></ENTRY
  34853. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customization file versions</CELLBODY
  34854. ></ENTRY
  34855. ></RBW-ROW
  34856. ></TBODY
  34857. ></TGROUP
  34858. ><RBW-ICONIZE></RBW-TABLE
  34859. ></LABEL
  34860. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34861. >Example 1</L.LABEL
  34862. ><B.BODY>The following example shows how to use a controlled list that contains child objects other than object versions. On the controlled list, ConfigList, you specify the following role rights:</B.BODY
  34863. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34864. ></RBW-AUTOGEN
  34865. ></RBW-MARKER
  34866. ><RBW-PARABODY>ownRight: allows the insertAction for your default role</RBW-PARABODY
  34867. ></LB.LIST.BULLET
  34868. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34869. ></RBW-AUTOGEN
  34870. ></RBW-MARKER
  34871. ><RBW-PARABODY>childRight: no permissions specified</RBW-PARABODY
  34872. ></LB.LIST.BULLET
  34873. ><B.BODY>These settings ensure that only you can create Configuration versions in the project (you are the only one who can insert configurations into the ConfigList). They ensure that there are no special restrictions on the Configurations that you create.</B.BODY
  34874. ></LABEL
  34875. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34876. >Example 2</L.LABEL
  34877. ><B.BODY>The following example shows how to use a controlled list that contains object versions. On the controlled list, PhaseVersionList, you specify the following role rights:</B.BODY
  34878. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34879. ></RBW-AUTOGEN
  34880. ></RBW-MARKER
  34881. ><RBW-PARABODY>ownRight: no permissions explicitly specified</RBW-PARABODY
  34882. ></LB.LIST.BULLET
  34883. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34884. ></RBW-AUTOGEN
  34885. ></RBW-MARKER
  34886. ><RBW-PARABODY>childRight: allows the freezeAction for the QA&truehy;Manager role</RBW-PARABODY
  34887. ></LB.LIST.BULLET
  34888. ><B.BODY>This ensures that anyone can create a new phase version (there are no special restrictions on the PhaseVersionList). However, only the QA&truehy;Manager role can freeze the phase versions that are created.</B.BODY
  34889. ></LABEL
  34890. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34891. >Example 3</L.LABEL
  34892. ><B.BODY>The following example shows how to use a controlled list that contains links between object versions. On the controlled list, PhaseSystemLinkList, you specify the following role rights:</B.BODY
  34893. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34894. ></RBW-AUTOGEN
  34895. ></RBW-MARKER
  34896. ><RBW-PARABODY>ownRight: allows the insertAction for your default role</RBW-PARABODY
  34897. ></LB.LIST.BULLET
  34898. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34899. ></RBW-AUTOGEN
  34900. ></RBW-MARKER
  34901. ><RBW-PARABODY>childRight: allows the modifyAction for your default role</RBW-PARABODY
  34902. ></LB.LIST.BULLET
  34903. ><B.BODY>This ensures that only you can add a system version to the phase, either by adding a new system to the phase or by creating a new version of a system already in the phase. When a new system version is added, a link between the phase version and the system version must also be added to the PhaseSystemLinkList. You are the only user who can insert a link into that controlled list.</B.BODY
  34904. ><B.BODY>It also ensures that, once the link is created, you are the only who can modify it. In this case, for example, you are the only who can change the link status of the system version.</B.BODY
  34905. ></LABEL
  34906. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34907. >Controlled classes versus ownRights of controlled lists</L.LABEL
  34908. ><B.BODY><RBW-IDXTERM TERM1="controlled class" TERM2="and controlled list"></RBW-IDXTERM
  34909. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  34910. ><RBW-IDXTERM TERM1="controlled list" TERM2="and controlled class"></RBW-IDXTERM
  34911. >Because every controlled list is an object, a controlled class exists for every controlled list. Specifying the role rights on the controlled class (for the controlled list) affects every controlled list of that type. Specifying the ownRole rights on the controlled list affects only that particular controlled list.</B.BODY
  34912. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34913. >Example</SL.SUBLABEL
  34914. ><B.BODY>For example, setting the insertAction for the controlled class SystemList (defined at project level) sets the insertAction of every SystemList in the project. These settings control who can add systems to the project. Setting the insertAction for the ownRights role rights of the controlled list SystemList (defined at the phase level) affects only this list. This controls who can add systems to the phase.</B.BODY
  34915. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  34916. ></RBW-AUTOGEN
  34917. >If the controlled class affects only one controlled list, then specifying the role rights of the controlled class has the same effect as specifying the ownRights of that one controlled list. For example, a project has only one ConfigList. Specifying the role rights of the controlled class ConfigList (defined at the project level), has the same effect as specifying the ownRights of the controlled list ConfigList (defined at the project level).</N.NOTE
  34918. ></LABEL
  34919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34920. >Controlled classes versus childRights of controlled lists</L.LABEL
  34921. ><B.BODY><RBW-IDXTERM TERM1="controlled class" TERM2="and controlled list"></RBW-IDXTERM
  34922. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  34923. ><RBW-IDXTERM TERM1="controlled list" TERM2="and controlled class"></RBW-IDXTERM
  34924. >There are two significant differences between setting childRight role rights on a controlled list and setting role rights on a controlled class:</B.BODY
  34925. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34926. ></RBW-AUTOGEN
  34927. ></RBW-MARKER
  34928. ><RBW-PARABODY>The childRight role rights on a controlled list define the initial role rights for each object added to the list. Changing the childRight role rights on a controlled list has no effect on existing objects.</RBW-PARABODY
  34929. ></LB.LIST.BULLET
  34930. ><LT.LIST.TEXT>The role rights on a controlled class define the role rights for all objects of that type. Changing the role rights on a controlled class changes the role rights for all objects of that type.</LT.LIST.TEXT
  34931. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  34932. ></RBW-AUTOGEN
  34933. ></RBW-MARKER
  34934. ><RBW-PARABODY>Control classes are defined at the corporate and project level. Many controlled lists are defined at lower levels.</RBW-PARABODY
  34935. ></LB.LIST.BULLET
  34936. ><LT.LIST.TEXT>For example, the controlled class System is defined at the project level. Specifying role rights on the controlled class System defines the role rights for every system in the project. The controlled list SystemVersionList is defined at the sytem level. Specifying childRight role rights on the controlled list SystemVersionList defines the initial role rights for every version of that particular system.</LT.LIST.TEXT
  34937. ></LABEL
  34938. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34939. >How to specify role rights</L.LABEL
  34940. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34941. ></RBW-AUTOGEN
  34942. ></RBW-MARKER
  34943. ><RBW-PARABODY>To specify the role rights for a controlled list:</RBW-PARABODY
  34944. ></P.PROCEDURE
  34945. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34946. ></RBW-AUTOGEN
  34947. ></RBW-MARKER
  34948. ><RBW-PARABODY>Select Security | Role Rights | Edit Controlled Lists...</RBW-PARABODY
  34949. ></LN.LIST.NUM
  34950. ><LR.LIST.RESULT>The Edit Controlled List Role Rights dialog box appears.</LR.LIST.RESULT
  34951. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00309.unk" origfile="pics/edctrllt.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  34952. ></FAR.FIGURE.ANCHOR.RIGHT
  34953. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34954. ></RBW-AUTOGEN
  34955. ></RBW-MARKER
  34956. ><RBW-PARABODY>Select a Controlled List from the Objects list.</RBW-PARABODY
  34957. ></LN.LIST.NUM
  34958. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  34959. ></RBW-AUTOGEN
  34960. ></RBW-MARKER
  34961. ><RBW-PARABODY>Select a one or more roles from the Roles list.</RBW-PARABODY
  34962. ></LN.LIST.NUM
  34963. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  34964. ></RBW-AUTOGEN
  34965. ></RBW-MARKER
  34966. ><RBW-PARABODY>Specify the role rights of the controlled list in the Actions list.</RBW-PARABODY
  34967. ></LN.LIST.NUM
  34968. ></LABEL
  34969. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34970. >How to view role rights</L.LABEL
  34971. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  34972. ></RBW-AUTOGEN
  34973. ></RBW-MARKER
  34974. ><RBW-PARABODY>To view the role rights of controlled lists:<RBW-IDXTERM TERM1="controlled class" TERM2="displaying"></RBW-IDXTERM
  34975. ><RBW-IDXTERM TERM1="displaying" TERM2="controlled class"></RBW-IDXTERM
  34976. ></RBW-PARABODY
  34977. ></P.PROCEDURE
  34978. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  34979. ></RBW-AUTOGEN
  34980. ></RBW-MARKER
  34981. ><RBW-PARABODY>Select Security | Role Rights | <RBW-IDXTERM TERM1="pseudo object" TERM2=""></RBW-IDXTERM
  34982. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  34983. >Show Controlled Lists...</RBW-PARABODY
  34984. ></LN.LIST.NUM
  34985. ><LR.LIST.RESULT>The Show Controlled List Role Rights dialog box appears.</LR.LIST.RESULT
  34986. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  34987. ></RBW-AUTOGEN
  34988. ></RBW-MARKER
  34989. ><RBW-PARABODY>Select a Controlled List from the Objects list.</RBW-PARABODY
  34990. ></LN.LIST.NUM
  34991. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  34992. ></RBW-AUTOGEN
  34993. ></RBW-MARKER
  34994. ><RBW-PARABODY>Select a Role from the Roles list.</RBW-PARABODY
  34995. ></LN.LIST.NUM
  34996. ><LR.LIST.RESULT>Under Actions, the role rights of the selected controlled list are now displayed. </LR.LIST.RESULT
  34997. ></LABEL
  34998. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  34999. >How to specify role rights</L.LABEL
  35000. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  35001. ></RBW-AUTOGEN
  35002. ></RBW-MARKER
  35003. ><RBW-PARABODY>To specify the role rights for a controlled list, select the object, then select Security | Role Rights | Edit.</RBW-PARABODY
  35004. ></P.PROCEDURE
  35005. ><LRS.LIST.RESULT.SINGLE>The Edit Role Rights dialog box appears. Use the Type box in the dialog box to select ownRight or childRight.</LRS.LIST.RESULT.SINGLE
  35006. ></LABEL
  35007. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35008. >How to view role rights </L.LABEL
  35009. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  35010. ></RBW-AUTOGEN
  35011. ></RBW-MARKER
  35012. ><RBW-PARABODY>To view the role rights for a controlled list, select the object, and then select Security | Role Rights | Show.</RBW-PARABODY
  35013. ></P.PROCEDURE
  35014. ><LRS.LIST.RESULT.SINGLE>The Show Role Rights dialog box appears. Use the Type box of the dialog box to select ownRight or childRight.</LRS.LIST.RESULT.SINGLE
  35015. ></LABEL
  35016. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35017. >How to view access rights</L.LABEL
  35018. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  35019. ></RBW-AUTOGEN
  35020. ></RBW-MARKER
  35021. ><RBW-PARABODY>To view your access rights for a controlled list, select the object, and then select Security | Show Access Rights.</RBW-PARABODY
  35022. ></P.PROCEDURE
  35023. ><LRS.LIST.RESULT.SINGLE>The Show Access Rights dialog box appears, displaying your access rights to the object based on your effective context.</LRS.LIST.RESULT.SINGLE
  35024. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  35025. ></RBW-AUTOGEN
  35026. >Your access rights are based on the ownRights of the controlled list. The childRights of the controlled list do not affect your access rights to the controlled list.</N.NOTE
  35027. ></LABEL
  35028. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35029. >For more information</L.LABEL
  35030. ><B.BODY>For more information about role rights, access rules, access rights, and the procedures used to view and specify them, see <RBW-XREF REFID="19555" TYPE="XREF-TEXTCOPY">Role Rights, Access Rules, and Access Rights</RBW-XREF
  35031. >.</B.BODY
  35032. ></LABEL
  35033. ></SUBSECTION
  35034. ></SECTION
  35035. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="20462"></RBW-ANCHOR
  35036. >How ObjectTeam Evaluates Access Rights</S.SECTION.HEAD
  35037. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35038. >Access rights checked at moment of access</L.LABEL
  35039. ><B.BODY><RBW-IDXTERM TERM1="access right" TERM2="evaluating"></RBW-IDXTERM
  35040. ><RBW-IDXTERM TERM1="evaluating access rights"></RBW-IDXTERM
  35041. ><RBW-IDXTERM TERM1="permission" TERM2="evaluating"></RBW-IDXTERM
  35042. >Because a user’s effective context is dynamic (that is, the user can activate and deactivate roles), the user’s access rights for any repository object are also dynamic. Every time you carry out an action on an object, ObjectTeam checks your access rights to that object.</B.BODY
  35043. ></LABEL
  35044. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35045. >Most restrictive role rights are used</L.LABEL
  35046. ><B.BODY>ObjectTeam always uses the most restrictive role rights to define access rights. For example, if an action is allowed for one active role and prohibited for another active role, ObjectTeam prohibits the action.</B.BODY
  35047. ></LABEL
  35048. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35049. >Evaluating access rights</L.LABEL
  35050. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  35051. ></RBW-AUTOGEN
  35052. ></RBW-MARKER
  35053. ><RBW-PARABODY>ObjectTeam follows these steps to determine whether you have access to a particular action on an object:</RBW-PARABODY
  35054. ></P.PROCEDURE
  35055. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  35056. ></RBW-AUTOGEN
  35057. ></RBW-MARKER
  35058. ><RBW-PARABODY>Checks for SuperUser in your effective context. If SuperUser is in your effective context, the action is allowed regardless of which access rules are specified for this object.</RBW-PARABODY
  35059. ></LN.LIST.NUM
  35060. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  35061. ></RBW-AUTOGEN
  35062. ></RBW-MARKER
  35063. ><RBW-PARABODY>Checks the class of the object to determine whether you have access to the action. The action is prohibited in the following cases:</RBW-PARABODY
  35064. ></LN.LIST.NUM
  35065. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  35066. ></RBW-MARKER
  35067. ><RBW-PARABODY>When one or more roles allowed this action, but none of them is in your effective context. </RBW-PARABODY
  35068. ></LB2.LIST.BULLET.2
  35069. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  35070. ></RBW-MARKER
  35071. ><RBW-PARABODY>When one or more roles prohibited this action, and at least one of them is in your effective context. </RBW-PARABODY
  35072. ></LB2.LIST.BULLET.2
  35073. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  35074. ></RBW-AUTOGEN
  35075. ></RBW-MARKER
  35076. ><RBW-PARABODY>Checks the object to determine whether you have access to the the action. The action is prohibited in the cases shown in step 2.</RBW-PARABODY
  35077. ></LN.LIST.NUM
  35078. ></LABEL
  35079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35080. >Example 1</L.LABEL
  35081. ><B.BODY><RBW-IDXTERM TERM1="access control" TERM2="example"></RBW-IDXTERM
  35082. >Suppose the user Fred and the role ProjectMember exist at the corporate level. The project manager creates a UserRoleLink between Fred and ProjectMember with a status of defaultOff. Fred now has two UserRoleLinks: his default role, Fred, and the role ProjectMember. Fred has not activated the ProjectMember role, so only his default role is in his effective context. </B.BODY
  35083. ><BI.BODY.INTRO>Fred enters the command to freeze his current configuration version. ObjectTeam checks his access rights as follows:</BI.BODY.INTRO
  35084. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00310.unk" origfile="pics/accrule3.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  35085. ></FA.FIGURE.ANCHOR
  35086. ><B.BODY>Now, the project manager adds an access rule to the controlled class ConfigVersion that allows the freezeAction for the ProjectMember role. Fred, still without the ProjectMember role in his effective context, again enters the command to freezes his current configuration version. ObjectTeam checks his access rights as follows:</B.BODY
  35087. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00311.unk" origfile="pics/accrule4.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  35088. ></FA.FIGURE.ANCHOR
  35089. ></LABEL
  35090. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35091. >Example 2</L.LABEL
  35092. ><B.BODY>Suppose for a controlled class <CX5FX5FPROCEDURE.NAME>Cl</CX5FX5FPROCEDURE.NAME
  35093. > and for objects <CX5FX5FPROCEDURE.NAME>Obj1</CX5FX5FPROCEDURE.NAME
  35094. > and <CX5FX5FPROCEDURE.NAME>Obj2</CX5FX5FPROCEDURE.NAME
  35095. >, both of class Cl, the following role rights are defined:</B.BODY
  35096. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="63p"><COLSPEC COLNAME="2" COLWIDTH="117p"><COLSPEC COLNAME="3" COLWIDTH="126p"><COLSPEC COLNAME="4" COLWIDTH="144p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  35097. ></ENTRY
  35098. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Role</CELLHEADING
  35099. ></ENTRY
  35100. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Allowed Actions</CELLHEADING
  35101. ></ENTRY
  35102. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Prohibited Actions</CELLHEADING
  35103. ></ENTRY
  35104. ></RBW-ROW
  35105. ></THEAD
  35106. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cl</CELLBODY
  35107. ></ENTRY
  35108. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ProjectMember</CELLBODY
  35109. ></ENTRY
  35110. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>create, freeze</CELLBODY
  35111. ></ENTRY
  35112. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY> &truehy;</CELLBODY
  35113. ></ENTRY
  35114. ></RBW-ROW
  35115. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cl</CELLBODY
  35116. ></ENTRY
  35117. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Guest</CELLBODY
  35118. ></ENTRY
  35119. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY> &truehy;</CELLBODY
  35120. ></ENTRY
  35121. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>modify</CELLBODY
  35122. ></ENTRY
  35123. ></RBW-ROW
  35124. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Obj1</CELLBODY
  35125. ></ENTRY
  35126. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Jill</CELLBODY
  35127. ></ENTRY
  35128. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>control</CELLBODY
  35129. ></ENTRY
  35130. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  35131. ></ENTRY
  35132. ></RBW-ROW
  35133. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Obj2</CELLBODY
  35134. ></ENTRY
  35135. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Jill</CELLBODY
  35136. ></ENTRY
  35137. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>control</CELLBODY
  35138. ></ENTRY
  35139. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  35140. ></ENTRY
  35141. ></RBW-ROW
  35142. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Obj2</CELLBODY
  35143. ></ENTRY
  35144. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Guest</CELLBODY
  35145. ></ENTRY
  35146. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  35147. ></ENTRY
  35148. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>read</CELLBODY
  35149. ></ENTRY
  35150. ></RBW-ROW
  35151. ></TBODY
  35152. ></TGROUP
  35153. ></RBW-TABLE
  35154. ><B.BODY>Because user Joe is not a registered user in the repository he has only the role Guest in his effective context. Users Jill and Jim are both registered users. Jill has the roles Jill and ProjectMember in her effective context. Jim has the roles Jim and Analyst in his effective context.</B.BODY
  35155. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35156. ></RBW-AUTOGEN
  35157. ></RBW-MARKER
  35158. ><RBW-PARABODY>Any user (including Joe) can read Obj1, because no role right allows or denies that action on Cl or Obj1. </RBW-PARABODY
  35159. ></LB.LIST.BULLET
  35160. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35161. ></RBW-AUTOGEN
  35162. ></RBW-MARKER
  35163. ><RBW-PARABODY>Joe cannot read Obj2, because a role right prohibits the action for role Guest, which is in Joe’s effective context. Jill and Jim can read Obj2 because they do not have Guest in their effective contexts, and no role right allows read access for any role.</RBW-PARABODY
  35164. ></LB.LIST.BULLET
  35165. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35166. ></RBW-AUTOGEN
  35167. ></RBW-MARKER
  35168. ><RBW-PARABODY>Joe cannot modify any object of class Cl, because the role right prohibits the action for the role Guest.</RBW-PARABODY
  35169. ></LB.LIST.BULLET
  35170. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35171. ></RBW-AUTOGEN
  35172. ></RBW-MARKER
  35173. ><RBW-PARABODY>Only Jill can modify the access rules on Obj1 and Obj2, because the role rights on the objects allow the action for the role Jill, and she is the only with that role in her effective context. </RBW-PARABODY
  35174. ></LB.LIST.BULLET
  35175. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35176. ></RBW-AUTOGEN
  35177. ></RBW-MARKER
  35178. ><RBW-PARABODY>Only Jill can freeze Obj1 and Obj2, because the role rights on class Cl explictly allow the action for the role ProjectMember, and she is the only user with that role in her effective context.</RBW-PARABODY
  35179. ></LB.LIST.BULLET
  35180. ></LABEL
  35181. ></SECTION
  35182. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="33041"></RBW-ANCHOR
  35183. >How to Set up Access Control Automatically</S.SECTION.HEAD
  35184. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35185. >Introduction</L.LABEL
  35186. ><B.BODY>If you know who the users of a project are, what roles they should be able to play, and which access these Roles need to have, you can use ObjectTeam’s automatic access control mechanism.</B.BODY
  35187. ></LABEL
  35188. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35189. >Automatic Access Control mechanism</L.LABEL
  35190. ><B.BODY>You can use the automatic access control mechanism to:</B.BODY
  35191. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35192. ></RBW-AUTOGEN
  35193. ></RBW-MARKER
  35194. ><RBW-PARABODY>Create users</RBW-PARABODY
  35195. ></LB.LIST.BULLET
  35196. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35197. ></RBW-AUTOGEN
  35198. ></RBW-MARKER
  35199. ><RBW-PARABODY>Create roles</RBW-PARABODY
  35200. ></LB.LIST.BULLET
  35201. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35202. ></RBW-AUTOGEN
  35203. ></RBW-MARKER
  35204. ><RBW-PARABODY>Create user role links</RBW-PARABODY
  35205. ></LB.LIST.BULLET
  35206. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35207. ></RBW-AUTOGEN
  35208. ></RBW-MARKER
  35209. ><RBW-PARABODY>Update user role links</RBW-PARABODY
  35210. ></LB.LIST.BULLET
  35211. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35212. ></RBW-AUTOGEN
  35213. ></RBW-MARKER
  35214. ><RBW-PARABODY>Update users’ effective context</RBW-PARABODY
  35215. ></LB.LIST.BULLET
  35216. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35217. ></RBW-AUTOGEN
  35218. ></RBW-MARKER
  35219. ><RBW-PARABODY>Set the access rights for each role for one or more phase versions.</RBW-PARABODY
  35220. ></LB.LIST.BULLET
  35221. ><B.BODY>The automatic Access Control mechanism consist of the following customization files:</B.BODY
  35222. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="142p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Customization File</CELLHEADING
  35223. ></ENTRY
  35224. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  35225. ></ENTRY
  35226. ></RBW-ROW
  35227. ></THEAD
  35228. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>roles.roles</CELLBODY
  35229. ></ENTRY
  35230. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Defines which roles are allowed to execute which actions</CELLBODY
  35231. ></ENTRY
  35232. ></RBW-ROW
  35233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>userroles.userroles</CELLBODY
  35234. ></ENTRY
  35235. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Defines which roles users play, or are allowed to play</CELLBODY
  35236. ></ENTRY
  35237. ></RBW-ROW
  35238. ></TBODY
  35239. ></TGROUP
  35240. ></RBW-TABLE
  35241. ><B.BODY>These customization files are further discussed in this section.</B.BODY
  35242. ></LABEL
  35243. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35244. ><RBW-ANCHOR ID="12475"></RBW-ANCHOR
  35245. >The customization file roles.roles</L.LABEL
  35246. ><B.BODY>Use the customization file <CX5FX5FFILE.NAME>roles.roles</CX5FX5FFILE.NAME
  35247. > to specify which access rights you want to set for which roles in which phase.</B.BODY
  35248. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35249. >Default</SL.SUBLABEL
  35250. ><B.BODY>The default customization file <CX5FX5FFILE.NAME>roles.roles</CX5FX5FFILE.NAME
  35251. > on the corporate level contains an example specification of access rights for the Roles ProjectManager, Analyst, Designer, Programmer, Tester, and QA&truehy;Officer.</B.BODY
  35252. ><EWM.EXAMPLEW.MONO>                        ...</EWM.EXAMPLEW.MONO
  35253. ><EWM.EXAMPLEW.MONO>                        # Role Name        | Phase Name     | Access Rights</EWM.EXAMPLEW.MONO
  35254. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  35255. ><EWM.EXAMPLEW.MONO>                        ProjectManager     | *              | M C R U D</EWM.EXAMPLEW.MONO
  35256. ><EWM.EXAMPLEW.MONO>                        Analyst            | *              | R</EWM.EXAMPLEW.MONO
  35257. ><EWM.EXAMPLEW.MONO>                        Analyst            | Analysis       | C R U D</EWM.EXAMPLEW.MONO
  35258. ><EWM.EXAMPLEW.MONO>                        Designer           | *              | R</EWM.EXAMPLEW.MONO
  35259. ><EWM.EXAMPLEW.MONO>                        Designer           | *Design        | C R U D</EWM.EXAMPLEW.MONO
  35260. ><EWM.EXAMPLEW.MONO>                        Programmer         | *              | R</EWM.EXAMPLEW.MONO
  35261. ><EWM.EXAMPLEW.MONO>                        Programmer         | Implementation | C R U D</EWM.EXAMPLEW.MONO
  35262. ><EWM.EXAMPLEW.MONO>                        Tester             | ObjectDesign   | R</EWM.EXAMPLEW.MONO
  35263. ><EWM.EXAMPLEW.MONO>                        Tester             | Implementation | R</EWM.EXAMPLEW.MONO
  35264. ><EWM.EXAMPLEW.MONO>                        QA&truehy;Officer         | *              | R</EWM.EXAMPLEW.MONO
  35265. ><B.BODY>The columns in this file indicate the following:</B.BODY
  35266. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35267. >Role Name</SL.SUBLABEL
  35268. ><B.BODY>The role for which you specify the access rights. If the specified role does not yet exist in the repository, it will be created.</B.BODY
  35269. ><B.BODY>See <RBW-XREF REFID="18086" TYPE="XREF-TEXTCOPY">Roles</RBW-XREF
  35270. > for details on Roles.</B.BODY
  35271. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35272. >Phase Name</SL.SUBLABEL
  35273. ><B.BODY>The phase for which you specify the role’s access rights. You can use the special characters for Tcl glob style pattern matching in the phase names, such as asterisks (*). Use just one asterisk to specify the role’s access rights for all phases.</B.BODY
  35274. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35275. >Access Rights</SL.SUBLABEL
  35276. ><B.BODY>This field contains a subset of the values M, C, R, U and D. With these values you can set certain controlled actions to Allowed or Prohibited for the role in the specified phase:</B.BODY
  35277. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35278. ></RBW-AUTOGEN
  35279. ></RBW-MARKER
  35280. ><RBW-PARABODY>Controlled Actions are set to Prohibited explicitly if the corresponding letter is included in the Access Rights field. </RBW-PARABODY
  35281. ></LB.LIST.BULLET
  35282. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35283. ></RBW-AUTOGEN
  35284. ></RBW-MARKER
  35285. ><RBW-PARABODY>Controlled Actions are set to Prohibited implicitly if the corresponding letter is not included in this field.</RBW-PARABODY
  35286. ></LB.LIST.BULLET
  35287. ><B.BODY>The values M, C, U, R and D stand for the following:</B.BODY
  35288. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="51p"><COLSPEC COLNAME="2" COLWIDTH="102p"><COLSPEC COLNAME="3" COLWIDTH="294p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Letter</CELLHEADING
  35289. ></ENTRY
  35290. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Stands For</CELLHEADING
  35291. ></ENTRY
  35292. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Controlled Action</CELLHEADING
  35293. ></ENTRY
  35294. ></RBW-ROW
  35295. ></THEAD
  35296. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M</CELLBODY
  35297. ></ENTRY
  35298. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Manage</CELLBODY
  35299. ></ENTRY
  35300. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>controlAction</CELLBODY
  35301. ></ENTRY
  35302. ></RBW-ROW
  35303. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>C</CELLBODY
  35304. ></ENTRY
  35305. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create</CELLBODY
  35306. ></ENTRY
  35307. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>createAction</CELLBODY
  35308. ><CELLBODY>insertAction</CELLBODY
  35309. ></ENTRY
  35310. ></RBW-ROW
  35311. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>R</CELLBODY
  35312. ></ENTRY
  35313. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Read</CELLBODY
  35314. ></ENTRY
  35315. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>readAction</CELLBODY
  35316. ></ENTRY
  35317. ></RBW-ROW
  35318. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>U</CELLBODY
  35319. ></ENTRY
  35320. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Update</CELLBODY
  35321. ></ENTRY
  35322. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>modifyAction</CELLBODY
  35323. ><CELLBODY>modifyStatusAction</CELLBODY
  35324. ><CELLBODY>freezeAction</CELLBODY
  35325. ><CELLBODY>unfreezeAction</CELLBODY
  35326. ></ENTRY
  35327. ></RBW-ROW
  35328. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>D</CELLBODY
  35329. ></ENTRY
  35330. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delete</CELLBODY
  35331. ></ENTRY
  35332. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>removeAction</CELLBODY
  35333. ><CELLBODY>destroyAction</CELLBODY
  35334. ></ENTRY
  35335. ></RBW-ROW
  35336. ></TBODY
  35337. ></TGROUP
  35338. ></RBW-TABLE
  35339. ><B.BODY>The default <CX5FX5FFILE.NAME>roles.roles</CX5FX5FFILE.NAME
  35340. > file (see, for example, the roles Analyst, Designer and Programmer) shows that certain controlled actions can be set implicitly to Prohibited for all phases and set explicitly to Allowed for one or more specific phases. </B.BODY
  35341. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  35342. ></RBW-AUTOGEN
  35343. >The access rights specified will be set on the following objects:</N.NOTE
  35344. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35345. ></RBW-AUTOGEN
  35346. ></RBW-MARKER
  35347. ><RBW-PARABODY>PhaseVersion</RBW-PARABODY
  35348. ></LB.LIST.BULLET
  35349. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35350. ></RBW-AUTOGEN
  35351. ></RBW-MARKER
  35352. ><RBW-PARABODY>PhaseVersionList</RBW-PARABODY
  35353. ></LB.LIST.BULLET
  35354. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35355. ></RBW-AUTOGEN
  35356. ></RBW-MARKER
  35357. ><RBW-PARABODY>PhaseSystemLinkList</RBW-PARABODY
  35358. ></LB.LIST.BULLET
  35359. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35360. ></RBW-AUTOGEN
  35361. ></RBW-MARKER
  35362. ><RBW-PARABODY>SystemList</RBW-PARABODY
  35363. ></LB.LIST.BULLET
  35364. ><B.BODY>See <RBW-XREF REFID="19555" TYPE="XREF-TEXTCOPY">Role Rights, Access Rules, and Access Rights</RBW-XREF
  35365. > for details on Access Rights.</B.BODY
  35366. ></LABEL
  35367. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35368. ><RBW-ANCHOR ID="12701"></RBW-ANCHOR
  35369. >The customization file userroles</L.LABEL
  35370. ><B.BODY>Use the customization file <CX5FX5FFILE.NAME>userroles.userroles</CX5FX5FFILE.NAME
  35371. > to specify which users you want to (be able to) play which roles. Effectively, you specify the UserRoleLinks for the roles in your project.</B.BODY
  35372. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35373. >Default</SL.SUBLABEL
  35374. ><B.BODY>The default customization file <CX5FX5FFILE.NAME>userroles.userroles</CX5FX5FFILE.NAME
  35375. > on the corporate level contains an example specification of UserRoleLinks for the Roles ProjectManager, Analyst, Designer, Programmer, Tester, and QA&truehy;Officer. However, no users are defined:</B.BODY
  35376. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  35377. ><EM.EXAMPLE.MONO># Role Name&rbwtab;&rbwtab;&rbwtab;| Users</EM.EXAMPLE.MONO
  35378. ><EM.EXAMPLE.MONO>ProjectManager&rbwtab;&rbwtab;&rbwtab;|</EM.EXAMPLE.MONO
  35379. ><EM.EXAMPLE.MONO>Analyst&rbwtab;&rbwtab;&rbwtab;|</EM.EXAMPLE.MONO
  35380. ><EM.EXAMPLE.MONO>Designer&rbwtab;&rbwtab;&rbwtab;|</EM.EXAMPLE.MONO
  35381. ><EM.EXAMPLE.MONO>Programmer&rbwtab;&rbwtab;&rbwtab;|</EM.EXAMPLE.MONO
  35382. ><EM.EXAMPLE.MONO>Tester&rbwtab;&rbwtab;&rbwtab;|</EM.EXAMPLE.MONO
  35383. ><EM.EXAMPLE.MONO>QA&truehy;Officer&rbwtab;&rbwtab;&rbwtab;|</EM.EXAMPLE.MONO
  35384. ><B.BODY>The columns in this file indicate the following:</B.BODY
  35385. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35386. >Role Name</SL.SUBLABEL
  35387. ><B.BODY>The role for which you specify the UserRoleLink. If the specified role does not yet exist in the repository, it will be created.</B.BODY
  35388. ><B.BODY>See <RBW-XREF REFID="18086" TYPE="XREF-TEXTCOPY">Roles</RBW-XREF
  35389. >for details.</B.BODY
  35390. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35391. >Users</SL.SUBLABEL
  35392. ><B.BODY>Here is where you specify:</B.BODY
  35393. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="331p"><COLSPEC COLNAME="2" COLWIDTH="115p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specification</CELLHEADING
  35394. ></ENTRY
  35395. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>How to Indicate</CELLHEADING
  35396. ></ENTRY
  35397. ></RBW-ROW
  35398. ></THEAD
  35399. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>The users for whom the role will be activated</CELLBODY
  35400. ></ENTRY
  35401. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>userName</CX5FX5FVARIABLE
  35402. >:Y</CELLBODY
  35403. ></ENTRY
  35404. ></RBW-ROW
  35405. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>The users allowed to activate the role, but for whom the role will not be activated initially</CELLBODY
  35406. ></ENTRY
  35407. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>userName</CX5FX5FVARIABLE
  35408. >:N</CELLBODY
  35409. ></ENTRY
  35410. ></RBW-ROW
  35411. ></TBODY
  35412. ></TGROUP
  35413. ></RBW-TABLE
  35414. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  35415. ></RBW-AUTOGEN
  35416. >Users whose names do not appear in the Users box are not allowed to activate the corresponding Role.</N.NOTE
  35417. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35418. >Example</SL.SUBLABEL
  35419. ><B.BODY>The following example distributes the Roles ProjectManager, Analyst, Designer, Programmer, Tester and QA&truehy;Officer over the users joe, john, mary, paula, jim and bob.</B.BODY
  35420. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  35421. ><EM.EXAMPLE.MONO># Role Name&rbwtab;&rbwtab;&rbwtab;| Users</EM.EXAMPLE.MONO
  35422. ><EM.EXAMPLE.MONO>ProjectManager&rbwtab;&rbwtab;&rbwtab;| joe:Y </EM.EXAMPLE.MONO
  35423. ><EM.EXAMPLE.MONO>Analyst&rbwtab;&rbwtab;&rbwtab;| john:Y joe:Y mary:N</EM.EXAMPLE.MONO
  35424. ><EM.EXAMPLE.MONO>Designer&rbwtab;&rbwtab;&rbwtab;| mary:Y joe:Y john:N</EM.EXAMPLE.MONO
  35425. ><EM.EXAMPLE.MONO>Programmer&rbwtab;&rbwtab;&rbwtab;| paula:Y joe:Y</EM.EXAMPLE.MONO
  35426. ><EM.EXAMPLE.MONO>Tester&rbwtab;&rbwtab;&rbwtab;| jim:Y joe:Y paula:N</EM.EXAMPLE.MONO
  35427. ><EM.EXAMPLE.MONO>QA&truehy;Officer&rbwtab;&rbwtab;&rbwtab;| bob:Y</EM.EXAMPLE.MONO
  35428. ><B.BODY>Joe has all roles except QA&truehy;officer in his effective context. Bob has only one role, QA&truehy;Officer. John and Mary each have the two roles Analyst and Designer. Mary plays the Designer role and will be able to play the Analyst role too. Paula has two roles, Programmer and Tester. Jim has only one role, Tester.</B.BODY
  35429. ><B.BODY>See <RBW-XREF REFID="12942" TYPE="XREF-TEXTCOPY">Users</RBW-XREF
  35430. > for details on Users.</B.BODY
  35431. ></LABEL
  35432. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35433. >How to set up access control</L.LABEL
  35434. ><B.BODY>The customization files <CX5FX5FFILE.NAME>roles.roles</CX5FX5FFILE.NAME
  35435. > and <CX5FX5FFILE.NAME>userroles.userrroles</CX5FX5FFILE.NAME
  35436. > allow you to set up access control for a particular configuration version within a project.</B.BODY
  35437. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  35438. ></RBW-AUTOGEN
  35439. ></RBW-MARKER
  35440. ><RBW-PARABODY>To set up this access control mechanism automatically:</RBW-PARABODY
  35441. ></P.PROCEDURE
  35442. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  35443. ></RBW-AUTOGEN
  35444. ></RBW-MARKER
  35445. ><RBW-PARABODY>Verify that the module Security is active.</RBW-PARABODY
  35446. ></LN.LIST.NUM
  35447. ><LT.LIST.TEXT>See the <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  35448. ><CX5FX5FTITLE></CX5FX5FTITLE
  35449. > for details on ObjectTeam modules.</LT.LIST.TEXT
  35450. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  35451. ></RBW-AUTOGEN
  35452. ></RBW-MARKER
  35453. ><RBW-PARABODY>Verify that SuperUser is one of your effective roles.</RBW-PARABODY
  35454. ></LN.LIST.NUM
  35455. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  35456. ></RBW-AUTOGEN
  35457. >Use Security | Show Effective Roles to see your effective roles. Use Security | Activate Role to make the SuperUser role part of your set of effective roles, you are allowed to do so.</T2.TIP.2
  35458. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  35459. ></RBW-AUTOGEN
  35460. ></RBW-MARKER
  35461. ><RBW-PARABODY>Create a customization file <CX5FX5FFILE.NAME>roles.roles</CX5FX5FFILE.NAME
  35462. > and edit it.</RBW-PARABODY
  35463. ></LN.LIST.NUM
  35464. ><LT.LIST.TEXT>See the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  35465. ><CX5FX5FTITLE></CX5FX5FTITLE
  35466. > for details on how to create a customization file. <RBW-XREF REFID="12475" TYPE="XREF-TEXTCOPY">The customization file roles.roles</RBW-XREF
  35467. > has further details on the structure of the file <CX5FX5FFILE.NAME>roles.roles</CX5FX5FFILE.NAME
  35468. >.</LT.LIST.TEXT
  35469. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  35470. ></RBW-AUTOGEN
  35471. ></RBW-MARKER
  35472. ><RBW-PARABODY>Create a customization file <CX5FX5FFILE.NAME>userroles.userrroles</CX5FX5FFILE.NAME
  35473. > and edit it.</RBW-PARABODY
  35474. ></LN.LIST.NUM
  35475. ><LT.LIST.TEXT>See <RBW-XREF REFID="12701" TYPE="XREF-TEXTCOPY">The customization file userroles</RBW-XREF
  35476. > for details on the structure of this file,</LT.LIST.TEXT
  35477. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  35478. ></RBW-AUTOGEN
  35479. ></RBW-MARKER
  35480. ><RBW-PARABODY>Make sure that the PhaseVersions mentioned in the <CX5FX5FFILE.NAME>roles.roles</CX5FX5FFILE.NAME
  35481. > file exist in the configuration version for which you are setting up the access control.</RBW-PARABODY
  35482. ></LN.LIST.NUM
  35483. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  35484. ></RBW-AUTOGEN
  35485. ></RBW-MARKER
  35486. ><RBW-PARABODY>Make sure that these phase versions are empty.</RBW-PARABODY
  35487. ></LN.LIST.NUM
  35488. ><W2.WARNING.2><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  35489. ></RBW-AUTOGEN
  35490. >Automatic access control will not work for objects that already exist in these phase versions; it only works for empty objects.</W2.WARNING.2
  35491. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  35492. ></RBW-AUTOGEN
  35493. ></RBW-MARKER
  35494. ><RBW-PARABODY>In the ObjectTeam Browser, go to the project or the configuration level.</RBW-PARABODY
  35495. ></LN.LIST.NUM
  35496. ><LT.LIST.TEXT>On Project level, you first have to select the Configuration(s) for which you want to set up acces control automatically.</LT.LIST.TEXT
  35497. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  35498. ></RBW-AUTOGEN
  35499. ></RBW-MARKER
  35500. ><RBW-PARABODY>Select Security | Setup Access.</RBW-PARABODY
  35501. ></LN.LIST.NUM
  35502. ><LT.LIST.TEXT>An Execution Window starts up, showing the execution of all necessary commands.</LT.LIST.TEXT
  35503. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00312.unk" origfile="pics/autacc.gif" origtype="X" origdoc="../../sources/pmg/access.fm5.mif"></RBW-GRAPHIC
  35504. ></FA2.FIGURE.ANCHOR.2
  35505. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  35506. ></RBW-AUTOGEN
  35507. ></RBW-MARKER
  35508. ><RBW-PARABODY>Restart the ObjectTeam Browser.</RBW-PARABODY
  35509. ></LN.LIST.NUM
  35510. ><LR.LIST.RESULT>The access control rules as defined in the customization files roles.roles and userroles.userrroles are now in effect.</LR.LIST.RESULT
  35511. ><RBWAUTO-0001></RBWAUTO-0001
  35512. ><!--
  35513.  
  35514.  
  35515.  
  35516.  
  35517.  
  35518. CONVERTING SOURCE FILE ../../sources/pmg/var2oo.fm5.mif
  35519.  
  35520.  
  35521. --><B.BODY></B.BODY
  35522. ><B.BODY></B.BODY
  35523. ><B.BODY></B.BODY
  35524. ><B.BODY></B.BODY
  35525. ><B.BODY></B.BODY
  35526. ></LABEL
  35527. ></SECTION
  35528. ></CHAPTER
  35529. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  35530. ></RBW-AUTOGEN
  35531. >Importing from and Exporting to GroundWorks<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  35532. ><RBW-TEXTFLD TYPE="text">Modeling Guide</RBW-TEXTFLD
  35533. ></RBW-SYSOBJ
  35534. ></A.APPENDIX.HEAD
  35535. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35536. >Introduction</L.LABEL
  35537. ><B.BODY>This chapter describes:</B.BODY
  35538. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35539. ></RBW-AUTOGEN
  35540. ></RBW-MARKER
  35541. ><RBW-PARABODY>How to import a GroundWorks data model into ObjectTeam </RBW-PARABODY
  35542. ></LB.LIST.BULLET
  35543. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35544. ></RBW-AUTOGEN
  35545. ></RBW-MARKER
  35546. ><RBW-PARABODY>How to export an ObjectTeam persistent class model to GroundWorks</RBW-PARABODY
  35547. ></LB.LIST.BULLET
  35548. ></LABEL
  35549. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35550. >GroundWorks (VAR) interface module required</L.LABEL
  35551. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>GroundWorks (VAR) interface</CX5FX5FEMPHASIS
  35552. > provides the menu items and Tcl code required to import an export GroundWorks <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  35553. > files. Therefore, this module must be active on the Browser levels where it is going to be used.</B.BODY
  35554. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  35555. ></RBW-AUTOGEN
  35556. >You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</T.TIP
  35557. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35558. >For more information</SL.SUBLABEL
  35559. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  35560. ><CX5FX5FTITLE></CX5FX5FTITLE
  35561. > for details on how to activate a module.</B.BODY
  35562. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35563. >Required modules</SL.SUBLABEL
  35564. ><B.BODY>The module <CX5FX5FEMPHASIS>GroundWorks (VAR) interface</CX5FX5FEMPHASIS
  35565. > requires the module <CX5FX5FEMPHASIS>Persistent properties</CX5FX5FEMPHASIS
  35566. > and one module of type <CX5FX5FEMPHASIS>CodeGeneration</CX5FX5FEMPHASIS
  35567. >. You select a code generation module from a dialog box. Depending on the code generation module you select, new dialog boxes appear from which you are to select a module.</B.BODY
  35568. ><B.BODY>These are the modules required to run the tool for importing .var files and exporting ObjectTeam class models:</B.BODY
  35569. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00313.tif" origseq="26" origtype="I" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  35570. ></FA.FIGURE.ANCHOR
  35571. ><B.BODY>The names in this picture refer to the following modules:</B.BODY
  35572. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="234p"><COLSPEC COLNAME="3" COLWIDTH="106p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module name</CELLHEADING
  35573. ></ENTRY
  35574. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Long Name</CELLHEADING
  35575. ></ENTRY
  35576. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  35577. ></ENTRY
  35578. ></RBW-ROW
  35579. ></THEAD
  35580. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>varfile</CELLBODY
  35581. ></ENTRY
  35582. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>GroundWorks (VAR) interface</CELLBODY
  35583. ></ENTRY
  35584. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Integration</CELLBODY
  35585. ></ENTRY
  35586. ></RBW-ROW
  35587. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>persist&truehy;props</CELLBODY
  35588. ></ENTRY
  35589. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent properties</CELLBODY
  35590. ></ENTRY
  35591. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersistProps</CELLBODY
  35592. ></ENTRY
  35593. ></RBW-ROW
  35594. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cplusplus</CELLBODY
  35595. ></ENTRY
  35596. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C++ Code generation</CELLBODY
  35597. ></ENTRY
  35598. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CodeGeneration</CELLBODY
  35599. ></ENTRY
  35600. ></RBW-ROW
  35601. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cplusplus</CELLBODY
  35602. ></ENTRY
  35603. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent C++ Generation</CELLBODY
  35604. ></ENTRY
  35605. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CodeGeneration</CELLBODY
  35606. ></ENTRY
  35607. ></RBW-ROW
  35608. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;libcayn</CELLBODY
  35609. ></ENTRY
  35610. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne class library integration</CELLBODY
  35611. ></ENTRY
  35612. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppClasslib</CELLBODY
  35613. ></ENTRY
  35614. ></RBW-ROW
  35615. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;librw</CELLBODY
  35616. ></ENTRY
  35617. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Rogue Wave class library integration</CELLBODY
  35618. ></ENTRY
  35619. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppClasslib</CELLBODY
  35620. ></ENTRY
  35621. ></RBW-ROW
  35622. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;libstl</CELLBODY
  35623. ></ENTRY
  35624. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STL class library integration</CELLBODY
  35625. ></ENTRY
  35626. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppClasslib</CELLBODY
  35627. ></ENTRY
  35628. ></RBW-ROW
  35629. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;aix</CELLBODY
  35630. ></ENTRY
  35631. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>IBM C++ compiler integration</CELLBODY
  35632. ></ENTRY
  35633. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  35634. ></ENTRY
  35635. ></RBW-ROW
  35636. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;dec</CELLBODY
  35637. ></ENTRY
  35638. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Digital C++ compiler integration</CELLBODY
  35639. ></ENTRY
  35640. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  35641. ></ENTRY
  35642. ></RBW-ROW
  35643. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;hp</CELLBODY
  35644. ></ENTRY
  35645. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>HP C++ compiler integration</CELLBODY
  35646. ></ENTRY
  35647. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  35648. ></ENTRY
  35649. ></RBW-ROW
  35650. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;sun</CELLBODY
  35651. ></ENTRY
  35652. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sun C++ compiler integration</CELLBODY
  35653. ></ENTRY
  35654. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  35655. ></ENTRY
  35656. ></RBW-ROW
  35657. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;bc&truehy;45</CELLBODY
  35658. ></ENTRY
  35659. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Borland C++ 4.5 compiler integration</CELLBODY
  35660. ></ENTRY
  35661. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  35662. ></ENTRY
  35663. ></RBW-ROW
  35664. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;vc&truehy;40</CELLBODY
  35665. ></ENTRY
  35666. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Visual C++ compiler integration</CELLBODY
  35667. ></ENTRY
  35668. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  35669. ></ENTRY
  35670. ></RBW-ROW
  35671. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;libwmt</CELLBODY
  35672. ></ENTRY
  35673. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent Cayenne library </CELLBODY
  35674. ><CELLBODY>integration</CELLBODY
  35675. ></ENTRY
  35676. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersCppClasslib</CELLBODY
  35677. ></ENTRY
  35678. ></RBW-ROW
  35679. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;librw</CELLBODY
  35680. ></ENTRY
  35681. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent Rogue Wave integration</CELLBODY
  35682. ></ENTRY
  35683. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersCppClasslib</CELLBODY
  35684. ></ENTRY
  35685. ></RBW-ROW
  35686. ></TBODY
  35687. ></TGROUP
  35688. ></RBW-TABLE
  35689. ><B.BODY></B.BODY
  35690. ></LABEL
  35691. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32584"></RBW-ANCHOR
  35692. >Importing GroundWorks .var Files</S.SECTION.HEAD
  35693. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35694. >Introduction</L.LABEL
  35695. ><B.BODY>This section describes how to import Cayenne GroundWorks .var files into ObjectTeam.</B.BODY
  35696. ></LABEL
  35697. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35698. >Purpose</L.LABEL
  35699. ><B.BODY>Importing a GroundWorks data model into ObjectTeam allows you to use the Entity Relationship Diagrams (ERDs) created in GroundWorks as a starting point for the Class Diagrams (CDs) in ObjectTeam.</B.BODY
  35700. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  35701. ></RBW-AUTOGEN
  35702. >This tool is not designed to maintain synchronized versions of the GroundWorks and ObjectTeam models.</N.NOTE
  35703. ></LABEL
  35704. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35705. >What is converted</L.LABEL
  35706. ><B.BODY>This tool converts GroundWorks entities, entity type hierarchies, attributes, and relationships to ObjectTeam classes, class hierarchies, attributes, and associations. These are the primary objects used for modeling and code generation in ObjectTeam.</B.BODY
  35707. ></LABEL
  35708. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35709. >What is not converted</L.LABEL
  35710. ><B.BODY>The following GroundWorks objects are not converted: allowed value tables, business subject areas, free attributes, keywords, maps, notes, process models, process specification diagrams, and synonyms.</B.BODY
  35711. ></LABEL
  35712. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35713. >How it works</L.LABEL
  35714. ><B.BODY>ObjectTeam reads in a .var file and converts it into a combination of CD and CDM files. In the process:</B.BODY
  35715. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35716. ></RBW-AUTOGEN
  35717. ></RBW-MARKER
  35718. ><RBW-PARABODY>Entities and attributes are converted into classes and attributes</RBW-PARABODY
  35719. ></LB.LIST.BULLET
  35720. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35721. ></RBW-AUTOGEN
  35722. ></RBW-MARKER
  35723. ><RBW-PARABODY>Dimensions and domains are converted into attribute data types (either standard data types or classes representing user&truehy;defined data types).</RBW-PARABODY
  35724. ></LB.LIST.BULLET
  35725. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35726. ></RBW-AUTOGEN
  35727. ></RBW-MARKER
  35728. ><RBW-PARABODY>Relations are converted into associations.</RBW-PARABODY
  35729. ></LB.LIST.BULLET
  35730. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35731. ></RBW-AUTOGEN
  35732. ></RBW-MARKER
  35733. ><RBW-PARABODY>Entity hierarchies are converted to class hierarchies.</RBW-PARABODY
  35734. ></LB.LIST.BULLET
  35735. ></LABEL
  35736. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35737. >How to import <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  35738. > files</L.LABEL
  35739. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  35740. ></RBW-AUTOGEN
  35741. ></RBW-MARKER
  35742. ><RBW-PARABODY>To import a .var file:</RBW-PARABODY
  35743. ></P.PROCEDURE
  35744. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  35745. ></RBW-AUTOGEN
  35746. ></RBW-MARKER
  35747. ><RBW-PARABODY>In the Browser, open the system into which you want to import the .var file.</RBW-PARABODY
  35748. ></LN.LIST.NUM
  35749. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  35750. ></RBW-AUTOGEN
  35751. ></RBW-MARKER
  35752. ><RBW-PARABODY>Select Utilities | ObjectLoad.</RBW-PARABODY
  35753. ></LN.LIST.NUM
  35754. ><LR.LIST.RESULT>The Reverse Engineer VAR dialog box appears. The following illustrations show both the Windows and UNIX dialogs. In Windows, use the File Name and Files of Type fields to filter the list of files displayed. On UNIX systems,use the Filter Field and Filter button to filter the list of files displayed.</LR.LIST.RESULT
  35755. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00314.unk" origfile="pics/revarw.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  35756. ></FA2.FIGURE.ANCHOR.2
  35757. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00315.unk" origfile="pics/revaru.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  35758. ></FA2.FIGURE.ANCHOR.2
  35759. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  35760. ></RBW-AUTOGEN
  35761. ></RBW-MARKER
  35762. ><RBW-PARABODY>Select the .var file that you want to import, then select OK.</RBW-PARABODY
  35763. ></LN.LIST.NUM
  35764. ><LR.LIST.RESULT>The Import VAR dialog appears, as shown below.</LR.LIST.RESULT
  35765. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  35766. ></RBW-AUTOGEN
  35767. ></RBW-MARKER
  35768. ><RBW-PARABODY>Select the options that you want to use, as described in <RBW-XREF REFID="25166" TYPE="XREF-TEXTCOPY">Import VAR options</RBW-XREF
  35769. >.</RBW-PARABODY
  35770. ></LN.LIST.NUM
  35771. ><LR.LIST.RESULT>ObjectTeam imports the .var file, displaying status messages in the Execution window.</LR.LIST.RESULT
  35772. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  35773. ></RBW-AUTOGEN
  35774. ></RBW-MARKER
  35775. ><RBW-PARABODY>Select View | Refresh.</RBW-PARABODY
  35776. ></LN.LIST.NUM
  35777. ><LR.LIST.RESULT>ObjectTeam updates the Information area of the Browser, displaying the newly generated files.</LR.LIST.RESULT
  35778. ></LABEL
  35779. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35780. ><RBW-ANCHOR ID="25166"></RBW-ANCHOR
  35781. >Import VAR options</L.LABEL
  35782. ><BI.BODY.INTRO>The following illustration shows the Import VAR dialog box:</BI.BODY.INTRO
  35783. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00316.unk" origfile="pics/revaropt.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  35784. ></FA.FIGURE.ANCHOR
  35785. ><B.BODY>The following table describes each option:</B.BODY
  35786. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  35787. ></ENTRY
  35788. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Descriptions</CELLHEADING
  35789. ></ENTRY
  35790. ></RBW-ROW
  35791. ></THEAD
  35792. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diagram</CELLBODY
  35793. ></ENTRY
  35794. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Prefix to be used in naming each generated CD.</CELLBODY
  35795. ></ENTRY
  35796. ></RBW-ROW
  35797. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate</CELLBODY
  35798. ></ENTRY
  35799. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether to generate CDs, CDMs, or both:</CELLBODY
  35800. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35801. ></RBW-AUTOGEN
  35802. ></RBW-MARKER
  35803. ><RBW-PARABODY>CDs and CDMs</RBW-PARABODY
  35804. ></CELLBULLET
  35805. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35806. ></RBW-AUTOGEN
  35807. ></RBW-MARKER
  35808. ><RBW-PARABODY>CDs only (only an inheritance structure is generated)</RBW-PARABODY
  35809. ></CELLBULLET
  35810. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35811. ></RBW-AUTOGEN
  35812. ></RBW-MARKER
  35813. ><RBW-PARABODY>CDMs only (only features are generated)</RBW-PARABODY
  35814. ></CELLBULLET
  35815. ></ENTRY
  35816. ></RBW-ROW
  35817. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overwrite Existing Diagrams</CELLBODY
  35818. ></ENTRY
  35819. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, existing CDs are replaced.</CELLBODY
  35820. ></ENTRY
  35821. ></RBW-ROW
  35822. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Reference Diagrams</CELLBODY
  35823. ></ENTRY
  35824. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, separate CDs are generated for classes that exceed the maximum size. </CELLBODY
  35825. ></ENTRY
  35826. ></RBW-ROW
  35827. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Class Width & Height</CELLBODY
  35828. ></ENTRY
  35829. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class. When a class exceeds this size, it is folded.</CELLBODY
  35830. ></ENTRY
  35831. ></RBW-ROW
  35832. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Tree Width & Height</CELLBODY
  35833. ></ENTRY
  35834. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class tree. When a class hierarchy exceeds this size, it is split.</CELLBODY
  35835. ></ENTRY
  35836. ></RBW-ROW
  35837. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Screen Width & Height</CELLBODY
  35838. ></ENTRY
  35839. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a diagram. When a diagram exceeds this size, a new diagram is created.</CELLBODY
  35840. ></ENTRY
  35841. ></RBW-ROW
  35842. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Placement Algorithm</CELLBODY
  35843. ></ENTRY
  35844. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the algorithm used to create the CDs that show the associations:</CELLBODY
  35845. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35846. ></RBW-AUTOGEN
  35847. ></RBW-MARKER
  35848. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Simple.</CX5FX5FBULLET.EMPHASIS
  35849. > Creates a CD for each class that has associations.</RBW-PARABODY
  35850. ></CELLBULLET
  35851. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35852. ></RBW-AUTOGEN
  35853. ></RBW-MARKER
  35854. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Grid.</CX5FX5FBULLET.EMPHASIS
  35855. > Creates a CD for each <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  35856. > classes, where <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  35857. > is the number specified in the Number of Classes per CD field.</RBW-PARABODY
  35858. ></CELLBULLET
  35859. ></ENTRY
  35860. ></RBW-ROW
  35861. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Number of Classes per CD</CELLBODY
  35862. ></ENTRY
  35863. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Placement Algorithm is Grid</CX5FX5FBULLET.EMPHASIS
  35864. >, specifies the number of unfolded classes per CD.</CELLBODY
  35865. ></ENTRY
  35866. ></RBW-ROW
  35867. ></TBODY
  35868. ></TGROUP
  35869. ></RBW-TABLE
  35870. ></LABEL
  35871. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35872. >In this section</L.LABEL
  35873. ><B.BODY>This section contains the following subsections:</B.BODY
  35874. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  35875. ></ENTRY
  35876. ></RBW-ROW
  35877. ></THEAD
  35878. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11577" TYPE="XREF-TEXTCOPY">Basic Conversion&rbwtab;A–8</RBW-XREF
  35879. ></SB.SECTION.BLOCK.TABLE
  35880. ></ENTRY
  35881. ></RBW-ROW
  35882. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36211" TYPE="XREF-TEXTCOPY">Relationships and Partnership Sets&rbwtab;A–11</RBW-XREF
  35883. ></SB.SECTION.BLOCK.TABLE
  35884. ></ENTRY
  35885. ></RBW-ROW
  35886. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13663" TYPE="XREF-TEXTCOPY">Component Attributes&rbwtab;A–15</RBW-XREF
  35887. ></SB.SECTION.BLOCK.TABLE
  35888. ></ENTRY
  35889. ></RBW-ROW
  35890. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32421" TYPE="XREF-TEXTCOPY">Subdomains&rbwtab;A–17</RBW-XREF
  35891. ></SB.SECTION.BLOCK.TABLE
  35892. ></ENTRY
  35893. ></RBW-ROW
  35894. ></TBODY
  35895. ></TGROUP
  35896. ></RBW-TABLE
  35897. ><B.BODY></B.BODY
  35898. ></LABEL
  35899. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="11577"></RBW-ANCHOR
  35900. >Basic Conversion</SS.SUBSEC.HEAD
  35901. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35902. >Introduction</L.LABEL
  35903. ><B.BODY>This section describes the conversion of GroundWorks entities and their attributes. The conversion of entity relationships is described in <RBW-XREF REFID="36211" TYPE="XREF-TEXTCOPY">Relationships and Partnership Sets</RBW-XREF
  35904. >.</B.BODY
  35905. ></LABEL
  35906. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35907. >Conversion of entities</L.LABEL
  35908. ><B.BODY>When you import a .var file, each entity is converted to a class.</B.BODY
  35909. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35910. ></RBW-AUTOGEN
  35911. ></RBW-MARKER
  35912. ><RBW-PARABODY>The entity’s description, if any, is copied to the Free Text property of the class.</RBW-PARABODY
  35913. ></LB.LIST.BULLET
  35914. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35915. ></RBW-AUTOGEN
  35916. ></RBW-MARKER
  35917. ><RBW-PARABODY>The class’s Persistent class property is set. This property is visible only in the Object Design phase and only if the target language for code generation (as defined by the active ObjectTeam code generation module) supports persistent code generation.</RBW-PARABODY
  35918. ></LB.LIST.BULLET
  35919. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35920. >Entity type hierarchy</SL.SUBLABEL
  35921. ><B.BODY>An entity type hierarchy is converted to a class hierarchy. All classes in the hierarchy are defined in a single CD named <CX5FX5FTERM>superentity</CX5FX5FTERM
  35922. >Tree.</B.BODY
  35923. ></LABEL
  35924. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35925. >Conversion of attributes</L.LABEL
  35926. ><BI.BODY.INTRO>When you import a .var file, each entity attribute is converted to an attribute in the generated class.</BI.BODY.INTRO
  35927. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35928. ></RBW-AUTOGEN
  35929. ></RBW-MARKER
  35930. ><RBW-PARABODY>The dimension/domain of the entity attribute is used to determine the data type of the generated attribute (see <RBW-XREF REFID="30182" TYPE="XREF-TEXTCOPY">Data type mappings</RBW-XREF
  35931. >). Subdomains are converted as described in <RBW-XREF REFID="32421" TYPE="XREF-TEXTCOPY">Subdomains</RBW-XREF
  35932. >.</RBW-PARABODY
  35933. ></LB.LIST.BULLET
  35934. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35935. ></RBW-AUTOGEN
  35936. ></RBW-MARKER
  35937. ><RBW-PARABODY>An entity attribute’s description is copied to the Free Text property of the generated attribute.</RBW-PARABODY
  35938. ></LB.LIST.BULLET
  35939. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35940. ></RBW-AUTOGEN
  35941. ></RBW-MARKER
  35942. ><RBW-PARABODY>If the entity attribute’s Nulls Allowed field is selected, the Nullable property of the class attribute is set to Default (indicating that Nulls are allowed); otherwise, the Nullable property of the generated attribute is set to No.</RBW-PARABODY
  35943. ></LB.LIST.BULLET
  35944. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35945. ></RBW-AUTOGEN
  35946. ></RBW-MARKER
  35947. ><RBW-PARABODY>If the entity attribute’s Source Type field is set to derived, the name of the generated attribute begins with a slash (/).</RBW-PARABODY
  35948. ></LB.LIST.BULLET
  35949. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35950. ></RBW-AUTOGEN
  35951. ></RBW-MARKER
  35952. ><RBW-PARABODY>Component attributes are converted as described in <RBW-XREF REFID="13663" TYPE="XREF-TEXTCOPY">Component Attributes</RBW-XREF
  35953. >.</RBW-PARABODY
  35954. ></LB.LIST.BULLET
  35955. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  35956. ></RBW-AUTOGEN
  35957. ></RBW-MARKER
  35958. ><RBW-PARABODY>Shared attributes are converted as top&truehy;level entity attributes, not as component attributes.</RBW-PARABODY
  35959. ></LB.LIST.BULLET
  35960. ></LABEL
  35961. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35962. >Conversion of methods</L.LABEL
  35963. ><B.BODY>GroundWorks methods are not imported into ObjectTeam. But if an entity has exactly one attribute or exactly one relationship, the generated class includes one method: a $create operation.</B.BODY
  35964. ><B.BODY>An ObjectTeam class that has exactly one attribute or relationship is a <CX5FX5FTERM>typedef class</CX5FX5FTERM
  35965. >; these classes are treated specially by ObjectTeam’s code generators. Adding the $create operation to the class ensures that the generated class is not a typedef class.</B.BODY
  35966. ></LABEL
  35967. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35968. >Example: entity conversion</L.LABEL
  35969. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35970. >Source ERD</SL.SUBLABEL
  35971. ><BI.BODY.INTRO></BI.BODY.INTRO
  35972. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00317.unk" origfile="pics/gwent.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  35973. ></FA.FIGURE.ANCHOR
  35974. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35975. >Generated CD</SL.SUBLABEL
  35976. ><BI.BODY.INTRO></BI.BODY.INTRO
  35977. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00318.unk" origfile="pics/otent.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  35978. ></FA.FIGURE.ANCHOR
  35979. ></LABEL
  35980. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35981. >Example: entity type hierarchy conversion</L.LABEL
  35982. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35983. >Source ERD</SL.SUBLABEL
  35984. ><B.BODY></B.BODY
  35985. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00319.unk" origfile="pics/gwhier.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  35986. ></FA.FIGURE.ANCHOR
  35987. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35988. >Generated CD</SL.SUBLABEL
  35989. ><BI.BODY.INTRO>The class hierarchy defines the attribute inheritance; attributes appear only in the class in which they are defined.</BI.BODY.INTRO
  35990. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00320.unk" origfile="pics/othier.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  35991. ></FA.FIGURE.ANCHOR
  35992. ></LABEL
  35993. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  35994. ><RBW-ANCHOR ID="30182"></RBW-ANCHOR
  35995. >Data type mappings</L.LABEL
  35996. ><B.BODY>The data type of a generated attribute is based on the data type of the GroundWorks domain, as shown in the following table.</B.BODY
  35997. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  35998. ></RBW-AUTOGEN
  35999. >For character fields, <CX5FX5FTERM>length</CX5FX5FTERM
  36000. > is the maximum length of the character field, as specified on the Domain form. If the maximum length is 1 (the default), <CX5FX5FTERM>length</CX5FX5FTERM
  36001. > is not included in the ObjectTeam data type.</N.NOTE
  36002. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>GroundWorks Data Type</CELLHEADING
  36003. ></ENTRY
  36004. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam Data Type</CELLHEADING
  36005. ></ENTRY
  36006. ></RBW-ROW
  36007. ></THEAD
  36008. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Alphabetic</CELLBODY
  36009. ></ENTRY
  36010. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>char [<CX5FX5FTERM>length</CX5FX5FTERM
  36011. >]</CELLBODY
  36012. ></ENTRY
  36013. ></RBW-ROW
  36014. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Alphanumeric</CELLBODY
  36015. ></ENTRY
  36016. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>char [<CX5FX5FTERM>length</CX5FX5FTERM
  36017. >]</CELLBODY
  36018. ></ENTRY
  36019. ></RBW-ROW
  36020. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Audio</CELLBODY
  36021. ></ENTRY
  36022. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>audio</CELLBODY
  36023. ></ENTRY
  36024. ></RBW-ROW
  36025. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Boolean</CELLBODY
  36026. ></ENTRY
  36027. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>flag</CELLBODY
  36028. ></ENTRY
  36029. ></RBW-ROW
  36030. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Doublebyte</CELLBODY
  36031. ></ENTRY
  36032. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>double_byte_char [<CX5FX5FTERM>length</CX5FX5FTERM
  36033. >]</CELLBODY
  36034. ></ENTRY
  36035. ></RBW-ROW
  36036. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Image</CELLBODY
  36037. ></ENTRY
  36038. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>image</CELLBODY
  36039. ></ENTRY
  36040. ></RBW-ROW
  36041. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Integer</CELLBODY
  36042. ></ENTRY
  36043. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>integer</CELLBODY
  36044. ></ENTRY
  36045. ></RBW-ROW
  36046. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Mixed</CELLBODY
  36047. ></ENTRY
  36048. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>char [<CX5FX5FTERM>length</CX5FX5FTERM
  36049. >]</CELLBODY
  36050. ></ENTRY
  36051. ></RBW-ROW
  36052. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>None</CELLBODY
  36053. ></ENTRY
  36054. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>notype</CELLBODY
  36055. ></ENTRY
  36056. ></RBW-ROW
  36057. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Real</CELLBODY
  36058. ></ENTRY
  36059. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>real</CELLBODY
  36060. ></ENTRY
  36061. ></RBW-ROW
  36062. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Video</CELLBODY
  36063. ></ENTRY
  36064. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>video</CELLBODY
  36065. ></ENTRY
  36066. ></RBW-ROW
  36067. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>all others</CELLBODY
  36068. ></ENTRY
  36069. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>unknown</CELLBODY
  36070. ></ENTRY
  36071. ></RBW-ROW
  36072. ></TBODY
  36073. ></TGROUP
  36074. ></RBW-TABLE
  36075. ></LABEL
  36076. ></SUBSECTION
  36077. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36211"></RBW-ANCHOR
  36078. >Relationships and Partnership Sets</SS.SUBSEC.HEAD
  36079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36080. >Introduction</L.LABEL
  36081. ><B.BODY>This section describes the conversion of relationships and partnership sets.</B.BODY
  36082. ></LABEL
  36083. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36084. >Different notation</L.LABEL
  36085. ><B.BODY>GroundWorks and ObjectTeam use different notation for relationships.</B.BODY
  36086. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36087. ></RBW-AUTOGEN
  36088. ></RBW-MARKER
  36089. ><RBW-PARABODY>In GroundWorks models, you read the optionality of a relationship from the partnership set at the <CX5FX5FEMPHASIS>near end</CX5FX5FEMPHASIS
  36090. > of the relationship and the multiplicity of the relationship from the <CX5FX5FEMPHASIS>far end</CX5FX5FEMPHASIS
  36091. > of the relationship. </RBW-PARABODY
  36092. ></LB.LIST.BULLET
  36093. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36094. ></RBW-AUTOGEN
  36095. ></RBW-MARKER
  36096. ><RBW-PARABODY>In ObjectTeam models, you read both the optionality and the multiplicity of the relationship from the <CX5FX5FEMPHASIS>far end</CX5FX5FEMPHASIS
  36097. > of the relationship.</RBW-PARABODY
  36098. ></LB.LIST.BULLET
  36099. ><B.BODY>The following table summarizes these differences:</B.BODY
  36100. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="216p"><COLSPEC COLNAME="2" COLWIDTH="198p"><COLSPEC COLNAME="3" COLWIDTH="216p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Relationship</CELLHEADING
  36101. ></ENTRY
  36102. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>GroundWorks</CELLHEADING
  36103. ></ENTRY
  36104. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam</CELLHEADING
  36105. ></ENTRY
  36106. ></RBW-ROW
  36107. ></THEAD
  36108. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  36109. ></ENTRY
  36110. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC></CG.CELLBODY.GRAPHIC
  36111. ></ENTRY
  36112. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  36113. > The dashes indicate that the relationship from Account to Customer is not shown.</CG.CELLBODY.GRAPHIC
  36114. ></ENTRY
  36115. ></RBW-ROW
  36116. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customer must open exactly one Account (one&truehy;mandatory)</CELLBODY
  36117. ></ENTRY
  36118. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00321.unk" origfile="pics/gwonem.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36119. ></CG.CELLBODY.GRAPHIC
  36120. ></ENTRY
  36121. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00322.unk" origfile="pics/otonem.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36122. ></CG.CELLBODY.GRAPHIC
  36123. ></ENTRY
  36124. ></RBW-ROW
  36125. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customer may open zero or one Account (one&truehy;optional)</CELLBODY
  36126. ></ENTRY
  36127. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00323.unk" origfile="pics/gwoneo.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36128. ></CG.CELLBODY.GRAPHIC
  36129. ></ENTRY
  36130. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00324.unk" origfile="pics/otoneo.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36131. ></CG.CELLBODY.GRAPHIC
  36132. ></ENTRY
  36133. ></RBW-ROW
  36134. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customer must open one or more Account (many&truehy;mandatory)</CELLBODY
  36135. ></ENTRY
  36136. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00325.unk" origfile="pics/gwmanym.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36137. ></CG.CELLBODY.GRAPHIC
  36138. ></ENTRY
  36139. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00326.unk" origfile="pics/otmanym.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36140. ></CG.CELLBODY.GRAPHIC
  36141. ></ENTRY
  36142. ></RBW-ROW
  36143. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customer may open zero or more Account (many&truehy;optional)</CELLBODY
  36144. ></ENTRY
  36145. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00327.unk" origfile="pics/gwmanyo.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36146. ></CG.CELLBODY.GRAPHIC
  36147. ></ENTRY
  36148. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00328.unk" origfile="pics/otmanyo.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36149. ></CG.CELLBODY.GRAPHIC
  36150. ></ENTRY
  36151. ></RBW-ROW
  36152. ></TBODY
  36153. ></TGROUP
  36154. ><RBW-ICONIZE></RBW-TABLE
  36155. ></LABEL
  36156. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36157. >Conversion of simple relationships</L.LABEL
  36158. ><B.BODY>Each relationship between two entities is converted to the ObjectTeam notation. In ObjectTeam, the relationship appears in the CD of the <CX5FX5FEMPHASIS>source entity</CX5FX5FEMPHASIS
  36159. >.</B.BODY
  36160. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36161. ></RBW-AUTOGEN
  36162. >In GroundWorks, the <CX5FX5FEMPHASIS>source entity</CX5FX5FEMPHASIS
  36163. > is the first entity selected when the relationship is drawn. You cannot tell which entity is the source entity by looking at the data model.</N.NOTE
  36164. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36165. >Source ERD</SL.SUBLABEL
  36166. ><B.BODY></B.BODY
  36167. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00329.unk" origfile="pics/gwrel.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36168. ></FA.FIGURE.ANCHOR
  36169. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36170. >Generated CDs</SL.SUBLABEL
  36171. ><B.BODY></B.BODY
  36172. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00330.unk" origfile="pics/otrel.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36173. ></FA.FIGURE.ANCHOR
  36174. ></LABEL
  36175. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36176. >Conversion of IOR relationships</L.LABEL
  36177. ><B.BODY>IOR relationships are converted to multiple relationships. From the perspective of the entity that owns the IOR partnership set, all of the generated relationships are <CX5FX5FEMPHASIS>optional</CX5FX5FEMPHASIS
  36178. >.</B.BODY
  36179. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36180. ></RBW-AUTOGEN
  36181. >Typically, the entity that owns the IOR partnership set is the source entity for all the IOR relationships; therefore, all relationships generated for the IOR relationship typically appear in one CD.</N.NOTE
  36182. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36183. >Source ERD</SL.SUBLABEL
  36184. ><BI.BODY.INTRO></BI.BODY.INTRO
  36185. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00331.unk" origfile="pics/gwor.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36186. ></FA.FIGURE.ANCHOR
  36187. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36188. >Generated CDs</SL.SUBLABEL
  36189. ><B.BODY>Following is the CD created for the entor class; each folded class is defined in its own CD. </B.BODY
  36190. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00332.unk" origfile="pics/otor.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36191. ></FA.FIGURE.ANCHOR
  36192. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36193. ></RBW-AUTOGEN
  36194. >The rel partnership set on the entor entity becomes two rel roles associated with the entor class. To prevent naming conflicts, the roles are named rel and rel2.</N.NOTE
  36195. ></LABEL
  36196. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36197. >Conversion of XOR relationships</L.LABEL
  36198. ><B.BODY>ObjectTeam does not distinguish between IOR and XOR relationships when importing a .var file.</B.BODY
  36199. ></LABEL
  36200. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36201. >Conversion of AND relationships</L.LABEL
  36202. ><B.BODY>AND relationships are converted to multiple relationships. From the perspective of the entity that owns the AND partnership set, all the generated relationships are <CX5FX5FEMPHASIS>mandatory</CX5FX5FEMPHASIS
  36203. >.</B.BODY
  36204. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36205. ></RBW-AUTOGEN
  36206. >Typically, the entity that owns the AND partnership set is the source entity for all the AND relationships; in this case, all relationships generated for the AND relationship appear in one CD.</N.NOTE
  36207. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36208. >Source ERD</SL.SUBLABEL
  36209. ><BI.BODY.INTRO></BI.BODY.INTRO
  36210. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00333.unk" origfile="pics/gwand.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36211. ></FA.FIGURE.ANCHOR
  36212. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36213. >Generated CDs</SL.SUBLABEL
  36214. ><B.BODY>Following is the CD created for the entand class; each folded class is defined in its own CD.</B.BODY
  36215. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00334.unk" origfile="pics/otand.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36216. ></FA.FIGURE.ANCHOR
  36217. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36218. ></RBW-AUTOGEN
  36219. >The rel partnership set on the entand entity becomes two rel roles associated with the entand class. To prevent naming conflicts, the roles are named rel and rel2.</N.NOTE
  36220. ></LABEL
  36221. ></SUBSECTION
  36222. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13663"></RBW-ANCHOR
  36223. >Component Attributes</SS.SUBSEC.HEAD
  36224. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36225. >Introduction</L.LABEL
  36226. ><B.BODY>This section describes the conversion of owner attributes and their component attributes. The conversion of subdomains (see <RBW-XREF REFID="32421" TYPE="XREF-TEXTCOPY">Subdomains</RBW-XREF
  36227. >) is similar.</B.BODY
  36228. ></LABEL
  36229. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36230. >Conversion of component attributes</L.LABEL
  36231. ><B.BODY>When you import a .var file, each owner attribute is converted to a class named <CX5FX5FTERM>attrName</CX5FX5FTERM
  36232. >_Type. Component attributes are converted to attributes in the <CX5FX5FTERM>attrName</CX5FX5FTERM
  36233. >_Type class.</B.BODY
  36234. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36235. ></RBW-AUTOGEN
  36236. ></RBW-MARKER
  36237. ><RBW-PARABODY>A one&truehy;to&truehy;one relationship connects the <CX5FX5FTERM>attrName</CX5FX5FTERM
  36238. >_Type class with the class of its owner entity (or owner attribute).</RBW-PARABODY
  36239. ></LB.LIST.BULLET
  36240. ><LT.LIST.TEXT>Each owner entity (owner attribute) must have exactly one <CX5FX5FTERM>attrName</CX5FX5FTERM
  36241. >_Type; each <CX5FX5FTERM>attrName</CX5FX5FTERM
  36242. >_Type may have zero or one owner entities (owner attributes).</LT.LIST.TEXT
  36243. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36244. ></RBW-AUTOGEN
  36245. ></RBW-MARKER
  36246. ><RBW-PARABODY>Attribute details (dimension, domain, description, nulls allowed, and source type) are converted as described in <RBW-XREF REFID="11577" TYPE="XREF-TEXTCOPY">Basic Conversion</RBW-XREF
  36247. >.</RBW-PARABODY
  36248. ></LB.LIST.BULLET
  36249. ></LABEL
  36250. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36251. >Example</L.LABEL
  36252. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36253. >Source ERD</SL.SUBLABEL
  36254. ><BI.BODY.INTRO>The following ERD has been edited slightly; in GroundWorks, component attributes are not indented.</BI.BODY.INTRO
  36255. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00335.unk" origfile="pics/gwcomp.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36256. ></FA.FIGURE.ANCHOR
  36257. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36258. >Generated CD</SL.SUBLABEL
  36259. ><BI.BODY.INTRO></BI.BODY.INTRO
  36260. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00336.unk" origfile="pics/otcomp.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36261. ></FA.FIGURE.ANCHOR
  36262. ></LABEL
  36263. ></SUBSECTION
  36264. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32421"></RBW-ANCHOR
  36265. >Subdomains</SS.SUBSEC.HEAD
  36266. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36267. >Introduction</L.LABEL
  36268. ><B.BODY>This section describes the conversion of subdomains.</B.BODY
  36269. ></LABEL
  36270. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36271. >Conversion of subdomains</L.LABEL
  36272. ><B.BODY>When you import a .var file, each superdomain is converted to a class named <CX5FX5FTERM>domain</CX5FX5FTERM
  36273. >_type. Subdomains are converted to attributes in the <CX5FX5FTERM>domain</CX5FX5FTERM
  36274. >_type class.</B.BODY
  36275. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36276. ></RBW-AUTOGEN
  36277. ></RBW-MARKER
  36278. ><RBW-PARABODY>When an attribute associated with the superdomain is converted:</RBW-PARABODY
  36279. ></LB.LIST.BULLET
  36280. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  36281. ></RBW-MARKER
  36282. ><RBW-PARABODY>The data type of the generated attribute is the superdomain class.</RBW-PARABODY
  36283. ></LB2.LIST.BULLET.2
  36284. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  36285. ></RBW-MARKER
  36286. ><RBW-PARABODY>A one&truehy;to&truehy;one relationship connects the superdomain class with the class of the attribute’s owner entity (or owner attribute).</RBW-PARABODY
  36287. ></LB2.LIST.BULLET.2
  36288. ><LT2.LIST.TEXT.2>Each owner entity (owner attribute) must have exactly one superdomain class; each superdomain class may have zero or one owner entities (owner attributes).</LT2.LIST.TEXT.2
  36289. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36290. ></RBW-AUTOGEN
  36291. ></RBW-MARKER
  36292. ><RBW-PARABODY>Other attribute details (description, nulls allowed, and source type) are converted as described in <RBW-XREF REFID="11577" TYPE="XREF-TEXTCOPY">Basic Conversion</RBW-XREF
  36293. >.</RBW-PARABODY
  36294. ></LB.LIST.BULLET
  36295. ></LABEL
  36296. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36297. >Example</L.LABEL
  36298. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36299. >Source ERD</SL.SUBLABEL
  36300. ><B.BODY>The following illustration shows an entity with two attributes. The domain of the name attribute is the fullname domain, which has two subdomains: firstname and lastname.</B.BODY
  36301. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00337.unk" origfile="pics/gwsubdom.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36302. ></FA.FIGURE.ANCHOR
  36303. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36304. >Generated CD</SL.SUBLABEL
  36305. ><BI.BODY.INTRO></BI.BODY.INTRO
  36306. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00338.unk" origfile="pics/otsubdom.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36307. ></FA.FIGURE.ANCHOR
  36308. ><B.BODY></B.BODY
  36309. ></LABEL
  36310. ></SUBSECTION
  36311. ></SECTION
  36312. ><SECTION><S.SECTION.HEAD>Exporting GroundWorks .var Files</S.SECTION.HEAD
  36313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36314. >Introduction</L.LABEL
  36315. ><B.BODY>This chapter describes how to export an ObjectTeam (persistent) class model to a GroundWorks data model.</B.BODY
  36316. ></LABEL
  36317. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36318. >Purpose</L.LABEL
  36319. ><B.BODY>Exporting an ObjectTeam (persistent) class model allows you to use the Class Diagrams (CDs) and corresponding Class Definition Matrices (CDMs) created in ObjectTeam as a starting point for the Entity Relationship Diagrams (ERDs) in GroundWorks.</B.BODY
  36320. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36321. ></RBW-AUTOGEN
  36322. >This tool is not designed to maintain synchronized versions of the ObjectTeam and GroundWorks models.</N.NOTE
  36323. ></LABEL
  36324. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36325. >Persistent classes</L.LABEL
  36326. ><B.BODY>The module GroundWorks (VAR) Interface, that needs to be active in order to export GroundWorks <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36327. > files, requires another module, called Persistent Properties. The latter module allows you to specify a class in a CD as persistent, using the class property Persistent.</B.BODY
  36328. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36329. ></RBW-AUTOGEN
  36330. >You can only export persistent classes to a GroundWorks <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36331. > file.</N.NOTE
  36332. ></LABEL
  36333. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36334. >What is converted</L.LABEL
  36335. ><B.BODY>The following table outlines which ObjectTeam data is converted to which GroundWorks data:</B.BODY
  36336. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="286p"><COLSPEC COLNAME="2" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam</CELLHEADING
  36337. ></ENTRY
  36338. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>GroundWorks</CELLHEADING
  36339. ></ENTRY
  36340. ></RBW-ROW
  36341. ></THEAD
  36342. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>persistent class</CELLBODY
  36343. ></ENTRY
  36344. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>VAR entity</CELLBODY
  36345. ></ENTRY
  36346. ></RBW-ROW
  36347. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  36348. ></ENTRY
  36349. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>VAR attribute</CELLBODY
  36350. ></ENTRY
  36351. ></RBW-ROW
  36352. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>association between persistent classes</CELLBODY
  36353. ></ENTRY
  36354. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>VAR relationship</CELLBODY
  36355. ></ENTRY
  36356. ></RBW-ROW
  36357. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>peristent class property Free Text</CELLBODY
  36358. ></ENTRY
  36359. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>VAR ANLText object</CELLBODY
  36360. ></ENTRY
  36361. ></RBW-ROW
  36362. ></TBODY
  36363. ></TGROUP
  36364. ></RBW-TABLE
  36365. ></LABEL
  36366. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36367. >How is the data converted</L.LABEL
  36368. ><B.BODY>If SQL code is generated in ObjectTeam for persistent classes, ObjectTeam builds up an SQL model. This model is used to translate CD and CDM data to SQL tables, columns, and relationships. The same model is used to export persistent ObjectTeam classes to a GroundWorks <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36369. > file.</B.BODY
  36370. ><B.BODY>The following classes (and group of classes) from the SQL Model are used to generate <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36371. > files:</B.BODY
  36372. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36373. ></RBW-AUTOGEN
  36374. ></RBW-MARKER
  36375. ><RBW-PARABODY>SQLModel</RBW-PARABODY
  36376. ></LB.LIST.BULLET
  36377. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36378. ></RBW-AUTOGEN
  36379. ></RBW-MARKER
  36380. ><RBW-PARABODY>SQLTable</RBW-PARABODY
  36381. ></LB.LIST.BULLET
  36382. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36383. ></RBW-AUTOGEN
  36384. ></RBW-MARKER
  36385. ><RBW-PARABODY>SQL Column Classes</RBW-PARABODY
  36386. ></LB.LIST.BULLET
  36387. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36388. ></RBW-AUTOGEN
  36389. ></RBW-MARKER
  36390. ><RBW-PARABODY>SQL Relationship Classes</RBW-PARABODY
  36391. ></LB.LIST.BULLET
  36392. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36393. ></RBW-AUTOGEN
  36394. ></RBW-MARKER
  36395. ><RBW-PARABODY>SQL Link Classes</RBW-PARABODY
  36396. ></LB.LIST.BULLET
  36397. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36398. >For more information</SL.SUBLABEL
  36399. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  36400. ><CX5FX5FTITLE></CX5FX5FTITLE
  36401. > for details on classes of the SQL Model.</B.BODY
  36402. ></LABEL
  36403. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36404. >How to export <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36405. > files</L.LABEL
  36406. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  36407. ></RBW-AUTOGEN
  36408. ></RBW-MARKER
  36409. ><RBW-PARABODY>To export a <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36410. > file:</RBW-PARABODY
  36411. ></P.PROCEDURE
  36412. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  36413. ></RBW-AUTOGEN
  36414. ></RBW-MARKER
  36415. ><RBW-PARABODY>In the Browser, open the system you want to export to a <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36416. > file.</RBW-PARABODY
  36417. ></LN.LIST.NUM
  36418. ><LT.LIST.TEXT>Make sure this system contains persistent classes.</LT.LIST.TEXT
  36419. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  36420. ></RBW-AUTOGEN
  36421. ></RBW-MARKER
  36422. ><RBW-PARABODY>Select Utilities | ObjectDownLoad.</RBW-PARABODY
  36423. ></LN.LIST.NUM
  36424. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  36425. ></RBW-AUTOGEN
  36426. ></RBW-MARKER
  36427. ><RBW-PARABODY>Select the <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36428. > file that you want to export to, then select OK.</RBW-PARABODY
  36429. ></LN.LIST.NUM
  36430. ><LR.LIST.RESULT>ObjectTeam exports the current system to the selected .var file, displaying status messages in the Monitoring window.</LR.LIST.RESULT
  36431. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00339.unk" origfile="pics/objdload.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36432. ></FA2.FIGURE.ANCHOR.2
  36433. ><LR.LIST.RESULT>The .var file is now generated.</LR.LIST.RESULT
  36434. ></LABEL
  36435. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36436. >Example</L.LABEL
  36437. ><B.BODY>The following example diagram is a simple CD with two associated persistent classes. </B.BODY
  36438. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00340.unk" origfile="pics/objdlcd.gif" origtype="X" origdoc="../../sources/pmg/var2oo.fm5.mif"></RBW-GRAPHIC
  36439. ></FA.FIGURE.ANCHOR
  36440. ><B.BODY>Following are some of the significant parts of a <CX5FX5FFILE.NAME>.var</CX5FX5FFILE.NAME
  36441. > file created by ObjectDownLoad based on the example CD.</B.BODY
  36442. ><EM.EXAMPLE.MONO>Cayenne Grndwrk V6.1 865590839 0 “ObjectTeam&truehy;Model” ““ ““ </EM.EXAMPLE.MONO
  36443. ><EM.EXAMPLE.MONO>**ENTERPRISE_MODEL**</EM.EXAMPLE.MONO
  36444. ><EM.EXAMPLE.MONO>9,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,”b”,0,0</EM.EXAMPLE.MONO
  36445. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36446. ><EM.EXAMPLE.MONO>**DATA_MODEL** </EM.EXAMPLE.MONO
  36447. ><EM.EXAMPLE.MONO>10,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,”dm”,0,0,0,0,””,0,9,0,0,0,0,0,0,7,8,0,0,0,0,0,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36448. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36449. ><EM.EXAMPLE.MONO>**ENTITY**</EM.EXAMPLE.MONO
  36450. ><EM.EXAMPLE.MONO>11,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,”Author”,0,9999999,0,0,”Y”,”C”,”N”,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36451. ><EM.EXAMPLE.MONO>20,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,”Book”,0,9999999,0,0,”Y”,”C”,”N”,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36452. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36453. ><EM.EXAMPLE.MONO>**ENTITYATTRIBUTE**</EM.EXAMPLE.MONO
  36454. ><EM.EXAMPLE.MONO>11,14</EM.EXAMPLE.MONO
  36455. ><EM.EXAMPLE.MONO>11,18</EM.EXAMPLE.MONO
  36456. ><EM.EXAMPLE.MONO>20,22</EM.EXAMPLE.MONO
  36457. ><EM.EXAMPLE.MONO>20,26</EM.EXAMPLE.MONO
  36458. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36459. ><EM.EXAMPLE.MONO>**ENTITYDIAGRAM_OBJE** </EM.EXAMPLE.MONO
  36460. ><EM.EXAMPLE.MONO>11,12</EM.EXAMPLE.MONO
  36461. ><EM.EXAMPLE.MONO>20,21</EM.EXAMPLE.MONO
  36462. ><EM.EXAMPLE.MONO>**ENT_KEY**</EM.EXAMPLE.MONO
  36463. ><EM.EXAMPLE.MONO>16,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,11,”id”,0,”Y”,0,0,0,0</EM.EXAMPLE.MONO
  36464. ><EM.EXAMPLE.MONO>24,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,20,”id”,0,”Y”,0,0,0,0 </EM.EXAMPLE.MONO
  36465. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36466. ><EM.EXAMPLE.MONO>**PARTNERSHIP_SET** </EM.EXAMPLE.MONO
  36467. ><EM.EXAMPLE.MONO>28,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,20,”author”,1,1,1,”I”,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,”S”,0</EM.EXAMPLE.MONO
  36468. ><EM.EXAMPLE.MONO>29,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,11,”Book”,1,9999999,1,”I”,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,”S”,0</EM.EXAMPLE.MONO
  36469. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36470. ><EM.EXAMPLE.MONO>**PARTNERSHIP_SETDIA** </EM.EXAMPLE.MONO
  36471. ><EM.EXAMPLE.MONO>28,33</EM.EXAMPLE.MONO
  36472. ><EM.EXAMPLE.MONO>29,34</EM.EXAMPLE.MONO
  36473. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36474. ><EM.EXAMPLE.MONO>**PARTNERSHIP**  </EM.EXAMPLE.MONO
  36475. ><EM.EXAMPLE.MONO>30,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,28,29,1,1,1,1,1,9999999,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36476. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36477. ><EM.EXAMPLE.MONO>**DOMAINS** </EM.EXAMPLE.MONO
  36478. ><EM.EXAMPLE.MONO>13,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,0,1,0,”int”,0,”I”,”0.”,”0.”,0,0,0,0,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36479. ><EM.EXAMPLE.MONO>17,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,0,1,0,”char[20]”,0,”A”,”0.”,”0.”,0,0,0,0,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36480. ><EM.EXAMPLE.MONO>25,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,0,1,0,”char[20]”,0,”A”,”0.”,”0.”,0,0,0,0,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36481. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36482. ><EM.EXAMPLE.MONO>**ATTRIBUTE**</EM.EXAMPLE.MONO
  36483. ><EM.EXAMPLE.MONO>14,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,11,0,”id”,1,”Y”,””,”M”,”S”,0,13,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36484. ><EM.EXAMPLE.MONO>18,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,11,0,”name”,1,”Y”,””,”M”,”S”,0,17,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36485. ><EM.EXAMPLE.MONO>22,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,20,0,”id”,1,”Y”,””,”M”,”S”,0,13,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36486. ><EM.EXAMPLE.MONO>26,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,20,0,”name”,1,”Y”,””,”M”,”S”,0,25,0,0,0,0,0,0,0</EM.EXAMPLE.MONO
  36487. ><EM.EXAMPLE.MONO>**ATTRIBUTEENT_KEY**</EM.EXAMPLE.MONO
  36488. ><EM.EXAMPLE.MONO>14,16</EM.EXAMPLE.MONO
  36489. ><EM.EXAMPLE.MONO>22,24</EM.EXAMPLE.MONO
  36490. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36491. ><EM.EXAMPLE.MONO>**DIAGRAM_PROPERTIES** </EM.EXAMPLE.MONO
  36492. ><EM.EXAMPLE.MONO>7,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,0,0,1,1,1,1,0,0</EM.EXAMPLE.MONO
  36493. ><EM.EXAMPLE.MONO>8,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,0,0,1,1,1,1,0,0</EM.EXAMPLE.MONO
  36494. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36495. ><EM.EXAMPLE.MONO>**DIAGRAM_OBJECT_PRO** </EM.EXAMPLE.MONO
  36496. ><EM.EXAMPLE.MONO>12,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,8421376,0,0,”Arial”,48,400,0</EM.EXAMPLE.MONO
  36497. ><EM.EXAMPLE.MONO>15,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,8421376,0,0,”Arial”,48,400,0</EM.EXAMPLE.MONO
  36498. ><EM.EXAMPLE.MONO>19,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,8421376,0,0,”Arial”,48,400,0</EM.EXAMPLE.MONO
  36499. ><EM.EXAMPLE.MONO>21,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,8421376,0,0,”Arial”,48,400,0</EM.EXAMPLE.MONO
  36500. ><EM.EXAMPLE.MONO>23,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,8421376,0,0,”Arial”,48,400,0</EM.EXAMPLE.MONO
  36501. ><EM.EXAMPLE.MONO>27,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,””,1997&truehy;01&truehy;01&truehy;00.00.00.000000,0,8421376,0,0,”Arial”,48,400,0</EM.EXAMPLE.MONO
  36502. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  36503. ><B.BODY></B.BODY
  36504. ><RBWAUTO-0001></RBWAUTO-0001
  36505. ><!--
  36506.  
  36507.  
  36508.  
  36509.  
  36510.  
  36511. CONVERTING SOURCE FILE ../../sources/common/tab_codg.mif
  36512.  
  36513.  
  36514. --><B.BODY></B.BODY
  36515. ><B.BODY></B.BODY
  36516. ><B.BODY></B.BODY
  36517. ><B.BODY></B.BODY
  36518. ><B.BODY></B.BODY
  36519. ></LABEL
  36520. ></SECTION
  36521. ></APPENDIX
  36522. ></BOOK
  36523. ></PRODUCT
  36524. ><PRODUCT><PH.PRODUCT.HEAD>Code Generation Set</PH.PRODUCT.HEAD
  36525. ><!--
  36526.  
  36527.  
  36528.  
  36529.  
  36530.  
  36531. CONVERTING SOURCE FILE ../../sources/ada/adabk.mif
  36532.  
  36533.  
  36534. --><B.BODY></B.BODY
  36535. ><B.BODY></B.BODY
  36536. ><B.BODY></B.BODY
  36537. ><B.BODY></B.BODY
  36538. ><B.BODY></B.BODY
  36539. ><BOOK><BH.BOOK.HEAD>Ada Professional Developer's Toolkit</BH.BOOK.HEAD
  36540. ><!--
  36541.  
  36542.  
  36543.  
  36544.  
  36545.  
  36546. CONVERTING SOURCE FILE ../../sources/ada/adapref.fm5.mif
  36547.  
  36548.  
  36549. --><B.BODY></B.BODY
  36550. ><B.BODY></B.BODY
  36551. ><B.BODY></B.BODY
  36552. ><B.BODY></B.BODY
  36553. ><B.BODY></B.BODY
  36554. ><CHAPTERNONUM><CN.CHAPTER.NOX23>How to Use This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  36555. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  36556. ></RBW-SYSOBJ
  36557. ></CN.CHAPTER.NOX23
  36558. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36559. >About this manual</L.LABEL
  36560. ><B.BODY>ObjectTeam provides code generation tools that enable you to generate object&truehy;oriented code for a range of object&truehy;oriented programming languages. This guide focuses on Ada 83 and Ada 95 as target languages. </B.BODY
  36561. ><B.BODY>This manual explains the following things:</B.BODY
  36562. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36563. ></RBW-AUTOGEN
  36564. ></RBW-MARKER
  36565. ><RBW-PARABODY>Which steps to take to generate Ada 83 and Ada 95 code.</RBW-PARABODY
  36566. ></LB.LIST.BULLET
  36567. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36568. ></RBW-AUTOGEN
  36569. ></RBW-MARKER
  36570. ><RBW-PARABODY>How certain constructions in the Class Diagram (CD) are translated into Ada code.</RBW-PARABODY
  36571. ></LB.LIST.BULLET
  36572. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36573. ></RBW-AUTOGEN
  36574. ></RBW-MARKER
  36575. ><RBW-PARABODY>How you use reverse and round&truehy;trip engineering.</RBW-PARABODY
  36576. ></LB.LIST.BULLET
  36577. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36578. ></RBW-AUTOGEN
  36579. ></RBW-MARKER
  36580. ><RBW-PARABODY>How you can customize the default code generation process.</RBW-PARABODY
  36581. ></LB.LIST.BULLET
  36582. ></LABEL
  36583. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36584. >Prerequisites</L.LABEL
  36585. ><B.BODY>This book assumes a basic knowledge of ObjectTeam, including familiarity with the information provided in the <CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  36586. ><CX5FX5FTITLE></CX5FX5FTITLE
  36587. > and <CX5FX5FTITLE><CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  36588. ></CX5FX5FTITLE
  36589. >.</B.BODY
  36590. ><B.BODY>Furthermore, knowledge of Ada 83 or Ada 95 is necessary to understand the constructions generated from the Class Diagrams. You also need this knowledge to complete the generated code.</B.BODY
  36591. ><B.BODY>If you plan to customize the default code generation process, you should be familiar with Tcl and the object&truehy;oriented extensions to Tcl supplied with ObjectTeam. For details on Object Tcl, refer to the <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  36592. ><CX5FX5FTITLE></CX5FX5FTITLE
  36593. >.</B.BODY
  36594. ><B.BODY></B.BODY
  36595. ><RBWAUTO-0001></RBWAUTO-0001
  36596. ><!--
  36597.  
  36598.  
  36599.  
  36600.  
  36601.  
  36602. CONVERTING SOURCE FILE ../../sources/ada/adaintro.fm5.mif
  36603.  
  36604.  
  36605. --><B.BODY></B.BODY
  36606. ><B.BODY></B.BODY
  36607. ><B.BODY></B.BODY
  36608. ><B.BODY></B.BODY
  36609. ><B.BODY></B.BODY
  36610. ></LABEL
  36611. ></CHAPTERNONUM
  36612. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  36613. ></RBW-AUTOGEN
  36614. >Introduction<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  36615. ><RBW-TEXTFLD TYPE="text">ObjectTeam - Ada Professional Developers Toolkit</RBW-TEXTFLD
  36616. ></RBW-SYSOBJ
  36617. ></C.CHAPTER.HEAD
  36618. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36619. >Introduction</L.LABEL
  36620. ><B.BODY>This chapter introduces the concepts and procedures used by the ObjectTeam Ada Professional Developers Toolkit.</B.BODY
  36621. ><B.BODY>The chapter introduces the concepts of code generation, synchronized engineering, and reverse&truehy;engineering. Short examples are provided of each.</B.BODY
  36622. ><B.BODY>This manual assumes a moderate understanding of how to use ObjectTeam, the Unified Modeling Language (UML) notation, and the Ada 83 or Ada 95 programming languages.</B.BODY
  36623. ></LABEL
  36624. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36625. >In this chapter</L.LABEL
  36626. ><B.BODY>This chapter contains the following sections:</B.BODY
  36627. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  36628. ></ENTRY
  36629. ></RBW-ROW
  36630. ></THEAD
  36631. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33533" TYPE="XREF-TEXTCOPY">Introduction&rbwtab;1–2</RBW-XREF
  36632. ></SB.SECTION.BLOCK.TABLE
  36633. ></ENTRY
  36634. ></RBW-ROW
  36635. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32838" TYPE="XREF-TEXTCOPY">Code Generation&rbwtab;1–4</RBW-XREF
  36636. ></SB.SECTION.BLOCK.TABLE
  36637. ></ENTRY
  36638. ></RBW-ROW
  36639. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12971" TYPE="XREF-TEXTCOPY">Synchronized Engineering&rbwtab;1–6</RBW-XREF
  36640. ></SB.SECTION.BLOCK.TABLE
  36641. ></ENTRY
  36642. ></RBW-ROW
  36643. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38788" TYPE="XREF-TEXTCOPY">Reverse Engineering&rbwtab;1–8</RBW-XREF
  36644. ></SB.SECTION.BLOCK.TABLE
  36645. ></ENTRY
  36646. ></RBW-ROW
  36647. ></TBODY
  36648. ></TGROUP
  36649. ></RBW-TABLE
  36650. ><B.BODY></B.BODY
  36651. ></LABEL
  36652. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="33533"></RBW-ANCHOR
  36653. >Introduction</S.SECTION.HEAD
  36654. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36655. >What is the ObjectTeam Ada Professional Developers Toolkit?</L.LABEL
  36656. ><B.BODY>The ObjectTeam Ada Professional Developers Toolkit (<RBW-IDXTERM TERM1="APDT" TERM2="What is it?"></RBW-IDXTERM
  36657. >APDT) is a suite of tools providing ObjectTeam with code generation, synchronous engineering, and reverse&truehy;engineering capability for the Ada 83 and Ada 95 programming languages.</B.BODY
  36658. ></LABEL
  36659. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36660. >Terms</L.LABEL
  36661. ><B.BODY>Here is a short description of key concepts used throughout this manual:</B.BODY
  36662. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36663. ></RBW-AUTOGEN
  36664. ></RBW-MARKER
  36665. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="code generation" TERM2="defined"></RBW-IDXTERM
  36666. >Code Generation</CX5FX5FBULLET.EMPHASIS
  36667. > (or forward engineering) is generating source code from design models. Code re&truehy;generation, or the ability to generate code taking into account previously generated and modified code is a key part of “synchronized engineering”.</RBW-PARABODY
  36668. ></LB.LIST.BULLET
  36669. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36670. ></RBW-AUTOGEN
  36671. ></RBW-MARKER
  36672. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="code regeneration" TERM2="Defined"></RBW-IDXTERM
  36673. >Code Regeneration</CX5FX5FBULLET.EMPHASIS
  36674. > updates previously generated source based on design (UML) changes.</RBW-PARABODY
  36675. ></LB.LIST.BULLET
  36676. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36677. ></RBW-AUTOGEN
  36678. ></RBW-MARKER
  36679. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="Synchronized Engineering" TERM2="Defined"></RBW-IDXTERM
  36680. >Synchronized Engineering</CX5FX5FBULLET.EMPHASIS
  36681. > is the process of step&truehy;wise refinement of both design (UML) and source code, with both kept in synch with the other. In practice, this requires that changes to the code automatically be represented in the design, and that changes to the design incorporate previously generated and modified code. </RBW-PARABODY
  36682. ></LB.LIST.BULLET
  36683. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36684. ></RBW-AUTOGEN
  36685. ></RBW-MARKER
  36686. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="reverse engineering" TERM2="Defined"></RBW-IDXTERM
  36687. >Reverse&truehy;Engineering</CX5FX5FBULLET.EMPHASIS
  36688. > is generating design models from code for the sole purpose of loading in design objects needed by new elements for referral or documenting purposes. </RBW-PARABODY
  36689. ></LB.LIST.BULLET
  36690. ></LABEL
  36691. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36692. >What is the APDT useful for?</L.LABEL
  36693. ><B.BODY>The <RBW-IDXTERM TERM1="APDT" TERM2="Useful for..."></RBW-IDXTERM
  36694. >APDT is used primarily as a bridge between OO design and OO implementations using the Ada 83 or Ada 95 language. In particular, the APDT can:</B.BODY
  36695. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36696. ></RBW-AUTOGEN
  36697. ></RBW-MARKER
  36698. ><RBW-PARABODY>Automatically generate compilable (and useful) Ada 83/95 code directly from ObjectTeam design models.</RBW-PARABODY
  36699. ></LB.LIST.BULLET
  36700. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36701. ></RBW-AUTOGEN
  36702. ></RBW-MARKER
  36703. ><RBW-PARABODY>Synchronize design and implementation, incorporating adjustments that have been made to both.</RBW-PARABODY
  36704. ></LB.LIST.BULLET
  36705. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36706. ></RBW-AUTOGEN
  36707. ></RBW-MARKER
  36708. ><RBW-PARABODY>Help with understanding and comprehension of existing bodies of large and complicated Ada 83 or Ada 95 programs.</RBW-PARABODY
  36709. ></LB.LIST.BULLET
  36710. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36711. ></RBW-AUTOGEN
  36712. ></RBW-MARKER
  36713. ><RBW-PARABODY>Populate ObjectTeam design models with representations of existing code so that “as built” documentation can be produced with ObjectTeam documentation tools.</RBW-PARABODY
  36714. ></LB.LIST.BULLET
  36715. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36716. ></RBW-AUTOGEN
  36717. ></RBW-MARKER
  36718. ><RBW-PARABODY>Load design representations of existing code into design models that can then be referred to (or re&truehy;used) when designing new systems.</RBW-PARABODY
  36719. ></LB.LIST.BULLET
  36720. ></LABEL
  36721. ></SECTION
  36722. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32838"></RBW-ANCHOR
  36723. >Code Generation</S.SECTION.HEAD
  36724. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36725. >Introduction</L.LABEL
  36726. ><B.BODY><RBW-IDXTERM TERM1="Code Generation" TERM2="Introduction"></RBW-IDXTERM
  36727. >Sometimes also referred to as “forward&truehy;engineering”, <RBW-IDXTERM TERM1="forward engineering"></RBW-IDXTERM
  36728. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  36729. ><RBW-TEXTFLD TYPE="text">Ada Professional Developers Toolkit</RBW-TEXTFLD
  36730. ></RBW-SYSOBJ
  36731. >code generation in ObjectTeam is the process of translating diagrams into program code. The ObjectTeam APDT translates the Class Diagrams and their related Class Definition Matrices into Ada specification and body files. Code generation involves the following steps:</B.BODY
  36732. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36733. ></RBW-AUTOGEN
  36734. ></RBW-MARKER
  36735. ><RBW-PARABODY>The user defines Class Diagrams and Class Definition Matrices using ObjectTeam. </RBW-PARABODY
  36736. ></LB.LIST.BULLET
  36737. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36738. ></RBW-AUTOGEN
  36739. ></RBW-MARKER
  36740. ><RBW-PARABODY>The user manipulates various properties and options controlling aspects of Ada code generation.</RBW-PARABODY
  36741. ></LB.LIST.BULLET
  36742. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36743. ></RBW-AUTOGEN
  36744. ></RBW-MARKER
  36745. ><RBW-PARABODY>The APDT translates the Class Diagrams and the Class Definition Matrices that are stored in the repository into a Code Generation model.</RBW-PARABODY
  36746. ></LB.LIST.BULLET
  36747. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36748. ></RBW-AUTOGEN
  36749. ></RBW-MARKER
  36750. ><RBW-PARABODY>This Code Generation model is translated into Ada source code.</RBW-PARABODY
  36751. ></LB.LIST.BULLET
  36752. ><B.BODY>During design, you define a class more precisely by specifying its features, such as attributes and methods, relationships with other classes and inheritance:</B.BODY
  36753. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00341.unk" origfile="pics/ordful.gif" origtype="X" origdoc="../../sources/ada/adaintro.fm5.mif"></RBW-GRAPHIC
  36754. ></FAR.FIGURE.ANCHOR.RIGHT
  36755. ></LABEL
  36756. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36757. >Example of Ada Code Generation</L.LABEL
  36758. ><B.BODY>Here is an example Ada specification, automatically generated for the class “Address” from the above example. Note that to save space, some white space has been removed from this code (and all code used in this manual).</B.BODY
  36759. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Specification file for Address</EWM.EXAMPLEW.MONO
  36760. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;OT Ignore</EWM.EXAMPLEW.MONO
  36761. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;OT Analyze</EWM.EXAMPLEW.MONO
  36762. ><EWM.EXAMPLEW.MONO>with OrderFullfillment_Types;</EWM.EXAMPLEW.MONO
  36763. ><EWM.EXAMPLEW.MONO>package Address is </EWM.EXAMPLEW.MONO
  36764. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;OT Ignore</EWM.EXAMPLEW.MONO
  36765. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;OT Analyze</EWM.EXAMPLEW.MONO
  36766. ><EWM.EXAMPLEW.MONO>   type Instance is tagged record</EWM.EXAMPLEW.MONO
  36767. ><EWM.EXAMPLEW.MONO>      Name : String;</EWM.EXAMPLEW.MONO
  36768. ><EWM.EXAMPLEW.MONO>      Street : String;</EWM.EXAMPLEW.MONO
  36769. ><EWM.EXAMPLEW.MONO>      City : String;</EWM.EXAMPLEW.MONO
  36770. ><EWM.EXAMPLEW.MONO>      State : OrderFullfillment_Types.US_States;</EWM.EXAMPLEW.MONO
  36771. ><EWM.EXAMPLEW.MONO>      ZipCode : String;</EWM.EXAMPLEW.MONO
  36772. ><EWM.EXAMPLEW.MONO>end record;</EWM.EXAMPLEW.MONO
  36773. ><EWM.EXAMPLEW.MONO>   type Link is access all Instance;</EWM.EXAMPLEW.MONO
  36774. ><EWM.EXAMPLEW.MONO>   type Class_Link is access all Instance’Class;</EWM.EXAMPLEW.MONO
  36775. ><EWM.EXAMPLEW.MONO>   &truehy;&truehy;OT Attribute accessor methods</EWM.EXAMPLEW.MONO
  36776. ><EWM.EXAMPLEW.MONO>   function Get_Name (Self : Instance) return String;</EWM.EXAMPLEW.MONO
  36777. ><EWM.EXAMPLEW.MONO>   procedure Set_Name (Self : in out Instance; New_Name : String);</EWM.EXAMPLEW.MONO
  36778. ><EWM.EXAMPLEW.MONO>   function Get_Street (Self : Instance) return String;</EWM.EXAMPLEW.MONO
  36779. ><EWM.EXAMPLEW.MONO>   procedure Set_Street (Self : in out Instance; New_Street : String);</EWM.EXAMPLEW.MONO
  36780. ><EWM.EXAMPLEW.MONO>   function Get_City (Self : Instance) return String;</EWM.EXAMPLEW.MONO
  36781. ><EWM.EXAMPLEW.MONO>   procedure Set_City (Self : in out Instance; New_City : String);</EWM.EXAMPLEW.MONO
  36782. ><EWM.EXAMPLEW.MONO>   function Get_State (Self : Instance) return OrderFullfillment_Types.US_States;</EWM.EXAMPLEW.MONO
  36783. ><EWM.EXAMPLEW.MONO>   procedure Set_State (Self : in out Instance; New_State : OrderFullfillment_Types.US_States);</EWM.EXAMPLEW.MONO
  36784. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; OT Attribute accessor methods</EWM.EXAMPLEW.MONO
  36785. ><EWM.EXAMPLEW.MONO>   function Get_ZipCode (Self : Instance) return String;</EWM.EXAMPLEW.MONO
  36786. ><EWM.EXAMPLEW.MONO>   procedure Set_ZipCode (Self : in out Instance; New_ZipCode : String);</EWM.EXAMPLEW.MONO
  36787. ><EWM.EXAMPLEW.MONO>   &truehy;&truehy;OT user&truehy; defined methods</EWM.EXAMPLEW.MONO
  36788. ><EWM.EXAMPLEW.MONO>private</EWM.EXAMPLEW.MONO
  36789. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;OT User&truehy;defined methods</EWM.EXAMPLEW.MONO
  36790. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Ignore</EWM.EXAMPLEW.MONO
  36791. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Analyze</EWM.EXAMPLEW.MONO
  36792. ><EWM.EXAMPLEW.MONO>end Address;</EWM.EXAMPLEW.MONO
  36793. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Ignore</EWM.EXAMPLEW.MONO
  36794. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Analyze</EWM.EXAMPLEW.MONO
  36795. ></LABEL
  36796. ></SECTION
  36797. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12971"></RBW-ANCHOR
  36798. >Synchronized Engineering</S.SECTION.HEAD
  36799. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36800. >Introduction</L.LABEL
  36801. ><B.BODY><RBW-ANCHOR ID="synchronized engineering"></RBW-ANCHOR
  36802. >Synchronized engineering refers to incremental development that keeps design and implementation synchronized. In practice it means being able to generate code, change the code, bring that changed code back into ObjectTeam, make changes in the design, and to then generate code again (with the existing code being re&truehy;used).</B.BODY
  36803. ><B.BODY>Synchronized engineering involves these steps:</B.BODY
  36804. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  36805. ></RBW-AUTOGEN
  36806. ></RBW-MARKER
  36807. ><RBW-PARABODY>Forward Engineer from ObjectTeam design model.</RBW-PARABODY
  36808. ></LN.LIST.NUM
  36809. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  36810. ></RBW-AUTOGEN
  36811. ></RBW-MARKER
  36812. ><RBW-PARABODY>Add implementation changes to the generated source code.</RBW-PARABODY
  36813. ></LN.LIST.NUM
  36814. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  36815. ></RBW-AUTOGEN
  36816. ></RBW-MARKER
  36817. ><RBW-PARABODY>The APDT parses the changed source to identify changes requiring UML design update.</RBW-PARABODY
  36818. ></LN.LIST.NUM
  36819. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  36820. ></RBW-AUTOGEN
  36821. ></RBW-MARKER
  36822. ><RBW-PARABODY>The user confirms each proposed change.</RBW-PARABODY
  36823. ></LN.LIST.NUM
  36824. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  36825. ></RBW-AUTOGEN
  36826. ></RBW-MARKER
  36827. ><RBW-PARABODY>The APDT creates a new version of each altered Class.</RBW-PARABODY
  36828. ></LN.LIST.NUM
  36829. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36830. ></RBW-AUTOGEN
  36831. >In the current version of APDT, only code that was originally generated by the APDT may be used in a synchronized engineering manner.</N.NOTE
  36832. ></LABEL
  36833. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36834. >Changing the source code</L.LABEL
  36835. ><B.BODY>In the prior example of automatically generated Ada code, the source code is sprinkled with comments looking like <CX5FX5FTERM>“&truehy;&truehy;OT Ignore” </CX5FX5FTERM
  36836. >and <CX5FX5FTERM>“&truehy;&truehy;OT Analyze”</CX5FX5FTERM
  36837. >. These comments are indicators of where the generated source code can be changed without affecting the synchronization. </B.BODY
  36838. ><B.BODY>After a <CX5FX5FTERM>“&truehy;&truehy;OT Ignore”</CX5FX5FTERM
  36839. > comment, you may add your implementing and/or non&truehy;design affecting code.</B.BODY
  36840. ><B.BODY>After a <CX5FX5FTERM>“&truehy;&truehy;OT Analyze”</CX5FX5FTERM
  36841. > comment, you may still add or modify code, but you must take into account that the APDT will attempt to synchronize these changes into the ObjectTeam model used to generate the original source code. These kinds of changes can be made:</B.BODY
  36842. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36843. ></RBW-AUTOGEN
  36844. ></RBW-MARKER
  36845. ><RBW-PARABODY>Add, delete or modify components of types</RBW-PARABODY
  36846. ></LB.LIST.BULLET
  36847. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36848. ></RBW-AUTOGEN
  36849. ></RBW-MARKER
  36850. ><RBW-PARABODY>Add, delete or modify methods (i.e. functions/procedures)</RBW-PARABODY
  36851. ></LB.LIST.BULLET
  36852. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36853. ></RBW-AUTOGEN
  36854. ></RBW-MARKER
  36855. ><RBW-PARABODY>Add, delete or modify parameters to methods</RBW-PARABODY
  36856. ></LB.LIST.BULLET
  36857. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36858. ></RBW-AUTOGEN
  36859. ></RBW-MARKER
  36860. ><RBW-PARABODY>Add or alter comments describing the purpose of each design entity</RBW-PARABODY
  36861. ></LB.LIST.BULLET
  36862. ><B.BODY>If you make changes where it will affect design, then the APDT will update the appropriate class definition matrices (CDM), or create new CDMs if new classes have been introduced by the code changes.</B.BODY
  36863. ></LABEL
  36864. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36865. >Changing the ObjectTeam Design</L.LABEL
  36866. ><B.BODY>After the altered source code and the ObjectTeam design have been brought into synch, it’s then possible to continue with design adaptations.</B.BODY
  36867. ><B.BODY>Similar kinds of changes are permitted:</B.BODY
  36868. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36869. ></RBW-AUTOGEN
  36870. ></RBW-MARKER
  36871. ><RBW-PARABODY>Changes to properties affecting code generation</RBW-PARABODY
  36872. ></LB.LIST.BULLET
  36873. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36874. ></RBW-AUTOGEN
  36875. ></RBW-MARKER
  36876. ><RBW-PARABODY>Addition, modification, or removal of classes, methods, and attributes</RBW-PARABODY
  36877. ></LB.LIST.BULLET
  36878. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36879. ></RBW-AUTOGEN
  36880. ></RBW-MARKER
  36881. ><RBW-PARABODY>Creation of new relationships or generalizations</RBW-PARABODY
  36882. ></LB.LIST.BULLET
  36883. ><B.BODY>It is possible to make changes in the design that then makes existing code obsolete. For instance, one could remove a method, or delete a class.</B.BODY
  36884. ><B.BODY>Changes such as this result in a code section at the bottom of a re&truehy;generated source file surrounded by the comments:</B.BODY
  36885. ><B.BODY><CX5FX5FTERM>“&truehy;&truehy;OT Obsolete”</CX5FX5FTERM
  36886. > </B.BODY
  36887. ><B.BODY>This section contains existing code found to have been made obsolete by the most recent design changes.</B.BODY
  36888. ></LABEL
  36889. ></SECTION
  36890. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="38788"></RBW-ANCHOR
  36891. >Reverse Engineering</S.SECTION.HEAD
  36892. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36893. >Introduction</L.LABEL
  36894. ><B.BODY><RBW-ANCHOR ID="reverse engineering"></RBW-ANCHOR
  36895. >Reverse Engineering is the process of mapping existing Ada 83 or Ada 95 code into ObjectTeam diagrams.</B.BODY
  36896. ><B.BODY>The resulting design can be used for:</B.BODY
  36897. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36898. ></RBW-AUTOGEN
  36899. ></RBW-MARKER
  36900. ><RBW-PARABODY>Making an existing code body referenceable or re&truehy;usable (from a design perspective) in ObjectTeam</RBW-PARABODY
  36901. ></LB.LIST.BULLET
  36902. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36903. ></RBW-AUTOGEN
  36904. ></RBW-MARKER
  36905. ><RBW-PARABODY>Production of “as built” documentation by the ObjectTeam documentation tools</RBW-PARABODY
  36906. ></LB.LIST.BULLET
  36907. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  36908. ></RBW-AUTOGEN
  36909. ></RBW-MARKER
  36910. ><RBW-PARABODY>Gaining an understanding of the structure and function of the existing code</RBW-PARABODY
  36911. ></LB.LIST.BULLET
  36912. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  36913. ></RBW-AUTOGEN
  36914. >Reverse engineering is not the process of importing code so that it can be maintained from within ObjectTeam. The APDT code generator cannot merge changes made in ObjectTeam diagrams with the existing code used to create those diagrams.</N.NOTE
  36915. ></LABEL
  36916. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36917. >Example</L.LABEL
  36918. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36919. >Sample code</SL.SUBLABEL
  36920. ><B.BODY><RBW-ANCHOR ID="reverse engineering"></RBW-ANCHOR
  36921. >Here is a simple Ada 95 example implementing operations on rectangles:</B.BODY
  36922. ><EWM.EXAMPLEW.MONO>package shapes_package is</EWM.EXAMPLEW.MONO
  36923. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  36924. ><EWM.EXAMPLEW.MONO>   type rectangle is tagged   &truehy;&truehy; Gives characteristics of a rectangle.</EWM.EXAMPLEW.MONO
  36925. ><EWM.EXAMPLEW.MONO>      record</EWM.EXAMPLEW.MONO
  36926. ><EWM.EXAMPLEW.MONO>         length : float;      &truehy;&truehy; Length of rectangle</EWM.EXAMPLEW.MONO
  36927. ><EWM.EXAMPLEW.MONO>         width  : float;      &truehy;&truehy; Width of rectangle</EWM.EXAMPLEW.MONO
  36928. ><EWM.EXAMPLEW.MONO>      end record;</EWM.EXAMPLEW.MONO
  36929. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  36930. ><EWM.EXAMPLEW.MONO>   function size (r : rectangle   </EWM.EXAMPLEW.MONO
  36931. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; A rectangle for which size is to be determined</EWM.EXAMPLEW.MONO
  36932. ><EWM.EXAMPLEW.MONO>      ) return float;</EWM.EXAMPLEW.MONO
  36933. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Returns size of a given rectangle.</EWM.EXAMPLEW.MONO
  36934. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  36935. ><EWM.EXAMPLEW.MONO>   type cuboid is new rectangle with </EWM.EXAMPLEW.MONO
  36936. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Adds height to a rectangle to make a cube.</EWM.EXAMPLEW.MONO
  36937. ><EWM.EXAMPLEW.MONO>      record</EWM.EXAMPLEW.MONO
  36938. ><EWM.EXAMPLEW.MONO>         height : float;      &truehy;&truehy; Height of cube.</EWM.EXAMPLEW.MONO
  36939. ><EWM.EXAMPLEW.MONO>      end record;</EWM.EXAMPLEW.MONO
  36940. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  36941. ><EWM.EXAMPLEW.MONO>   type objects is record</EWM.EXAMPLEW.MONO
  36942. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Holds a rectangle and a cube.</EWM.EXAMPLEW.MONO
  36943. ><EWM.EXAMPLEW.MONO>      rec : rectangle;</EWM.EXAMPLEW.MONO
  36944. ><EWM.EXAMPLEW.MONO>      cube : cuboid;</EWM.EXAMPLEW.MONO
  36945. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  36946. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  36947. ><EWM.EXAMPLEW.MONO>   global_rectangle : rectangle;</EWM.EXAMPLEW.MONO
  36948. ><EWM.EXAMPLEW.MONO>   global_cuboid : cuboid;</EWM.EXAMPLEW.MONO
  36949. ><EWM.EXAMPLEW.MONO>   </EWM.EXAMPLEW.MONO
  36950. ><EWM.EXAMPLEW.MONO>   procedure initialize_shapes;</EWM.EXAMPLEW.MONO
  36951. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  36952. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  36953. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36954. >Generated classes</SL.SUBLABEL
  36955. ><B.BODY>The following classes are generated from the source code:</B.BODY
  36956. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00342.unk" origfile="pics/reveng11.gif" origtype="X" origdoc="../../sources/ada/adaintro.fm5.mif"></RBW-GRAPHIC
  36957. >
  36958. <RBW-GRAPHIC filename="00343.unk" origfile="pics/reveng12.gif" origtype="X" origdoc="../../sources/ada/adaintro.fm5.mif"></RBW-GRAPHIC
  36959. ></FA.FIGURE.ANCHOR
  36960. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00344.unk" origfile="pics/reveng13.gif" origtype="X" origdoc="../../sources/ada/adaintro.fm5.mif"></RBW-GRAPHIC
  36961. ></FA.FIGURE.ANCHOR
  36962. ><FA.FIGURE.ANCHOR></FA.FIGURE.ANCHOR
  36963. ><RBWAUTO-0001></RBWAUTO-0001
  36964. ><!--
  36965.  
  36966.  
  36967.  
  36968.  
  36969.  
  36970. CONVERTING SOURCE FILE ../../sources/ada/adaobjd.fm5.mif
  36971.  
  36972.  
  36973. --><B.BODY></B.BODY
  36974. ><B.BODY></B.BODY
  36975. ><B.BODY></B.BODY
  36976. ><B.BODY></B.BODY
  36977. ><B.BODY></B.BODY
  36978. ></LABEL
  36979. ></SECTION
  36980. ></CHAPTER
  36981. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  36982. ></RBW-AUTOGEN
  36983. >Preparing <RBW-ANCHOR ID="30937"></RBW-ANCHOR
  36984. >Your ObjectTeam Model for Code Generation</C.CHAPTER.HEAD
  36985. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36986. >Introduction</L.LABEL
  36987. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  36988. ><CX5FX5FTITLE></CX5FX5FTITLE
  36989. >, you model the system without regard to the implementation environment.</B.BODY
  36990. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  36991. ></LABEL
  36992. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36993. >Ada module required</L.LABEL
  36994. ><B.BODY>The ObjectTeam modules <CX5FX5FEMPHASIS>Ada83 Code Generation</CX5FX5FEMPHASIS
  36995. > and <CX5FX5FEMPHASIS>Ada95 Code Generation </CX5FX5FEMPHASIS
  36996. >provide the menu items, the properties and the Tcl code required to use the Ada Professional Developer’s Toolkit. Therefore, before moving to the Object Design phase, make sure the Ada Code generation module of your choice is active.</B.BODY
  36997. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  36998. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  36999. >For more information</SL.SUBLABEL
  37000. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  37001. ><CX5FX5FTITLE></CX5FX5FTITLE
  37002. > for details on how to activate a module.</B.BODY
  37003. ></LABEL
  37004. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37005. >Object Design and Implementation </L.LABEL
  37006. ><B.BODY>This chapter describes the tasks of the Object Design phase. Chapter 3, Building an Ada Application, Chapter 4, Mapping Modeling Data to Ada 95 Code , and Chapter 5, Mapping Modeling Data to Ada 83 Code describe the tasks of the Implementation phase. Chapter 6, Synchronized Engineering describes incremental development and synchronized engineering. You work iteratively in these phases to generate code and complete your application.</B.BODY
  37007. ></LABEL
  37008. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37009. >Purpose of object design</L.LABEL
  37010. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  37011. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  37012. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  37013. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use other diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  37014. ></LABEL
  37015. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37016. >In this chapter</L.LABEL
  37017. ><B.BODY>This chapter contains the following sections:</B.BODY
  37018. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  37019. ></ENTRY
  37020. ></RBW-ROW
  37021. ></THEAD
  37022. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25958" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;2–3</RBW-XREF
  37023. ></SB.SECTION.BLOCK.TABLE
  37024. ></ENTRY
  37025. ></RBW-ROW
  37026. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36972" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;2–6</RBW-XREF
  37027. ></SB.SECTION.BLOCK.TABLE
  37028. ></ENTRY
  37029. ></RBW-ROW
  37030. ></TBODY
  37031. ></TGROUP
  37032. ></RBW-TABLE
  37033. ></LABEL
  37034. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  37035. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  37036. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  37037. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  37038. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  37039. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  37040. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  37041. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  37042. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  37043. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  37044. >Refining the Class Diagrams</S.SECTION.HEAD
  37045. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37046. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  37047. ></L.LABEL
  37048. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  37049. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  37050. ></LABEL
  37051. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37052. >Using data from diagrams other than CDs</L.LABEL
  37053. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  37054. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  37055. ></ENTRY
  37056. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  37057. ></ENTRY
  37058. ></RBW-ROW
  37059. ></THEAD
  37060. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  37061. ></ENTRY
  37062. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  37063. ><CELLBODY>STD class</CELLBODY
  37064. ><CELLBODY>UCD actor</CELLBODY
  37065. ></ENTRY
  37066. ></RBW-ROW
  37067. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  37068. ></ENTRY
  37069. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  37070. ><CELLBODY>STD event or event message</CELLBODY
  37071. ><CELLBODY>UCD communication association</CELLBODY
  37072. ></ENTRY
  37073. ></RBW-ROW
  37074. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  37075. ></ENTRY
  37076. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  37077. ><CELLBODY>STD condition on an event</CELLBODY
  37078. ></ENTRY
  37079. ></RBW-ROW
  37080. ></TBODY
  37081. ></TGROUP
  37082. ></RBW-TABLE
  37083. ></LABEL
  37084. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37085. >Classes</L.LABEL
  37086. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  37087. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions and procedures of the class type. </B.BODY
  37088. ></LABEL
  37089. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37090. >External classes</L.LABEL
  37091. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  37092. ></LABEL
  37093. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37094. >Associations</L.LABEL
  37095. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  37096. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  37097. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37098. >Role names in Analysis and System Design</SL.SUBLABEL
  37099. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  37100. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00345.tif" origseq="1" origtype="I" origdoc="../../sources/ada/adaobjd.fm5.mif"></RBW-GRAPHIC
  37101. ></FA.FIGURE.ANCHOR
  37102. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37103. >Role names in Object Design and Implementation</SL.SUBLABEL
  37104. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods  for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  37105. ></LABEL
  37106. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37107. >Attributes</L.LABEL
  37108. ><B.BODY>You must specify each attribute completely, including its data type. The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  37109. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  37110. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37111. >Data types</SL.SUBLABEL
  37112. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and subtypes. </B.BODY
  37113. ></LABEL
  37114. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37115. >Operations</L.LABEL
  37116. ><BI.BODY.INTRO>You must specify each operation completely.  This includes specifying such aspects as:</BI.BODY.INTRO
  37117. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37118. ></RBW-AUTOGEN
  37119. ></RBW-MARKER
  37120. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  37121. ></LB.LIST.BULLET
  37122. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37123. ></RBW-AUTOGEN
  37124. ></RBW-MARKER
  37125. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  37126. ></LB.LIST.BULLET
  37127. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37128. ></RBW-AUTOGEN
  37129. ></RBW-MARKER
  37130. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  37131. ></LB.LIST.BULLET
  37132. ></LABEL
  37133. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37134. >Properties</L.LABEL
  37135. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  37136. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  37137. >These details are incorporated in the final code.</BI.BODY.INTRO
  37138. ></LABEL
  37139. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37140. >Checking</L.LABEL
  37141. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  37142. ><CX5FX5FTITLE></CX5FX5FTITLE
  37143. > for more information about the Check utility.</B.BODY
  37144. ></LABEL
  37145. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37146. >For more information</L.LABEL
  37147. ><B.BODY>Chapter 5, Mapping Modeling Data to Ada 83 Code, and Chapter 4, Mapping Modeling Data to Ada 95 Code, describe how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  37148. ></LABEL
  37149. ></SECTION
  37150. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  37151. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  37152. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  37153. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  37154. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  37155. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  37156. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  37157. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  37158. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  37159. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  37160. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  37161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37162. >Introduction</L.LABEL
  37163. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  37164. ></LABEL
  37165. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37166. >Understanding the translations</L.LABEL
  37167. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  37168. ></LABEL
  37169. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37170. >Naming conventions</L.LABEL
  37171. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, consider the following:</B.BODY
  37172. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37173. ></RBW-AUTOGEN
  37174. ></RBW-MARKER
  37175. ><RBW-PARABODY>When naming classes, do not leave a space between words. Code generators cannot handle blank spaces in identifier (class) names.</RBW-PARABODY
  37176. ></LB.LIST.BULLET
  37177. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37178. ></RBW-AUTOGEN
  37179. ></RBW-MARKER
  37180. ><RBW-PARABODY>Do not use the same name for a class and a system, or for a class and a CD. Class, system, and diagram names are all stored in the repository as items of type <CX5FX5FEMPHASIS>cl</CX5FX5FEMPHASIS
  37181. >.</RBW-PARABODY
  37182. ></LB.LIST.BULLET
  37183. ></LABEL
  37184. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37185. >Customizing code generation</L.LABEL
  37186. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own.. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  37187. ></LABEL
  37188. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37189. >Using multiple languages in a single application</L.LABEL
  37190. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  37191. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  37192. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  37193. ></RBW-AUTOGEN
  37194. ></RBW-MARKER
  37195. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  37196. ></LN.LIST.NUM
  37197. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  37198. ></RBW-AUTOGEN
  37199. ></RBW-MARKER
  37200. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  37201. ></LN.LIST.NUM
  37202. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  37203. ></RBW-AUTOGEN
  37204. ></RBW-MARKER
  37205. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  37206. ></LN.LIST.NUM
  37207. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  37208. ></RBW-AUTOGEN
  37209. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  37210. ><RBWAUTO-0001></RBWAUTO-0001
  37211. ><!--
  37212.  
  37213.  
  37214.  
  37215.  
  37216.  
  37217. CONVERTING SOURCE FILE ../../sources/ada/adacodg.fm5.mif
  37218.  
  37219.  
  37220. --><B.BODY></B.BODY
  37221. ><B.BODY></B.BODY
  37222. ><B.BODY></B.BODY
  37223. ><B.BODY></B.BODY
  37224. ><B.BODY></B.BODY
  37225. ></LABEL
  37226. ></SECTION
  37227. ></CHAPTER
  37228. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  37229. ></RBW-AUTOGEN
  37230. >Building <RBW-ANCHOR ID="16183"></RBW-ANCHOR
  37231. >an Ada Application</C.CHAPTER.HEAD
  37232. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37233. >Introduction</L.LABEL
  37234. ><B.BODY><RBW-IDXTERM TERM1="code generation"></RBW-IDXTERM
  37235. >Typically, the ultimate goal of modeling an application is to produce code that implements the application. In ObjectTeam, you can generate a significant portion of the code automatically, then complete the code by adding the details not specified in the model.</B.BODY
  37236. ></LABEL
  37237. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37238. >Prerequisites</L.LABEL
  37239. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37240. ></RBW-AUTOGEN
  37241. ></RBW-MARKER
  37242. ><RBW-PARABODY>The appropriate ObjectTeam module <RBWAUTO-0007>Ada83 Code Generator</RBWAUTO-0007
  37243. > or <RBWAUTO-0007>Ada95 Code Generator </RBWAUTO-0007
  37244. >must be active from Object Design phase and Implementation phase level down.</RBW-PARABODY
  37245. ></LB.LIST.BULLET
  37246. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37247. ></RBW-AUTOGEN
  37248. ></RBW-MARKER
  37249. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="30937" TYPE="XREF-TEXTCOPY">Chapter 2, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  37250. >.</RBW-PARABODY
  37251. ></LB.LIST.BULLET
  37252. ></LABEL
  37253. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37254. >Steps in code generation</L.LABEL
  37255. ><B.BODY>The following table provides an overview of the code generation process. This chapter describes each step in greater detail.</B.BODY
  37256. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  37257. ></ENTRY
  37258. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  37259. ></ENTRY
  37260. ></RBW-ROW
  37261. ></THEAD
  37262. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  37263. ></ENTRY
  37264. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configure the Ada environment.</CELLBODY
  37265. ></ENTRY
  37266. ></RBW-ROW
  37267. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  37268. ></ENTRY
  37269. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate code for your systems in the Implementation phase. During this step, ObjectTeam runs the Tcl scripts that generate the application source code files.</CELLBODY
  37270. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  37271. > System level in the Implementation phase is fundamentally different than System level in other phases. The System files in the Implementation phase are source files, not diagram files.</CELLBODY
  37272. ></ENTRY
  37273. ></RBW-ROW
  37274. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  37275. ></ENTRY
  37276. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit the source files. ObjectTeam generates a large portion of your application code, but not all of it. In this stage, you finish writing the application code.</CELLBODY
  37277. ><CELLBODY>Changes you make to the source files are not lost. When you regenerate the source files, the code generator recognizes your changes and transfers them to the newly generated files.<RBWAUTO-0004><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  37278. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  37279. ></RBWAUTO-0004
  37280. > <RBWAUTO-0004><RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  37281. ></RBWAUTO-0004
  37282. ></CELLBODY
  37283. ></ENTRY
  37284. ></RBW-ROW
  37285. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  37286. ></ENTRY
  37287. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Build the executable..</CELLBODY
  37288. ></ENTRY
  37289. ></RBW-ROW
  37290. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  37291. ></ENTRY
  37292. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Test the executable. If necessary: correct the source files, the model, or both; regenerate the files; and return to step 3.</CELLBODY
  37293. ></ENTRY
  37294. ></RBW-ROW
  37295. ></TBODY
  37296. ></TGROUP
  37297. ></RBW-TABLE
  37298. ></LABEL
  37299. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37300. >Illustration of code generation</L.LABEL
  37301. ><BI.BODY.INTRO>The following illustration shows how ObjectTeam generates code. The CDs and CDMs shown at the top are in the Object Design phase.</BI.BODY.INTRO
  37302. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00346.tif" origseq="1" origtype="I" origdoc="../../sources/ada/adacodg.fm5.mif"></RBW-GRAPHIC
  37303. ></FAR.FIGURE.ANCHOR.RIGHT
  37304. ></LABEL
  37305. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37306. >In this chapter</L.LABEL
  37307. ><B.BODY>This chapter contains the following sections:</B.BODY
  37308. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  37309. ></ENTRY
  37310. ></RBW-ROW
  37311. ></THEAD
  37312. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16880" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;3–3</RBW-XREF
  37313. ></SB.SECTION.BLOCK.TABLE
  37314. ></ENTRY
  37315. ></RBW-ROW
  37316. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Generating Ada Code&rbwtab;3–4</RBW-XREF
  37317. ></SB.SECTION.BLOCK.TABLE
  37318. ></ENTRY
  37319. ></RBW-ROW
  37320. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26759" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files&rbwtab;3–8</RBW-XREF
  37321. ></SB.SECTION.BLOCK.TABLE
  37322. ></ENTRY
  37323. ></RBW-ROW
  37324. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15358" TYPE="XREF-TEXTCOPY">Building an Executable&rbwtab;3–10</RBW-XREF
  37325. ></SB.SECTION.BLOCK.TABLE
  37326. ></ENTRY
  37327. ></RBW-ROW
  37328. ></TBODY
  37329. ></TGROUP
  37330. ></RBW-TABLE
  37331. ></LABEL
  37332. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16880"></RBW-ANCHOR
  37333. >Components of Code Generation</S.SECTION.HEAD
  37334. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37335. >Tcl scripts for code generation</L.LABEL
  37336. ><B.BODY>The scripts written for code generation retrieve information from the code generation models, format this information and write the results to source code files. Code generation models are built from the CDs in the Object Design phase.</B.BODY
  37337. ><B.BODY>The default <RBW-IDXTERM TERM1="Tcl" TERM2="script files used for code generation"></RBW-IDXTERM
  37338. >Tcl scripts used by otsh to generate Ada83 source code can be found under the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  37339. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  37340. >\<CX5FX5FFILE.NAME>ada83</CX5FX5FFILE.NAME
  37341. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  37342. > directory tree. The default scripts for generating Ada95 source code can be found under the <RBWAUTO-0007>M4_home</RBWAUTO-0007
  37343. >\<RBWAUTO-0004>modules\ada95\tcl</RBWAUTO-0004
  37344. > directory tree. .</B.BODY
  37345. ></LABEL
  37346. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37347. ><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  37348. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  37349. >Code <RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  37350. >regeneration</L.LABEL
  37351. ><B.BODY>Code generation is an automated process that generates Ada83 or Ada95 files. ObjectTeam ensures that </B.BODY
  37352. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37353. ></RBW-AUTOGEN
  37354. ></RBW-MARKER
  37355. ><RBW-PARABODY>You can regenerate these files when you change your model.</RBW-PARABODY
  37356. ></LB.LIST.BULLET
  37357. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37358. ></RBW-AUTOGEN
  37359. ></RBW-MARKER
  37360. ><RBW-PARABODY>Changes that you make to the generated files are preserved when you regenerate the files.</RBW-PARABODY
  37361. ></LB.LIST.BULLET
  37362. ><B.BODY>For more information, see <RBW-XREF REFID="28849" TYPE="XREF-TEXTCOPY">Chapter 6, Synchronized Engineering</RBW-XREF
  37363. ></B.BODY
  37364. ></LABEL
  37365. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37366. ><RBW-IDXTERM TERM1="class library" TERM2="including in code generation"></RBW-IDXTERM
  37367. ><RBW-ANCHOR ID="35964"></RBW-ANCHOR
  37368. >Configuration</L.LABEL
  37369. ><B.BODY>The code that ObjectTeam generates could be any object&truehy;oriented programming language, but this guide focuses on Ada. Before generating Ada code, you may configure your APDT environment.</B.BODY
  37370. ><B.BODY>You can configure the settings of the default values that are applied when the design is transformed into Ada83 or Ada95 code.</B.BODY
  37371. ><B.BODY>For more information, see <RBW-XREF REFID="21577" TYPE="XREF-TEXTCOPY">Chapter 8, Configuring the APDT Code Generators</RBW-XREF
  37372. >.</B.BODY
  37373. ></LABEL
  37374. ></SECTION
  37375. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18430"></RBW-ANCHOR
  37376. ><RBW-ANCHOR ID="40480"></RBW-ANCHOR
  37377. ><RBW-ANCHOR ID="24041"></RBW-ANCHOR
  37378. ><RBW-ANCHOR ID="34047"></RBW-ANCHOR
  37379. >Generating Ada Code</S.SECTION.HEAD
  37380. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37381. >Result of generating</L.LABEL
  37382. ><B.BODY>When you generate source files, the code generator uses the CDs and CDMs that are in the Object Design phase to create Ada source files in the Implementation phase. At System level of the Implementation phase, you can then refine the source code and complete the application.</B.BODY
  37383. ></LABEL
  37384. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37385. >Implementation Phase is different</L.LABEL
  37386. ><B.BODY>The System level of the Implementation phase is fundamentally different from System level of any other phase. In the Implementation phase, the System files are Ada files. In other phases, the System files are ObjectTeam diagrams.</B.BODY
  37387. ></LABEL
  37388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37389. >Generate code on Phase or System level</L.LABEL
  37390. ><B.BODY>You can generate code on the Implementation Phase level or on the System level of the Implementation phase.</B.BODY
  37391. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37392. ></RBW-AUTOGEN
  37393. ></RBW-MARKER
  37394. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>Implementation Phase level</CX5FX5FBULLET.EMPHASIS
  37395. >, you can generate code for one or more systems. This creates a matching system in the Implementation Phase that contains the generated source files. To regenerate code for an existing system, use System level.</RBW-PARABODY
  37396. ></LB.LIST.BULLET
  37397. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37398. ></RBW-AUTOGEN
  37399. ></RBW-MARKER
  37400. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>System level of the Implementation phase</CX5FX5FBULLET.EMPHASIS
  37401. >, you can (re)generate code for the entire system, or regenerate selected source files.</RBW-PARABODY
  37402. ></LB.LIST.BULLET
  37403. ><B.BODY>Typically, you use Implementation Phase level to generate code for a system initially and System level to regenerate code subsequently.</B.BODY
  37404. ></LABEL
  37405. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37406. >How to generate code on Implementation Phase level</L.LABEL
  37407. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  37408. ></RBW-AUTOGEN
  37409. ></RBW-MARKER
  37410. ><RBW-PARABODY>To generate source files on the Implementation Phase level:</RBW-PARABODY
  37411. ></P.PROCEDURE
  37412. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  37413. ></RBW-AUTOGEN
  37414. ></RBW-MARKER
  37415. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  37416. ></LN.LIST.NUM
  37417. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  37418. ></RBW-AUTOGEN
  37419. ></RBW-MARKER
  37420. ><RBW-PARABODY>Select Utilities | Generate Ada83 or Utilities | Generate Ada95.</RBW-PARABODY
  37421. ></LN.LIST.NUM
  37422. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  37423. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  37424. ></RBW-AUTOGEN
  37425. ></RBW-MARKER
  37426. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  37427. ></LN.LIST.NUM
  37428. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  37429. ></RBW-MARKER
  37430. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  37431. > to generate code for all systems from the Object Design phase for which no code has been generated yet. </RBW-PARABODY
  37432. ></LB2.LIST.BULLET.2
  37433. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  37434. ></RBW-MARKER
  37435. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  37436. > to generate code for one or more systems in the Object Design phase. You can select only systems that do not yet exist in the Implementation phase.</RBW-PARABODY
  37437. ></LB2.LIST.BULLET.2
  37438. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files.</LR.LIST.RESULT
  37439. ></LABEL
  37440. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37441. ><RBW-ANCHOR ID="10881"></RBW-ANCHOR
  37442. >How to generate code on System level</L.LABEL
  37443. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  37444. ></RBW-AUTOGEN
  37445. ></RBW-MARKER
  37446. ><RBW-PARABODY>To generate (selected) source files for a system from System level of the Implementation phase:</RBW-PARABODY
  37447. ></P.PROCEDURE
  37448. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  37449. ></RBW-AUTOGEN
  37450. ></RBW-MARKER
  37451. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  37452. ></LN.LIST.NUM
  37453. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  37454. ></RBW-AUTOGEN
  37455. ></RBW-MARKER
  37456. ><RBW-PARABODY>Select Utilities | Generate Ada83 or Utilities | Generate Ada95.</RBW-PARABODY
  37457. ></LN.LIST.NUM
  37458. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  37459. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  37460. ></RBW-AUTOGEN
  37461. ></RBW-MARKER
  37462. ><RBW-PARABODY>Select one of the following:</RBW-PARABODY
  37463. ></LN.LIST.NUM
  37464. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  37465. ></RBW-MARKER
  37466. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New</CX5FX5FBULLET.EMPHASIS
  37467. > to generate code for all classes that are defined in this system and that have not yet been generated into code.</RBW-PARABODY
  37468. ></LB2.LIST.BULLET.2
  37469. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  37470. ></RBW-MARKER
  37471. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Selected</CX5FX5FBULLET.EMPHASIS
  37472. > to regenerate the files that you have selected in the Information area of the browser.</RBW-PARABODY
  37473. ></LB2.LIST.BULLET.2
  37474. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  37475. ></RBW-MARKER
  37476. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>All</CX5FX5FBULLET.EMPHASIS
  37477. > to (re)generate code for all classes that are defined in this system.</RBW-PARABODY
  37478. ></LB2.LIST.BULLET.2
  37479. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the files. The following illustration shows the Monitor window after generating code for a system.</LR.LIST.RESULT
  37480. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00347.unk" origfile="pics/codegen1.gif" origtype="X" origdoc="../../sources/ada/adacodg.fm5.mif"></RBW-GRAPHIC
  37481. ></FA.FIGURE.ANCHOR
  37482. ></LABEL
  37483. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37484. >Location of the source files</L.LABEL
  37485. ><BI.BODY.INTRO>Source files are stored in the repository as external files. They are also written to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  37486. >\<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  37487. > directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  37488. > is the file path for your generated files. For more information on the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  37489. ><CX5FX5FTITLE></CX5FX5FTITLE
  37490. >. The following illustrations show how the source files appear in the Browser. </BI.BODY.INTRO
  37491. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00348.unk" origfile="pics/codegen2.gif" origtype="X" origdoc="../../sources/ada/adacodg.fm5.mif"></RBW-GRAPHIC
  37492. ></FA.FIGURE.ANCHOR
  37493. ></LABEL
  37494. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37495. >When code is not generated</L.LABEL
  37496. ><B.BODY>The code generator generates code for all classes defined in the current system. It does not generate code in the following situations:</B.BODY
  37497. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37498. ></RBW-AUTOGEN
  37499. ></RBW-MARKER
  37500. ><RBW-PARABODY>If a CD in the current system contains a class that is defined in another system, the code generator does not generate code for that class.</RBW-PARABODY
  37501. ></LB.LIST.BULLET
  37502. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37503. ></RBW-AUTOGEN
  37504. ></RBW-MARKER
  37505. ><RBW-PARABODY>If a CD in the current system contains a class <CX5FX5FEMPHASIS>component</CX5FX5FEMPHASIS
  37506. > (a graphical element) that does not have an associated <CX5FX5FEMPHASIS>item</CX5FX5FEMPHASIS
  37507. > (a semantic element), the code generator does not generate code for that class.</RBW-PARABODY
  37508. ></LB.LIST.BULLET
  37509. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  37510. ></RBW-AUTOGEN
  37511. >For more information about components and items, see <RBW-XREF REFID="29698" TYPE="XREF-TEXTCOPY">Working With Items on page 3–31</RBW-XREF
  37512. > in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  37513. >, of the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  37514. ><CX5FX5FTITLE></CX5FX5FTITLE
  37515. >.</N2.NOTE.2
  37516. ></LABEL
  37517. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17211"></RBW-ANCHOR
  37518. >The OOPL Model</SS.SUBSEC.HEAD
  37519. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37520. >OOPL Model</L.LABEL
  37521. ><B.BODY>The OOPL Model, which is generated from the CDs in the Object Design phase, contains information used to generate code. The objects in this model are organized in such a way that code can be generated easily.</B.BODY
  37522. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37523. >For more information</SL.SUBLABEL
  37524. ><B.BODY>The <RBWAUTO-0007>ObjectTeam Repository Interface Guide</RBWAUTO-0007
  37525. > provides a detailed description of the classes in the OOPL Model.</B.BODY
  37526. ></LABEL
  37527. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37528. >Generated code</L.LABEL
  37529. ><B.BODY>The Ada code generators generate the following files for classes in the CDs of the Object Design phase:<RBW-IDXTERM TERM1="C++ header file" TERM2="generating"></RBW-IDXTERM
  37530. ><RBW-IDXTERM TERM1="generating" TERM2="C++ header file"></RBW-IDXTERM
  37531. ></B.BODY
  37532. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="313p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File </CELLHEADING
  37533. ></ENTRY
  37534. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  37535. ></ENTRY
  37536. ></RBW-ROW
  37537. ></THEAD
  37538. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  37539. >.ads</CELLBODY
  37540. ></ENTRY
  37541. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="H++"></RBW-IDXTERM
  37542. ><RBW-IDXTERM TERM1="header file"></RBW-IDXTERM
  37543. >file containing thepackage specification implemening the class</CELLBODY
  37544. ></ENTRY
  37545. ></RBW-ROW
  37546. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  37547. >.adb</CELLBODY
  37548. ></ENTRY
  37549. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>file containing the package body implementing the class</CELLBODY
  37550. ></ENTRY
  37551. ></RBW-ROW
  37552. ></TBODY
  37553. ></TGROUP
  37554. ></RBW-TABLE
  37555. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37556. >For more information</SL.SUBLABEL
  37557. ><B.BODY>See <RBW-XREF REFID="20014" TYPE="XREF-TEXTCOPY">Chapter 4, Mapping Modeling Data to Ada 95 Code</RBW-XREF
  37558. > and <RBW-XREF REFID="39994" TYPE="XREF-TEXTCOPY">Chapter 5, Mapping Modeling Data to Ada 83 Code</RBW-XREF
  37559. >.</B.BODY
  37560. ></LABEL
  37561. ></SUBSECTION
  37562. ></SECTION
  37563. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26759"></RBW-ANCHOR
  37564. >Editing (Generated) Source Files</S.SECTION.HEAD
  37565. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37566. >Introduction</L.LABEL
  37567. ><B.BODY>After the code has been generated, you can relate each generated Ada specification and body file to a specific class in a CD of the Object Design phase.</B.BODY
  37568. ></LABEL
  37569. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37570. >Package specification files</L.LABEL
  37571. ><B.BODY>The generated package specification files contain all the necessary <RBWAUTO-0007>with</RBWAUTO-0007
  37572. > statements and do not need editing.</B.BODY
  37573. ><B.BODY>If, however, you choose to edit a package specification file, you can use the round&truehy;trip engineering task to move your changes back into your model so that they are not lost when you regenerate code. See <RBW-XREF REFID="28849" TYPE="XREF-TEXTCOPY">Chapter 6, Synchronized Engineering</RBW-XREF
  37574. > for more information.</B.BODY
  37575. ></LABEL
  37576. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37577. >Package body files</L.LABEL
  37578. ><B.BODY>The generated package body files serve as framework files. They contain a subprogram for each method of the classes in the CDs, but the subprogram bodies are empty. You need to fill in the following:</B.BODY
  37579. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37580. ></RBW-AUTOGEN
  37581. ></RBW-MARKER
  37582. ><RBW-PARABODY>The bodies of the subprograms that are defined in the package body. No executable code is created for the subprogram. Instead, the following line is generated:</RBW-PARABODY
  37583. ></LB.LIST.BULLET
  37584. ><EM.EXAMPLE.MONO>&truehy;&truehy;!! Implement this function !!</EM.EXAMPLE.MONO
  37585. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37586. ></RBW-AUTOGEN
  37587. ></RBW-MARKER
  37588. ><RBW-PARABODY>The sections that are marked by comments similar to the following:</RBW-PARABODY
  37589. ></LB.LIST.BULLET
  37590. ><EM.EXAMPLE.MONO>&truehy;&truehy;OT Ignore</EM.EXAMPLE.MONO
  37591. ><EM.EXAMPLE.MONO>&truehy;&truehy;OT Analyze</EM.EXAMPLE.MONO
  37592. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37593. >Sample Ada package body file</SL.SUBLABEL
  37594. ><BI.BODY.INTRO>The following is a sample Ada95 package body (adb) file. User edits are highlighted.</BI.BODY.INTRO
  37595. ><EM.EXAMPLE.MONO>&truehy;&truehy;OT Ignore</EM.EXAMPLE.MONO
  37596. ><EM.EXAMPLE.MONO>with Amount_Io;</EM.EXAMPLE.MONO
  37597. ><EM.EXAMPLE.MONO>&truehy;&truehy;OT Analyze</EM.EXAMPLE.MONO
  37598. ><EM.EXAMPLE.MONO>package body Account is</EM.EXAMPLE.MONO
  37599. ><EM.EXAMPLE.MONO>   &truehy;&truehy;OT Ignore</EM.EXAMPLE.MONO
  37600. ><EM.EXAMPLE.MONO>   <RBWAUTO-0004>Number_Of_Prints : Integer := 0;</RBWAUTO-0004
  37601. ></EM.EXAMPLE.MONO
  37602. ><EM.EXAMPLE.MONO>   &truehy;&truehy;OT Analyze</EM.EXAMPLE.MONO
  37603. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  37604. ><EM.EXAMPLE.MONO>   procedure Print_Amount(Self : in out Instance) is</EM.EXAMPLE.MONO
  37605. ><EM.EXAMPLE.MONO>   &truehy;&truehy;OT Ignore</EM.EXAMPLE.MONO
  37606. ><EM.EXAMPLE.MONO>   begin</EM.EXAMPLE.MONO
  37607. ><EM.EXAMPLE.MONO>      <RBWAUTO-0004>Number_Of_Prints := Number_Of_Prints + 1;</RBWAUTO-0004
  37608. ></EM.EXAMPLE.MONO
  37609. ><EM.EXAMPLE.MONO>      Amount_Io.Put(Self.Ammount);</EM.EXAMPLE.MONO
  37610. ><EM.EXAMPLE.MONO>   end Print_Amount;</EM.EXAMPLE.MONO
  37611. ><EM.EXAMPLE.MONO>   &truehy;&truehy;OT Analyze</EM.EXAMPLE.MONO
  37612. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  37613. ><EM.EXAMPLE.MONO>   &truehy;&truehy;OT Ignore</EM.EXAMPLE.MONO
  37614. ><EM.EXAMPLE.MONO>   &truehy;&truehy;OT Analyze</EM.EXAMPLE.MONO
  37615. ><EM.EXAMPLE.MONO>end Account;</EM.EXAMPLE.MONO
  37616. ><EM.EXAMPLE.MONO>   </EM.EXAMPLE.MONO
  37617. ><EM.EXAMPLE.MONO>&truehy;&truehy;OT Ignore</EM.EXAMPLE.MONO
  37618. ><EM.EXAMPLE.MONO>&truehy;&truehy;OT Analyze</EM.EXAMPLE.MONO
  37619. ></LABEL
  37620. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37621. ><RBW-IDXTERM TERM1="source files" TERM2="editing generated -"></RBW-IDXTERM
  37622. ><RBW-IDXTERM TERM1="generated source file" TERM2="editing"></RBW-IDXTERM
  37623. >How to edit source files</L.LABEL
  37624. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  37625. ></RBW-AUTOGEN
  37626. ></RBW-MARKER
  37627. ><RBW-PARABODY>To edit source files:</RBW-PARABODY
  37628. ></P.PROCEDURE
  37629. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  37630. ></RBW-AUTOGEN
  37631. ></RBW-MARKER
  37632. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  37633. ></LN.LIST.NUM
  37634. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  37635. ></RBW-AUTOGEN
  37636. ></RBW-MARKER
  37637. ><RBW-PARABODY>In the Information area, double&truehy;click on the source file that you want to edit, or select the source file and then select File | Edit.</RBW-PARABODY
  37638. ></LN.LIST.NUM
  37639. ><LR.LIST.RESULT>The default Text Editor starts up with the corresponding file in the user environment.</LR.LIST.RESULT
  37640. ></LABEL
  37641. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37642. >Update diagrams</L.LABEL
  37643. ><B.BODY>Depending on the type of additions you have made to the source files, you may need to edit the CDs to reflect your changes. If you do so, be sure to use Check | Global Model to check the updated diagrams before regenerating the source files.</B.BODY
  37644. ></LABEL
  37645. ></SECTION
  37646. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="makefile" TERM2="generating"></RBW-IDXTERM
  37647. ><RBW-ANCHOR ID="15358"></RBW-ANCHOR
  37648. >Building an Executable</S.SECTION.HEAD
  37649. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37650. >Prerequisites</L.LABEL
  37651. ><B.BODY>To successfully compile and run an executable, you must have the following:</B.BODY
  37652. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37653. ></RBW-AUTOGEN
  37654. ></RBW-MARKER
  37655. ><RBW-PARABODY>The required source code files (language&truehy;specific source files); see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Generating Ada Code</RBW-XREF
  37656. ></RBW-PARABODY
  37657. ></LB.LIST.BULLET
  37658. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37659. ></RBW-AUTOGEN
  37660. ></RBW-MARKER
  37661. ><RBW-PARABODY>All procedural code in the source files must be completely defined for the implementation of methods (see <RBW-XREF REFID="26759" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files</RBW-XREF
  37662. >).</RBW-PARABODY
  37663. ></LB.LIST.BULLET
  37664. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37665. ></RBW-AUTOGEN
  37666. ></RBW-MARKER
  37667. ><RBW-PARABODY>The source code files required for implementing associations for Ada83 or Ada95. These files can be found in M4_home/modules/ada83/config/src for Ada83 code generation and in M4_home/modules/ada95/config/src for Ada95 code generation.</RBW-PARABODY
  37668. ></LB.LIST.BULLET
  37669. ></LABEL
  37670. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37671. >How to build an executable</L.LABEL
  37672. ><B.BODY>For building an Ada83 or Ada95 executable, you must use the tools provided with your Ada compiler.</B.BODY
  37673. ><B.BODY>See your Ada complier documentation for details on compiling and linking an Ada application.</B.BODY
  37674. ></LABEL
  37675. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37676. >Conduct a final check for errors</L.LABEL
  37677. ><B.BODY>As always, before you distribute anything, conduct a quality check of your work. If necessary, fix the source files, fix the ObjectTeam model, regenerate the code, and retest the executable.</B.BODY
  37678. ><B.BODY></B.BODY
  37679. ><RBWAUTO-0001></RBWAUTO-0001
  37680. ><!--
  37681.  
  37682.  
  37683.  
  37684.  
  37685.  
  37686. CONVERTING SOURCE FILE ../../sources/ada/mapada95.fm5.mif
  37687.  
  37688.  
  37689. --><B.BODY></B.BODY
  37690. ><B.BODY></B.BODY
  37691. ><B.BODY></B.BODY
  37692. ><B.BODY></B.BODY
  37693. ><B.BODY></B.BODY
  37694. ></LABEL
  37695. ></SECTION
  37696. ></CHAPTER
  37697. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  37698. ></RBW-AUTOGEN
  37699. >Mapping Modeling Data to <RBW-ANCHOR ID="20014"></RBW-ANCHOR
  37700. >Ada 95 Code<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  37701. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  37702. ></RBW-SYSOBJ
  37703. ></C.CHAPTER.HEAD
  37704. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37705. >Introduction</L.LABEL
  37706. ><B.BODY>This chapter explains how particular parts of classes and class specifications result in particular parts of Ada 95 source code.</B.BODY
  37707. ><B.BODY>The first section of the chapter explains some principles of the code generation process. The next six sections describe the relationship between class specifications and the generated code. </B.BODY
  37708. ></LABEL
  37709. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37710. >In this chapter</L.LABEL
  37711. ><B.BODY>This chapter contains the following sections:</B.BODY
  37712. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  37713. ></ENTRY
  37714. ></RBW-ROW
  37715. ></THEAD
  37716. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38866" TYPE="XREF-TEXTCOPY">Mapping Attributes&rbwtab;4–8</RBW-XREF
  37717. ></SB.SECTION.BLOCK.TABLE
  37718. ></ENTRY
  37719. ></RBW-ROW
  37720. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31gQn2d7nsem" TYPE="XREF-TEXTCOPY">Mapping Operations&rbwtab;4–12</RBW-XREF
  37721. ></SB.SECTION.BLOCK.TABLE
  37722. ></ENTRY
  37723. ></RBW-ROW
  37724. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="S1gQn1e4nsem" TYPE="XREF-TEXTCOPY">Mapping Inheritance&rbwtab;4–18</RBW-XREF
  37725. ></SB.SECTION.BLOCK.TABLE
  37726. ></ENTRY
  37727. ></RBW-ROW
  37728. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="q1gQn144nsem" TYPE="XREF-TEXTCOPY">Mapping Associations&rbwtab;4–21</RBW-XREF
  37729. ></SB.SECTION.BLOCK.TABLE
  37730. ></ENTRY
  37731. ></RBW-ROW
  37732. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="x3gQn310nsem" TYPE="XREF-TEXTCOPY">Mapping Associations as Classes&rbwtab;4–27</RBW-XREF
  37733. ></SB.SECTION.BLOCK.TABLE
  37734. ></ENTRY
  37735. ></RBW-ROW
  37736. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="ThJUm389rlb" TYPE="XREF-TEXTCOPY">Mapping Aggregations&rbwtab;4–29</RBW-XREF
  37737. ></SB.SECTION.BLOCK.TABLE
  37738. ></ENTRY
  37739. ></RBW-ROW
  37740. ></TBODY
  37741. ></TGROUP
  37742. ></RBW-TABLE
  37743. ></LABEL
  37744. ><SECTION><S.SECTION.HEAD>Introduction</S.SECTION.HEAD
  37745. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37746. >Mapping Non&truehy;Persistent Classes into Ada 95 Code</L.LABEL
  37747. ><B.BODY><RBW-IDXTERM TERM1="class" TERM2="in non-persistent code generation"></RBW-IDXTERM
  37748. >Code generation in ObjectTeam is the process of translating diagrams into program code. In the Object Design Phase, you prepare Class Diagrams and their attributes, operations and associations with each other. When generating Ada 95 code only Class Diagrams are used. Also, code is only generated for only for non&truehy;persistent classes.</B.BODY
  37749. ><B.BODY>During design, you define a class more precisely by specifying its features:</B.BODY
  37750. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00349.tif" origseq="6" origtype="I" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  37751. ></FA.FIGURE.ANCHOR
  37752. ></LABEL
  37753. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37754. >Class characteristics generate equivalent Ada 95 constructs</L.LABEL
  37755. ><B.BODY>ObjectTeam produces the equivalent Ada 95 constructs for each of the following characteristics of a class:</B.BODY
  37756. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37757. ></RBW-AUTOGEN
  37758. ></RBW-MARKER
  37759. ><RBW-PARABODY>Attributes </RBW-PARABODY
  37760. ></LB.LIST.BULLET
  37761. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37762. ></RBW-AUTOGEN
  37763. ></RBW-MARKER
  37764. ><RBW-PARABODY>Operations</RBW-PARABODY
  37765. ></LB.LIST.BULLET
  37766. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37767. ></RBW-AUTOGEN
  37768. ></RBW-MARKER
  37769. ><RBW-PARABODY>Relationships (or Associations)</RBW-PARABODY
  37770. ></LB.LIST.BULLET
  37771. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37772. ></RBW-AUTOGEN
  37773. ></RBW-MARKER
  37774. ><RBW-PARABODY>Inheritance</RBW-PARABODY
  37775. ></LB.LIST.BULLET
  37776. ></LABEL
  37777. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37778. >Caveats</L.LABEL
  37779. ><B.BODY>ObjectTeam’s implementation for Ada 95 has these caveats:</B.BODY
  37780. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37781. ></RBW-AUTOGEN
  37782. ></RBW-MARKER
  37783. ><RBW-PARABODY>A class must have at least one attribute and one operation in order to have code generation performed.</RBW-PARABODY
  37784. ></LB.LIST.BULLET
  37785. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37786. ></RBW-AUTOGEN
  37787. ></RBW-MARKER
  37788. ><RBW-PARABODY>Only single inheritance is supported (this is a limitation in the Ada 95 language).</RBW-PARABODY
  37789. ></LB.LIST.BULLET
  37790. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  37791. ></RBW-AUTOGEN
  37792. ></RBW-MARKER
  37793. ><RBW-PARABODY>Bi&truehy;Directional associations (associations with role names on each side) generate code that will not compile. <RBW-XREF REFID="x3gQn310nsem" TYPE="XREF-TEXTCOPY">Mapping Associations as Classes</RBW-XREF
  37794. > describes an alternate method.</RBW-PARABODY
  37795. ></LB.LIST.BULLET
  37796. ></LABEL
  37797. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37798. >Exanple</L.LABEL
  37799. ><B.BODY>ObjectTeam maps an ObjectTeam class into an Ada record type defined in its own package. The root class of an inheritance hierarchy maps to an Ada 95 tagged record type. Source files for both package spec and body are generated. Here is a short example:</B.BODY
  37800. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00350.tif" origseq="4" origtype="I" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  37801. ></FA.FIGURE.ANCHOR
  37802. ><EWM.EXAMPLEW.MONO>Package Object_Class is</EWM.EXAMPLEW.MONO
  37803. ><EWM.EXAMPLEW.MONO>   type Instance is [tagged] record</EWM.EXAMPLEW.MONO
  37804. ><EWM.EXAMPLEW.MONO>    Object_Id: Integer;</EWM.EXAMPLEW.MONO
  37805. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  37806. ><EWM.EXAMPLEW.MONO>   type Link is access Instance;</EWM.EXAMPLEW.MONO
  37807. ><EWM.EXAMPLEW.MONO>   function Get_Object_Name (Self: Instance) return String;</EWM.EXAMPLEW.MONO
  37808. ><EWM.EXAMPLEW.MONO>End Object_Class;</EWM.EXAMPLEW.MONO
  37809. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  37810. ><EWM.EXAMPLEW.MONO>Package Body Object_Class is</EWM.EXAMPLEW.MONO
  37811. ><EWM.EXAMPLEW.MONO>   function Get_Object_Name (Self: Instance) return String is</EWM.EXAMPLEW.MONO
  37812. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  37813. ><EWM.EXAMPLEW.MONO>   &truehy;&truehy;OT!! Implement this subprogram !!</EWM.EXAMPLEW.MONO
  37814. ><EWM.EXAMPLEW.MONO>   end Get_Object_Name;</EWM.EXAMPLEW.MONO
  37815. ><EWM.EXAMPLEW.MONO>End Object_Class;</EWM.EXAMPLEW.MONO
  37816. ></LABEL
  37817. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37818. >Editing class properties</L.LABEL
  37819. ><B.BODY>You can edit the properties of a class, its attributes, operations, parameters, and data types in the Object Design phase. You do this by selecting the class symbol then by choosing Edit Properties<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  37820. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  37821. > from the Item menu on the Class Diagram editor’s menubar.</B.BODY
  37822. ><B.BODY>The <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  37823. >properties you establish for a class and its characteristics determine the code that is generated for the class. Some properties may generate something other than a class in the resulting code, such as a new type.</B.BODY
  37824. ></LABEL
  37825. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37826. >Class visibility controls read/write access </L.LABEL
  37827. ><B.BODY>The Class Visibility<RBW-IDXTERM TERM1="Class visibility" TERM2="editing properties"></RBW-IDXTERM
  37828. ><RBW-IDXTERM TERM1="Classes" TERM2="visibility property"></RBW-IDXTERM
  37829. > property establishes read/write access<RBW-IDXTERM TERM1="Read/Write access" TERM2="class visibility property"></RBW-IDXTERM
  37830. > to the record type of the class.<RBW-IDXTERM TERM1="Record types" TERM2="setting class visibility"></RBW-IDXTERM
  37831. > The record types are <CX5FX5FTERM>Public</CX5FX5FTERM
  37832. > (the default), <CX5FX5FTERM>Private</CX5FX5FTERM
  37833. >, <CX5FX5FTERM>Limited</CX5FX5FTERM
  37834. >,  or <CX5FX5FTERM>Opaque</CX5FX5FTERM
  37835. >. </B.BODY
  37836. ></LABEL
  37837. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37838. >Record and access type names</L.LABEL
  37839. ><B.BODY>By default, the Ada95 code generator produces a record type named “Instance” and an access type named “Link” for each ObjectTeam Class.</B.BODY
  37840. ><B.BODY>You can customize the name used for the record type by modifying the M4 variable M4_Ada95_Class_Record_Type_Name. Simularly, you can customize the name used for the access type by modifying the variable M4_Ada95_Class_Access_Type_Name. You must do so, however, before generating code.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  37841. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  37842. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  37843. ></B.BODY
  37844. ><B.BODY>See Chapter 8, Configuring the APDT Code Generators, for more information on M4 variables affecting code generation. </B.BODY
  37845. ><B.BODY>If the access type<RBW-IDXTERM TERM1="Access type" TERM2="optional for a class"></RBW-IDXTERM
  37846. ><RBW-IDXTERM TERM1="Classes" TERM2="access type is not required"></RBW-IDXTERM
  37847. > is not required for a class, you can include the following length clause in the appropriate <CX5FX5FFILE.NAME>&truehy;OT Analyze</CX5FX5FFILE.NAME
  37848. > section of the package specification so that it does not reserve storage for the collection associated with the access type:<RBW-IDXTERM TERM1="Access type" TERM2="length clause"></RBW-IDXTERM
  37849. > </B.BODY
  37850. ><E.EXAMPLE>for Link’storage_size use 0;</E.EXAMPLE
  37851. ><B.BODY>Below are examples of the Ada 95 code that is generated for the class example on the previous page, for each record type. The tagged keyword is generated for the top class in an inheritance hierarchy<RBW-IDXTERM TERM1="Ada code examples" TERM2="class record types"></RBW-IDXTERM
  37852. >. </B.BODY
  37853. ></LABEL
  37854. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37855. >Code generated for a class with public record type<RBW-IDXTERM TERM1="Public record types" TERM2="code example"></RBW-IDXTERM
  37856. ><RBW-IDXTERM TERM1="Classes" TERM2="public record types"></RBW-IDXTERM
  37857. ></L.LABEL
  37858. ><EM.EXAMPLE.MONO>package Object_Class is</EM.EXAMPLE.MONO
  37859. ><EM.EXAMPLE.MONO>   type Instance is [ tagged ] record</EM.EXAMPLE.MONO
  37860. ><EM.EXAMPLE.MONO>      Object_Id: Integer;</EM.EXAMPLE.MONO
  37861. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  37862. ><EM.EXAMPLE.MONO>   type Link is access Instance; </EM.EXAMPLE.MONO
  37863. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String;</EM.EXAMPLE.MONO
  37864. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  37865. ><EM.EXAMPLE.MONO>package body Object_Class is</EM.EXAMPLE.MONO
  37866. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String is</EM.EXAMPLE.MONO
  37867. ><EM.EXAMPLE.MONO>   begin</EM.EXAMPLE.MONO
  37868. ><EM.EXAMPLE.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EM.EXAMPLE.MONO
  37869. ><EM.EXAMPLE.MONO>   end Get_Object_Name;</EM.EXAMPLE.MONO
  37870. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  37871. ></LABEL
  37872. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37873. >Code generated for a class with private record type<RBW-IDXTERM TERM1="Private record types" TERM2="code example"></RBW-IDXTERM
  37874. ><RBW-IDXTERM TERM1="Classes" TERM2="private record types"></RBW-IDXTERM
  37875. ></L.LABEL
  37876. ><EM.EXAMPLE.MONO>package Object_Class is</EM.EXAMPLE.MONO
  37877. ><EM.EXAMPLE.MONO>   type Instance is [ tagged ] private;</EM.EXAMPLE.MONO
  37878. ><EM.EXAMPLE.MONO>   type Link is access Instance;   </EM.EXAMPLE.MONO
  37879. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String;</EM.EXAMPLE.MONO
  37880. ><EM.EXAMPLE.MONO>private</EM.EXAMPLE.MONO
  37881. ><EM.EXAMPLE.MONO>   type Instance is [ tagged ] record</EM.EXAMPLE.MONO
  37882. ><EM.EXAMPLE.MONO>      Object_Id: Integer;</EM.EXAMPLE.MONO
  37883. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  37884. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  37885. ><EM.EXAMPLE.MONO>   (Package body is the same as Public’s)</EM.EXAMPLE.MONO
  37886. ></LABEL
  37887. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37888. >Code generated for a class with limited record type<RBW-IDXTERM TERM1="Limited record type" TERM2="code example"></RBW-IDXTERM
  37889. ><RBW-IDXTERM TERM1="Classes" TERM2="Limited record types"></RBW-IDXTERM
  37890. ></L.LABEL
  37891. ><EM.EXAMPLE.MONO>package Object_Class is</EM.EXAMPLE.MONO
  37892. ><EM.EXAMPLE.MONO>   type Instance is [ tagged ] limited private;</EM.EXAMPLE.MONO
  37893. ><EM.EXAMPLE.MONO>   type Link is access Instance;  </EM.EXAMPLE.MONO
  37894. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String;</EM.EXAMPLE.MONO
  37895. ><EM.EXAMPLE.MONO>private</EM.EXAMPLE.MONO
  37896. ><EM.EXAMPLE.MONO>   type Instance is [ tagged ] record</EM.EXAMPLE.MONO
  37897. ><EM.EXAMPLE.MONO>      Object_Id: Integer;</EM.EXAMPLE.MONO
  37898. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  37899. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  37900. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  37901. ><EM.EXAMPLE.MONO>   (Package body is same as Public’s)</EM.EXAMPLE.MONO
  37902. ></LABEL
  37903. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37904. >Code generated for a class with opaque record type<RBW-IDXTERM TERM1="Opaque record types" TERM2="code example"></RBW-IDXTERM
  37905. ><RBW-IDXTERM TERM1="Classes" TERM2="Opaque record types"></RBW-IDXTERM
  37906. ></L.LABEL
  37907. ><EM.EXAMPLE.MONO>package Object_Class is</EM.EXAMPLE.MONO
  37908. ><EM.EXAMPLE.MONO>   type Instance is limited private;</EM.EXAMPLE.MONO
  37909. ><EM.EXAMPLE.MONO>   type Link is access Instance;</EM.EXAMPLE.MONO
  37910. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String;</EM.EXAMPLE.MONO
  37911. ><EM.EXAMPLE.MONO>private</EM.EXAMPLE.MONO
  37912. ><EM.EXAMPLE.MONO>   type Data;</EM.EXAMPLE.MONO
  37913. ><EM.EXAMPLE.MONO>   type Instance is [ tagged ] access Data;</EM.EXAMPLE.MONO
  37914. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  37915. ><EM.EXAMPLE.MONO>package body Object_Class is</EM.EXAMPLE.MONO
  37916. ><EM.EXAMPLE.MONO>   type Data is [ tagged ] record</EM.EXAMPLE.MONO
  37917. ><EM.EXAMPLE.MONO>      Object_Id: Integer;</EM.EXAMPLE.MONO
  37918. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  37919. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String is</EM.EXAMPLE.MONO
  37920. ><EM.EXAMPLE.MONO>   begin</EM.EXAMPLE.MONO
  37921. ><EM.EXAMPLE.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EM.EXAMPLE.MONO
  37922. ><EM.EXAMPLE.MONO>   end Get_Object_Name;</EM.EXAMPLE.MONO
  37923. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  37924. ></LABEL
  37925. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37926. >Code generated for classes with private extension record type<RBW-IDXTERM TERM1="Opaque record types" TERM2="code example"></RBW-IDXTERM
  37927. ><RBW-IDXTERM TERM1="Classes" TERM2="Opaque record types"></RBW-IDXTERM
  37928. ></L.LABEL
  37929. ><B.BODY>Note that the Private Extensions type is valid only for child classes in an inheritance hierarchy. The example below assumes that <parent> is the class name of the parent. </B.BODY
  37930. ><E.EXAMPLE>package Object_Class is</E.EXAMPLE
  37931. ><E.EXAMPLE>&rbwtab;type Instance is new <parent> with private;</E.EXAMPLE
  37932. ><E.EXAMPLE>&rbwtab;type Link is access Instance;</E.EXAMPLE
  37933. ><E.EXAMPLE>&rbwtab;function Get_Object_Name (Self: Instance) return String;</E.EXAMPLE
  37934. ><E.EXAMPLE>private</E.EXAMPLE
  37935. ><E.EXAMPLE>&rbwtab;type Instance is new <parent> with record</E.EXAMPLE
  37936. ><E.EXAMPLE>&rbwtab;&rbwtab;Object_Id: Integer;</E.EXAMPLE
  37937. ><E.EXAMPLE>&rbwtab;end record;</E.EXAMPLE
  37938. ><E.EXAMPLE>end Object_Class;</E.EXAMPLE
  37939. ></LABEL
  37940. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37941. >Defining controlled types</L.LABEL
  37942. ><B.BODY>By deriving a class from a controlled or limited controlled type, Ada 95 allows a class to define initialization, finalization, and adjustment functionality. To support this concept, each ObjectTeam class has a Controlled property that specifies whether it is Controlled, Limited Controlled, or Not Controlled. The default is Not Controlled.</B.BODY
  37943. ><B.BODY>When a class is set to Controlled then that class, when generated into Ada 95, will be a subclass of the standard Ada package <CX5FX5FFILE.NAME>Ada.Finalization.Controlled</CX5FX5FFILE.NAME
  37944. >. It will therefore implicitly have Initialize, Finalize, and Adjust procedures. Note that these procedures will not appear in the generated code, since they are defined in the parent. They can be overwritten by creating operations in the class called Initialize, Finalize, and Adjust. When a class is Limited Controlled, the generated class will be a subclass of <CX5FX5FFILE.NAME>Ada.Finalization.Limited_Controlled</CX5FX5FFILE.NAME
  37945. >, and will implicitly have Initialize, Adjust, and Finalize procedures.</B.BODY
  37946. ><B.BODY>As an example, if the Object_Class class from the start of this chapter is generated with Control set to Controlled (and public access), the following code is generated.</B.BODY
  37947. ><EWM.EXAMPLEW.MONO>package Object_Class is</EWM.EXAMPLEW.MONO
  37948. ><EWM.EXAMPLEW.MONO>   type Instance is new Ada.Finalization.Controlled with</EWM.EXAMPLEW.MONO
  37949. ><EWM.EXAMPLEW.MONO>      Object_Id: Integer;</EWM.EXAMPLEW.MONO
  37950. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  37951. ><EWM.EXAMPLEW.MONO>   type Link is access Instance; </EWM.EXAMPLEW.MONO
  37952. ><EWM.EXAMPLEW.MONO>   function Get_Object_Name (Self: Instance) return String;</EWM.EXAMPLEW.MONO
  37953. ><EWM.EXAMPLEW.MONO>end Object_Class;</EWM.EXAMPLEW.MONO
  37954. ><EWM.EXAMPLEW.MONO>package body Object_Class is</EWM.EXAMPLEW.MONO
  37955. ><EWM.EXAMPLEW.MONO>   function Get_Object_Name (Self: Instance) return String is</EWM.EXAMPLEW.MONO
  37956. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  37957. ><EWM.EXAMPLEW.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EWM.EXAMPLEW.MONO
  37958. ><EWM.EXAMPLEW.MONO>   end Get_Object_Name;</EWM.EXAMPLEW.MONO
  37959. ><EWM.EXAMPLEW.MONO>end Object_Class;</EWM.EXAMPLEW.MONO
  37960. ><B.BODY>In an inheritance hierarchy, only the root class is derived from <CX5FX5FFILE.NAME>Ada.Finalization.Controlled</CX5FX5FFILE.NAME
  37961. >. Therefore, the code generator ignores the Controlled property for all subclasses. When the root class is a controlled type, it is not generated as a tagged type. Initialize, Finalize, or Adjust procedures, if defined in the root class, may need to be overridden in the child classes.</B.BODY
  37962. ></LABEL
  37963. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37964. >Child syntax</L.LABEL
  37965. ><B.BODY>Ada 95 supports two syntaxes for package names. A package name can have a simple name, such as Object_Class, or it can have a name in Child Library Unit format, in which the name is a composition of names from the derivation tree for the class. For example, if class B is a subclass of A, and C is a subclass of B, then C could be denoted as A.B.C. This is termed child syntax.</B.BODY
  37966. ><B.BODY>The Ada 95 code generator supports a Child Syntax property for classes. The value is False, by default. When this property is set to True for a class, the class name will be generated in its child syntax form. This not only includes how the name will appear in its defining specification and body file, but also how the class name will appear in all references and associations from other classes.</B.BODY
  37967. ></LABEL
  37968. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37969. >Representing abstract classes and operations</L.LABEL
  37970. ><B.BODY>You can represent abstract classes and operations in ObjectTeam using the standard UML notation.</B.BODY
  37971. ><B.BODY>The code generator interprets any class containing an abstract operation as an abstract class. An abstract operation is identified in Class Diagrams by the keyword {abstract} after the operation declaration. An abstract operation cannot be implemented by its declaring class—it must be implemented in a subclass.</B.BODY
  37972. ><B.BODY>Abstract classes that are generated in Ada 95 code have the keyword <CX5FX5FTERM>abstract</CX5FX5FTERM
  37973. > in their record types. Abstract operations have the keywords <CX5FX5FTERM>is abstract</CX5FX5FTERM
  37974. > following the declaration of their return types. </B.BODY
  37975. ></LABEL
  37976. ></SECTION
  37977. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="38866"></RBW-ANCHOR
  37978. >Mapping Attributes</S.SECTION.HEAD
  37979. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37980. >Translating data attribute syntax</L.LABEL
  37981. ><B.BODY>The <RBW-IDXTERM TERM1="Attributes of a class" TERM2="Ada mapping"></RBW-IDXTERM
  37982. >attributes of a class map to components of the record type.<RBW-IDXTERM TERM1="Ada record types" TERM2="attribute mapping"></RBW-IDXTERM
  37983. > Class based attributes (those prefixed by a $) map to objects declared in the same package as the type.</B.BODY
  37984. ><B.BODY>Use the following syntax to specify the <RBW-IDXTERM TERM1="Data types" TERM2="attribute syntax"></RBW-IDXTERM
  37985. >data type of an attribute of a class.<RBW-IDXTERM TERM1="Classes" TERM2="data types for attributes"></RBW-IDXTERM
  37986. ><RBW-IDXTERM TERM1="Attributes" TERM2="data types in classes"></RBW-IDXTERM
  37987. > </B.BODY
  37988. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00351.unk" origfile="pics/attsytx" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  37989. ></FA.FIGURE.ANCHOR
  37990. ><B.BODY>Specify a standard data type such as <CX5FX5FTERM>integer</CX5FX5FTERM
  37991. > or the name of another class. The optional dollar sign specifies a class&truehy;based attribute.<RBW-IDXTERM TERM1="Class-based attributes" TERM2="syntax"></RBW-IDXTERM
  37992. ><RBW-IDXTERM TERM1="Attributes" TERM2="class-based"></RBW-IDXTERM
  37993. > That is, it applies to the entire class, not an instance of a class.</B.BODY
  37994. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  37995. ></RBW-AUTOGEN
  37996. >[$] means the attribute may optionally be prefixed by a $, indicating the attribute is class&truehy;based.</T.TIP
  37997. ></LABEL
  37998. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  37999. >Ada 95 constructs</L.LABEL
  38000. ><B.BODY>The code generator produces the following Ada 95 constructs for an att<RBW-IDXTERM TERM1="Attribute properties" TERM2="Ada constructs"></RBW-IDXTERM
  38001. >ribu<RBW-IDXTERM TERM1="Properties" TERM2="Ada constructs"></RBW-IDXTERM
  38002. >te ba<RBW-IDXTERM TERM1="Ada constructs" TERM2="attributes"></RBW-IDXTERM
  38003. >sed on the value of its read/write access property.</B.BODY
  38004. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="168p"><COLSPEC COLNAME="2" COLWIDTH="277p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Ada</CELLHEADING
  38005. ></ENTRY
  38006. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Access</CELLHEADING
  38007. ></ENTRY
  38008. ></RBW-ROW
  38009. ></THEAD
  38010. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="Class record component" TERM2="attribute properties"></RBW-IDXTERM
  38011. >class record component</CELLBODY
  38012. ></ENTRY
  38013. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private or public, depending on the Class Visibility property setting</CELLBODY
  38014. ></ENTRY
  38015. ></RBW-ROW
  38016. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>get member function</CELLBODY
  38017. ></ENTRY
  38018. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private or public depending on the Read/Write Access attribute setting. No function is generated if Read/Write is set to None.</CELLBODY
  38019. ></ENTRY
  38020. ></RBW-ROW
  38021. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>set</CX5FX5FFILE.NAME
  38022. > member function</CELLBODY
  38023. ></ENTRY
  38024. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private or public depending on the Read/Write Access attribute setting. No function is generated if Read/Write is set to None.</CELLBODY
  38025. ></ENTRY
  38026. ></RBW-ROW
  38027. ></TBODY
  38028. ></TGROUP
  38029. ></RBW-TABLE
  38030. ></LABEL
  38031. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38032. >Representing user&truehy;defined subtypes</L.LABEL
  38033. ><B.BODY>To represent a user&truehy;defined subtype<RBW-IDXTERM TERM1="Classes" TERM2="user-defined subtypes"></RBW-IDXTERM
  38034. ><RBW-IDXTERM TERM1="User-defined subtypes" TERM2="representing in a class"></RBW-IDXTERM
  38035. > in the Class Diagram, create a class with a single attribute whose data type is a standard Ada 95 type. The class must not contain: </B.BODY
  38036. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38037. ></RBW-AUTOGEN
  38038. ></RBW-MARKER
  38039. ><RBW-PARABODY>Associations that generate code for the class</RBW-PARABODY
  38040. ></LB.LIST.BULLET
  38041. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38042. ></RBW-AUTOGEN
  38043. ></RBW-MARKER
  38044. ><RBW-PARABODY>Operations</RBW-PARABODY
  38045. ></LB.LIST.BULLET
  38046. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38047. ></RBW-AUTOGEN
  38048. ></RBW-MARKER
  38049. ><RBW-PARABODY>Super classes</RBW-PARABODY
  38050. ></LB.LIST.BULLET
  38051. ><B.BODY>The attribute name is not important. However, you may want to insert additional text after the standard type. Select the class name in the left window of the Edit Properties dialog box, then add this text in the Subtype Text field.</B.BODY
  38052. ></LABEL
  38053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38054. >Defining non&truehy;standard types</L.LABEL
  38055. ><B.BODY>To have the Ada code generator include non&truehy;standard types and subtypes in a system’s specification file, you must first define them. Do this in the system’s user&truehy;defined types specification file named <CX5FX5FFILE.NAME>system_name_Types.ads</CX5FX5FFILE.NAME
  38056. >. Once defined, you can include these non&truehy;standard types and subtypes in all other system specification files that reference them.</B.BODY
  38057. ><B.BODY>System specification file format:</B.BODY
  38058. ><E.EXAMPLE>&truehy;&truehy; Specification file for Sample_Types</E.EXAMPLE
  38059. ><E.EXAMPLE>&truehy;&truehy;OT Ignore</E.EXAMPLE
  38060. ><E.EXAMPLE>&truehy;&truehy;OT Analyze</E.EXAMPLE
  38061. ><E.EXAMPLE>package Sample_Type is</E.EXAMPLE
  38062. ><E.EXAMPLE>&truehy;&truehy;OT Ignore</E.EXAMPLE
  38063. ><E.EXAMPLE>&truehy;&truehy;OT Analyze</E.EXAMPLE
  38064. ><E.EXAMPLE><non&truehy;standard types and subtype definitions of the system></E.EXAMPLE
  38065. ><E.EXAMPLE>&truehy;&truehy;OT Ignore</E.EXAMPLE
  38066. ><E.EXAMPLE>&truehy;&truehy;OT Analyze</E.EXAMPLE
  38067. ><E.EXAMPLE>end Sample_Types;</E.EXAMPLE
  38068. ><E.EXAMPLE>&truehy;&truehy;OT Ignore</E.EXAMPLE
  38069. ><E.EXAMPLE>&truehy;&truehy;OT Analyze</E.EXAMPLE
  38070. ></LABEL
  38071. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38072. >Representing a subtype in a class symbol</L.LABEL
  38073. ><B.BODY>The example below shows how to represent a subtype in a Class Diagram using the following class symbol:</B.BODY
  38074. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00352.tif" origseq="18" origtype="I" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38075. ></FA.FIGURE.ANCHOR
  38076. ><B.BODY>Edit the properties for this class, then add the following entry in the Subtype Text field:<RBW-IDXTERM TERM1="Class properties" TERM2="subtype text"></RBW-IDXTERM
  38077. ><RBW-IDXTERM TERM1="Subtype text" TERM2="class properties"></RBW-IDXTERM
  38078. ></B.BODY
  38079. ><E.EXAMPLE>Subtype text = (1..20)</E.EXAMPLE
  38080. ><B.BODY>This generates the following Ada 95 code in the user section (after a <CX5FX5FFILE.NAME>&truehy;&truehy;OT Analyze</CX5FX5FFILE.NAME
  38081. > comment) of the user&truehy;defined types<RBW-IDXTERM TERM1="User-defined types file" TERM2="code for subtypes"></RBW-IDXTERM
  38082. > file:</B.BODY
  38083. ><E.EXAMPLE>subtype String20 is Character (1 . . 20);</E.EXAMPLE
  38084. ></LABEL
  38085. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38086. >Defining enum types</L.LABEL
  38087. ><B.BODY>To define an enum type class,<RBW-IDXTERM TERM1="Classes" TERM2="defining enum types"></RBW-IDXTERM
  38088. > you must specify class&truehy;based attributes<RBW-IDXTERM TERM1="Class-based attributes" TERM2="enum types"></RBW-IDXTERM
  38089. ><RBW-IDXTERM TERM1="Attributes" TERM2="defining enum type classes"></RBW-IDXTERM
  38090. > (those specified with a $) of the type enum. Do not specify any associations that generate code for the typedef class,<RBW-IDXTERM TERM1="Typedef class" TERM2="defining enum types"></RBW-IDXTERM
  38091. > operations, subclasses, or superclasses.</B.BODY
  38092. ><B.BODY>The following is an example of an enum class definition<RBW-IDXTERM TERM1="enum class" TERM2="example"></RBW-IDXTERM
  38093. ></B.BODY
  38094. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00353.tif" origseq="10" origtype="I" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38095. ></FA.FIGURE.ANCHOR
  38096. ><B.BODY>The resulting code is generated in the system types specification:</B.BODY
  38097. ><E.EXAMPLE>type EnumEx1 is (X,Y,Z);<RBW-IDXTERM TERM1="Ada code examples" TERM2="enum type classes"></RBW-IDXTERM
  38098. ></E.EXAMPLE
  38099. ></LABEL
  38100. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38101. >Editing attribute properties</L.LABEL
  38102. ><B.BODY>The value of an attribute’s Read/Write Access property determines in which section of the specification file, private or public, the code <RBW-IDXTERM TERM1="Package specification file" TERM2="get and set subprograms"></RBW-IDXTERM
  38103. >generator <RBW-IDXTERM TERM1="set procedure" TERM2="attribute properties"></RBW-IDXTERM
  38104. >produces <RBW-IDXTERM TERM1="Attributes" TERM2="properties, set procedure"></RBW-IDXTERM
  38105. >the <RBW-IDXTERM TERM1="Properties" TERM2="attributes, get function"></RBW-IDXTERM
  38106. >get <RBW-IDXTERM TERM1="get function" TERM2="attribute properties"></RBW-IDXTERM
  38107. >and set subprograms.</B.BODY
  38108. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Attribute access properties:</CELLHEADING
  38109. ></ENTRY
  38110. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  38111. ></ENTRY
  38112. ></RBW-ROW
  38113. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>public access</CELLHEADING
  38114. ></ENTRY
  38115. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>private access</CELLHEADING
  38116. ></ENTRY
  38117. ></RBW-ROW
  38118. ></THEAD
  38119. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set set</CELLBODY
  38120. ></ENTRY
  38121. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>get set</CELLBODY
  38122. ></ENTRY
  38123. ></RBW-ROW
  38124. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public &truehy; Public (default)</CELLBODY
  38125. ></ENTRY
  38126. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private &truehy; Private</CELLBODY
  38127. ></ENTRY
  38128. ></RBW-ROW
  38129. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public &truehy; Private</CELLBODY
  38130. ></ENTRY
  38131. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private &truehy; None</CELLBODY
  38132. ></ENTRY
  38133. ></RBW-ROW
  38134. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public &truehy; None</CELLBODY
  38135. ></ENTRY
  38136. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>None &truehy; None</CELLBODY
  38137. ></ENTRY
  38138. ></RBW-ROW
  38139. ></TBODY
  38140. ></TGROUP
  38141. ></RBW-TABLE
  38142. ></LABEL
  38143. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38144. >Get and set subprograms in Ada 95 packages</L.LABEL
  38145. ><B.BODY>For each attribute A of type T, the code generator creates these additional subprograms based on the attribute’s read/write access. If set to None then no Get/Set sub&truehy;programs are generated.</B.BODY
  38146. ><B.BODY>In the package specification file:<RBW-IDXTERM TERM1="Package specification file" TERM2="get and set subprograms"></RBW-IDXTERM
  38147. ><RBW-IDXTERM TERM1="get and set subprograms" TERM2="specification file"></RBW-IDXTERM
  38148. ><RBW-IDXTERM TERM1="Ada code examples" TERM2="get and set in Ada packages"></RBW-IDXTERM
  38149. ></B.BODY
  38150. ><EM.EXAMPLE.MONO>function Get_A(Self: Instance) return T;</EM.EXAMPLE.MONO
  38151. ><EM.EXAMPLE.MONO>procedure Set_A(Self: in out Instance; New_A: T);</EM.EXAMPLE.MONO
  38152. ><B.BODY>In the package body file:<RBW-IDXTERM TERM1="Package body files" TERM2="get and set subprograms"></RBW-IDXTERM
  38153. ></B.BODY
  38154. ><EM.EXAMPLE.MONO>function Get_A(Self: Instance) return T is</EM.EXAMPLE.MONO
  38155. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  38156. ><EM.EXAMPLE.MONO>   return Self.A;</EM.EXAMPLE.MONO
  38157. ><EM.EXAMPLE.MONO>end Get_A;</EM.EXAMPLE.MONO
  38158. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38159. ><EM.EXAMPLE.MONO>procedure Set_A(Self: in out Instance; New_A: T) is</EM.EXAMPLE.MONO
  38160. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  38161. ><EM.EXAMPLE.MONO>   Self.A := New_A;</EM.EXAMPLE.MONO
  38162. ><EM.EXAMPLE.MONO>end Set_A;</EM.EXAMPLE.MONO
  38163. ></LABEL
  38164. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38165. >Generating get and set subprograms for attribute properties</L.LABEL
  38166. ><B.BODY>The following example shows how the code generator converts the attributes of a class into Ada 95 code.<RBW-IDXTERM TERM1="Attributes of a class" TERM2="converted into Ada code"></RBW-IDXTERM
  38167. > The value of an attribute’s Read/Write Access property determines in which section of the package body and specification file the code generator produces the get and set subprograms.</B.BODY
  38168. ><B.BODY>Standard Type<RBW-IDXTERM TERM1="Standard types" TERM2="get and set subprograms"></RBW-IDXTERM
  38169. ><RBW-IDXTERM TERM1="Class attributes" TERM2="Ada code example"></RBW-IDXTERM
  38170. >:</B.BODY
  38171. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00354.tif" origseq="26" origtype="I" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38172. ></FA.FIGURE.ANCHOR
  38173. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  38174. ></RBW-AUTOGEN
  38175. >Constructors<RBW-IDXTERM TERM1="Constructors"></RBW-IDXTERM
  38176. > are not generated in Ada code. However, if you want to define a class with one attribute and no operations, you may add the $create() operation to denote that the class is not a typedef (subtype) class.<RBW-IDXTERM TERM1="$create() operation"></RBW-IDXTERM
  38177. ><RBW-IDXTERM TERM1="Operations" TERM2="$create()"></RBW-IDXTERM
  38178. > The code generator produces the Ada files but not a subtype statement. The $create() operation does not generate any code.</N.NOTE
  38179. ><B.BODY>Ada 95 Specification<RBW-IDXTERM TERM1="Standard data types" TERM2="Ada specification"></RBW-IDXTERM
  38180. ><RBW-IDXTERM TERM1="Ada specification file" TERM2="get and set subprograms"></RBW-IDXTERM
  38181. >:</B.BODY
  38182. ><EM.EXAMPLE.MONO>package DataAttribEx is</EM.EXAMPLE.MONO
  38183. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  38184. ><EM.EXAMPLE.MONO>      Age: Integer;</EM.EXAMPLE.MONO
  38185. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  38186. ><EM.EXAMPLE.MONO>   function Get_Age (Self : Instance) return Integer;</EM.EXAMPLE.MONO
  38187. ><EM.EXAMPLE.MONO>   procedure Set_Age (Self : Instance; New_Age: Integer);</EM.EXAMPLE.MONO
  38188. ><EM.EXAMPLE.MONO>end DataAttribEx;</EM.EXAMPLE.MONO
  38189. ></LABEL
  38190. ></SECTION
  38191. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="31gQn2d7nsem"></RBW-ANCHOR
  38192. >Mapping Operations</S.SECTION.HEAD
  38193. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38194. >Introduction</L.LABEL
  38195. ><B.BODY>Operations of a an ObjectTeam class map to primitive subprograms of an Ada record type.<RBW-IDXTERM TERM1="Operations" TERM2="Ada code mapping"></RBW-IDXTERM
  38196. ></B.BODY
  38197. ></LABEL
  38198. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38199. >Specifying operation syntax</L.LABEL
  38200. ><B.BODY>Use the following syntax to specify the operations of a class. The optional dollar sign specifies a class&truehy;based operation.<RBW-IDXTERM TERM1="Class-based operations" TERM2="representing in OMT"></RBW-IDXTERM
  38201. > That is, it applies to the entire class rather than an instance of the class.</B.BODY
  38202. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00355.unk" origfile="pics/oprsytx.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38203. ></FA.FIGURE.ANCHOR
  38204. ><B.BODY>Ada 95 constructs generated in specification and body files<RBW-IDXTERM TERM1="Ada constructs" TERM2="for operations"></RBW-IDXTERM
  38205. >:</B.BODY
  38206. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Ada 95 package</CELLHEADING
  38207. ></ENTRY
  38208. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Ada 95 construct</CELLHEADING
  38209. ></ENTRY
  38210. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Access</CELLHEADING
  38211. ></ENTRY
  38212. ></RBW-ROW
  38213. ></THEAD
  38214. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>package specification</CELLBODY
  38215. ></ENTRY
  38216. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>subprogram specification</CELLBODY
  38217. ></ENTRY
  38218. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>private or public (based on access property setting)</CELLBODY
  38219. ></ENTRY
  38220. ></RBW-ROW
  38221. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>package body</CELLBODY
  38222. ></ENTRY
  38223. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>empty body</CELLBODY
  38224. ></ENTRY
  38225. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  38226. ></ENTRY
  38227. ></RBW-ROW
  38228. ></TBODY
  38229. ></TGROUP
  38230. ></RBW-TABLE
  38231. ></LABEL
  38232. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38233. >Operations you can specify for a class</L.LABEL
  38234. ><B.BODY>Listed below are examples of operations that you can specify for a class<RBW-IDXTERM TERM1="Classes" TERM2="specifying operations for"></RBW-IDXTERM
  38235. ><RBW-IDXTERM TERM1="Operations" TERM2="in a class"></RBW-IDXTERM
  38236. >. The subprogram declarations<RBW-IDXTERM TERM1="Subprogram declarations" TERM2="for operations"></RBW-IDXTERM
  38237. > the system generates for the operation (or method) are based on whether the operation property is public or private.<RBW-IDXTERM TERM1="Properties" TERM2="setting for operations"></RBW-IDXTERM
  38238. ></B.BODY
  38239. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper1()</CX5FX5FFILE.NAME
  38240. >, simple operation</EWM.EXAMPLEW.MONO
  38241. ><EWM.EXAMPLEW.MONO>   procedure Oper1 (Self : Instance);</EWM.EXAMPLEW.MONO
  38242. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper2()</CX5FX5FFILE.NAME
  38243. >:Integer, with standard return type</EWM.EXAMPLEW.MONO
  38244. ><EWM.EXAMPLEW.MONO>   function Oper2 (Self : Instance) return Integer;</EWM.EXAMPLEW.MONO
  38245. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper3(I: Integer): Date</CX5FX5FFILE.NAME
  38246. >, with one parameter and another class as the return type</EWM.EXAMPLEW.MONO
  38247. ><EWM.EXAMPLEW.MONO>   function Oper3 (Self : Instance; I : in Integer) return Date.Link;</EWM.EXAMPLEW.MONO
  38248. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$Oper4():Integer</CX5FX5FFILE.NAME
  38249. >, class&truehy;based operation with no parameters</EWM.EXAMPLEW.MONO
  38250. ><EWM.EXAMPLEW.MONO>   function Oper4 return Integer;</EWM.EXAMPLEW.MONO
  38251. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$Oper5(J:Integer):Integer</CX5FX5FFILE.NAME
  38252. >, class&truehy;based operation with one parameter</EWM.EXAMPLEW.MONO
  38253. ><EWM.EXAMPLEW.MONO>   function Oper5 (J : in Integer) return Integer;</EWM.EXAMPLEW.MONO
  38254. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper6(m:Integer)</CX5FX5FFILE.NAME
  38255. >, with one parameter type and no return type</EWM.EXAMPLEW.MONO
  38256. ><EWM.EXAMPLEW.MONO>   procedure Oper6  (Self : Instance; M : in Integer);</EWM.EXAMPLEW.MONO
  38257. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper7(d:Date)</CX5FX5FFILE.NAME
  38258. >, with another class as the parameter</EWM.EXAMPLEW.MONO
  38259. ><EWM.EXAMPLEW.MONO>   procedure Oper7 (Self : Instance; D : in Date.Link);</EWM.EXAMPLEW.MONO
  38260. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$Oper8()</CX5FX5FFILE.NAME
  38261. >, class&truehy;based operation with no parameters</EWM.EXAMPLEW.MONO
  38262. ><EWM.EXAMPLEW.MONO>   procedure Oper8;</EWM.EXAMPLEW.MONO
  38263. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$Oper9(J:Integer)</CX5FX5FFILE.NAME
  38264. >, class&truehy;based operation with one parameter </EWM.EXAMPLEW.MONO
  38265. ><EWM.EXAMPLEW.MONO>   procedure Oper9 (J : in Integer);</EWM.EXAMPLEW.MONO
  38266. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$create()</CX5FX5FFILE.NAME
  38267. >, indicates the class is not a typedef (subtype) class. </EWM.EXAMPLEW.MONO
  38268. ><EWM.EXAMPLEW.MONO>   No code is generated.</EWM.EXAMPLEW.MONO
  38269. ></LABEL
  38270. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38271. >Editing operation properties</L.LABEL
  38272. ><B.BODY>Use the<RBW-IDXTERM TERM1="Operation properties" TERM2="editing"></RBW-IDXTERM
  38273. > Edit Properties dialog box to specify properties of operations. The Method Access property determines in which section of the package specification, visible or private, the code generator produces the subprogram. The values are <RBW-IDXTERM TERM1="Methods" TERM2="operation properties"></RBW-IDXTERM
  38274. >public (the default) or private. There are also properties that allow you to specify whether or not an operation is classwide, and to specify a Tcl procedure to automatically generate the subprogram body.</B.BODY
  38275. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00356.unk" origfile="pics/prop2.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38276. ></FA.FIGURE.ANCHOR
  38277. ></LABEL
  38278. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38279. >Classwide operations</L.LABEL
  38280. ><B.BODY>If an Ada 95 function returns a value that can be of any type derived directly or indirectly from a certain tagged type (i.e. any subclass of a given root class) it is called a classwide function. To support this, the Ada 95 code generator defines an operation property called Classwide, which can either be False (the default) or True.   </B.BODY
  38281. ><B.BODY>When the property is set to True, the return type for the function in the generated code will be a type defined as an access to the class of the tagged type. This access type is defined as</B.BODY
  38282. ><B.BODY>type Class_Link is access all Instance’Class</B.BODY
  38283. ><B.BODY>where the text “_Link” in the above type name is created from the M4 variable M4_Ada95_Class_Access_Type, and may be configured by the user. (See Chapter 8, Configuring the APDT Code Generators for infomation on M4 variables affecting code generation). </B.BODY
  38284. ><B.BODY>For example, if in the Object_Class example at the start of this chapter, the Get_Object_Name() function’s Classwide property is set to True (if for example, the String class had subclasses corresponding to valid types that the function could return), then the following declaration would be generated for Object_Class (assuming public visibility) :</B.BODY
  38285. ><EWM.EXAMPLEW.MONO>package Object_Class is</EWM.EXAMPLEW.MONO
  38286. ><EWM.EXAMPLEW.MONO>   type Instance is new Ada.Finalization.Controlled with</EWM.EXAMPLEW.MONO
  38287. ><EWM.EXAMPLEW.MONO>      Object_Id: Integer;</EWM.EXAMPLEW.MONO
  38288. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  38289. ><EWM.EXAMPLEW.MONO>   type Link is access Instance; </EWM.EXAMPLEW.MONO
  38290. ><EWM.EXAMPLEW.MONO>   function Get_Object_Name (Self: Instance) return String.Class_Link;</EWM.EXAMPLEW.MONO
  38291. ><EWM.EXAMPLEW.MONO>end Object_Class;</EWM.EXAMPLEW.MONO
  38292. ><EWM.EXAMPLEW.MONO>package body Object_Class is</EWM.EXAMPLEW.MONO
  38293. ><EWM.EXAMPLEW.MONO>   function Get_Object_Name (Self: Instance) return String.Class_Link is</EWM.EXAMPLEW.MONO
  38294. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  38295. ><EWM.EXAMPLEW.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EWM.EXAMPLEW.MONO
  38296. ><EWM.EXAMPLEW.MONO>   end Get_Object_Name;</EWM.EXAMPLEW.MONO
  38297. ><EWM.EXAMPLEW.MONO>end Object_Class;</EWM.EXAMPLEW.MONO
  38298. ><B.BODY>The Classwide property for an operation is only relevant if the operation defines a function, as opposed to a procedure, since it only affects the return type for the function.</B.BODY
  38299. ><B.BODY>In addition, the property is only relevant if the type returned by the function maps to an Ada tagged type. See <RBW-XREF REFID="S1gQn1e4nsem" TYPE="XREF-TEXTCOPY">Mapping Inheritance</RBW-XREF
  38300. > for more information on the creation of Ada tagged types.</B.BODY
  38301. ></LABEL
  38302. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38303. >Generating operation body contents</L.LABEL
  38304. ><B.BODY>The initial code generated for the body of an operation contains an empty subprogram body and the following comment:<RBW-IDXTERM TERM1="Bodies of operations" TERM2="initial code generation"></RBW-IDXTERM
  38305. ><RBW-IDXTERM TERM1="Operations" TERM2="initial code for bodies"></RBW-IDXTERM
  38306. ><RBW-IDXTERM TERM1="Code generation" TERM2="initial body contents"></RBW-IDXTERM
  38307. ></B.BODY
  38308. ><E.EXAMPLE>&truehy; &truehy; !! Implement this subprogram !!</E.EXAMPLE
  38309. ><B.BODY>You must fill the empty bodies with the appropriate Ada 95 declarations, statements, and comments<RBW-IDXTERM TERM1="Comment lines" TERM2="code bodies"></RBW-IDXTERM
  38310. ><RBW-IDXTERM TERM1="Ada code files" TERM2="editing operation bodies"></RBW-IDXTERM
  38311. > between the User sections that appear throughout the generated code before compiling it. Otherwise, the compiler will report an error.</B.BODY
  38312. ></LABEL
  38313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38314. >Inserting code in the generated code files</L.LABEL
  38315. ><B.BODY>You can edit and insert your own code between the User sections of the specification file (indicated by the <CX5FX5FFILE.NAME>&truehy;&truehy;OT Ignore</CX5FX5FFILE.NAME
  38316. > and <CX5FX5FFILE.NAME>&truehy;&truehy;OT Analyze</CX5FX5FFILE.NAME
  38317. > comment lines) to fill in the bodies of operations. When you regenerate code, the code generator saves your code and inserts it in the appropriate section of the specification file.<RBW-IDXTERM TERM1="Operations" TERM2="editing bodies"></RBW-IDXTERM
  38318. ><RBW-IDXTERM TERM1="Operation bodies" TERM2="editing specification files"></RBW-IDXTERM
  38319. ><RBW-IDXTERM TERM1="Specification files" TERM2="filling in user sections"></RBW-IDXTERM
  38320. ><RBW-IDXTERM TERM1="User sections" TERM2="editing specification files"></RBW-IDXTERM
  38321. ></B.BODY
  38322. ></LABEL
  38323. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38324. >Generate the body using a Tcl procedure<RBW-IDXTERM TERM1="Code generation" TERM2="using Tcl to generate bodies"></RBW-IDXTERM
  38325. ></L.LABEL
  38326. ><B.BODY>You can also create a Tool Command Language (Tcl) procedure<RBW-IDXTERM TERM1="Tcl procedures" TERM2="for bodies of operations"></RBW-IDXTERM
  38327. > to automatically generate the body of an operation.<RBW-IDXTERM TERM1="Operation bodies" TERM2="generating automatically"></RBW-IDXTERM
  38328. > This is often done when generating code for the first time. For example, you can specify a Tcl procedure for a general purpose function, such as printOn, to print all the data members of a class to standard output. You can use this type of function for any class. The contents of the function are the same for every class; only the class is different. Specify the procedure as a class attribute for an operation.</B.BODY
  38329. ></LABEL
  38330. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38331. >Syntax for creating a Tcl procedure</L.LABEL
  38332. ><EM.EXAMPLE.MONO>proc operation::<attrib value> { oper class sect } { }</EM.EXAMPLE.MONO
  38333. ><EM.EXAMPLE.MONO>attrib value procedure name and class attribute value</EM.EXAMPLE.MONO
  38334. ><EM.EXAMPLE.MONO>oper         operation handle</EM.EXAMPLE.MONO
  38335. ><EM.EXAMPLE.MONO>class        class handle</EM.EXAMPLE.MONO
  38336. ><EM.EXAMPLE.MONO>sect         section handle</EM.EXAMPLE.MONO
  38337. ><B.BODY>Create the procedure in one of the following Tcl scripts:</B.BODY
  38338. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38339. ></RBW-AUTOGEN
  38340. ></RBW-MARKER
  38341. ><RBW-PARABODY><CX5FX5FFILE.NAME>u_genada95.tcl</CX5FX5FFILE.NAME
  38342. > in the <RBWAUTO-0007>M4_home\modules\ada95\tcl</RBWAUTO-0007
  38343. > directory<RBW-IDXTERM TERM1="Tcl scripts" TERM2="filling operation bodies"></RBW-IDXTERM
  38344. ></RBW-PARABODY
  38345. ></LB.LIST.BULLET
  38346. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38347. ></RBW-AUTOGEN
  38348. ></RBW-MARKER
  38349. ><RBW-PARABODY>Customize the file <CX5FX5FFILE.NAME>u_genada95.tcl</CX5FX5FFILE.NAME
  38350. > at any level in the directory structure</RBW-PARABODY
  38351. ></LB.LIST.BULLET
  38352. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  38353. ></RBW-AUTOGEN
  38354. >You may need to create <CX5FX5FFILE.NAME>u_genada95.tcl</CX5FX5FFILE.NAME
  38355. > by copying <CX5FX5FFILE.NAME>genada95.tcl</CX5FX5FFILE.NAME
  38356. >. </N.NOTE
  38357. ></LABEL
  38358. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38359. >Editing properties for  parameters</L.LABEL
  38360. ><B.BODY>In Object Design, you can also define properties for parameters of operations. Choose Edit Properties from the Item menu on the Class Diagram menubar. Specify a value that must appear in the function declaration. Also set a Parameter Mode<RBW-IDXTERM TERM1="Modes" TERM2="setting for operation parameters"></RBW-IDXTERM
  38361. ><RBW-IDXTERM TERM1="Parameter modes" TERM2="setting for operations"></RBW-IDXTERM
  38362. > value of <CX5FX5FTERM>in</CX5FX5FTERM
  38363. >, <CX5FX5FTERM>out</CX5FX5FTERM
  38364. >, <CX5FX5FTERM>in out</CX5FX5FTERM
  38365. >, or <CX5FX5FTERM>access</CX5FX5FTERM
  38366. >. </B.BODY
  38367. ></LABEL
  38368. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38369. >Classwide parameters</L.LABEL
  38370. ><B.BODY>If an Ada 95 parameter represents a value that can be of any type derived directly or indirectly from a certain tagged type (i.e. any subclass of a given root class) it is called a classwide parameter. To support this, the Ada 95 code generator defines a parameter property called Classwide, which can either be False (the default) or True.   </B.BODY
  38371. ><B.BODY>When the Classwide property for a parameter is set to True, then the type for the parameter in the generated code will be a type defined as an access to the class of tagged type. This access type is defined as</B.BODY
  38372. ><B.BODY>type Class_Link is access all Instance’Class</B.BODY
  38373. ><B.BODY>where the text “_Link” in the above type name is created from the M4 variable M4_Ada95_Class_Access_Type, and may be configured by the user. (See Chapter 8, Configuring the APDT Code Generators for infomation on M4 variables affecting code generation). </B.BODY
  38374. ><B.BODY>For example, suppose the following operation appears for a class on a CD diagram, and that parameter Shape is specified with the Classwide property set. The property might be set because the parameter can be a Triangle, Square, or Rectangle, all of which are subclasses of Polygon.</B.BODY
  38375. ><E.EXAMPLE>   <CX5FX5FFILE.NAME>Fill(Shape: Polygon)</CX5FX5FFILE.NAME
  38376. > </E.EXAMPLE
  38377. ><B.BODY>In this case the corresponding Ada 95 code would be generated.</B.BODY
  38378. ><E.EXAMPLE>   procedure Fill  (Self : Instance; Shape : in Polygon.Class_Link);</E.EXAMPLE
  38379. ><B.BODY>The Classwide property for parameters is only relevant if the paramter type maps to an Ada tagged type. See <RBW-XREF REFID="S1gQn1e4nsem" TYPE="XREF-TEXTCOPY">Mapping Inheritance</RBW-XREF
  38380. > for more information on the creation of Ada tagged types.</B.BODY
  38381. ></LABEL
  38382. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38383. >Specifying overloaded operations</L.LABEL
  38384. ><B.BODY>You can specify overloaded operators for operation names in classes in Class Diagrams<RBW-IDXTERM TERM1="Operators" TERM2="overloading operations"></RBW-IDXTERM
  38385. ><RBW-IDXTERM TERM1="Class Association Diagrams" TERM2="overloading operations"></RBW-IDXTERM
  38386. ><RBW-IDXTERM TERM1="Classes" TERM2="overloaded operations"></RBW-IDXTERM
  38387. >. The following table lists the operators you can specify in a class and the corresponding Ada 95 operator generated in code.</B.BODY
  38388. ><B.BODY>The following table shows the mapping of overloaded operators:</B.BODY
  38389. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operator specified in a class</CELLBODY
  38390. ></ENTRY
  38391. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operator in Ada 95 code</CELLBODY
  38392. ></ENTRY
  38393. ></RBW-ROW
  38394. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>“and”</CELLBODY
  38395. ></ENTRY
  38396. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“and”</CELLBODY
  38397. ></ENTRY
  38398. ></RBW-ROW
  38399. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>“or”</CELLBODY
  38400. ></ENTRY
  38401. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“or”</CELLBODY
  38402. ></ENTRY
  38403. ></RBW-ROW
  38404. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“xor”</CELLBODY
  38405. ></ENTRY
  38406. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“xor”</CELLBODY
  38407. ></ENTRY
  38408. ></RBW-ROW
  38409. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“abs”</CELLBODY
  38410. ></ENTRY
  38411. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“abs”</CELLBODY
  38412. ></ENTRY
  38413. ></RBW-ROW
  38414. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“not”</CELLBODY
  38415. ></ENTRY
  38416. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“not”</CELLBODY
  38417. ></ENTRY
  38418. ></RBW-ROW
  38419. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“mod”</CELLBODY
  38420. ></ENTRY
  38421. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“mod”</CELLBODY
  38422. ></ENTRY
  38423. ></RBW-ROW
  38424. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“rem”</CELLBODY
  38425. ></ENTRY
  38426. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“rem”</CELLBODY
  38427. ></ENTRY
  38428. ></RBW-ROW
  38429. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorEQ</CELLBODY
  38430. ></ENTRY
  38431. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“=”</CELLBODY
  38432. ></ENTRY
  38433. ></RBW-ROW
  38434. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“< ”, operator< </CELLBODY
  38435. ></ENTRY
  38436. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“<”</CELLBODY
  38437. ></ENTRY
  38438. ></RBW-ROW
  38439. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorLE</CELLBODY
  38440. ></ENTRY
  38441. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“<=”</CELLBODY
  38442. ></ENTRY
  38443. ></RBW-ROW
  38444. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“\>” , operator></CELLBODY
  38445. ></ENTRY
  38446. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“\>”</CELLBODY
  38447. ></ENTRY
  38448. ></RBW-ROW
  38449. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorGE</CELLBODY
  38450. ></ENTRY
  38451. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“\>=”</CELLBODY
  38452. ></ENTRY
  38453. ></RBW-ROW
  38454. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“+” , operator+</CELLBODY
  38455. ></ENTRY
  38456. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“+”</CELLBODY
  38457. ></ENTRY
  38458. ></RBW-ROW
  38459. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“&truehy;” , operator&truehy;</CELLBODY
  38460. ></ENTRY
  38461. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“&truehy;”</CELLBODY
  38462. ></ENTRY
  38463. ></RBW-ROW
  38464. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“&”</CELLBODY
  38465. ></ENTRY
  38466. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“&”</CELLBODY
  38467. ></ENTRY
  38468. ></RBW-ROW
  38469. ></TBODY
  38470. ></TGROUP
  38471. ></RBW-TABLE
  38472. ><B.BODY></B.BODY
  38473. ></LABEL
  38474. ></SECTION
  38475. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="S1gQn1e4nsem"></RBW-ANCHOR
  38476. >Mapping Inheritance</S.SECTION.HEAD
  38477. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38478. >Introduction</L.LABEL
  38479. ><B.BODY>The Ada 95 code generator supports inheritance by recognizing the root class of an inheritance hierarchy and generating for it a tagged record type in its own Ada package. Because the Ada 95 language supports inheritance, the tagged record type provides complete support for single inheritance. Multiple inheritance is not supported by the Ada 95 code generator.</B.BODY
  38480. ><B.BODY>The code generator does not distinguish between overlapping and non&truehy;overlapping generalizations.</B.BODY
  38481. ></LABEL
  38482. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38483. >Mapping single inheritance</L.LABEL
  38484. ><B.BODY>The diagram below shows how single inheritance is represented in ObjectTeam. The attribute Weight_Type in this example is not a standard Ada type. It was added to the customization file object’s <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  38485. > file for this example.<RBW-IDXTERM TERM1="Single inheritance" TERM2="representing in OMT"></RBW-IDXTERM
  38486. ><RBW-IDXTERM TERM1="Inheritance" TERM2="single"></RBW-IDXTERM
  38487. ></B.BODY
  38488. ><B.BODY>The following figure shows an example of single inheritance:</B.BODY
  38489. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00357.unk" origfile="pics/gener1.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38490. ></FA.FIGURE.ANCHOR
  38491. ></LABEL
  38492. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38493. >Ada code for single inheritance<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38494. ></L.LABEL
  38495. ><B.BODY>In addition to the “Link” access type generated for all classes mapped to records, an additional access type “Class_Link” is generated that is declared as an access to the tagged record’s class.</B.BODY
  38496. ><B.BODY>Note that the names “Link” and “Class_Link” here are only defaults and may be customized by modifying the M4 variable M4_Ada95_Class_Access_Type_Name. </B.BODY
  38497. ><B.BODY>See Chapter 8, Configuring the APDT Code Generators, for more information on M4 variables affecting code generation. </B.BODY
  38498. ><B.BODY>The above diagram example produces the following Ada 95 code:<RBW-IDXTERM TERM1="Single inheritance" TERM2="representing in OMT"></RBW-IDXTERM
  38499. ><RBW-IDXTERM TERM1="Inheritance" TERM2="single"></RBW-IDXTERM
  38500. ></B.BODY
  38501. ><EM.EXAMPLE.MONO>with Sys_Types;</EM.EXAMPLE.MONO
  38502. ><EM.EXAMPLE.MONO>package Component is </EM.EXAMPLE.MONO
  38503. ><EM.EXAMPLE.MONO>    type Instance is tagged record</EM.EXAMPLE.MONO
  38504. ><EM.EXAMPLE.MONO>        Weight : Weight_Type;</EM.EXAMPLE.MONO
  38505. ><EM.EXAMPLE.MONO>    end record;</EM.EXAMPLE.MONO
  38506. ><EM.EXAMPLE.MONO>    type Link is access all Instance;</EM.EXAMPLE.MONO
  38507. ><EM.EXAMPLE.MONO>    type Class_Link is access all Instance’Class;</EM.EXAMPLE.MONO
  38508. ><EM.EXAMPLE.MONO>    function My_Weight (Self : Instance) return Weight_Type;</EM.EXAMPLE.MONO
  38509. ><EM.EXAMPLE.MONO>end Component;</EM.EXAMPLE.MONO
  38510. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38511. ><EM.EXAMPLE.MONO>with Sys_Types;</EM.EXAMPLE.MONO
  38512. ><EM.EXAMPLE.MONO>package Component.Receiver is </EM.EXAMPLE.MONO
  38513. ><EM.EXAMPLE.MONO>    type Instance is new Component.Instance with record</EM.EXAMPLE.MONO
  38514. ><EM.EXAMPLE.MONO>        Receiver_Attr : Integer;</EM.EXAMPLE.MONO
  38515. ><EM.EXAMPLE.MONO>    end record;</EM.EXAMPLE.MONO
  38516. ><EM.EXAMPLE.MONO>    type Link is access all Instance;</EM.EXAMPLE.MONO
  38517. ><EM.EXAMPLE.MONO>    type Class_Link is access all Instance’Class;</EM.EXAMPLE.MONO
  38518. ><EM.EXAMPLE.MONO>    procedure Initiate (Self : in out Instance);</EM.EXAMPLE.MONO
  38519. ><EM.EXAMPLE.MONO>end Component.Receiver;</EM.EXAMPLE.MONO
  38520. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38521. ><EM.EXAMPLE.MONO>with Sys_Types;</EM.EXAMPLE.MONO
  38522. ><EM.EXAMPLE.MONO>package Component.Transmitter is </EM.EXAMPLE.MONO
  38523. ><EM.EXAMPLE.MONO>    type Instance is new Component.Instance with record</EM.EXAMPLE.MONO
  38524. ><EM.EXAMPLE.MONO>        Transmitter_Attr : Integer;</EM.EXAMPLE.MONO
  38525. ><EM.EXAMPLE.MONO>    end record;</EM.EXAMPLE.MONO
  38526. ><EM.EXAMPLE.MONO>    type Link is access all Instance;</EM.EXAMPLE.MONO
  38527. ><EM.EXAMPLE.MONO>    type Class_Link is access all Instance’Class;</EM.EXAMPLE.MONO
  38528. ><EM.EXAMPLE.MONO>    procedure Initiate (Self : in out Instance);</EM.EXAMPLE.MONO
  38529. ><EM.EXAMPLE.MONO>end Component.Transmitter;</EM.EXAMPLE.MONO
  38530. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38531. ><EM.EXAMPLE.MONO>package body Component is </EM.EXAMPLE.MONO
  38532. ><EM.EXAMPLE.MONO>    function My_Weight (Self : Instance) return Weight_Type is</EM.EXAMPLE.MONO
  38533. ><EM.EXAMPLE.MONO>    begin</EM.EXAMPLE.MONO
  38534. ><EM.EXAMPLE.MONO>        &truehy;&truehy; !! Implement this subprogram !!</EM.EXAMPLE.MONO
  38535. ><EM.EXAMPLE.MONO>    end My_Weight;</EM.EXAMPLE.MONO
  38536. ><EM.EXAMPLE.MONO>end Component;</EM.EXAMPLE.MONO
  38537. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38538. ><EM.EXAMPLE.MONO>package body Component.Receiver is </EM.EXAMPLE.MONO
  38539. ><EM.EXAMPLE.MONO>    procedure Initiate (Self : in out Instance) is</EM.EXAMPLE.MONO
  38540. ><EM.EXAMPLE.MONO>    begin</EM.EXAMPLE.MONO
  38541. ><EM.EXAMPLE.MONO>        &truehy;&truehy; !! Implement this subprogram !!</EM.EXAMPLE.MONO
  38542. ><EM.EXAMPLE.MONO>    end Initiate;</EM.EXAMPLE.MONO
  38543. ><EM.EXAMPLE.MONO>end Component.Receiver;</EM.EXAMPLE.MONO
  38544. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38545. ><EM.EXAMPLE.MONO>package body Component.Transmitter is </EM.EXAMPLE.MONO
  38546. ><EM.EXAMPLE.MONO>    procedure Initiate (Self : in out Instance) is</EM.EXAMPLE.MONO
  38547. ><EM.EXAMPLE.MONO>    begin</EM.EXAMPLE.MONO
  38548. ><EM.EXAMPLE.MONO>        &truehy;&truehy; !! Implement this subprogram !!</EM.EXAMPLE.MONO
  38549. ><EM.EXAMPLE.MONO>    end Initiate;</EM.EXAMPLE.MONO
  38550. ><EM.EXAMPLE.MONO>end Component.Transmitter;</EM.EXAMPLE.MONO
  38551. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38552. ></LABEL
  38553. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38554. >Translating polymorphism</L.LABEL
  38555. ><B.BODY>Ada 95 supports dynamic dispatching. Therefore, the Ada 95 code generator supports polymorphism by default. Unlike the Ada 83 code generator, the Ada 95 code generator does not have a Polymorphic M4 variable setting and, as a result, does not generate any additional Ada packages.</B.BODY
  38556. ></LABEL
  38557. ></SECTION
  38558. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="q1gQn144nsem"></RBW-ANCHOR
  38559. >Mapping Associations</S.SECTION.HEAD
  38560. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38561. >Introduction</L.LABEL
  38562. ><B.BODY>An association in ObjectTeam maps to Ada 95 components in the record types for some or all of the related classes.<RBW-IDXTERM TERM1="Access components" TERM2="when generated for classes"></RBW-IDXTERM
  38563. ><RBW-IDXTERM TERM1="Record types" TERM2="classes in associations"></RBW-IDXTERM
  38564. ><RBW-IDXTERM TERM1="Classes" TERM2="association mappings"></RBW-IDXTERM
  38565. > The code generator creates a component for a given class involved in an association if a rolename is specified at the far end of the association.<RBW-IDXTERM TERM1="Rolenames" TERM2="classes in associations"></RBW-IDXTERM
  38566. ></B.BODY
  38567. ></LABEL
  38568. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38569. >Association types<RBW-IDXTERM TERM1="Associations" TERM2="types that generate Ada code"></RBW-IDXTERM
  38570. ></L.LABEL
  38571. ><B.BODY>The Ada 95 code generator generates code for the following types of associations:</B.BODY
  38572. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38573. ></RBW-AUTOGEN
  38574. ></RBW-MARKER
  38575. ><RBW-PARABODY>Binary and qualified associations, including those specified with multiplicity and optionality.</RBW-PARABODY
  38576. ></LB.LIST.BULLET
  38577. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38578. ></RBW-AUTOGEN
  38579. ></RBW-MARKER
  38580. ><RBW-PARABODY>Associations modeled as classes.</RBW-PARABODY
  38581. ></LB.LIST.BULLET
  38582. ><B.BODY>If an association is modeled as a class, the system generates an additional Ada 95 package to implement the association.<RBW-IDXTERM TERM1="Ada packages" TERM2="associations as classes"></RBW-IDXTERM
  38583. ><RBW-IDXTERM TERM1="Associations" TERM2="modeled as a class"></RBW-IDXTERM
  38584. ></B.BODY
  38585. ></LABEL
  38586. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38587. >Generic package specifications<RBW-IDXTERM TERM1="Ada packages" TERM2="generic"></RBW-IDXTERM
  38588. ><RBW-IDXTERM TERM1="Package specifications" TERM2="generic"></RBW-IDXTERM
  38589. ></L.LABEL
  38590. ><B.BODY>The following generic packages generate code for associations. These packages can be found in the directory <RBWAUTO-0007>M4_home/modules/ada95/config/src</RBWAUTO-0007
  38591. > and must be compiled and linked with the generated Ada95 code..<RBW-IDXTERM TERM1="Ada environment" TERM2="generic packages, configuring"></RBW-IDXTERM
  38592. ><RBW-IDXTERM TERM1="Configuration" TERM2="generic packages"></RBW-IDXTERM
  38593. ><RBW-IDXTERM TERM1="Generic packages" TERM2="configuring for Ada"></RBW-IDXTERM
  38594. > The first two packages are used in one&truehy;to&truehy;many and many&truehy;to&truehy;many associations<RBW-IDXTERM TERM1="one-to-many associations" TERM2="generic packages"></RBW-IDXTERM
  38595. ><RBW-IDXTERM TERM1="many-to-many associations" TERM2="generic packages"></RBW-IDXTERM
  38596. >. Keywords<RBW-IDXTERM TERM1="Generic packages" TERM2="keywords in"></RBW-IDXTERM
  38597. ><RBW-IDXTERM TERM1="Keywords" TERM2="in generic packages"></RBW-IDXTERM
  38598. > are shown in italics. The<RBW-IDXTERM TERM1="type names" TERM2="in generic packages"></RBW-IDXTERM
  38599. > type names Ordered_Set, Unordered_Set, and Dictionary must be unique to avoid possible conflicts.</B.BODY
  38600. ><EM.EXAMPLE.MONO>generic</EM.EXAMPLE.MONO
  38601. ><EM.EXAMPLE.MONO>   type Element is private;</EM.EXAMPLE.MONO
  38602. ><EM.EXAMPLE.MONO>package Generic_Ordered_Set is</EM.EXAMPLE.MONO
  38603. ><EM.EXAMPLE.MONO>   type Ordered_Set is private;</EM.EXAMPLE.MONO
  38604. ><EM.EXAMPLE.MONO>   procedure Add (. . .);</EM.EXAMPLE.MONO
  38605. ><EM.EXAMPLE.MONO>   procedure Remove (. . .);</EM.EXAMPLE.MONO
  38606. ><EM.EXAMPLE.MONO>end Generic_Ordered_Set;</EM.EXAMPLE.MONO
  38607. ><EM.EXAMPLE.MONO>generic</EM.EXAMPLE.MONO
  38608. ><EM.EXAMPLE.MONO>   type Element is private;</EM.EXAMPLE.MONO
  38609. ><EM.EXAMPLE.MONO>package Generic_Unordered_Set is</EM.EXAMPLE.MONO
  38610. ><EM.EXAMPLE.MONO>   type Unordered_Set is private;</EM.EXAMPLE.MONO
  38611. ><EM.EXAMPLE.MONO>   procedure Add (. . .);</EM.EXAMPLE.MONO
  38612. ><EM.EXAMPLE.MONO>   procedure Remove (. . .);</EM.EXAMPLE.MONO
  38613. ><EM.EXAMPLE.MONO>end Generic_Unordered_Set;</EM.EXAMPLE.MONO
  38614. ><B.BODY>The package below is used in qualified associations.<RBW-IDXTERM TERM1="Qualified associations" TERM2="generic package for"></RBW-IDXTERM
  38615. > The keywords, shown in italic type, can be customized.<RBW-IDXTERM TERM1="Keywords" TERM2="customizing"></RBW-IDXTERM
  38616. ></B.BODY
  38617. ><EM.EXAMPLE.MONO>generic</EM.EXAMPLE.MONO
  38618. ><EM.EXAMPLE.MONO>   type Key is private;</EM.EXAMPLE.MONO
  38619. ><EM.EXAMPLE.MONO>   type Value is private;</EM.EXAMPLE.MONO
  38620. ><EM.EXAMPLE.MONO>package <CX5FX5FTERM>Generic_Dictionary</CX5FX5FTERM
  38621. > is</EM.EXAMPLE.MONO
  38622. ><EM.EXAMPLE.MONO>   type <CX5FX5FTERM>Dictionary</CX5FX5FTERM
  38623. > is private;</EM.EXAMPLE.MONO
  38624. ><EM.EXAMPLE.MONO>   procedure Add (. . .);</EM.EXAMPLE.MONO
  38625. ><EM.EXAMPLE.MONO>   procedure Remove (. . .);</EM.EXAMPLE.MONO
  38626. ><EM.EXAMPLE.MONO>   function Find_Value (. . .) return Value;</EM.EXAMPLE.MONO
  38627. ><EM.EXAMPLE.MONO>end <CX5FX5FTERM>Generic_Dictionary</CX5FX5FTERM
  38628. >;</EM.EXAMPLE.MONO
  38629. ></LABEL
  38630. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38631. >Package specification conditions</L.LABEL
  38632. ><B.BODY>The following conditions apply to most of the package specifications in this section:<RBW-IDXTERM TERM1="Package specifications" TERM2="conditions"></RBW-IDXTERM
  38633. ></B.BODY
  38634. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38635. ></RBW-AUTOGEN
  38636. ></RBW-MARKER
  38637. ><RBW-PARABODY>Only the code for the source class is shown because the destination class is not affected by a unidirectional association and because bidirectional associations are implemented as two unidirectional associations.<RBW-IDXTERM TERM1="Source classes" TERM2="binary associations"></RBW-IDXTERM
  38638. ><RBW-IDXTERM TERM1="Destination classes" TERM2="binary associations"></RBW-IDXTERM
  38639. ><RBW-IDXTERM TERM1="Bidirectional associations" TERM2="how implemented"></RBW-IDXTERM
  38640. ><RBW-IDXTERM TERM1="Unidirectional associations" TERM2="in package specifications"></RBW-IDXTERM
  38641. ></RBW-PARABODY
  38642. ></LB.LIST.BULLET
  38643. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38644. ></RBW-AUTOGEN
  38645. ></RBW-MARKER
  38646. ><RBW-PARABODY>Text within brackets [ ] appears in either the specification or body file, depending on the class visibility property setting.<RBW-IDXTERM TERM1="Text in brackets" TERM2="class visibility property setting"></RBW-IDXTERM
  38647. > This includes <CX5FX5FTERM>with</CX5FX5FTERM
  38648. > statements, which always appear in the specification files, and <RBWAUTO-0007>body</RBWAUTO-0007
  38649. > in the first line of a package definition, which appears only in the body file.<RBW-IDXTERM TERM1="with statements" TERM2="in package specifications"></RBW-IDXTERM
  38650. ><RBW-IDXTERM TERM1="Class visibility" TERM2="bracketed text in package specifications"></RBW-IDXTERM
  38651. ><RBW-IDXTERM TERM1="Body" TERM2="package body definition"></RBW-IDXTERM
  38652. ></RBW-PARABODY
  38653. ></LB.LIST.BULLET
  38654. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38655. ></RBW-AUTOGEN
  38656. ></RBW-MARKER
  38657. ><RBW-PARABODY>Association names are not used in code generation; role names are used as the name of the source class’s record component for the association reference.<RBW-IDXTERM TERM1="Association names" TERM2="in code generation"></RBW-IDXTERM
  38658. ><RBW-IDXTERM TERM1="Rolenames" TERM2="referencing associations"></RBW-IDXTERM
  38659. ></RBW-PARABODY
  38660. ></LB.LIST.BULLET
  38661. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  38662. ></RBW-AUTOGEN
  38663. ></RBW-MARKER
  38664. ><RBW-PARABODY>In some cases, an association may generate one or two additional package specifications which serve as an intermediate package between the class and the generic package.<RBW-IDXTERM TERM1="Package specifications" TERM2="intermediate"></RBW-IDXTERM
  38665. ><RBW-IDXTERM TERM1="Associations" TERM2="additional package specifications"></RBW-IDXTERM
  38666. ></RBW-PARABODY
  38667. ></LB.LIST.BULLET
  38668. ><B.BODY>The sections that follow describe the types of associations you can represent in ObjectTeam and the Ada code that is generated for each type. The example omits the Get and Set subprograms for simplicity.</B.BODY
  38669. ><B.BODY>Below are examples of unidirectional and bidirectional associations as they are represented in ObjectTeam’s Class Diagram Editor.</B.BODY
  38670. ></LABEL
  38671. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38672. >Unidirectional association<RBW-IDXTERM TERM1="Unidirectional association" TERM2="representing in OMT"></RBW-IDXTERM
  38673. ></L.LABEL
  38674. ><B.BODY>If an association has a role name at only one end, it is unidirectional.</B.BODY
  38675. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00358.unk" origfile="pics/assoc1.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38676. ></FA.FIGURE.ANCHOR
  38677. ><B.BODY>Below is the Ada 95 code generated for Source_Class in the unidirectional association. The code for Destination_Class is not affected.</B.BODY
  38678. ><EM.EXAMPLE.MONO>[with Destination_Class;]</EM.EXAMPLE.MONO
  38679. ><EM.EXAMPLE.MONO>package [body] Source_Class is</EM.EXAMPLE.MONO
  38680. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  38681. ><EM.EXAMPLE.MONO>      role1: Destination_Class.Link;</EM.EXAMPLE.MONO
  38682. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  38683. ><EM.EXAMPLE.MONO>end Source_Class;</EM.EXAMPLE.MONO
  38684. ><B.BODY>Note that the source end of a unidirectional assoication uses the optional indicator (0..1). </B.BODY
  38685. ></LABEL
  38686. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38687. >Bidirectional association<RBW-IDXTERM TERM1="Bidirectional associations" TERM2="example of circular dependency"></RBW-IDXTERM
  38688. ></L.LABEL
  38689. ><B.BODY>A bidirectional association has role names on both ends of the association.</B.BODY
  38690. ><B.BODY>The Ada code resulting from this bidirectional association example will not compile because Class1 and Class2 reference each other, causing a circular dependency.<RBW-IDXTERM TERM1="Circular dependency" TERM2="correcting"></RBW-IDXTERM
  38691. > You can correct  this association by constructing a link class on the association. <RBW-IDXTERM TERM1="Link attribute box" TERM2="associations"></RBW-IDXTERM
  38692. ><RBW-IDXTERM TERM1="Link class" TERM2="in associations"></RBW-IDXTERM
  38693. >This technique is described in <RBW-XREF REFID="x3gQn310nsem" TYPE="XREF-TEXTCOPY">Mapping Associations as Classes</RBW-XREF
  38694. >.</B.BODY
  38695. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00359.unk" origfile="pics/assoc2.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38696. ></FA.FIGURE.ANCHOR
  38697. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00360.tif" origseq="1" origtype="I" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38698. ></FA.FIGURE.ANCHOR
  38699. ></LABEL
  38700. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38701. >Implementing optional associations</L.LABEL
  38702. ><B.BODY>An optional association is represented with the notation “0..1”, as shown below for a unidirectional association..<RBW-IDXTERM TERM1="Associations" TERM2="optional"></RBW-IDXTERM
  38703. ><RBW-IDXTERM TERM1="Optional associations" TERM2="defined"></RBW-IDXTERM
  38704. > The Ada 95 code generated for this type of association is identical to the code for a normal association, except that it contains a comment above the association reference indicating the optionality of the association.</B.BODY
  38705. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00361.unk" origfile="pics/assoc3.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38706. ></FA.FIGURE.ANCHOR
  38707. ></LABEL
  38708. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38709. >Implementing multiplicity associations<RBW-IDXTERM TERM1="Associations" TERM2="multiplicity"></RBW-IDXTERM
  38710. ><RBW-IDXTERM TERM1="Multiplicity" TERM2="representing in OMT"></RBW-IDXTERM
  38711. ></L.LABEL
  38712. ><B.BODY>Multiplicity is represented with a “*” at the end of the assoiciation. The diagram below represents a unidirectional multiple association.</B.BODY
  38713. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00362.unk" origfile="pics/assoc4.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38714. ></FA.FIGURE.ANCHOR
  38715. ><B.BODY>The code for Destination_Class is not affected.</B.BODY
  38716. ><EWM.EXAMPLEW.MONO>with Generic_Unordered_Set;</EWM.EXAMPLEW.MONO
  38717. ><EWM.EXAMPLEW.MONO>with Destination_Class;</EWM.EXAMPLEW.MONO
  38718. ><EWM.EXAMPLEW.MONO>package Destination_Class_Unordered_Set is new</EWM.EXAMPLEW.MONO
  38719. ><EWM.EXAMPLEW.MONO>   Generic_Unordered_Set (Destination_Class.Link);</EWM.EXAMPLEW.MONO
  38720. ><EWM.EXAMPLEW.MONO>[with Destination_Class_Unordered_Set;]</EWM.EXAMPLEW.MONO
  38721. ><EWM.EXAMPLEW.MONO>package [ body ] Source_Class is</EWM.EXAMPLEW.MONO
  38722. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  38723. ><EWM.EXAMPLEW.MONO>      rolename: Destination_Class_Unordered_Set.Unordered_Set;</EWM.EXAMPLEW.MONO
  38724. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  38725. ><EWM.EXAMPLEW.MONO>end Source_Class;</EWM.EXAMPLEW.MONO
  38726. ></LABEL
  38727. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38728. >Implementing ordered associations<RBW-IDXTERM TERM1="Associations" TERM2="ordered"></RBW-IDXTERM
  38729. ></L.LABEL
  38730. ><B.BODY>You can specify any multiplicity association<RBW-IDXTERM TERM1="Ordered associations" TERM2="representing in OMT"></RBW-IDXTERM
  38731. ><RBW-IDXTERM TERM1="Multiplicity" TERM2="and ordered association"></RBW-IDXTERM
  38732. > as an ordered association in ObjectTeam by adding the text {ordered} to the the constraint field of the association. The example below specifies the multiplicity association, shown previously, as an ordered association.</B.BODY
  38733. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00363.unk" origfile="pics/assoc5.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38734. ></FA.FIGURE.ANCHOR
  38735. ><B.BODY>This example will generate the same Ada code for Source_Class as shown in the previous, non&truehy;ordered example, except that every instance of Unordered_Set<RBW-IDXTERM TERM1="Unordered_Set" TERM2="Ada code results"></RBW-IDXTERM
  38736. > is replaced with Ordered_Set.<RBW-IDXTERM TERM1="Ordered_Set" TERM2="Ada code results"></RBW-IDXTERM
  38737. ></B.BODY
  38738. ></LABEL
  38739. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38740. >Implementing qualified associations</L.LABEL
  38741. ><B.BODY>Use the qualified association symbol in the ObjectTeam Class Diagram editor to represent qualified associations.<RBW-IDXTERM TERM1="Qualified associations" TERM2="representing in OMT"></RBW-IDXTERM
  38742. ><RBW-IDXTERM TERM1="Associations" TERM2="qualified"></RBW-IDXTERM
  38743. ></B.BODY
  38744. ><B.BODY>The source end of a qualified association must be optional (“0..1”) with no rolename. The destination end must have a role name, and may be optional (“0..1”), mandatory (“1”) , or many (“*”).</B.BODY
  38745. ><B.BODY>The property “Data Type” for the association must be set to a standard type or to a class type.</B.BODY
  38746. ></LABEL
  38747. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38748. >Mandatoryl/optional qualified associations<RBW-IDXTERM TERM1="Associations" TERM2="normal/optional"></RBW-IDXTERM
  38749. ></L.LABEL
  38750. ><B.BODY>The diagram below shows how to represent a mandatory source&truehy;end qualified association.</B.BODY
  38751. ><B.BODY>For an optional association, the “1” on the destination end of the association would be “0..1”. The same code would be generated, but a comment indicating that the association is optional would be added.</B.BODY
  38752. ><FA.FIGURE.ANCHOR>.<RBW-GRAPHIC filename="00364.unk" origfile="pics/assoc6.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38753. ></FA.FIGURE.ANCHOR
  38754. ></LABEL
  38755. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38756. >Ada code generated for Source_Class<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38757. ></L.LABEL
  38758. ><B.BODY>The code example below assumes that the value of the “Data Type” property for the association is Data_Type.<RBW-IDXTERM TERM1="Normal/Optional qualified associations" TERM2="example of"></RBW-IDXTERM
  38759. ></B.BODY
  38760. ><EWM.EXAMPLEW.MONO>with Generic_Dictionary;</EWM.EXAMPLEW.MONO
  38761. ><EWM.EXAMPLEW.MONO>with Destination_Class;</EWM.EXAMPLEW.MONO
  38762. ><EWM.EXAMPLEW.MONO>package Destination_Class_Dictionary_By_Data_Type is new Generic_Dictionary</EWM.EXAMPLEW.MONO
  38763. ><EWM.EXAMPLEW.MONO>   (Data_Type, Destination_Class.Link);</EWM.EXAMPLEW.MONO
  38764. ><EWM.EXAMPLEW.MONO>with Destination_Class_Dictionary_By_Data_Type;</EWM.EXAMPLEW.MONO
  38765. ><EWM.EXAMPLEW.MONO>package [ body ] Source_Class is</EWM.EXAMPLEW.MONO
  38766. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  38767. ><EWM.EXAMPLEW.MONO>      Role:</EWM.EXAMPLEW.MONO
  38768. ><EWM.EXAMPLEW.MONO>         Destination_Class_Dictionary_By_Data_Type.Dictionary;</EWM.EXAMPLEW.MONO
  38769. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  38770. ><EWM.EXAMPLEW.MONO>end Source_Class;</EWM.EXAMPLEW.MONO
  38771. ></LABEL
  38772. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38773. >Multiplicity qualified associations</L.LABEL
  38774. ><B.BODY>The diagram below shows how to represent a multiplicity qualified association.<RBW-IDXTERM TERM1="Multiplicity" TERM2="qualified associations"></RBW-IDXTERM
  38775. ><RBW-IDXTERM TERM1="Qualified associations" TERM2="with multiplicity"></RBW-IDXTERM
  38776. ></B.BODY
  38777. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00365.unk" origfile="pics/assoc7.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38778. ></FA.FIGURE.ANCHOR
  38779. ><B.BODY></B.BODY
  38780. ><EWM.EXAMPLEW.MONO>with Generic_Unordered_Set;</EWM.EXAMPLEW.MONO
  38781. ><EWM.EXAMPLEW.MONO>with Destination_Class;</EWM.EXAMPLEW.MONO
  38782. ><EWM.EXAMPLEW.MONO>package Destination_Class_Unordered_Set is new Generic_Unordered_Set (Destination_Class.Link);</EWM.EXAMPLEW.MONO
  38783. ><EWM.EXAMPLEW.MONO>   Generic_Dictionary (Data_Type, Destination_Class_Unordered_Set.Unordered_Set);</EWM.EXAMPLEW.MONO
  38784. ><EWM.EXAMPLEW.MONO>[with Destination_Class_Unordered_Set_Dictionary_By_Data_Type;]</EWM.EXAMPLEW.MONO
  38785. ><EWM.EXAMPLEW.MONO>package [body] Source_Class is</EWM.EXAMPLEW.MONO
  38786. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  38787. ><EWM.EXAMPLEW.MONO>      Role:</EWM.EXAMPLEW.MONO
  38788. ><EWM.EXAMPLEW.MONO>      Destination_Class_Unordered_Set_Dictionary_By_Data_Type.Dictionary;</EWM.EXAMPLEW.MONO
  38789. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  38790. ><EWM.EXAMPLEW.MONO>end Source_Class;</EWM.EXAMPLEW.MONO
  38791. ><B.BODY>If you had defined the multiplicity qualified association as an ordered association, the generated Ada 95 code would be similar to the normal qualified association, except that every instance of <CX5FX5FTERM>Unordered_Set</CX5FX5FTERM
  38792. > would be replaced with <CX5FX5FTERM>Ordered_Set</CX5FX5FTERM
  38793. >.</B.BODY
  38794. ></LABEL
  38795. ></SECTION
  38796. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="x3gQn310nsem"></RBW-ANCHOR
  38797. >Mapping Associations as Classes</S.SECTION.HEAD
  38798. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38799. >Introduction</L.LABEL
  38800. ><B.BODY>The Ada 95 code generator will translate and generate code for associations modeled as classes.<RBW-IDXTERM TERM1="Associations as classes" TERM2="representing in OMT"></RBW-IDXTERM
  38801. ><RBW-IDXTERM TERM1="Classes" TERM2="association classes"></RBW-IDXTERM
  38802. > The diagram below shows how an association modeled as a class is represented in ObjectTeam. The code generator ignores any association label,<RBW-IDXTERM TERM1="Association labels" TERM2="associations as classes"></RBW-IDXTERM
  38803. > if one exists, and instead, uses the name of the class itself to reference the association in code.</B.BODY
  38804. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00366.unk" origfile="pics/assoc8.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38805. ></FA.FIGURE.ANCHOR
  38806. ></LABEL
  38807. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38808. >Resulting Ada 95 code</L.LABEL
  38809. ><B.BODY>The Ada 95 code generated for an association as class includes an additional Ada Package for the association itself that captures the association class.<RBW-IDXTERM TERM1="Ada packages" TERM2="link attribute associations"></RBW-IDXTERM
  38810. ><RBW-IDXTERM TERM1="Link attributes" TERM2="in Ada code"></RBW-IDXTERM
  38811. > To avoid circular compilation dependencies between this class and the source and/or destination classes,<RBW-IDXTERM TERM1="Source classes" TERM2="code for link attribute assocations"></RBW-IDXTERM
  38812. ><RBW-IDXTERM TERM1="Destination classes" TERM2="code for link attribute associations"></RBW-IDXTERM
  38813. > the system generates an alternate package that only declares a link type.<RBW-IDXTERM TERM1="Alternate packages" TERM2="link attribute associations"></RBW-IDXTERM
  38814. ><RBW-IDXTERM TERM1="Link type" TERM2="link attribute associations"></RBW-IDXTERM
  38815. ></B.BODY
  38816. ><B.BODY>The source and/or destination classes with this alternate package refer to the association class. The Ada 95 code for this class is automatically generated within its own file as shown in the next example, with the name <CX5FX5FTERM>Assoc_Class_Alt</CX5FX5FTERM
  38817. >. The <CX5FX5FTERM>Alt</CX5FX5FTERM
  38818. > string is user&truehy;customizable.</B.BODY
  38819. ></LABEL
  38820. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38821. >Specification for Assoc_Class</L.LABEL
  38822. ><EM.EXAMPLE.MONO>with Sys_Types;</EM.EXAMPLE.MONO
  38823. ><EM.EXAMPLE.MONO>with Assoc_Class_Alt;</EM.EXAMPLE.MONO
  38824. ><EM.EXAMPLE.MONO>with Destination_Class;</EM.EXAMPLE.MONO
  38825. ><EM.EXAMPLE.MONO>package Assoc_Class is </EM.EXAMPLE.MONO
  38826. ><EM.EXAMPLE.MONO>    type Instance is record</EM.EXAMPLE.MONO
  38827. ><EM.EXAMPLE.MONO>        Assoc_Attr : Integer;</EM.EXAMPLE.MONO
  38828. ><EM.EXAMPLE.MONO>        rolename : Destination_Class.Link;</EM.EXAMPLE.MONO
  38829. ><EM.EXAMPLE.MONO>    end record;</EM.EXAMPLE.MONO
  38830. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38831. ><EM.EXAMPLE.MONO>    type Link is access all Instance;</EM.EXAMPLE.MONO
  38832. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38833. ><EM.EXAMPLE.MONO>    function Conv (From : Assoc_Class_Alt.Link) return Link;</EM.EXAMPLE.MONO
  38834. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38835. ><EM.EXAMPLE.MONO>    function Conv (From : Link) return Assoc_Class_Alt.Link;</EM.EXAMPLE.MONO
  38836. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38837. ><EM.EXAMPLE.MONO>end Assoc_Class;</EM.EXAMPLE.MONO
  38838. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38839. ></LABEL
  38840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38841. >Specification for Assoc_Class_Alt</L.LABEL
  38842. ><EM.EXAMPLE.MONO>package Assoc_Class_Alt is</EM.EXAMPLE.MONO
  38843. ><EM.EXAMPLE.MONO>    type Link is private;</EM.EXAMPLE.MONO
  38844. ><EM.EXAMPLE.MONO>private</EM.EXAMPLE.MONO
  38845. ><EM.EXAMPLE.MONO>    type Instance;</EM.EXAMPLE.MONO
  38846. ><EM.EXAMPLE.MONO>    type Link is access Instance;</EM.EXAMPLE.MONO
  38847. ><EM.EXAMPLE.MONO>    for Link’storage_size use 0;</EM.EXAMPLE.MONO
  38848. ><EM.EXAMPLE.MONO>end Assoc_Class_Alt;</EM.EXAMPLE.MONO
  38849. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38850. ></LABEL
  38851. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38852. >Body for Assoc_Class_Alt</L.LABEL
  38853. ><EM.EXAMPLE.MONO>with Assoc_Class;</EM.EXAMPLE.MONO
  38854. ><EM.EXAMPLE.MONO>package body Assoc_Class_Alt is</EM.EXAMPLE.MONO
  38855. ><EM.EXAMPLE.MONO>    type Instance is new Assoc_Class.Instance;</EM.EXAMPLE.MONO
  38856. ><EM.EXAMPLE.MONO>end Assoc_Class_Alt;</EM.EXAMPLE.MONO
  38857. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38858. ></LABEL
  38859. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38860. >Specification for Source_Class</L.LABEL
  38861. ><EM.EXAMPLE.MONO>with Sys_Types;</EM.EXAMPLE.MONO
  38862. ><EM.EXAMPLE.MONO>with Assoc_Class_Alt;</EM.EXAMPLE.MONO
  38863. ><EM.EXAMPLE.MONO>package Source_Class is </EM.EXAMPLE.MONO
  38864. ><EM.EXAMPLE.MONO>    type Instance is record</EM.EXAMPLE.MONO
  38865. ><EM.EXAMPLE.MONO>        rolename : Assoc_Class_Alt.Link;</EM.EXAMPLE.MONO
  38866. ><EM.EXAMPLE.MONO>    end record;</EM.EXAMPLE.MONO
  38867. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  38868. ><EM.EXAMPLE.MONO>    type Link is access all Instance;</EM.EXAMPLE.MONO
  38869. ><EM.EXAMPLE.MONO>end Source_Class;</EM.EXAMPLE.MONO
  38870. ><B.BODY></B.BODY
  38871. ></LABEL
  38872. ></SECTION
  38873. ><SECTION><S.SECTION.HEAD>Mapping Aggregations<RBW-ANCHOR ID="ThJUm389rlb"></RBW-ANCHOR
  38874. ></S.SECTION.HEAD
  38875. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38876. >Introduction</L.LABEL
  38877. ><B.BODY>An Aggregation is a relationship that exists when one object contains or is part of another object.<RBW-IDXTERM TERM1="Aggregations" TERM2="defined"></RBW-IDXTERM
  38878. > ObjectTeam represents aggregation with a diamond&truehy;shaped symbol at the source end of the aggregation, as shown below.<RBW-IDXTERM TERM1="Aggregations" TERM2="representing in OMT"></RBW-IDXTERM
  38879. ></B.BODY
  38880. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00367.unk" origfile="pics/aggre1.gif" origtype="X" origdoc="../../sources/ada/mapada95.fm5.mif"></RBW-GRAPHIC
  38881. >
  38882.  </FA.FIGURE.ANCHOR
  38883. ><B.BODY>The Ada 95 code generated for an aggregation is the same as that generated for binary associations, except that it generates a comment above the reference to distinguish the aggregation from a binary association, Source_Class in this example.</B.BODY
  38884. ></LABEL
  38885. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38886. >Ada code generated for aggregation relations<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38887. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38888. ></L.LABEL
  38889. ><EM.EXAMPLE.MONO>[with Destination_Class;]</EM.EXAMPLE.MONO
  38890. ><EM.EXAMPLE.MONO>package [ body ] Source_Class is</EM.EXAMPLE.MONO
  38891. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  38892. ><EM.EXAMPLE.MONO>      &truehy;&truehy; rolename is an aggregation</EM.EXAMPLE.MONO
  38893. ><EM.EXAMPLE.MONO>      rolename: Destination_Class.Link;</EM.EXAMPLE.MONO
  38894. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  38895. ><EM.EXAMPLE.MONO>end Source_Class;</EM.EXAMPLE.MONO
  38896. ><B.BODY></B.BODY
  38897. ><RBWAUTO-0001></RBWAUTO-0001
  38898. ><!--
  38899.  
  38900.  
  38901.  
  38902.  
  38903.  
  38904. CONVERTING SOURCE FILE ../../sources/ada/mapada83.fm5.mif
  38905.  
  38906.  
  38907. --><B.BODY></B.BODY
  38908. ><B.BODY></B.BODY
  38909. ><B.BODY></B.BODY
  38910. ><B.BODY></B.BODY
  38911. ><B.BODY></B.BODY
  38912. ></LABEL
  38913. ></SECTION
  38914. ></CHAPTER
  38915. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  38916. ></RBW-AUTOGEN
  38917. >Mapping <RBW-ANCHOR ID="39994"></RBW-ANCHOR
  38918. >Modeling Data to Ada 83 Code<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  38919. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  38920. ></RBW-SYSOBJ
  38921. ></C.CHAPTER.HEAD
  38922. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38923. >Introduction</L.LABEL
  38924. ><B.BODY>This chapter explains how particular parts of classes and class specifications result in particular parts of Ada 83 source code.</B.BODY
  38925. ><B.BODY>The first section of the chapter explains some principles of the code generation process. The next six sections describe the relationship between class specifications and the generated code. The final section describes generating code for special classes, which follows a different pattern.</B.BODY
  38926. ></LABEL
  38927. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38928. >In this chapter</L.LABEL
  38929. ><B.BODY>This chapter contains the following sections:</B.BODY
  38930. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  38931. ></ENTRY
  38932. ></RBW-ROW
  38933. ></THEAD
  38934. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25925" TYPE="XREF-TEXTCOPY">Mapping Attributes&rbwtab;5–6</RBW-XREF
  38935. ></SB.SECTION.BLOCK.TABLE
  38936. ></ENTRY
  38937. ></RBW-ROW
  38938. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37186" TYPE="XREF-TEXTCOPY">Mapping Operations&rbwtab;5–10</RBW-XREF
  38939. ></SB.SECTION.BLOCK.TABLE
  38940. ></ENTRY
  38941. ></RBW-ROW
  38942. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41603" TYPE="XREF-TEXTCOPY">Mapping Inheritance&rbwtab;5–14</RBW-XREF
  38943. ></SB.SECTION.BLOCK.TABLE
  38944. ></ENTRY
  38945. ></RBW-ROW
  38946. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19454" TYPE="XREF-TEXTCOPY">Mapping Associations&rbwtab;5–20</RBW-XREF
  38947. ></SB.SECTION.BLOCK.TABLE
  38948. ></ENTRY
  38949. ></RBW-ROW
  38950. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37770" TYPE="XREF-TEXTCOPY">Mapping Associations as Classes&rbwtab;5–26</RBW-XREF
  38951. ></SB.SECTION.BLOCK.TABLE
  38952. ></ENTRY
  38953. ></RBW-ROW
  38954. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14110" TYPE="XREF-TEXTCOPY">Mapping Aggregations&rbwtab;5–28</RBW-XREF
  38955. ></SB.SECTION.BLOCK.TABLE
  38956. ></ENTRY
  38957. ></RBW-ROW
  38958. ></TBODY
  38959. ></TGROUP
  38960. ></RBW-TABLE
  38961. ></LABEL
  38962. ><SECTION><S.SECTION.HEAD><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  38963. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  38964. ></RBW-SYSOBJ
  38965. >Introduction</S.SECTION.HEAD
  38966. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38967. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  38968. ><RBW-TEXTFLD TYPE="text">Code Generation and Reverse-Engineering Guide for Ada 83/95</RBW-TEXTFLD
  38969. ></RBW-SYSOBJ
  38970. ><RBW-IDXTERM TERM1="class" TERM2="in non-persistent code generation"></RBW-IDXTERM
  38971. >Mapping Non&truehy;Persistent Classes into Ada 83 Code</L.LABEL
  38972. ><B.BODY><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  38973. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  38974. ></RBW-SYSOBJ
  38975. >While in <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38976. >Object Design,<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38977. > you prepare the Class Diagrams for code generation by adding details that define how classes and their characteristics will be implemented in code. The Ada 83 code generator produces code only from Class Diagrams.</B.BODY
  38978. ><B.BODY>Some implementation details<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38979. > may reside in other diagrams such as the <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38980. >Collaboration Diagram and <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38981. >State Transition Diagram. Refer to these diagrams to uncover any additional classes that you may need to add to the Class Diagrams for implementation purposes. Also look for additional attributes, operations, and associations and add these to the Class Diagrams. You might also look for ways to simplify complex associations. The code generator interprets the implementation details in Class Diagrams and translates them into Ada 83 constructs in the resulting code files.</B.BODY
  38982. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  38983. ></RBW-AUTOGEN
  38984. >Ada 83 code is generated only for non&truehy;persistent classes.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38985. > </N.NOTE
  38986. ></LABEL
  38987. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38988. >Translating classes into Ada code</L.LABEL
  38989. ><B.BODY>An ObjectTeam class<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38990. > maps to an Ada record type declared in its own Ada package. A class must have at least one attribute or one operation to generate code. <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38991. >You create classes in Class Diagrams using the Class Diagram editor. You specify attributes and operations for a class by entering them<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38992. > inside the class symbol on the diagram.</B.BODY
  38993. ><B.BODY><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  38994. >Example of a class with one attribute and one operation:</B.BODY
  38995. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00368.tif" origseq="2" origtype="I" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  38996. ></FA.FIGURE.ANCHOR
  38997. ></LABEL
  38998. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  38999. >Class characteristics generate equivalent Ada 83 constructs</L.LABEL
  39000. ><B.BODY>ObjectTeam produces the equivalent Ada 95 constructs for each of the following characteristics of a class:<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39001. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39002. ></B.BODY
  39003. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39004. ></RBW-AUTOGEN
  39005. ></RBW-MARKER
  39006. ><RBW-PARABODY>Attributes of a class</RBW-PARABODY
  39007. ></LB.LIST.BULLET
  39008. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39009. ></RBW-AUTOGEN
  39010. ></RBW-MARKER
  39011. ><RBW-PARABODY>Operations of a class</RBW-PARABODY
  39012. ></LB.LIST.BULLET
  39013. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39014. ></RBW-AUTOGEN
  39015. ></RBW-MARKER
  39016. ><RBW-PARABODY>Relationships with other classes</RBW-PARABODY
  39017. ></LB.LIST.BULLET
  39018. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39019. ></RBW-AUTOGEN
  39020. ></RBW-MARKER
  39021. ><RBW-PARABODY>Inheritance of the class</RBW-PARABODY
  39022. ></LB.LIST.BULLET
  39023. ></LABEL
  39024. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39025. >Editing class properties</L.LABEL
  39026. ><B.BODY>You can edit the properties of a class, its attributes, operations, parameters, and data types in the Object Design phase. You do this by selecting the class symbol then by choosing Edit Properties<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39027. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39028. > from the Item menu on the Class Diagram editor’s menubar.</B.BODY
  39029. ><B.BODY>The <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39030. >properties you establish for a class and its characteristics determine the code that is generated for the class. Some properties may generate something other than a class in the resulting code, such as a new type.</B.BODY
  39031. ></LABEL
  39032. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39033. >Class visibility controls read/write access </L.LABEL
  39034. ><B.BODY>The Class visibility<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39035. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39036. > property establishes read/write access<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39037. > to the record type of the class.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39038. >. The record types are <CX5FX5FTERM>Public</CX5FX5FTERM
  39039. > (the default), <CX5FX5FTERM>Private</CX5FX5FTERM
  39040. >, <CX5FX5FTERM>Limited</CX5FX5FTERM
  39041. >,  or <CX5FX5FTERM>Opaque</CX5FX5FTERM
  39042. >. </B.BODY
  39043. ></LABEL
  39044. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39045. >Record and access type names</L.LABEL
  39046. ><B.BODY>By default, the Ada83 code generator produces a record type named “Instance” and an access type named “Link” for each ObjectTeam Class.</B.BODY
  39047. ><B.BODY>You can customize the name used for the record type by modifying the M4 variable M4_Ada83_Class_Record_Type_Name. Simularly, you can customize the name used for the access type by modifying the variable M4_Ada83_Class_Access_Type_Name. You must do so, however, before generating code.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39048. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39049. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39050. ></B.BODY
  39051. ><B.BODY><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39052. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39053. >See Chapter 8, Configuring the APDT Code Generators for information on M4 variables affecting code generation. See the <RBWAUTO-0007>ObjectTeam Customization Guide</RBWAUTO-0007
  39054. > for information on how to modify M4 variables.</B.BODY
  39055. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  39056. ></RBW-AUTOGEN
  39057. >If a class does not require an access type<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39058. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39059. >, you can include the following length clause in the appropriate user section of the package specification so that it does not reserve storage for the collection associated with the access type:<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39060. > </N.NOTE
  39061. ><E.EXAMPLE>for Link’storage_size use 0;</E.EXAMPLE
  39062. ><B.BODY>Below are examples of the Ada code that is generated for each record type:<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39063. ></B.BODY
  39064. ></LABEL
  39065. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39066. >Code generated for classes with public record types<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39067. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39068. ></L.LABEL
  39069. ><EM.EXAMPLE.MONO>package Object_Class is</EM.EXAMPLE.MONO
  39070. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  39071. ><EM.EXAMPLE.MONO>      Object_Id: Integer;</EM.EXAMPLE.MONO
  39072. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  39073. ><EM.EXAMPLE.MONO>   type Link is access Instance; </EM.EXAMPLE.MONO
  39074. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String;</EM.EXAMPLE.MONO
  39075. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  39076. ><EM.EXAMPLE.MONO>package body Object_Class is</EM.EXAMPLE.MONO
  39077. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String is</EM.EXAMPLE.MONO
  39078. ><EM.EXAMPLE.MONO>   begin</EM.EXAMPLE.MONO
  39079. ><EM.EXAMPLE.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EM.EXAMPLE.MONO
  39080. ><EM.EXAMPLE.MONO>   end Get_Object_Name;</EM.EXAMPLE.MONO
  39081. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  39082. ></LABEL
  39083. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39084. >Code generated for classes with private record types<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39085. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39086. ></L.LABEL
  39087. ><EM.EXAMPLE.MONO>package Object_Class is</EM.EXAMPLE.MONO
  39088. ><EM.EXAMPLE.MONO>   type Instance is private;</EM.EXAMPLE.MONO
  39089. ><EM.EXAMPLE.MONO>   type Link is access Instance;   </EM.EXAMPLE.MONO
  39090. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String;</EM.EXAMPLE.MONO
  39091. ><EM.EXAMPLE.MONO>private</EM.EXAMPLE.MONO
  39092. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  39093. ><EM.EXAMPLE.MONO>      Object_Id: Integer;</EM.EXAMPLE.MONO
  39094. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  39095. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  39096. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  39097. ></RBW-AUTOGEN
  39098. >(Package body is the same as <CX5FX5FTERM>Public’</CX5FX5FTERM
  39099. >s)</N.NOTE
  39100. ></LABEL
  39101. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39102. >Code generated for classes with limited record types<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39103. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39104. ></L.LABEL
  39105. ><EM.EXAMPLE.MONO>package Object_Class is</EM.EXAMPLE.MONO
  39106. ><EM.EXAMPLE.MONO>   type Instance is limited private;</EM.EXAMPLE.MONO
  39107. ><EM.EXAMPLE.MONO>   type Link is access Instance;  </EM.EXAMPLE.MONO
  39108. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String;</EM.EXAMPLE.MONO
  39109. ><EM.EXAMPLE.MONO>private</EM.EXAMPLE.MONO
  39110. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  39111. ><EM.EXAMPLE.MONO>      Object_Id: Integer;</EM.EXAMPLE.MONO
  39112. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  39113. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  39114. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  39115. ></RBW-AUTOGEN
  39116. >(Package body is same as <CX5FX5FTERM>Public’</CX5FX5FTERM
  39117. >s)</N.NOTE
  39118. ></LABEL
  39119. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39120. >Code generated for classes with opaque record types<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39121. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39122. ></L.LABEL
  39123. ><EM.EXAMPLE.MONO>package Object_Class is</EM.EXAMPLE.MONO
  39124. ><EM.EXAMPLE.MONO>   type Instance is limited private;</EM.EXAMPLE.MONO
  39125. ><EM.EXAMPLE.MONO>   type Link is access Instance;</EM.EXAMPLE.MONO
  39126. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String;</EM.EXAMPLE.MONO
  39127. ><EM.EXAMPLE.MONO>private</EM.EXAMPLE.MONO
  39128. ><EM.EXAMPLE.MONO>   type Data;</EM.EXAMPLE.MONO
  39129. ><EM.EXAMPLE.MONO>   type Instance is access Data;</EM.EXAMPLE.MONO
  39130. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  39131. ><EM.EXAMPLE.MONO>package body Object_Class is</EM.EXAMPLE.MONO
  39132. ><EM.EXAMPLE.MONO>   type Data is record</EM.EXAMPLE.MONO
  39133. ><EM.EXAMPLE.MONO>      Object_Id: Integer;</EM.EXAMPLE.MONO
  39134. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  39135. ><EM.EXAMPLE.MONO>   function Get_Object_Name (Self: Instance) return String is</EM.EXAMPLE.MONO
  39136. ><EM.EXAMPLE.MONO>   begin</EM.EXAMPLE.MONO
  39137. ><EM.EXAMPLE.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EM.EXAMPLE.MONO
  39138. ><EM.EXAMPLE.MONO>   end Get_Object_Name;</EM.EXAMPLE.MONO
  39139. ><EM.EXAMPLE.MONO>end Object_Class;</EM.EXAMPLE.MONO
  39140. ></LABEL
  39141. ></SECTION
  39142. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25925"></RBW-ANCHOR
  39143. >Mapping Attributes</S.SECTION.HEAD
  39144. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39145. >Translating data attribute syntax</L.LABEL
  39146. ><B.BODY>The <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39147. >attributes of a class map to components of the record type.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39148. > Class based attributes (those prefixed by a $) map to objects declared in the same package as the type.</B.BODY
  39149. ><B.BODY>Use the following syntax to specify the <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39150. >data type of an attribute of a class.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39151. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39152. > </B.BODY
  39153. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00369.unk" origfile="pics/attsytx" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39154. ></FA.FIGURE.ANCHOR
  39155. ><B.BODY>Specify a standard data type such as <CX5FX5FTERM>integer</CX5FX5FTERM
  39156. > or the name of another class. The optional dollar sign specifies a class&truehy;based attribute.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39157. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39158. > That is, it applies to the entire class, not an instance of a class.</B.BODY
  39159. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  39160. ></RBW-AUTOGEN
  39161. >[$] means the attribute may optionally be prefixed by a $, indicating the attribute is class&truehy;based.</T.TIP
  39162. ></LABEL
  39163. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39164. >Ada 83 constructs</L.LABEL
  39165. ><B.BODY>The code generator produces the following Ada 83 constructs for an <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39166. >attribute <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39167. >based <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39168. >on the value of its read/write access property.</B.BODY
  39169. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="175p"><COLSPEC COLNAME="2" COLWIDTH="271p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Ada</CELLHEADING
  39170. ></ENTRY
  39171. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Access</CELLHEADING
  39172. ></ENTRY
  39173. ></RBW-ROW
  39174. ></THEAD
  39175. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39176. >class record component</CELLBODY
  39177. ></ENTRY
  39178. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private or public, depending on the Class Visibility property setting. </CELLBODY
  39179. ></ENTRY
  39180. ></RBW-ROW
  39181. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>get member function<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39182. ></CELLBODY
  39183. ></ENTRY
  39184. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private or public depending on the Read/Write Access attribute setting. No function is generated if Read/Write is set to None.</CELLBODY
  39185. ></ENTRY
  39186. ></RBW-ROW
  39187. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set member function<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39188. ></CELLBODY
  39189. ></ENTRY
  39190. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private or public depending on the Read/Write Access attribute setting. No function is generated if Read/Write is set to None.</CELLBODY
  39191. ></ENTRY
  39192. ></RBW-ROW
  39193. ></TBODY
  39194. ></TGROUP
  39195. ></RBW-TABLE
  39196. ></LABEL
  39197. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39198. >Representing user&truehy;defined subtypes</L.LABEL
  39199. ><B.BODY>To represent a user&truehy;defined subtype<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39200. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39201. > in the Class Diagram, create a class with a single attribute whose data type is a standard Ada 83 type. The class must not contain: </B.BODY
  39202. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39203. ></RBW-AUTOGEN
  39204. ></RBW-MARKER
  39205. ><RBW-PARABODY>Associations that generate code for the class</RBW-PARABODY
  39206. ></LB.LIST.BULLET
  39207. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39208. ></RBW-AUTOGEN
  39209. ></RBW-MARKER
  39210. ><RBW-PARABODY>Operations</RBW-PARABODY
  39211. ></LB.LIST.BULLET
  39212. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39213. ></RBW-AUTOGEN
  39214. ></RBW-MARKER
  39215. ><RBW-PARABODY>Super classes</RBW-PARABODY
  39216. ></LB.LIST.BULLET
  39217. ><B.BODY>The attribute name is not important. However, you may want to insert additional text after the standard type. Select the class name in the left window of the Edit Properties dialog box, then add the additional text in the Subtype Text field.</B.BODY
  39218. ></LABEL
  39219. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39220. >Defining non&truehy;standard types</L.LABEL
  39221. ><B.BODY>To have the Ada code generator include non&truehy;standard types and subtypes in a system’s specification file, you must first define them. Do this in the system’s user&truehy;define types specification file named <CX5FX5FFILE.NAME>system_name_Types.ads</CX5FX5FFILE.NAME
  39222. >. Once defined, you can include these non&truehy;standard types and subtypes in all other system specification files that reference them.</B.BODY
  39223. ><B.BODY>System specification file format:</B.BODY
  39224. ><E.EXAMPLE>&truehy;&truehy; Specification file for Sample_Types</E.EXAMPLE
  39225. ><E.EXAMPLE>&truehy;&truehy;OT User+</E.EXAMPLE
  39226. ><E.EXAMPLE>&truehy;&truehy;OT User&truehy;</E.EXAMPLE
  39227. ><E.EXAMPLE>package Sample_Type is</E.EXAMPLE
  39228. ><E.EXAMPLE>&truehy;&truehy;OT User+</E.EXAMPLE
  39229. ><E.EXAMPLE>&truehy;&truehy;OT User&truehy;</E.EXAMPLE
  39230. ><E.EXAMPLE><non&truehy;standard types and subtype definitions of the system></E.EXAMPLE
  39231. ><E.EXAMPLE>&truehy;&truehy;OT User&truehy;</E.EXAMPLE
  39232. ><E.EXAMPLE>&truehy;&truehy;OT User+</E.EXAMPLE
  39233. ><E.EXAMPLE>end Sample_Types;</E.EXAMPLE
  39234. ><E.EXAMPLE>&truehy;&truehy;OT User+</E.EXAMPLE
  39235. ><E.EXAMPLE>&truehy;&truehy;OT User&truehy;</E.EXAMPLE
  39236. ></LABEL
  39237. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39238. >Representing a subtype in a class symbol</L.LABEL
  39239. ><B.BODY>The example below shows how to represent a subtype in a Class Diagram using the following class symbol:</B.BODY
  39240. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00370.tif" origseq="4" origtype="I" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39241. ></FA.FIGURE.ANCHOR
  39242. ><B.BODY>Edit the properties for this class and add the following entry in the Subtype Text field:<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39243. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39244. ></B.BODY
  39245. ><E.EXAMPLE>Subtype text = (1..20)</E.EXAMPLE
  39246. ><B.BODY>This generates the following Ada 83 code in the user section (after an <CX5FX5FFILE.NAME>&truehy;&truehy;OT User</CX5FX5FFILE.NAME
  39247. > &truehy; comment) of the user&truehy;defined types<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39248. > file:</B.BODY
  39249. ><E.EXAMPLE>subtype String20 is Character (1 . . 20);</E.EXAMPLE
  39250. ></LABEL
  39251. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39252. >Defining enum types</L.LABEL
  39253. ><B.BODY>To define an enum type class,<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39254. > you must specify class&truehy;based attributes<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39255. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39256. > (those specified with a $) of the type enum. Do not specify any associations that generate code for the typedef class,<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39257. > operations, subclasses, or superclasses.</B.BODY
  39258. ><B.BODY>The following is an example of an enum class definition<RBW-IDXTERM TERM1="enum class" TERM2="example"></RBW-IDXTERM
  39259. ></B.BODY
  39260. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00371.tif" origseq="12" origtype="I" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39261. ></FA.FIGURE.ANCHOR
  39262. ><B.BODY>The resulting code is generated in the system types specification:</B.BODY
  39263. ><E.EXAMPLE>type EnumEx1 is (X,Y,Z);<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39264. ></E.EXAMPLE
  39265. ></LABEL
  39266. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39267. >Editing attribute properties</L.LABEL
  39268. ><B.BODY>The value of an attribute’s Read/Write Access property determines in which section of the specification file, private or public, the code <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39269. >generator <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39270. >produces the <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39271. >get <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39272. >and <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39273. >set subprograms.</B.BODY
  39274. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Attribute access properties:</CELLHEADING
  39275. ></ENTRY
  39276. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  39277. ></ENTRY
  39278. ></RBW-ROW
  39279. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>public access</CELLHEADING
  39280. ></ENTRY
  39281. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>private access</CELLHEADING
  39282. ></ENTRY
  39283. ></RBW-ROW
  39284. ></THEAD
  39285. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set set</CELLBODY
  39286. ></ENTRY
  39287. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>get set</CELLBODY
  39288. ></ENTRY
  39289. ></RBW-ROW
  39290. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public &truehy; Public (default)</CELLBODY
  39291. ></ENTRY
  39292. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private &truehy; Private</CELLBODY
  39293. ></ENTRY
  39294. ></RBW-ROW
  39295. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public &truehy; Private</CELLBODY
  39296. ></ENTRY
  39297. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private &truehy; None</CELLBODY
  39298. ></ENTRY
  39299. ></RBW-ROW
  39300. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public &truehy; None</CELLBODY
  39301. ></ENTRY
  39302. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>None &truehy; None</CELLBODY
  39303. ></ENTRY
  39304. ></RBW-ROW
  39305. ></TBODY
  39306. ></TGROUP
  39307. ></RBW-TABLE
  39308. ></LABEL
  39309. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39310. >Get and set subprograms in Ada 83 packages</L.LABEL
  39311. ><B.BODY>For each attribute A of type T, the code generator creates these additional subprograms based on the attribute’s read/write access. If set to None then no Get/Set sub&truehy;programs are generated.</B.BODY
  39312. ><B.BODY>In the package specification file:<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39313. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39314. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39315. ></B.BODY
  39316. ><EM.EXAMPLE.MONO>function Get_A(Self: Instance) return T;</EM.EXAMPLE.MONO
  39317. ><EM.EXAMPLE.MONO>procedure Set_A(Self: in out Instance; New_A: T);</EM.EXAMPLE.MONO
  39318. ><B.BODY>In the package body file:<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39319. ></B.BODY
  39320. ><EM.EXAMPLE.MONO>function Get_A(Self: Instance) return T is</EM.EXAMPLE.MONO
  39321. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  39322. ><EM.EXAMPLE.MONO>   return Self.A;</EM.EXAMPLE.MONO
  39323. ><EM.EXAMPLE.MONO>end Get_A;</EM.EXAMPLE.MONO
  39324. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  39325. ><EM.EXAMPLE.MONO>procedure Set_A(Self: in out Instance; New_A: T) is</EM.EXAMPLE.MONO
  39326. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  39327. ><EM.EXAMPLE.MONO>   Self.A := New_A;</EM.EXAMPLE.MONO
  39328. ><EM.EXAMPLE.MONO>end Set_A;</EM.EXAMPLE.MONO
  39329. ></LABEL
  39330. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39331. >Generating get and set subprograms for attribute properties</L.LABEL
  39332. ><B.BODY>The following example shows how the code generator converts the attributes of a class into Ada 83 code.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39333. > The value of an attribute’s Read/Write Access property determines in which section of the package body and specification file the code generator produces the get and set subprograms.</B.BODY
  39334. ><B.BODY>Standard Type<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39335. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39336. ></B.BODY
  39337. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00372.tif" origseq="14" origtype="I" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39338. ></FA.FIGURE.ANCHOR
  39339. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  39340. ></RBW-AUTOGEN
  39341. >Constructors<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39342. > are not generated in Ada code. However, if you want to define a class with one attribute and no operations, you may add the $create() operation to denote that the class is not a typedef (subtype) class.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39343. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39344. > The code generator produces the Ada files but not a subtype statement. The $create() operation does not generate any code.</N.NOTE
  39345. ><B.BODY>Ada 95 Specification<RBW-IDXTERM TERM1="Standard data types" TERM2="Ada specification"></RBW-IDXTERM
  39346. ><RBW-IDXTERM TERM1="Ada specification file" TERM2="get and set subprograms"></RBW-IDXTERM
  39347. >:</B.BODY
  39348. ><EM.EXAMPLE.MONO>package DataAttribEx is</EM.EXAMPLE.MONO
  39349. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  39350. ><EM.EXAMPLE.MONO>      Age: Integer;</EM.EXAMPLE.MONO
  39351. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  39352. ><EM.EXAMPLE.MONO>   function Get_Age (Self : Instance) return Integer;</EM.EXAMPLE.MONO
  39353. ><EM.EXAMPLE.MONO>   procedure Set_Age (Self : Instance; New_Age: Integer);</EM.EXAMPLE.MONO
  39354. ><EM.EXAMPLE.MONO>end DataAttribEx;</EM.EXAMPLE.MONO
  39355. ></LABEL
  39356. ></SECTION
  39357. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37186"></RBW-ANCHOR
  39358. >Mapping Operations</S.SECTION.HEAD
  39359. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39360. >Introduction</L.LABEL
  39361. ><B.BODY>Operations of an ObjectTeam class map to primitive subprograms of an Ada record type.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39362. ></B.BODY
  39363. ></LABEL
  39364. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39365. >Specifying operation syntax</L.LABEL
  39366. ><B.BODY><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39367. >Use <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39368. >the following syntax to specify the operations of a class. The optional dollar sign specifies a class&truehy;based operation.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39369. > That is, it applies to the entire class rather than an instance of the class.</B.BODY
  39370. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00373.unk" origfile="pics/oprsytx.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39371. ></FA.FIGURE.ANCHOR
  39372. ><B.BODY>Ada 83 constructs generated in specification and body files<RBW-IDXTERM TERM1="Ada constructs" TERM2="for operations"></RBW-IDXTERM
  39373. >:</B.BODY
  39374. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Ada 95 package</CELLHEADING
  39375. ></ENTRY
  39376. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Ada 95 construct</CELLHEADING
  39377. ></ENTRY
  39378. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Access</CELLHEADING
  39379. ></ENTRY
  39380. ></RBW-ROW
  39381. ></THEAD
  39382. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>package specification</CELLBODY
  39383. ></ENTRY
  39384. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>subprogram specification</CELLBODY
  39385. ></ENTRY
  39386. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>private or public (based on access property setting)</CELLBODY
  39387. ></ENTRY
  39388. ></RBW-ROW
  39389. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>package body</CELLBODY
  39390. ></ENTRY
  39391. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>empty body</CELLBODY
  39392. ></ENTRY
  39393. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  39394. ></ENTRY
  39395. ></RBW-ROW
  39396. ></TBODY
  39397. ></TGROUP
  39398. ></RBW-TABLE
  39399. ></LABEL
  39400. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39401. >Operations you can specify for a class</L.LABEL
  39402. ><B.BODY>Listed below are examples of operations that you can specify for a class<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39403. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39404. >. The subprogram declarations<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39405. > the system generates for the operation (or method) are based on whether the operation property is public or private.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39406. ></B.BODY
  39407. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper1()</CX5FX5FFILE.NAME
  39408. >, simple operation</EWM.EXAMPLEW.MONO
  39409. ><EWM.EXAMPLEW.MONO>   procedure Oper1 (Self : in out Instance);</EWM.EXAMPLEW.MONO
  39410. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper2():Integer</CX5FX5FFILE.NAME
  39411. >, with standard return type</EWM.EXAMPLEW.MONO
  39412. ><EWM.EXAMPLEW.MONO>   function Oper2 (Self : Instance) return Integer;</EWM.EXAMPLEW.MONO
  39413. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper3(I: Integer):Date</CX5FX5FFILE.NAME
  39414. >, with one parameter and another class as the return type</EWM.EXAMPLEW.MONO
  39415. ><EWM.EXAMPLEW.MONO>   function Oper3 (Self : Instance; I : in Integer) return Date.Link;</EWM.EXAMPLEW.MONO
  39416. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$Oper4():Integer</CX5FX5FFILE.NAME
  39417. >, class&truehy;based operation with no parameters</EWM.EXAMPLEW.MONO
  39418. ><EWM.EXAMPLEW.MONO>   function Oper4 return Integer;</EWM.EXAMPLEW.MONO
  39419. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$Oper5(J:Integer):Integer</CX5FX5FFILE.NAME
  39420. >, class&truehy;based operation with one parameter</EWM.EXAMPLEW.MONO
  39421. ><EWM.EXAMPLEW.MONO>   function Oper5 (J : in Integer) return Integer;</EWM.EXAMPLEW.MONO
  39422. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper6(m:Integer)</CX5FX5FFILE.NAME
  39423. >, with one parameter type and no return type</EWM.EXAMPLEW.MONO
  39424. ><EWM.EXAMPLEW.MONO>   procedure Oper6  (Self : in out Instance; M : in Integer);</EWM.EXAMPLEW.MONO
  39425. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>Oper7(d:Date)</CX5FX5FFILE.NAME
  39426. >, with another class as the parameter</EWM.EXAMPLEW.MONO
  39427. ><EWM.EXAMPLEW.MONO>   procedure Oper7 (Self : in out Instance; D : in Date.Link);</EWM.EXAMPLEW.MONO
  39428. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$Oper8()</CX5FX5FFILE.NAME
  39429. >, class&truehy;based operation with no parameters</EWM.EXAMPLEW.MONO
  39430. ><EWM.EXAMPLEW.MONO>   procedure Oper8;</EWM.EXAMPLEW.MONO
  39431. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$Oper9(J:Integer)</CX5FX5FFILE.NAME
  39432. >, class&truehy;based operation with one parameter </EWM.EXAMPLEW.MONO
  39433. ><EWM.EXAMPLEW.MONO>   procedure Oper9 (J : in Integer);</EWM.EXAMPLEW.MONO
  39434. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>$create()</CX5FX5FFILE.NAME
  39435. >, indicates the class is not a typedef (subtype) class. </EWM.EXAMPLEW.MONO
  39436. ><EWM.EXAMPLEW.MONO>   No code is generated.</EWM.EXAMPLEW.MONO
  39437. ></LABEL
  39438. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39439. >Editing operation properties</L.LABEL
  39440. ><B.BODY>Use the<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39441. > Edit Properties dialog box to specify properties of operations. The Method Access property determines in which section of the package specification, visible or private, the code generator produces the subprogram. The values are <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39442. >public (the default) or private, or none. You can also specify a Tcl procedure to automatically generate the subprogram body.</B.BODY
  39443. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00374.unk" origfile="pics/prop1.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39444. ></FA.FIGURE.ANCHOR
  39445. ></LABEL
  39446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39447. >Generating operation body contents</L.LABEL
  39448. ><B.BODY>The initial code generated for the body of an operation contains an empty subprogram body and the following comment:<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39449. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39450. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39451. ></B.BODY
  39452. ><E.EXAMPLE>&truehy; &truehy; !! Implement this subprogram !!</E.EXAMPLE
  39453. ><B.BODY>You must fill the empty bodies with the appropriate Ada declarations, statements, and comments<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39454. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39455. > between the User sections that appear throughout the generated code before compiling it. Otherwise, the compiler will report an error.</B.BODY
  39456. ></LABEL
  39457. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39458. >Manually fill in the user sections of the code</L.LABEL
  39459. ><B.BODY>You can manually edit the code files and insert comments and additional code between the User sections (represented as <CX5FX5FFILE.NAME>&truehy;&truehy;OT User+</CX5FX5FFILE.NAME
  39460. > and <CX5FX5FFILE.NAME>&truehy;&truehy;OT User&truehy;</CX5FX5FFILE.NAME
  39461. >). When you regenerate, the code generator saves and inserts your text in the appropriate section of the specification file.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39462. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39463. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39464. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39465. ></B.BODY
  39466. ></LABEL
  39467. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39468. >Generate the body using a Tcl procedure<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39469. ></L.LABEL
  39470. ><B.BODY>You can also create a Tool Command Language (Tcl) procedure<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39471. > to automatically generate the body of an operation.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39472. > This is often done when generating code for the first time. For example, you can specify a Tcl procedure for a general purpose function, such as printOn, to print all the data members of a class to standard output. You can use this type of function for any class. The contents of the function are the same for every class; only the class is different. Specify the procedure as a class attribute for an operation.</B.BODY
  39473. ></LABEL
  39474. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39475. >Syntax for creating a Tcl procedure</L.LABEL
  39476. ><EM.EXAMPLE.MONO>proc operation::<attrib value> { oper class sect } { }</EM.EXAMPLE.MONO
  39477. ><EM.EXAMPLE.MONO>attrib value procedure name and class attribute value</EM.EXAMPLE.MONO
  39478. ><EM.EXAMPLE.MONO>oper         operation handle</EM.EXAMPLE.MONO
  39479. ><EM.EXAMPLE.MONO>class        class handle</EM.EXAMPLE.MONO
  39480. ><EM.EXAMPLE.MONO>sect         section handle</EM.EXAMPLE.MONO
  39481. ><B.BODY>Create the procedure in one of the following Tcl scripts:</B.BODY
  39482. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39483. ></RBW-AUTOGEN
  39484. ></RBW-MARKER
  39485. ><RBW-PARABODY><CX5FX5FFILE.NAME>u_genada83.tcl</CX5FX5FFILE.NAME
  39486. > in the <RBWAUTO-0007>M4_home\modules\ada83\tcl</RBWAUTO-0007
  39487. > directory<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39488. ></RBW-PARABODY
  39489. ></LB.LIST.BULLET
  39490. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39491. ></RBW-AUTOGEN
  39492. ></RBW-MARKER
  39493. ><RBW-PARABODY>Customize the file <CX5FX5FFILE.NAME>u_genada83.tcl</CX5FX5FFILE.NAME
  39494. > at any level in the directory structure</RBW-PARABODY
  39495. ></LB.LIST.BULLET
  39496. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  39497. ></RBW-AUTOGEN
  39498. >You may need to create <CX5FX5FFILE.NAME>u_genada83.tcl</CX5FX5FFILE.NAME
  39499. > by copying <CX5FX5FFILE.NAME>genada83.tcl</CX5FX5FFILE.NAME
  39500. >. </N.NOTE
  39501. ></LABEL
  39502. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39503. >Editing properties for parameters</L.LABEL
  39504. ><B.BODY>In Object Design, you can also set properties for parameters of operations. Choose Edit Properties from the Item menu on the Class Diagram menubar. Specify a value that must appear in the function declaration. Also, set a Parameter Mode<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39505. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39506. > value of <CX5FX5FEMPHASIS>in</CX5FX5FEMPHASIS
  39507. >, <CX5FX5FEMPHASIS>out</CX5FX5FEMPHASIS
  39508. >, or <CX5FX5FEMPHASIS>in out</CX5FX5FEMPHASIS
  39509. >. </B.BODY
  39510. ></LABEL
  39511. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39512. >Specifying overloaded operations</L.LABEL
  39513. ><B.BODY>You can specify overloaded operators for operation names in classes in Class Diagrams.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39514. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39515. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39516. > The following table lists the operators you can specify in a class and the corresponding Ada 83 operator generated in code.The following table shoes the mapping of overloaded operators:</B.BODY
  39517. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operator Specified In A Class</CELLHEADING
  39518. ></ENTRY
  39519. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operator In Ada 95 Code</CELLHEADING
  39520. ></ENTRY
  39521. ></RBW-ROW
  39522. ></THEAD
  39523. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>“and”</CELLBODY
  39524. ></ENTRY
  39525. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“and”</CELLBODY
  39526. ></ENTRY
  39527. ></RBW-ROW
  39528. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>“or”</CELLBODY
  39529. ></ENTRY
  39530. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“or”</CELLBODY
  39531. ></ENTRY
  39532. ></RBW-ROW
  39533. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“xor”</CELLBODY
  39534. ></ENTRY
  39535. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“xor”</CELLBODY
  39536. ></ENTRY
  39537. ></RBW-ROW
  39538. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“abs”</CELLBODY
  39539. ></ENTRY
  39540. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“abs”</CELLBODY
  39541. ></ENTRY
  39542. ></RBW-ROW
  39543. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“not”</CELLBODY
  39544. ></ENTRY
  39545. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“not”</CELLBODY
  39546. ></ENTRY
  39547. ></RBW-ROW
  39548. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“mod”</CELLBODY
  39549. ></ENTRY
  39550. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“mod”</CELLBODY
  39551. ></ENTRY
  39552. ></RBW-ROW
  39553. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“rem”</CELLBODY
  39554. ></ENTRY
  39555. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“rem”</CELLBODY
  39556. ></ENTRY
  39557. ></RBW-ROW
  39558. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorEQ</CELLBODY
  39559. ></ENTRY
  39560. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“=”</CELLBODY
  39561. ></ENTRY
  39562. ></RBW-ROW
  39563. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“< ”, operator< </CELLBODY
  39564. ></ENTRY
  39565. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“<”</CELLBODY
  39566. ></ENTRY
  39567. ></RBW-ROW
  39568. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorLE</CELLBODY
  39569. ></ENTRY
  39570. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“<=”</CELLBODY
  39571. ></ENTRY
  39572. ></RBW-ROW
  39573. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“\>” , operator></CELLBODY
  39574. ></ENTRY
  39575. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“\>”</CELLBODY
  39576. ></ENTRY
  39577. ></RBW-ROW
  39578. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorGE</CELLBODY
  39579. ></ENTRY
  39580. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“\>=”</CELLBODY
  39581. ></ENTRY
  39582. ></RBW-ROW
  39583. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“+” , operator+</CELLBODY
  39584. ></ENTRY
  39585. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“+”</CELLBODY
  39586. ></ENTRY
  39587. ></RBW-ROW
  39588. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“&truehy;” , operator&truehy;</CELLBODY
  39589. ></ENTRY
  39590. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“&truehy;”</CELLBODY
  39591. ></ENTRY
  39592. ></RBW-ROW
  39593. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>“&”</CELLBODY
  39594. ></ENTRY
  39595. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>“&”</CELLBODY
  39596. ></ENTRY
  39597. ></RBW-ROW
  39598. ></TBODY
  39599. ></TGROUP
  39600. ></RBW-TABLE
  39601. ><B.BODY></B.BODY
  39602. ></LABEL
  39603. ></SECTION
  39604. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="41603"></RBW-ANCHOR
  39605. >Mapping Inheritance</S.SECTION.HEAD
  39606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39607. >Introduction</L.LABEL
  39608. ><B.BODY>The Ada83 code generator supports inheritance by mapping a child class to a record which has the parent as a component.</B.BODY
  39609. ><B.BODY>Multiple inheritance is supported in the same manner.</B.BODY
  39610. ><B.BODY>The code generator does not distinguish between overlapping and non&truehy;overlapping generalizations.</B.BODY
  39611. ></LABEL
  39612. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39613. >Editing inheritance access properties</L.LABEL
  39614. ><B.BODY>You can set the inheritance access<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39615. > property of a subclass <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39616. >to control access to the attribute record and operations<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39617. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39618. > of the base class.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39619. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39620. > Select the triangle portion of the inheritance notation symbol and choose Edit Properties from the Item menu on the Class Diagram menubar.</B.BODY
  39621. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  39622. ></RBW-AUTOGEN
  39623. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39624. >Superclasses are also referred to as <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39625. >base classes, and subclasses are referred to as <RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39626. >derived classes.</N.NOTE
  39627. ></LABEL
  39628. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39629. >Mapping single inheritance</L.LABEL
  39630. ><B.BODY>The diagram below shows how ObjectTeam represents single inheritance. Because the attribute type Weight_Type is not a standard Ada type, it was added to the customization file object’s <RBWAUTO-0004>stand_types.stand_types</RBWAUTO-0004
  39631. > file for this example.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39632. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39633. ></B.BODY
  39634. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00375.unk" origfile="pics/gener1.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39635. ></FA.FIGURE.ANCHOR
  39636. ><B.BODY>As a result of setting the Attribute Access property of the base class (Component) to Public, the Ada body and specification files include its attribute record and the operations for the subclass definitions Receiver and Transmitter. This example omits the Get and Set subprograms for simplicity.</B.BODY
  39637. ></LABEL
  39638. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39639. >Ada code for single inheritance<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39640. ></L.LABEL
  39641. ><B.BODY></B.BODY
  39642. ><EWM.EXAMPLEW.MONO>package Component is</EWM.EXAMPLEW.MONO
  39643. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  39644. ><EWM.EXAMPLEW.MONO>      Weight: Weight_Type;</EWM.EXAMPLEW.MONO
  39645. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  39646. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type;</EWM.EXAMPLEW.MONO
  39647. ><EWM.EXAMPLEW.MONO>end Component;</EWM.EXAMPLEW.MONO
  39648. ><EWM.EXAMPLEW.MONO>with Component;</EWM.EXAMPLEW.MONO
  39649. ><EWM.EXAMPLEW.MONO>package Receiver is</EWM.EXAMPLEW.MONO
  39650. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  39651. ><EWM.EXAMPLEW.MONO>      Component_Inh: Component.Instance;</EWM.EXAMPLEW.MONO
  39652. ><EWM.EXAMPLEW.MONO>      Receiver_Attr: Integer;</EWM.EXAMPLEW.MONO
  39653. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  39654. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type;</EWM.EXAMPLEW.MONO
  39655. ><EWM.EXAMPLEW.MONO>   procedure Initiate (Self: Instance);</EWM.EXAMPLEW.MONO
  39656. ><EWM.EXAMPLEW.MONO>end Receiver;</EWM.EXAMPLEW.MONO
  39657. ><EWM.EXAMPLEW.MONO>with Component;</EWM.EXAMPLEW.MONO
  39658. ><EWM.EXAMPLEW.MONO>package Transmitter is</EWM.EXAMPLEW.MONO
  39659. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  39660. ><EWM.EXAMPLEW.MONO>      Component_Inh: Component.Instance;</EWM.EXAMPLEW.MONO
  39661. ><EWM.EXAMPLEW.MONO>      Transmitter_Attr: Integer;</EWM.EXAMPLEW.MONO
  39662. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  39663. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type;</EWM.EXAMPLEW.MONO
  39664. ><EWM.EXAMPLEW.MONO>   procedure Initiate (Self: Instance);</EWM.EXAMPLEW.MONO
  39665. ><EWM.EXAMPLEW.MONO>end Transmitter;</EWM.EXAMPLEW.MONO
  39666. ><EWM.EXAMPLEW.MONO>package body Component is</EWM.EXAMPLEW.MONO
  39667. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type is</EWM.EXAMPLEW.MONO
  39668. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  39669. ><EWM.EXAMPLEW.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EWM.EXAMPLEW.MONO
  39670. ><EWM.EXAMPLEW.MONO>   end My_Weight;</EWM.EXAMPLEW.MONO
  39671. ><EWM.EXAMPLEW.MONO>end Component;</EWM.EXAMPLEW.MONO
  39672. ><EWM.EXAMPLEW.MONO>               package body Receiver is</EWM.EXAMPLEW.MONO
  39673. ><EWM.EXAMPLEW.MONO>                  function My_Weight (Self: Instance) return Weight_Type is</EWM.EXAMPLEW.MONO
  39674. ><EWM.EXAMPLEW.MONO>                  begin</EWM.EXAMPLEW.MONO
  39675. ><EWM.EXAMPLEW.MONO>                     return Component.My_Weight (Self.Component_Inh);</EWM.EXAMPLEW.MONO
  39676. ><EWM.EXAMPLEW.MONO>                  end My_Weight;</EWM.EXAMPLEW.MONO
  39677. ><EWM.EXAMPLEW.MONO>                  procedure Initiate (Self: Instance) is</EWM.EXAMPLEW.MONO
  39678. ><EWM.EXAMPLEW.MONO>                  begin</EWM.EXAMPLEW.MONO
  39679. ><EWM.EXAMPLEW.MONO>                     &truehy; &truehy; !! Implement this subprogram !!</EWM.EXAMPLEW.MONO
  39680. ><EWM.EXAMPLEW.MONO>                  end Initiate;</EWM.EXAMPLEW.MONO
  39681. ><EWM.EXAMPLEW.MONO>               end Receiver;</EWM.EXAMPLEW.MONO
  39682. ><EWM.EXAMPLEW.MONO>package body Transmitter is</EWM.EXAMPLEW.MONO
  39683. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type is</EWM.EXAMPLEW.MONO
  39684. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  39685. ><EWM.EXAMPLEW.MONO>      return Component.My_Weight (Self.Component_Inh);</EWM.EXAMPLEW.MONO
  39686. ><EWM.EXAMPLEW.MONO>   end My_Weight;</EWM.EXAMPLEW.MONO
  39687. ><EWM.EXAMPLEW.MONO>   procedure Initiate (Self: Instance) is</EWM.EXAMPLEW.MONO
  39688. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  39689. ><EWM.EXAMPLEW.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EWM.EXAMPLEW.MONO
  39690. ><EWM.EXAMPLEW.MONO>   end Initiate;</EWM.EXAMPLEW.MONO
  39691. ><EWM.EXAMPLEW.MONO>end Transmitter;</EWM.EXAMPLEW.MONO
  39692. ></LABEL
  39693. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39694. >Mapping multiple inheritance</L.LABEL
  39695. ><B.BODY>Multiple inheritance<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39696. > occurs when a class inherits properties<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39697. > from two or more superclasses.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39698. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39699. > The diagram below shows an example of how multiple inheritance is represented in ObjectTeam. </B.BODY
  39700. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00376.unk" origfile="pics/gener2.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39701. ></FA.FIGURE.ANCHOR
  39702. ><B.BODY>The Ada code generated from the Receiver and Transmitter classes in this example is identical to that shown in the previous single inheritance example, with the following exception.</B.BODY
  39703. ><B.BODY>The Ada code generator cannot automatically determine from which superclass to generate the My_Weight() function<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39704. > and initiate<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39705. > procedures for the inheriting class, Receiver_Transmitter. Therefore, it generates these procedures from both the Receiver and Transmitter superclasses in the resulting code file. You choose which function and initiate procedure you want by editing the file and removing the comment delimiters from those entries.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39706. ></B.BODY
  39707. ></LABEL
  39708. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39709. >Ada code for multiple inheritance<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39710. ></L.LABEL
  39711. ><EWM.EXAMPLEW.MONO>with Receiver;</EWM.EXAMPLEW.MONO
  39712. ><EWM.EXAMPLEW.MONO>with Transmitter;</EWM.EXAMPLEW.MONO
  39713. ><EWM.EXAMPLEW.MONO>package Receiver_Transmitter is</EWM.EXAMPLEW.MONO
  39714. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  39715. ><EWM.EXAMPLEW.MONO>      Receiver_Inh: Receiver.Instance;</EWM.EXAMPLEW.MONO
  39716. ><EWM.EXAMPLEW.MONO>      Transmitter_Inh: Transmitter.Instance;</EWM.EXAMPLEW.MONO
  39717. ><EWM.EXAMPLEW.MONO>      Receive_Trans_Attr: Integer;</EWM.EXAMPLEW.MONO
  39718. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  39719. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type;</EWM.EXAMPLEW.MONO
  39720. ><EWM.EXAMPLEW.MONO>   procedure Initiate (Self: Instance);</EWM.EXAMPLEW.MONO
  39721. ><EWM.EXAMPLEW.MONO>   function Select_Function (Self: Instance) return Integer;</EWM.EXAMPLEW.MONO
  39722. ><EWM.EXAMPLEW.MONO>end Receiver_Transmitter;</EWM.EXAMPLEW.MONO
  39723. ><EWM.EXAMPLEW.MONO>package body Receiver_Transmitter is</EWM.EXAMPLEW.MONO
  39724. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type is</EWM.EXAMPLEW.MONO
  39725. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  39726. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; return Receiver.My_Weight (Self.Receiver_Inh);</EWM.EXAMPLEW.MONO
  39727. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; return Transmitter.My_Weight (Self.Transmitter_Inh);</EWM.EXAMPLEW.MONO
  39728. ><EWM.EXAMPLEW.MONO>   end My_Weight;</EWM.EXAMPLEW.MONO
  39729. ><EWM.EXAMPLEW.MONO>   procedure Initiate (Self: Instance) is</EWM.EXAMPLEW.MONO
  39730. ><EWM.EXAMPLEW.MONO>      begin</EWM.EXAMPLEW.MONO
  39731. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Receiver.Initiate (Self.Receiver_Inh);</EWM.EXAMPLEW.MONO
  39732. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Transmitter.Initiate (Self.Transmitter_Inh);</EWM.EXAMPLEW.MONO
  39733. ><EWM.EXAMPLEW.MONO>   end initiate;</EWM.EXAMPLEW.MONO
  39734. ><EWM.EXAMPLEW.MONO>   function Select_Function (Self: Instance) return Integer is</EWM.EXAMPLEW.MONO
  39735. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  39736. ><EWM.EXAMPLEW.MONO>      &truehy; &truehy; !! Implement this subprogram !!</EWM.EXAMPLEW.MONO
  39737. ><EWM.EXAMPLEW.MONO>   end Select_Function;</EWM.EXAMPLEW.MONO
  39738. ><EWM.EXAMPLEW.MONO>end Receiver_Transmitter;</EWM.EXAMPLEW.MONO
  39739. ></LABEL
  39740. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39741. >Mapping polymorphism</L.LABEL
  39742. ><B.BODY>The code generator produces the following additional Ada package for polymorphic<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39743. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39744. > classes when you enable the polymorphism M4 configuration variable. Enabling the polymorphism M4 variable would generate the package for the single inheritance diagram shown previously. See Chapter 2, Preparing ObjectTeam for use with the APDT, for information about modifying the M4 variables.</B.BODY
  39745. ></LABEL
  39746. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39747. >Ada code for polymorphic classes<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39748. ></L.LABEL
  39749. ><EWM.EXAMPLEW.MONO>with Component;</EWM.EXAMPLEW.MONO
  39750. ><EWM.EXAMPLEW.MONO>with Receiver;</EWM.EXAMPLEW.MONO
  39751. ><EWM.EXAMPLEW.MONO>with Transmitter;</EWM.EXAMPLEW.MONO
  39752. ><EWM.EXAMPLEW.MONO>package Any_Component is</EWM.EXAMPLEW.MONO
  39753. ><EWM.EXAMPLEW.MONO>   type Kind is (A_Component, A_Receiver, A_Transmitter);</EWM.EXAMPLEW.MONO
  39754. ><EWM.EXAMPLEW.MONO>   type Instance (Component_Kind: Kind := A_Component) is record</EWM.EXAMPLEW.MONO
  39755. ><EWM.EXAMPLEW.MONO>      case Component_Kind is</EWM.EXAMPLEW.MONO
  39756. ><EWM.EXAMPLEW.MONO>         when A_Component =></EWM.EXAMPLEW.MONO
  39757. ><EWM.EXAMPLEW.MONO>                Component_Obj: Component.Instance;</EWM.EXAMPLEW.MONO
  39758. ><EWM.EXAMPLEW.MONO>         when A_Receiver =></EWM.EXAMPLEW.MONO
  39759. ><EWM.EXAMPLEW.MONO>                Receiver_Obj: Receiver.Instance;</EWM.EXAMPLEW.MONO
  39760. ><EWM.EXAMPLEW.MONO>         when A_Transmitter =></EWM.EXAMPLEW.MONO
  39761. ><EWM.EXAMPLEW.MONO>                Transmitter_Obj: Transmitter.Instance;</EWM.EXAMPLEW.MONO
  39762. ><EWM.EXAMPLEW.MONO>      end case;</EWM.EXAMPLEW.MONO
  39763. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  39764. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type;</EWM.EXAMPLEW.MONO
  39765. ><EWM.EXAMPLEW.MONO>   procedure Initiate (Self: Instance);</EWM.EXAMPLEW.MONO
  39766. ><EWM.EXAMPLEW.MONO>end Any_Component;</EWM.EXAMPLEW.MONO
  39767. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  39768. ><EWM.EXAMPLEW.MONO>package body Any_Component is</EWM.EXAMPLEW.MONO
  39769. ><EWM.EXAMPLEW.MONO>   function My_Weight (Self: Instance) return Weight_Type is</EWM.EXAMPLEW.MONO
  39770. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  39771. ><EWM.EXAMPLEW.MONO>      case Self.Component_Kind is</EWM.EXAMPLEW.MONO
  39772. ><EWM.EXAMPLEW.MONO>         when A_Component =></EWM.EXAMPLEW.MONO
  39773. ><EWM.EXAMPLEW.MONO>                return Component.My_Weight (Self.Component_Obj);</EWM.EXAMPLEW.MONO
  39774. ><EWM.EXAMPLEW.MONO>         when A_Receiver =></EWM.EXAMPLEW.MONO
  39775. ><EWM.EXAMPLEW.MONO>                return Receiver.My_Weight (Self.Receiver_Obj);</EWM.EXAMPLEW.MONO
  39776. ><EWM.EXAMPLEW.MONO>         when A_Transmitter =></EWM.EXAMPLEW.MONO
  39777. ><EWM.EXAMPLEW.MONO>                return Transmitter.My_Weight (Self.Transmitter_Obj);</EWM.EXAMPLEW.MONO
  39778. ><EWM.EXAMPLEW.MONO>   end case;</EWM.EXAMPLEW.MONO
  39779. ><EWM.EXAMPLEW.MONO>end My_Weight;</EWM.EXAMPLEW.MONO
  39780. ><EWM.EXAMPLEW.MONO>procedure Initiate (Self: Instance) is</EWM.EXAMPLEW.MONO
  39781. ><EWM.EXAMPLEW.MONO>   begin</EWM.EXAMPLEW.MONO
  39782. ><EWM.EXAMPLEW.MONO>      case Self.Component_Kind is</EWM.EXAMPLEW.MONO
  39783. ><EWM.EXAMPLEW.MONO>         when A_Component =></EWM.EXAMPLEW.MONO
  39784. ><EWM.EXAMPLEW.MONO>                raise Constraint_Error;</EWM.EXAMPLEW.MONO
  39785. ><EWM.EXAMPLEW.MONO>         when A_Receiver =></EWM.EXAMPLEW.MONO
  39786. ><EWM.EXAMPLEW.MONO>                Receiver.Initiate (Self.Receiver_Obj);</EWM.EXAMPLEW.MONO
  39787. ><EWM.EXAMPLEW.MONO>         when A_Transmitter =></EWM.EXAMPLEW.MONO
  39788. ><EWM.EXAMPLEW.MONO>                Transmitter.Initiate (Self.Transmitter_Obj);</EWM.EXAMPLEW.MONO
  39789. ><EWM.EXAMPLEW.MONO>      end case;</EWM.EXAMPLEW.MONO
  39790. ><EWM.EXAMPLEW.MONO>   end Initiate;</EWM.EXAMPLEW.MONO
  39791. ><EWM.EXAMPLEW.MONO>end Any_Component;</EWM.EXAMPLEW.MONO
  39792. ></LABEL
  39793. ></SECTION
  39794. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="19454"></RBW-ANCHOR
  39795. >Mapping Associations</S.SECTION.HEAD
  39796. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39797. >Introduction</L.LABEL
  39798. ><B.BODY>An association in ObjectTeam maps to Ada access components in the record types for some or all of the related classes.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39799. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39800. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39801. > The code generator creates an access component for a class in an association if a rolename is specified at the far end of the association<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39802. ></B.BODY
  39803. ></LABEL
  39804. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39805. >Association types<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39806. ></L.LABEL
  39807. ><B.BODY>The Ada 83 code generator produces code for the following types of associations:</B.BODY
  39808. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39809. ></RBW-AUTOGEN
  39810. ></RBW-MARKER
  39811. ><RBW-PARABODY>Binary and qualified associations, including those specified with multiplicity and optionality</RBW-PARABODY
  39812. ></LB.LIST.BULLET
  39813. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39814. ></RBW-AUTOGEN
  39815. ></RBW-MARKER
  39816. ><RBW-PARABODY>Associations with link attributes</RBW-PARABODY
  39817. ></LB.LIST.BULLET
  39818. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39819. ></RBW-AUTOGEN
  39820. ></RBW-MARKER
  39821. ><RBW-PARABODY>Associations modeled as classes</RBW-PARABODY
  39822. ></LB.LIST.BULLET
  39823. ><B.BODY>If an association link attribute is modeled as a class, the system generates an additional Ada 83 package to implement the association.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39824. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39825. ></B.BODY
  39826. ></LABEL
  39827. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39828. >Generic package specifications<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39829. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39830. ></L.LABEL
  39831. ><B.BODY>The following generic packages generate code for associations. These packages can be found in the directory <RBWAUTO-0007>M4_home/modules/ada83/config/src </RBWAUTO-0007
  39832. >and must be compiled and linked with the generated Ada83 code..<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39833. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39834. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39835. > The first two packages are used in one&truehy;to&truehy;many and many&truehy;to&truehy;many associations. Keywords<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39836. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39837. > are shown in italics. The<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39838. > type names <CX5FX5FTERM>Ordered_Set, Unordered_Set</CX5FX5FTERM
  39839. >, and <CX5FX5FTERM>Dictionary</CX5FX5FTERM
  39840. > must be unique to avoid possible conflicts.</B.BODY
  39841. ><EM.EXAMPLE.MONO>generic</EM.EXAMPLE.MONO
  39842. ><EM.EXAMPLE.MONO>   type Element is private;</EM.EXAMPLE.MONO
  39843. ><EM.EXAMPLE.MONO>package Generic_Ordered_Set is</EM.EXAMPLE.MONO
  39844. ><EM.EXAMPLE.MONO>   type Ordered_Set is private;</EM.EXAMPLE.MONO
  39845. ><EM.EXAMPLE.MONO>   procedure Add (. . .);</EM.EXAMPLE.MONO
  39846. ><EM.EXAMPLE.MONO>   procedure Remove (. . .);</EM.EXAMPLE.MONO
  39847. ><EM.EXAMPLE.MONO>end Generic_Ordered_Set;</EM.EXAMPLE.MONO
  39848. ><EM.EXAMPLE.MONO>generic</EM.EXAMPLE.MONO
  39849. ><EM.EXAMPLE.MONO>   type Element is private;</EM.EXAMPLE.MONO
  39850. ><EM.EXAMPLE.MONO>package Generic_Unordered_Set is</EM.EXAMPLE.MONO
  39851. ><EM.EXAMPLE.MONO>   type Unordered_Set is private;</EM.EXAMPLE.MONO
  39852. ><EM.EXAMPLE.MONO>   procedure Add (. . .);</EM.EXAMPLE.MONO
  39853. ><EM.EXAMPLE.MONO>   procedure Remove (. . .);</EM.EXAMPLE.MONO
  39854. ><EM.EXAMPLE.MONO>end Generic_Unordered_Set;</EM.EXAMPLE.MONO
  39855. ><B.BODY>The package below is used in qualified associations.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39856. > The keywords, shown in italic type, can be customized.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39857. ></B.BODY
  39858. ><EM.EXAMPLE.MONO>generic</EM.EXAMPLE.MONO
  39859. ><EM.EXAMPLE.MONO>   type Key is private;</EM.EXAMPLE.MONO
  39860. ><EM.EXAMPLE.MONO>   type Value is private;</EM.EXAMPLE.MONO
  39861. ><EM.EXAMPLE.MONO>package Generic_Dictionary is</EM.EXAMPLE.MONO
  39862. ><EM.EXAMPLE.MONO>   type Dictionary is private;</EM.EXAMPLE.MONO
  39863. ><EM.EXAMPLE.MONO>   procedure Add (. . .);</EM.EXAMPLE.MONO
  39864. ><EM.EXAMPLE.MONO>   procedure Remove (. . .);</EM.EXAMPLE.MONO
  39865. ><EM.EXAMPLE.MONO>   function Find_Value (. . .) return Value;</EM.EXAMPLE.MONO
  39866. ><EM.EXAMPLE.MONO>end Generic_Dictionary;</EM.EXAMPLE.MONO
  39867. ></LABEL
  39868. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39869. >Package specification conditions</L.LABEL
  39870. ><B.BODY>The following conditions apply to most of the package specifications in this section:<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39871. ></B.BODY
  39872. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39873. ></RBW-AUTOGEN
  39874. ></RBW-MARKER
  39875. ><RBW-PARABODY>Only the code for the source class is shown because the destination class is not affected by a unidirectional association and because bidirectional associations are implemented as two unidirectional associations.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39876. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39877. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39878. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39879. ></RBW-PARABODY
  39880. ></LB.LIST.BULLET
  39881. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39882. ></RBW-AUTOGEN
  39883. ></RBW-MARKER
  39884. ><RBW-PARABODY>Text within brackets [ ] appears in either the specification or body file, depending on the class visibility property setting.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39885. > This includes <CX5FX5FEMPHASIS>with</CX5FX5FEMPHASIS
  39886. > statements, which always appear in the specification files, and <CX5FX5FTERM>body</CX5FX5FTERM
  39887. > in the first line of a package definition, which appears only in the body file.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39888. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39889. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39890. ></RBW-PARABODY
  39891. ></LB.LIST.BULLET
  39892. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39893. ></RBW-AUTOGEN
  39894. ></RBW-MARKER
  39895. ><RBW-PARABODY>Association names are not used in code generation; role names are used as the name of the source class’s record component for the association reference.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39896. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39897. ></RBW-PARABODY
  39898. ></LB.LIST.BULLET
  39899. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  39900. ></RBW-AUTOGEN
  39901. ></RBW-MARKER
  39902. ><RBW-PARABODY>In some cases, an association may generate one or two additional package specifications which serve as an intermediate package between the class and the generic package.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39903. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39904. ></RBW-PARABODY
  39905. ></LB.LIST.BULLET
  39906. ><B.BODY>The sections that follow describe the types of associations you can represent in ObjectTeam and the Ada code that is generated for each type. The examples omit the Get and Set subprograms for simplicity.</B.BODY
  39907. ><B.BODY>Below are examples of unidirectional and bidirectional associations as they are represented in ObjectTeam’s Class Diagram Editor.</B.BODY
  39908. ></LABEL
  39909. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39910. >Unidirectional association<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39911. ></L.LABEL
  39912. ><B.BODY>If an association has a role name at only one end, it is unidirectional.</B.BODY
  39913. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00377.unk" origfile="pics/assoc1.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39914. ></FA.FIGURE.ANCHOR
  39915. ><B.BODY>Below is the Ada 83 code generated for Source_Class  in the unidirectional association. The code for Destination_Class is not affected.</B.BODY
  39916. ><EM.EXAMPLE.MONO>[with Destination_Class;]</EM.EXAMPLE.MONO
  39917. ><EM.EXAMPLE.MONO>package [body] Source_Class is</EM.EXAMPLE.MONO
  39918. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  39919. ><EM.EXAMPLE.MONO>      role1: Destination_Class.Link;</EM.EXAMPLE.MONO
  39920. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  39921. ><EM.EXAMPLE.MONO>end Source_Class;</EM.EXAMPLE.MONO
  39922. ></LABEL
  39923. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39924. >Bidirectional association<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39925. ></L.LABEL
  39926. ><B.BODY>A bidirectional association has role names on both ends of the association.</B.BODY
  39927. ><B.BODY>The Ada code resulting from this bidirectional association example will not compile because Class1 and Class2 reference each other, causing a circular dependency.<RBW-IDXTERM TERM1="Circular dependency" TERM2="correcting"></RBW-IDXTERM
  39928. > You can correct  this association by constructing a link attribute box or a link class on the association. <RBW-IDXTERM TERM1="Link attribute box" TERM2="associations"></RBW-IDXTERM
  39929. ><RBW-IDXTERM TERM1="Link class" TERM2="in associations"></RBW-IDXTERM
  39930. >This technique is described in <RBW-XREF REFID="37770" TYPE="XREF-TEXTCOPY">Mapping Associations as Classes</RBW-XREF
  39931. >.</B.BODY
  39932. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00378.unk" origfile="pics/assoc2.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39933. >
  39934. <RBW-GRAPHIC filename="00379.tif" origseq="21" origtype="I" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39935. ></FA.FIGURE.ANCHOR
  39936. ></LABEL
  39937. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39938. >Implementing optional associations</L.LABEL
  39939. ><B.BODY>An optional association is represented with the notaion “0..1”, as shown below for a unidirectional association.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39940. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39941. > The Ada 83 code generated for this type of association is identical to the code for a normal association, except that it contains a comment above the association reference indicating the optionality of the association.</B.BODY
  39942. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00380.unk" origfile="pics/assoc3.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39943. ></FA.FIGURE.ANCHOR
  39944. ></LABEL
  39945. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39946. >Implementing multiplicity associations<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39947. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39948. ></L.LABEL
  39949. ><B.BODY>Multiplicity is represented with a “*” at the end of the association. The diagram below represents a unidirectional association.</B.BODY
  39950. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00381.unk" origfile="pics/assoc4.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39951. ></FA.FIGURE.ANCHOR
  39952. ><B.BODY>The code for Destination_Class is not affected.</B.BODY
  39953. ><B.BODY>Ada code generated for Source_Class<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39954. > </B.BODY
  39955. ><EWM.EXAMPLEW.MONO>with Generic_Unordered_Set;</EWM.EXAMPLEW.MONO
  39956. ><EWM.EXAMPLEW.MONO>with Destination_Class;</EWM.EXAMPLEW.MONO
  39957. ><EWM.EXAMPLEW.MONO>package Destination_Class_Unordered_Set is new</EWM.EXAMPLEW.MONO
  39958. ><EWM.EXAMPLEW.MONO>   Generic_Unordered_Set (Destination_Class.Link);</EWM.EXAMPLEW.MONO
  39959. ><EWM.EXAMPLEW.MONO>[with Destination_Class_Unordered_Set;]</EWM.EXAMPLEW.MONO
  39960. ><EWM.EXAMPLEW.MONO>package [ body ] Source_Class is</EWM.EXAMPLEW.MONO
  39961. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  39962. ><EWM.EXAMPLEW.MONO>      rolename: Destination_Class_Unordered_Set.Unordered_Set;</EWM.EXAMPLEW.MONO
  39963. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  39964. ><EWM.EXAMPLEW.MONO>end Source_Class;</EWM.EXAMPLEW.MONO
  39965. ></LABEL
  39966. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39967. >Implementing ordered associations<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39968. ></L.LABEL
  39969. ><B.BODY>You can specify any multiplicity association<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39970. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39971. > as an ordered association in ObjectTeam by adding the text {ordered} to the the constraint field of the association. The example below specifies the multiplicity association, shown previously, as an ordered association.</B.BODY
  39972. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00382.unk" origfile="pics/assoc5.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39973. ></FA.FIGURE.ANCHOR
  39974. ><B.BODY>This example will generate the same Ada code for Source_Class as shown in the previous, non&truehy;ordered example, except that every instance of Unordered_Set<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39975. > is replaced with Ordered_Set.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39976. ></B.BODY
  39977. ></LABEL
  39978. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39979. >Implementing qualified associations</L.LABEL
  39980. ><B.BODY>Use the qualified association symbol in the ObjectTeam Class Diagram editor to represent qualified associations.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39981. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39982. ></B.BODY
  39983. ><B.BODY></B.BODY
  39984. ><B.BODY>The source end of a qualified association must be optional (“0..1”) with no rolename. The destination end must have a role name, and may be optional (“0..1”), mandatory (“1”), or many (“*”).</B.BODY
  39985. ><B.BODY>The property “Data Type” for the association must be set to a standard type or to a class type.</B.BODY
  39986. ></LABEL
  39987. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39988. >Normal/optional qualified associations<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39989. ></L.LABEL
  39990. ><B.BODY>The diagram below shows how to represent a normal/optional source&truehy;end qualified association.</B.BODY
  39991. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00383.unk" origfile="pics/assoc6.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  39992. ></FA.FIGURE.ANCHOR
  39993. ></LABEL
  39994. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  39995. >Ada code generated for Source_Class<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39996. ></L.LABEL
  39997. ><B.BODY>The code example below assumes that the value of the “Data Type” property for the association is Data_Type.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  39998. ></B.BODY
  39999. ><EWM.EXAMPLEW.MONO>with Generic_Dictionary;</EWM.EXAMPLEW.MONO
  40000. ><EWM.EXAMPLEW.MONO>with Destination_Class;</EWM.EXAMPLEW.MONO
  40001. ><EWM.EXAMPLEW.MONO>package Destination_Class_Dictionary_By_Data_Type is new </EWM.EXAMPLEW.MONO
  40002. ><EWM.EXAMPLEW.MONO>   Generic_Dictionary (Data_Type, Destination_Class.Link);</EWM.EXAMPLEW.MONO
  40003. ><EWM.EXAMPLEW.MONO>with Destination_Class_Dictionary_By_Data_Type;</EWM.EXAMPLEW.MONO
  40004. ><EWM.EXAMPLEW.MONO>package [ body ] Source_Class is</EWM.EXAMPLEW.MONO
  40005. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  40006. ><EWM.EXAMPLEW.MONO>      Role:</EWM.EXAMPLEW.MONO
  40007. ><EWM.EXAMPLEW.MONO>         Destination_Class_Dictionary_By_Data_Type.Dictionary;</EWM.EXAMPLEW.MONO
  40008. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  40009. ><EWM.EXAMPLEW.MONO>end Source_Class;</EWM.EXAMPLEW.MONO
  40010. ></LABEL
  40011. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40012. >Multiplicity qualified associations</L.LABEL
  40013. ><B.BODY>The diagram below shows how to represent a multiplicity qualified association.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40014. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40015. > </B.BODY
  40016. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00384.unk" origfile="pics/assoc7.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  40017. ></FA.FIGURE.ANCHOR
  40018. ></LABEL
  40019. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40020. >Ada code generated for a qualified association</L.LABEL
  40021. ><EWM.EXAMPLEW.MONO>with Generic_Unordered_Set;</EWM.EXAMPLEW.MONO
  40022. ><EWM.EXAMPLEW.MONO>with Destination_Class;</EWM.EXAMPLEW.MONO
  40023. ><EWM.EXAMPLEW.MONO>package Destination_Class_Unordered_Set is new Generic_Unordered_Set (Destination_Class.Link);</EWM.EXAMPLEW.MONO
  40024. ><EWM.EXAMPLEW.MONO>with Generic_Dictionary;</EWM.EXAMPLEW.MONO
  40025. ><EWM.EXAMPLEW.MONO>with Destination_Class_Unordered_Set;</EWM.EXAMPLEW.MONO
  40026. ><EWM.EXAMPLEW.MONO>package Destination_Class_Unordered_Set_Dictionary_By_Data_Type is new</EWM.EXAMPLEW.MONO
  40027. ><EWM.EXAMPLEW.MONO>   Generic_Dictionary (Data_Type, Destination_Class_Unordered_Set.Unordered_Set);</EWM.EXAMPLEW.MONO
  40028. ><EWM.EXAMPLEW.MONO>[with Destination_Class_Unordered_Set_Dictionary_By_Data_Type;]</EWM.EXAMPLEW.MONO
  40029. ><EWM.EXAMPLEW.MONO>package [body] Source_Class is</EWM.EXAMPLEW.MONO
  40030. ><EWM.EXAMPLEW.MONO>   type Instance is record</EWM.EXAMPLEW.MONO
  40031. ><EWM.EXAMPLEW.MONO>      rolename:</EWM.EXAMPLEW.MONO
  40032. ><EWM.EXAMPLEW.MONO>      Destination_Class_Unordered_Set_Dictionary_By_Data_Type.Dictionary;</EWM.EXAMPLEW.MONO
  40033. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  40034. ><EWM.EXAMPLEW.MONO>end Source_Class;</EWM.EXAMPLEW.MONO
  40035. ><B.BODY>If you had defined the multiplicity qualified association as an ordered association, the generated Ada 83 code would be similar to the normal qualified association, except that every instance of <CX5FX5FTERM>Unordered_Set</CX5FX5FTERM
  40036. > would be replaced with <CX5FX5FTERM>Ordered_Set</CX5FX5FTERM
  40037. >.</B.BODY
  40038. ><B.BODY><RBW-XREF REFID="37770" TYPE="XREF-TEXTCOPY">Mapping Associations as Classes</RBW-XREF
  40039. >).</B.BODY
  40040. ></LABEL
  40041. ></SECTION
  40042. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37770"></RBW-ANCHOR
  40043. >Mapping Associations as Classes</S.SECTION.HEAD
  40044. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40045. >Introduction</L.LABEL
  40046. ><B.BODY>The Ada 83 code generator will translate and generate code for associations modeled as classes.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40047. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40048. > The diagram below shows how an association modeled as a class is represented in ObjectTeam. The code generator ignores any association label,<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40049. > if one exists, and instead, uses the name of the class itself to reference the association in code.</B.BODY
  40050. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00385.unk" origfile="pics/assoc8.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  40051. ></FA.FIGURE.ANCHOR
  40052. ></LABEL
  40053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40054. >Resulting Ada 83 code</L.LABEL
  40055. ><B.BODY>The Ada 83 code generated for an association as class includes an additional Ada Package for the association itself that captures the association class. To avoid circular compilation dependencies between this class and the source and/or destination classes, the system generates an alternate package that only declares a link type.</B.BODY
  40056. ><B.BODY>The source and/or destination classes with this alternate package refer to the association class. The Ada 83 code for this class is automatically generated within its own file as show in the next example, with the name<RBWAUTO-0007> Assoc_Class_Alt</RBWAUTO-0007
  40057. >. The <RBWAUTO-0007>Alt </RBWAUTO-0007
  40058. >string is customizable.</B.BODY
  40059. ></LABEL
  40060. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40061. >Specification for Assoc_Class</L.LABEL
  40062. ><EM.EXAMPLE.MONO>with Sys_Types;</EM.EXAMPLE.MONO
  40063. ><EM.EXAMPLE.MONO>with Assoc_Class_Alt;</EM.EXAMPLE.MONO
  40064. ><EM.EXAMPLE.MONO>with Destination_Class;</EM.EXAMPLE.MONO
  40065. ><EM.EXAMPLE.MONO>package Assoc_Class is </EM.EXAMPLE.MONO
  40066. ><EM.EXAMPLE.MONO>    type Instance is record</EM.EXAMPLE.MONO
  40067. ><EM.EXAMPLE.MONO>        Assoc_Attr : Integer;</EM.EXAMPLE.MONO
  40068. ><EM.EXAMPLE.MONO>        rolename : Destination_Class.Link;</EM.EXAMPLE.MONO
  40069. ><EM.EXAMPLE.MONO>    end record;</EM.EXAMPLE.MONO
  40070. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  40071. ><EM.EXAMPLE.MONO>    type Link is access all Instance;</EM.EXAMPLE.MONO
  40072. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  40073. ><EM.EXAMPLE.MONO>    function Conv (From : Assoc_Class_Alt.Link) return Link;</EM.EXAMPLE.MONO
  40074. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  40075. ><EM.EXAMPLE.MONO>    function Conv (From : Link) return Assoc_Class_Alt.Link;</EM.EXAMPLE.MONO
  40076. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  40077. ><EM.EXAMPLE.MONO>end Assoc_Class;</EM.EXAMPLE.MONO
  40078. ></LABEL
  40079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40080. >Specifiation for Assoc_Class_Alt</L.LABEL
  40081. ><EM.EXAMPLE.MONO>package Assoc_Class_Alt is</EM.EXAMPLE.MONO
  40082. ><EM.EXAMPLE.MONO>    type Link is private;</EM.EXAMPLE.MONO
  40083. ><EM.EXAMPLE.MONO>private</EM.EXAMPLE.MONO
  40084. ><EM.EXAMPLE.MONO>    type Instance;</EM.EXAMPLE.MONO
  40085. ><EM.EXAMPLE.MONO>    type Link is access Instance;</EM.EXAMPLE.MONO
  40086. ><EM.EXAMPLE.MONO>    for Link’storage_size use 0;</EM.EXAMPLE.MONO
  40087. ><EM.EXAMPLE.MONO>end Assoc_Class_Alt;</EM.EXAMPLE.MONO
  40088. ></LABEL
  40089. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40090. >Body for Assoc_Class_Alt</L.LABEL
  40091. ><EM.EXAMPLE.MONO>with Assoc_Class;</EM.EXAMPLE.MONO
  40092. ><EM.EXAMPLE.MONO>package body Assoc_Class_Alt is</EM.EXAMPLE.MONO
  40093. ><EM.EXAMPLE.MONO>    type Instance is new Assoc_Class.Instance;</EM.EXAMPLE.MONO
  40094. ><EM.EXAMPLE.MONO>end Assoc_Class_Alt;</EM.EXAMPLE.MONO
  40095. ></LABEL
  40096. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40097. >Specification for Source_Class</L.LABEL
  40098. ><EM.EXAMPLE.MONO>with Sys_Types;</EM.EXAMPLE.MONO
  40099. ><EM.EXAMPLE.MONO>with Assoc_Class_Alt;</EM.EXAMPLE.MONO
  40100. ><EM.EXAMPLE.MONO>package Source_Class is </EM.EXAMPLE.MONO
  40101. ><EM.EXAMPLE.MONO>    type Instance is record</EM.EXAMPLE.MONO
  40102. ><EM.EXAMPLE.MONO>        rolename : Assoc_Class_Alt.Link;</EM.EXAMPLE.MONO
  40103. ><EM.EXAMPLE.MONO>    end record;</EM.EXAMPLE.MONO
  40104. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  40105. ><EM.EXAMPLE.MONO>    type Link is access all Instance;</EM.EXAMPLE.MONO
  40106. ><EM.EXAMPLE.MONO>end Source_Class;</EM.EXAMPLE.MONO
  40107. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  40108. ></LABEL
  40109. ></SECTION
  40110. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="14110"></RBW-ANCHOR
  40111. >Mapping Aggregations</S.SECTION.HEAD
  40112. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40113. >Introduction</L.LABEL
  40114. ><B.BODY>An Aggregation is a relationship that exists when one object contains or is part of another object.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40115. > ObjectTeam represents aggregation with a diamond&truehy;shaped symbol at the source end of the aggregation, as shown below.<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40116. ></B.BODY
  40117. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00386.unk" origfile="pics/aggre1.gif" origtype="X" origdoc="../../sources/ada/mapada83.fm5.mif"></RBW-GRAPHIC
  40118. ></FA.FIGURE.ANCHOR
  40119. ><B.BODY>The Ada 83 code generated for an aggregation is the same as that generated for binary associations, except that it generates a comment above the reference to distinguish the aggregation from a binary association, Source_Class in this example.</B.BODY
  40120. ></LABEL
  40121. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40122. >Ada code generated for aggregation relations<RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40123. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  40124. ></L.LABEL
  40125. ><EM.EXAMPLE.MONO>[with Destination_Class;]</EM.EXAMPLE.MONO
  40126. ><EM.EXAMPLE.MONO>package [ body ] Source_Class is</EM.EXAMPLE.MONO
  40127. ><EM.EXAMPLE.MONO>   type Instance is record</EM.EXAMPLE.MONO
  40128. ><EM.EXAMPLE.MONO>      &truehy;&truehy; rolename is an aggregation</EM.EXAMPLE.MONO
  40129. ><EM.EXAMPLE.MONO>      rolename: Destination_Class.Link;</EM.EXAMPLE.MONO
  40130. ><EM.EXAMPLE.MONO>   end record;</EM.EXAMPLE.MONO
  40131. ><EM.EXAMPLE.MONO>end Source_Class;</EM.EXAMPLE.MONO
  40132. ><RBWAUTO-0011></RBWAUTO-0011
  40133. ><!--
  40134.  
  40135.  
  40136.  
  40137.  
  40138.  
  40139. CONVERTING SOURCE FILE ../../sources/ada/adartrip.fm5.mif
  40140.  
  40141.  
  40142. --><B.BODY></B.BODY
  40143. ><B.BODY></B.BODY
  40144. ><B.BODY></B.BODY
  40145. ><B.BODY></B.BODY
  40146. ><B.BODY></B.BODY
  40147. ></LABEL
  40148. ></SECTION
  40149. ></CHAPTER
  40150. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 6&rbwtab;</CX5FX5FZCHAPTER.NUM
  40151. ></RBW-AUTOGEN
  40152. >Synchronized <RBW-ANCHOR ID="28849"></RBW-ANCHOR
  40153. >Engineering<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  40154. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  40155. ></RBW-SYSOBJ
  40156. ></C.CHAPTER.HEAD
  40157. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40158. >Introduction</L.LABEL
  40159. ><B.BODY>This chapter explains how to use the APDT for incremental development and synchronized engineering.</B.BODY
  40160. ><B.BODY>Incremental development refers to the ability to make constant improvement or adaptation of design or code.</B.BODY
  40161. ><B.BODY>Synchronized Engineering is the process of keeping code and design consistent, without losing information added while in one portion or the other.</B.BODY
  40162. ></LABEL
  40163. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40164. >In this chapter</L.LABEL
  40165. ><B.BODY>This chapter contains the following sections:</B.BODY
  40166. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  40167. ></ENTRY
  40168. ></RBW-ROW
  40169. ></THEAD
  40170. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33533" TYPE="XREF-TEXTCOPY">Introduction&rbwtab;6–2</RBW-XREF
  40171. ></SB.SECTION.BLOCK.TABLE
  40172. ></ENTRY
  40173. ></RBW-ROW
  40174. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22789" TYPE="XREF-TEXTCOPY">Editing Code or Design&rbwtab;6–6</RBW-XREF
  40175. ></SB.SECTION.BLOCK.TABLE
  40176. ></ENTRY
  40177. ></RBW-ROW
  40178. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17793" TYPE="XREF-TEXTCOPY">Synchronizing Design to Code Changes&rbwtab;6–8</RBW-XREF
  40179. ></SB.SECTION.BLOCK.TABLE
  40180. ></ENTRY
  40181. ></RBW-ROW
  40182. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31942" TYPE="XREF-TEXTCOPY">Synchronizing Code to Design Changes (Code Regeneration)&rbwtab;6–11</RBW-XREF
  40183. ></SB.SECTION.BLOCK.TABLE
  40184. ></ENTRY
  40185. ></RBW-ROW
  40186. ></TBODY
  40187. ></TGROUP
  40188. ></RBW-TABLE
  40189. ></LABEL
  40190. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="33533"></RBW-ANCHOR
  40191. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  40192. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  40193. ></RBW-SYSOBJ
  40194. >Introduction</S.SECTION.HEAD
  40195. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40196. >Purpose of Synchronized Engineering</L.LABEL
  40197. ><B.BODY>The purpose of Synchronized Engineering is to keep your implementation and your design in synch with one another. As design changes are made, they can be rippled down through the implementation &truehy; without breaking the implementation, or if some code is made obsolete then it is identified and stored in a safe place. Simiarly, as code changes, areas mapping back to design are captured back into the appropriate CD or CDM in the ObjectTeam repository.</B.BODY
  40198. ></LABEL
  40199. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40200. >Quick Start &truehy; Adapting Code Changes into the ObjectTeam model</L.LABEL
  40201. ><B.BODY>If you just wish to try Synchronized Engineering, but not pore over the manual here are the steps for synchronizing changes made to code into the ObjectTeam model:</B.BODY
  40202. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  40203. ></RBW-AUTOGEN
  40204. >Only perform this function with source code that ObjectTeam generated originally.</N.NOTE
  40205. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  40206. ></RBW-AUTOGEN
  40207. ></RBW-MARKER
  40208. ><RBW-PARABODY>In the Browser Navigation area, open a System in the Implementation phase.</RBW-PARABODY
  40209. ></LN.LIST.NUM
  40210. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  40211. ></RBW-AUTOGEN
  40212. ></RBW-MARKER
  40213. ><RBW-PARABODY>Select Edit | Select All.</RBW-PARABODY
  40214. ></LN.LIST.NUM
  40215. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  40216. ></RBW-AUTOGEN
  40217. ></RBW-MARKER
  40218. ><RBW-PARABODY>Select Utilities | Round Trip Selected.</RBW-PARABODY
  40219. ></LN.LIST.NUM
  40220. ><LR.LIST.RESULT>An Execution window appears.</LR.LIST.RESULT
  40221. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  40222. ></RBW-AUTOGEN
  40223. ></RBW-MARKER
  40224. ><RBW-PARABODY>Answer any questions that are diaplyed in the Execution window. No changes are committed unless you specify them explicitly.</RBW-PARABODY
  40225. ></LN.LIST.NUM
  40226. ><LR.LIST.RESULT>This maps code back into your design. You may now continue on with further design or coding changes.</LR.LIST.RESULT
  40227. ></LABEL
  40228. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40229. >Quick Start &truehy; Regenerating Code to match the ObjectTeam model</L.LABEL
  40230. ><B.BODY><RBW-IDXTERM TERM1="code re-generation" TERM2="quick start"></RBW-IDXTERM
  40231. >Code Regeneration refers to synchronizing the implementation source code with changes made in the ObjectTeam design model. Here are the “quick” steps for doing this:</B.BODY
  40232. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  40233. ></RBW-AUTOGEN
  40234. >Only perform this function with source code that ObjectTeam generated originally.</N.NOTE
  40235. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  40236. ></RBW-AUTOGEN
  40237. ></RBW-MARKER
  40238. ><RBW-PARABODY>In the Browser Navigation area, open the Implementation phase and select the System you wish to regenerate.</RBW-PARABODY
  40239. ></LN.LIST.NUM
  40240. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  40241. ></RBW-AUTOGEN
  40242. ></RBW-MARKER
  40243. ><RBW-PARABODY>In the Information area, select the source files you wish to update, or leave none selected if you expect to do all.</RBW-PARABODY
  40244. ></LN.LIST.NUM
  40245. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  40246. ></RBW-AUTOGEN
  40247. ></RBW-MARKER
  40248. ><RBW-PARABODY>Select Utilities | Generate Ada* | New to regenerate all changes made in the object design, or select Utilities | Generate Ada* | Selected to update only the files you chose in Step 2.</RBW-PARABODY
  40249. ></LN.LIST.NUM
  40250. ><LR.LIST.RESULT>An Execution window appears. </LR.LIST.RESULT
  40251. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  40252. ></RBW-AUTOGEN
  40253. ></RBW-MARKER
  40254. ><RBW-PARABODY>Monitor the process for success or errors. Answer questions as appropriate.</RBW-PARABODY
  40255. ></LN.LIST.NUM
  40256. ><LR.LIST.RESULT>This maps design changes into your code. You may now continue with further design or code modifications.</LR.LIST.RESULT
  40257. ></LABEL
  40258. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40259. >Caveats</L.LABEL
  40260. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40261. ></RBW-AUTOGEN
  40262. ></RBW-MARKER
  40263. ><RBW-PARABODY>Synchronized Engineering only works with code originally generated by an APDT code generator.</RBW-PARABODY
  40264. ></LB.LIST.BULLET
  40265. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40266. ></RBW-AUTOGEN
  40267. ></RBW-MARKER
  40268. ><RBW-PARABODY>Associations may only be added, modified or deleted in ObjectTeam. You may not delete or add new associations in code and synchronize those changes to the ObjectTeam model. Use ObjectTeam to make design association changes.</RBW-PARABODY
  40269. ></LB.LIST.BULLET
  40270. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40271. ></RBW-AUTOGEN
  40272. ></RBW-MARKER
  40273. ><RBW-PARABODY>Do not switch between Ada 83 and Ada 95. The system is not a code conversion tool; the results are unpredictable.</RBW-PARABODY
  40274. ></LB.LIST.BULLET
  40275. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40276. ></RBW-AUTOGEN
  40277. ></RBW-MARKER
  40278. ><RBW-PARABODY>Chapter 8, Configuring the APDT Code Generators, describes how to customize ObjectTeam with your projects standard data types, as well as how to configure the code generator to use them. This involves customization of the <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  40279. > and <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  40280. > customization files. </RBW-PARABODY
  40281. ></LB.LIST.BULLET
  40282. ><LT.LIST.TEXT>When mapping changes in Ada source code back into ObjectTeam, the APDT doesn’t use these types, but instead creates new classes as appropriate to represent what it finds in the source files.</LT.LIST.TEXT
  40283. ></LABEL
  40284. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40285. >What’s really going on here?</L.LABEL
  40286. ><B.BODY><RBW-IDXTERM TERM1="synchronous engineering" TERM2="explained"></RBW-IDXTERM
  40287. >Synchronous engineering is the process of updating code to match design and vice versa.</B.BODY
  40288. ><B.BODY>In practice this means mapping the ObjectTeam model into areas of the source code that are marked as “affecting the design”, and in mapping changes in those areas back into the ObjectTeam model.</B.BODY
  40289. ><B.BODY>Areas affecting design are preceded with a <CX5FX5FFILE.NAME>&truehy;&truehy;OT Analyze</CX5FX5FFILE.NAME
  40290. > comment. The section is ended with an <CX5FX5FFILE.NAME>&truehy;&truehy;OT Ignore</CX5FX5FFILE.NAME
  40291. > comment. These comments tell the system that the following is a special area in the source that is to be synchronized with the ObjectTeam model.</B.BODY
  40292. ></LABEL
  40293. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40294. >What You Can Change</L.LABEL
  40295. ><B.BODY><RBW-IDXTERM TERM1="source" TERM2="what you can change"></RBW-IDXTERM
  40296. >The code generators generate a variety of comments telling you what they did, and where you may edit at will, or where you should edit with the understanding that the design may change as a result of the edits.</B.BODY
  40297. ><B.BODY>The APDT parses your code completely, performing both syntactic and semantic parsing. It uses comments placed there when code was generated to let it know:</B.BODY
  40298. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40299. ></RBW-AUTOGEN
  40300. ></RBW-MARKER
  40301. ><RBW-PARABODY>What to ignore</RBW-PARABODY
  40302. ></LB.LIST.BULLET
  40303. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40304. ></RBW-AUTOGEN
  40305. ></RBW-MARKER
  40306. ><RBW-PARABODY>What areas should be analyzed to see if design has changed and should be mapped back into ObjectTeam</RBW-PARABODY
  40307. ></LB.LIST.BULLET
  40308. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40309. ></RBW-AUTOGEN
  40310. ></RBW-MARKER
  40311. ><RBW-PARABODY>What kind of ObjectTeam representation caused a block of code to be generated (useful for understanding what it should sycnchronize with)</RBW-PARABODY
  40312. ></LB.LIST.BULLET
  40313. ><B.BODY>The APDT ignores code placed after the <CX5FX5FFILE.NAME>&truehy;&truehy;OT Ignore </CX5FX5FFILE.NAME
  40314. >comment. No changes made between those comments will be brought back into ObjectTeam.</B.BODY
  40315. ><B.BODY>Code following a <CX5FX5FFILE.NAME>&truehy;&truehy;OT Analyze</CX5FX5FFILE.NAME
  40316. > comment will be entirely regenerated during a synchronous engineering update. This section is also the only area that the ADPT will analyze to map changes back into the ObjectTeam model.</B.BODY
  40317. ><B.BODY>The APDT also ignores code placed after <CX5FX5FFILE.NAME>&truehy;&truehy;OT OBSOLETE</CX5FX5FFILE.NAME
  40318. > comments. This code has been obsoleted by design changes made in the originating ObjectTeam design. Rather than deleting it, it is left in the source file but marked with <CX5FX5FFILE.NAME>&truehy;&truehy;OT OBSOLETE</CX5FX5FFILE.NAME
  40319. > so the APDT will ignore it next time the design and code are synched. You may remove this code, or perhaps re&truehy;use it elsewhere (which is why it isn’t deleted).</B.BODY
  40320. ></LABEL
  40321. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40322. >What you SHOULDN’T Change</L.LABEL
  40323. ><B.BODY><RBW-IDXTERM TERM1="source" TERM2="what you shouldnd5 t change"></RBW-IDXTERM
  40324. >The APDT is quite liberal about what code changes you may make in your code. However, it can get confused if you alter the comments it has placed strategically throughout the code. </B.BODY
  40325. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40326. ></RBW-AUTOGEN
  40327. ></RBW-MARKER
  40328. ><RBW-PARABODY>The <CX5FX5FFILE.NAME>&truehy;&truehy;OT OBSOLETE</CX5FX5FFILE.NAME
  40329. > comment and the code it marks may be removed.</RBW-PARABODY
  40330. ></LB.LIST.BULLET
  40331. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40332. ></RBW-AUTOGEN
  40333. ></RBW-MARKER
  40334. ><RBW-PARABODY>All other comments beginning with <CX5FX5FFILE.NAME>&truehy;&truehy;OT</CX5FX5FFILE.NAME
  40335. > should be left alone, or the syncrhonization effort will be hampered or erroneous.</RBW-PARABODY
  40336. ></LB.LIST.BULLET
  40337. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  40338. ></RBW-AUTOGEN
  40339. >This doesn’t mean you can’t change code! Just don’t change the comment itself. The APDT Ada parser looks for these, and their form and structure is how it distinguishes them from comments you may place in the code.</N.NOTE
  40340. ></LABEL
  40341. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40342. >Version Control</L.LABEL
  40343. ><B.BODY><RBW-IDXTERM TERM1="version control"></RBW-IDXTERM
  40344. >One of the most powerful features of ObjectTeam is its configuration and version management system. Any change can be backed out of.</B.BODY
  40345. ><B.BODY>All changes the APDT makes either in Implementation or in Object Design are made through this versioning system. You can back out if you so desire.</B.BODY
  40346. ></LABEL
  40347. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40348. >Confirmation of All Changes</L.LABEL
  40349. ><B.BODY>In addition, when synchronizing Ada code to object design, the APDT asks you whenever it proposes a change to an object. It queues the answers prior to one final question as to commit the entire changes into the ObjectTeam repository.</B.BODY
  40350. ><B.BODY>You can decline, but save the questions to a log file for perusal offline. After further thought you may then go back and re&truehy;do the synchronization process, answering yes and no as you see fit from your further analysis.</B.BODY
  40351. ></LABEL
  40352. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40353. >M4 Variables Controlling Synchronized Engineering</L.LABEL
  40354. ><B.BODY>Some options in Ada synchronized engineering are controlled by M4 environment variables.</B.BODY
  40355. ><B.BODY>Normally, these variables can be set in a variety of ways, either at the operating system level, or within ObjectTeam (as described in earlier sections). However, with the current version of APDT, the M4 environment variables controlling synchronized engineering must be set at the operating system level.</B.BODY
  40356. ><B.BODY>The M4 environment variables controlling Ada synchronized engineering are M4_Ada83_Class_Record_Type_name, M4_Ada95_Class_Record_Type_Name, and M4_ada_tmpdir.</B.BODY
  40357. ><B.BODY>M4_Ada83_Class_Record_Type_Name and M4_Ada95_Class_Record_Type_Name control the name of the primary type around which a class implementing package is built. The default value is “instance”.</B.BODY
  40358. ><B.BODY>M4_ada_tmpdir defines where temporary files are placed during synchronized engineering. The default for Unix is /var/tmp. </B.BODY
  40359. ><B.BODY></B.BODY
  40360. ></LABEL
  40361. ></SECTION
  40362. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22789"></RBW-ANCHOR
  40363. >Editing Code or Design</S.SECTION.HEAD
  40364. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40365. >Introduction</L.LABEL
  40366. ><B.BODY>You can make design changes within the ObjectTeam Design Editor, or in the source code (after <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="comments" TERM2="--OT Analyze"></RBW-IDXTERM
  40367. >&truehy;&truehy;OT Analyze</CX5FX5FFILE.NAME
  40368. > comments).</B.BODY
  40369. ><B.BODY>Although the way you make design changes may differ, the results are still the same. The APDT Synchronous Engineering system will generate new code reflecting design changes made in ObjectTeam, and it will make CD and CDM changes to reflect design changes it finds in the code.</B.BODY
  40370. ></LABEL
  40371. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40372. >Changes to Attributes</L.LABEL
  40373. ><B.BODY><RBW-IDXTERM TERM1="attributes" TERM2="changing"></RBW-IDXTERM
  40374. >Attributes may be deleted, added, re&truehy;ordered, or renamed. Renaming an attribute has the effect of deleting and adding it. However, if you rename an attribute it’s likely that it’s properties will be lost.</B.BODY
  40375. ><B.BODY>If you add an attribute without adding an accessor method, the APDT will set that attributes Access property to Private.</B.BODY
  40376. ></LABEL
  40377. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40378. >Changes to Operations</L.LABEL
  40379. ><B.BODY><RBW-IDXTERM TERM1="operations" TERM2="changing"></RBW-IDXTERM
  40380. >As with attributes, operations may be deleted, added, re&truehy;ordered, or renamed. Renaming also causes the properties to be lost.</B.BODY
  40381. ><B.BODY>You may also change method signatures by adding, removing, or re&truehy;ordering parameters, changing default values, or changing the method’s return type.</B.BODY
  40382. ></LABEL
  40383. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40384. >APDT Comments</L.LABEL
  40385. ><B.BODY><RBW-IDXTERM TERM1="comments" TERM2="listing of APDT comments"></RBW-IDXTERM
  40386. >The APDT inserts comments in code it generates. These comments are used to help it keep track of what it has done when the design and code are next synchronized.</B.BODY
  40387. ><B.BODY><RBW-IDXTERM TERM1="comments" TERM2="Ada 95 code generator"></RBW-IDXTERM
  40388. >These comments are used by the APDT for Ada 95:</B.BODY
  40389. ><E.EXAMPLE>&truehy;&truehy;OT Association components</E.EXAMPLE
  40390. ><E.EXAMPLE>&truehy;&truehy;OT Association accessor methods</E.EXAMPLE
  40391. ><E.EXAMPLE>&truehy;&truehy;OT Attribute accessor methods</E.EXAMPLE
  40392. ><E.EXAMPLE>&truehy;&truehy;OT User&truehy;defined methods</E.EXAMPLE
  40393. ><E.EXAMPLE>&truehy;&truehy;OT Package for association only</E.EXAMPLE
  40394. ><E.EXAMPLE>&truehy;&truehy;OT Link conversion functions</E.EXAMPLE
  40395. ><E.EXAMPLE>&truehy;&truehy;OT Ignore</E.EXAMPLE
  40396. ><E.EXAMPLE>&truehy;&truehy;OT Analyze</E.EXAMPLE
  40397. ><E.EXAMPLE>&truehy;&truehy;OT OBSOLETE</E.EXAMPLE
  40398. ><B.BODY><RBW-IDXTERM TERM1="comments" TERM2="Ada 83 code generator"></RBW-IDXTERM
  40399. >These are used by the Ada 83 code generator:</B.BODY
  40400. ><E.EXAMPLE>&truehy;&truehy;OT Association components</E.EXAMPLE
  40401. ><E.EXAMPLE>&truehy;&truehy;OT Association accessor methods</E.EXAMPLE
  40402. ><E.EXAMPLE>&truehy;&truehy;OT Attribute accessor methods</E.EXAMPLE
  40403. ><E.EXAMPLE>&truehy;&truehy;OT User&truehy;defined methods</E.EXAMPLE
  40404. ><E.EXAMPLE>&truehy;&truehy;OT Package for association only</E.EXAMPLE
  40405. ><E.EXAMPLE>&truehy;&truehy;OT Inherited component</E.EXAMPLE
  40406. ><E.EXAMPLE>&truehy;&truehy;OT Inherited methods</E.EXAMPLE
  40407. ><E.EXAMPLE>&truehy;&truehy;OT Link conversion functions</E.EXAMPLE
  40408. ><E.EXAMPLE>&truehy;&truehy;OT Ignore</E.EXAMPLE
  40409. ><E.EXAMPLE>&truehy;&truehy;OT Analyze</E.EXAMPLE
  40410. ><E.EXAMPLE>&truehy;&truehy;OT OBSOLETE</E.EXAMPLE
  40411. ></LABEL
  40412. ></SECTION
  40413. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="object design" TERM2="synching to code changes"></RBW-IDXTERM
  40414. ><RBW-ANCHOR ID="17793"></RBW-ANCHOR
  40415. >Synchronizing Design to Code Changes</S.SECTION.HEAD
  40416. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40417. >General Steps</L.LABEL
  40418. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  40419. ></RBW-AUTOGEN
  40420. ></RBW-MARKER
  40421. ><RBW-PARABODY>Make your design changes in the code (use the editor of your choice).</RBW-PARABODY
  40422. ></LN.LIST.NUM
  40423. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  40424. ></RBW-AUTOGEN
  40425. ></RBW-MARKER
  40426. ><RBW-PARABODY>Select the implementation files containing design changes you wish to update into the ObjectTeam model. All files of a System must be selected.</RBW-PARABODY
  40427. ></LN.LIST.NUM
  40428. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  40429. ></RBW-AUTOGEN
  40430. ></RBW-MARKER
  40431. ><RBW-PARABODY>APDT compares the classes it finds in the source files with classes in the Object Design phase. For each difference it finds, APDT proposes an action and prompts you for confirmation. For example:</RBW-PARABODY
  40432. ></LN.LIST.NUM
  40433. ><EM.EXAMPLE.MONO>In class “Customer”: delete attribute “Street”.</EM.EXAMPLE.MONO
  40434. ><EM.EXAMPLE.MONO>Delete attribute?</EM.EXAMPLE.MONO
  40435. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  40436. ></RBW-AUTOGEN
  40437. ></RBW-MARKER
  40438. ><RBW-PARABODY>APDT queues the answers to your questions, and after one final confirming question commits the changes.</RBW-PARABODY
  40439. ></LN.LIST.NUM
  40440. ></LABEL
  40441. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40442. >Customizing synchronous engineering</L.LABEL
  40443. ><B.BODY>The <CX5FX5FFILE.NAME>roundtrip.roundtrip</CX5FX5FFILE.NAME
  40444. > customization file specifies what actions the synchronous engineering system proposes, as well as the default answers to the questions it asks.</B.BODY
  40445. ><B.BODY>Modifying the <CX5FX5FFILE.NAME>roundtrip.roundtrip</CX5FX5FFILE.NAME
  40446. > customization file is similar to modifying the <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  40447. > and <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  40448. > customization files. For more information about modifying customization files, see <RBW-XREF REFID="39536" TYPE="XREF-TEXTCOPY">Customized Data Types</RBW-XREF
  40449. >, which describes how to modify the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  40450. > customization file.</B.BODY
  40451. ></LABEL
  40452. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40453. ><RBW-ANCHOR ID="35835"></RBW-ANCHOR
  40454. >Example of synchronizing design to code changes</L.LABEL
  40455. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  40456. ></RBW-AUTOGEN
  40457. ></RBW-MARKER
  40458. ><RBW-PARABODY>In the Browser Navigation area, select the Implementation you wish to synchronize with Object Design:</RBW-PARABODY
  40459. ></LN.LIST.NUM
  40460. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00387.unk" origfile="pics/sync1.gif" origtype="X" origdoc="../../sources/ada/adartrip.fm5.mif"></RBW-GRAPHIC
  40461. ></FAR.FIGURE.ANCHOR.RIGHT
  40462. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  40463. ></RBW-AUTOGEN
  40464. ></RBW-MARKER
  40465. ><RBW-PARABODY>Select Edit | Select All.</RBW-PARABODY
  40466. ></LN.LIST.NUM
  40467. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  40468. ></RBW-AUTOGEN
  40469. ></RBW-MARKER
  40470. ><RBW-PARABODY>Select Utilities  | Round Trip Selected.</RBW-PARABODY
  40471. ></LN.LIST.NUM
  40472. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  40473. ></RBW-AUTOGEN
  40474. ></RBW-MARKER
  40475. ><RBW-PARABODY>An ObjectTeam Execution window will appear with the synchronous engineering process running within it. In the following figure, the text asking if the new attribute “Country” should be added is highlighted:</RBW-PARABODY
  40476. ></LN.LIST.NUM
  40477. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00388.unk" origfile="pics/sync2.gif" origtype="X" origdoc="../../sources/ada/adartrip.fm5.mif"></RBW-GRAPHIC
  40478. ></FA.FIGURE.ANCHOR
  40479. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  40480. ></RBW-AUTOGEN
  40481. ></RBW-MARKER
  40482. ><RBW-PARABODY>Answer the questions, commit the results.</RBW-PARABODY
  40483. ></LN.LIST.NUM
  40484. ><B.BODY>The following figure shows the updated CD, with the new attribute Country shown in the class Address.</B.BODY
  40485. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00389.unk" origfile="pics/syncattr.gif" origtype="X" origdoc="../../sources/ada/adartrip.fm5.mif"></RBW-GRAPHIC
  40486. ></FA.FIGURE.ANCHOR
  40487. ></LABEL
  40488. ></SECTION
  40489. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="object design" TERM2="updating source code to represent"></RBW-IDXTERM
  40490. ><RBW-ANCHOR ID="31942"></RBW-ANCHOR
  40491. >Synchronizing Code to Design Changes (Code Regeneration)</S.SECTION.HEAD
  40492. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40493. ><RBW-IDXTERM TERM1="code re-generation" TERM2="How to"></RBW-IDXTERM
  40494. >General Steps</L.LABEL
  40495. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  40496. ></RBW-AUTOGEN
  40497. ></RBW-MARKER
  40498. ><RBW-PARABODY>Make your design changes using ObjectTeam.</RBW-PARABODY
  40499. ></LN.LIST.NUM
  40500. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  40501. ></RBW-AUTOGEN
  40502. ></RBW-MARKER
  40503. ><RBW-PARABODY>Choose the implementation files you wish to have updated (or none if you want all design changes to be synchronized).</RBW-PARABODY
  40504. ></LN.LIST.NUM
  40505. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  40506. ></RBW-AUTOGEN
  40507. ></RBW-MARKER
  40508. ><RBW-PARABODY>The ADPT will then process the design to identify changes that need to be reflected in the source implementation.</RBW-PARABODY
  40509. ></LN.LIST.NUM
  40510. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  40511. ></RBW-AUTOGEN
  40512. ></RBW-MARKER
  40513. ><RBW-PARABODY>Each change will be update in the appropriate source file, or new source files created and added to the implementation directory.</RBW-PARABODY
  40514. ></LN.LIST.NUM
  40515. ></LABEL
  40516. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40517. >Example</L.LABEL
  40518. ><B.BODY>Below is the source code representing the implementation created by the previous example:</B.BODY
  40519. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00390.unk" origfile="pics/codereg1.gif" origtype="X" origdoc="../../sources/ada/adartrip.fm5.mif"></RBW-GRAPHIC
  40520. ></FAR.FIGURE.ANCHOR.RIGHT
  40521. ><B.BODY>Using the ObjectTeam CD editor we add two new attributes for the class “Address”: Phone and Fax numbers.</B.BODY
  40522. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00391.unk" origfile="pics/codereg2.gif" origtype="X" origdoc="../../sources/ada/adartrip.fm5.mif"></RBW-GRAPHIC
  40523. ></FAR.FIGURE.ANCHOR.RIGHT
  40524. ><B.BODY>After modifying the CD, we save it and verify its correctness using Check | Local Model. It’s always a good idea to verify a model before attempting to generate or re&truehy;generate code.</B.BODY
  40525. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00392.unk" origfile="pics/codereg3.gif" origtype="X" origdoc="../../sources/ada/adartrip.fm5.mif"></RBW-GRAPHIC
  40526. ></FAR.FIGURE.ANCHOR.RIGHT
  40527. ><B.BODY>With the check successfully passed, it’s time to choose the implementation that we will synchronize with these design modifications. To do this, select the Implementation phase System in the Navigation area of the ObjectTeam Browser, then select Utilities | Generate Ada | New:</B.BODY
  40528. ><B.BODY>The design changes are then analyzed, with the process monitored from an ObjectTeam Execution window:</B.BODY
  40529. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00393.unk" origfile="pics/codereg6.gif" origtype="X" origdoc="../../sources/ada/adartrip.fm5.mif"></RBW-GRAPHIC
  40530. ></FAR.FIGURE.ANCHOR.RIGHT
  40531. ><B.BODY>Inspection of the new source file shows a successful update of the Fax and Phone number attributes in the corresponding Ada record type:</B.BODY
  40532. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00394.unk" origfile="pics/codereg7.gif" origtype="X" origdoc="../../sources/ada/adartrip.fm5.mif"></RBW-GRAPHIC
  40533. ></FAR.FIGURE.ANCHOR.RIGHT
  40534. ><RBWAUTO-0001></RBWAUTO-0001
  40535. ><!--
  40536.  
  40537.  
  40538.  
  40539.  
  40540.  
  40541. CONVERTING SOURCE FILE ../../sources/ada/adarveng.fm5.mif
  40542.  
  40543.  
  40544. --><B.BODY></B.BODY
  40545. ><B.BODY></B.BODY
  40546. ><B.BODY></B.BODY
  40547. ><B.BODY></B.BODY
  40548. ><B.BODY></B.BODY
  40549. ></LABEL
  40550. ></SECTION
  40551. ></CHAPTER
  40552. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 7&rbwtab;</CX5FX5FZCHAPTER.NUM
  40553. ></RBW-AUTOGEN
  40554. ><RBW-ANCHOR ID="10180"></RBW-ANCHOR
  40555. >Reverse Engineering<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  40556. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  40557. ></RBW-SYSOBJ
  40558. ></C.CHAPTER.HEAD
  40559. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40560. >Introduction</L.LABEL
  40561. ><B.BODY><RBW-IDXTERM TERM1="Reverse Engineering"></RBW-IDXTERM
  40562. >Reverse Engineering parses Ada 83 or Ada 95 source code and builds CDs and CDMs that show the class hierarchy found in the source code.</B.BODY
  40563. ><B.BODY>Reverse Engineering makes class libraries available in ObjectTeam, helps you understand the structure and function of your software, and provides information that the ObjectTeam documentation tools can use to build “As Built” software documentation.</B.BODY
  40564. ><B.BODY>Reverse Engineering in the APDT does not capture all the information needed to successfully forward engineer again. Do not expect to reverse engineer and then proceed with synchronous engineering (as you can with code originally generated from with ObjectTeam.</B.BODY
  40565. ><B.BODY>The APDT reverse&truehy;engineers Ada 83 and Ada 95 code. It offers two basic approaches, one assuming an object&truehy;oriented “style” of development was used, the other assuming the style is unknown or inconsistent.</B.BODY
  40566. ></LABEL
  40567. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40568. >In this chapter</L.LABEL
  40569. ><B.BODY>This chapter contains the following sections:</B.BODY
  40570. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  40571. ></ENTRY
  40572. ></RBW-ROW
  40573. ></THEAD
  40574. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33533" TYPE="XREF-TEXTCOPY">Introduction&rbwtab;7–2</RBW-XREF
  40575. ></SB.SECTION.BLOCK.TABLE
  40576. ></ENTRY
  40577. ></RBW-ROW
  40578. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42144" TYPE="XREF-TEXTCOPY">Controlling Ada Reverse Engineering&rbwtab;7–3</RBW-XREF
  40579. ></SB.SECTION.BLOCK.TABLE
  40580. ></ENTRY
  40581. ></RBW-ROW
  40582. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32299" TYPE="XREF-TEXTCOPY">Reverse Engineering Ada 95 &truehy; Default Mapping&rbwtab;7–5</RBW-XREF
  40583. ></SB.SECTION.BLOCK.TABLE
  40584. ></ENTRY
  40585. ></RBW-ROW
  40586. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29910" TYPE="XREF-TEXTCOPY">Class Mapping Object Oriented Ada 95 Code&rbwtab;7–9</RBW-XREF
  40587. ></SB.SECTION.BLOCK.TABLE
  40588. ></ENTRY
  40589. ></RBW-ROW
  40590. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23324" TYPE="XREF-TEXTCOPY">Reverse Engineering Ada 83 &truehy; Default Mappings&rbwtab;7–12</RBW-XREF
  40591. ></SB.SECTION.BLOCK.TABLE
  40592. ></ENTRY
  40593. ></RBW-ROW
  40594. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32896" TYPE="XREF-TEXTCOPY">Class Mapping Object Oriented Ada 83 Code&rbwtab;7–14</RBW-XREF
  40595. ></SB.SECTION.BLOCK.TABLE
  40596. ></ENTRY
  40597. ></RBW-ROW
  40598. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36917" TYPE="XREF-TEXTCOPY">Reverse Engineering Associations and Accessor Methods&rbwtab;7–15</RBW-XREF
  40599. ></SB.SECTION.BLOCK.TABLE
  40600. ></ENTRY
  40601. ></RBW-ROW
  40602. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18125" TYPE="XREF-TEXTCOPY">Properties Set by Reverse Engineering&rbwtab;7–17</RBW-XREF
  40603. ></SB.SECTION.BLOCK.TABLE
  40604. ></ENTRY
  40605. ></RBW-ROW
  40606. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21253" TYPE="XREF-TEXTCOPY">Example: Reverse Engineering Ada&rbwtab;7–19</RBW-XREF
  40607. ></SB.SECTION.BLOCK.TABLE
  40608. ></ENTRY
  40609. ></RBW-ROW
  40610. ></TBODY
  40611. ></TGROUP
  40612. ></RBW-TABLE
  40613. ></LABEL
  40614. ><SECTION><S.SECTION.HEAD><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  40615. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  40616. ></RBW-SYSOBJ
  40617. ><RBW-ANCHOR ID="33533"></RBW-ANCHOR
  40618. >Introduction</S.SECTION.HEAD
  40619. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40620. >What is Reverse Engineering?</L.LABEL
  40621. ><B.BODY>Reverse Engineering is the process of mapping Ada source code into ObjectTeam classes and class hierarchies. During reverse engineering the APDT analyzes your source code much like a compiler does, but instead of generating object code it generates CDs and CDMs in the ObjectTeam repository.</B.BODY
  40622. ></LABEL
  40623. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40624. >Quick Start</L.LABEL
  40625. ><B.BODY>Should you wish to try reverse engineering without spending a great deal of time reading the manual, here are the basic steps:</B.BODY
  40626. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40627. ></RBW-AUTOGEN
  40628. ></RBW-MARKER
  40629. ><RBW-PARABODY>In the Object Design phase of your project, create or choose a System that you wish to reverse engineer into.</RBW-PARABODY
  40630. ></LB.LIST.BULLET
  40631. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40632. ></RBW-AUTOGEN
  40633. ></RBW-MARKER
  40634. ><RBW-PARABODY>Select Utilities | Reverse engineer Ada. Browse and choose the files you wish to reverse&truehy;engineer. Any number of files may be chosen, and they need not be provided in compilation order (the APDT will determine it).</RBW-PARABODY
  40635. ></LB.LIST.BULLET
  40636. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  40637. ></RBW-AUTOGEN
  40638. ></RBW-MARKER
  40639. ><RBW-PARABODY>The rest is automatic.</RBW-PARABODY
  40640. ></LB.LIST.BULLET
  40641. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  40642. ></RBW-AUTOGEN
  40643. >Reverse Engineering options can be controlled through M4 variables. See later in this chapter for details.</T.TIP
  40644. ></LABEL
  40645. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40646. >Caveat</L.LABEL
  40647. ><B.BODY>The APDT will reverse engineer code that has syntax errors in it. However, you should look at the syntax and semantic errors being reported to determine if they are of the kind that would materially alter the design being represented.</B.BODY
  40648. ></LABEL
  40649. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40650. >Reverse Engineering Techniques</L.LABEL
  40651. ><B.BODY>The APDT uses two basic algorithms for mapping Ada to ObjectTeam. The default algorithm assumes that the code being reverse engineered wasn’t done in an object&truehy;oriented fashion, or that it’s method of development is unknown. The second algorithm, called “Class Mappings” assumes the code is structured in an object&truehy;oriented form and makes decisions accordingly.</B.BODY
  40652. ></LABEL
  40653. ></SECTION
  40654. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="42144"></RBW-ANCHOR
  40655. >Controlling Ada Reverse Engineering</S.SECTION.HEAD
  40656. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40657. >M4 Variables </L.LABEL
  40658. ><B.BODY>Various options on the Ada reverse engineering process are controlled by M4 environment variables.</B.BODY
  40659. ><B.BODY>Normally, these variables can be set in a variety of ways, either at the operating system level, or within ObjectTeam (as described in earlier sections). However, with the current version of the APDT, the M4 environment variables controlling reverse engineering of Ada must be set at the operating system level.</B.BODY
  40660. ><B.BODY>The M4 environment variables controlling Ada reverse engineering are M4_ada_reveng, M4_ada_classpackages, and M4_ada_tmpdir. The M4_ada_reveng variable may contain multiple commands, separated by spaces.</B.BODY
  40661. ></LABEL
  40662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40663. >Comment Association</L.LABEL
  40664. ><B.BODY>The reverse engineering tool can extract comments from your source code and populate appropriate properties in the CDs and CDMs it creates. This information is useful for understanding and also can be used in documentation creation.</B.BODY
  40665. ><B.BODY>The M4_ada_reveng variable passes options to the reverse engineering tool More than one option may be placed in the M4 variable.</B.BODY
  40666. ><EM.EXAMPLE.MONO>&truehy;associate_comments on | off</EM.EXAMPLE.MONO
  40667. ><B.BODY>Controls whether comments found in the source code are extracted to appropriate properties in the created ObjectTeam class definition matrices The default is “on”. </B.BODY
  40668. ><E.EXAMPLE>Example: M4_ada_reveng=”&truehy;associate_comments off”</E.EXAMPLE
  40669. ><EM.EXAMPLE.MONO>&truehy;libunit_defs before | after | both | none</EM.EXAMPLE.MONO
  40670. ><B.BODY>Indicates where to extract associated comments for Ada top level library units. Before means before the definition of the unit, after means after, both means grab comments before and after, and none means don’t grab any of these comments. The default is “after”.</B.BODY
  40671. ><E.EXAMPLE>Example: M4_ada_reveng=”&truehy;libunits_defs none”</E.EXAMPLE
  40672. ><EM.EXAMPLE.MONO>&truehy;nestedunit_defs before | after | both | none</EM.EXAMPLE.MONO
  40673. ><B.BODY>Similar to libunit_defs, but controls this comment extraction for nested units. Rules for before, after, both, and none are same. The default is “after”.</B.BODY
  40674. ><EM.EXAMPLE.MONO>&truehy;typeobject_defs before | after | both | none</EM.EXAMPLE.MONO
  40675. ><B.BODY>Controls comment extraction for types and objects. Default is “after”.</B.BODY
  40676. ></LABEL
  40677. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40678. >Setting the Reverse Engineering Method</L.LABEL
  40679. ><B.BODY>The Ada reverse engineering tool uses two methods of reverse engineering. The default requires no option. If you wish to use the class mapping method (see <RBW-XREF REFID="29910" TYPE="XREF-TEXTCOPY">Class Mapping Object Oriented Ada 95 Code</RBW-XREF
  40680. > and <RBW-XREF REFID="32896" TYPE="XREF-TEXTCOPY">Class Mapping Object Oriented Ada 83 Code</RBW-XREF
  40681. >) then set the M4_ada_classpackages variable to “On”. The default is “Off””. </B.BODY
  40682. ><E.EXAMPLE>Example: M4_ada_classpackages=”On”</E.EXAMPLE
  40683. ></LABEL
  40684. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40685. >Controlling Placement of Temporary Files</L.LABEL
  40686. ><B.BODY>Running the Ada reverse engineering tool causes the creation of a large database containing the semantic information from the processed source files. A minimum of 10MB of free disk space is needed for Ada95, 5Mb for Ada83. Processing large amounts of source requires additional space. </B.BODY
  40687. ><B.BODY>By default, the temporary file is placed in the /var/tmp directory. If this directory is not on a filesystem with sufficient available disk space, the user may set the M4_ada_tmpdir variable to another directory name.</B.BODY
  40688. ><B.BODY>Example: M4_ada_tmpdir=”/usr2/tmp”</B.BODY
  40689. ><B.BODY></B.BODY
  40690. ></LABEL
  40691. ></SECTION
  40692. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32299"></RBW-ANCHOR
  40693. >Reverse Engineering Ada 95 &truehy; Default Mapping</S.SECTION.HEAD
  40694. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40695. >Packages To Classes</L.LABEL
  40696. ><B.BODY>The default mapping maps each package specification to an ObjectTeam class. The name of the ObjectTeam class is the full name of the package.</B.BODY
  40697. ><B.BODY>Variables declared in the package specification either become class based attributes (prefixed by a $), or associations to other classes, depending on the type of the variable.</B.BODY
  40698. ><B.BODY>Subprograms declared in the package specification that do not operate on any record type or operate on more than one record type become methods of the class. These methods may be class based methods (their names prefixed by a $), or accessor methods. Accessor methods are not added to the CDM for the class and so do not appear on CDs.</B.BODY
  40699. ><B.BODY><RBWAUTO-0007>Note</RBWAUTO-0007
  40700. >: If a subprogram operates on a single record type, it appears as a method for the class created for the record type.</B.BODY
  40701. ><B.BODY><RBWAUTO-0007>Note</RBWAUTO-0007
  40702. >: The heuristics used to classify variables as attributes or associations, and subprograms as normal methods or accessor methods are discussed in <RBW-XREF REFID="36917" TYPE="XREF-TEXTCOPY">Reverse Engineering Associations and Accessor Methods</RBW-XREF
  40703. >.</B.BODY
  40704. ></LABEL
  40705. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40706. >Record Types to Classes</L.LABEL
  40707. ><B.BODY>An ObjectTeam class is created for each record type in a package specification. The name of the ObjectTeam class is the full name of the Ada type from which it was generated.</B.BODY
  40708. ><B.BODY>Components of the record become either attributes of the class. or associations to other classes, depending on the type of the component.</B.BODY
  40709. ><B.BODY>Subprograms declared in the same package specification as the record type and which operate on the record type become normal or accessor methods of the class. Accessor methods are not added to the CDM for the class and so do not appear on CDs.</B.BODY
  40710. ><B.BODY><RBWAUTO-0007>Note</RBWAUTO-0007
  40711. >: The heuristics used to classify components as attributes or </B.BODY
  40712. ><B.BODY>associations, and subprograms as normal methods or accessor methods are discussed in Reverse Engineering Associations and Accessor Methods on page 7–15.</B.BODY
  40713. ></LABEL
  40714. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40715. >Enumeration Types to Classes</L.LABEL
  40716. ><B.BODY>An ObjectTeam class is created for each enumeration type in a package specification. The name of the ObjectTeam class is the full name of the Ada type from which it was generated. Enumeration literals become class based attributes of the class. No methods are placed in the class.</B.BODY
  40717. ><B.BODY>This mapping is consistent with the mapping used for creating enumeration type declarations with the Ada95 code generator.</B.BODY
  40718. ></LABEL
  40719. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40720. >Subtypes to Classes</L.LABEL
  40721. ><B.BODY>An ObjectTeam class is created for each subtype in a package specification. The name of the class is the full name of the Ada type from which it was generated. A single attribute, “x”, is created for the class.The type text for the attribute is the parent type name. The “Subtype Text” property is set to the subtype constraint.</B.BODY
  40722. ><B.BODY>The mapping is consistent with the mapping used for creating subtype declarations with the Ada95 code generator.</B.BODY
  40723. ></LABEL
  40724. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40725. >Library level subprograms</L.LABEL
  40726. ><B.BODY>For each library level subprogram, a single ObjectTeam class is created. Any nested subprogram becomes a class&truehy;based method (prefixed by a “$”). Any variables become class&truehy;based attributes. The name of the class is the name of the library level subprogram.</B.BODY
  40727. ></LABEL
  40728. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40729. >Tasks</L.LABEL
  40730. ><B.BODY>A single ObjectTeam class is created for each task, using the name of the task for the name of the class. The class has no attributes. Any task entries become class based methods (prefixed by a “$”).</B.BODY
  40731. ></LABEL
  40732. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40733. >Class Hierarchy</L.LABEL
  40734. ><B.BODY>Ada 95 supports inheritance via its tagged type feature. Each type derivation where the parent type is a tagged type yields an ObjectTeam generalization.</B.BODY
  40735. ></LABEL
  40736. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40737. >Example</L.LABEL
  40738. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40739. >Sample code</SL.SUBLABEL
  40740. ><B.BODY>Here is a simple Ada 95 source file:</B.BODY
  40741. ><EWM.EXAMPLEW.MONO>package shapes_package is</EWM.EXAMPLEW.MONO
  40742. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  40743. ><EWM.EXAMPLEW.MONO>   type rectangle is tagged   &truehy;&truehy; Gives characteristics of a rectangle.</EWM.EXAMPLEW.MONO
  40744. ><EWM.EXAMPLEW.MONO>      record</EWM.EXAMPLEW.MONO
  40745. ><EWM.EXAMPLEW.MONO>         length : float;      &truehy;&truehy; Length of rectangle</EWM.EXAMPLEW.MONO
  40746. ><EWM.EXAMPLEW.MONO>         width  : float;      &truehy;&truehy; Width of rectangle</EWM.EXAMPLEW.MONO
  40747. ><EWM.EXAMPLEW.MONO>      end record;</EWM.EXAMPLEW.MONO
  40748. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  40749. ><EWM.EXAMPLEW.MONO>   function size (r : rectangle   </EWM.EXAMPLEW.MONO
  40750. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; A rectangle for which size is to be determined</EWM.EXAMPLEW.MONO
  40751. ><EWM.EXAMPLEW.MONO>      ) return float;</EWM.EXAMPLEW.MONO
  40752. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Returns size of a given rectangle.</EWM.EXAMPLEW.MONO
  40753. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  40754. ><EWM.EXAMPLEW.MONO>   type cuboid is new rectangle with </EWM.EXAMPLEW.MONO
  40755. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Adds height to a rectangle to make a cube.</EWM.EXAMPLEW.MONO
  40756. ><EWM.EXAMPLEW.MONO>      record</EWM.EXAMPLEW.MONO
  40757. ><EWM.EXAMPLEW.MONO>         height : float;      &truehy;&truehy; Height of cube.</EWM.EXAMPLEW.MONO
  40758. ><EWM.EXAMPLEW.MONO>      end record;</EWM.EXAMPLEW.MONO
  40759. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  40760. ><EWM.EXAMPLEW.MONO>   type objects is record</EWM.EXAMPLEW.MONO
  40761. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Holds a rectangle and a cube.</EWM.EXAMPLEW.MONO
  40762. ><EWM.EXAMPLEW.MONO>      rec : rectangle;</EWM.EXAMPLEW.MONO
  40763. ><EWM.EXAMPLEW.MONO>      cube : cuboid;</EWM.EXAMPLEW.MONO
  40764. ><EWM.EXAMPLEW.MONO>   end record;</EWM.EXAMPLEW.MONO
  40765. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  40766. ><EWM.EXAMPLEW.MONO>   global_rectangle : rectangle;</EWM.EXAMPLEW.MONO
  40767. ><EWM.EXAMPLEW.MONO>   global_cuboid : cuboid;</EWM.EXAMPLEW.MONO
  40768. ><EWM.EXAMPLEW.MONO>   </EWM.EXAMPLEW.MONO
  40769. ><EWM.EXAMPLEW.MONO>   procedure initialize_shapes;</EWM.EXAMPLEW.MONO
  40770. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  40771. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  40772. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40773. >Generated diagrams</SL.SUBLABEL
  40774. ><B.BODY>APDT’s Ada 95 reverse engineering system yields these diagrams:</B.BODY
  40775. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00395.unk" origfile="pics/reveng11.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  40776. ></FA.FIGURE.ANCHOR
  40777. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00396.unk" origfile="pics/reveng12.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  40778. ></FA.FIGURE.ANCHOR
  40779. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00397.unk" origfile="pics/reveng13.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  40780. ></FA.FIGURE.ANCHOR
  40781. ></LABEL
  40782. ></SECTION
  40783. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29910"></RBW-ANCHOR
  40784. >Class Mapping Object Oriented Ada 95 Code</S.SECTION.HEAD
  40785. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40786. >Introduction</L.LABEL
  40787. ><B.BODY>In some situations your Ada 95 code may be structured in a way quite suitable for representation in ObjectTeam. </B.BODY
  40788. ><B.BODY>Setting the M4_ada_classpackages variable to “On” sets in place a second algorithm that takes advantage of object oriented structured code.</B.BODY
  40789. ><B.BODY>In this algorithm, the code is expected to be object&truehy;oriented Ada code in which each “class” is a separate package and the package name is meant to be the name of the class.</B.BODY
  40790. ><B.BODY>When “Class Mapping” is used, each package that has a single tagged type in it is mapped to an ObjectTeam class. The class name is the name of the package. As with the default mapping (<RBW-XREF REFID="32299" TYPE="XREF-TEXTCOPY">Reverse Engineering Ada 95 &truehy; Default Mapping</RBW-XREF
  40791. >), components of the tagged type and variables declared in the package specification become either attributes of the class or associations to other classes. Subprograms in the package become normal methods or accessor methods of the class. Methods that do not operate on the record type become class&truehy;based methods (prefixed by “$”).</B.BODY
  40792. ><B.BODY>All other library units (packages with more than one tagged type, packages with no tagged types, tasks, and library level subprograms), are mapped as in the default algorithm.</B.BODY
  40793. ><B.BODY>The class hierarchy is built in the same way as the default mapping, with each tagged type extension becoming a generalization.</B.BODY
  40794. ><B.BODY><RBWAUTO-0007>Note</RBWAUTO-0007
  40795. >: The heuristics used to classify variables as attributes or associations and subprograms as normal methods or accessor methods are discussed in <RBW-XREF REFID="36917" TYPE="XREF-TEXTCOPY">Reverse Engineering Associations and Accessor Methods</RBW-XREF
  40796. >.</B.BODY
  40797. ></LABEL
  40798. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40799. >Example Ada 95 Code structured appropriate for Class Mapping</L.LABEL
  40800. ><E.EXAMPLE>package Alert is</E.EXAMPLE
  40801. ><E.EXAMPLE>   type Device is (Teletype, Console, Big_Screen);</E.EXAMPLE
  40802. ><E.EXAMPLE>   type Instance is tagged record</E.EXAMPLE
  40803. ><E.EXAMPLE>      Time_Of_Arrival : integer;</E.EXAMPLE
  40804. ><E.EXAMPLE>      Message : integer;</E.EXAMPLE
  40805. ><E.EXAMPLE>   end record;</E.EXAMPLE
  40806. ><E.EXAMPLE></E.EXAMPLE
  40807. ><E.EXAMPLE>   procedure display (a : instance; on : in device);</E.EXAMPLE
  40808. ><E.EXAMPLE>   procedure handle (a : in out instance);</E.EXAMPLE
  40809. ><E.EXAMPLE>   procedure log (a : in instance);</E.EXAMPLE
  40810. ><E.EXAMPLE>end;</E.EXAMPLE
  40811. ><E.EXAMPLE></E.EXAMPLE
  40812. ><E.EXAMPLE>with alert;</E.EXAMPLE
  40813. ><E.EXAMPLE>package low_alert is</E.EXAMPLE
  40814. ><E.EXAMPLE>   type instance is new alert.instance with null record;</E.EXAMPLE
  40815. ><E.EXAMPLE>end;</E.EXAMPLE
  40816. ><E.EXAMPLE></E.EXAMPLE
  40817. ><E.EXAMPLE>with alert;</E.EXAMPLE
  40818. ><E.EXAMPLE>package medium_alert is</E.EXAMPLE
  40819. ><E.EXAMPLE></E.EXAMPLE
  40820. ><E.EXAMPLE>   type instance is new alert.instance with record</E.EXAMPLE
  40821. ><E.EXAMPLE>      action_officer : integer;</E.EXAMPLE
  40822. ><E.EXAMPLE>   end record;</E.EXAMPLE
  40823. ><E.EXAMPLE></E.EXAMPLE
  40824. ><E.EXAMPLE>   &truehy;&truehy; now override inherited operation</E.EXAMPLE
  40825. ><E.EXAMPLE>   procedure handle(ma : in out instance);</E.EXAMPLE
  40826. ><E.EXAMPLE>end;</E.EXAMPLE
  40827. ><E.EXAMPLE></E.EXAMPLE
  40828. ><E.EXAMPLE>with medium_alert;</E.EXAMPLE
  40829. ><E.EXAMPLE>package high_alert is</E.EXAMPLE
  40830. ><E.EXAMPLE>   type instance is new medium_alert.instance with record</E.EXAMPLE
  40831. ><E.EXAMPLE>      ring_alarm_at : integer;</E.EXAMPLE
  40832. ><E.EXAMPLE>   end record;</E.EXAMPLE
  40833. ><E.EXAMPLE></E.EXAMPLE
  40834. ><E.EXAMPLE>   procedure handle (ha: in out instance);</E.EXAMPLE
  40835. ><E.EXAMPLE>   procedure set_alarm (ha : in instance);</E.EXAMPLE
  40836. ><E.EXAMPLE></E.EXAMPLE
  40837. ><E.EXAMPLE>end;</E.EXAMPLE
  40838. ></LABEL
  40839. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40840. >Resulting Mapping</L.LABEL
  40841. ><BI.BODY.INTRO></BI.BODY.INTRO
  40842. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00398.unk" origfile="pics/reveng21.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  40843. ></FA.FIGURE.ANCHOR
  40844. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00399.unk" origfile="pics/reveng22.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  40845. ></FA.FIGURE.ANCHOR
  40846. ></LABEL
  40847. ></SECTION
  40848. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="23324"></RBW-ANCHOR
  40849. >Reverse Engineering Ada 83 &truehy; Default Mappings</S.SECTION.HEAD
  40850. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40851. >Introduction</L.LABEL
  40852. ><B.BODY>The Ada 83 reverse&truehy;engineering tool creates Class Diagrams with classes, their attributes, their methods, and their associations to other classes. It does not presently create class hierarchies. </B.BODY
  40853. ></LABEL
  40854. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40855. >Packages to Classes</L.LABEL
  40856. ><B.BODY>The default mapping maps each package specification to an ObjectTeam class. The name of the class is the full name of the package.</B.BODY
  40857. ><B.BODY>Variables declared in the package specification either become class based attributes (prefixed by a $), or associations to other classes, depending on the type of the variable.</B.BODY
  40858. ><B.BODY>Subprograms declared in the package specification that do not </B.BODY
  40859. ><B.BODY>operate on any record type or operate on more than one record type </B.BODY
  40860. ><B.BODY>become methods of the class. These methods may be class based </B.BODY
  40861. ><B.BODY>methods (their names prefixed by a $), or accessor methods. </B.BODY
  40862. ><B.BODY>Accessor methods are not added to the CDM for the class and so do </B.BODY
  40863. ><B.BODY>not appear on CDs.</B.BODY
  40864. ><B.BODY><RBWAUTO-0007>Note</RBWAUTO-0007
  40865. >: If a subprogram operates on a single record type, it appears as </B.BODY
  40866. ><B.BODY>a method for the class created for the record type (see below).</B.BODY
  40867. ><B.BODY><RBWAUTO-0007>Note</RBWAUTO-0007
  40868. >: The heuristics used to classify variables as attributes or </B.BODY
  40869. ><B.BODY>associations, and subprograms as normal methods or accessor </B.BODY
  40870. ><B.BODY>methods are discussed in Reverse Engineering Associations and </B.BODY
  40871. ><B.BODY>Accessor Methods on page 7–15.</B.BODY
  40872. ></LABEL
  40873. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40874. >Record Types to Classes</L.LABEL
  40875. ><B.BODY>An ObjectTeam class is created for each record type in a package specification. The name of the class is the full name of the Ada type from which it was generated.</B.BODY
  40876. ><B.BODY>Components of the record become either attributes of the class. or associations to other classes, depending on the type of the component.</B.BODY
  40877. ><B.BODY>Subprograms declared in the same package specification as the record type and which operate on the record type become normal or accessor methods of the class. Accessor methods are not added to the CDM for the class and so do not appear on CDs.</B.BODY
  40878. ><B.BODY><RBWAUTO-0007>Note</RBWAUTO-0007
  40879. >: The heuristics used to classify components as attributes or </B.BODY
  40880. ><B.BODY>associations, and subprograms as normal methods or accessor methods are discussed in Reverse Engineering Associations and Accessor Methods on page 7–15.</B.BODY
  40881. ></LABEL
  40882. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40883. >Enumeration Types to Classes</L.LABEL
  40884. ><B.BODY>An ObjectTeam class is created for each enumeration type in a package specification. The name of the class is the full name of the Ada type from which it was generated. Enumeration literals become class based attributes of the class. No methods are placed in the class.</B.BODY
  40885. ><B.BODY>This mapping is consistent with the mapping used for creating enumeration type declarations with the Ada code generator.</B.BODY
  40886. ></LABEL
  40887. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40888. >Subtypes to Classes</L.LABEL
  40889. ><B.BODY>An ObjectTeam class is created for each subtype in a package specification. The name of the class is the full name of the Ada type from which it was generated. A single attribute, “x”, is created for the class.The type text for the attribute is the parent type name. The “Subtype Text” property is set to the subtype constraint.</B.BODY
  40890. ><B.BODY>The mapping is consistent with the mapping used for creating subtype declarations with the Ada code generator.</B.BODY
  40891. ></LABEL
  40892. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40893. >Library level Sub&truehy;Programs</L.LABEL
  40894. ><B.BODY>For each library level subprogram, a single ObjectTeam class is created. Any nested subprogram becomes a class&truehy;based method (prefixed by a “$”). Any variables become class&truehy;based attributes. The name of the class is the name of the library level subprogram.</B.BODY
  40895. ></LABEL
  40896. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40897. >Tasks</L.LABEL
  40898. ><B.BODY>A single ObjectTeam class is created for each task, using the name of the task for the name of the class. The class has no attributes. Any task entries become class&truehy;based methods (prefixed by a “$”).</B.BODY
  40899. ></LABEL
  40900. ></SECTION
  40901. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32896"></RBW-ANCHOR
  40902. >Class Mapping Object Oriented Ada 83 Code</S.SECTION.HEAD
  40903. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40904. >Introduction</L.LABEL
  40905. ><B.BODY>In some situations your Ada 83 code may be structured in a way quite suitable for representation in ObjectTeam. </B.BODY
  40906. ><B.BODY>Setting the M4_ada_classpackages variable to “On” sets in place a second algorithm that takes advantage of object oriented structured code.</B.BODY
  40907. ><B.BODY>In this algorithm, the code is expected to be object&truehy;oriented Ada code in which each “class” is a separate package and the package name is meant to be the name of the class.</B.BODY
  40908. ><B.BODY>When “Class Mapping” is used, each package that has a single record type in it is mapped to an ObjectTeam class. The class name is the name of the package. As with the default mapping (<RBW-XREF REFID="32299" TYPE="XREF-TEXTCOPY">Reverse Engineering Ada 95 &truehy; Default Mapping</RBW-XREF
  40909. >), components of the record type and variables declared in the package specification become either attributes of the class or associations to other classes. Subprograms in the package become normal methods or accessor methods of the class. Methods that do not operate on the record type become class&truehy;based methods (prefixed by “$”).</B.BODY
  40910. ><B.BODY>All other library units (packages with more than one record type, packages with no tagged types, tasks, and library level subprograms), are mapped as in the default algorithm.</B.BODY
  40911. ><B.BODY>Class hierarchies are not created for Ada83.</B.BODY
  40912. ><B.BODY><RBWAUTO-0007>Note</RBWAUTO-0007
  40913. >: The heuristics used to classify variables as attributes or associations and subprograms as normal methods or accessor methods are discussed in <RBW-XREF REFID="36917" TYPE="XREF-TEXTCOPY">Reverse Engineering Associations and Accessor Methods</RBW-XREF
  40914. ></B.BODY
  40915. ></LABEL
  40916. ></SECTION
  40917. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36917"></RBW-ANCHOR
  40918. >Reverse Engineering Associations and Accessor Methods</S.SECTION.HEAD
  40919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40920. >Introduction</L.LABEL
  40921. ><B.BODY>The Ada reverse engineering tool uses some simple heuristics to determine which attributes are actually associations and which are true attributes, and to determine which methods are accessor methods and which are normal methods.</B.BODY
  40922. ></LABEL
  40923. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40924. >Association Recognition</L.LABEL
  40925. ><B.BODY>A record component or variable whose type is an enumeration, integer, or floating point type becomes an attribute.</B.BODY
  40926. ><B.BODY>A component or variable whose type maps to a class, or accesses a class, or which is an array with a component type that maps to or accesses a class, becomes an association to the class.</B.BODY
  40927. ><B.BODY>Other components and variables become attributes.</B.BODY
  40928. ></LABEL
  40929. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40930. >Accessor Method Recognition</L.LABEL
  40931. ><B.BODY>A method is identified as an accessor method if its name begins with “set”, “get”, “remove”, or “add” and the rest of the name matches one of the attributes in the class. Accessor methods are not added to the CDM created for the class.</B.BODY
  40932. ></LABEL
  40933. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40934. >Disabling Association and Accessor Method Recognition</L.LABEL
  40935. ><B.BODY>Reverse engineering of associations and the recognition of accessor methods may be disabled with the “Reverse Engineer Associations” toggle on the reverse engineering dialog box.</B.BODY
  40936. ><B.BODY>When reverse engineering of associations and accessor methods is disabled, components and variables become attributes, regardless of their types, and all methods become normal methods.</B.BODY
  40937. ></LABEL
  40938. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40939. >Customizing Association and Accessor Method Recognition</L.LABEL
  40940. ><B.BODY>Recognition of associations and accessor methods is controlled by the Tcl file “rev_assoc.tcl” in the directory <CX5FX5FTERM>M4_home</CX5FX5FTERM
  40941. >/modules/ada95/tcl, for Ada95 or <CX5FX5FTERM>M4_home</CX5FX5FTERM
  40942. >/modules/ada83/tcl for Ada83.</B.BODY
  40943. ><B.BODY>Users experienced with Tcl, and with the ObjectTeam Repository Interface may wish to rewrite this Tcl file to change the heuristics used.</B.BODY
  40944. ><B.BODY>The new version of the rev_assoc.tcl file should be stored as a customization file in the ObjectTeam repository. The level in which you store the customization file determines the extent to which the Tcl file will be used in reverse engineering. A customization file stored on System level for instance, won’t affect reverse engineering for another system in the same Configuration. However, a customization file stored on Phase level will.</B.BODY
  40945. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  40946. ></RBW-AUTOGEN
  40947. ></RBW-MARKER
  40948. ><RBW-PARABODY>To create a customized version of <CX5FX5FFILE.NAME>rev_assoc.tcl</CX5FX5FFILE.NAME
  40949. >:</RBW-PARABODY
  40950. ></P.PROCEDURE
  40951. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  40952. ></RBW-AUTOGEN
  40953. ></RBW-MARKER
  40954. ><RBW-PARABODY>Make the browser level of choice the current browser level.</RBW-PARABODY
  40955. ></LN.LIST.NUM
  40956. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  40957. ></RBW-AUTOGEN
  40958. ></RBW-MARKER
  40959. ><RBW-PARABODY>Check your access rights to see if you are allowed to create customization files on the current level.</RBW-PARABODY
  40960. ></LN.LIST.NUM
  40961. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  40962. ></RBW-AUTOGEN
  40963. ></RBW-MARKER
  40964. ><RBW-PARABODY>Open the <customization files> browser object.</RBW-PARABODY
  40965. ></LN.LIST.NUM
  40966. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  40967. ></RBW-AUTOGEN
  40968. ></RBW-MARKER
  40969. ><RBW-PARABODY>Select File | New | Customization File Version... from the menu bar.</RBW-PARABODY
  40970. ></LN.LIST.NUM
  40971. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  40972. ></RBW-AUTOGEN
  40973. ></RBW-MARKER
  40974. ><RBW-PARABODY>Enter the name “rev_assoc.tcl”.</RBW-PARABODY
  40975. ></LN.LIST.NUM
  40976. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  40977. ></RBW-AUTOGEN
  40978. ></RBW-MARKER
  40979. ><RBW-PARABODY>Open the new customization file.</RBW-PARABODY
  40980. ></LN.LIST.NUM
  40981. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  40982. ></RBW-AUTOGEN
  40983. ></RBW-MARKER
  40984. ><RBW-PARABODY>Enter the required code. You might want to include the contents of the default “rev_assoc.tcl” file first and then make the desired changes.</RBW-PARABODY
  40985. ></LN.LIST.NUM
  40986. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  40987. ></RBW-AUTOGEN
  40988. ></RBW-MARKER
  40989. ><RBW-PARABODY>Save the customization file.</RBW-PARABODY
  40990. ></LN.LIST.NUM
  40991. ><B.BODY>The next time you run the reverse engineering tool, the new version of rev_assoc.tcl will be used.</B.BODY
  40992. ><B.BODY></B.BODY
  40993. ></LABEL
  40994. ></SECTION
  40995. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18125"></RBW-ANCHOR
  40996. >Properties Set by Reverse Engineering</S.SECTION.HEAD
  40997. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  40998. >Introduction</L.LABEL
  40999. ><B.BODY>The Ada 95 or Ada 83 reverse engineering process sets properties for each class, attribute, method, and parameter created.</B.BODY
  41000. ><B.BODY>These properties can be useful for helping understand the code that has been reverse engineered. The properties can also be used by ObjectTeam documentation tools to build “As Built” documentation.</B.BODY
  41001. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  41002. ></RBW-AUTOGEN
  41003. >Unless otherwise noted, these properties are set by both Ada 83 and Ada 95 reverse engineering.</N.NOTE
  41004. ></LABEL
  41005. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41006. >Class Properties</L.LABEL
  41007. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41008. >Class Visibility</SL.SUBLABEL
  41009. ><B.BODY>The Class Visibility property is set to “public” if the record type causing creation of a class is in the visible part of a package specification. It is set to “private” if the record is declared as “private” and to “limited” if the record is declared as “limited private”. The Class Visibility property is set to “Opaque” if the record is declared in a package body with an access type referencing the record in the corresponding package specification. For library level subprograms the property is set to “public”.</B.BODY
  41010. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41011. >External With Clause</SL.SUBLABEL
  41012. ><B.BODY>The External With Clause property is set to a comma separated list of names of program units withed by the package in which the record was declared.</B.BODY
  41013. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41014. >Free Text</SL.SUBLABEL
  41015. ><B.BODY>The Free Text property is set in “&truehy;&truehy;” comments found following the declaration of the record causing the creation of a class. Optionally, the M4_ada_reveng environment variable may be used to configure the reverse engineering tool to extract comments before, after, both, or not at all. See <RBW-XREF REFID="42144" TYPE="XREF-TEXTCOPY">Controlling Ada Reverse Engineering</RBW-XREF
  41016. > for details on the use of the M4 variable.</B.BODY
  41017. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41018. >Control</SL.SUBLABEL
  41019. ><B.BODY><CX5FX5FTERM>Ada 95 only</CX5FX5FTERM
  41020. >. The Control property is set to “Controlled” if the class was created from a tagged type with a base type of Ada.Finalization.Controlled. It is set to “Limited Controlled” if the base type is Ada.Finalization.Limited_Controlled. In all other cases it is set to “Not controlled”.</B.BODY
  41021. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41022. >Child Syntax</SL.SUBLABEL
  41023. ><B.BODY><CX5FX5FTERM>Ada 95 only</CX5FX5FTERM
  41024. >. The Child Syntax property is set to “TRUE” if the program unit from which the class originated was a child package. It is set to “FALSE” otherwise.</B.BODY
  41025. ></LABEL
  41026. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41027. >Attribute Properties</L.LABEL
  41028. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41029. >Free Text</SL.SUBLABEL
  41030. ><B.BODY>The Free Text Property is set to text in the“&truehy;&truehy;” comments following the record component declaration. Optionally, the M4_ada_reveng environment variable may be used to configure the reverse engineering tool to extract comments before, after, both, or not at all. See <RBW-XREF REFID="42144" TYPE="XREF-TEXTCOPY">Controlling Ada Reverse Engineering</RBW-XREF
  41031. > for details on the use of the M4 variable.</B.BODY
  41032. ></LABEL
  41033. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41034. >Method Properties</L.LABEL
  41035. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41036. >Method Access</SL.SUBLABEL
  41037. ><B.BODY>The Method Access property is set to “Private” for subprograms declared within the private part of a package specification and to “Public” for others.</B.BODY
  41038. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41039. >Classwide Type</SL.SUBLABEL
  41040. ><B.BODY><CX5FX5FTERM>Ada 95 only</CX5FX5FTERM
  41041. >. The Classwide Type property is set to TRUE for methods mapped from functions returning the class type. For all other methods it is set to “FALSE”.</B.BODY
  41042. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41043. >Method Free Text</SL.SUBLABEL
  41044. ><B.BODY>The Method Free Text property is set to the text in a “&truehy;&truehy;” comments following the Ada subprogram or method declaration. Optionally, the M4_ada_reveng environment variable may be used to configure the reverse engineering tool to extract comments before, after, both, or not at all. See <RBW-XREF REFID="42144" TYPE="XREF-TEXTCOPY">Controlling Ada Reverse Engineering</RBW-XREF
  41045. > for details on the use of the M4 variable.</B.BODY
  41046. ></LABEL
  41047. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41048. >Parameter Properties</L.LABEL
  41049. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41050. >Parameter Data Flow Mode</SL.SUBLABEL
  41051. ><B.BODY>The Parameter Data Flow Mode property is set to “in” for Ada “in” parameters, “out” for Ada “out” parameters, and “in out” for Ada “in out” parameters.</B.BODY
  41052. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41053. >Parameter Default Value</SL.SUBLABEL
  41054. ><B.BODY>The Parameter Default Value property is set to the default value given in the parameter declaration. If no default value is given, the property is not set.</B.BODY
  41055. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41056. >Classwide Property</SL.SUBLABEL
  41057. ><B.BODY><CX5FX5FTERM>Ada 95 only</CX5FX5FTERM
  41058. >. The Classwide property is set to TRUE if the parameter type is a “class” type and to FALSE for all other cases.</B.BODY
  41059. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41060. >Parameter Free Text</SL.SUBLABEL
  41061. ><B.BODY>The Free Text Property is set to text in the “&truehy;&truehy;” comments following the record component declaration. Optionally, the M4_ada_reveng environment variable may be used to configure the reverse engineering tool to extract comments before, after, both, or not at all. See <RBW-XREF REFID="42144" TYPE="XREF-TEXTCOPY">Controlling Ada Reverse Engineering</RBW-XREF
  41062. > for details on the use of the M4 variable.</B.BODY
  41063. ></LABEL
  41064. ></SECTION
  41065. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21253"></RBW-ANCHOR
  41066. >Example: Reverse Engineering Ada</S.SECTION.HEAD
  41067. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41068. >Introduction</L.LABEL
  41069. ><B.BODY>An entire session of reverse engineering an Ada file is shown below. Although this session just does one file (for simplicity), many files can be done at once if desired.</B.BODY
  41070. ></LABEL
  41071. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41072. >Before you begin</L.LABEL
  41073. ><B.BODY>Before you reverse engineer, make sure all the M4 variables controlling reverse engineering are set and in effect. See <RBW-XREF REFID="42144" TYPE="XREF-TEXTCOPY">Controlling Ada Reverse Engineering</RBW-XREF
  41074. >, <RBW-XREF REFID="29910" TYPE="XREF-TEXTCOPY">Class Mapping Object Oriented Ada 95 Code</RBW-XREF
  41075. >, and <RBW-XREF REFID="32896" TYPE="XREF-TEXTCOPY">Class Mapping Object Oriented Ada 83 Code</RBW-XREF
  41076. > for information on M4 variables that control the reverse engineering process.</B.BODY
  41077. ></LABEL
  41078. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41079. >Step 1: Create an Object Design Phase and System</L.LABEL
  41080. ><B.BODY>Reverse engineering populates a System in the Object Design phase of a Project. So, you will need to create an Object Design phase and System in the project you wish to store the reverse engineering into. Select a project version in the Navigation area of the ObjectTeam Browser, and then select File | New Phase Versions.</B.BODY
  41081. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00400.unk" origfile="pics/reveng1.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  41082. ></FA.FIGURE.ANCHOR
  41083. ><B.BODY>Next, create a system version in the Object Design Phase. Select the ObjectDesign phase in the Navigation area of the ObjectTeam Browser. Then, select File | New System Version and enter the name of the new system.</B.BODY
  41084. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00401.unk" origfile="pics/reveng3.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  41085. ></FA.FIGURE.ANCHOR
  41086. ></LABEL
  41087. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41088. >Step 2: Launch the Reverse Engineering Tool</L.LABEL
  41089. ><B.BODY>After creating the Object Design Phase and System, select the System on the left side of the Browser, and invoke the reverse engineering tool by selecting Utilities | Reverse Engineer Ada<CX5FX5FTERM>XX</CX5FX5FTERM
  41090. >.</B.BODY
  41091. ><B.BODY><RBWAUTO-0007>A Reverse Engineer Ada Dialog box appears prompting you to select the files to be reverse engineered.</RBWAUTO-0007
  41092. > </B.BODY
  41093. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00402.unk" origfile="pics/reveng4.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  41094. ></FA.FIGURE.ANCHOR
  41095. ><B.BODY>Use the filter to limit the list of files displayed. Reverse engineering creates CDs and CDMs based on the files that you select. Therefore, you generally want to reverse engineer all files in a system at the same time. Select the desired files and click ok.</B.BODY
  41096. ><B.BODY>A Reverse Engineer Ada dialog box for appears, prompting you to select the options that you want to use.</B.BODY
  41097. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00403.unk" origfile="pics/reveng8.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  41098. ></FA.FIGURE.ANCHOR
  41099. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering" TERM2="configuring options"></RBW-IDXTERM
  41100. >The following table describes each option (default values are as shown in the dialog box):</B.BODY
  41101. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  41102. ></ENTRY
  41103. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Descriptions</CELLHEADING
  41104. ></ENTRY
  41105. ></RBW-ROW
  41106. ></THEAD
  41107. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diagram</CELLBODY
  41108. ></ENTRY
  41109. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Prefix used to name each generated CD.</CELLBODY
  41110. ></ENTRY
  41111. ></RBW-ROW
  41112. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate</CELLBODY
  41113. ></ENTRY
  41114. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether to generate CDs, CDMs, or both:</CELLBODY
  41115. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41116. ></RBW-AUTOGEN
  41117. ></RBW-MARKER
  41118. ><RBW-PARABODY>CDs and CDMs</RBW-PARABODY
  41119. ></CELLBULLET
  41120. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41121. ></RBW-AUTOGEN
  41122. ></RBW-MARKER
  41123. ><RBW-PARABODY>Only CDs (only class structure is generated)</RBW-PARABODY
  41124. ></CELLBULLET
  41125. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41126. ></RBW-AUTOGEN
  41127. ></RBW-MARKER
  41128. ><RBW-PARABODY>Only CDMs (only class features are generated)</RBW-PARABODY
  41129. ></CELLBULLET
  41130. ></ENTRY
  41131. ></RBW-ROW
  41132. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overwrite Existing Diagrams</CELLBODY
  41133. ></ENTRY
  41134. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, existing CDs are replaced.</CELLBODY
  41135. ></ENTRY
  41136. ></RBW-ROW
  41137. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Reference Diagrams</CELLBODY
  41138. ></ENTRY
  41139. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering creates a separate reference CD for each class that exceeds the maximum size. The class is folded in all diagrams other than the reference diagram.</CELLBODY
  41140. ></ENTRY
  41141. ></RBW-ROW
  41142. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Class Width & Height</CELLBODY
  41143. ></ENTRY
  41144. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class. When a class exceeds this size, it is folded.</CELLBODY
  41145. ></ENTRY
  41146. ></RBW-ROW
  41147. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Tree Width & Height</CELLBODY
  41148. ></ENTRY
  41149. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class tree. When a class hierarchy exceeds this size, it is split.</CELLBODY
  41150. ></ENTRY
  41151. ></RBW-ROW
  41152. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Screen Width & Height</CELLBODY
  41153. ></ENTRY
  41154. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a diagram. When a diagram exceeds this size, it is split.</CELLBODY
  41155. ></ENTRY
  41156. ></RBW-ROW
  41157. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Placement Algorithm</CELLBODY
  41158. ></ENTRY
  41159. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Reverse Engineering Associations is selected</CX5FX5FBULLET.EMPHASIS
  41160. >, specifies the algorithm reverse engineering uses to create the CDs that show the associations:</CELLBODY
  41161. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41162. ></RBW-AUTOGEN
  41163. ></RBW-MARKER
  41164. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Simple.</CX5FX5FBULLET.EMPHASIS
  41165. > Creates a CD for each class that has associations.</RBW-PARABODY
  41166. ></CELLBULLET
  41167. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41168. ></RBW-AUTOGEN
  41169. ></RBW-MARKER
  41170. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Grid.</CX5FX5FBULLET.EMPHASIS
  41171. > Creates a CD for each <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  41172. > classes, where <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  41173. > is the number specified in the Number of Classes per CD field.</RBW-PARABODY
  41174. ></CELLBULLET
  41175. ></ENTRY
  41176. ></RBW-ROW
  41177. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Number of Classes per CD</CELLBODY
  41178. ></ENTRY
  41179. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Placement Algorithm is Grid</CX5FX5FBULLET.EMPHASIS
  41180. >, specifies the number of unfolded classes per CD.</CELLBODY
  41181. ></ENTRY
  41182. ></RBW-ROW
  41183. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reverse Engineer Associations</CELLBODY
  41184. ></ENTRY
  41185. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering examines the attributes and accessor methods defined on each class to determine the associations among classes. It then creates CDs that show those associations.</CELLBODY
  41186. ></ENTRY
  41187. ></RBW-ROW
  41188. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Input Filter Command</CELLBODY
  41189. ></ENTRY
  41190. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Command used to preprocess the header files. Specify the command using the format:</CELLBODY
  41191. ><CELLBODY><CX5FX5FINPUT>myfilter %1 %2</CX5FX5FINPUT
  41192. > </CELLBODY
  41193. ><CELLBODY>It is then executed as</CELLBODY
  41194. ><CELLBODY><CX5FX5FINPUT>myfilter input&truehy;file output&truehy;file</CX5FX5FINPUT
  41195. > </CELLBODY
  41196. ><CELLBODY>If this option is not specified it will default to the settings of the M4_reveng_filter variable. If the M4_reveng_filter is not set, no input filter will be used.</CELLBODY
  41197. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  41198. > Reverse engineering ignores all preprocessor directives, such as #ifdef and #define. Use this field to specify a preprocessor that can resolve these directives before ObjectTeam reverse engineers the file.</CELLBODY
  41199. ></ENTRY
  41200. ></RBW-ROW
  41201. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Skip Identifiers File</CELLBODY
  41202. ></ENTRY
  41203. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>File containing a list of identifiers to be ignored by reverse engineering. The file must be an ASCII file that contains the identifiers; separate the identifiers using white space.</CELLBODY
  41204. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  41205. >If you want to retain the specification of this file for repeated use, set the M4_reveng_skipfile variable in your Meta4userenv file. For example:</CELLBODY
  41206. ><E.EXAMPLE>M4_reveng_skipfile=\user\bob\skip_file.txt;RW</E.EXAMPLE
  41207. ><CELLBODY>This value will be displayed in this field. Note that if you change the value in this field, it is not written to the Meta4UserEnv file.</CELLBODY
  41208. ></ENTRY
  41209. ></RBW-ROW
  41210. ></TBODY
  41211. ></TGROUP
  41212. ></RBW-TABLE
  41213. ><B.BODY></B.BODY
  41214. ><B.BODY>Select the desired options, then select OK.</B.BODY
  41215. ><B.BODY>An ObjectTeam execution window now appears with the reverse engineering process running within it:</B.BODY
  41216. ></LABEL
  41217. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41218. >Step 3 Review the results</L.LABEL
  41219. ><BI.BODY.INTRO>The reverse engineering process creates a variety of CDs and CDMs in the Object Design phase of your project.</BI.BODY.INTRO
  41220. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00404.unk" origfile="pics/reveng6.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  41221. ></FA.FIGURE.ANCHOR
  41222. ><B.BODY>The results can then be inspected using the ObjectTeam Class Diagram Editor:</B.BODY
  41223. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00405.unk" origfile="pics/reveng7.gif" origtype="X" origdoc="../../sources/ada/adarveng.fm5.mif"></RBW-GRAPHIC
  41224. >
  41225.  </FA.FIGURE.ANCHOR
  41226. ><B.BODY></B.BODY
  41227. ><RBWAUTO-0001></RBWAUTO-0001
  41228. ><!--
  41229.  
  41230.  
  41231.  
  41232.  
  41233.  
  41234. CONVERTING SOURCE FILE ../../sources/ada/adaconfg.fm5.mif
  41235.  
  41236.  
  41237. --><B.BODY></B.BODY
  41238. ><B.BODY></B.BODY
  41239. ><B.BODY></B.BODY
  41240. ><B.BODY></B.BODY
  41241. ><B.BODY></B.BODY
  41242. ></LABEL
  41243. ></SECTION
  41244. ></CHAPTER
  41245. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 8&rbwtab;</CX5FX5FZCHAPTER.NUM
  41246. ></RBW-AUTOGEN
  41247. >Configuring <RBW-ANCHOR ID="21577"></RBW-ANCHOR
  41248. >the APDT Code Generators<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  41249. ><RBW-TEXTFLD TYPE="text">Object Team - Ada Professional Developers Toolkit</RBW-TEXTFLD
  41250. ></RBW-SYSOBJ
  41251. ></C.CHAPTER.HEAD
  41252. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41253. >Introduction</L.LABEL
  41254. ><B.BODY>This chapter explains the standard way to control various options of the APDT Code Generators. </B.BODY
  41255. ><B.BODY>To control certain aspects of the working environment, ObjectTeam maintains a set of environment variables. They are referred to as <RBWAUTO-0007>M4 variables</RBWAUTO-0007
  41256. > because they all begin with the string <RBWAUTO-0007>M4_</RBWAUTO-0007
  41257. >.</B.BODY
  41258. ><B.BODY>You can specify the values of the M4 variables in an m4env file. ObjectTeam maintains a copy of the m4env file at the Corporate level. By creating an m4env customization file at Project, Configuration, Phase, or System level (or a MetaUserEnv file in your home directory), you can override the Corporate&truehy;level values of M4 variables.</B.BODY
  41259. ><B.BODY>System environment variables in (Unix or Windows NT) may also be used to specify target languages, however these settings will only take effect for ObjectTeam sessions begun after the variables are set</B.BODY
  41260. ><B.BODY>For more information: See the <RBWAUTO-0007>ObjectTeam Customization Guide</RBWAUTO-0007
  41261. > for more information about M4 variables and m4env and Meta4UserEnv files.</B.BODY
  41262. ><B.BODY>The APDT adapts its behavior based on the settings of several M4 variables. Most of these variables are common to Ada 83 and Ada 95, but some are language specific. Variables are used to configure code generation, synchronous engineering, and reverse&truehy;engineering. This section describes only those controlling code generation.</B.BODY
  41263. ><B.BODY>After changing any of these variables you must exit and reopen the level (e.g. Corporate, Project, Version, Phase) that you set the variable. The new settings will then be used.</B.BODY
  41264. ><B.BODY>This chapter contains the following sections:</B.BODY
  41265. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  41266. ></ENTRY
  41267. ></RBW-ROW
  41268. ></THEAD
  41269. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35911" TYPE="XREF-TEXTCOPY">Code Generation M4 Variables&rbwtab;8–2</RBW-XREF
  41270. ></SB.SECTION.BLOCK.TABLE
  41271. ></ENTRY
  41272. ></RBW-ROW
  41273. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39536" TYPE="XREF-TEXTCOPY">Customized Data Types&rbwtab;8–4</RBW-XREF
  41274. ></SB.SECTION.BLOCK.TABLE
  41275. ></ENTRY
  41276. ></RBW-ROW
  41277. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24556" TYPE="XREF-TEXTCOPY">Where Code Generator Files are Stored&rbwtab;8–9</RBW-XREF
  41278. ></SB.SECTION.BLOCK.TABLE
  41279. ></ENTRY
  41280. ></RBW-ROW
  41281. ></TBODY
  41282. ></TGROUP
  41283. ></RBW-TABLE
  41284. ></LABEL
  41285. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35911"></RBW-ANCHOR
  41286. >Code Generation M4 Variables</S.SECTION.HEAD
  41287. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41288. >Introduction</L.LABEL
  41289. ><B.BODY>The APDT code generator can be configured to control the types of Ada 83 or Ada 95 files being generated, including:</B.BODY
  41290. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41291. ></RBW-AUTOGEN
  41292. ></RBW-MARKER
  41293. ><RBW-PARABODY>Sub&truehy;unit files</RBW-PARABODY
  41294. ></LB.LIST.BULLET
  41295. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41296. ></RBW-AUTOGEN
  41297. ></RBW-MARKER
  41298. ><RBW-PARABODY>Prefixes, extensions, and file names</RBW-PARABODY
  41299. ></LB.LIST.BULLET
  41300. ></LABEL
  41301. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41302. >Common M4 Variables </L.LABEL
  41303. ><B.BODY>The following table lists M4 variables common to Ada 83 and Ada 95 Code Generation.</B.BODY
  41304. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="297p"><COLSPEC COLNAME="2" COLWIDTH="328p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  41305. ></ENTRY
  41306. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Use</CELLHEADING
  41307. ></ENTRY
  41308. ></RBW-ROW
  41309. ></THEAD
  41310. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada95_Generate_Subunit_Files</CELLBODY
  41311. ><CELLBODY>M4_Ada83_Generate_Subunit_Files</CELLBODY
  41312. ></ENTRY
  41313. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Possible values are On or Off. The default is Off. When set to On the APDT code generator will generate separate files for each procedure generated from a class.</CELLBODY
  41314. ></ENTRY
  41315. ></RBW-ROW
  41316. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Class_Record_Type_Name</CELLBODY
  41317. ><CELLBODY>M4_Ada95_Class_Record_Type_Name</CELLBODY
  41318. ><CELLBODY></CELLBODY
  41319. ></ENTRY
  41320. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Used as the name of the primary type of which a class implementing package is built around. May be set to a text string building a valid Ada 83/95 type name. The default value is “Instance”. </CELLBODY
  41321. ><CELLBODY><CX5FX5FTERM>Tip</CX5FX5FTERM
  41322. >: Changing this variable (and other M4 variables controlling names in code generation) could break previously generated code (which used prior settings of the variable).</CELLBODY
  41323. ></ENTRY
  41324. ></RBW-ROW
  41325. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Class_Access_Type_Name</CELLBODY
  41326. ><CELLBODY>M4_Ada95_Class_Access_Type_Name </CELLBODY
  41327. ><CELLBODY></CELLBODY
  41328. ></ENTRY
  41329. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Used as the name of type created to provide an access type to a major class type. May be set to any valid Ada 83/95 type name. The default is “Link”.</CELLBODY
  41330. ></ENTRY
  41331. ></RBW-ROW
  41332. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Opaque_Record_Type_Name</CELLBODY
  41333. ><CELLBODY>M4_Ada95_Opaque_Record_Type_Name </CELLBODY
  41334. ><CELLBODY></CELLBODY
  41335. ></ENTRY
  41336. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Used as the name of the type hidden in the private section of an Ada package when the class attributes are set to Private. May be set to any valid Ada 83/95 type name. The default is “Data”.</CELLBODY
  41337. ></ENTRY
  41338. ></RBW-ROW
  41339. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Class_Record_Inh_Attrib_Ext</CELLBODY
  41340. ><CELLBODY>M4_Ada95_Class_Record_Inh_Attrib_Ext</CELLBODY
  41341. ></ENTRY
  41342. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the postfix of the component name used to implement Inheritance. May be set to any value building a valid Ada 83/95 variable name. The default value is “_Inh”.</CELLBODY
  41343. ></ENTRY
  41344. ></RBW-ROW
  41345. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Unordered_Assoc_Generic_Package_Name</CELLBODY
  41346. ><CELLBODY>M4_Ada95_Unordered_Assoc_Generic_Package_Name</CELLBODY
  41347. ></ENTRY
  41348. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Holds the name of the generic Ada package that will be instantiated to provide Unordered access to a class record. May be set to any valid Ada package name. The default is “Generic_Unordered_Set”. Used when the code generator is mapping Associations to Ada code.</CELLBODY
  41349. ></ENTRY
  41350. ></RBW-ROW
  41351. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Unordered_Assoc_Type_Name</CELLBODY
  41352. ><CELLBODY>M4_Ada95_Unordered_Assoc_Type_Name</CELLBODY
  41353. ></ENTRY
  41354. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Used as the name of the type implementing unordered sets. May be set to any valid Ada type name. The default is “Unordered_Set”. Used when the code generator is mapping Associations to Ada code.</CELLBODY
  41355. ></ENTRY
  41356. ></RBW-ROW
  41357. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Ordered_Assoc_Generic_Package_Name</CELLBODY
  41358. ><CELLBODY>M4_Ada95_Ordered_Assoc_Generic_Package_Name</CELLBODY
  41359. ></ENTRY
  41360. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the name of the generic Ada package implementing ordered set access. May be set to any valid Ada package name. The default is “Generic_Ordered_Set”. Used when the code generator is mapping Associations to Ada code.</CELLBODY
  41361. ></ENTRY
  41362. ></RBW-ROW
  41363. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Ordered_Assoc_Type_Name</CELLBODY
  41364. ><CELLBODY>M4_Ada95_Ordered_Assoc_Type_Name </CELLBODY
  41365. ></ENTRY
  41366. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Used as the name of the type implementing ordered set access to a class record. May be set to any valid Ada type name. The default is “Ordered_Set”. Used when the code generator is mapping Associations to Ada code.</CELLBODY
  41367. ></ENTRY
  41368. ></RBW-ROW
  41369. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Qualified_Assoc_Generic_Package_Name</CELLBODY
  41370. ><CELLBODY>M4_Ada95_Qualified_Assoc_Generic_Package_Name</CELLBODY
  41371. ></ENTRY
  41372. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The name of the package used to provide qualfied assocation capabilities for the code generator. May be set to any valid Ada package name. The default is “Generic_Dictionary”.</CELLBODY
  41373. ></ENTRY
  41374. ></RBW-ROW
  41375. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Qualified_Assoc_Type_Name </CELLBODY
  41376. ><CELLBODY>M4_Ada95_Qualified_Assoc_Type_Name </CELLBODY
  41377. ></ENTRY
  41378. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Holds the type name used by the code generator when creating code for qualified associations. May contain any valid Ada type name. The default name is “Dictionary”.</CELLBODY
  41379. ></ENTRY
  41380. ></RBW-ROW
  41381. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Alt_Link_Class_Ext</CELLBODY
  41382. ><CELLBODY>M4_Ada95_Alt_Link_Class_Ext</CELLBODY
  41383. ></ENTRY
  41384. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Used as the postfix to a class name when generating associations with link attributes. May be set to any text building a valid Ada package name. The default is “_Alt”.</CELLBODY
  41385. ></ENTRY
  41386. ></RBW-ROW
  41387. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_ada_tmpdir</CELLBODY
  41388. ></ENTRY
  41389. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Defines where temporary files are placed during APDT operation. The default for Unix is /var/tmp. </CELLBODY
  41390. ></ENTRY
  41391. ></RBW-ROW
  41392. ></TBODY
  41393. ></TGROUP
  41394. ><RBW-ICONIZE></RBW-TABLE
  41395. ></LABEL
  41396. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41397. >Ada 83 Only Code Generation Variables</L.LABEL
  41398. ><BI.BODY.INTRO>The following table lists M4 variables for Ada 83 only:</BI.BODY.INTRO
  41399. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="304p"><COLSPEC COLNAME="2" COLWIDTH="322p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Variable</CELLHEADING
  41400. ></ENTRY
  41401. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Use</CELLHEADING
  41402. ></ENTRY
  41403. ></RBW-ROW
  41404. ></THEAD
  41405. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Generate_Polymorphism</CELLBODY
  41406. ></ENTRY
  41407. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Possible values are On or Off. The default is Off. When set to On the Ada 83 code generator will generate code providing polymorphism.</CELLBODY
  41408. ></ENTRY
  41409. ></RBW-ROW
  41410. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>M4_Ada83_Polymorphism_Prefix</CELLBODY
  41411. ></ENTRY
  41412. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Any text string building a valid Ada 83 package name may be set. This string is appended to generated package’s name as a way to implement polymorphism in Ada 83. The default value is “Any_”. Has no effect if M4_Ada83_Generate Polymorphism is set to “Off”.</CELLBODY
  41413. ></ENTRY
  41414. ></RBW-ROW
  41415. ></TBODY
  41416. ></TGROUP
  41417. ><RBW-ICONIZE></RBW-TABLE
  41418. ></LABEL
  41419. ></SECTION
  41420. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="39536"></RBW-ANCHOR
  41421. >Customized Data Types</S.SECTION.HEAD
  41422. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41423. >Introduction</L.LABEL
  41424. ><B.BODY>It’s quite common and desirable to customize your ObjectTeam design environment to reflect the kinds of types your application will be using, or that are used throughout your organization.</B.BODY
  41425. ><B.BODY>To do this you create a stand_types.stand_types customization file. This file makes the new types available in the ObectTeam design model.</B.BODY
  41426. ><B.BODY>The second step is to create a lang_types.lang_types customization file. This file tells the code generator how to map the standard types from the stand_types.stand_types file onto Ada83 or Ada95 types.</B.BODY
  41427. ><B.BODY>The default stand_types.stand_types and lang_types.lang_types files are stored in the etc directory of the <RBWAUTO-0007>Ada83 </RBWAUTO-0007
  41428. >or<RBWAUTO-0007> Ada95</RBWAUTO-0007
  41429. > module. You can add new standard types or override existing ones.</B.BODY
  41430. ><B.BODY>All customization files of this type are read incrementally, which means that you only have to include the standard types that you want to add to the current set of standard types and the ones you want to override.</B.BODY
  41431. ><B.BODY>You can store your stand_types.stand_types and lang_types.lang_types files in the following locations:</B.BODY
  41432. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41433. ></RBW-AUTOGEN
  41434. ></RBW-MARKER
  41435. ><RBW-PARABODY>Repository: open the pseudo object <customization files> at the Browser level of your choice and store the files here.</RBW-PARABODY
  41436. ></LB.LIST.BULLET
  41437. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41438. ></RBW-AUTOGEN
  41439. ></RBW-MARKER
  41440. ><RBW-PARABODY>Module: store them in the etc directory of a user&truehy;defined module</RBW-PARABODY
  41441. ></LB.LIST.BULLET
  41442. ><B.BODY>See <RBWAUTO-0007>ObjectTeam Customization Guide</RBWAUTO-0007
  41443. > for details on user&truehy;defined modules.</B.BODY
  41444. ></LABEL
  41445. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41446. ><RBW-ANCHOR ID="13216"></RBW-ANCHOR
  41447. >Format of the standard types file</L.LABEL
  41448. ><B.BODY>Here is an example of the Ada 95 default stand_types.stand_types file as shipped with the APDT.</B.BODY
  41449. ><B.BODY>The columns Min 1, Max 1, and Min 2, and Max 2 may be used to specify constraints on array size or format values of the standard types.</B.BODY
  41450. ><EWM.EXAMPLEW.MONO>#######################################################################</EWM.EXAMPLEW.MONO
  41451. ><EWM.EXAMPLEW.MONO>##</EWM.EXAMPLEW.MONO
  41452. ><EWM.EXAMPLEW.MONO>##  Copyright (c) 1997 by Cayenne Software, Inc.</EWM.EXAMPLEW.MONO
  41453. ><EWM.EXAMPLEW.MONO>##</EWM.EXAMPLEW.MONO
  41454. ><EWM.EXAMPLEW.MONO>##  This software is furnished under a license and may be used only in</EWM.EXAMPLEW.MONO
  41455. ><EWM.EXAMPLEW.MONO>##  accordance with the terms of such license and with the inclusion of</EWM.EXAMPLEW.MONO
  41456. ><EWM.EXAMPLEW.MONO>##  the above copyright notice. This software or any other copies thereof</EWM.EXAMPLEW.MONO
  41457. ><EWM.EXAMPLEW.MONO>##  may not be provided or otherwise made available to any other person.</EWM.EXAMPLEW.MONO
  41458. ><EWM.EXAMPLEW.MONO>##  No title to and ownership of the software is hereby transferred.</EWM.EXAMPLEW.MONO
  41459. ><EWM.EXAMPLEW.MONO>##</EWM.EXAMPLEW.MONO
  41460. ><EWM.EXAMPLEW.MONO>##  The information in this software is subject to change without notice</EWM.EXAMPLEW.MONO
  41461. ><EWM.EXAMPLEW.MONO>##  and should not be construed as a commitment by Cayenne Software, Inc.</EWM.EXAMPLEW.MONO
  41462. ><EWM.EXAMPLEW.MONO>##</EWM.EXAMPLEW.MONO
  41463. ><EWM.EXAMPLEW.MONO>###########################################################################</EWM.EXAMPLEW.MONO
  41464. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  41465. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  41466. ><EWM.EXAMPLEW.MONO># StandardType        | Min 1 | Max 1 | Min 2 | Max 2</EWM.EXAMPLEW.MONO
  41467. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  41468. ><EWM.EXAMPLEW.MONO>BOOLEAN               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41469. ><EWM.EXAMPLEW.MONO>Boolean               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41470. ><EWM.EXAMPLEW.MONO>boolean               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41471. ><EWM.EXAMPLEW.MONO>CHARACTER             |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41472. ><EWM.EXAMPLEW.MONO>Character             |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41473. ><EWM.EXAMPLEW.MONO>character             |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41474. ><EWM.EXAMPLEW.MONO>FLOAT                 |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41475. ><EWM.EXAMPLEW.MONO>Float                 |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41476. ><EWM.EXAMPLEW.MONO>float                 |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41477. ><EWM.EXAMPLEW.MONO>Instance              |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41478. ><EWM.EXAMPLEW.MONO>INSTANCE              |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41479. ><EWM.EXAMPLEW.MONO>instance              |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41480. ><EWM.EXAMPLEW.MONO>INTEGER               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41481. ><EWM.EXAMPLEW.MONO>Integer               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41482. ><EWM.EXAMPLEW.MONO>integer               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41483. ><EWM.EXAMPLEW.MONO>LINK                  |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41484. ><EWM.EXAMPLEW.MONO>Link                  |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41485. ><EWM.EXAMPLEW.MONO>link                  |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41486. ><EWM.EXAMPLEW.MONO>NATURAL               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41487. ><EWM.EXAMPLEW.MONO>Natural               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41488. ><EWM.EXAMPLEW.MONO>natural               |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41489. ><EWM.EXAMPLEW.MONO>POSITIVE              |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41490. ><EWM.EXAMPLEW.MONO>Positive              |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41491. ><EWM.EXAMPLEW.MONO>positive              |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41492. ><EWM.EXAMPLEW.MONO>STRING                |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41493. ><EWM.EXAMPLEW.MONO>String                |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41494. ><EWM.EXAMPLEW.MONO>string                |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41495. ><EWM.EXAMPLEW.MONO>ENUM                  |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41496. ><EWM.EXAMPLEW.MONO>Enum                  |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41497. ><EWM.EXAMPLEW.MONO>enum                  |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  41498. ></LABEL
  41499. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41500. >Format of the language types file</L.LABEL
  41501. ><B.BODY>The lang_types.lang_types file is used to tell the code generator how to map your new type into its target language.</B.BODY
  41502. ><B.BODY>Below is the standard lang_types file, as shipped with this version of the APDT. The Standard Type column maps to the name of the type in the stand_types file. The Ada Type column is the type name to use when generating Ada code. The Range column is an optional modifier you can place on the type definition. It follows the Ada range syntax.</B.BODY
  41503. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  41504. ><EWM.EXAMPLEW.MONO># Standard type       | Ada type      | range</EWM.EXAMPLEW.MONO
  41505. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  41506. ><EWM.EXAMPLEW.MONO>BOOLEAN               | BOOLEAN       | *</EWM.EXAMPLEW.MONO
  41507. ><EWM.EXAMPLEW.MONO>Boolean               | Boolean       | *</EWM.EXAMPLEW.MONO
  41508. ><EWM.EXAMPLEW.MONO>boolean               | boolean       | *</EWM.EXAMPLEW.MONO
  41509. ><EWM.EXAMPLEW.MONO>CHARACTER             | CHARACTER     | *</EWM.EXAMPLEW.MONO
  41510. ><EWM.EXAMPLEW.MONO>Character             | Character     | *</EWM.EXAMPLEW.MONO
  41511. ><EWM.EXAMPLEW.MONO>character             | character     | *</EWM.EXAMPLEW.MONO
  41512. ><EWM.EXAMPLEW.MONO>FLOAT                 | FLOAT         | *</EWM.EXAMPLEW.MONO
  41513. ><EWM.EXAMPLEW.MONO>Float                 | Float         | *</EWM.EXAMPLEW.MONO
  41514. ><EWM.EXAMPLEW.MONO>float                 | float         | *</EWM.EXAMPLEW.MONO
  41515. ><EWM.EXAMPLEW.MONO>INSTANCE              | INSTANCE      | *</EWM.EXAMPLEW.MONO
  41516. ><EWM.EXAMPLEW.MONO>Instance              | Instance      | *</EWM.EXAMPLEW.MONO
  41517. ><EWM.EXAMPLEW.MONO>instance              | instance      | *</EWM.EXAMPLEW.MONO
  41518. ><EWM.EXAMPLEW.MONO>INTEGER               | INTEGER       | *</EWM.EXAMPLEW.MONO
  41519. ><EWM.EXAMPLEW.MONO>Integer               | Integer       | *</EWM.EXAMPLEW.MONO
  41520. ><EWM.EXAMPLEW.MONO>integer               | integer       | *</EWM.EXAMPLEW.MONO
  41521. ><EWM.EXAMPLEW.MONO>LINK                  | LINK          | *</EWM.EXAMPLEW.MONO
  41522. ><EWM.EXAMPLEW.MONO>Link                  | Link          | *</EWM.EXAMPLEW.MONO
  41523. ><EWM.EXAMPLEW.MONO>link                  | link          | *</EWM.EXAMPLEW.MONO
  41524. ><EWM.EXAMPLEW.MONO>NATURAL               | NATURAL       | *</EWM.EXAMPLEW.MONO
  41525. ><EWM.EXAMPLEW.MONO>Natural               | Natural       | *</EWM.EXAMPLEW.MONO
  41526. ><EWM.EXAMPLEW.MONO>natural               | natural       | *</EWM.EXAMPLEW.MONO
  41527. ><EWM.EXAMPLEW.MONO>POSITIVE              | POSITIVE      | *</EWM.EXAMPLEW.MONO
  41528. ><EWM.EXAMPLEW.MONO>Positive              | Positive      | *</EWM.EXAMPLEW.MONO
  41529. ><EWM.EXAMPLEW.MONO>positive              | positive      | *</EWM.EXAMPLEW.MONO
  41530. ><EWM.EXAMPLEW.MONO>STRING                | STRING        | *</EWM.EXAMPLEW.MONO
  41531. ><EWM.EXAMPLEW.MONO>String                | String        | *</EWM.EXAMPLEW.MONO
  41532. ><EWM.EXAMPLEW.MONO>string                | string        | *</EWM.EXAMPLEW.MONO
  41533. ><EWM.EXAMPLEW.MONO>enum                  | enum          | *</EWM.EXAMPLEW.MONO
  41534. ><EWM.EXAMPLEW.MONO>Enum                  | Enum          | *</EWM.EXAMPLEW.MONO
  41535. ><EWM.EXAMPLEW.MONO>ENUM                  | ENUM          | *</EWM.EXAMPLEW.MONO
  41536. ></LABEL
  41537. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41538. >How to add a new standard type</L.LABEL
  41539. ><B.BODY>In this example, we will add a new standard type “Atomic_Time” and make it available first for ObjectTeam design use and and then for Ada code generation.</B.BODY
  41540. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  41541. ></RBW-AUTOGEN
  41542. ></RBW-MARKER
  41543. ><RBW-PARABODY>To add a new standard type:</RBW-PARABODY
  41544. ></P.PROCEDURE
  41545. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  41546. ></RBW-AUTOGEN
  41547. ></RBW-MARKER
  41548. ><RBW-PARABODY>In the Browser, move to the level on which you wish to make this new type available. </RBW-PARABODY
  41549. ></LN.LIST.NUM
  41550. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  41551. ></RBW-AUTOGEN
  41552. ></RBW-MARKER
  41553. ><RBW-PARABODY>In the Navigation area, select the Customization file on this level.</RBW-PARABODY
  41554. ></LN.LIST.NUM
  41555. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00406.unk" origfile="pics/custtyp1.gif" origtype="X" origdoc="../../sources/ada/adaconfg.fm5.mif"></RBW-GRAPHIC
  41556. ></FA2.FIGURE.ANCHOR.2
  41557. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  41558. ></RBW-AUTOGEN
  41559. ></RBW-MARKER
  41560. ><RBW-PARABODY>Select File | New | Customization File Version.</RBW-PARABODY
  41561. ></LN.LIST.NUM
  41562. ><LR.LIST.RESULT>The New Customization File dialog appears.</LR.LIST.RESULT
  41563. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  41564. ></RBW-AUTOGEN
  41565. ></RBW-MARKER
  41566. ><RBW-PARABODY>Enter <CX5FX5FINPUT>stand_types.stand_types</CX5FX5FINPUT
  41567. > in the entry field (it is not among the list of default customization files) and select Edit.</RBW-PARABODY
  41568. ></LN.LIST.NUM
  41569. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00407.unk" origfile="pics/custtyp2.gif" origtype="X" origdoc="../../sources/ada/adaconfg.fm5.mif"></RBW-GRAPHIC
  41570. ></FA2.FIGURE.ANCHOR.2
  41571. ><LR.LIST.RESULT>An empty file appears in the default text editor.</LR.LIST.RESULT
  41572. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  41573. ></RBW-AUTOGEN
  41574. ></RBW-MARKER
  41575. ><RBW-PARABODY>Add the new type “Atomic_Time” using the format described in <RBW-XREF REFID="13216" TYPE="XREF-TEXTCOPY">Format of the standard types file</RBW-XREF
  41576. ></RBW-PARABODY
  41577. ></LN.LIST.NUM
  41578. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00408.unk" origfile="pics/custtyp3.gif" origtype="X" origdoc="../../sources/ada/adaconfg.fm5.mif"></RBW-GRAPHIC
  41579. ></FA.FIGURE.ANCHOR
  41580. ><B.BODY>After exiting, you should change Browser level and re&truehy;enter. If you created the new stand_types file on Corporate level, then restart your ObjectTeam Browser.</B.BODY
  41581. ></LABEL
  41582. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41583. >Making the new type available for Code Generation</L.LABEL
  41584. ><B.BODY>In order to make this new “Atomic_Time” type available to the code generator you have to perform a similar procedure, but on the <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  41585. > file.</B.BODY
  41586. ><B.BODY>All procedures are the same, except you specify a new <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  41587. > file when creating a new Customization File Version. In the file, insert this line:</B.BODY
  41588. ><E.EXAMPLE>Atomic_Time | Atomic_Clock.Time_Field | *</E.EXAMPLE
  41589. ><B.BODY>Save the file, and close and re&truehy;enter that level (or re&truehy;start the Browser).</B.BODY
  41590. ></LABEL
  41591. ></SECTION
  41592. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="24556"></RBW-ANCHOR
  41593. >Where Code Generator Files are Stored</S.SECTION.HEAD
  41594. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41595. >Introduction</L.LABEL
  41596. ><B.BODY>The APDT code generators can create quite a few Ada source files. </B.BODY
  41597. ><B.BODY>The names of the source files generated are based on the Class and Attribute names used in the Object Design. You can however control the file extensions used. You may also specify what directory the resulting files are stored in.</B.BODY
  41598. ></LABEL
  41599. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41600. >Changing output file extensions</L.LABEL
  41601. ><B.BODY>You can change the default extensions of the specification, body, and subunit files by editing the <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  41602. > customization file. As with adding a new type, you do this at the level you wish this change to apply to.</B.BODY
  41603. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  41604. ></RBW-AUTOGEN
  41605. >Only change extensions immediately after selecting your Ada target language, or after deleting all generated files (in a System Implementation).</N.NOTE
  41606. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  41607. ></RBW-AUTOGEN
  41608. ></RBW-MARKER
  41609. ><RBW-PARABODY>To change output file extensions:</RBW-PARABODY
  41610. ></P.PROCEDURE
  41611. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  41612. ></RBW-AUTOGEN
  41613. ></RBW-MARKER
  41614. ><RBW-PARABODY>In the Navigation area of the Browser, select <customization files>.</RBW-PARABODY
  41615. ></LN.LIST.NUM
  41616. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  41617. ></RBW-AUTOGEN
  41618. ></RBW-MARKER
  41619. ><RBW-PARABODY>Select File | New | Customization File Version.</RBW-PARABODY
  41620. ></LN.LIST.NUM
  41621. ><LR.LIST.RESULT>The New Customization File dialog appears.</LR.LIST.RESULT
  41622. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  41623. ></RBW-AUTOGEN
  41624. ></RBW-MARKER
  41625. ><RBW-PARABODY>Click on <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  41626. > and select Edit.</RBW-PARABODY
  41627. ></LN.LIST.NUM
  41628. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00409.unk" origfile="pics/custext1.gif" origtype="X" origdoc="../../sources/ada/adaconfg.fm5.mif"></RBW-GRAPHIC
  41629. ></FA2.FIGURE.ANCHOR.2
  41630. ><LR.LIST.RESULT>The ObjectTypes Customization Editor opens.</LR.LIST.RESULT
  41631. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  41632. ></RBW-AUTOGEN
  41633. ></RBW-MARKER
  41634. ><RBW-PARABODY>Scroll to the ExternalFileVersion entries and select one of them.</RBW-PARABODY
  41635. ></LN.LIST.NUM
  41636. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00410.unk" origfile="pics/custext2.gif" origtype="X" origdoc="../../sources/ada/adaconfg.fm5.mif"></RBW-GRAPHIC
  41637. ></FAR.FIGURE.ANCHOR.RIGHT
  41638. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  41639. ></RBW-AUTOGEN
  41640. ></RBW-MARKER
  41641. ><RBW-PARABODY>Select Edit | Redefine.</RBW-PARABODY
  41642. ></LN.LIST.NUM
  41643. ><LR.LIST.RESULT>The Editor dialog appears.</LR.LIST.RESULT
  41644. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  41645. ></RBW-AUTOGEN
  41646. ></RBW-MARKER
  41647. ><RBW-PARABODY>Select the Interface tab.</RBW-PARABODY
  41648. ></LN.LIST.NUM
  41649. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00411.unk" origfile="pics/custext3.gif" origtype="X" origdoc="../../sources/ada/adaconfg.fm5.mif"></RBW-GRAPHIC
  41650. ></FA2.FIGURE.ANCHOR.2
  41651. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  41652. ></RBW-AUTOGEN
  41653. ></RBW-MARKER
  41654. ><RBW-PARABODY>Enter the new file extension, e.g. <CX5FX5FINPUT>adb</CX5FX5FINPUT
  41655. > and select OK.</RBW-PARABODY
  41656. ></LN.LIST.NUM
  41657. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  41658. ></RBW-AUTOGEN
  41659. ></RBW-MARKER
  41660. ><RBW-PARABODY>In the Customization editor, select File | Save to exit to the ObjectTeam Browser.</RBW-PARABODY
  41661. ></LN.LIST.NUM
  41662. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  41663. ></RBW-AUTOGEN
  41664. ></RBW-MARKER
  41665. ><RBW-PARABODY>To activate your customization, move up a level in the Browser and back to the level on which you created the customization file. If you edited the file at the Corporate level, restart the Browser.</RBW-PARABODY
  41666. ></LN.LIST.NUM
  41667. ></LABEL
  41668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41669. >Setting the Output Directory</L.LABEL
  41670. ><B.BODY>The default output directory is in your home directory under the corporate directory (by default <CX5FX5FFILE.NAME>repos</CX5FX5FFILE.NAME
  41671. >; the corporate directory in your installation may be named differently). A tree is then generated under this:</B.BODY
  41672. ><E.EXAMPLE>CorpRoot: ProjectName: ConfigName: Implementation: SystemName</E.EXAMPLE
  41673. ><B.BODY>where all but Implementation are the names you specified when creating the Project in the ObjectTeam Browser.</B.BODY
  41674. ><B.BODY>You can change this however by editing the properties of the Implementation phase object.</B.BODY
  41675. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  41676. ></RBW-AUTOGEN
  41677. ></RBW-MARKER
  41678. ><RBW-PARABODY>To set the output directory:</RBW-PARABODY
  41679. ></P.PROCEDURE
  41680. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  41681. ></RBW-AUTOGEN
  41682. ></RBW-MARKER
  41683. ><RBW-PARABODY>In the Navigation area, select the Implementation phase object. </RBW-PARABODY
  41684. ></LN.LIST.NUM
  41685. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00412.unk" origfile="pics/custpth1.gif" origtype="X" origdoc="../../sources/ada/adaconfg.fm5.mif"></RBW-GRAPHIC
  41686. ></FA2.FIGURE.ANCHOR.2
  41687. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  41688. ></RBW-AUTOGEN
  41689. ></RBW-MARKER
  41690. ><RBW-PARABODY>Select File | Properties | Edit. </RBW-PARABODY
  41691. ></LN.LIST.NUM
  41692. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  41693. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  41694. ></RBW-AUTOGEN
  41695. ></RBW-MARKER
  41696. ><RBW-PARABODY>Edit the path variable under the Misc tab.</RBW-PARABODY
  41697. ></LN.LIST.NUM
  41698. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00413.unk" origfile="pics/custpth2.gif" origtype="X" origdoc="../../sources/ada/adaconfg.fm5.mif"></RBW-GRAPHIC
  41699. ></FA2.FIGURE.ANCHOR.2
  41700. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  41701. ></RBW-AUTOGEN
  41702. ></RBW-MARKER
  41703. ><RBW-PARABODY>Click OK to save your changes, then change the level or restart the Browser.</RBW-PARABODY
  41704. ></LN.LIST.NUM
  41705. ><B.BODY>Future generated code will use a tree beginning in the path specified. For example, using the example in the figure above, generated Ada code would be output to a tree such as /usr/OrderFulfillment/main_system/CD.ads.</B.BODY
  41706. ><RBWAUTO-0001></RBWAUTO-0001
  41707. ><!--
  41708.  
  41709.  
  41710.  
  41711.  
  41712.  
  41713. CONVERTING SOURCE FILE ../../sources/cpp/cppbk.mif
  41714.  
  41715.  
  41716. --><B.BODY></B.BODY
  41717. ><B.BODY></B.BODY
  41718. ><B.BODY></B.BODY
  41719. ><B.BODY></B.BODY
  41720. ><B.BODY></B.BODY
  41721. ></LABEL
  41722. ></SECTION
  41723. ></CHAPTER
  41724. ></BOOK
  41725. ><BOOK><BH.BOOK.HEAD>C++ Code Generation Guide</BH.BOOK.HEAD
  41726. ><!--
  41727.  
  41728.  
  41729.  
  41730.  
  41731.  
  41732. CONVERTING SOURCE FILE ../../sources/cpp/cpppref.fm5.mif
  41733.  
  41734.  
  41735. --><B.BODY></B.BODY
  41736. ><B.BODY></B.BODY
  41737. ><B.BODY></B.BODY
  41738. ><B.BODY></B.BODY
  41739. ><B.BODY></B.BODY
  41740. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  41741. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  41742. ></RBW-SYSOBJ
  41743. ></CN.CHAPTER.NOX23
  41744. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41745. >About this manual</L.LABEL
  41746. ><B.BODY>ObjectTeam provides code generation tools that enable you to generate object&truehy;oriented code for a range of object&truehy;oriented programming languages. This guide focuses on C++ as target language. </B.BODY
  41747. ><B.BODY>This manual explains the following things:</B.BODY
  41748. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41749. ></RBW-AUTOGEN
  41750. ></RBW-MARKER
  41751. ><RBW-PARABODY>Which steps to take to generate C++ code</RBW-PARABODY
  41752. ></LB.LIST.BULLET
  41753. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41754. ></RBW-AUTOGEN
  41755. ></RBW-MARKER
  41756. ><RBW-PARABODY>How certain constructions in the Class Diagrams (CDs) are translated into C++ code</RBW-PARABODY
  41757. ></LB.LIST.BULLET
  41758. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41759. ></RBW-AUTOGEN
  41760. ></RBW-MARKER
  41761. ><RBW-PARABODY>How you use reverse and round&truehy;trip engineering</RBW-PARABODY
  41762. ></LB.LIST.BULLET
  41763. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  41764. ></RBW-AUTOGEN
  41765. ></RBW-MARKER
  41766. ><RBW-PARABODY>How you can customize the default code generation process</RBW-PARABODY
  41767. ></LB.LIST.BULLET
  41768. ></LABEL
  41769. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41770. >Prerequisites</L.LABEL
  41771. ><B.BODY>This book assumes a basic knowledge of ObjectTeam, including familiarity with the information provided in the <CX5FX5FTITLE><CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  41772. ></CX5FX5FTITLE
  41773. > and <CX5FX5FTITLE><CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  41774. ></CX5FX5FTITLE
  41775. >. </B.BODY
  41776. ><B.BODY>Furthermore, knowledge of C++ is necessary to understand the C++ constructions generated from the CD. You also need this knowledge to complete the generated source files.</B.BODY
  41777. ><B.BODY>If you plan to customize the default code generation process, you should be familiar with Tcl and the object&truehy;oriented extensions to Tcl supplied with ObjectTeam. For details on Object Tcl, refer to the <CX5FX5FTITLE><CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  41778. ></CX5FX5FTITLE
  41779. >.</B.BODY
  41780. ><RBWAUTO-0001></RBWAUTO-0001
  41781. ><!--
  41782.  
  41783.  
  41784.  
  41785.  
  41786.  
  41787. CONVERTING SOURCE FILE ../../sources/cpp/cppobjd.fm5.mif
  41788.  
  41789.  
  41790. --><B.BODY></B.BODY
  41791. ><B.BODY></B.BODY
  41792. ><B.BODY></B.BODY
  41793. ><B.BODY></B.BODY
  41794. ><B.BODY></B.BODY
  41795. ></LABEL
  41796. ></CHAPTERNONUM
  41797. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  41798. ></RBW-AUTOGEN
  41799. >Preparing <RBW-ANCHOR ID="19089"></RBW-ANCHOR
  41800. >Your ObjectTeam Model for Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  41801. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  41802. ></RBW-SYSOBJ
  41803. ></C.CHAPTER.HEAD
  41804. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41805. >Introduction</L.LABEL
  41806. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  41807. ><CX5FX5FTITLE></CX5FX5FTITLE
  41808. >, you model the system without regard to the implementation environment.</B.BODY
  41809. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  41810. ></LABEL
  41811. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41812. >C++ module required</L.LABEL
  41813. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>C++ Code Generation</CX5FX5FEMPHASIS
  41814. > provides the menu items, the properties and the Tcl code required to use the C++ Code Generator. Therefore, before moving to the Object Design phase, make sure this module is active.</B.BODY
  41815. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  41816. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41817. >For more information</SL.SUBLABEL
  41818. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  41819. ><CX5FX5FTITLE></CX5FX5FTITLE
  41820. > for details on how to activate a module.</B.BODY
  41821. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41822. >Required modules</SL.SUBLABEL
  41823. ><B.BODY>The module <CX5FX5FEMPHASIS>C++ Code Generation</CX5FX5FEMPHASIS
  41824. > requires one module of type DevelEnv, and one or more of type CppClasslib. You select these modules from a dialog box, after you select the module <CX5FX5FEMPHASIS>C++ Code Generation</CX5FX5FEMPHASIS
  41825. >.</B.BODY
  41826. ><B.BODY>These are the modules required to run C++ Code generation.</B.BODY
  41827. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00414.tif" origseq="1" origtype="I" origdoc="../../sources/cpp/cppobjd.fm5.mif"></RBW-GRAPHIC
  41828. ></FA.FIGURE.ANCHOR
  41829. ><B.BODY>The names in this picture refer to the following modules:</B.BODY
  41830. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="100p"><COLSPEC COLNAME="2" COLWIDTH="237p"><COLSPEC COLNAME="3" COLWIDTH="109p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module name</CELLHEADING
  41831. ></ENTRY
  41832. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Long Name</CELLHEADING
  41833. ></ENTRY
  41834. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  41835. ></ENTRY
  41836. ></RBW-ROW
  41837. ></THEAD
  41838. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cplusplus</CELLBODY
  41839. ></ENTRY
  41840. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C++ Code generation</CELLBODY
  41841. ></ENTRY
  41842. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CodeGeneration</CELLBODY
  41843. ></ENTRY
  41844. ></RBW-ROW
  41845. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;aix</CELLBODY
  41846. ></ENTRY
  41847. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>IBM C++ compiler integration</CELLBODY
  41848. ></ENTRY
  41849. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  41850. ></ENTRY
  41851. ></RBW-ROW
  41852. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;dec</CELLBODY
  41853. ></ENTRY
  41854. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Digital C++ compiler integration</CELLBODY
  41855. ></ENTRY
  41856. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  41857. ></ENTRY
  41858. ></RBW-ROW
  41859. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;hp</CELLBODY
  41860. ></ENTRY
  41861. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>HP C++ compiler integration</CELLBODY
  41862. ></ENTRY
  41863. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  41864. ></ENTRY
  41865. ></RBW-ROW
  41866. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;sun</CELLBODY
  41867. ></ENTRY
  41868. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sun C++ compiler integration</CELLBODY
  41869. ></ENTRY
  41870. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  41871. ></ENTRY
  41872. ></RBW-ROW
  41873. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;bc&truehy;45</CELLBODY
  41874. ></ENTRY
  41875. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Borland C++ 4.5 compiler integration</CELLBODY
  41876. ></ENTRY
  41877. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  41878. ></ENTRY
  41879. ></RBW-ROW
  41880. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;vc&truehy;40</CELLBODY
  41881. ></ENTRY
  41882. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Visual C++ compiler integration</CELLBODY
  41883. ></ENTRY
  41884. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  41885. ></ENTRY
  41886. ></RBW-ROW
  41887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;libcayn</CELLBODY
  41888. ></ENTRY
  41889. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne class library integration</CELLBODY
  41890. ></ENTRY
  41891. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppClasslib</CELLBODY
  41892. ></ENTRY
  41893. ></RBW-ROW
  41894. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;librw</CELLBODY
  41895. ></ENTRY
  41896. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Rogue Wave class library integration</CELLBODY
  41897. ></ENTRY
  41898. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppClasslib</CELLBODY
  41899. ></ENTRY
  41900. ></RBW-ROW
  41901. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;libstl</CELLBODY
  41902. ></ENTRY
  41903. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STL class library integration</CELLBODY
  41904. ></ENTRY
  41905. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppClasslib</CELLBODY
  41906. ></ENTRY
  41907. ></RBW-ROW
  41908. ></TBODY
  41909. ></TGROUP
  41910. ></RBW-TABLE
  41911. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41912. >Compatibility with previous releases</SL.SUBLABEL
  41913. ><B.BODY>The current release of the C++ code generator is not compatible with previous releases. If you used a previous release of the C++ code generator, refer to <RBW-XREF REFID="15646" TYPE="XREF-TEXTCOPY">Appendix C, Compatibility With Previous Releases</RBW-XREF
  41914. >, for more information.</B.BODY
  41915. ></LABEL
  41916. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41917. >Object Design and Implementation</L.LABEL
  41918. ><B.BODY>This chapter describes the tasks of the Object Design phase. <RBW-XREF REFID="16183" TYPE="XREF-TEXTCOPY">Chapter 2, Building a C++ Application</RBW-XREF
  41919. >, describes the tasks of the Implementation phase. You work iteratively in these two phases to generate code and complete your application.</B.BODY
  41920. ><B.BODY>See <RBW-XREF REFID="11059" TYPE="XREF-TEXTCOPY">Appendix B, Example Application</RBW-XREF
  41921. > for a complete example application.</B.BODY
  41922. ></LABEL
  41923. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41924. >Purpose of object design</L.LABEL
  41925. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  41926. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  41927. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  41928. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use oter diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  41929. ></LABEL
  41930. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41931. >In this chapter</L.LABEL
  41932. ><B.BODY>This chapter contains the following sections:</B.BODY
  41933. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  41934. ></ENTRY
  41935. ></RBW-ROW
  41936. ></THEAD
  41937. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23234" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;1–4</RBW-XREF
  41938. ></SB.SECTION.BLOCK.TABLE
  41939. ></ENTRY
  41940. ></RBW-ROW
  41941. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11510" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;1–7</RBW-XREF
  41942. ></SB.SECTION.BLOCK.TABLE
  41943. ></ENTRY
  41944. ></RBW-ROW
  41945. ></TBODY
  41946. ></TGROUP
  41947. ></RBW-TABLE
  41948. ></LABEL
  41949. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  41950. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  41951. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  41952. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  41953. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  41954. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  41955. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  41956. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  41957. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  41958. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  41959. >Refining the Class Diagrams</S.SECTION.HEAD
  41960. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41961. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  41962. ></L.LABEL
  41963. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  41964. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  41965. ></LABEL
  41966. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  41967. >Using data from diagrams other than CDs</L.LABEL
  41968. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  41969. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  41970. ></ENTRY
  41971. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  41972. ></ENTRY
  41973. ></RBW-ROW
  41974. ></THEAD
  41975. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  41976. ></ENTRY
  41977. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  41978. ><CELLBODY>STD class</CELLBODY
  41979. ><CELLBODY>UCD actor</CELLBODY
  41980. ></ENTRY
  41981. ></RBW-ROW
  41982. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  41983. ></ENTRY
  41984. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  41985. ><CELLBODY>STD event or event message</CELLBODY
  41986. ><CELLBODY>UCD communication association</CELLBODY
  41987. ></ENTRY
  41988. ></RBW-ROW
  41989. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  41990. ></ENTRY
  41991. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  41992. ><CELLBODY>STD condition on an event</CELLBODY
  41993. ></ENTRY
  41994. ></RBW-ROW
  41995. ></TBODY
  41996. ></TGROUP
  41997. ></RBW-TABLE
  41998. ></LABEL
  41999. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42000. >Classes</L.LABEL
  42001. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  42002. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions and procedures of the class type. </B.BODY
  42003. ></LABEL
  42004. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42005. >External classes</L.LABEL
  42006. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  42007. ></LABEL
  42008. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42009. >Associations</L.LABEL
  42010. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  42011. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  42012. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42013. >Role names in Analysis and System Design</SL.SUBLABEL
  42014. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  42015. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00415.tif" origseq="4" origtype="I" origdoc="../../sources/cpp/cppobjd.fm5.mif"></RBW-GRAPHIC
  42016. ></FA.FIGURE.ANCHOR
  42017. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42018. >Role names in Object Design and Implementation</SL.SUBLABEL
  42019. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods (such as pointers) for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  42020. ></LABEL
  42021. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42022. >Attributes</L.LABEL
  42023. ><B.BODY>You must specify each attribute completely, including its data type. (See <RBW-XREF REFID="11407" TYPE="XREF-TEXTCOPY">Mapping Attributes</RBW-XREF
  42024. > for attribute syntax.)  The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  42025. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  42026. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42027. >Data types</SL.SUBLABEL
  42028. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and derived types. Types are abstracted from the data types recognized by the database system and the OOPL environment. The code generator translates the standard types to the target types. </B.BODY
  42029. ><B.BODY>Take care when customizing the files that define standard types. Any additions you make must conform to the target language or the generated code may not be usable.</B.BODY
  42030. ><B.BODY>For details on customizing the standard types, see <RBW-XREF REFID="28522" TYPE="XREF-TEXTCOPY">Customizing Types</RBW-XREF
  42031. >.</B.BODY
  42032. ></LABEL
  42033. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42034. >Operations</L.LABEL
  42035. ><BI.BODY.INTRO>You must specify each operation completely. (See <RBW-XREF REFID="29516" TYPE="XREF-TEXTCOPY">Mapping Methods</RBW-XREF
  42036. > for operation syntax.) This includes specifying such aspects as:</BI.BODY.INTRO
  42037. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42038. ></RBW-AUTOGEN
  42039. ></RBW-MARKER
  42040. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  42041. ></LB.LIST.BULLET
  42042. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42043. ></RBW-AUTOGEN
  42044. ></RBW-MARKER
  42045. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  42046. ></LB.LIST.BULLET
  42047. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42048. ></RBW-AUTOGEN
  42049. ></RBW-MARKER
  42050. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  42051. ></LB.LIST.BULLET
  42052. ></LABEL
  42053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42054. >Properties</L.LABEL
  42055. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  42056. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  42057. >These details are incorporated in the final code.</BI.BODY.INTRO
  42058. ></LABEL
  42059. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42060. >Checking</L.LABEL
  42061. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  42062. ><CX5FX5FTITLE></CX5FX5FTITLE
  42063. > for more information about the Check utility.</B.BODY
  42064. ></LABEL
  42065. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42066. >For more information</L.LABEL
  42067. ><B.BODY><RBW-XREF REFID="22643" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to C++</RBW-XREF
  42068. > describes how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  42069. ></LABEL
  42070. ></SECTION
  42071. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  42072. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  42073. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  42074. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  42075. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  42076. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  42077. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  42078. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  42079. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  42080. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  42081. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  42082. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42083. >Introduction</L.LABEL
  42084. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  42085. ></LABEL
  42086. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42087. >Understanding the translations</L.LABEL
  42088. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  42089. ></LABEL
  42090. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42091. >Naming conventions</L.LABEL
  42092. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, bear in mind that spaces between words (in class names, for instance) are deleted by ObjectTeam code generators.</B.BODY
  42093. ></LABEL
  42094. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42095. >Customizing code generation</L.LABEL
  42096. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own., as described in <RBW-XREF REFID="36160" TYPE="XREF-TEXTCOPY">Chapter 5, Customizing Code Generation</RBW-XREF
  42097. >. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  42098. ></LABEL
  42099. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42100. >Using multiple languages in a single application</L.LABEL
  42101. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  42102. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  42103. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42104. ></RBW-AUTOGEN
  42105. ></RBW-MARKER
  42106. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  42107. ></LN.LIST.NUM
  42108. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42109. ></RBW-AUTOGEN
  42110. ></RBW-MARKER
  42111. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  42112. ></LN.LIST.NUM
  42113. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  42114. ></RBW-AUTOGEN
  42115. ></RBW-MARKER
  42116. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  42117. ></LN.LIST.NUM
  42118. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  42119. ></RBW-AUTOGEN
  42120. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  42121. ></LABEL
  42122. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42123. ></L.LABEL
  42124. ><!--
  42125.  
  42126.  
  42127.  
  42128.  
  42129.  
  42130. CONVERTING SOURCE FILE ../../sources/cpp/cppcodg.fm5.mif
  42131.  
  42132.  
  42133. --><B.BODY></B.BODY
  42134. ><B.BODY></B.BODY
  42135. ><B.BODY></B.BODY
  42136. ><B.BODY></B.BODY
  42137. ><B.BODY></B.BODY
  42138. ></LABEL
  42139. ></SECTION
  42140. ></CHAPTER
  42141. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  42142. ></RBW-AUTOGEN
  42143. >Building <RBW-ANCHOR ID="16183"></RBW-ANCHOR
  42144. >a C++ Application</C.CHAPTER.HEAD
  42145. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42146. >Introduction</L.LABEL
  42147. ><B.BODY><RBW-IDXTERM TERM1="code generation"></RBW-IDXTERM
  42148. >Typically, the ultimate goal of modeling an application is to produce code that implements the application. In ObjectTeam, you can generate a significant portion of the code automatically, then complete the code by adding the details not specified in the model.</B.BODY
  42149. ></LABEL
  42150. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42151. >Prerequisites</L.LABEL
  42152. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42153. ></RBW-AUTOGEN
  42154. ></RBW-MARKER
  42155. ><RBW-PARABODY>The ObjectTeam module <CX5FX5FEMPHASIS>C++ Code generation</CX5FX5FEMPHASIS
  42156. > must be active from Object Design phase and Implementation phase level down.</RBW-PARABODY
  42157. ></LB.LIST.BULLET
  42158. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42159. ></RBW-AUTOGEN
  42160. ></RBW-MARKER
  42161. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="19089" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  42162. >.</RBW-PARABODY
  42163. ></LB.LIST.BULLET
  42164. ></LABEL
  42165. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42166. >Steps in code generation</L.LABEL
  42167. ><B.BODY>The following table provides an overview of the code generation process. This chapter describes each step in greater detail.</B.BODY
  42168. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  42169. ></ENTRY
  42170. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  42171. ></ENTRY
  42172. ></RBW-ROW
  42173. ></THEAD
  42174. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  42175. ></ENTRY
  42176. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configure the C++ environment, ensuring proper installation of the C++ environment (makefile template and class library source files, if applicable).</CELLBODY
  42177. ></ENTRY
  42178. ></RBW-ROW
  42179. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  42180. ></ENTRY
  42181. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate code for your systems in the Implementation phase. During this step, ObjectTeam runs the Tcl scripts that generate the application source code files.</CELLBODY
  42182. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  42183. > System level in the Implementation phase is fundamentally different than System level in other phases. The System files in the Implementation phase are source files, not diagram files.</CELLBODY
  42184. ></ENTRY
  42185. ></RBW-ROW
  42186. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  42187. ></ENTRY
  42188. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit the source files. ObjectTeam generates a large portion of your application code, but not all of it. In this stage, you finish writing the application code.</CELLBODY
  42189. ><CELLBODY>Changes you make to the source files are not lost. When you regenerate the source files, the code generator recognizes your changes and transfers them to the newly generated files.<RBWAUTO-0004><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  42190. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  42191. ></RBWAUTO-0004
  42192. > <RBWAUTO-0004><RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  42193. ></RBWAUTO-0004
  42194. ></CELLBODY
  42195. ></ENTRY
  42196. ></RBW-ROW
  42197. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  42198. ></ENTRY
  42199. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate a makefile. The makefile compiles and links the target object (an executable or library).</CELLBODY
  42200. ></ENTRY
  42201. ></RBW-ROW
  42202. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  42203. ></ENTRY
  42204. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Build the executable or library. Execute the makefile to compile and link the target object. If you built an executable, you can now run it.</CELLBODY
  42205. ></ENTRY
  42206. ></RBW-ROW
  42207. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  42208. ></ENTRY
  42209. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Test the executable or library. If necessary: correct the source files, the model, or both; regenerate the files; and return to step 6.</CELLBODY
  42210. ></ENTRY
  42211. ></RBW-ROW
  42212. ></TBODY
  42213. ></TGROUP
  42214. ></RBW-TABLE
  42215. ></LABEL
  42216. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42217. >Illustration of code generation</L.LABEL
  42218. ><BI.BODY.INTRO>The following illustration shows how ObjectTeam generates code. The CDs and CDMs shown at the top are in the Object Design phase.</BI.BODY.INTRO
  42219. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00416.tif" origseq="2" origtype="I" origdoc="../../sources/cpp/cppcodg.fm5.mif"></RBW-GRAPHIC
  42220. ></FAR.FIGURE.ANCHOR.RIGHT
  42221. ></LABEL
  42222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42223. >In this chapter</L.LABEL
  42224. ><B.BODY>This chapter contains the following sections:</B.BODY
  42225. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  42226. ></ENTRY
  42227. ></RBW-ROW
  42228. ></THEAD
  42229. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16880" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;2–5</RBW-XREF
  42230. ></SB.SECTION.BLOCK.TABLE
  42231. ></ENTRY
  42232. ></RBW-ROW
  42233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your C++ Environment&rbwtab;2–6</RBW-XREF
  42234. ></SB.SECTION.BLOCK.TABLE
  42235. ></ENTRY
  42236. ></RBW-ROW
  42237. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34047" TYPE="XREF-TEXTCOPY">Generating C++ Code&rbwtab;2–9</RBW-XREF
  42238. ></SB.SECTION.BLOCK.TABLE
  42239. ></ENTRY
  42240. ></RBW-ROW
  42241. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26759" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files&rbwtab;2–15</RBW-XREF
  42242. ></SB.SECTION.BLOCK.TABLE
  42243. ></ENTRY
  42244. ></RBW-ROW
  42245. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15358" TYPE="XREF-TEXTCOPY">Generating a Makefile&rbwtab;2–17</RBW-XREF
  42246. ></SB.SECTION.BLOCK.TABLE
  42247. ></ENTRY
  42248. ></RBW-ROW
  42249. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13254" TYPE="XREF-TEXTCOPY">Building the Executable or Library&rbwtab;2–19</RBW-XREF
  42250. ></SB.SECTION.BLOCK.TABLE
  42251. ></ENTRY
  42252. ></RBW-ROW
  42253. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18109" TYPE="XREF-TEXTCOPY">Regenerating Code&rbwtab;2–21</RBW-XREF
  42254. ></SB.SECTION.BLOCK.TABLE
  42255. ></ENTRY
  42256. ></RBW-ROW
  42257. ></TBODY
  42258. ></TGROUP
  42259. ></RBW-TABLE
  42260. ></LABEL
  42261. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16880"></RBW-ANCHOR
  42262. >Components of Code Generation</S.SECTION.HEAD
  42263. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42264. >Tcl scripts for code generation</L.LABEL
  42265. ><B.BODY>The scripts written for code generation retrieve information from the code generation models, format this information and write the results to source code files. Code generation models are built from the CDs in the Object Design phase.</B.BODY
  42266. ><B.BODY>The default <RBW-IDXTERM TERM1="Tcl" TERM2="script files used for code generation"></RBW-IDXTERM
  42267. >Tcl scripts used by otsh to generate C++ source code can be found under the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  42268. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  42269. >\<CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  42270. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  42271. > directory tree. For more information, see <RBW-XREF REFID="21823" TYPE="XREF-TEXTCOPY">How C++ Code is Generated</RBW-XREF
  42272. >.</B.BODY
  42273. ></LABEL
  42274. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42275. ><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  42276. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  42277. >Code <RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  42278. >regeneration</L.LABEL
  42279. ><B.BODY>Code generation is an automated process that generates H++ and C++ files. ObjectTeam ensures that </B.BODY
  42280. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42281. ></RBW-AUTOGEN
  42282. ></RBW-MARKER
  42283. ><RBW-PARABODY>You can regenerate these files when you change your model.</RBW-PARABODY
  42284. ></LB.LIST.BULLET
  42285. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42286. ></RBW-AUTOGEN
  42287. ></RBW-MARKER
  42288. ><RBW-PARABODY>Changes that you make to the generated files are preserved when you regenerate the files.</RBW-PARABODY
  42289. ></LB.LIST.BULLET
  42290. ><B.BODY>For more information, see <RBW-XREF REFID="18109" TYPE="XREF-TEXTCOPY">Regenerating Code</RBW-XREF
  42291. >.</B.BODY
  42292. ></LABEL
  42293. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42294. ><RBW-IDXTERM TERM1="class library" TERM2="including in code generation"></RBW-IDXTERM
  42295. ><RBW-ANCHOR ID="35964"></RBW-ANCHOR
  42296. >Class library integration</L.LABEL
  42297. ><B.BODY>You can include external class libraries in your design. Such an external class library is automatically included during the code generation. In addition, ObjectTeam helps you to understand and reuse existing class libraries through reverse engineering.</B.BODY
  42298. ><B.BODY>For more information, see <RBW-XREF REFID="26044" TYPE="XREF-TEXTCOPY">Reverse Engineering</RBW-XREF
  42299. >.</B.BODY
  42300. ></LABEL
  42301. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42302. ><RBW-IDXTERM TERM1="makefile" TERM2="generating"></RBW-IDXTERM
  42303. ><RBW-IDXTERM TERM1="otsh" TERM2="code (re)generation"></RBW-IDXTERM
  42304. ><RBW-IDXTERM TERM1="otsh" TERM2="makefile generation"></RBW-IDXTERM
  42305. >Makefile generation</L.LABEL
  42306. ><B.BODY>You can have ObjectTeam create a makefile automatically for the C++ compiler that you are using.</B.BODY
  42307. ><B.BODY>For more information, see <RBW-XREF REFID="15358" TYPE="XREF-TEXTCOPY">Generating a Makefile</RBW-XREF
  42308. >.</B.BODY
  42309. ></LABEL
  42310. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42311. >Configuration</L.LABEL
  42312. ><B.BODY>The code that ObjectTeam generates could be any object&truehy;oriented programming language, but this guide focuses on C++. Before generating C++ code, you must configure your C++ environment. </B.BODY
  42313. ><B.BODY>For more information, see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your C++ Environment</RBW-XREF
  42314. >.</B.BODY
  42315. ></LABEL
  42316. ></SECTION
  42317. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40480"></RBW-ANCHOR
  42318. >Configuring Your C++ Environment</S.SECTION.HEAD
  42319. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42320. >What is the C++ environment<RBW-IDXTERM TERM1="C++" TERM2="configuring - environment"></RBW-IDXTERM
  42321. ></L.LABEL
  42322. ><B.BODY>Two elements make up the C++ environment:</B.BODY
  42323. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42324. ></RBW-AUTOGEN
  42325. ></RBW-MARKER
  42326. ><RBW-PARABODY>The <RBW-IDXTERM TERM1="compiler" TERM2="specifying - for code generation"></RBW-IDXTERM
  42327. >C++ compiler you are using</RBW-PARABODY
  42328. ></LB.LIST.BULLET
  42329. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42330. ></RBW-AUTOGEN
  42331. ></RBW-MARKER
  42332. ><RBW-PARABODY>The <RBW-IDXTERM TERM1="class library"></RBW-IDXTERM
  42333. >class libraries used for compiling and linking code generated from associations.</RBW-PARABODY
  42334. ></LB.LIST.BULLET
  42335. ><B.BODY>Which compiler and which class library will be used is determined by the modules that have been selected.</B.BODY
  42336. ></LABEL
  42337. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42338. >What happens when you configure your C++ environment</L.LABEL
  42339. ><B.BODY>When you configure your C++ environment, ObjectTeam carries out the following tasks:</B.BODY
  42340. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42341. ></RBW-AUTOGEN
  42342. ></RBW-MARKER
  42343. ><RBW-PARABODY>The customization file <CX5FX5FFILE.NAME>maketmpl.maketmpl</CX5FX5FFILE.NAME
  42344. > is created in the repository on Configuration level. This template file is expanded when you generate a makefile using Target | Generate Makefile</RBW-PARABODY
  42345. ></LB.LIST.BULLET
  42346. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42347. >Cayenne class library</SL.SUBLABEL
  42348. ><B.BODY>If you are using the Cayenne class library (if <CX5FX5FOBJECT.NAME>cpp&truehy;libcayn</CX5FX5FOBJECT.NAME
  42349. > is part of your set of current modules), the following tasks are also carried out:</B.BODY
  42350. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42351. ></RBW-AUTOGEN
  42352. ></RBW-MARKER
  42353. ><RBW-PARABODY>The required source files are copied from the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  42354. > directory to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  42355. >\<CX5FX5FFILE.NAME>src</CX5FX5FFILE.NAME
  42356. > directory,.</RBW-PARABODY
  42357. ></LB.LIST.BULLET
  42358. ><LT.LIST.TEXT><CX5FX5FTERM>user_environment</CX5FX5FTERM
  42359. > is the file path for generated files, as described in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  42360. ><CX5FX5FTITLE></CX5FX5FTITLE
  42361. >.</LT.LIST.TEXT
  42362. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42363. ></RBW-AUTOGEN
  42364. ></RBW-MARKER
  42365. ><RBW-PARABODY>The required header files are copied from the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  42366. > directory to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  42367. >\<CX5FX5FFILE.NAME>include</CX5FX5FFILE.NAME
  42368. > directory. </RBW-PARABODY
  42369. ></LB.LIST.BULLET
  42370. ><B.BODY>These source and include files must be compiled into a library file before the Cayenne class library can be used (see <RBW-XREF REFID="24041" TYPE="XREF-TEXTCOPY">How to compile the Cayenne class library</RBW-XREF
  42371. >).</B.BODY
  42372. ></LABEL
  42373. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42374. >How to configure the C++ environment</L.LABEL
  42375. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42376. ></RBW-AUTOGEN
  42377. ></RBW-MARKER
  42378. ><RBW-PARABODY>To configure the C++ environment:</RBW-PARABODY
  42379. ></P.PROCEDURE
  42380. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42381. ></RBW-AUTOGEN
  42382. ></RBW-MARKER
  42383. ><RBW-PARABODY>Move to Implementation Phase level, or System level in the Implementation phase.</RBW-PARABODY
  42384. ></LN.LIST.NUM
  42385. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42386. ></RBW-AUTOGEN
  42387. ></RBW-MARKER
  42388. ><RBW-PARABODY>Select Utilities | Configure C++ Environment.</RBW-PARABODY
  42389. ></LN.LIST.NUM
  42390. ><LR.LIST.RESULT>A Monitoring window similar to the following appears.</LR.LIST.RESULT
  42391. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00417.unk" origfile="pics/cfgcpp.gif" origtype="X" origdoc="../../sources/cpp/cppcodg.fm5.mif"></RBW-GRAPHIC
  42392. ></FAR.FIGURE.ANCHOR.RIGHT
  42393. ><B.BODY>The customization file <CX5FX5FFILE.NAME>maketmpl.maketmpl</CX5FX5FFILE.NAME
  42394. > is inserted on Configuration level, and, if applicable, class library source files are copied to your user environment.</B.BODY
  42395. ></LABEL
  42396. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42397. ><RBW-ANCHOR ID="24041"></RBW-ANCHOR
  42398. >How to compile the Cayenne class library</L.LABEL
  42399. ><B.BODY>If you are using the Cayenne class library (see <RBW-XREF REFID="19089" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  42400. >) you must compile the source files that were copied during the configuration of your C++ environment.</B.BODY
  42401. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42402. ></RBW-AUTOGEN
  42403. ></RBW-MARKER
  42404. ><RBW-PARABODY>To compile the Cayenne class library:</RBW-PARABODY
  42405. ></P.PROCEDURE
  42406. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42407. ></RBW-AUTOGEN
  42408. ></RBW-MARKER
  42409. ><RBW-PARABODY>Move to Implementation Phase or Implementation System level.</RBW-PARABODY
  42410. ></LN.LIST.NUM
  42411. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42412. ></RBW-AUTOGEN
  42413. ></RBW-MARKER
  42414. ><RBW-PARABODY>Make sure the environment variables required to run your compiler are set properly.</RBW-PARABODY
  42415. ></LN.LIST.NUM
  42416. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  42417. ></RBW-AUTOGEN
  42418. ></RBW-MARKER
  42419. ><RBW-PARABODY>Select Utilities | Compile libcayn.</RBW-PARABODY
  42420. ></LN.LIST.NUM
  42421. ><LR.LIST.RESULT>The Cayenne class library is now compiled. If your environment has been set up properly, the compiled class library is stored in the directory <CX5FX5FFILE.NAME>user_environment</CX5FX5FFILE.NAME
  42422. >\<CX5FX5FFILE.NAME>lib</CX5FX5FFILE.NAME
  42423. >.</LR.LIST.RESULT
  42424. ></LABEL
  42425. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42426. >Adding new options</L.LABEL
  42427. ><B.BODY>Integrations of class libraries with ObjectTeam are entirely written in Object Tcl, which allows you to customize them to a large extent. You can add new configuration options, for example, by creating a new module with certain customization files, as described in <RBW-XREF REFID="32178" TYPE="XREF-TEXTCOPY">Customizing Class Libraries</RBW-XREF
  42428. >.</B.BODY
  42429. ></LABEL
  42430. ></SECTION
  42431. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34047"></RBW-ANCHOR
  42432. >Generating C++ Code</S.SECTION.HEAD
  42433. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42434. >Result of generating</L.LABEL
  42435. ><B.BODY>When you generate source files, the code generator uses the CDs and CDMs that are in the Object Design phase to create C++ source files in the Implementation phase. At System level of the Implementation phase, you can then refine the source code and complete the application.</B.BODY
  42436. ></LABEL
  42437. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42438. >Implementation Phase is different</L.LABEL
  42439. ><B.BODY>The System level of the Implementation phase is fundamentally different from System level of any other phase. In the Implementation phase, the System files are C++ files. In other phases, the System files are ObjectTeam diagrams.</B.BODY
  42440. ></LABEL
  42441. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42442. >Generate code on Phase or System level</L.LABEL
  42443. ><B.BODY>You can generate code on the Implementation Phase level or on the System level of the Implementation phase.</B.BODY
  42444. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42445. ></RBW-AUTOGEN
  42446. ></RBW-MARKER
  42447. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>Implementation Phase level</CX5FX5FBULLET.EMPHASIS
  42448. >, you can generate code for one or more systems. This creates a matching system in the Implementation Phase that contains the generated source files. To regenerate code for an existing system, use System level.</RBW-PARABODY
  42449. ></LB.LIST.BULLET
  42450. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42451. ></RBW-AUTOGEN
  42452. ></RBW-MARKER
  42453. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>System level of the Implementation phase</CX5FX5FBULLET.EMPHASIS
  42454. >, you can (re)generate code for the entire system, or regenerate selected source files.</RBW-PARABODY
  42455. ></LB.LIST.BULLET
  42456. ><B.BODY>Typically, you use Implementation Phase level to generate code for a system initially and System level to regenerate code subsequently.</B.BODY
  42457. ></LABEL
  42458. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42459. >How to generate code on Implementation Phase level</L.LABEL
  42460. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42461. ></RBW-AUTOGEN
  42462. ></RBW-MARKER
  42463. ><RBW-PARABODY>To generate source files on the Implementation Phase level:</RBW-PARABODY
  42464. ></P.PROCEDURE
  42465. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42466. ></RBW-AUTOGEN
  42467. ></RBW-MARKER
  42468. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  42469. ></LN.LIST.NUM
  42470. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42471. ></RBW-AUTOGEN
  42472. ></RBW-MARKER
  42473. ><RBW-PARABODY>Select Utilities | Generate C++.</RBW-PARABODY
  42474. ></LN.LIST.NUM
  42475. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  42476. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  42477. ></RBW-AUTOGEN
  42478. ></RBW-MARKER
  42479. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  42480. ></LN.LIST.NUM
  42481. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  42482. ></RBW-MARKER
  42483. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  42484. > to generate code for all systems from the Object Design phase for which no code has been generated yet. </RBW-PARABODY
  42485. ></LB2.LIST.BULLET.2
  42486. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  42487. ></RBW-MARKER
  42488. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  42489. > to generate code for one or more systems in the Object Design phase. You can select only systems that do not yet exist in the Implementation phase.</RBW-PARABODY
  42490. ></LB2.LIST.BULLET.2
  42491. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files.</LR.LIST.RESULT
  42492. ></LABEL
  42493. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42494. ><RBW-ANCHOR ID="10881"></RBW-ANCHOR
  42495. >How to generate code on System level</L.LABEL
  42496. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42497. ></RBW-AUTOGEN
  42498. ></RBW-MARKER
  42499. ><RBW-PARABODY>To generate (selected) source files for a system from System level of the Implementation phase:</RBW-PARABODY
  42500. ></P.PROCEDURE
  42501. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42502. ></RBW-AUTOGEN
  42503. ></RBW-MARKER
  42504. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  42505. ></LN.LIST.NUM
  42506. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42507. ></RBW-AUTOGEN
  42508. ></RBW-MARKER
  42509. ><RBW-PARABODY>Select Utilities | Generate C++.</RBW-PARABODY
  42510. ></LN.LIST.NUM
  42511. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  42512. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  42513. ></RBW-AUTOGEN
  42514. ></RBW-MARKER
  42515. ><RBW-PARABODY>Select one of the following:</RBW-PARABODY
  42516. ></LN.LIST.NUM
  42517. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  42518. ></RBW-MARKER
  42519. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New</CX5FX5FBULLET.EMPHASIS
  42520. > to generate code for all classes that are defined in this system and that have not yet been generated into code.</RBW-PARABODY
  42521. ></LB2.LIST.BULLET.2
  42522. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  42523. ></RBW-MARKER
  42524. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Selected</CX5FX5FBULLET.EMPHASIS
  42525. > to regenerate the files that you have selected in the Information area of the browser.</RBW-PARABODY
  42526. ></LB2.LIST.BULLET.2
  42527. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  42528. ></RBW-MARKER
  42529. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>All</CX5FX5FBULLET.EMPHASIS
  42530. > to (re)generate code for all classes that are defined in this system.</RBW-PARABODY
  42531. ></LB2.LIST.BULLET.2
  42532. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the files. The following illustration shows the Monitor window after generating code for a system.</LR.LIST.RESULT
  42533. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00418.unk" origfile="pics/imp_impl.gif" origtype="X" origdoc="../../sources/cpp/cppcodg.fm5.mif"></RBW-GRAPHIC
  42534. ></FA.FIGURE.ANCHOR
  42535. ></LABEL
  42536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42537. >Location of the source files</L.LABEL
  42538. ><BI.BODY.INTRO>Source files are stored in the repository as external files. They are also written to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  42539. >\<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  42540. > directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  42541. > is the file path for your generated files. For more information on the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  42542. ><CX5FX5FTITLE></CX5FX5FTITLE
  42543. >. The following illustrations show how the source files appear in the Browser. </BI.BODY.INTRO
  42544. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00419.unk" origfile="pics/sf_oopl.gif" origtype="X" origdoc="../../sources/cpp/cppcodg.fm5.mif"></RBW-GRAPHIC
  42545. ></FA.FIGURE.ANCHOR
  42546. ></LABEL
  42547. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42548. >When code is not generated</L.LABEL
  42549. ><B.BODY>The code generator generates code for all classes defined in the current system. It does not generate code in the following situations:</B.BODY
  42550. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42551. ></RBW-AUTOGEN
  42552. ></RBW-MARKER
  42553. ><RBW-PARABODY>If a CD in the current system contains a class that is defined in another system, the code generator does not generate code for that class.</RBW-PARABODY
  42554. ></LB.LIST.BULLET
  42555. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42556. ></RBW-AUTOGEN
  42557. ></RBW-MARKER
  42558. ><RBW-PARABODY>If a CD in the current system contains a class <CX5FX5FEMPHASIS>component</CX5FX5FEMPHASIS
  42559. > (a graphical element) that does not have an associated <CX5FX5FEMPHASIS>item</CX5FX5FEMPHASIS
  42560. > (a semantic element), the code generator does not generate code for that class.</RBW-PARABODY
  42561. ></LB.LIST.BULLET
  42562. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  42563. ></RBW-AUTOGEN
  42564. >For more information about components and items, see <RBW-XREF REFID="29698" TYPE="XREF-TEXTCOPY">Working With Items on page 3–31</RBW-XREF
  42565. > in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  42566. >, of the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  42567. ><CX5FX5FTITLE></CX5FX5FTITLE
  42568. >.</N2.NOTE.2
  42569. ></LABEL
  42570. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17211"></RBW-ANCHOR
  42571. >The OOPL Model</SS.SUBSEC.HEAD
  42572. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42573. >OOPL Model</L.LABEL
  42574. ><B.BODY>The OOPL Model, which is generated from the CDs in the Object Design phase, contains information used to generate code. The objects in this model are organized in such a way that code can be generated easily.</B.BODY
  42575. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42576. >For more information</SL.SUBLABEL
  42577. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  42578. ><CX5FX5FTITLE></CX5FX5FTITLE
  42579. > provides a detailed description of the classes in the OOPL Model. <RBW-XREF REFID="21823" TYPE="XREF-TEXTCOPY">How C++ Code is Generated</RBW-XREF
  42580. > discusses the OOPL model in the code generation process.</B.BODY
  42581. ></LABEL
  42582. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42583. >Generated code</L.LABEL
  42584. ><B.BODY>The C++ code generator generates the following files for every class in the CDs of the Object Design phase:<RBW-IDXTERM TERM1="C++ header file" TERM2="generating"></RBW-IDXTERM
  42585. ><RBW-IDXTERM TERM1="generating" TERM2="C++ header file"></RBW-IDXTERM
  42586. ></B.BODY
  42587. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="102p"><COLSPEC COLNAME="2" COLWIDTH="100p"><COLSPEC COLNAME="3" COLWIDTH="246p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File (Windows)</CELLHEADING
  42588. ></ENTRY
  42589. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File (UNIX)</CELLHEADING
  42590. ></ENTRY
  42591. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  42592. ></ENTRY
  42593. ></RBW-ROW
  42594. ></THEAD
  42595. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  42596. >.h</CELLBODY
  42597. ></ENTRY
  42598. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  42599. >.hxx</CELLBODY
  42600. ></ENTRY
  42601. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="H++"></RBW-IDXTERM
  42602. ><RBW-IDXTERM TERM1="header file"></RBW-IDXTERM
  42603. >H++ (header) file containing the class definition</CELLBODY
  42604. ></ENTRY
  42605. ></RBW-ROW
  42606. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  42607. >.cpp</CELLBODY
  42608. ></ENTRY
  42609. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class_name</CX5FX5FTERM
  42610. >.cxx</CELLBODY
  42611. ></ENTRY
  42612. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>C++ file containing internal details of a class</CELLBODY
  42613. ></ENTRY
  42614. ></RBW-ROW
  42615. ></TBODY
  42616. ></TGROUP
  42617. ></RBW-TABLE
  42618. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42619. >For more information</SL.SUBLABEL
  42620. ><B.BODY>See <RBW-XREF REFID="22643" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to C++</RBW-XREF
  42621. >, for more details.</B.BODY
  42622. ></LABEL
  42623. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42624. >Example</L.LABEL
  42625. ><BI.BODY.INTRO>The following example shows a class from the CD and the matching C++ and H++ files that would be generated. Notice that the function <CX5FX5FTITLE>PrintAmount</CX5FX5FTITLE
  42626. > still needs to be implemented.</BI.BODY.INTRO
  42627. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00420.unk" origfile="pics/acct.gif" origtype="X" origdoc="../../sources/cpp/cppcodg.fm5.mif"></RBW-GRAPHIC
  42628. ></FA.FIGURE.ANCHOR
  42629. ><B.BODY><CX5FX5FFILE.NAME>Account.h</CX5FX5FFILE.NAME
  42630. > (generated file)</B.BODY
  42631. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  42632. ><EM.EXAMPLE.MONO>// File          : Account.h</EM.EXAMPLE.MONO
  42633. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  42634. ><EM.EXAMPLE.MONO>#ifndef ACCOUNT_HXX</EM.EXAMPLE.MONO
  42635. ><EM.EXAMPLE.MONO>#define ACCOUNT_HXX</EM.EXAMPLE.MONO
  42636. ><EM.EXAMPLE.MONO>class Account {</EM.EXAMPLE.MONO
  42637. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  42638. ><EM.EXAMPLE.MONO>&rbwtab;// Default constructor/destructor</EM.EXAMPLE.MONO
  42639. ><EM.EXAMPLE.MONO>&rbwtab;Account();</EM.EXAMPLE.MONO
  42640. ><EM.EXAMPLE.MONO>&rbwtab;~Account();</EM.EXAMPLE.MONO
  42641. ><EM.EXAMPLE.MONO>&rbwtab;// User&truehy;defined methods</EM.EXAMPLE.MONO
  42642. ><EM.EXAMPLE.MONO>&rbwtab;void PrintAmount();</EM.EXAMPLE.MONO
  42643. ><EM.EXAMPLE.MONO>&rbwtab;// Attribute accessor methods</EM.EXAMPLE.MONO
  42644. ><EM.EXAMPLE.MONO>&rbwtab;int getAmount() const;</EM.EXAMPLE.MONO
  42645. ><EM.EXAMPLE.MONO>&rbwtab;void setAmount(int newAmount);</EM.EXAMPLE.MONO
  42646. ><EM.EXAMPLE.MONO>&rbwtab;// Association accessor methods</EM.EXAMPLE.MONO
  42647. ><EM.EXAMPLE.MONO>protected:</EM.EXAMPLE.MONO
  42648. ><EM.EXAMPLE.MONO>&rbwtab;// User&truehy;defined methods</EM.EXAMPLE.MONO
  42649. ><EM.EXAMPLE.MONO>&rbwtab;// Attribute accessor methods</EM.EXAMPLE.MONO
  42650. ><EM.EXAMPLE.MONO>&rbwtab;// Association accessor methods</EM.EXAMPLE.MONO
  42651. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  42652. ><EM.EXAMPLE.MONO>&rbwtab;// User&truehy;defined methods</EM.EXAMPLE.MONO
  42653. ><EM.EXAMPLE.MONO>&rbwtab;// Attribute accessor methods</EM.EXAMPLE.MONO
  42654. ><EM.EXAMPLE.MONO>&rbwtab;// Association accessor methods</EM.EXAMPLE.MONO
  42655. ><EM.EXAMPLE.MONO>&rbwtab;// User&truehy;defined attributes</EM.EXAMPLE.MONO
  42656. ><EM.EXAMPLE.MONO>&rbwtab;int amount;</EM.EXAMPLE.MONO
  42657. ><EM.EXAMPLE.MONO>&rbwtab;// Association attribute storage</EM.EXAMPLE.MONO
  42658. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  42659. ><EM.EXAMPLE.MONO>inline int Account::getAmount() const</EM.EXAMPLE.MONO
  42660. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  42661. ><EM.EXAMPLE.MONO>&rbwtab;return amount;</EM.EXAMPLE.MONO
  42662. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  42663. ><EM.EXAMPLE.MONO>inline void Account::setAmount(int newAmount)</EM.EXAMPLE.MONO
  42664. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  42665. ><EM.EXAMPLE.MONO>&rbwtab;amount = newAmount;</EM.EXAMPLE.MONO
  42666. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  42667. ><EM.EXAMPLE.MONO>#endif /* ACCOUNT_HXX */</EM.EXAMPLE.MONO
  42668. ><B.BODY><CX5FX5FFILE.NAME>Account.cpp</CX5FX5FFILE.NAME
  42669. > (generated file):</B.BODY
  42670. ><EM.EXAMPLE.MONO>// Start user added include file section</EM.EXAMPLE.MONO
  42671. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  42672. ><EM.EXAMPLE.MONO>#ifndef ACCOUNT_HXX</EM.EXAMPLE.MONO
  42673. ><EM.EXAMPLE.MONO>#include “Account.hxx”</EM.EXAMPLE.MONO
  42674. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  42675. ><EM.EXAMPLE.MONO>Account::Account()</EM.EXAMPLE.MONO
  42676. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  42677. ><EM.EXAMPLE.MONO>// Start constructor user section</EM.EXAMPLE.MONO
  42678. ><EM.EXAMPLE.MONO>// End constructor user section</EM.EXAMPLE.MONO
  42679. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  42680. ><EM.EXAMPLE.MONO>Account::~Account()</EM.EXAMPLE.MONO
  42681. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  42682. ><EM.EXAMPLE.MONO>     // Start destructor user section</EM.EXAMPLE.MONO
  42683. ><EM.EXAMPLE.MONO>     // End destructor user section</EM.EXAMPLE.MONO
  42684. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  42685. ><EM.EXAMPLE.MONO>void Account::PrintAmount()</EM.EXAMPLE.MONO
  42686. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  42687. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>     // !! Implement this function !!</CX5FX5FBULLET.EMPHASIS
  42688. ></EM.EXAMPLE.MONO
  42689. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>     int PrintAmount_is_not_yet_implemented;*</CX5FX5FBULLET.EMPHASIS
  42690. ></EM.EXAMPLE.MONO
  42691. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  42692. ><EM.EXAMPLE.MONO>// Do not delete this line &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  42693. ></LABEL
  42694. ></SUBSECTION
  42695. ></SECTION
  42696. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26759"></RBW-ANCHOR
  42697. >Editing (Generated) Source Files</S.SECTION.HEAD
  42698. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42699. >Introduction</L.LABEL
  42700. ><B.BODY>After the code has been generated, you can relate each generated H++ and C++ file to a specific class in a CD of the Object Design phase.</B.BODY
  42701. ></LABEL
  42702. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42703. >H++ header files</L.LABEL
  42704. ><B.BODY>The generated header files contain all the necessary include statements and do not need editing.</B.BODY
  42705. ><B.BODY>If, however, you choose to edit an H++ file, you can use the round&truehy;trip engineering task to move your changes back into your model so that they are not lost when you regenerate code. See <RBW-XREF REFID="29914" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  42706. > for more information.</B.BODY
  42707. ></LABEL
  42708. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42709. >C++ source files</L.LABEL
  42710. ><B.BODY>The generated C++ files serve as framework files. They contain a signature for each method (generated from the methods of the classes in the CDs), but the method bodies are empty. You need to fill in the following:</B.BODY
  42711. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42712. ></RBW-AUTOGEN
  42713. ></RBW-MARKER
  42714. ><RBW-PARABODY><RBW-IDXTERM TERM1="C++" TERM2="function"></RBW-IDXTERM
  42715. ><RBW-IDXTERM TERM1="C++" TERM2="code from method"></RBW-IDXTERM
  42716. ><RBW-IDXTERM TERM1="method" TERM2="body"></RBW-IDXTERM
  42717. >The bodies of the methods that are defined in the classes. No function is generated for the method. Instead, the following line is generated:</RBW-PARABODY
  42718. ></LB.LIST.BULLET
  42719. ><EM.EXAMPLE.MONO>// !! Implement this function !!</EM.EXAMPLE.MONO
  42720. ><EM.EXAMPLE.MONO>int <CX5FX5FTERM>methodName</CX5FX5FTERM
  42721. >_is_not_yet_implemented</EM.EXAMPLE.MONO
  42722. ><LT.LIST.TEXT>where <CX5FX5FTERM>methodName</CX5FX5FTERM
  42723. > is the name of the method. Until you specify the function, this line results in a warning from the compiler, such as the following (from SUN C++ 2.1):</LT.LIST.TEXT
  42724. ><EWM.EXAMPLEW.MONO>test.cxx, line 5: warning: test_is_not_yet_implemented not used</EWM.EXAMPLEW.MONO
  42725. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42726. ></RBW-AUTOGEN
  42727. ></RBW-MARKER
  42728. ><RBW-PARABODY>The sections that are marked by comments similar to the following:</RBW-PARABODY
  42729. ></LB.LIST.BULLET
  42730. ><EM.EXAMPLE.MONO>//Start ... user ... section</EM.EXAMPLE.MONO
  42731. ><EM.EXAMPLE.MONO>//End ... user ... section</EM.EXAMPLE.MONO
  42732. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42733. >Sample C++ source file</SL.SUBLABEL
  42734. ><BI.BODY.INTRO>The following is a sample source C++ file. User edits are highlighted.</BI.BODY.INTRO
  42735. ><EM.EXAMPLE.MONO>// Start user added include file section</EM.EXAMPLE.MONO
  42736. ><EM.EXAMPLE.MONO><CX5FX5FPROCEDURE.NAME>#include <iostream.h></CX5FX5FPROCEDURE.NAME
  42737. > </EM.EXAMPLE.MONO
  42738. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  42739. ><EM.EXAMPLE.MONO>#ifndef ACCOUNT_HXX</EM.EXAMPLE.MONO
  42740. ><EM.EXAMPLE.MONO>#include “Account.hxx”</EM.EXAMPLE.MONO
  42741. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  42742. ><EM.EXAMPLE.MONO>Account::Account()</EM.EXAMPLE.MONO
  42743. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  42744. ><EM.EXAMPLE.MONO>     // Start constructor user section</EM.EXAMPLE.MONO
  42745. ><EM.EXAMPLE.MONO>     // End constructor user section</EM.EXAMPLE.MONO
  42746. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  42747. ><EM.EXAMPLE.MONO>Account::~Account()</EM.EXAMPLE.MONO
  42748. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  42749. ><EM.EXAMPLE.MONO>     // Start destructor user section</EM.EXAMPLE.MONO
  42750. ><EM.EXAMPLE.MONO>     // End destructor user section</EM.EXAMPLE.MONO
  42751. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  42752. ><EM.EXAMPLE.MONO>void Account::PrintAmount()</EM.EXAMPLE.MONO
  42753. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  42754. ><EM.EXAMPLE.MONO>     <CX5FX5FFILE.NAME>cout << “The amount is: “ << amount << endl;</CX5FX5FFILE.NAME
  42755. > </EM.EXAMPLE.MONO
  42756. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  42757. ><EM.EXAMPLE.MONO>// Do not delete this line &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  42758. ></LABEL
  42759. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42760. ><RBW-IDXTERM TERM1="source files" TERM2="editing generated -"></RBW-IDXTERM
  42761. ><RBW-IDXTERM TERM1="generated source file" TERM2="editing"></RBW-IDXTERM
  42762. >How to edit source files</L.LABEL
  42763. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42764. ></RBW-AUTOGEN
  42765. ></RBW-MARKER
  42766. ><RBW-PARABODY>To edit source files:</RBW-PARABODY
  42767. ></P.PROCEDURE
  42768. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42769. ></RBW-AUTOGEN
  42770. ></RBW-MARKER
  42771. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  42772. ></LN.LIST.NUM
  42773. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42774. ></RBW-AUTOGEN
  42775. ></RBW-MARKER
  42776. ><RBW-PARABODY>In the Information area, double&truehy;click on the source file that you want to edit, or select the source file and then select File | Edit.</RBW-PARABODY
  42777. ></LN.LIST.NUM
  42778. ><LR.LIST.RESULT>The default Text Editor starts up with the corresponding file in the user environment.</LR.LIST.RESULT
  42779. ></LABEL
  42780. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42781. >Update diagrams</L.LABEL
  42782. ><B.BODY>Depending on the type of additions you have made to the source files, you may need to edit the CDs to reflect your changes. If you do so, be sure to use Check | Global Model to check the updated diagrams before regenerating the source files.</B.BODY
  42783. ></LABEL
  42784. ></SECTION
  42785. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="makefile" TERM2="generating"></RBW-IDXTERM
  42786. ><RBW-ANCHOR ID="15358"></RBW-ANCHOR
  42787. >Generating a Makefile</S.SECTION.HEAD
  42788. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42789. >Introduction</L.LABEL
  42790. ><B.BODY>The compiling and linking of an application or library is based on the specifications in the makefile. A makefile, based on the makefile template, can be created automatically by ObjectTeam.</B.BODY
  42791. ></LABEL
  42792. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42793. >Input for makefile generation</L.LABEL
  42794. ><B.BODY>The makefile generation process takes the following elements as input:</B.BODY
  42795. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42796. ></RBW-AUTOGEN
  42797. ></RBW-MARKER
  42798. ><RBW-PARABODY>The makefile template file (<CX5FX5FFILE.NAME>maketmpl.maketmpl</CX5FX5FFILE.NAME
  42799. >)</RBW-PARABODY
  42800. ></LB.LIST.BULLET
  42801. ><LT.LIST.TEXT>This is a (C++ compiler&truehy;specific) customization file that is inserted by ObjectTeam during the configuration of your C++ environment (see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your C++ Environment</RBW-XREF
  42802. >)</LT.LIST.TEXT
  42803. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42804. ></RBW-AUTOGEN
  42805. ></RBW-MARKER
  42806. ><RBW-PARABODY>The (generated) source and include files in the current system and their dependency </RBW-PARABODY
  42807. ></LB.LIST.BULLET
  42808. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42809. ></RBW-AUTOGEN
  42810. ></RBW-MARKER
  42811. ><RBW-PARABODY>The name of the target object (executable or library object)</RBW-PARABODY
  42812. ></LB.LIST.BULLET
  42813. ></LABEL
  42814. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42815. >Implicit makefile generation</L.LABEL
  42816. ><B.BODY>ObjectTeam automatically creates a makefile if you generate code for entire systems (on Phase level) or new files (on System level) from the Object Design Phase. </B.BODY
  42817. ><B.BODY>However, as long as there is no target object present in a system, this automatically generated makefile is not usable for compilation. Therefore, this automatic makefile creation is only useful in the following situation:</B.BODY
  42818. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42819. ></RBW-AUTOGEN
  42820. ></RBW-MARKER
  42821. ><RBW-PARABODY>A target object (executable or library) exists on Implementation System level.</RBW-PARABODY
  42822. ></LB.LIST.BULLET
  42823. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42824. ></RBW-AUTOGEN
  42825. ></RBW-MARKER
  42826. ><RBW-PARABODY>Utilities | Generate C++ | New is selected on Implementation System level</RBW-PARABODY
  42827. ></LB.LIST.BULLET
  42828. ><B.BODY>The ObjectTeam code generator is now able to determine the name of the target object, the source files (including their dependency), and is therefore able to generate a complete makefile.</B.BODY
  42829. ></LABEL
  42830. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42831. >Explicit makefile generation</L.LABEL
  42832. ><B.BODY>You can always explicitly generate (or update) the makefile on Implementation System level using Target | Generate Makefile.</B.BODY
  42833. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  42834. ></RBW-AUTOGEN
  42835. >If you have generated code for a system, ObjectTeam automatically generates a makefile. However, since the name of the target object is not known when code is generated for a system, the makefile has to be (re)generated after you have created a target object.</T.TIP
  42836. ></LABEL
  42837. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42838. >How to create a target object</L.LABEL
  42839. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42840. ></RBW-AUTOGEN
  42841. ></RBW-MARKER
  42842. ><RBW-PARABODY>To create a target object:</RBW-PARABODY
  42843. ></P.PROCEDURE
  42844. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42845. ></RBW-AUTOGEN
  42846. ></RBW-MARKER
  42847. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  42848. ></LN.LIST.NUM
  42849. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42850. ></RBW-AUTOGEN
  42851. ></RBW-MARKER
  42852. ><RBW-PARABODY>Select File | New | Executable or File | New | Library.</RBW-PARABODY
  42853. ></LN.LIST.NUM
  42854. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  42855. ></RBW-AUTOGEN
  42856. ></RBW-MARKER
  42857. ><RBW-PARABODY>Enter the name of the new target and click OK.</RBW-PARABODY
  42858. ></LN.LIST.NUM
  42859. ></LABEL
  42860. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42861. ><RBW-IDXTERM TERM1="generating" TERM2="makefiles"></RBW-IDXTERM
  42862. >How to generate a makefile</L.LABEL
  42863. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42864. ></RBW-AUTOGEN
  42865. ></RBW-MARKER
  42866. ><RBW-PARABODY>To generate a makefile:</RBW-PARABODY
  42867. ></P.PROCEDURE
  42868. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42869. ></RBW-AUTOGEN
  42870. ></RBW-MARKER
  42871. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  42872. ></LN.LIST.NUM
  42873. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42874. ></RBW-AUTOGEN
  42875. ></RBW-MARKER
  42876. ><RBW-PARABODY>Select Target | Generate Makefile.</RBW-PARABODY
  42877. ></LN.LIST.NUM
  42878. ><LR.LIST.RESULT>The Tcl script <CX5FX5FFILE.NAME>makemake.tcl</CX5FX5FFILE.NAME
  42879. > is executed by the ObjectTeam Shell (otsh) and a makefile is generated in the user environment.</LR.LIST.RESULT
  42880. ></LABEL
  42881. ></SECTION
  42882. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="compile"></RBW-IDXTERM
  42883. ><RBW-ANCHOR ID="13254"></RBW-ANCHOR
  42884. >Building the Executable or Library</S.SECTION.HEAD
  42885. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42886. >Prerequisites</L.LABEL
  42887. ><B.BODY>To successfully compile and run an executable or library, you must have the following:</B.BODY
  42888. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42889. ></RBW-AUTOGEN
  42890. ></RBW-MARKER
  42891. ><RBW-PARABODY>A makefile; see <RBW-XREF REFID="15358" TYPE="XREF-TEXTCOPY">Generating a Makefile</RBW-XREF
  42892. >.</RBW-PARABODY
  42893. ></LB.LIST.BULLET
  42894. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42895. ></RBW-AUTOGEN
  42896. ></RBW-MARKER
  42897. ><RBW-PARABODY>The required source code files (language&truehy;specific source files and header files); see <RBW-XREF REFID="17211" TYPE="XREF-TEXTCOPY">The OOPL Model</RBW-XREF
  42898. >.</RBW-PARABODY
  42899. ></LB.LIST.BULLET
  42900. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42901. ></RBW-AUTOGEN
  42902. ></RBW-MARKER
  42903. ><RBW-PARABODY>All procedural code in the source files must be completely defined for the implementation of methods resulting from messages sent to a class (such as those that change attribute values, perform computations, or send messages to other classes); see <RBW-XREF REFID="26759" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files</RBW-XREF
  42904. >.</RBW-PARABODY
  42905. ></LB.LIST.BULLET
  42906. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42907. ></RBW-AUTOGEN
  42908. ></RBW-MARKER
  42909. ><RBW-PARABODY>The environment properly configured for your chosen language; see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your C++ Environment</RBW-XREF
  42910. >.</RBW-PARABODY
  42911. ></LB.LIST.BULLET
  42912. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42913. ></RBW-AUTOGEN
  42914. ></RBW-MARKER
  42915. ><RBW-PARABODY>Environment variables set for your compiler (if you have a unique setup).</RBW-PARABODY
  42916. ></LB.LIST.BULLET
  42917. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42918. ></RBW-AUTOGEN
  42919. ></RBW-MARKER
  42920. ><RBW-PARABODY>The selected target object (executable or library) must be the current, writable version; that is, its status must be <CX5FX5FOBJECT.NAME>working</CX5FX5FOBJECT.NAME
  42921. >.</RBW-PARABODY
  42922. ></LB.LIST.BULLET
  42923. ></LABEL
  42924. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42925. ><RBW-IDXTERM TERM1="compiling" TERM2="source code"></RBW-IDXTERM
  42926. ><RBW-IDXTERM TERM1="running" TERM2="executable"></RBW-IDXTERM
  42927. ><RBW-ANCHOR ID="14987"></RBW-ANCHOR
  42928. >How to compile a library or an executable</L.LABEL
  42929. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42930. ></RBW-AUTOGEN
  42931. ></RBW-MARKER
  42932. ><RBW-PARABODY>To compile and run the procedure:</RBW-PARABODY
  42933. ></P.PROCEDURE
  42934. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42935. ></RBW-AUTOGEN
  42936. ></RBW-MARKER
  42937. ><RBW-PARABODY>Move to the System level in Implementation model.</RBW-PARABODY
  42938. ></LN.LIST.NUM
  42939. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42940. ></RBW-AUTOGEN
  42941. ></RBW-MARKER
  42942. ><RBW-PARABODY>In the Information area, select the library or executable.</RBW-PARABODY
  42943. ></LN.LIST.NUM
  42944. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  42945. ></RBW-AUTOGEN
  42946. ></RBW-MARKER
  42947. ><RBW-PARABODY>Select one of the following:</RBW-PARABODY
  42948. ></LN.LIST.NUM
  42949. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  42950. ></RBW-MARKER
  42951. ><RBW-PARABODY>Target | Compile</RBW-PARABODY
  42952. ></LB2.LIST.BULLET.2
  42953. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  42954. ></RBW-MARKER
  42955. ><RBW-PARABODY>Target | Compile With Options, then specify the compiler options in the dialog box</RBW-PARABODY
  42956. ></LB2.LIST.BULLET.2
  42957. ><LR.LIST.RESULT>ObjectTeam executes the makefile with the command make &truehy;f makefile, reporting progress in a Monitor window.</LR.LIST.RESULT
  42958. ></LABEL
  42959. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42960. >How to run an executable</L.LABEL
  42961. ><B.BODY>After the target object is compiled successfully, it is ready to be used. If your target object is an executable, you can run it.</B.BODY
  42962. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  42963. ></RBW-AUTOGEN
  42964. ></RBW-MARKER
  42965. ><RBW-PARABODY>To run an executable:</RBW-PARABODY
  42966. ></P.PROCEDURE
  42967. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  42968. ></RBW-AUTOGEN
  42969. ></RBW-MARKER
  42970. ><RBW-PARABODY>Select the executable in the Information area.</RBW-PARABODY
  42971. ></LN.LIST.NUM
  42972. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  42973. ></RBW-AUTOGEN
  42974. ></RBW-MARKER
  42975. ><RBW-PARABODY>Select Target | Run from the menu bar.</RBW-PARABODY
  42976. ></LN.LIST.NUM
  42977. ></LABEL
  42978. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42979. >Conduct a final check for errors</L.LABEL
  42980. ><B.BODY>As always, before you distribute anything, conduct a quality check of your work. If necessary, fix the source files, fix the ObjectTeam model, regenerate the code, and retest the executable.</B.BODY
  42981. ></LABEL
  42982. ></SECTION
  42983. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="18109"></RBW-ANCHOR
  42984. >Regenerating Code<RBW-IDXTERM TERM1="code regeneration" TERM2="edited C++ source file"></RBW-IDXTERM
  42985. ></S.SECTION.HEAD
  42986. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  42987. >Design changes and code changes</L.LABEL
  42988. ><B.BODY>ObjectTeam supports incremental development. You can generate code from your models, edit that code, and regenerate the code without losing your changes. You can work with models during design and with code during implementation, shifting your focus between the two as necessary.</B.BODY
  42989. ><B.BODY>It is, however, important that you make changes where appropriate.</B.BODY
  42990. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42991. ></RBW-AUTOGEN
  42992. ></RBW-MARKER
  42993. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the code</CX5FX5FBULLET.EMPHASIS
  42994. > when you are adding code that is not generated by ObjectTeam (for example, adding method bodies), or when you are making local changes to the code (for example, adding a missing attribute or operation to a class).</RBW-PARABODY
  42995. ></LB.LIST.BULLET
  42996. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  42997. ></RBW-AUTOGEN
  42998. ></RBW-MARKER
  42999. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the model</CX5FX5FBULLET.EMPHASIS
  43000. > when you are changing the structure of the model (for example, if you are changing the class hierarchy or class associations), or when you are making global changes to the code (for example, if you are changing the name of a class, attribute, or operation).</RBW-PARABODY
  43001. ></LB.LIST.BULLET
  43002. ></LABEL
  43003. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43004. >Editing generated files</L.LABEL
  43005. ><B.BODY>The generated C++ files are framework files that need some additions before they can be turned into an executable or library. Comments in the file indicate where you should add code, as described in <RBW-XREF REFID="26759" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files</RBW-XREF
  43006. >. When you regenerate a C++ file, the code generator transfers the user&truehy;edited sections from the old file to the newly generated file. </B.BODY
  43007. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  43008. ></RBW-AUTOGEN
  43009. >The code generator preserves only the comment&truehy;delimited areas of the generated C++ file. Changes you make to other areas of the generated C++ file are lost when you regenerate the file.</W.WARNING
  43010. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43011. ></RBW-AUTOGEN
  43012. >Header files are also regenerated.</N.NOTE
  43013. ></LABEL
  43014. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43015. >Editing the ObjectTeam model</L.LABEL
  43016. ><B.BODY>If you modify the ObjectTeam model, you typically regenerate the H++ and C++ source files. As described above, regenerating the H++ file and regenerating the C++ file preserve your changes to the original files.</B.BODY
  43017. ><B.BODY>If, in the model, you rename, delete, or change the signature of an operation, the matching function in the generated C++ file is no longer correct. ObjectTeam preserves the original function, however, you must edit the generated file to correct the code. </B.BODY
  43018. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  43019. ></RBW-AUTOGEN
  43020. ></RBW-MARKER
  43021. ><RBW-PARABODY>When you rename or delete an operation, the function in the generated C++ file is marked as <CX5FX5FBULLET.EMPHASIS>OBSOLETE_CODE</CX5FX5FBULLET.EMPHASIS
  43022. >. In this way, the code generator preserves the function in case you want to rename it or move it to another class.</RBW-PARABODY
  43023. ></LB.LIST.BULLET
  43024. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00421.tif" origseq="29" origtype="I" origdoc="../../sources/cpp/cppcodg.fm5.mif"></RBW-GRAPHIC
  43025. ></FAR.FIGURE.ANCHOR.RIGHT
  43026. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  43027. ></RBW-AUTOGEN
  43028. ></RBW-MARKER
  43029. ><RBW-PARABODY>When you change the signature of an operation, the function in the generated C++ file is marked as <CX5FX5FBULLET.EMPHASIS>OLD_CODE</CX5FX5FBULLET.EMPHASIS
  43030. >. This allows you to easily find and edit the affected functions.</RBW-PARABODY
  43031. ></LB.LIST.BULLET
  43032. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00422.tif" origseq="35" origtype="I" origdoc="../../sources/cpp/cppcodg.fm5.mif"></RBW-GRAPHIC
  43033. ></FAR.FIGURE.ANCHOR.RIGHT
  43034. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  43035. ></RBW-AUTOGEN
  43036. >You must remove OLD_CODE and OBSOLETE_CODE sections before you can regenerate the C++ file.</W.WARNING
  43037. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43038. >Definition of function signature</SL.SUBLABEL
  43039. ><B.BODY>A function signature is the heading of the function. For example:</B.BODY
  43040. ><EWM.EXAMPLEW.MONO>void ReturnedRental::getOverview(long int begin, long int end, RentProductSet &result)</EWM.EXAMPLEW.MONO
  43041. ></LABEL
  43042. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43043. >How to regenerate source code files</L.LABEL
  43044. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  43045. ></RBW-AUTOGEN
  43046. ></RBW-MARKER
  43047. ><RBW-PARABODY>To regenerate one or more H++ or C++ source files:</RBW-PARABODY
  43048. ></P.PROCEDURE
  43049. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  43050. ></RBW-AUTOGEN
  43051. ></RBW-MARKER
  43052. ><RBW-PARABODY>Move to the System level of the Implementation phase.</RBW-PARABODY
  43053. ></LN.LIST.NUM
  43054. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  43055. ></RBW-AUTOGEN
  43056. ></RBW-MARKER
  43057. ><RBW-PARABODY>Select the files that you want to regenerate.</RBW-PARABODY
  43058. ></LN.LIST.NUM
  43059. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  43060. ></RBW-AUTOGEN
  43061. ></RBW-MARKER
  43062. ><RBW-PARABODY>Select Utilities | Generate C++ | Selected.</RBW-PARABODY
  43063. ></LN.LIST.NUM
  43064. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the files.</LR.LIST.RESULT
  43065. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43066. >For more information</SL.SUBLABEL
  43067. ><B.BODY>See <RBW-XREF REFID="34047" TYPE="XREF-TEXTCOPY">Generating C++ Code</RBW-XREF
  43068. > for more information about the Utilities | Generate C++ menu item.</B.BODY
  43069. ><RBWAUTO-0001></RBWAUTO-0001
  43070. ><!--
  43071.  
  43072.  
  43073.  
  43074.  
  43075.  
  43076. CONVERTING SOURCE FILE ../../sources/cpp/cppnpers.fm5.mif
  43077.  
  43078.  
  43079. --><B.BODY></B.BODY
  43080. ><B.BODY></B.BODY
  43081. ><B.BODY></B.BODY
  43082. ><B.BODY></B.BODY
  43083. ><B.BODY></B.BODY
  43084. ></LABEL
  43085. ></SECTION
  43086. ></CHAPTER
  43087. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  43088. ></RBW-AUTOGEN
  43089. >Mapping <RBW-ANCHOR ID="22643"></RBW-ANCHOR
  43090. >Modeling Data <RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  43091. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  43092. ></RBW-SYSOBJ
  43093. >to C++</C.CHAPTER.HEAD
  43094. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43095. >Introduction</L.LABEL
  43096. ><B.BODY>This chapter explains how particular parts of classes and class specifications are generated into C++ code. It provides short examples of CDs and the results produced when you generate C++ code.</B.BODY
  43097. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  43098. ></RBW-AUTOGEN
  43099. >For a complete example application modeled, generated and completed in ObjectTeam see <RBW-XREF REFID="11059" TYPE="XREF-TEXTCOPY">Example Application</RBW-XREF
  43100. >.</T.TIP
  43101. ></LABEL
  43102. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43103. >In this chapter</L.LABEL
  43104. ><B.BODY>This chapter contains the following sections:</B.BODY
  43105. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  43106. ></ENTRY
  43107. ></RBW-ROW
  43108. ></THEAD
  43109. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26569" TYPE="XREF-TEXTCOPY">Mapping ObjectTeam Classes&rbwtab;3–2</RBW-XREF
  43110. ></SB.SECTION.BLOCK.TABLE
  43111. ></ENTRY
  43112. ></RBW-ROW
  43113. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11407" TYPE="XREF-TEXTCOPY">Mapping Attributes&rbwtab;3–8</RBW-XREF
  43114. ></SB.SECTION.BLOCK.TABLE
  43115. ></ENTRY
  43116. ></RBW-ROW
  43117. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29516" TYPE="XREF-TEXTCOPY">Mapping Methods&rbwtab;3–19</RBW-XREF
  43118. ></SB.SECTION.BLOCK.TABLE
  43119. ></ENTRY
  43120. ></RBW-ROW
  43121. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Mapping Parameters&rbwtab;3–32</RBW-XREF
  43122. ></SB.SECTION.BLOCK.TABLE
  43123. ></ENTRY
  43124. ></RBW-ROW
  43125. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22663" TYPE="XREF-TEXTCOPY">Constructors&rbwtab;3–37</RBW-XREF
  43126. ></SB.SECTION.BLOCK.TABLE
  43127. ></ENTRY
  43128. ></RBW-ROW
  43129. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22715" TYPE="XREF-TEXTCOPY">Destructors&rbwtab;3–46</RBW-XREF
  43130. ></SB.SECTION.BLOCK.TABLE
  43131. ></ENTRY
  43132. ></RBW-ROW
  43133. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25351" TYPE="XREF-TEXTCOPY">Mapping Inheritance&rbwtab;3–49</RBW-XREF
  43134. ></SB.SECTION.BLOCK.TABLE
  43135. ></ENTRY
  43136. ></RBW-ROW
  43137. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34926" TYPE="XREF-TEXTCOPY">Mapping Associations&rbwtab;3–55</RBW-XREF
  43138. ></SB.SECTION.BLOCK.TABLE
  43139. ></ENTRY
  43140. ></RBW-ROW
  43141. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32807" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations&rbwtab;3–86</RBW-XREF
  43142. ></SB.SECTION.BLOCK.TABLE
  43143. ></ENTRY
  43144. ></RBW-ROW
  43145. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29909" TYPE="XREF-TEXTCOPY">Handling External Classes&rbwtab;3–107</RBW-XREF
  43146. ></SB.SECTION.BLOCK.TABLE
  43147. ></ENTRY
  43148. ></RBW-ROW
  43149. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40407" TYPE="XREF-TEXTCOPY">Handling Special ObjectTeam Classes&rbwtab;3–113</RBW-XREF
  43150. ></SB.SECTION.BLOCK.TABLE
  43151. ></ENTRY
  43152. ></RBW-ROW
  43153. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23714" TYPE="XREF-TEXTCOPY">What is Not Supported by the C++ Code Generator&rbwtab;3–122</RBW-XREF
  43154. ></SB.SECTION.BLOCK.TABLE
  43155. ></ENTRY
  43156. ></RBW-ROW
  43157. ></TBODY
  43158. ></TGROUP
  43159. ></RBW-TABLE
  43160. ></LABEL
  43161. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26569"></RBW-ANCHOR
  43162. >Mapping ObjectTeam Classes</S.SECTION.HEAD
  43163. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43164. >Introduction</L.LABEL
  43165. ><B.BODY>In ObjectTeam, a class in a Class Diagram is generated into a header file and a source file, unless the ObjectTeam class is used to model a special C++ construction. The interface of a class is stored in the header file (<RBWAUTO-0017>className</RBWAUTO-0017
  43166. >.h), the source code in a C++ source code file (<RBWAUTO-0017>className</RBWAUTO-0017
  43167. >.cpp).</B.BODY
  43168. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43169. ></RBW-AUTOGEN
  43170. >In this chapter, the extensions <CX5FX5FFILE.NAME>.h</CX5FX5FFILE.NAME
  43171. > and .<CX5FX5FFILE.NAME>cpp</CX5FX5FFILE.NAME
  43172. > are used. These are the extensions for generated C++ files on Windows platforms. On UNIX&truehy;based platforms, the extensions are <CX5FX5FFILE.NAME>.hxx</CX5FX5FFILE.NAME
  43173. > and <CX5FX5FFILE.NAME>.cxx</CX5FX5FFILE.NAME
  43174. > respectively.</N.NOTE
  43175. ></LABEL
  43176. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43177. >Special C++ constructions</L.LABEL
  43178. ><B.BODY>Besides for modeling C++ classes, you can use ObjectTeam classes for modeling the special C++ constructions (generic) <CX5FX5FINPUT>typedef</CX5FX5FINPUT
  43179. > and <CX5FX5FINPUT>enum</CX5FX5FINPUT
  43180. >:</B.BODY
  43181. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="145p"><COLSPEC COLNAME="2" COLWIDTH="303p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C++ element</CELLHEADING
  43182. ></ENTRY
  43183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>for More details</CELLHEADING
  43184. ></ENTRY
  43185. ></RBW-ROW
  43186. ></THEAD
  43187. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Typedef</CELLBODY
  43188. ></ENTRY
  43189. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24618" TYPE="XREF-TEXTCOPY">Mapping Typedef Classes</RBW-XREF
  43190. ></CELLBODY
  43191. ></ENTRY
  43192. ></RBW-ROW
  43193. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generic Typedef</CELLBODY
  43194. ></ENTRY
  43195. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12612" TYPE="XREF-TEXTCOPY">Mapping Generic Typedef Classes</RBW-XREF
  43196. ></CELLBODY
  43197. ></ENTRY
  43198. ></RBW-ROW
  43199. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Enum</CELLBODY
  43200. ></ENTRY
  43201. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13941" TYPE="XREF-TEXTCOPY">Mapping Enum Classes</RBW-XREF
  43202. ></CELLBODY
  43203. ></ENTRY
  43204. ></RBW-ROW
  43205. ></TBODY
  43206. ></TGROUP
  43207. ></RBW-TABLE
  43208. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43209. ></RBW-AUTOGEN
  43210. >ObjectTeam does not generate code for classes that have the class property External Class Source specified (see <RBW-XREF REFID="41268" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  43211. >).</N.NOTE
  43212. ></LABEL
  43213. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43214. ><RBW-ANCHOR ID="41268"></RBW-ANCHOR
  43215. >Editing Class Properties</L.LABEL
  43216. ><B.BODY>In the Object Design phase, you can define class properties that control the class’s implementation and access level within C++. The code generated for a class is, among other things, based on its property values. </B.BODY
  43217. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  43218. ></RBW-AUTOGEN
  43219. ></RBW-MARKER
  43220. ><RBW-PARABODY>To edit properties of a class:</RBW-PARABODY
  43221. ></P.PROCEDURE
  43222. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  43223. ></RBW-AUTOGEN
  43224. ></RBW-MARKER
  43225. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  43226. ></LN.LIST.NUM
  43227. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  43228. ></RBW-AUTOGEN
  43229. ></RBW-MARKER
  43230. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  43231. ></LN.LIST.NUM
  43232. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  43233. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  43234. ></RBW-AUTOGEN
  43235. ></RBW-MARKER
  43236. ><RBW-PARABODY>Select the class name.</RBW-PARABODY
  43237. ></LN.LIST.NUM
  43238. ><LR.LIST.RESULT>The class properties appear on the right side of the dialog box.</LR.LIST.RESULT
  43239. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00423.unk" origfile="pics/dbedprcl.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  43240. ></FA2.FIGURE.ANCHOR.2
  43241. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43242. ></RBW-AUTOGEN
  43243. >Properties can be distributed over multiple property pages. You can select a property page by clicking its tab (Misc, Text).</N2.NOTE.2
  43244. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  43245. ></RBW-AUTOGEN
  43246. ></RBW-MARKER
  43247. ><RBW-PARABODY>The following class properties are available:</RBW-PARABODY
  43248. ></LN.LIST.NUM
  43249. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="133p"><COLSPEC COLNAME="2" COLWIDTH="37p"><COLSPEC COLNAME="3" COLWIDTH="156p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  43250. ></ENTRY
  43251. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  43252. ></ENTRY
  43253. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  43254. ></ENTRY
  43255. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  43256. ></ENTRY
  43257. ></RBW-ROW
  43258. ></THEAD
  43259. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>External Include List</CELLBODY
  43260. ></ENTRY
  43261. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  43262. ></ENTRY
  43263. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>(in external classes): the header file(s) that must be included if the external class is used</CELLBODY
  43264. ></ENTRY
  43265. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="39660" TYPE="XREF-TEXTCOPY">Specifying External Header Files</RBW-XREF
  43266. ></CELLBODY
  43267. ></ENTRY
  43268. ></RBW-ROW
  43269. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dynamic Destructor</CELLBODY
  43270. ></ENTRY
  43271. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  43272. ></ENTRY
  43273. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>whether virtual must always or never be generated</CELLBODY
  43274. ></ENTRY
  43275. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="39716" TYPE="XREF-TEXTCOPY">Specifying a Virtual Destructor</RBW-XREF
  43276. ></CELLBODY
  43277. ></ENTRY
  43278. ></RBW-ROW
  43279. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>External Class Source</CELLBODY
  43280. ></ENTRY
  43281. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  43282. ></ENTRY
  43283. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>the file(s) whose contents will be copied over to the class’s header file. </CELLBODY
  43284. ></ENTRY
  43285. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="20009" TYPE="XREF-TEXTCOPY">Specifying an External Source</RBW-XREF
  43286. ></CELLBODY
  43287. ></ENTRY
  43288. ></RBW-ROW
  43289. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  43290. ></ENTRY
  43291. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  43292. ></ENTRY
  43293. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional attribute notes, which do appear in the generated code as C++ comments</CELLBODY
  43294. ></ENTRY
  43295. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="14417" TYPE="XREF-TEXTCOPY">Specifying Free Text for a Class</RBW-XREF
  43296. ></CELLBODY
  43297. ></ENTRY
  43298. ></RBW-ROW
  43299. ></TBODY
  43300. ></TGROUP
  43301. ></RBW-TABLE
  43302. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  43303. ></RBW-AUTOGEN
  43304. ></RBW-MARKER
  43305. ><RBW-PARABODY>Change the property values of your choice and click OK.</RBW-PARABODY
  43306. ></LN.LIST.NUM
  43307. ></LABEL
  43308. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43309. >Example</L.LABEL
  43310. ><FA.FIGURE.ANCHOR>In this example CD the class Author is associated with another class, Book.</FA.FIGURE.ANCHOR
  43311. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00424.unk" origfile="pics/authbook.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  43312. ></FA.FIGURE.ANCHOR
  43313. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43314. >Author.h</SL.SUBLABEL
  43315. ><B.BODY>This is a sample of the header file generated for the class Author. </B.BODY
  43316. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43317. ></RBW-AUTOGEN
  43318. >Specific elements of generated header files are further discussed in this chapter.</N.NOTE
  43319. ><B.BODY></B.BODY
  43320. ><EM.EXAMPLE.MONO>//</EM.EXAMPLE.MONO
  43321. ><EM.EXAMPLE.MONO>// File          : Author.h</EM.EXAMPLE.MONO
  43322. ><EM.EXAMPLE.MONO>//</EM.EXAMPLE.MONO
  43323. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43324. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43325. ><EM.EXAMPLE.MONO>#ifndef AUTHOR_H</EM.EXAMPLE.MONO
  43326. ><EM.EXAMPLE.MONO>#define AUTHOR_H 1</EM.EXAMPLE.MONO
  43327. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43328. ><EM.EXAMPLE.MONO>#include <string.h></EM.EXAMPLE.MONO
  43329. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43330. ><EM.EXAMPLE.MONO>// Start user added include file section</EM.EXAMPLE.MONO
  43331. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  43332. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43333. ><EM.EXAMPLE.MONO>class Author {</EM.EXAMPLE.MONO
  43334. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43335. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  43336. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  43337. ><EM.EXAMPLE.MONO>    Author();</EM.EXAMPLE.MONO
  43338. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43339. ><EM.EXAMPLE.MONO>    ~Author();</EM.EXAMPLE.MONO
  43340. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43341. ><EM.EXAMPLE.MONO>    // User&truehy;defined methods</EM.EXAMPLE.MONO
  43342. ><EM.EXAMPLE.MONO>    static const char* makeNewName();</EM.EXAMPLE.MONO
  43343. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43344. ><EM.EXAMPLE.MONO>    // Attribute accessor methods</EM.EXAMPLE.MONO
  43345. ><EM.EXAMPLE.MONO>    const char* getName() const;</EM.EXAMPLE.MONO
  43346. ><EM.EXAMPLE.MONO>    void setName(const char* newName);</EM.EXAMPLE.MONO
  43347. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43348. ><EM.EXAMPLE.MONO>    // Association accessor methods</EM.EXAMPLE.MONO
  43349. ><EM.EXAMPLE.MONO>protected:</EM.EXAMPLE.MONO
  43350. ><EM.EXAMPLE.MONO>    // User&truehy;defined methods</EM.EXAMPLE.MONO
  43351. ><EM.EXAMPLE.MONO>    // Attribute accessor methods</EM.EXAMPLE.MONO
  43352. ><EM.EXAMPLE.MONO>    // Association accessor methods</EM.EXAMPLE.MONO
  43353. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  43354. ><EM.EXAMPLE.MONO>    // User&truehy;defined methods</EM.EXAMPLE.MONO
  43355. ><EM.EXAMPLE.MONO>    // Attribute accessor methods</EM.EXAMPLE.MONO
  43356. ><EM.EXAMPLE.MONO>    // Association accessor methods</EM.EXAMPLE.MONO
  43357. ><EM.EXAMPLE.MONO>    // User&truehy;defined attributes</EM.EXAMPLE.MONO
  43358. ><EM.EXAMPLE.MONO>    char name[41];</EM.EXAMPLE.MONO
  43359. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43360. ><EM.EXAMPLE.MONO>    // Association attribute storage</EM.EXAMPLE.MONO
  43361. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  43362. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43363. ><EM.EXAMPLE.MONO>// Do not delete this line &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  43364. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43365. ><EM.EXAMPLE.MONO>inline const char* Author::getName() const</EM.EXAMPLE.MONO
  43366. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  43367. ><EM.EXAMPLE.MONO>    return name;</EM.EXAMPLE.MONO
  43368. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  43369. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43370. ><EM.EXAMPLE.MONO>inline void Author::setName(const char* newName)</EM.EXAMPLE.MONO
  43371. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  43372. ><EM.EXAMPLE.MONO>    strcpy (name, newName);</EM.EXAMPLE.MONO
  43373. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  43374. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43375. ><EM.EXAMPLE.MONO>#endif // AUTHOR_H</EM.EXAMPLE.MONO
  43376. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43377. >Author.cpp</SL.SUBLABEL
  43378. ><B.BODY>This is a sample of the source file generated for the class Author. </B.BODY
  43379. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43380. ></RBW-AUTOGEN
  43381. >Specific elements of generated source files are further discussed in this chapter.</N.NOTE
  43382. ><B.BODY></B.BODY
  43383. ><EM.EXAMPLE.MONO>//</EM.EXAMPLE.MONO
  43384. ><EM.EXAMPLE.MONO>// File          : Author.cpp</EM.EXAMPLE.MONO
  43385. ><EM.EXAMPLE.MONO>//</EM.EXAMPLE.MONO
  43386. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43387. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43388. ><EM.EXAMPLE.MONO>#ifndef AUTHOR_H</EM.EXAMPLE.MONO
  43389. ><EM.EXAMPLE.MONO>#include "Author.h"</EM.EXAMPLE.MONO
  43390. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  43391. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43392. ><EM.EXAMPLE.MONO>// Start user added include file section</EM.EXAMPLE.MONO
  43393. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  43394. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43395. ><EM.EXAMPLE.MONO>Author::Author()</EM.EXAMPLE.MONO
  43396. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  43397. ><EM.EXAMPLE.MONO>    // Start constructor user section</EM.EXAMPLE.MONO
  43398. ><EM.EXAMPLE.MONO>    // End constructor user section</EM.EXAMPLE.MONO
  43399. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  43400. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43401. ><EM.EXAMPLE.MONO>Author::~Author()</EM.EXAMPLE.MONO
  43402. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  43403. ><EM.EXAMPLE.MONO>    // Start destructor user section</EM.EXAMPLE.MONO
  43404. ><EM.EXAMPLE.MONO>    // End destructor user section</EM.EXAMPLE.MONO
  43405. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  43406. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43407. ><EM.EXAMPLE.MONO>const char* Author::makeNewName()</EM.EXAMPLE.MONO
  43408. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  43409. ><EM.EXAMPLE.MONO>    // !! Implement this function !!</EM.EXAMPLE.MONO
  43410. ><EM.EXAMPLE.MONO>    int makeNewName_is_not_yet_implemented;</EM.EXAMPLE.MONO
  43411. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  43412. ></LABEL
  43413. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="free text" TERM2="property"></RBW-IDXTERM
  43414. ><RBW-IDXTERM TERM1="property" TERM2="free text"></RBW-IDXTERM
  43415. >Specifying <RBW-ANCHOR ID="14417"></RBW-ANCHOR
  43416. >Free Text for a Class</SS.SUBSEC.HEAD
  43417. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43418. >Free Text</L.LABEL
  43419. ><B.BODY>You can attach notes to your classes using the class property Free Text. What you specify as free text appears as comment lines in the generated header file.</B.BODY
  43420. ></LABEL
  43421. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43422. >Example</L.LABEL
  43423. ><B.BODY>In the following example, free text has been specified for the class <CX5FX5FEMPHASIS>Person</CX5FX5FEMPHASIS
  43424. >:</B.BODY
  43425. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Generated header file</CX5FX5FBULLET.EMPHASIS
  43426. >:</B.BODY
  43427. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43428. ><EM.EXAMPLE.MONO>// File          : Person.h</EM.EXAMPLE.MONO
  43429. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43430. ><EM.EXAMPLE.MONO>// Start user added include file section</EM.EXAMPLE.MONO
  43431. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  43432. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43433. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43434. ><EM.EXAMPLE.MONO>// <CX5FX5FBULLET.EMPHASIS>This is Free Text as it was entered for the class Person</CX5FX5FBULLET.EMPHASIS
  43435. ></EM.EXAMPLE.MONO
  43436. ><EM.EXAMPLE.MONO>class Person {</EM.EXAMPLE.MONO
  43437. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43438. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  43439. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43440. ></LABEL
  43441. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43442. >How to enter free text</L.LABEL
  43443. ><B.BODY>You enter free text for a class through the following property:</B.BODY
  43444. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  43445. ></ENTRY
  43446. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  43447. ></ENTRY
  43448. ></RBW-ROW
  43449. ></THEAD
  43450. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  43451. ></ENTRY
  43452. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  43453. ></ENTRY
  43454. ></RBW-ROW
  43455. ></TBODY
  43456. ></TGROUP
  43457. ></RBW-TABLE
  43458. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43459. >For more information</SL.SUBLABEL
  43460. ><B.BODY>See <RBW-XREF REFID="41268" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  43461. ></B.BODY
  43462. ></LABEL
  43463. ></SUBSECTION
  43464. ></SECTION
  43465. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="11407"></RBW-ANCHOR
  43466. >Mapping Attributes</S.SECTION.HEAD
  43467. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43468. >Introduction</L.LABEL
  43469. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="mapping of"></RBW-IDXTERM
  43470. ><RBW-IDXTERM TERM1="mapping" TERM2="attribute"></RBW-IDXTERM
  43471. ><RBW-IDXTERM TERM1="Java, generated" TERM2="attribute"></RBW-IDXTERM
  43472. >ObjectTeam maps data attributes of normal ObjectTeam classes to C++ attributes.</B.BODY
  43473. ></LABEL
  43474. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43475. >Attribute syntax</L.LABEL
  43476. ><B.BODY>In ObjectTeam, the following syntax is used to specify data attributes for a class:</B.BODY
  43477. ><E.EXAMPLE>[ / | $ | *] name : type = initial&truehy;value</E.EXAMPLE
  43478. ><B.BODY>where</B.BODY
  43479. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="61p"><COLSPEC COLNAME="2" COLWIDTH="123p"><COLSPEC COLNAME="3" COLWIDTH="262p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>special </CELLHEADING
  43480. ><CELLHEADING>CHAR</CELLHEADING
  43481. ></ENTRY
  43482. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>indicates</CELLHEADING
  43483. ></ENTRY
  43484. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>details</CELLHEADING
  43485. ></ENTRY
  43486. ></RBW-ROW
  43487. ></THEAD
  43488. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/</CELLBODY
  43489. ></ENTRY
  43490. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> a derived attribute</CELLBODY
  43491. ></ENTRY
  43492. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Ignored by the C++ code generator</CELLBODY
  43493. ></ENTRY
  43494. ></RBW-ROW
  43495. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$</CELLBODY
  43496. ></ENTRY
  43497. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> a class attribute (static)</CELLBODY
  43498. ></ENTRY
  43499. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="39515" TYPE="XREF-TEXTCOPY">Specifying Static Attributes</RBW-XREF
  43500. ></CELLBODY
  43501. ></ENTRY
  43502. ></RBW-ROW
  43503. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>*</CELLBODY
  43504. ></ENTRY
  43505. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> a key attribute</CELLBODY
  43506. ></ENTRY
  43507. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="35790" TYPE="XREF-TEXTCOPY">Specifying Mandatory Attributes</RBW-XREF
  43508. ></CELLBODY
  43509. ></ENTRY
  43510. ></RBW-ROW
  43511. ></TBODY
  43512. ></TGROUP
  43513. ></RBW-TABLE
  43514. ></LABEL
  43515. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43516. >Data types</L.LABEL
  43517. ><B.BODY>You must specify the data type of each attribute.</B.BODY
  43518. ><B.BODY>See <RBW-XREF REFID="19914" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  43519. > for more information. <RBW-IDXTERM TERM1="attribute" TERM2="default value"></RBW-IDXTERM
  43520. ><RBW-IDXTERM TERM1="default value, for attribute"></RBW-IDXTERM
  43521. ><RBW-IDXTERM TERM1="initial value, for attribute"></RBW-IDXTERM
  43522. >You can also specify a default value for attributes.</B.BODY
  43523. ></LABEL
  43524. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43525. ><RBW-ANCHOR ID="29362"></RBW-ANCHOR
  43526. >Editing Attribute Properties</L.LABEL
  43527. ><B.BODY>In the Object Design phase, you define properties of data attributes. These properties define the access level of the attribute, as well as whether or not the attribute is mandatory (non&truehy;nullable).</B.BODY
  43528. ><B.BODY>The code generated for a data attribute is based on its properties.To edit attribute properties:</B.BODY
  43529. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  43530. ></RBW-AUTOGEN
  43531. ></RBW-MARKER
  43532. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  43533. ></LN.LIST.NUM
  43534. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  43535. ></RBW-AUTOGEN
  43536. ></RBW-MARKER
  43537. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  43538. ></LN.LIST.NUM
  43539. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  43540. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  43541. ></RBW-AUTOGEN
  43542. ></RBW-MARKER
  43543. ><RBW-PARABODY>Select an attribute name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  43544. ></LN.LIST.NUM
  43545. ><LR.LIST.RESULT>The attribute properties appear on the right side of the dialog box.</LR.LIST.RESULT
  43546. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00425.unk" origfile="pics/dbedprat.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  43547. ></FA2.FIGURE.ANCHOR.2
  43548. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43549. ></RBW-AUTOGEN
  43550. >Properties can be distributed over multiple property pages. You can select a property page by clicking its tab (Misc, Text).</N2.NOTE.2
  43551. ><LT.LIST.TEXT>The following attribute properties are available:</LT.LIST.TEXT
  43552. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="133p"><COLSPEC COLNAME="2" COLWIDTH="39p"><COLSPEC COLNAME="3" COLWIDTH="156p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  43553. ></ENTRY
  43554. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Page</CELLHEADING
  43555. ></ENTRY
  43556. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  43557. ></ENTRY
  43558. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  43559. ></ENTRY
  43560. ></RBW-ROW
  43561. ></THEAD
  43562. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nullable</CELLBODY
  43563. ></ENTRY
  43564. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  43565. ></ENTRY
  43566. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>if an attribute is included in the parameter list of the constructor</CELLBODY
  43567. ></ENTRY
  43568. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="35790" TYPE="XREF-TEXTCOPY">Specifying Mandatory Attributes</RBW-XREF
  43569. ></CELLBODY
  43570. ></ENTRY
  43571. ></RBW-ROW
  43572. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Access</CELLBODY
  43573. ></ENTRY
  43574. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  43575. ></ENTRY
  43576. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The section in which the attribute’s generated accessor methods must be stored: Public, Protected or Private</CELLBODY
  43577. ></ENTRY
  43578. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="29557" TYPE="XREF-TEXTCOPY">Specifying Attribute Accessor Method Access</RBW-XREF
  43579. ></CELLBODY
  43580. ></ENTRY
  43581. ></RBW-ROW
  43582. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  43583. ></ENTRY
  43584. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  43585. ></ENTRY
  43586. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional attribute notes, which do appear in the generated code as C++ comments</CELLBODY
  43587. ></ENTRY
  43588. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="12435" TYPE="XREF-TEXTCOPY">Specifying Attribute Free Text</RBW-XREF
  43589. ></CELLBODY
  43590. ></ENTRY
  43591. ></RBW-ROW
  43592. ></TBODY
  43593. ></TGROUP
  43594. ></RBW-TABLE
  43595. ><LT.LIST.TEXT>In the remainder of this section, these properties are discussed further.</LT.LIST.TEXT
  43596. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  43597. ></RBW-AUTOGEN
  43598. ></RBW-MARKER
  43599. ><RBW-PARABODY>Change the property values of your choice and click OK.</RBW-PARABODY
  43600. ></LN.LIST.NUM
  43601. ></LABEL
  43602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43603. >In this section</L.LABEL
  43604. ><B.BODY>This section contains the following topics:</B.BODY
  43605. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  43606. ></ENTRY
  43607. ></RBW-ROW
  43608. ></THEAD
  43609. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19914" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types&rbwtab;3–10</RBW-XREF
  43610. ></SB.SECTION.BLOCK.TABLE
  43611. ></ENTRY
  43612. ></RBW-ROW
  43613. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35790" TYPE="XREF-TEXTCOPY">Specifying Mandatory Attributes&rbwtab;3–13</RBW-XREF
  43614. ></SB.SECTION.BLOCK.TABLE
  43615. ></ENTRY
  43616. ></RBW-ROW
  43617. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29557" TYPE="XREF-TEXTCOPY">Specifying Attribute Accessor Method Access&rbwtab;3–15</RBW-XREF
  43618. ></SB.SECTION.BLOCK.TABLE
  43619. ></ENTRY
  43620. ></RBW-ROW
  43621. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39515" TYPE="XREF-TEXTCOPY">Specifying Static Attributes&rbwtab;3–16</RBW-XREF
  43622. ></SB.SECTION.BLOCK.TABLE
  43623. ></ENTRY
  43624. ></RBW-ROW
  43625. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12435" TYPE="XREF-TEXTCOPY">Specifying Attribute Free Text&rbwtab;3–18</RBW-XREF
  43626. ></SB.SECTION.BLOCK.TABLE
  43627. ></ENTRY
  43628. ></RBW-ROW
  43629. ></TBODY
  43630. ></TGROUP
  43631. ></RBW-TABLE
  43632. ><B.BODY></B.BODY
  43633. ></LABEL
  43634. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19914"></RBW-ANCHOR
  43635. >Specifying Attribute Data Types</SS.SUBSEC.HEAD
  43636. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43637. >Data types</L.LABEL
  43638. ><B.BODY>Every data attribute must have a type. <RBW-IDXTERM TERM1="data type" TERM2="for attribute"></RBW-IDXTERM
  43639. ><RBW-IDXTERM TERM1="attribute" TERM2="data type"></RBW-IDXTERM
  43640. >Specify either a standard data type, such as <CX5FX5FINPUT>int</CX5FX5FINPUT
  43641. > or <CX5FX5FINPUT>char</CX5FX5FINPUT
  43642. >, or the name of another (user&truehy;defined) class. For example:</B.BODY
  43643. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="150p"><COLSPEC COLNAME="2" COLWIDTH="298p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attr:short</CELLBODY
  43644. ></ENTRY
  43645. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>(C++ standard type)</CELLBODY
  43646. ></ENTRY
  43647. ></RBW-ROW
  43648. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attr:Time</CELLBODY
  43649. ></ENTRY
  43650. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>(class type)</CELLBODY
  43651. ></ENTRY
  43652. ></RBW-ROW
  43653. ></TBODY
  43654. ></TGROUP
  43655. ></RBW-TABLE
  43656. ></LABEL
  43657. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43658. >Standard data types</L.LABEL
  43659. ><B.BODY>The standard data types are defined in the customization file <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="stand_types customization file"></RBW-IDXTERM
  43660. >stand_types</CX5FX5FFILE.NAME
  43661. >.<CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  43662. >. These are the data types that are valid in the Object Design phase.</B.BODY
  43663. ><B.BODY>The translation between standard data types and C++ data types is defined by the <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="lang_types customization file"></RBW-IDXTERM
  43664. >lang_types.<RBW-IDXTERM TERM1="lang_types customization file"></RBW-IDXTERM
  43665. >lang_types</CX5FX5FFILE.NAME
  43666. > customization file. These are the translations used by the C++ code generator.</B.BODY
  43667. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Example Class:</CX5FX5FBULLET.EMPHASIS
  43668. ></B.BODY
  43669. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00426.unk" origfile="pics/daex1.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  43670. ></FA.FIGURE.ANCHOR
  43671. ><B.BODY><CX5FX5FFILE.NAME>Person.h</CX5FX5FFILE.NAME
  43672. > (generated file):</B.BODY
  43673. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43674. ><EM.EXAMPLE.MONO>class Person {</EM.EXAMPLE.MONO
  43675. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43676. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  43677. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  43678. ><EM.EXAMPLE.MONO>    // Attribute accessor methods</EM.EXAMPLE.MONO
  43679. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>int</CX5FX5FBULLET.EMPHASIS
  43680. > getAge() const;</EM.EXAMPLE.MONO
  43681. ><EM.EXAMPLE.MONO>    void setAge(<CX5FX5FBULLET.EMPHASIS>int</CX5FX5FBULLET.EMPHASIS
  43682. > newAge);</EM.EXAMPLE.MONO
  43683. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  43684. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  43685. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43686. ><EM.EXAMPLE.MONO>    // User&truehy;defined attributes</EM.EXAMPLE.MONO
  43687. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>int</CX5FX5FBULLET.EMPHASIS
  43688. > age;</EM.EXAMPLE.MONO
  43689. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43690. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  43691. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43692. ></LABEL
  43693. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43694. >Customizing the standard data types</L.LABEL
  43695. ><B.BODY>You can add additional data types to the list of standard types by editing the <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  43696. > customization file. If you add additional standard types, you must also provide translations for those data types by editing the <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  43697. > customization file.</B.BODY
  43698. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43699. >For more information</SL.SUBLABEL
  43700. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  43701. ><CX5FX5FTITLE></CX5FX5FTITLE
  43702. > describes how to create and edit customization files. The <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  43703. > and <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  43704. > customization files are ASCII files that can be edited using any text editor.</B.BODY
  43705. ></LABEL
  43706. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43707. >A class as data type</L.LABEL
  43708. ><B.BODY>The indicated type of the attribute <CX5FX5FEMPHASIS>/totalPlayTime </CX5FX5FEMPHASIS
  43709. >is the class Time. This class is defined in the same system.</B.BODY
  43710. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43711. ></RBW-AUTOGEN
  43712. >The class Time could also have been an external class, a class that is defined in another system in the same phase. For more details on external classes, see <RBW-XREF REFID="29909" TYPE="XREF-TEXTCOPY">Handling External Classes</RBW-XREF
  43713. >.</N.NOTE
  43714. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00427.unk" origfile="pics/cltype2.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  43715. ></FA.FIGURE.ANCHOR
  43716. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43717. >Example code (generated)</SL.SUBLABEL
  43718. ><B.BODY>The header file <CX5FX5FFILE.NAME>Time.h</CX5FX5FFILE.NAME
  43719. > is added to the include section of the generated file <CX5FX5FFILE.NAME>AudioMedia.h</CX5FX5FFILE.NAME
  43720. >. </B.BODY
  43721. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43722. ><EM.EXAMPLE.MONO>// File          : AudioMedia.h</EM.EXAMPLE.MONO
  43723. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43724. ><EM.EXAMPLE.MONO>#ifndef TIME_H</EM.EXAMPLE.MONO
  43725. ><EM.EXAMPLE.MONO>#include "<CX5FX5FBULLET.EMPHASIS>Time.h</CX5FX5FBULLET.EMPHASIS
  43726. >"</EM.EXAMPLE.MONO
  43727. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  43728. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43729. ><EM.EXAMPLE.MONO>class AudioMedia {</EM.EXAMPLE.MONO
  43730. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  43731. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  43732. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  43733. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  43734. ><EM.EXAMPLE.MONO>// Attribute accessor methods</EM.EXAMPLE.MONO
  43735. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  43736. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>Time</CX5FX5FBULLET.EMPHASIS
  43737. > getTotalPlayTime() const;</EM.EXAMPLE.MONO
  43738. ><EM.EXAMPLE.MONO>    void setTotalPlayTime(<CX5FX5FBULLET.EMPHASIS>Time</CX5FX5FBULLET.EMPHASIS
  43739. > newTotalPlayTime);</EM.EXAMPLE.MONO
  43740. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43741. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  43742. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  43743. ><EM.EXAMPLE.MONO>    // User&truehy;defined attributes</EM.EXAMPLE.MONO
  43744. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  43745. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>Time</CX5FX5FBULLET.EMPHASIS
  43746. > totalPlayTime;</EM.EXAMPLE.MONO
  43747. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  43748. ></LABEL
  43749. ></SUBSECTION
  43750. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35790"></RBW-ANCHOR
  43751. >Specifying Mandatory Attributes</SS.SUBSEC.HEAD
  43752. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43753. >Introduction</L.LABEL
  43754. ><B.BODY>Mandatory attributes in Cayenne can be:</B.BODY
  43755. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  43756. ></RBW-AUTOGEN
  43757. ></RBW-MARKER
  43758. ><RBW-PARABODY>non&truehy;nullable attributes</RBW-PARABODY
  43759. ></LB.LIST.BULLET
  43760. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  43761. ></RBW-AUTOGEN
  43762. ></RBW-MARKER
  43763. ><RBW-PARABODY>Key attributes</RBW-PARABODY
  43764. ></LB.LIST.BULLET
  43765. ></LABEL
  43766. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43767. ><RBW-ANCHOR ID="20503"></RBW-ANCHOR
  43768. >Non&truehy;nullable attributes</L.LABEL
  43769. ><B.BODY>A non&truehy;nullable attribute is an attribute that must have a value. In C++, attributes are added to the <RBW-IDXTERM TERM1="constructor" TERM2="not nullable attribute"></RBW-IDXTERM
  43770. >parameter list of the constructor if they are non&truehy;nullable. </B.BODY
  43771. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43772. ></RBW-AUTOGEN
  43773. >Non&truehy;key attributes are <CX5FX5FOBJECT.NAME>nullable</CX5FX5FOBJECT.NAME
  43774. > by default.</N.NOTE
  43775. ></LABEL
  43776. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43777. ><RBW-ANCHOR ID="37907"></RBW-ANCHOR
  43778. >Key attributes</L.LABEL
  43779. ><B.BODY>Alternatively, you could make an attribute a key attribute if you want it to be non&truehy;nullable. </B.BODY
  43780. ><B.BODY>Key attributes are data attributes in an ObjectTeam class with a leading asterisk (*). The generated code for non&truehy;nullable attributes and key attributes is identical but key attributes are immediately visible in a CD, whereas an attribute’s state of being non&truehy;nullable is “hidden” behind a property.</B.BODY
  43781. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43782. ></RBW-AUTOGEN
  43783. >Key attributes are <CX5FX5FEMPHASIS>non&truehy;nullable</CX5FX5FEMPHASIS
  43784. > by default.</N.NOTE
  43785. ></LABEL
  43786. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43787. ><CX5FX5FBULLET.EMPHASIS>Example</CX5FX5FBULLET.EMPHASIS
  43788. ></L.LABEL
  43789. ><B.BODY>Here you can see the difference between code generated for nullable and non&truehy;nullable attributes:</B.BODY
  43790. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="75p"><COLSPEC COLNAME="2" COLWIDTH="84p"><COLSPEC COLNAME="3" COLWIDTH="309p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Attribute</CELLHEADING
  43791. ></ENTRY
  43792. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Nullable</CELLHEADING
  43793. ></ENTRY
  43794. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING> constructor </CELLHEADING
  43795. ><CELLHEADING>(generated header file)</CELLHEADING
  43796. ></ENTRY
  43797. ></RBW-ROW
  43798. ></THEAD
  43799. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>age: int</CX5FX5FINPUT
  43800. ></CELLBODY
  43801. ></ENTRY
  43802. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>default</CX5FX5FEMPHASIS
  43803. > </CELLBODY
  43804. ><CELLBODY>or </CELLBODY
  43805. ><CELLBODY><CX5FX5FEMPHASIS>yes</CX5FX5FEMPHASIS
  43806. ></CELLBODY
  43807. ></ENTRY
  43808. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>...</CX5FX5FINPUT
  43809. ></CELLBODY
  43810. ><CELLBODY><CX5FX5FINPUT>public:</CX5FX5FINPUT
  43811. ></CELLBODY
  43812. ><CELLBODY><CX5FX5FINPUT>    // Default constructor/destructor</CX5FX5FINPUT
  43813. ></CELLBODY
  43814. ><CELLBODY><CX5FX5FINPUT>    Person();</CX5FX5FINPUT
  43815. ></CELLBODY
  43816. ><CELLBODY></CELLBODY
  43817. ><CELLBODY><CX5FX5FINPUT>    ~Person();</CX5FX5FINPUT
  43818. ></CELLBODY
  43819. ><CELLBODY><CX5FX5FINPUT>...</CX5FX5FINPUT
  43820. ></CELLBODY
  43821. ></ENTRY
  43822. ></RBW-ROW
  43823. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>age: int</CX5FX5FINPUT
  43824. ></CELLBODY
  43825. ></ENTRY
  43826. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>no</CX5FX5FEMPHASIS
  43827. ></CELLBODY
  43828. ></ENTRY
  43829. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>...</CX5FX5FINPUT
  43830. ></CELLBODY
  43831. ><CELLBODY><CX5FX5FINPUT>public:</CX5FX5FINPUT
  43832. ></CELLBODY
  43833. ><CELLBODY><CX5FX5FINPUT>    // Default constructor/destructor</CX5FX5FINPUT
  43834. ></CELLBODY
  43835. ><CELLBODY><CX5FX5FINPUT>    Person(</CX5FX5FINPUT
  43836. ><RBWAUTO-0012>int i_age</RBWAUTO-0012
  43837. ><RBWAUTO-0015>);</RBWAUTO-0015
  43838. ></CELLBODY
  43839. ><CELLBODY></CELLBODY
  43840. ><CELLBODY><CX5FX5FINPUT>    ~Person();</CX5FX5FINPUT
  43841. ></CELLBODY
  43842. ><CELLBODY><CX5FX5FINPUT>...</CX5FX5FINPUT
  43843. ></CELLBODY
  43844. ></ENTRY
  43845. ></RBW-ROW
  43846. ></TBODY
  43847. ></TGROUP
  43848. ></RBW-TABLE
  43849. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43850. ></RBW-AUTOGEN
  43851. >The code generated for the attribute <CX5FX5FINPUT>*age: int</CX5FX5FINPUT
  43852. > with a default nullability is identical to the code generated for the attribute <CX5FX5FINPUT>age: int</CX5FX5FINPUT
  43853. > (with a nullability of No).</N.NOTE
  43854. ></LABEL
  43855. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43856. >How to specify the nullability</L.LABEL
  43857. ><B.BODY>You specify an attribute’s nullability through the following property:</B.BODY
  43858. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  43859. ></ENTRY
  43860. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  43861. ></ENTRY
  43862. ></RBW-ROW
  43863. ></THEAD
  43864. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nullable</CELLBODY
  43865. ></ENTRY
  43866. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  43867. ></ENTRY
  43868. ></RBW-ROW
  43869. ></TBODY
  43870. ></TGROUP
  43871. ></RBW-TABLE
  43872. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43873. >For more information</SL.SUBLABEL
  43874. ><B.BODY>See <RBW-XREF REFID="29362" TYPE="XREF-TEXTCOPY">Editing Attribute Properties</RBW-XREF
  43875. ></B.BODY
  43876. ></LABEL
  43877. ></SUBSECTION
  43878. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29557"></RBW-ANCHOR
  43879. >Specifying Attribute Accessor Method Access</SS.SUBSEC.HEAD
  43880. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43881. >Attribute accessor methods</L.LABEL
  43882. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="access method"></RBW-IDXTERM
  43883. ><RBW-IDXTERM TERM1="attribute property" TERM2="access method"></RBW-IDXTERM
  43884. ><RBW-IDXTERM TERM1="access property" TERM2="for attribute access method"></RBW-IDXTERM
  43885. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  43886. ><RBW-IDXTERM TERM1="Java, generated" TERM2="attribute access method"></RBW-IDXTERM
  43887. ><RBW-IDXTERM TERM1="attribute access method"></RBW-IDXTERM
  43888. ><RBW-IDXTERM TERM1="method" TERM2="attribute access"></RBW-IDXTERM
  43889. >An <CX5FX5FEMPHASIS>attribute accessor method</CX5FX5FEMPHASIS
  43890. > is a special type of method that gets (reads) and sets (writes) an attribute’s value. By default, the access level of these accessor methods is Public.</B.BODY
  43891. ></LABEL
  43892. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43893. >Read and Write accessor methods</L.LABEL
  43894. ><B.BODY>The setting specified in the Read field affects the access level of the attribute accessor method <CX5FX5FINPUT>get</CX5FX5FINPUT
  43895. ><RBWAUTO-0014>attributeName</RBWAUTO-0014
  43896. >; the setting specified in the Write field the attribute accessor method <CX5FX5FINPUT>set</CX5FX5FINPUT
  43897. ><RBWAUTO-0018>attributeName</RBWAUTO-0018
  43898. >.</B.BODY
  43899. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  43900. ></RBW-AUTOGEN
  43901. >The access level of the user&truehy;defined attribute itself is always <CX5FX5FEMPHASIS>private</CX5FX5FEMPHASIS
  43902. >.</N.NOTE
  43903. ></LABEL
  43904. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43905. >Access level types</L.LABEL
  43906. ><B.BODY>The following levels of access can be selected for accessor methods (Read and Write):</B.BODY
  43907. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  43908. ></RBW-AUTOGEN
  43909. ></RBW-MARKER
  43910. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  43911. >. A public method is accessible anywhere within the program.</RBW-PARABODY
  43912. ></LB.LIST.BULLET
  43913. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  43914. ></RBW-AUTOGEN
  43915. ></RBW-MARKER
  43916. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  43917. >. A protected method behaves as a <CX5FX5FEMPHASIS>public</CX5FX5FEMPHASIS
  43918. > method to a derived class but as a <CX5FX5FEMPHASIS>private</CX5FX5FEMPHASIS
  43919. > method to the rest of the program.</RBW-PARABODY
  43920. ></LB.LIST.BULLET
  43921. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  43922. ></RBW-AUTOGEN
  43923. ></RBW-MARKER
  43924. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  43925. >. A private method can only be accessed by the other methods of its class and by <CX5FX5FEMPHASIS>friends</CX5FX5FEMPHASIS
  43926. > of its class.</RBW-PARABODY
  43927. ></LB.LIST.BULLET
  43928. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  43929. ></RBW-AUTOGEN
  43930. ></RBW-MARKER
  43931. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  43932. >. No accessor methods are generated.</RBW-PARABODY
  43933. ></LB.LIST.BULLET
  43934. ></LABEL
  43935. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43936. >How to specify the access level</L.LABEL
  43937. ><B.BODY>You specify an attribute accessor method’s access level through the following properties:</B.BODY
  43938. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="127p"><COLSPEC COLNAME="2" COLWIDTH="127p"><COLSPEC COLNAME="3" COLWIDTH="192p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Group</CELLHEADING
  43939. ></ENTRY
  43940. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  43941. ></ENTRY
  43942. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  43943. ></ENTRY
  43944. ></RBW-ROW
  43945. ></THEAD
  43946. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Access</CELLBODY
  43947. ></ENTRY
  43948. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Read</CELLBODY
  43949. ></ENTRY
  43950. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  43951. ></ENTRY
  43952. ></RBW-ROW
  43953. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  43954. ></ENTRY
  43955. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Write</CELLBODY
  43956. ></ENTRY
  43957. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  43958. ></ENTRY
  43959. ></RBW-ROW
  43960. ></TBODY
  43961. ></TGROUP
  43962. ></RBW-TABLE
  43963. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43964. >For more information</SL.SUBLABEL
  43965. ><B.BODY>See <RBW-XREF REFID="29362" TYPE="XREF-TEXTCOPY">Editing Attribute Properties</RBW-XREF
  43966. ></B.BODY
  43967. ></LABEL
  43968. ></SUBSECTION
  43969. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39515"></RBW-ANCHOR
  43970. >Specifying Static Attributes</SS.SUBSEC.HEAD
  43971. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43972. >Introduction</L.LABEL
  43973. ><B.BODY>In C++, the need for unsafe global variables can be minimized by declaring a shared member <CX5FX5FEMPHASIS>static</CX5FX5FEMPHASIS
  43974. >. In ObjectTeam, you indicate a data attribute as being static by using a leading dollar sign ($). The attribute itself and its accessor methods will then be made static.</B.BODY
  43975. ></LABEL
  43976. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43977. >How to specify a static attribute</L.LABEL
  43978. ><B.BODY>You specify a static (class) attribute by adding a leading dollar sign ($) to the attribute name.</B.BODY
  43979. ></LABEL
  43980. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  43981. >Example</L.LABEL
  43982. ><B.BODY>In the example class depicted below, the data attribute <CX5FX5FEMPHASIS>totalCounters </CX5FX5FEMPHASIS
  43983. >is a static attribute. The default value of this attribute is 42.</B.BODY
  43984. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00428.unk" origfile="pics/sticatt.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  43985. ></FA.FIGURE.ANCHOR
  43986. ><B.BODY><CX5FX5FFILE.NAME>Counter.h</CX5FX5FFILE.NAME
  43987. > (generated file):</B.BODY
  43988. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  43989. ><EWM.EXAMPLEW.MONO>class Counter {</EWM.EXAMPLEW.MONO
  43990. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  43991. ><EWM.EXAMPLEW.MONO>public:</EWM.EXAMPLEW.MONO
  43992. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  43993. ><EWM.EXAMPLEW.MONO>    // Attribute accessor methods</EWM.EXAMPLEW.MONO
  43994. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  43995. ><EWM.EXAMPLEW.MONO>    <CX5FX5FBULLET.EMPHASIS>static</CX5FX5FBULLET.EMPHASIS
  43996. > int getTotalCounters();</EWM.EXAMPLEW.MONO
  43997. ><EWM.EXAMPLEW.MONO>    <CX5FX5FBULLET.EMPHASIS>static</CX5FX5FBULLET.EMPHASIS
  43998. > void setTotalCounters(int newTotalCounters);</EWM.EXAMPLEW.MONO
  43999. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  44000. ><EWM.EXAMPLEW.MONO>private:</EWM.EXAMPLEW.MONO
  44001. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  44002. ><EWM.EXAMPLEW.MONO>    // User&truehy;defined attributes</EWM.EXAMPLEW.MONO
  44003. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  44004. ><EWM.EXAMPLEW.MONO>    <CX5FX5FBULLET.EMPHASIS>static</CX5FX5FBULLET.EMPHASIS
  44005. > int totalCounters /* = 42 */;</EWM.EXAMPLEW.MONO
  44006. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  44007. ><B.BODY><CX5FX5FFILE.NAME>Counter.cpp</CX5FX5FFILE.NAME
  44008. > (generated file):</B.BODY
  44009. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  44010. ><EWM.EXAMPLEW.MONO>int Counter::totalCounters = (42);</EWM.EXAMPLEW.MONO
  44011. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  44012. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  44013. ></RBW-AUTOGEN
  44014. >This line is only generated if the static attribute has a default value.</N.NOTE
  44015. ></LABEL
  44016. ></SUBSECTION
  44017. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12435"></RBW-ANCHOR
  44018. >Specifying Attribute Free Text</SS.SUBSEC.HEAD
  44019. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44020. >Free Text</L.LABEL
  44021. ><B.BODY>Free text entered for attributes are inserted as C++ comments in the generated header file.</B.BODY
  44022. ></LABEL
  44023. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44024. >Example</L.LABEL
  44025. ><B.BODY>In the following example, free text has been specified for the attribute <CX5FX5FEMPHASIS>age</CX5FX5FEMPHASIS
  44026. >:</B.BODY
  44027. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Generated header file</CX5FX5FBULLET.EMPHASIS
  44028. >:</B.BODY
  44029. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  44030. ><EM.EXAMPLE.MONO>class myClass {</EM.EXAMPLE.MONO
  44031. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  44032. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  44033. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  44034. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>// Free Text entered for the attribute ‘age’</CX5FX5FBULLET.EMPHASIS
  44035. ></EM.EXAMPLE.MONO
  44036. ><EM.EXAMPLE.MONO>    int age;</EM.EXAMPLE.MONO
  44037. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  44038. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  44039. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  44040. ></LABEL
  44041. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44042. >How to enter free text</L.LABEL
  44043. ><B.BODY>You enter an attribute’s free text through the following property:</B.BODY
  44044. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  44045. ></ENTRY
  44046. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  44047. ></ENTRY
  44048. ></RBW-ROW
  44049. ></THEAD
  44050. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  44051. ></ENTRY
  44052. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  44053. ></ENTRY
  44054. ></RBW-ROW
  44055. ></TBODY
  44056. ></TGROUP
  44057. ></RBW-TABLE
  44058. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44059. >For more information</SL.SUBLABEL
  44060. ><B.BODY>See <RBW-XREF REFID="29362" TYPE="XREF-TEXTCOPY">Editing Attribute Properties</RBW-XREF
  44061. ></B.BODY
  44062. ></LABEL
  44063. ></SUBSECTION
  44064. ></SECTION
  44065. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29516"></RBW-ANCHOR
  44066. >Mapping Methods</S.SECTION.HEAD
  44067. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44068. ><RBW-ANCHOR ID="31495"></RBW-ANCHOR
  44069. >Introduction</L.LABEL
  44070. ><B.BODY>In C++, methods consist of a method definition in the header file and the C++ source code that is executed when the method is called in the source file. The ObjectTeam C++ code generator generates the method definition and everything else that can be determined from the ObjectTeam model. You have to provide the method implementation code yourself. </B.BODY
  44071. ><B.BODY>The following generated lines in the source file remind you of this:</B.BODY
  44072. ><EM.EXAMPLE.MONO>// !! Implement this method !!</EM.EXAMPLE.MONO
  44073. ><EM.EXAMPLE.MONO><CX5FX5FVARIABLE>methodType</CX5FX5FVARIABLE
  44074. > <CX5FX5FVARIABLE>methodName</CX5FX5FVARIABLE
  44075. >_is_not_yet_implemented;</EM.EXAMPLE.MONO
  44076. ></LABEL
  44077. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44078. >Method parameters</L.LABEL
  44079. ><B.BODY>Most methods include parameters, which allow the caller to pass information to and from the object that the method is manipulating.</B.BODY
  44080. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44081. >For more information on method parameters</SL.SUBLABEL
  44082. ><B.BODY>See <RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Mapping Parameters</RBW-XREF
  44083. >.</B.BODY
  44084. ></LABEL
  44085. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44086. >Automatically generated methods</L.LABEL
  44087. ><B.BODY>A user&truehy;defined method defined for an ObjectTeam class is generated in a C++ method. Additionally, the C++ code generator generates the following special methods automatically. You do not have to specify them in an ObjectTeam class:</B.BODY
  44088. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  44089. ></RBW-AUTOGEN
  44090. ></RBW-MARKER
  44091. ><RBW-PARABODY>Attribute accessor methods, as described in <RBW-XREF REFID="11407" TYPE="XREF-TEXTCOPY">Mapping Attributes</RBW-XREF
  44092. >.</RBW-PARABODY
  44093. ></LB.LIST.BULLET
  44094. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  44095. ></RBW-AUTOGEN
  44096. ></RBW-MARKER
  44097. ><RBW-PARABODY>Association access methods, as described in <RBW-XREF REFID="10004" TYPE="XREF-TEXTCOPY">Mapping Unidirectional and Bidirectional Associations</RBW-XREF
  44098. >.</RBW-PARABODY
  44099. ></LB.LIST.BULLET
  44100. ></LABEL
  44101. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44102. >Method syntax</L.LABEL
  44103. ><B.BODY>In ObjectTeam, you use the following syntax to specify user&truehy;defined methods in a class:</B.BODY
  44104. ><E.EXAMPLE>[ $ ] name ( [ parameter&truehy;list ] ) [ : return_type ] [ {abstract} ]</E.EXAMPLE
  44105. ><B.BODY>where:</B.BODY
  44106. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="132p"><COLSPEC COLNAME="2" COLWIDTH="163p"><COLSPEC COLNAME="3" COLWIDTH="153p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Special Character</CELLHEADING
  44107. ></ENTRY
  44108. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  44109. ></ENTRY
  44110. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Details</CELLHEADING
  44111. ></ENTRY
  44112. ></RBW-ROW
  44113. ></THEAD
  44114. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>$</CX5FX5FINPUT
  44115. ></CELLBODY
  44116. ></ENTRY
  44117. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>a static function</CELLBODY
  44118. ></ENTRY
  44119. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="18829" TYPE="XREF-TEXTCOPY">Specifying Static Methods</RBW-XREF
  44120. ></CELLBODY
  44121. ></ENTRY
  44122. ></RBW-ROW
  44123. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>name</CX5FX5FVARIABLE
  44124. ></CELLBODY
  44125. ></ENTRY
  44126. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the name of the method</CELLBODY
  44127. ></ENTRY
  44128. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Some special characters are not allowed in operator names. See <RBW-XREF REFID="35965" TYPE="XREF-TEXTCOPY">Overloading Operators</RBW-XREF
  44129. > for alternatives.</CELLBODY
  44130. ></ENTRY
  44131. ></RBW-ROW
  44132. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>parameter&truehy;list</CX5FX5FVARIABLE
  44133. ></CELLBODY
  44134. ></ENTRY
  44135. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>an (optional) list of parameters, separated by commas</CELLBODY
  44136. ></ENTRY
  44137. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Mapping Parameters</RBW-XREF
  44138. ></CELLBODY
  44139. ></ENTRY
  44140. ></RBW-ROW
  44141. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>return_type</CX5FX5FVARIABLE
  44142. ></CELLBODY
  44143. ></ENTRY
  44144. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the (optional) return type of the method: a standard type or a class</CELLBODY
  44145. ></ENTRY
  44146. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  44147. ></ENTRY
  44148. ></RBW-ROW
  44149. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>{abstract}</CX5FX5FINPUT
  44150. ></CELLBODY
  44151. ></ENTRY
  44152. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>a pure virtual function</CELLBODY
  44153. ></ENTRY
  44154. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="29156" TYPE="XREF-TEXTCOPY">Specifying Pure Virtual Methods</RBW-XREF
  44155. ></CELLBODY
  44156. ></ENTRY
  44157. ></RBW-ROW
  44158. ></TBODY
  44159. ></TGROUP
  44160. ></RBW-TABLE
  44161. ></LABEL
  44162. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44163. ><RBW-ANCHOR ID="34259"></RBW-ANCHOR
  44164. >Editing method properties</L.LABEL
  44165. ><B.BODY>You use method properties to provide input to the code generator, such as the access level of method and whether it must be generated as a constant function, a virtual function or an inline function. </B.BODY
  44166. ><B.BODY>The code generated for a method is partly based on its properties.</B.BODY
  44167. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  44168. ></RBW-AUTOGEN
  44169. ></RBW-MARKER
  44170. ><RBW-PARABODY>To edit method properties:</RBW-PARABODY
  44171. ></P.PROCEDURE
  44172. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  44173. ></RBW-AUTOGEN
  44174. ></RBW-MARKER
  44175. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  44176. ></LN.LIST.NUM
  44177. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  44178. ></RBW-AUTOGEN
  44179. ></RBW-MARKER
  44180. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  44181. ></LN.LIST.NUM
  44182. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  44183. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  44184. ></RBW-AUTOGEN
  44185. ></RBW-MARKER
  44186. ><RBW-PARABODY>Select a method name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  44187. ></LN.LIST.NUM
  44188. ><LR.LIST.RESULT>The method properties appear on the right side of the dialog box.</LR.LIST.RESULT
  44189. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00429.unk" origfile="pics/dbedprmt.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  44190. ></FA2.FIGURE.ANCHOR.2
  44191. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  44192. ></RBW-AUTOGEN
  44193. >Properties can be distributed over multiple property pages. You can select a property page by clicking its tab (Misc, Text).</N2.NOTE.2
  44194. ><LT.LIST.TEXT>The following method properties are available:</LT.LIST.TEXT
  44195. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="133p"><COLSPEC COLNAME="2" COLWIDTH="39p"><COLSPEC COLNAME="3" COLWIDTH="156p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  44196. ></ENTRY
  44197. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Page</CELLHEADING
  44198. ></ENTRY
  44199. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  44200. ></ENTRY
  44201. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  44202. ></ENTRY
  44203. ></RBW-ROW
  44204. ></THEAD
  44205. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type </CELLBODY
  44206. ><CELLBODY>Modifier</CELLBODY
  44207. ></ENTRY
  44208. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  44209. ></ENTRY
  44210. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The type modifier of the method </CELLBODY
  44211. ></ENTRY
  44212. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>This works similar to parameter type modifiers (see <RBW-XREF REFID="40884" TYPE="XREF-TEXTCOPY">Modifying Parameter Types</RBW-XREF
  44213. >)</CELLBODY
  44214. ></ENTRY
  44215. ></RBW-ROW
  44216. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant Function</CELLBODY
  44217. ></ENTRY
  44218. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  44219. ></ENTRY
  44220. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>a constant function</CELLBODY
  44221. ></ENTRY
  44222. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="31580" TYPE="XREF-TEXTCOPY">Specifying Constant Functions</RBW-XREF
  44223. ></CELLBODY
  44224. ></ENTRY
  44225. ></RBW-ROW
  44226. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dynamically Bound</CELLBODY
  44227. ></ENTRY
  44228. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  44229. ></ENTRY
  44230. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>a virtual function</CELLBODY
  44231. ></ENTRY
  44232. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="32742" TYPE="XREF-TEXTCOPY">Specifying Virtual Methods</RBW-XREF
  44233. ></CELLBODY
  44234. ></ENTRY
  44235. ></RBW-ROW
  44236. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Inline Method</CELLBODY
  44237. ></ENTRY
  44238. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  44239. ></ENTRY
  44240. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>an inline method (function)</CELLBODY
  44241. ></ENTRY
  44242. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="30308" TYPE="XREF-TEXTCOPY">Specifying Inline Methods</RBW-XREF
  44243. ></CELLBODY
  44244. ></ENTRY
  44245. ></RBW-ROW
  44246. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Access</CELLBODY
  44247. ></ENTRY
  44248. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  44249. ></ENTRY
  44250. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The access level of the generated method</CELLBODY
  44251. ></ENTRY
  44252. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="22538" TYPE="XREF-TEXTCOPY">Specifying Method Access</RBW-XREF
  44253. ></CELLBODY
  44254. ></ENTRY
  44255. ></RBW-ROW
  44256. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  44257. ></ENTRY
  44258. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  44259. ></ENTRY
  44260. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional method comments, which do appear in the generated code as comments</CELLBODY
  44261. ></ENTRY
  44262. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="38516" TYPE="XREF-TEXTCOPY">Specifying Method Free Text</RBW-XREF
  44263. ></CELLBODY
  44264. ></ENTRY
  44265. ></RBW-ROW
  44266. ></TBODY
  44267. ></TGROUP
  44268. ></RBW-TABLE
  44269. ><LT.LIST.TEXT>In the remainder of this section, these properties are discussed further.</LT.LIST.TEXT
  44270. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  44271. ></RBW-AUTOGEN
  44272. ></RBW-MARKER
  44273. ><RBW-PARABODY>Change the property values of your choice and click OK.</RBW-PARABODY
  44274. ></LN.LIST.NUM
  44275. ></LABEL
  44276. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22538"></RBW-ANCHOR
  44277. >Specifying Method Access</SS.SUBSEC.HEAD
  44278. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44279. >Access level types</L.LABEL
  44280. ><B.BODY>The following levels of access can be selected for methods:</B.BODY
  44281. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  44282. ></RBW-AUTOGEN
  44283. ></RBW-MARKER
  44284. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  44285. >. A public method is accessible anywhere within the program.</RBW-PARABODY
  44286. ></LB.LIST.BULLET
  44287. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  44288. ></RBW-AUTOGEN
  44289. ></RBW-MARKER
  44290. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  44291. >. A protected method behaves as a <CX5FX5FEMPHASIS>public</CX5FX5FEMPHASIS
  44292. > method to a derived class but as a <CX5FX5FEMPHASIS>private</CX5FX5FEMPHASIS
  44293. > method to the rest of the program.</RBW-PARABODY
  44294. ></LB.LIST.BULLET
  44295. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  44296. ></RBW-AUTOGEN
  44297. ></RBW-MARKER
  44298. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  44299. >. A private method can only be accessed by the other methods of its class and by <CX5FX5FEMPHASIS>friends</CX5FX5FEMPHASIS
  44300. > of its class.</RBW-PARABODY
  44301. ></LB.LIST.BULLET
  44302. ></LABEL
  44303. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44304. ><RBW-ANCHOR ID="31329"></RBW-ANCHOR
  44305. >Visibility</L.LABEL
  44306. ><B.BODY>You can display the access level of methods in your diagram by checking Options | Show Visibility in the Class Diagram Editor. Method names will then be displayed with the following leading characters indicating the method’s access level:</B.BODY
  44307. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="318p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Special character</CELLHEADING
  44308. ></ENTRY
  44309. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  44310. ></ENTRY
  44311. ></RBW-ROW
  44312. ></THEAD
  44313. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>+</CELLBODY
  44314. ></ENTRY
  44315. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  44316. ></ENTRY
  44317. ></RBW-ROW
  44318. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>#</CELLBODY
  44319. ></ENTRY
  44320. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Protected</CELLBODY
  44321. ></ENTRY
  44322. ></RBW-ROW
  44323. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  44324. ></ENTRY
  44325. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private</CELLBODY
  44326. ></ENTRY
  44327. ></RBW-ROW
  44328. ></TBODY
  44329. ></TGROUP
  44330. ></RBW-TABLE
  44331. ><B.BODY>These special characters can also be used to <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  44332. > the access level of methods. Typing a hatch sign (#) before a method name will set the access level of the method to Protected, for example. </B.BODY
  44333. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  44334. ></RBW-AUTOGEN
  44335. >The special characters only work if the menu entry Options | Show Visibility in the Class Diagram Editor has been checked. Otherwise, the special characters will just be regarded as part of the method name.</W.WARNING
  44336. ></LABEL
  44337. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44338. >How to specify the access level</L.LABEL
  44339. ><B.BODY>There are two ways of specifying a method’s access level type:</B.BODY
  44340. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  44341. ></RBW-AUTOGEN
  44342. ></RBW-MARKER
  44343. ><RBW-PARABODY>Using the method property Method Access.</RBW-PARABODY
  44344. ></LB.LIST.BULLET
  44345. ><LT.LIST.TEXT>This property can be found on the property page Misc in the Edit Properties dialog box.</LT.LIST.TEXT
  44346. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  44347. ></RBW-AUTOGEN
  44348. ></RBW-MARKER
  44349. ><RBW-PARABODY>Typing a special character before the method name (see <RBW-XREF REFID="31329" TYPE="XREF-TEXTCOPY">Visibility</RBW-XREF
  44350. >)</RBW-PARABODY
  44351. ></LB.LIST.BULLET
  44352. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44353. >For more information</SL.SUBLABEL
  44354. ><B.BODY>See <RBW-XREF REFID="34259" TYPE="XREF-TEXTCOPY">Editing method properties</RBW-XREF
  44355. ></B.BODY
  44356. ></LABEL
  44357. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44358. >Example</L.LABEL
  44359. ><B.BODY>The following example methods have different access level specifications:</B.BODY
  44360. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="205p"><COLSPEC COLNAME="2" COLWIDTH="243p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  44361. ></ENTRY
  44362. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Method Access</CELLHEADING
  44363. ></ENTRY
  44364. ></RBW-ROW
  44365. ></THEAD
  44366. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod1 (): String</CELLBODY
  44367. ></ENTRY
  44368. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  44369. ></ENTRY
  44370. ></RBW-ROW
  44371. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod2 (): String</CELLBODY
  44372. ></ENTRY
  44373. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Protected</CELLBODY
  44374. ></ENTRY
  44375. ></RBW-ROW
  44376. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod3 (): String</CELLBODY
  44377. ></ENTRY
  44378. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private</CELLBODY
  44379. ></ENTRY
  44380. ></RBW-ROW
  44381. ></TBODY
  44382. ></TGROUP
  44383. ></RBW-TABLE
  44384. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Generated header file:</CX5FX5FBULLET.EMPHASIS
  44385. ></B.BODY
  44386. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  44387. ><EM.EXAMPLE.MONO>class myClass {</EM.EXAMPLE.MONO
  44388. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  44389. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>public</CX5FX5FBULLET.EMPHASIS
  44390. >:</EM.EXAMPLE.MONO
  44391. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  44392. ><EM.EXAMPLE.MONO>    // User&truehy;defined methods</EM.EXAMPLE.MONO
  44393. ><EM.EXAMPLE.MONO>    String myMethod1();</EM.EXAMPLE.MONO
  44394. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  44395. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>protected</CX5FX5FBULLET.EMPHASIS
  44396. >:</EM.EXAMPLE.MONO
  44397. ><EM.EXAMPLE.MONO>    // User&truehy;defined methods</EM.EXAMPLE.MONO
  44398. ><EM.EXAMPLE.MONO>    String myMethod2();</EM.EXAMPLE.MONO
  44399. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  44400. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>private</CX5FX5FBULLET.EMPHASIS
  44401. >:</EM.EXAMPLE.MONO
  44402. ><EM.EXAMPLE.MONO>    // User&truehy;defined methods</EM.EXAMPLE.MONO
  44403. ><EM.EXAMPLE.MONO>    String myMethod3():</EM.EXAMPLE.MONO
  44404. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  44405. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  44406. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  44407. ></LABEL
  44408. ></SUBSECTION
  44409. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31580"></RBW-ANCHOR
  44410. >Specifying Constant Functions</SS.SUBSEC.HEAD
  44411. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44412. >How to specify a constant function</L.LABEL
  44413. ><B.BODY>You specify a constant method (function) through the following property:</B.BODY
  44414. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  44415. ></ENTRY
  44416. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  44417. ></ENTRY
  44418. ></RBW-ROW
  44419. ></THEAD
  44420. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant Function</CELLBODY
  44421. ></ENTRY
  44422. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  44423. ></ENTRY
  44424. ></RBW-ROW
  44425. ></TBODY
  44426. ></TGROUP
  44427. ></RBW-TABLE
  44428. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44429. >For more information</SL.SUBLABEL
  44430. ><B.BODY>See <RBW-XREF REFID="34259" TYPE="XREF-TEXTCOPY">Editing method properties</RBW-XREF
  44431. ></B.BODY
  44432. ></LABEL
  44433. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44434. ><CX5FX5FBULLET.EMPHASIS>Example</CX5FX5FBULLET.EMPHASIS
  44435. ></L.LABEL
  44436. ><B.BODY>The first method is a constant function, the second not:</B.BODY
  44437. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="141p"><COLSPEC COLNAME="2" COLWIDTH="79p"><COLSPEC COLNAME="3" COLWIDTH="226p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  44438. ></ENTRY
  44439. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Constant </CELLHEADING
  44440. ><CELLHEADING>Function</CELLHEADING
  44441. ></ENTRY
  44442. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Method </CELLHEADING
  44443. ><CELLHEADING>(header file)</CELLHEADING
  44444. ></ENTRY
  44445. ></RBW-ROW
  44446. ></THEAD
  44447. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): String</CELLBODY
  44448. ></ENTRY
  44449. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  44450. ></ENTRY
  44451. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod () </CX5FX5FINPUT
  44452. ><RBWAUTO-0012>const</RBWAUTO-0012
  44453. ><RBWAUTO-0015>;</RBWAUTO-0015
  44454. ></CELLBODY
  44455. ></ENTRY
  44456. ></RBW-ROW
  44457. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): String</CELLBODY
  44458. ></ENTRY
  44459. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>No</CELLBODY
  44460. ></ENTRY
  44461. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod ();</CX5FX5FINPUT
  44462. ></CELLBODY
  44463. ></ENTRY
  44464. ></RBW-ROW
  44465. ></TBODY
  44466. ></TGROUP
  44467. ></RBW-TABLE
  44468. ></LABEL
  44469. ></SUBSECTION
  44470. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32742"></RBW-ANCHOR
  44471. >Specifying Virtual Methods</SS.SUBSEC.HEAD
  44472. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44473. >How to specify a virtual function</L.LABEL
  44474. ><B.BODY>You specify a virtual method (function) through the following property:</B.BODY
  44475. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  44476. ></ENTRY
  44477. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  44478. ></ENTRY
  44479. ></RBW-ROW
  44480. ></THEAD
  44481. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dynamically Bound</CELLBODY
  44482. ></ENTRY
  44483. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  44484. ></ENTRY
  44485. ></RBW-ROW
  44486. ></TBODY
  44487. ></TGROUP
  44488. ></RBW-TABLE
  44489. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44490. >For more information</SL.SUBLABEL
  44491. ><B.BODY>See <RBW-XREF REFID="34259" TYPE="XREF-TEXTCOPY">Editing method properties</RBW-XREF
  44492. ></B.BODY
  44493. ></LABEL
  44494. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44495. ><CX5FX5FBULLET.EMPHASIS>Example </CX5FX5FBULLET.EMPHASIS
  44496. ></L.LABEL
  44497. ><B.BODY>The first method is virtual, the second not.</B.BODY
  44498. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="141p"><COLSPEC COLNAME="2" COLWIDTH="79p"><COLSPEC COLNAME="3" COLWIDTH="226p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  44499. ></ENTRY
  44500. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Dynamically Bound</CELLHEADING
  44501. ></ENTRY
  44502. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Method </CELLHEADING
  44503. ><CELLHEADING>(header file)</CELLHEADING
  44504. ></ENTRY
  44505. ></RBW-ROW
  44506. ></THEAD
  44507. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): String</CELLBODY
  44508. ></ENTRY
  44509. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  44510. ></ENTRY
  44511. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>virtual</CX5FX5FBULLET.EMPHASIS
  44512. ><RBWAUTO-0015> String myMethod ();</RBWAUTO-0015
  44513. ></CELLBODY
  44514. ></ENTRY
  44515. ></RBW-ROW
  44516. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): String</CELLBODY
  44517. ></ENTRY
  44518. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>No</CELLBODY
  44519. ></ENTRY
  44520. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod ();</CX5FX5FINPUT
  44521. ></CELLBODY
  44522. ></ENTRY
  44523. ></RBW-ROW
  44524. ></TBODY
  44525. ></TGROUP
  44526. ></RBW-TABLE
  44527. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  44528. ></RBW-AUTOGEN
  44529. >This property specifies <CX5FX5FEMPHASIS>virtual</CX5FX5FEMPHASIS
  44530. > functions. To specify <CX5FX5FEMPHASIS>pure virtual</CX5FX5FEMPHASIS
  44531. > functions, use the keyword <CX5FX5FINPUT>{abstract}</CX5FX5FINPUT
  44532. > (see <RBW-XREF REFID="29156" TYPE="XREF-TEXTCOPY">Specifying Pure Virtual Methods</RBW-XREF
  44533. >).</N.NOTE
  44534. ></LABEL
  44535. ></SUBSECTION
  44536. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29156"></RBW-ANCHOR
  44537. >Specifying Pure Virtual Methods</SS.SUBSEC.HEAD
  44538. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44539. >Abstract class</L.LABEL
  44540. ><B.BODY>An abstract class is a class that can be used only as a base class of some other class. A class is abstract if it has at least one pure virtual function. </B.BODY
  44541. ><B.BODY>A pure virtual function must not be implemented in the abstract class but in a subclass derived from the abstract class. Therefore, no method body is generated for a pure virtual function.</B.BODY
  44542. ></LABEL
  44543. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44544. >How to specify a pure virtual method</L.LABEL
  44545. ><B.BODY>You specify a pure virtual method (function) by adding the following trailing keyword to the method name:</B.BODY
  44546. ><EM.EXAMPLE.MONO>{abstract}</EM.EXAMPLE.MONO
  44547. ></LABEL
  44548. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44549. >Example</L.LABEL
  44550. ><B.BODY>The first method is abstract, the second is not.</B.BODY
  44551. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="189p"><COLSPEC COLNAME="2" COLWIDTH="261p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Method Specification</CELLHEADING
  44552. ></ENTRY
  44553. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Method</CELLHEADING
  44554. ><CELLHEADING>(Header File)</CELLHEADING
  44555. ></ENTRY
  44556. ></RBW-ROW
  44557. ></THEAD
  44558. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): String {abstract}</CELLBODY
  44559. ></ENTRY
  44560. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>virtual</CX5FX5FBULLET.EMPHASIS
  44561. > String myMethod() <CX5FX5FBULLET.EMPHASIS>= 0;</CX5FX5FBULLET.EMPHASIS
  44562. ></CELLBODY
  44563. ></ENTRY
  44564. ></RBW-ROW
  44565. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): String</CELLBODY
  44566. ></ENTRY
  44567. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod();</CX5FX5FINPUT
  44568. ></CELLBODY
  44569. ></ENTRY
  44570. ></RBW-ROW
  44571. ></TBODY
  44572. ></TGROUP
  44573. ></RBW-TABLE
  44574. ></LABEL
  44575. ></SUBSECTION
  44576. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="30308"></RBW-ANCHOR
  44577. >Specifying Inline Methods</SS.SUBSEC.HEAD
  44578. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44579. >How to specify an inline method</L.LABEL
  44580. ><B.BODY>You specify an inline method (function) through the following method property:</B.BODY
  44581. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  44582. ></ENTRY
  44583. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  44584. ></ENTRY
  44585. ></RBW-ROW
  44586. ></THEAD
  44587. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Inline Method</CELLBODY
  44588. ></ENTRY
  44589. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  44590. ></ENTRY
  44591. ></RBW-ROW
  44592. ></TBODY
  44593. ></TGROUP
  44594. ></RBW-TABLE
  44595. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44596. >For more information</SL.SUBLABEL
  44597. ><B.BODY>See <RBW-XREF REFID="34259" TYPE="XREF-TEXTCOPY">Editing method properties</RBW-XREF
  44598. ></B.BODY
  44599. ></LABEL
  44600. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44601. >Location of the implementation</L.LABEL
  44602. ><B.BODY>Unlike other methods, the implementation of inline methods is stored in the generated <CX5FX5FEMPHASIS>header</CX5FX5FEMPHASIS
  44603. > file.</B.BODY
  44604. ></LABEL
  44605. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44606. ><CX5FX5FBULLET.EMPHASIS>Example</CX5FX5FBULLET.EMPHASIS
  44607. ></L.LABEL
  44608. ><B.BODY>The first method is inline, the second not.</B.BODY
  44609. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="141p"><COLSPEC COLNAME="2" COLWIDTH="79p"><COLSPEC COLNAME="3" COLWIDTH="333p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  44610. ></ENTRY
  44611. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Inline Method</CELLHEADING
  44612. ></ENTRY
  44613. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Method Implementation</CELLHEADING
  44614. ></ENTRY
  44615. ></RBW-ROW
  44616. ></THEAD
  44617. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): int</CELLBODY
  44618. ></ENTRY
  44619. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  44620. ></ENTRY
  44621. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>(header file):</CELLBODY
  44622. ><CELLBODY></CELLBODY
  44623. ><CELLBODY><CX5FX5FBULLET.EMPHASIS>inline</CX5FX5FBULLET.EMPHASIS
  44624. ><RBWAUTO-0015> int myClass::myMethod()</RBWAUTO-0015
  44625. ></CELLBODY
  44626. ><CELLBODY><CX5FX5FINPUT>{</CX5FX5FINPUT
  44627. ></CELLBODY
  44628. ><CELLBODY><CX5FX5FINPUT>    // !! Implement this function !!</CX5FX5FINPUT
  44629. ></CELLBODY
  44630. ><CELLBODY><CX5FX5FINPUT>    int myMethod_is_not_yet_implemented;</CX5FX5FINPUT
  44631. ></CELLBODY
  44632. ><CELLBODY><CX5FX5FINPUT>}</CX5FX5FINPUT
  44633. ></CELLBODY
  44634. ></ENTRY
  44635. ></RBW-ROW
  44636. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): int</CELLBODY
  44637. ></ENTRY
  44638. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>No</CELLBODY
  44639. ></ENTRY
  44640. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>(source file):</CELLBODY
  44641. ><CELLBODY></CELLBODY
  44642. ><CELLBODY><CX5FX5FINPUT>int myClass::myMethod()</CX5FX5FINPUT
  44643. ></CELLBODY
  44644. ><CELLBODY><CX5FX5FINPUT>{</CX5FX5FINPUT
  44645. ></CELLBODY
  44646. ><CELLBODY><CX5FX5FINPUT>    // !! Implement this function !!</CX5FX5FINPUT
  44647. ></CELLBODY
  44648. ><CELLBODY><CX5FX5FINPUT>    int myMethod_is_not_yet_implemented;</CX5FX5FINPUT
  44649. ></CELLBODY
  44650. ><CELLBODY><CX5FX5FINPUT>}</CX5FX5FINPUT
  44651. ></CELLBODY
  44652. ></ENTRY
  44653. ></RBW-ROW
  44654. ></TBODY
  44655. ></TGROUP
  44656. ><RBW-ICONIZE></RBW-TABLE
  44657. ><B.BODY></B.BODY
  44658. ></LABEL
  44659. ></SUBSECTION
  44660. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18829"></RBW-ANCHOR
  44661. >Specifying Static Methods</SS.SUBSEC.HEAD
  44662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44663. >Static method</L.LABEL
  44664. ><B.BODY>Use a leading dollar sign ($) if you want a method to be generated as static method.</B.BODY
  44665. ></LABEL
  44666. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44667. >How to specify a static method</L.LABEL
  44668. ><B.BODY>You specify a static method (function) by adding a leading dollar sign ($) to the method name.</B.BODY
  44669. ></LABEL
  44670. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44671. ><CX5FX5FBULLET.EMPHASIS>Example</CX5FX5FBULLET.EMPHASIS
  44672. ></L.LABEL
  44673. ><B.BODY>The first method is static, the second not.<RBWAUTO-0019></RBWAUTO-0019
  44674. ></B.BODY
  44675. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="136p"><COLSPEC COLNAME="2" COLWIDTH="312p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  44676. ></ENTRY
  44677. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Method</CELLHEADING
  44678. ><CELLHEADING>(Header File)</CELLHEADING
  44679. ></ENTRY
  44680. ></RBW-ROW
  44681. ></THEAD
  44682. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$myMethod (): String</CELLBODY
  44683. ></ENTRY
  44684. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>static</CX5FX5FBULLET.EMPHASIS
  44685. ><RBWAUTO-0015> String myMethod();</RBWAUTO-0015
  44686. ></CELLBODY
  44687. ></ENTRY
  44688. ></RBW-ROW
  44689. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (): String</CELLBODY
  44690. ></ENTRY
  44691. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod();</CX5FX5FINPUT
  44692. ></CELLBODY
  44693. ></ENTRY
  44694. ></RBW-ROW
  44695. ></TBODY
  44696. ></TGROUP
  44697. ></RBW-TABLE
  44698. ></LABEL
  44699. ></SUBSECTION
  44700. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35965"></RBW-ANCHOR
  44701. >Overloading <RBW-IDXTERM TERM1="operator" TERM2="overloaded"></RBW-IDXTERM
  44702. >Operators</SS.SUBSEC.HEAD
  44703. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44704. >Introduction</L.LABEL
  44705. ><B.BODY>You can overload operators in ObjectTeam by specifying the operator’s name as method. In some cases, you can use the C++ operators’ syntax; in other cases, you must use specific ObjectTeam operator syntax. The ObjectTeam operator syntax is translated into C++ operators by the code generator.</B.BODY
  44706. ></LABEL
  44707. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44708. >Operator types</L.LABEL
  44709. ><B.BODY>The following table lists the operators that you can use:</B.BODY
  44710. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C++ Operator</CELLHEADING
  44711. ></ENTRY
  44712. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Method in ObjectTeam</CELLHEADING
  44713. ></ENTRY
  44714. ></RBW-ROW
  44715. ></THEAD
  44716. ><TBODY><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator delete</CX5FX5FINPUT
  44717. ></CELLBODY
  44718. ></ENTRY
  44719. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatordelete</CELLBODY
  44720. ></ENTRY
  44721. ></RBW-ROW
  44722. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator new</CX5FX5FINPUT
  44723. ></CELLBODY
  44724. ></ENTRY
  44725. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatornew</CELLBODY
  44726. ></ENTRY
  44727. ></RBW-ROW
  44728. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator!</CX5FX5FINPUT
  44729. ></CELLBODY
  44730. ></ENTRY
  44731. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator!</CELLBODY
  44732. ></ENTRY
  44733. ></RBW-ROW
  44734. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator!=</CX5FX5FINPUT
  44735. ></CELLBODY
  44736. ></ENTRY
  44737. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorNEQ</CELLBODY
  44738. ></ENTRY
  44739. ></RBW-ROW
  44740. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator%</CX5FX5FINPUT
  44741. ></CELLBODY
  44742. ></ENTRY
  44743. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator%</CELLBODY
  44744. ></ENTRY
  44745. ></RBW-ROW
  44746. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator%=</CX5FX5FINPUT
  44747. ></CELLBODY
  44748. ></ENTRY
  44749. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_MOD</CELLBODY
  44750. ></ENTRY
  44751. ></RBW-ROW
  44752. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator&</CX5FX5FINPUT
  44753. ></CELLBODY
  44754. ></ENTRY
  44755. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator&</CELLBODY
  44756. ></ENTRY
  44757. ></RBW-ROW
  44758. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator&&</CX5FX5FINPUT
  44759. ></CELLBODY
  44760. ></ENTRY
  44761. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator&&</CELLBODY
  44762. ></ENTRY
  44763. ></RBW-ROW
  44764. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator&=</CX5FX5FINPUT
  44765. ></CELLBODY
  44766. ></ENTRY
  44767. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_AMPER</CELLBODY
  44768. ></ENTRY
  44769. ></RBW-ROW
  44770. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator()</CX5FX5FINPUT
  44771. ></CELLBODY
  44772. ></ENTRY
  44773. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorFUNC</CELLBODY
  44774. ></ENTRY
  44775. ></RBW-ROW
  44776. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator*</CX5FX5FINPUT
  44777. ></CELLBODY
  44778. ></ENTRY
  44779. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator*</CELLBODY
  44780. ></ENTRY
  44781. ></RBW-ROW
  44782. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator*=</CX5FX5FINPUT
  44783. ></CELLBODY
  44784. ></ENTRY
  44785. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_STAR</CELLBODY
  44786. ></ENTRY
  44787. ></RBW-ROW
  44788. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator+</CX5FX5FINPUT
  44789. ></CELLBODY
  44790. ></ENTRY
  44791. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator+</CELLBODY
  44792. ></ENTRY
  44793. ></RBW-ROW
  44794. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator++</CX5FX5FINPUT
  44795. ></CELLBODY
  44796. ></ENTRY
  44797. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator++</CELLBODY
  44798. ></ENTRY
  44799. ></RBW-ROW
  44800. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator+=</CX5FX5FINPUT
  44801. ></CELLBODY
  44802. ></ENTRY
  44803. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_PLUS</CELLBODY
  44804. ></ENTRY
  44805. ></RBW-ROW
  44806. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator,</CX5FX5FINPUT
  44807. ></CELLBODY
  44808. ></ENTRY
  44809. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorCOMMA</CELLBODY
  44810. ></ENTRY
  44811. ></RBW-ROW
  44812. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator&truehy;</CX5FX5FINPUT
  44813. ></CELLBODY
  44814. ></ENTRY
  44815. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator&truehy;</CELLBODY
  44816. ></ENTRY
  44817. ></RBW-ROW
  44818. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator&truehy;&truehy;</CX5FX5FINPUT
  44819. ></CELLBODY
  44820. ></ENTRY
  44821. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator&truehy;&truehy;</CELLBODY
  44822. ></ENTRY
  44823. ></RBW-ROW
  44824. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator&truehy;=</CX5FX5FINPUT
  44825. ></CELLBODY
  44826. ></ENTRY
  44827. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_MIN</CELLBODY
  44828. ></ENTRY
  44829. ></RBW-ROW
  44830. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator&truehy;></CX5FX5FINPUT
  44831. ></CELLBODY
  44832. ></ENTRY
  44833. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator&truehy;></CELLBODY
  44834. ></ENTRY
  44835. ></RBW-ROW
  44836. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator&truehy;>*</CX5FX5FINPUT
  44837. ></CELLBODY
  44838. ></ENTRY
  44839. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator&truehy;>*</CELLBODY
  44840. ></ENTRY
  44841. ></RBW-ROW
  44842. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator/</CX5FX5FINPUT
  44843. ></CELLBODY
  44844. ></ENTRY
  44845. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorDIV</CELLBODY
  44846. ></ENTRY
  44847. ></RBW-ROW
  44848. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator/=</CX5FX5FINPUT
  44849. ></CELLBODY
  44850. ></ENTRY
  44851. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_DIV</CELLBODY
  44852. ></ENTRY
  44853. ></RBW-ROW
  44854. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator<</CX5FX5FINPUT
  44855. ></CELLBODY
  44856. ></ENTRY
  44857. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator<</CELLBODY
  44858. ></ENTRY
  44859. ></RBW-ROW
  44860. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator<<</CX5FX5FINPUT
  44861. ></CELLBODY
  44862. ></ENTRY
  44863. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator<<</CELLBODY
  44864. ></ENTRY
  44865. ></RBW-ROW
  44866. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator<<=</CX5FX5FINPUT
  44867. ></CELLBODY
  44868. ></ENTRY
  44869. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_LSHIFT</CELLBODY
  44870. ></ENTRY
  44871. ></RBW-ROW
  44872. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator<=</CX5FX5FINPUT
  44873. ></CELLBODY
  44874. ></ENTRY
  44875. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorLE</CELLBODY
  44876. ></ENTRY
  44877. ></RBW-ROW
  44878. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator=</CX5FX5FINPUT
  44879. ></CELLBODY
  44880. ></ENTRY
  44881. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASSIGN</CELLBODY
  44882. ></ENTRY
  44883. ></RBW-ROW
  44884. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator==</CX5FX5FINPUT
  44885. ></CELLBODY
  44886. ></ENTRY
  44887. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorEQ</CELLBODY
  44888. ></ENTRY
  44889. ></RBW-ROW
  44890. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator></CX5FX5FINPUT
  44891. ></CELLBODY
  44892. ></ENTRY
  44893. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator></CELLBODY
  44894. ></ENTRY
  44895. ></RBW-ROW
  44896. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator>=</CX5FX5FINPUT
  44897. ></CELLBODY
  44898. ></ENTRY
  44899. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorGE</CELLBODY
  44900. ></ENTRY
  44901. ></RBW-ROW
  44902. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator>></CX5FX5FINPUT
  44903. ></CELLBODY
  44904. ></ENTRY
  44905. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator>></CELLBODY
  44906. ></ENTRY
  44907. ></RBW-ROW
  44908. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator>>=</CX5FX5FINPUT
  44909. ></CELLBODY
  44910. ></ENTRY
  44911. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_RSHIFT</CELLBODY
  44912. ></ENTRY
  44913. ></RBW-ROW
  44914. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator[]</CX5FX5FINPUT
  44915. ></CELLBODY
  44916. ></ENTRY
  44917. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator[]</CELLBODY
  44918. ></ENTRY
  44919. ></RBW-ROW
  44920. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator^</CX5FX5FINPUT
  44921. ></CELLBODY
  44922. ></ENTRY
  44923. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator^</CELLBODY
  44924. ></ENTRY
  44925. ></RBW-ROW
  44926. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator^=</CX5FX5FINPUT
  44927. ></CELLBODY
  44928. ></ENTRY
  44929. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_CIRCUM</CELLBODY
  44930. ></ENTRY
  44931. ></RBW-ROW
  44932. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator|</CX5FX5FINPUT
  44933. ></CELLBODY
  44934. ></ENTRY
  44935. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator|</CELLBODY
  44936. ></ENTRY
  44937. ></RBW-ROW
  44938. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator|=</CX5FX5FINPUT
  44939. ></CELLBODY
  44940. ></ENTRY
  44941. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorASS_PIPE</CELLBODY
  44942. ></ENTRY
  44943. ></RBW-ROW
  44944. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator||</CX5FX5FINPUT
  44945. ></CELLBODY
  44946. ></ENTRY
  44947. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator||</CELLBODY
  44948. ></ENTRY
  44949. ></RBW-ROW
  44950. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator~</CX5FX5FINPUT
  44951. ></CELLBODY
  44952. ></ENTRY
  44953. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>operator~</CELLBODY
  44954. ></ENTRY
  44955. ></RBW-ROW
  44956. ></TBODY
  44957. ></TGROUP
  44958. ></RBW-TABLE
  44959. ></LABEL
  44960. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  44961. >Conversion Operators</L.LABEL
  44962. ><B.BODY>Conversion operators specify a conversion from a class to the type specified by the name of the conversion type.</B.BODY
  44963. ><B.BODY>You can specify ObjectTeam methods following a certain syntax to force conversion operator generation. The syntax is:</B.BODY
  44964. ><EM.EXAMPLE.MONO>type_conv(): <CX5FX5FVARIABLE>conversionTypeName</CX5FX5FVARIABLE
  44965. ></EM.EXAMPLE.MONO
  44966. ><B.BODY>You can specify the <CX5FX5FEMPHASIS>conversionTypeName</CX5FX5FEMPHASIS
  44967. > further through the method type property Type Modifier (see <RBW-XREF REFID="34259" TYPE="XREF-TEXTCOPY">Editing method properties</RBW-XREF
  44968. >).</B.BODY
  44969. ><B.BODY>The following table lists some examples of conversion operators:</B.BODY
  44970. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="202p"><COLSPEC COLNAME="2" COLWIDTH="147p"><COLSPEC COLNAME="3" COLWIDTH="106p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Conversion Operator</CELLHEADING
  44971. ></ENTRY
  44972. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Method in ObjectTeam</CELLHEADING
  44973. ></ENTRY
  44974. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  44975. ></ENTRY
  44976. ></RBW-ROW
  44977. ></THEAD
  44978. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator int ();</CX5FX5FINPUT
  44979. ></CELLBODY
  44980. ></ENTRY
  44981. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>type_conv() : integer</CELLBODY
  44982. ></ENTRY
  44983. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  44984. ></ENTRY
  44985. ></RBW-ROW
  44986. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator char &();</CX5FX5FINPUT
  44987. ></CELLBODY
  44988. ></ENTRY
  44989. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>type_conv() : char</CELLBODY
  44990. ></ENTRY
  44991. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reference</CELLBODY
  44992. ></ENTRY
  44993. ></RBW-ROW
  44994. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operator const char *();</CX5FX5FINPUT
  44995. ></CELLBODY
  44996. ></ENTRY
  44997. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>type_conv() : char</CELLBODY
  44998. ></ENTRY
  44999. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pointer to Const</CELLBODY
  45000. ></ENTRY
  45001. ></RBW-ROW
  45002. ></TBODY
  45003. ></TGROUP
  45004. ></RBW-TABLE
  45005. ></LABEL
  45006. ></SUBSECTION
  45007. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38516"></RBW-ANCHOR
  45008. >Specifying Method Free Text</SS.SUBSEC.HEAD
  45009. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45010. >Free text</L.LABEL
  45011. ><B.BODY>Free text entered for methods are inserted as C++ comments in the generated header file.</B.BODY
  45012. ></LABEL
  45013. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45014. >How to enter free text</L.LABEL
  45015. ><B.BODY>You enter a method’s free text through the following property:</B.BODY
  45016. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  45017. ></ENTRY
  45018. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  45019. ></ENTRY
  45020. ></RBW-ROW
  45021. ></THEAD
  45022. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  45023. ></ENTRY
  45024. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  45025. ></ENTRY
  45026. ></RBW-ROW
  45027. ></TBODY
  45028. ></TGROUP
  45029. ></RBW-TABLE
  45030. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45031. >For more information</SL.SUBLABEL
  45032. ><B.BODY>See <RBW-XREF REFID="34259" TYPE="XREF-TEXTCOPY">Editing method properties</RBW-XREF
  45033. ></B.BODY
  45034. ></LABEL
  45035. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45036. ><CX5FX5FBULLET.EMPHASIS>Example</CX5FX5FBULLET.EMPHASIS
  45037. ></L.LABEL
  45038. ><B.BODY>In the following example, free text has been specified for the method <CX5FX5FEMPHASIS>myMethod</CX5FX5FEMPHASIS
  45039. >:</B.BODY
  45040. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Generated header file</CX5FX5FBULLET.EMPHASIS
  45041. >:</B.BODY
  45042. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45043. ><EM.EXAMPLE.MONO>class myClass {</EM.EXAMPLE.MONO
  45044. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  45045. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  45046. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  45047. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>// Free Text entered for the method myMethod</CX5FX5FBULLET.EMPHASIS
  45048. ></EM.EXAMPLE.MONO
  45049. ><EM.EXAMPLE.MONO>    int myMethod();</EM.EXAMPLE.MONO
  45050. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  45051. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45052. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45053. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Generated source file:</CX5FX5FBULLET.EMPHASIS
  45054. ></B.BODY
  45055. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45056. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>// Free Text for method myMethod</CX5FX5FBULLET.EMPHASIS
  45057. ></EM.EXAMPLE.MONO
  45058. ><EM.EXAMPLE.MONO>int myClass::myMethod()</EM.EXAMPLE.MONO
  45059. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45060. ><EM.EXAMPLE.MONO>    // !! Implement this function !!</EM.EXAMPLE.MONO
  45061. ><EM.EXAMPLE.MONO>    int myMethod_is_not_yet_implemented;</EM.EXAMPLE.MONO
  45062. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45063. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45064. ></LABEL
  45065. ></SUBSECTION
  45066. ></SECTION
  45067. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="24200"></RBW-ANCHOR
  45068. >Mapping Parameters</S.SECTION.HEAD
  45069. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45070. >Introduction</L.LABEL
  45071. ><B.BODY>Parameters can optionally be added to methods. </B.BODY
  45072. ><B.BODY>Method parameters are used by the caller of the method to provide input values to the method, to hold output values from the method or both. </B.BODY
  45073. ></LABEL
  45074. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45075. >Parameter Syntax</L.LABEL
  45076. ><B.BODY>The parameters in the parameter list are separated by commas. Every parameter needs to have a type, which can either be a standard type or a (user&truehy;defined) class:</B.BODY
  45077. ><E.EXAMPLE>(par_name:par_type, par_name:par_type, ...)</E.EXAMPLE
  45078. ></LABEL
  45079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45080. ><RBW-ANCHOR ID="15651"></RBW-ANCHOR
  45081. >Editing parameter properties</L.LABEL
  45082. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  45083. ></RBW-AUTOGEN
  45084. ></RBW-MARKER
  45085. ><RBW-PARABODY>To edit parameter properties:</RBW-PARABODY
  45086. ></P.PROCEDURE
  45087. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  45088. ></RBW-AUTOGEN
  45089. ></RBW-MARKER
  45090. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  45091. ></LN.LIST.NUM
  45092. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  45093. ></RBW-AUTOGEN
  45094. ></RBW-MARKER
  45095. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  45096. ></LN.LIST.NUM
  45097. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  45098. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  45099. ></RBW-AUTOGEN
  45100. ></RBW-MARKER
  45101. ><RBW-PARABODY>Select a parameter name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  45102. ></LN.LIST.NUM
  45103. ><LR.LIST.RESULT>The parameter properties appear on the right side of the dialog box.</LR.LIST.RESULT
  45104. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00430.unk" origfile="pics/dbedprpm.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45105. ></FA2.FIGURE.ANCHOR.2
  45106. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45107. ></RBW-AUTOGEN
  45108. >Properties can be distributed over multiple property pages. You can select a property page by clicking its tab (Misc, Text).</N2.NOTE.2
  45109. ><LT.LIST.TEXT>The following parameter properties are available:</LT.LIST.TEXT
  45110. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="94p"><COLSPEC COLNAME="2" COLWIDTH="39p"><COLSPEC COLNAME="3" COLWIDTH="126p"><COLSPEC COLNAME="4" COLWIDTH="166p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  45111. ></ENTRY
  45112. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Page</CELLHEADING
  45113. ></ENTRY
  45114. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  45115. ></ENTRY
  45116. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Details</CELLHEADING
  45117. ></ENTRY
  45118. ></RBW-ROW
  45119. ></THEAD
  45120. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  45121. ></ENTRY
  45122. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  45123. ></ENTRY
  45124. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The modifier for the parameter type</CELLBODY
  45125. ></ENTRY
  45126. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="40884" TYPE="XREF-TEXTCOPY">Modifying Parameter Types</RBW-XREF
  45127. ></CELLBODY
  45128. ></ENTRY
  45129. ></RBW-ROW
  45130. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  45131. ></ENTRY
  45132. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  45133. ></ENTRY
  45134. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The default value of a parameter</CELLBODY
  45135. ></ENTRY
  45136. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="15392" TYPE="XREF-TEXTCOPY">Specifying a Parameter’s Default Value</RBW-XREF
  45137. ></CELLBODY
  45138. ></ENTRY
  45139. ></RBW-ROW
  45140. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  45141. ></ENTRY
  45142. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  45143. ></ENTRY
  45144. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional method comments</CELLBODY
  45145. ></ENTRY
  45146. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>These comments are not added to the generated files</CELLBODY
  45147. ></ENTRY
  45148. ></RBW-ROW
  45149. ></TBODY
  45150. ></TGROUP
  45151. ></RBW-TABLE
  45152. ><LT.LIST.TEXT>In the remainder of this section, these properties are discussed further.</LT.LIST.TEXT
  45153. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  45154. ></RBW-AUTOGEN
  45155. ></RBW-MARKER
  45156. ><RBW-PARABODY>Change the property values of your choice and click OK.</RBW-PARABODY
  45157. ></LN.LIST.NUM
  45158. ></LABEL
  45159. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40884"></RBW-ANCHOR
  45160. >Modifying Parameter Types</SS.SUBSEC.HEAD
  45161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45162. >Introduction</L.LABEL
  45163. ><B.BODY>You can use the parameter property Type Modifier to specify in which form the parameter type must be used:</B.BODY
  45164. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="121p"><COLSPEC COLNAME="2" COLWIDTH="153p"><COLSPEC COLNAME="3" COLWIDTH="252p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  45165. ></ENTRY
  45166. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Example Method in CD</CELLHEADING
  45167. ></ENTRY
  45168. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Method </CELLHEADING
  45169. ><CELLHEADING>(header file)</CELLHEADING
  45170. ></ENTRY
  45171. ></RBW-ROW
  45172. ></THEAD
  45173. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  45174. ></ENTRY
  45175. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (i: int)</CELLBODY
  45176. ></ENTRY
  45177. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod(int i);</CX5FX5FINPUT
  45178. ></CELLBODY
  45179. ></ENTRY
  45180. ></RBW-ROW
  45181. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reference</CELLBODY
  45182. ></ENTRY
  45183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (i: int)</CELLBODY
  45184. ></ENTRY
  45185. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod(int& i);</CX5FX5FINPUT
  45186. ></CELLBODY
  45187. ></ENTRY
  45188. ></RBW-ROW
  45189. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reference to Const</CELLBODY
  45190. ></ENTRY
  45191. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (i: int)</CELLBODY
  45192. ></ENTRY
  45193. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod(const int& i);</CX5FX5FINPUT
  45194. ></CELLBODY
  45195. ></ENTRY
  45196. ></RBW-ROW
  45197. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pointer</CELLBODY
  45198. ></ENTRY
  45199. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (i: int)</CELLBODY
  45200. ></ENTRY
  45201. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod(int* i);</CX5FX5FINPUT
  45202. ></CELLBODY
  45203. ></ENTRY
  45204. ></RBW-ROW
  45205. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pointer to Const</CELLBODY
  45206. ></ENTRY
  45207. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (i: int)</CELLBODY
  45208. ></ENTRY
  45209. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod(const int* i);</CX5FX5FINPUT
  45210. ></CELLBODY
  45211. ></ENTRY
  45212. ></RBW-ROW
  45213. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Value</CELLBODY
  45214. ></ENTRY
  45215. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (i: int)</CELLBODY
  45216. ></ENTRY
  45217. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>String myMethod(int i);</CX5FX5FINPUT
  45218. ></CELLBODY
  45219. ></ENTRY
  45220. ></RBW-ROW
  45221. ></TBODY
  45222. ></TGROUP
  45223. ><RBW-ICONIZE></RBW-TABLE
  45224. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45225. ></RBW-AUTOGEN
  45226. >If the type modifier Default is chosen, the code generator determines if a pointer or a type by value is generated.</N.NOTE
  45227. ><B.BODY>The property Type Modifier can also be used to modify the type of a method.</B.BODY
  45228. ></LABEL
  45229. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45230. >Location of include statement</L.LABEL
  45231. ><B.BODY>The <CX5FX5FINPUT>include</CX5FX5FINPUT
  45232. > statement for a type is usually placed in the generated <CX5FX5FEMPHASIS>source</CX5FX5FEMPHASIS
  45233. > file, and a forward declaration is placed in the generated header file. However, if the type modifier Value has been selected, the include statement is placed in the <CX5FX5FEMPHASIS>header</CX5FX5FEMPHASIS
  45234. > file.</B.BODY
  45235. ></LABEL
  45236. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45237. >User&truehy;defined Type Modifier</L.LABEL
  45238. ><B.BODY>Instead of selecting a type modifier from the list, you can also enter a user&truehy;defined one using the parameter property Type Modifier. You can enter any string in combination with the variable <CX5FX5FINPUT>~$name</CX5FX5FINPUT
  45239. >, which indicates the type’s name:</B.BODY
  45240. ><B.BODY>For the following user&truehy;defined type modifier, for example, the same code as for the type modifier Pointer will be generated:</B.BODY
  45241. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="96p"><COLSPEC COLNAME="2" COLWIDTH="156p"><COLSPEC COLNAME="3" COLWIDTH="195p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  45242. ></ENTRY
  45243. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Example Method in CD</CELLHEADING
  45244. ></ENTRY
  45245. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Operation </CELLHEADING
  45246. ><CELLHEADING>(header file)</CELLHEADING
  45247. ></ENTRY
  45248. ></RBW-ROW
  45249. ></THEAD
  45250. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>~$name *</CX5FX5FINPUT
  45251. ></CELLBODY
  45252. ></ENTRY
  45253. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod (i: int)</CELLBODY
  45254. ></ENTRY
  45255. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>void myMethod(int * i);</CX5FX5FINPUT
  45256. ></CELLBODY
  45257. ></ENTRY
  45258. ></RBW-ROW
  45259. ></TBODY
  45260. ></TGROUP
  45261. ></RBW-TABLE
  45262. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45263. ></RBW-AUTOGEN
  45264. >If <CX5FX5FINPUT>~$name</CX5FX5FINPUT
  45265. > is not found in the string, the string is appended to the type name and used as C++ type.</N.NOTE
  45266. ></LABEL
  45267. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45268. >How to modify a parameter type</L.LABEL
  45269. ><B.BODY>You modify a parameter type through the following parameter property:</B.BODY
  45270. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  45271. ></ENTRY
  45272. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  45273. ></ENTRY
  45274. ></RBW-ROW
  45275. ></THEAD
  45276. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  45277. ></ENTRY
  45278. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  45279. ></ENTRY
  45280. ></RBW-ROW
  45281. ></TBODY
  45282. ></TGROUP
  45283. ></RBW-TABLE
  45284. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45285. >For more information on editing parameter properties</SL.SUBLABEL
  45286. ><B.BODY>See <RBW-XREF REFID="15651" TYPE="XREF-TEXTCOPY">Editing parameter properties</RBW-XREF
  45287. ></B.BODY
  45288. ></LABEL
  45289. ></SUBSECTION
  45290. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15392"></RBW-ANCHOR
  45291. >Specifying a Parameter’s Default Value</SS.SUBSEC.HEAD
  45292. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45293. >Default value</L.LABEL
  45294. ><B.BODY>In a call to a method, valid values for the method’s parameters <CX5FX5FEMPHASIS>must</CX5FX5FEMPHASIS
  45295. > be supplied, unless a default value has been specified. If a parameter has a default value, the parameter value <CX5FX5FEMPHASIS>can</CX5FX5FEMPHASIS
  45296. > be specified in the call, overriding the default value. </B.BODY
  45297. ><B.BODY>Parameters with a default value are usually referred to as optional parameters; parameters without a default value as required parameters.</B.BODY
  45298. ></LABEL
  45299. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45300. >How to specify a default value</L.LABEL
  45301. ><B.BODY>You specify a parameter’s default value through the following parameter property:</B.BODY
  45302. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  45303. ></ENTRY
  45304. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  45305. ></ENTRY
  45306. ></RBW-ROW
  45307. ></THEAD
  45308. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  45309. ></ENTRY
  45310. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  45311. ></ENTRY
  45312. ></RBW-ROW
  45313. ></TBODY
  45314. ></TGROUP
  45315. ></RBW-TABLE
  45316. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45317. >For more information on editing parameter properties</SL.SUBLABEL
  45318. ><B.BODY>See <RBW-XREF REFID="15651" TYPE="XREF-TEXTCOPY">Editing parameter properties</RBW-XREF
  45319. ></B.BODY
  45320. ></LABEL
  45321. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45322. >Order of parameters</L.LABEL
  45323. ><B.BODY>If you specify multiple parameters in a parameter list, make sure that you always specify parameters <CX5FX5FEMPHASIS>with</CX5FX5FEMPHASIS
  45324. > a default value after parameters <CX5FX5FEMPHASIS>without</CX5FX5FEMPHASIS
  45325. > a default value.</B.BODY
  45326. ></LABEL
  45327. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45328. >Example</L.LABEL
  45329. ><B.BODY>In the following example, the default value 42 has been specified for parameter <CX5FX5FEMPHASIS>my2ndParameter</CX5FX5FEMPHASIS
  45330. >:</B.BODY
  45331. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="261p"><COLSPEC COLNAME="2" COLWIDTH="339p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Example Method</CELLHEADING
  45332. ></ENTRY
  45333. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Method (header file)</CELLHEADING
  45334. ></ENTRY
  45335. ></RBW-ROW
  45336. ></THEAD
  45337. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myMethod(my1stParameter:String,</CELLBODY
  45338. ><CELLBODY>&rbwtab;my2ndParameter:int)</CELLBODY
  45339. ></ENTRY
  45340. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>void myMethod(String my1stParameter, </CX5FX5FINPUT
  45341. ></CELLBODY
  45342. ><CELLBODY><RBWAUTO-0016>&rbwtab;int my2ndParameter</RBWAUTO-0016
  45343. ><RBWAUTO-0012>= 42</RBWAUTO-0012
  45344. ><RBWAUTO-0015>);</RBWAUTO-0015
  45345. ></CELLBODY
  45346. ></ENTRY
  45347. ></RBW-ROW
  45348. ></TBODY
  45349. ></TGROUP
  45350. ><RBW-ICONIZE></RBW-TABLE
  45351. ></LABEL
  45352. ></SUBSECTION
  45353. ></SECTION
  45354. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22663"></RBW-ANCHOR
  45355. >Constructors</S.SECTION.HEAD
  45356. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45357. >Introduction</L.LABEL
  45358. ><B.BODY>The C++ code generator generates a constructor for:</B.BODY
  45359. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45360. ></RBW-AUTOGEN
  45361. ></RBW-MARKER
  45362. ><RBW-PARABODY>Classes with a method <CX5FX5FINPUT>$create</CX5FX5FINPUT
  45363. ></RBW-PARABODY
  45364. ></LB.LIST.BULLET
  45365. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45366. ></RBW-AUTOGEN
  45367. ></RBW-MARKER
  45368. ><RBW-PARABODY>Classes with neither a <CX5FX5FINPUT>$create</CX5FX5FINPUT
  45369. > nor a <CX5FX5FINPUT>$create (</CX5FX5FINPUT
  45370. ><CX5FX5FVARIABLE>parameterList</CX5FX5FVARIABLE
  45371. ><CX5FX5FINPUT>)</CX5FX5FINPUT
  45372. > method</RBW-PARABODY
  45373. ></LB.LIST.BULLET
  45374. ><B.BODY>The code generator does not generate a constructor for:</B.BODY
  45375. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45376. ></RBW-AUTOGEN
  45377. ></RBW-MARKER
  45378. ><RBW-PARABODY>Classes with a method<CX5FX5FINPUT> $create (</CX5FX5FINPUT
  45379. ><CX5FX5FVARIABLE>parameterList</CX5FX5FVARIABLE
  45380. ><CX5FX5FINPUT>)</CX5FX5FINPUT
  45381. > </RBW-PARABODY
  45382. ></LB.LIST.BULLET
  45383. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45384. ></RBW-AUTOGEN
  45385. >The <CX5FX5FEMPHASIS>parameterList</CX5FX5FEMPHASIS
  45386. > can be empty.</N2.NOTE.2
  45387. ><B.BODY>You have to specify the implementation of the constructor yourself, just like user&truehy;defined methods.</B.BODY
  45388. ></LABEL
  45389. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45390. >Elements of the constructor</L.LABEL
  45391. ><B.BODY>The constructor consists of the following elements:</B.BODY
  45392. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="358p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Element</CELLHEADING
  45393. ></ENTRY
  45394. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Remark</CELLHEADING
  45395. ></ENTRY
  45396. ></RBW-ROW
  45397. ></THEAD
  45398. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Signature</CELLBODY
  45399. ></ENTRY
  45400. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name of the class</CELLBODY
  45401. ><CELLBODY>List of parameters that are involved in the construction of the class</CELLBODY
  45402. ></ENTRY
  45403. ></RBW-ROW
  45404. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Body</CELLBODY
  45405. ></ENTRY
  45406. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains a section for user edits</CELLBODY
  45407. ><CELLBODY>The body of the <RBW-IDXTERM TERM1="destructor"></RBW-IDXTERM
  45408. >destructor also contains a section for user edits</CELLBODY
  45409. ></ENTRY
  45410. ></RBW-ROW
  45411. ></TBODY
  45412. ></TGROUP
  45413. ></RBW-TABLE
  45414. ></LABEL
  45415. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45416. >What does the constructor handle</L.LABEL
  45417. ><B.BODY>The constructor handles the following:</B.BODY
  45418. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45419. ></RBW-AUTOGEN
  45420. ></RBW-MARKER
  45421. ><RBW-PARABODY><RBW-IDXTERM TERM1="data attribute" TERM2="constructor"></RBW-IDXTERM
  45422. >Attributes that must have a value (not nullable attributes)</RBW-PARABODY
  45423. ></LB.LIST.BULLET
  45424. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45425. ></RBW-AUTOGEN
  45426. ></RBW-MARKER
  45427. ><RBW-PARABODY><RBW-IDXTERM TERM1="parameter" TERM2="base class"></RBW-IDXTERM
  45428. ><RBW-IDXTERM TERM1="class" TERM2="base"></RBW-IDXTERM
  45429. ><RBW-IDXTERM TERM1="base class" TERM2="parameter"></RBW-IDXTERM
  45430. >Parameters of base classes</RBW-PARABODY
  45431. ></LB.LIST.BULLET
  45432. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45433. ></RBW-AUTOGEN
  45434. ></RBW-MARKER
  45435. ><RBW-PARABODY><RBW-IDXTERM TERM1="mandatory association" TERM2="and constructor"></RBW-IDXTERM
  45436. >Mandatory associations</RBW-PARABODY
  45437. ></LB.LIST.BULLET
  45438. ></LABEL
  45439. ><SUBSECTION><SS.SUBSEC.HEAD>Constructor Examples: Base Classes</SS.SUBSEC.HEAD
  45440. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45441. >$create</L.LABEL
  45442. ><B.BODY>The source code generated for the following two example classes is identical:</B.BODY
  45443. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Example class:</CX5FX5FBULLET.EMPHASIS
  45444. ></B.BODY
  45445. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00431.unk" origfile="pics/constr1.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45446. ></FA.FIGURE.ANCHOR
  45447. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00432.unk" origfile="pics/constr0.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45448. ></FA.FIGURE.ANCHOR
  45449. ><B.BODY><CX5FX5FFILE.NAME>Time.h</CX5FX5FFILE.NAME
  45450. > (generated constructor)</B.BODY
  45451. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45452. ><EM.EXAMPLE.MONO>class Time {</EM.EXAMPLE.MONO
  45453. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  45454. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  45455. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  45456. ><EM.EXAMPLE.MONO>    Time();</EM.EXAMPLE.MONO
  45457. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  45458. ><EM.EXAMPLE.MONO>    ~Time();</EM.EXAMPLE.MONO
  45459. ><EM.EXAMPLE.MONO> ...</EM.EXAMPLE.MONO
  45460. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45461. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45462. ><B.BODY><CX5FX5FFILE.NAME>Time.cpp</CX5FX5FFILE.NAME
  45463. > (generated constructor)</B.BODY
  45464. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45465. ><EM.EXAMPLE.MONO>Time::Time()</EM.EXAMPLE.MONO
  45466. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45467. ><EM.EXAMPLE.MONO>    // Start constructor user section</EM.EXAMPLE.MONO
  45468. ><EM.EXAMPLE.MONO>    // End constructor user section</EM.EXAMPLE.MONO
  45469. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45470. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45471. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45472. ></RBW-AUTOGEN
  45473. >You must add the <CX5FX5FINPUT>$create</CX5FX5FINPUT
  45474. > method for classes with only one attribute, otherwise the C++ code generator will generate a typedef construction for these classes (see <RBW-XREF REFID="24618" TYPE="XREF-TEXTCOPY">Mapping Typedef Classes</RBW-XREF
  45475. >).</N.NOTE
  45476. ><B.BODY>The C++ code generator regards classes without any attributes or methods as external classes, unless a <CX5FX5FINPUT>$create</CX5FX5FINPUT
  45477. > method is specified.</B.BODY
  45478. ></LABEL
  45479. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45480. >$create with non&truehy;nullable attributes</L.LABEL
  45481. ><B.BODY>The C++ code generator adds non&truehy;nullable attributes (see <RBW-XREF REFID="35790" TYPE="XREF-TEXTCOPY">Specifying Mandatory Attributes</RBW-XREF
  45482. >) to the parameter list of the constructor:</B.BODY
  45483. ><B.BODY>If <CX5FX5FEMPHASIS>hour</CX5FX5FEMPHASIS
  45484. > in the previous example was a non&truehy;nullable attribute, for example, the generated code would be:</B.BODY
  45485. ><B.BODY><CX5FX5FFILE.NAME>Time.cpp</CX5FX5FFILE.NAME
  45486. > (generated constructor)</B.BODY
  45487. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45488. ><EM.EXAMPLE.MONO>class Time {</EM.EXAMPLE.MONO
  45489. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  45490. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  45491. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  45492. ><EM.EXAMPLE.MONO>    Time(<CX5FX5FBULLET.EMPHASIS>int i_hour</CX5FX5FBULLET.EMPHASIS
  45493. >);</EM.EXAMPLE.MONO
  45494. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  45495. ><EM.EXAMPLE.MONO>    ~Time();</EM.EXAMPLE.MONO
  45496. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45497. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45498. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45499. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45500. ></RBW-AUTOGEN
  45501. >The same effect could be achieved by making the <CX5FX5FEMPHASIS>hour</CX5FX5FEMPHASIS
  45502. > attribute a key attribute (see <RBW-XREF REFID="35790" TYPE="XREF-TEXTCOPY">Specifying Mandatory Attributes</RBW-XREF
  45503. >).</N.NOTE
  45504. ></LABEL
  45505. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45506. >$create()</L.LABEL
  45507. ><B.BODY>The C++ code generator does not create a constructor for classes with a <CX5FX5FINPUT>$create</CX5FX5FINPUT
  45508. > method for which an (empty) parameter list is specified. You must specify details such as inheritance and data attribute initialization. </B.BODY
  45509. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45510. ></RBW-AUTOGEN
  45511. >All your edits are saved during regeneration.</N.NOTE
  45512. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Example class:</CX5FX5FBULLET.EMPHASIS
  45513. ></B.BODY
  45514. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00433.unk" origfile="pics/constr2.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45515. ></FA.FIGURE.ANCHOR
  45516. ><B.BODY><CX5FX5FFILE.NAME>Time.h</CX5FX5FFILE.NAME
  45517. > (generated constructor)</B.BODY
  45518. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45519. ><EM.EXAMPLE.MONO>class Time {</EM.EXAMPLE.MONO
  45520. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  45521. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  45522. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45523. ><EM.EXAMPLE.MONO>    // User&truehy;defined methods</EM.EXAMPLE.MONO
  45524. ><EM.EXAMPLE.MONO>    Time();</EM.EXAMPLE.MONO
  45525. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45526. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45527. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45528. ><B.BODY><CX5FX5FFILE.NAME>Time.cpp</CX5FX5FFILE.NAME
  45529. > (generated constructor)</B.BODY
  45530. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45531. ><EM.EXAMPLE.MONO>Time::Time()</EM.EXAMPLE.MONO
  45532. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45533. ><EM.EXAMPLE.MONO>    // !! Implement this function !!</EM.EXAMPLE.MONO
  45534. ><EM.EXAMPLE.MONO>    // int create_is_not_yet_implemented;</EM.EXAMPLE.MONO
  45535. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45536. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45537. ></LABEL
  45538. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45539. ><CX5FX5FBULLET.EMPHASIS>$create (</CX5FX5FBULLET.EMPHASIS
  45540. ><CX5FX5FVARIABLE>parameterList</CX5FX5FVARIABLE
  45541. ><RBWAUTO-0013>)</RBWAUTO-0013
  45542. ></L.LABEL
  45543. ><B.BODY>The code generated for a <CX5FX5FEMPHASIS>create</CX5FX5FEMPHASIS
  45544. > method for which parameters have been specified is similar to the code generated for a <CX5FX5FINPUT>$create()</CX5FX5FINPUT
  45545. > method.</B.BODY
  45546. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Example class:</CX5FX5FBULLET.EMPHASIS
  45547. ></B.BODY
  45548. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00434.unk" origfile="pics/constr3.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45549. ></FA.FIGURE.ANCHOR
  45550. ><B.BODY><CX5FX5FFILE.NAME>Time.h</CX5FX5FFILE.NAME
  45551. > (generated constructor)</B.BODY
  45552. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45553. ><EM.EXAMPLE.MONO>class Time {</EM.EXAMPLE.MONO
  45554. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  45555. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  45556. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45557. ><EM.EXAMPLE.MONO>    // User&truehy;defined methods</EM.EXAMPLE.MONO
  45558. ><EM.EXAMPLE.MONO>    Time(int hour, int min, int sec);</EM.EXAMPLE.MONO
  45559. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45560. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45561. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45562. ><B.BODY><CX5FX5FFILE.NAME>Time.cpp</CX5FX5FFILE.NAME
  45563. > (generated constructor)</B.BODY
  45564. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45565. ><EM.EXAMPLE.MONO>Time::Time(int hour, int min, int sec)</EM.EXAMPLE.MONO
  45566. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45567. ><EM.EXAMPLE.MONO>    // !! Implement this function !!</EM.EXAMPLE.MONO
  45568. ><EM.EXAMPLE.MONO>    // int create_is_not_yet_implemented;</EM.EXAMPLE.MONO
  45569. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45570. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45571. ></LABEL
  45572. ></SUBSECTION
  45573. ><SUBSECTION><SS.SUBSEC.HEAD>Constructor Examples: Sub Classes</SS.SUBSEC.HEAD
  45574. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45575. >Introduction</L.LABEL
  45576. ><B.BODY>The (first) <CX5FX5FINPUT>$create</CX5FX5FINPUT
  45577. > method in a base class determines the constructor generated in the sub class.</B.BODY
  45578. ></LABEL
  45579. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45580. >Base class having a $create method</L.LABEL
  45581. ><B.BODY>Employee is a sub class of Person:</B.BODY
  45582. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00435.unk" origfile="pics/ctrinh1.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45583. ></FA.FIGURE.ANCHOR
  45584. ><B.BODY><CX5FX5FFILE.NAME>Employee.cpp</CX5FX5FFILE.NAME
  45585. > (generated constructor)</B.BODY
  45586. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45587. ><EM.EXAMPLE.MONO>Employee::Employee() :</EM.EXAMPLE.MONO
  45588. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>Person</CX5FX5FBULLET.EMPHASIS
  45589. >()</EM.EXAMPLE.MONO
  45590. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45591. ><EM.EXAMPLE.MONO>    // Start constructor user section</EM.EXAMPLE.MONO
  45592. ><EM.EXAMPLE.MONO>    // End constructor user section</EM.EXAMPLE.MONO
  45593. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45594. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45595. ></LABEL
  45596. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45597. ><CX5FX5FBULLET.EMPHASIS>Base class having two $create (...) methods</CX5FX5FBULLET.EMPHASIS
  45598. ></L.LABEL
  45599. ><B.BODY>Example class:</B.BODY
  45600. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00436.unk" origfile="pics/ctorex4.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45601. ></FA.FIGURE.ANCHOR
  45602. ><B.BODY><CX5FX5FFILE.NAME>Employee.cpp</CX5FX5FFILE.NAME
  45603. > (generated file):</B.BODY
  45604. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45605. ><EM.EXAMPLE.MONO>Employee::Employee(<CX5FX5FBULLET.EMPHASIS>char c</CX5FX5FBULLET.EMPHASIS
  45606. >) :</EM.EXAMPLE.MONO
  45607. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>Person(c)</CX5FX5FBULLET.EMPHASIS
  45608. ></EM.EXAMPLE.MONO
  45609. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45610. ><EM.EXAMPLE.MONO>    // Start constructor user section</EM.EXAMPLE.MONO
  45611. ><EM.EXAMPLE.MONO>    // End constructor user section</EM.EXAMPLE.MONO
  45612. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45613. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45614. ></LABEL
  45615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45616. ><CX5FX5FBULLET.EMPHASIS>Base class having a $create and a $create (...) method</CX5FX5FBULLET.EMPHASIS
  45617. ></L.LABEL
  45618. ><B.BODY>Example class:</B.BODY
  45619. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00437.unk" origfile="pics/ctorex5.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45620. ></FA.FIGURE.ANCHOR
  45621. ><B.BODY><CX5FX5FFILE.NAME>Employee.cpp</CX5FX5FFILE.NAME
  45622. > (generated file):</B.BODY
  45623. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45624. ><EM.EXAMPLE.MONO>Employee::Employee() :</EM.EXAMPLE.MONO
  45625. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>Person</CX5FX5FBULLET.EMPHASIS
  45626. >()</EM.EXAMPLE.MONO
  45627. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45628. ><EM.EXAMPLE.MONO>    // Start constructor user section</EM.EXAMPLE.MONO
  45629. ><EM.EXAMPLE.MONO>    // End constructor user section</EM.EXAMPLE.MONO
  45630. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45631. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45632. ></LABEL
  45633. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45634. >Base class having a $create (...) and a $create method</L.LABEL
  45635. ><B.BODY>Example class:</B.BODY
  45636. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00438.unk" origfile="pics/ctorex6.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45637. ></FA.FIGURE.ANCHOR
  45638. ><B.BODY><CX5FX5FFILE.NAME>Employee.cpp</CX5FX5FFILE.NAME
  45639. > (generated file):</B.BODY
  45640. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45641. ><EM.EXAMPLE.MONO>Employee::Employee(<CX5FX5FBULLET.EMPHASIS>int i</CX5FX5FBULLET.EMPHASIS
  45642. >) :</EM.EXAMPLE.MONO
  45643. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>Person(i)</CX5FX5FBULLET.EMPHASIS
  45644. ></EM.EXAMPLE.MONO
  45645. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45646. ><EM.EXAMPLE.MONO>    // Start constructor user section</EM.EXAMPLE.MONO
  45647. ><EM.EXAMPLE.MONO>    // End constructor user section</EM.EXAMPLE.MONO
  45648. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45649. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45650. ></LABEL
  45651. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45652. >Multiple Inheritance</L.LABEL
  45653. ><B.BODY>Example Class:</B.BODY
  45654. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00439.unk" origfile="pics/ctrminh.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45655. ></FA.FIGURE.ANCHOR
  45656. ><B.BODY><CX5FX5FFILE.NAME>VestedHourlyEmployee.cpp</CX5FX5FFILE.NAME
  45657. > (generated constructor):</B.BODY
  45658. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45659. ><EM.EXAMPLE.MONO>VestedHourlyEmployee::VestedHourlyEmployee() :</EM.EXAMPLE.MONO
  45660. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>VestedEmployee()</CX5FX5FBULLET.EMPHASIS
  45661. >,</EM.EXAMPLE.MONO
  45662. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>HourlyEmployee()</CX5FX5FBULLET.EMPHASIS
  45663. ></EM.EXAMPLE.MONO
  45664. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  45665. ><EM.EXAMPLE.MONO>    // Start constructor user section</EM.EXAMPLE.MONO
  45666. ><EM.EXAMPLE.MONO>    // End constructor user section</EM.EXAMPLE.MONO
  45667. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  45668. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45669. ></LABEL
  45670. ></SUBSECTION
  45671. ></SECTION
  45672. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22715"></RBW-ANCHOR
  45673. >Destructors</S.SECTION.HEAD
  45674. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45675. >Introduction</L.LABEL
  45676. ><B.BODY>A destructor destroys an object of a class. It is called when it goes out of scope or is no longer referenced.</B.BODY
  45677. ></LABEL
  45678. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45679. >When a destructor is generated</L.LABEL
  45680. ><B.BODY>The C++ code generator generates a destructor for:</B.BODY
  45681. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45682. ></RBW-AUTOGEN
  45683. ></RBW-MARKER
  45684. ><RBW-PARABODY>Classes with a method <CX5FX5FINPUT>$create</CX5FX5FINPUT
  45685. ></RBW-PARABODY
  45686. ></LB.LIST.BULLET
  45687. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45688. ></RBW-AUTOGEN
  45689. ></RBW-MARKER
  45690. ><RBW-PARABODY>Classes with no method <CX5FX5FINPUT>$create</CX5FX5FINPUT
  45691. > method at all</RBW-PARABODY
  45692. ></LB.LIST.BULLET
  45693. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45694. >Example</SL.SUBLABEL
  45695. ><B.BODY>The following piece of code shows a destructor generated by ObjectTeam:</B.BODY
  45696. ><B.BODY><CX5FX5FFILE.NAME>Book.h</CX5FX5FFILE.NAME
  45697. > (generated file)</B.BODY
  45698. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45699. ><EM.EXAMPLE.MONO>class Book {</EM.EXAMPLE.MONO
  45700. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  45701. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  45702. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  45703. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  45704. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    ~Book();</CX5FX5FBULLET.EMPHASIS
  45705. ></EM.EXAMPLE.MONO
  45706. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45707. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45708. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45709. ></LABEL
  45710. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45711. >When a destructor is not generated</L.LABEL
  45712. ><B.BODY>The code generator does not generate a destructor for:</B.BODY
  45713. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45714. ></RBW-AUTOGEN
  45715. ></RBW-MARKER
  45716. ><RBW-PARABODY>Classes with a method<CX5FX5FINPUT> $create</CX5FX5FINPUT
  45717. > for which a parameter list is specified. </RBW-PARABODY
  45718. ></LB.LIST.BULLET
  45719. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45720. ></RBW-AUTOGEN
  45721. >This parameter list can be empty, e.g.: <CX5FX5FINPUT>$create()</CX5FX5FINPUT
  45722. >.</N2.NOTE.2
  45723. ><B.BODY>You have to specify the implementation of the destructor yourself, just like user&truehy;defined methods.</B.BODY
  45724. ></LABEL
  45725. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39716"></RBW-ANCHOR
  45726. >Specifying a Virtual Destructor</SS.SUBSEC.HEAD
  45727. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45728. >Introduction</L.LABEL
  45729. ><B.BODY>Specifying the destructor of a base class as <CX5FX5FEMPHASIS>virtual</CX5FX5FEMPHASIS
  45730. > guarantees that the destructors of all the sub classes in the class hierarchy will also be called if the base class’s destructor is called.</B.BODY
  45731. ></LABEL
  45732. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45733. >When a virtual destructor is generated</L.LABEL
  45734. ><B.BODY>By default, the C++ code generator generates a virtual destructor if the following is true:</B.BODY
  45735. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45736. ></RBW-AUTOGEN
  45737. ></RBW-MARKER
  45738. ><RBW-PARABODY>the class has sub classes</RBW-PARABODY
  45739. ></LB.LIST.BULLET
  45740. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45741. ></RBW-AUTOGEN
  45742. ></RBW-MARKER
  45743. ><RBW-PARABODY>the class has virtual methods</RBW-PARABODY
  45744. ></LB.LIST.BULLET
  45745. ></LABEL
  45746. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45747. >Using the Dynamic Destructor property</L.LABEL
  45748. ><B.BODY>Use the class property Dynamic Destructor to indicate if you always or never want a virtual destructor to be generated for a class.</B.BODY
  45749. ><B.BODY>The following values can be selected:</B.BODY
  45750. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45751. ></RBW-AUTOGEN
  45752. ></RBW-MARKER
  45753. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>default:</CX5FX5FBULLET.EMPHASIS
  45754. > The code generator only generates a virtual destructor if the class has subclasses or virtual methods.</RBW-PARABODY
  45755. ></LB.LIST.BULLET
  45756. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45757. ></RBW-AUTOGEN
  45758. ></RBW-MARKER
  45759. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>yes:</CX5FX5FBULLET.EMPHASIS
  45760. > The code generator always generates a virtual destructor. </RBW-PARABODY
  45761. ></LB.LIST.BULLET
  45762. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45763. ></RBW-AUTOGEN
  45764. >This option can result in code that generates unnecessary overhead.</N2.NOTE.2
  45765. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  45766. ></RBW-AUTOGEN
  45767. ></RBW-MARKER
  45768. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>no:</CX5FX5FBULLET.EMPHASIS
  45769. > The code generator never generates a virtual destructor.</RBW-PARABODY
  45770. ></LB.LIST.BULLET
  45771. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45772. ></RBW-AUTOGEN
  45773. >This option can result in code that doesn’t destroy objects properly.</N2.NOTE.2
  45774. ></LABEL
  45775. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45776. >Example</L.LABEL
  45777. ><B.BODY>If the property Dynamic Destructor for the class Track is set to <CX5FX5FEMPHASIS>default</CX5FX5FEMPHASIS
  45778. >, or <CX5FX5FEMPHASIS>yes</CX5FX5FEMPHASIS
  45779. >, a virtual destructor is generated for this class:</B.BODY
  45780. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00440.unk" origfile="pics/virtdstr.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45781. ></FA.FIGURE.ANCHOR
  45782. ><B.BODY><CX5FX5FFILE.NAME>Track.h</CX5FX5FFILE.NAME
  45783. > (generated file):</B.BODY
  45784. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45785. ><EM.EXAMPLE.MONO>// File          : Track.h</EM.EXAMPLE.MONO
  45786. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45787. ><EM.EXAMPLE.MONO>class Track {</EM.EXAMPLE.MONO
  45788. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  45789. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  45790. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  45791. ><EM.EXAMPLE.MONO>    Track();</EM.EXAMPLE.MONO
  45792. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  45793. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    virtual </CX5FX5FBULLET.EMPHASIS
  45794. >~Track();</EM.EXAMPLE.MONO
  45795. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    </CX5FX5FBULLET.EMPHASIS
  45796. >...</EM.EXAMPLE.MONO
  45797. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45798. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45799. ></LABEL
  45800. ></SUBSECTION
  45801. ></SECTION
  45802. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25351"></RBW-ANCHOR
  45803. >Mapping Inheritance</S.SECTION.HEAD
  45804. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45805. >Introduction</L.LABEL
  45806. ><B.BODY>The C++ code generator supports single inheritance as well as multiple inheritance. </B.BODY
  45807. ></LABEL
  45808. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45809. >Overlapping generalizations</L.LABEL
  45810. ><B.BODY>The code generator does not distinguish between overlapping and non&truehy;overlapping generalizations.</B.BODY
  45811. ></LABEL
  45812. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45813. >Constructors and inheritance</L.LABEL
  45814. ><B.BODY>See <RBW-XREF REFID="22663" TYPE="XREF-TEXTCOPY">Constructors</RBW-XREF
  45815. > for details on how constructors are generated for sub classes.</B.BODY
  45816. ></LABEL
  45817. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45818. >Example: single inheritance</L.LABEL
  45819. ><B.BODY>Example class:</B.BODY
  45820. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00441.unk" origfile="pics/inhacc.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45821. ></FA.FIGURE.ANCHOR
  45822. ><B.BODY><CX5FX5FFILE.NAME>HourlyEmployee.h</CX5FX5FFILE.NAME
  45823. > (generated file):</B.BODY
  45824. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45825. ><EM.EXAMPLE.MONO>// File          : HourlyEmployee.h</EM.EXAMPLE.MONO
  45826. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45827. ><EM.EXAMPLE.MONO>#ifndef HOURLYEMPLOYEE_H</EM.EXAMPLE.MONO
  45828. ><EM.EXAMPLE.MONO>#define HOURLYEMPLOYEE_H 1</EM.EXAMPLE.MONO
  45829. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  45830. ><EM.EXAMPLE.MONO>#ifndef EMPLOYEE_H</EM.EXAMPLE.MONO
  45831. ><EM.EXAMPLE.MONO>#include "<CX5FX5FBULLET.EMPHASIS>Employee.h</CX5FX5FBULLET.EMPHASIS
  45832. >"</EM.EXAMPLE.MONO
  45833. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  45834. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45835. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  45836. ><EM.EXAMPLE.MONO>class HourlyEmployee: public <CX5FX5FBULLET.EMPHASIS>Employee</CX5FX5FBULLET.EMPHASIS
  45837. > {</EM.EXAMPLE.MONO
  45838. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45839. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45840. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45841. ></LABEL
  45842. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45843. >Example: Multiple Inheritance</L.LABEL
  45844. ><B.BODY>The class VestedHourlyEmployee in this example is derived from two classes; it inherits data and functionality from multiple classes:</B.BODY
  45845. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00442.unk" origfile="pics/ctrminh.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45846. ></FA.FIGURE.ANCHOR
  45847. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45848. ></RBW-AUTOGEN
  45849. >The generalization from Employee into HourlyEmployee and VestedEmployee must be overlapping (see <RBW-XREF REFID="29888" TYPE="XREF-TEXTCOPY">Specifying Virtual Inheritance</RBW-XREF
  45850. >).</N.NOTE
  45851. ><B.BODY><CX5FX5FFILE.NAME>VestedHourlyEmployee.h</CX5FX5FFILE.NAME
  45852. > (generated file):</B.BODY
  45853. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  45854. ><EWM.EXAMPLEW.MONO>// File          : VestedHourlyEmployee.h</EWM.EXAMPLEW.MONO
  45855. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  45856. ><EWM.EXAMPLEW.MONO>#ifndef VESTEDHOURLYEMPLOYEE_H</EWM.EXAMPLEW.MONO
  45857. ><EWM.EXAMPLEW.MONO>#define VESTEDHOURLYEMPLOYEE_H 1</EWM.EXAMPLEW.MONO
  45858. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  45859. ><EWM.EXAMPLEW.MONO>#ifndef HOURLYEMPLOYEE_H</EWM.EXAMPLEW.MONO
  45860. ><EWM.EXAMPLEW.MONO>#include "<CX5FX5FBULLET.EMPHASIS>HourlyEmployee.h</CX5FX5FBULLET.EMPHASIS
  45861. >"</EWM.EXAMPLEW.MONO
  45862. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  45863. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  45864. ><EWM.EXAMPLEW.MONO>#ifndef VESTEDEMPLOYEE_H</EWM.EXAMPLEW.MONO
  45865. ><EWM.EXAMPLEW.MONO>#include "<CX5FX5FBULLET.EMPHASIS>VestedEmployee.h</CX5FX5FBULLET.EMPHASIS
  45866. >"</EWM.EXAMPLEW.MONO
  45867. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  45868. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  45869. ><EWM.EXAMPLEW.MONO>class VestedHourlyEmployee: public <CX5FX5FBULLET.EMPHASIS>VestedEmployee</CX5FX5FBULLET.EMPHASIS
  45870. >, public <CX5FX5FBULLET.EMPHASIS>HourlyEmployee</CX5FX5FBULLET.EMPHASIS
  45871. > {</EWM.EXAMPLEW.MONO
  45872. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  45873. ><EWM.EXAMPLEW.MONO>};</EWM.EXAMPLEW.MONO
  45874. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  45875. ><EWM.EXAMPLEW.MONO>#endif // VESTEDHOURLYEMPLOYEE_H</EWM.EXAMPLEW.MONO
  45876. ><B.BODY></B.BODY
  45877. ></LABEL
  45878. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45879. >Editing Generalization Properties</L.LABEL
  45880. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  45881. ></RBW-AUTOGEN
  45882. ></RBW-MARKER
  45883. ><RBW-PARABODY>To edit generalization properties:</RBW-PARABODY
  45884. ></P.PROCEDURE
  45885. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  45886. ></RBW-AUTOGEN
  45887. ></RBW-MARKER
  45888. ><RBW-PARABODY>Select the Generalization connector in the CD.</RBW-PARABODY
  45889. ></LN.LIST.NUM
  45890. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  45891. ></RBW-AUTOGEN
  45892. ></RBW-MARKER
  45893. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  45894. ></LN.LIST.NUM
  45895. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  45896. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  45897. ></RBW-AUTOGEN
  45898. ></RBW-MARKER
  45899. ><RBW-PARABODY>Select the generalization of your choice from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  45900. ></LN.LIST.NUM
  45901. ><LR.LIST.RESULT>The generalization properties appear on the right side of the dialog box.</LR.LIST.RESULT
  45902. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00443.unk" origfile="pics/dbedprgn.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45903. ></FA2.FIGURE.ANCHOR.2
  45904. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  45905. ></RBW-AUTOGEN
  45906. >Properties can be distributed over multiple property pages. You can select a property page by clicking its tab (Misc, Text).</N2.NOTE.2
  45907. ><LT.LIST.TEXT>The following inheritance properties are available:</LT.LIST.TEXT
  45908. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="133p"><COLSPEC COLNAME="2" COLWIDTH="43p"><COLSPEC COLNAME="3" COLWIDTH="157p"><COLSPEC COLNAME="4" COLWIDTH="112p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>property</CELLHEADING
  45909. ></ENTRY
  45910. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Page</CELLHEADING
  45911. ></ENTRY
  45912. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  45913. ></ENTRY
  45914. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  45915. ></ENTRY
  45916. ></RBW-ROW
  45917. ></THEAD
  45918. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Inheritance Access </CELLBODY
  45919. ></ENTRY
  45920. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  45921. ></ENTRY
  45922. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The access level of the methods inherited from the super class</CELLBODY
  45923. ></ENTRY
  45924. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34256" TYPE="XREF-TEXTCOPY">Specifying Inheritance Access</RBW-XREF
  45925. ></CELLBODY
  45926. ></ENTRY
  45927. ></RBW-ROW
  45928. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  45929. ></ENTRY
  45930. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  45931. ></ENTRY
  45932. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional generalization comments</CELLBODY
  45933. ></ENTRY
  45934. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>These comments are not added to the generated files</CELLBODY
  45935. ></ENTRY
  45936. ></RBW-ROW
  45937. ></TBODY
  45938. ></TGROUP
  45939. ></RBW-TABLE
  45940. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  45941. ></RBW-AUTOGEN
  45942. ></RBW-MARKER
  45943. ><RBW-PARABODY>Change the property values of your choice and click OK.</RBW-PARABODY
  45944. ></LN.LIST.NUM
  45945. ></LABEL
  45946. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29888"></RBW-ANCHOR
  45947. >Specifying Virtual Inheritance</SS.SUBSEC.HEAD
  45948. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45949. >Virtual inheritance</L.LABEL
  45950. ><B.BODY>A class can have multiple base classes: multiple inheritance is allowed in C++. However, the same base class is allowed to occur only once in the class hierarchy, unless virtual inheritance is used.</B.BODY
  45951. ><B.BODY>You can specify a particular inheritance to be virtual by using the Overlapping Generalization symbol.</B.BODY
  45952. ></LABEL
  45953. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45954. >Example </L.LABEL
  45955. ><B.BODY>In the following example, the classes HourlyEmployee and VestedEmployee are both derived from the base class Employee.</B.BODY
  45956. ><B.BODY>The class VestedHourlyEmployee is, in turn, derived from the class HourlyEmployee and VestedEmployee. This implies that in the class hierarchy of the class VestedHourlyEmployee, the class Employee occurs twice, which is not allowed in C++.</B.BODY
  45957. ><B.BODY>Now if the generalization of Employee is made <CX5FX5FEMPHASIS>overlapping</CX5FX5FEMPHASIS
  45958. > &truehy; the inheritance is specified as <CX5FX5FEMPHASIS>virtual</CX5FX5FEMPHASIS
  45959. > &truehy; the classes HourlyEmployee and VestedEmployee only <CX5FX5FEMPHASIS>refer</CX5FX5FEMPHASIS
  45960. > to the class Employee, which is allowed in C++.</B.BODY
  45961. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Example class:</CX5FX5FBULLET.EMPHASIS
  45962. ></B.BODY
  45963. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00444.unk" origfile="pics/ctrminh.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  45964. ></FA.FIGURE.ANCHOR
  45965. ><B.BODY><CX5FX5FFILE.NAME>HourlyEmployee.h</CX5FX5FFILE.NAME
  45966. > (generated header file):</B.BODY
  45967. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45968. ><EM.EXAMPLE.MONO>class HourlyEmployee: public<CX5FX5FBULLET.EMPHASIS> virtual </CX5FX5FBULLET.EMPHASIS
  45969. >Employee {</EM.EXAMPLE.MONO
  45970. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45971. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45972. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45973. ><B.BODY><CX5FX5FFILE.NAME>VestedEmployee.h</CX5FX5FFILE.NAME
  45974. > (generated file):</B.BODY
  45975. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45976. ><EM.EXAMPLE.MONO>class VestedEmployee: public<CX5FX5FBULLET.EMPHASIS> virtual </CX5FX5FBULLET.EMPHASIS
  45977. >Employee {</EM.EXAMPLE.MONO
  45978. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45979. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  45980. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  45981. ></LABEL
  45982. ></SUBSECTION
  45983. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34256"></RBW-ANCHOR
  45984. >Specifying Inheritance Access</SS.SUBSEC.HEAD
  45985. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45986. >Inheritance Access</L.LABEL
  45987. ><B.BODY><RBW-IDXTERM TERM1="generalization" TERM2="inheritance access"></RBW-IDXTERM
  45988. ><RBW-IDXTERM TERM1="accessibility" TERM2="inheritance"></RBW-IDXTERM
  45989. ><RBW-IDXTERM TERM1="class" TERM2="subclass"></RBW-IDXTERM
  45990. ><RBW-IDXTERM TERM1="subclass"></RBW-IDXTERM
  45991. ><RBW-IDXTERM TERM1="class" TERM2="base"></RBW-IDXTERM
  45992. ><RBW-IDXTERM TERM1="base class"></RBW-IDXTERM
  45993. ><RBW-IDXTERM TERM1="class" TERM2="derived"></RBW-IDXTERM
  45994. ><RBW-IDXTERM TERM1="class" TERM2="super"></RBW-IDXTERM
  45995. ><RBW-IDXTERM TERM1="superclass"></RBW-IDXTERM
  45996. >Set the Generalization property Inheritance Access to indicate whether the access level of the methods inherited from the base class must be Public (default), Protected or Private.</B.BODY
  45997. ></LABEL
  45998. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  45999. >Example </L.LABEL
  46000. ><B.BODY>In the following example, the Inheritance Access of the generalization has been set to Protected:</B.BODY
  46001. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00445.unk" origfile="pics/inhacc.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46002. ></FA.FIGURE.ANCHOR
  46003. ><B.BODY><CX5FX5FFILE.NAME>HourlyEmployee.h</CX5FX5FFILE.NAME
  46004. > (generated header file)</B.BODY
  46005. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46006. ><EM.EXAMPLE.MONO>class HourlyEmployee: <CX5FX5FBULLET.EMPHASIS>protected</CX5FX5FBULLET.EMPHASIS
  46007. > Employee {</EM.EXAMPLE.MONO
  46008. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46009. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  46010. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46011. ></LABEL
  46012. ></SUBSECTION
  46013. ></SECTION
  46014. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34926"></RBW-ANCHOR
  46015. >Mapping Associations</S.SECTION.HEAD
  46016. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46017. >Introduction</L.LABEL
  46018. ><B.BODY>The C++ code generator does not distinguish between associations and aggregations; for both constructions identical code is generated. This section uses the term <CX5FX5FEMPHASIS>association</CX5FX5FEMPHASIS
  46019. > to indicate associations and aggregations.</B.BODY
  46020. ><B.BODY><RBW-IDXTERM TERM1="mapping" TERM2="association"></RBW-IDXTERM
  46021. ><RBW-IDXTERM TERM1="association" TERM2="mapping of"></RBW-IDXTERM
  46022. >ObjectTeam supports the following types of associations between classes:</B.BODY
  46023. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  46024. ></RBW-AUTOGEN
  46025. ></RBW-MARKER
  46026. ><RBW-PARABODY>Binary association (association between two classes)</RBW-PARABODY
  46027. ></LB.LIST.BULLET
  46028. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  46029. ></RBW-AUTOGEN
  46030. ></RBW-MARKER
  46031. ><RBW-PARABODY>Association as class (class used to define the association)</RBW-PARABODY
  46032. ></LB.LIST.BULLET
  46033. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  46034. ></RBW-AUTOGEN
  46035. ></RBW-MARKER
  46036. ><RBW-PARABODY>Qualified association (association that include a qualifier)</RBW-PARABODY
  46037. ></LB.LIST.BULLET
  46038. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46039. ><RBW-IDXTERM TERM1="n-ary association"></RBW-IDXTERM
  46040. ><RBW-IDXTERM TERM1="association" TERM2="n-ary"></RBW-IDXTERM
  46041. >N&truehy;ary associations</SL.SUBLABEL
  46042. ><B.BODY>N&truehy;ary associations are ignored by the C++ code generator. Code is generated for the classes involved, but not for the associations.</B.BODY
  46043. ></LABEL
  46044. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46045. >Association attributes</L.LABEL
  46046. ><B.BODY><RBW-IDXTERM TERM1="association attribute"></RBW-IDXTERM
  46047. ><RBW-IDXTERM TERM1="attribute" TERM2="association attribute"></RBW-IDXTERM
  46048. ><RBW-IDXTERM TERM1="association attribute access method"></RBW-IDXTERM
  46049. ><RBW-IDXTERM TERM1="method" TERM2="association attribute access"></RBW-IDXTERM
  46050. >The ObjectTeam documentation use the term <CX5FX5FTERM>association attribute</CX5FX5FTERM
  46051. > to refer to attributes that are generated to support ObjectTeam associations (as opposed to data attributes generated from ObjectTeam attributes). </B.BODY
  46052. ><B.BODY>The role name at the appropriate end of the association is used as a base for generating association attributes.</B.BODY
  46053. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  46054. ></RBW-AUTOGEN
  46055. >The access level of generated association attributes is always <CX5FX5FEMPHASIS>private</CX5FX5FEMPHASIS
  46056. >. The type of the association attribute depends on the multiplicity at the other end of the association and the class library that is used to implement the association.</N.NOTE
  46057. ></LABEL
  46058. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46059. >Implementation strategies</L.LABEL
  46060. ><B.BODY>The implementation strategy that is used for a particular association end depends on the association’s multiplicity. Which strategy is used is expressed in the association attribute’s type. This type depends on the current class library.</B.BODY
  46061. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="177p"><COLSPEC COLNAME="2" COLWIDTH="271p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  46062. ></ENTRY
  46063. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C++ storage structure</CELLHEADING
  46064. ></ENTRY
  46065. ></RBW-ROW
  46066. ></THEAD
  46067. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>one</CELLBODY
  46068. ></ENTRY
  46069. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer</CELLBODY
  46070. ></ENTRY
  46071. ></RBW-ROW
  46072. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  46073. ></ENTRY
  46074. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set</CELLBODY
  46075. ></ENTRY
  46076. ></RBW-ROW
  46077. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many {ordered}</CELLBODY
  46078. ></ENTRY
  46079. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ordered pointer set</CELLBODY
  46080. ></ENTRY
  46081. ></RBW-ROW
  46082. ></TBODY
  46083. ></TGROUP
  46084. ></RBW-TABLE
  46085. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46086. >Cayenne class library</SL.SUBLABEL
  46087. ><B.BODY>If you are using the Cayenne class library, the following association attribute types are used to implement these strategies:</B.BODY
  46088. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="201p"><COLSPEC COLNAME="2" COLWIDTH="247p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C++ storage structure</CELLHEADING
  46089. ></ENTRY
  46090. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Cayenne class library class</CELLHEADING
  46091. ></ENTRY
  46092. ></RBW-ROW
  46093. ></THEAD
  46094. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer</CELLBODY
  46095. ></ENTRY
  46096. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  46097. ></ENTRY
  46098. ></RBW-ROW
  46099. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set</CELLBODY
  46100. ></ENTRY
  46101. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrSet</CELLBODY
  46102. ></ENTRY
  46103. ></RBW-ROW
  46104. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ordered pointer set</CELLBODY
  46105. ></ENTRY
  46106. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPtrSet</CELLBODY
  46107. ></ENTRY
  46108. ></RBW-ROW
  46109. ></TBODY
  46110. ></TGROUP
  46111. ></RBW-TABLE
  46112. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  46113. ></RBW-AUTOGEN
  46114. >All the examples in this guide assume that the Cayenne class library is the default class library.</N.NOTE
  46115. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  46116. ></RBW-AUTOGEN
  46117. >In some class libraries, there is more than one implementation strategy available for a particular type of association. There is always a default strategy defined, but you can select another implementation strategy using the association attribute property Implementation Strategy (see <RBW-XREF REFID="19988" TYPE="XREF-TEXTCOPY">Specifying an Implementation Strategy</RBW-XREF
  46118. >).</T.TIP
  46119. ></LABEL
  46120. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46121. >Association accessor methods</L.LABEL
  46122. ><B.BODY>The C++ code generator generates accessor methods for association attributes, similar to accessor methods generated for user&truehy;defined attributes. Association accessor methods maintain associations between classes.</B.BODY
  46123. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46124. >Example</SL.SUBLABEL
  46125. ><B.BODY>For the following example association, an association attribute and corresponding accessor methods are generated.</B.BODY
  46126. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00446.unk" origfile="pics/assoc.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46127. ></FA.FIGURE.ANCHOR
  46128. ><B.BODY><CX5FX5FFILE.NAME>Customer.h</CX5FX5FFILE.NAME
  46129. > (generated code):</B.BODY
  46130. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  46131. ><EWM.EXAMPLEW.MONO>class Customer {</EWM.EXAMPLEW.MONO
  46132. ><EWM.EXAMPLEW.MONO>    friend class Book;</EWM.EXAMPLEW.MONO
  46133. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  46134. ><EWM.EXAMPLEW.MONO>public:</EWM.EXAMPLEW.MONO
  46135. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  46136. ><EWM.EXAMPLEW.MONO>    // Association accessor methods</EWM.EXAMPLEW.MONO
  46137. ><EWM.EXAMPLEW.MONO>    void <CX5FX5FBULLET.EMPHASIS>setBook</CX5FX5FBULLET.EMPHASIS
  46138. >(Book* newBook);</EWM.EXAMPLEW.MONO
  46139. ><EWM.EXAMPLEW.MONO>    const Book* <CX5FX5FBULLET.EMPHASIS>getBook</CX5FX5FBULLET.EMPHASIS
  46140. >() const;</EWM.EXAMPLEW.MONO
  46141. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  46142. ><EWM.EXAMPLEW.MONO>protected:</EWM.EXAMPLEW.MONO
  46143. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  46144. ><EWM.EXAMPLEW.MONO>private:</EWM.EXAMPLEW.MONO
  46145. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  46146. ><EWM.EXAMPLEW.MONO>    // Association attribute storage</EWM.EXAMPLEW.MONO
  46147. ><EWM.EXAMPLEW.MONO>    Book* <CX5FX5FBULLET.EMPHASIS>bookPtr</CX5FX5FBULLET.EMPHASIS
  46148. >;</EWM.EXAMPLEW.MONO
  46149. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  46150. ><EWM.EXAMPLEW.MONO>};</EWM.EXAMPLEW.MONO
  46151. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  46152. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  46153. ></RBW-AUTOGEN
  46154. >By default, the access level of generated association accessor methods is <CX5FX5FEMPHASIS>public</CX5FX5FEMPHASIS
  46155. >. Edit the role name’s properties to change the access level of a <CX5FX5FEMPHASIS>get</CX5FX5FEMPHASIS
  46156. > (=Read) or <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  46157. > (=Write) accessor method to <CX5FX5FEMPHASIS>protected</CX5FX5FEMPHASIS
  46158. > or <CX5FX5FEMPHASIS>private</CX5FX5FEMPHASIS
  46159. >. See <RBW-XREF REFID="34414" TYPE="XREF-TEXTCOPY">Specifying Association Accessor Method Access</RBW-XREF
  46160. >.</N.NOTE
  46161. ></LABEL
  46162. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46163. ><RBW-ANCHOR ID="32778"></RBW-ANCHOR
  46164. >Editing association attribute properties</L.LABEL
  46165. ><B.BODY>You can effect the way association accessor methods are generated by editing the properties of the corresponding role name in ObjectTeam.</B.BODY
  46166. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  46167. ></RBW-AUTOGEN
  46168. ></RBW-MARKER
  46169. ><RBW-PARABODY>To edit role name properties:</RBW-PARABODY
  46170. ></P.PROCEDURE
  46171. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  46172. ></RBW-AUTOGEN
  46173. ></RBW-MARKER
  46174. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  46175. ></LN.LIST.NUM
  46176. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  46177. ></RBW-AUTOGEN
  46178. ></RBW-MARKER
  46179. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  46180. ></LN.LIST.NUM
  46181. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  46182. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  46183. ></RBW-AUTOGEN
  46184. ></RBW-MARKER
  46185. ><RBW-PARABODY>Select a role name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  46186. ></LN.LIST.NUM
  46187. ><LR.LIST.RESULT>The association attribute properties appear on the right side of the dialog box.</LR.LIST.RESULT
  46188. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00447.unk" origfile="pics/dbedacpr.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46189. ></FA2.FIGURE.ANCHOR.2
  46190. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  46191. ></RBW-AUTOGEN
  46192. >Properties can be distributed over multiple property pages. You can select a property page by clicking its tab (Misc, Text, ClassLib).</N2.NOTE.2
  46193. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  46194. ></RBW-AUTOGEN
  46195. ></RBW-MARKER
  46196. ><RBW-PARABODY>The following association accessor method properties are available:</RBW-PARABODY
  46197. ></LN.LIST.NUM
  46198. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="61p"><COLSPEC COLNAME="3" COLWIDTH="195p"><COLSPEC COLNAME="4" COLWIDTH="108p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>property</CELLHEADING
  46199. ></ENTRY
  46200. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>tab</CELLHEADING
  46201. ></ENTRY
  46202. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>specifies</CELLHEADING
  46203. ></ENTRY
  46204. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>see for details</CELLHEADING
  46205. ></ENTRY
  46206. ></RBW-ROW
  46207. ></THEAD
  46208. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Access </CELLBODY
  46209. ></ENTRY
  46210. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  46211. ></ENTRY
  46212. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The access level of the association accessor methods get (=read) and set (=write)</CELLBODY
  46213. ></ENTRY
  46214. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34414" TYPE="XREF-TEXTCOPY">Specifying Association Accessor Method Access</RBW-XREF
  46215. ></CELLBODY
  46216. ></ENTRY
  46217. ></RBW-ROW
  46218. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class library</CELLBODY
  46219. ></ENTRY
  46220. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ClassLib</CELLBODY
  46221. ></ENTRY
  46222. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The class library that must be used to implement the association</CELLBODY
  46223. ></ENTRY
  46224. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31321" TYPE="XREF-TEXTCOPY">Specifying a Class Library</RBW-XREF
  46225. ></CELLBODY
  46226. ></ENTRY
  46227. ></RBW-ROW
  46228. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Implementation strategy</CELLBODY
  46229. ></ENTRY
  46230. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ClassLib</CELLBODY
  46231. ></ENTRY
  46232. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The implementation strategy from the selected class library that must be used to implement the association</CELLBODY
  46233. ></ENTRY
  46234. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31321" TYPE="XREF-TEXTCOPY">Specifying a Class Library</RBW-XREF
  46235. ></CELLBODY
  46236. ></ENTRY
  46237. ></RBW-ROW
  46238. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  46239. ></ENTRY
  46240. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  46241. ></ENTRY
  46242. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional association attribute comments</CELLBODY
  46243. ></ENTRY
  46244. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="25709" TYPE="XREF-TEXTCOPY">Specifying Free Text for an Association Attribute</RBW-XREF
  46245. ></CELLBODY
  46246. ></ENTRY
  46247. ></RBW-ROW
  46248. ></TBODY
  46249. ></TGROUP
  46250. ></RBW-TABLE
  46251. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  46252. ></RBW-AUTOGEN
  46253. >In the remainder of this section, these properties are discussed further.</N.NOTE
  46254. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  46255. ></RBW-AUTOGEN
  46256. ></RBW-MARKER
  46257. ><RBW-PARABODY>Change the property values of your choice and click OK.</RBW-PARABODY
  46258. ></LN.LIST.NUM
  46259. ></LABEL
  46260. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46261. >In this section</L.LABEL
  46262. ><B.BODY>In the remaining part of this section examples of associations with different combinations of multiplicity are discussed, including the implied consequences for updating the association.</B.BODY
  46263. ><B.BODY>These consequences are reflected in the get, set, add and remove method implementations generated for the classes in these associations. </B.BODY
  46264. ><B.BODY>This section contains the following topics:</B.BODY
  46265. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  46266. ></ENTRY
  46267. ></RBW-ROW
  46268. ></THEAD
  46269. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10004" TYPE="XREF-TEXTCOPY">Mapping Unidirectional and Bidirectional Associations&rbwtab;3–60</RBW-XREF
  46270. ></SB.SECTION.BLOCK.TABLE
  46271. ></ENTRY
  46272. ></RBW-ROW
  46273. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17412" TYPE="XREF-TEXTCOPY">Mapping a Mandatory &truehy; Optional Association&rbwtab;3–62</RBW-XREF
  46274. ></SB.SECTION.BLOCK.TABLE
  46275. ></ENTRY
  46276. ></RBW-ROW
  46277. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41997" TYPE="XREF-TEXTCOPY">Mapping a Mandatory &truehy; Mandatory Association&rbwtab;3–63</RBW-XREF
  46278. ></SB.SECTION.BLOCK.TABLE
  46279. ></ENTRY
  46280. ></RBW-ROW
  46281. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17197" TYPE="XREF-TEXTCOPY">Mapping an Optional &truehy; Optional Association&rbwtab;3–64</RBW-XREF
  46282. ></SB.SECTION.BLOCK.TABLE
  46283. ></ENTRY
  46284. ></RBW-ROW
  46285. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40782" TYPE="XREF-TEXTCOPY">Mapping an Optional &truehy; Many Association&rbwtab;3–66</RBW-XREF
  46286. ></SB.SECTION.BLOCK.TABLE
  46287. ></ENTRY
  46288. ></RBW-ROW
  46289. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30073" TYPE="XREF-TEXTCOPY">Mapping a Mandatory &truehy; Many Association&rbwtab;3–68</RBW-XREF
  46290. ></SB.SECTION.BLOCK.TABLE
  46291. ></ENTRY
  46292. ></RBW-ROW
  46293. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24577" TYPE="XREF-TEXTCOPY">Mapping Many &truehy; Many Association&rbwtab;3–69</RBW-XREF
  46294. ></SB.SECTION.BLOCK.TABLE
  46295. ></ENTRY
  46296. ></RBW-ROW
  46297. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14505" TYPE="XREF-TEXTCOPY">Using an Association with a Multiplicity of Many&rbwtab;3–71</RBW-XREF
  46298. ></SB.SECTION.BLOCK.TABLE
  46299. ></ENTRY
  46300. ></RBW-ROW
  46301. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19223" TYPE="XREF-TEXTCOPY">Mapping Ordered Associations&rbwtab;3–74</RBW-XREF
  46302. ></SB.SECTION.BLOCK.TABLE
  46303. ></ENTRY
  46304. ></RBW-ROW
  46305. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38957" TYPE="XREF-TEXTCOPY">Mapping Association Classes&rbwtab;3–76</RBW-XREF
  46306. ></SB.SECTION.BLOCK.TABLE
  46307. ></ENTRY
  46308. ></RBW-ROW
  46309. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34414" TYPE="XREF-TEXTCOPY">Specifying Association Accessor Method Access&rbwtab;3–79</RBW-XREF
  46310. ></SB.SECTION.BLOCK.TABLE
  46311. ></ENTRY
  46312. ></RBW-ROW
  46313. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31321" TYPE="XREF-TEXTCOPY">Specifying a Class Library&rbwtab;3–80</RBW-XREF
  46314. ></SB.SECTION.BLOCK.TABLE
  46315. ></ENTRY
  46316. ></RBW-ROW
  46317. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19988" TYPE="XREF-TEXTCOPY">Specifying an Implementation Strategy&rbwtab;3–82</RBW-XREF
  46318. ></SB.SECTION.BLOCK.TABLE
  46319. ></ENTRY
  46320. ></RBW-ROW
  46321. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25709" TYPE="XREF-TEXTCOPY">Specifying Free Text for an Association Attribute&rbwtab;3–85</RBW-XREF
  46322. ></SB.SECTION.BLOCK.TABLE
  46323. ></ENTRY
  46324. ></RBW-ROW
  46325. ></TBODY
  46326. ></TGROUP
  46327. ></RBW-TABLE
  46328. ><B.BODY></B.BODY
  46329. ></LABEL
  46330. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10004"></RBW-ANCHOR
  46331. >Mapping Unidirectional and Bidirectional Associations</SS.SUBSEC.HEAD
  46332. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46333. >Introduction</L.LABEL
  46334. ><B.BODY>This section describes how the C++ code generator implements simple associations between two classes.</B.BODY
  46335. ></LABEL
  46336. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46337. >Unidirectional and bidirectional</L.LABEL
  46338. ><B.BODY>If an association has a role name at only one end, it is a <CX5FX5FEMPHASIS>unidirectional</CX5FX5FEMPHASIS
  46339. > association (implemented in one direction). If an association has role names at both ends, it is a <CX5FX5FEMPHASIS>bidirectional</CX5FX5FEMPHASIS
  46340. > association (implemented in both directions).</B.BODY
  46341. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46342. >Unidirectional association</SL.SUBLABEL
  46343. ><B.BODY></B.BODY
  46344. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00448.unk" origfile="pics/assuni.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46345. ></FA.FIGURE.ANCHOR
  46346. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46347. >Bidirectional association</SL.SUBLABEL
  46348. ><B.BODY></B.BODY
  46349. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00449.unk" origfile="pics/assbid.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46350. ></FA.FIGURE.ANCHOR
  46351. ></LABEL
  46352. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46353. >Mapping a unidirectional association</L.LABEL
  46354. ><B.BODY><RBW-IDXTERM TERM1="Java, generated" TERM2="association attribute"></RBW-IDXTERM
  46355. ><RBW-IDXTERM TERM1="Java, generated" TERM2="association attribute access method"></RBW-IDXTERM
  46356. >The C++ code generator implements a unidirectional association by adding an <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  46357. > and a set of <CX5FX5FEMPHASIS>association accessor methods</CX5FX5FEMPHASIS
  46358. > to the code generated for the class at the near end of the association. </B.BODY
  46359. ><B.BODY>This allows the class at the near of the association (Customer) to access the class at the far end (Book). Since no association accessor methods are generated for the class at the far end, the class at the far end cannot access the class at the near end.</B.BODY
  46360. ></LABEL
  46361. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46362. ><RBW-ANCHOR ID="21654"></RBW-ANCHOR
  46363. >Mapping a bidirectional association</L.LABEL
  46364. ><B.BODY>The C++ code generator implements a bidirectional association by adding an <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  46365. > and a set of <CX5FX5FEMPHASIS>association accessor methods </CX5FX5FEMPHASIS
  46366. >to the code generated for both classes. Moreover, both classes are specified as <CX5FX5FEMPHASIS>friend</CX5FX5FEMPHASIS
  46367. > classes.</B.BODY
  46368. ><B.BODY>This allows each class to access the other. To ensure integrity of a bidirectional association, the update method for a bidirectional association maintains the association in both directions.</B.BODY
  46369. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46370. >Example</SL.SUBLABEL
  46371. ><B.BODY>Following is an excerpt from the code generated for the Book class in the bidirectional association. Because this is a bidirectional association, the Book class and the Customer class contain similar code to implement the association in the other direction.</B.BODY
  46372. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46373. ><EM.EXAMPLE.MONO>// File          : Book.h</EM.EXAMPLE.MONO
  46374. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46375. ><EM.EXAMPLE.MONO>#ifndef CUSTOMER_H</EM.EXAMPLE.MONO
  46376. ><EM.EXAMPLE.MONO>#include "Customer.h"</EM.EXAMPLE.MONO
  46377. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  46378. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46379. ><EM.EXAMPLE.MONO>class Book {</EM.EXAMPLE.MONO
  46380. ><EM.EXAMPLE.MONO>    friend class Customer;</EM.EXAMPLE.MONO
  46381. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46382. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  46383. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46384. ><EM.EXAMPLE.MONO>    // Association accessor methods</EM.EXAMPLE.MONO
  46385. ><EM.EXAMPLE.MONO>    void <CX5FX5FBULLET.EMPHASIS>setCust</CX5FX5FBULLET.EMPHASIS
  46386. >(Customer* newCust);</EM.EXAMPLE.MONO
  46387. ><EM.EXAMPLE.MONO>    const Customer* <CX5FX5FBULLET.EMPHASIS>getCust</CX5FX5FBULLET.EMPHASIS
  46388. >() const;</EM.EXAMPLE.MONO
  46389. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46390. ><EM.EXAMPLE.MONO>protected:</EM.EXAMPLE.MONO
  46391. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46392. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  46393. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46394. ><EM.EXAMPLE.MONO>    // Association attribute storage</EM.EXAMPLE.MONO
  46395. ><EM.EXAMPLE.MONO>    Customer* <CX5FX5FBULLET.EMPHASIS>custPtr</CX5FX5FBULLET.EMPHASIS
  46396. >;</EM.EXAMPLE.MONO
  46397. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46398. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  46399. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46400. ></LABEL
  46401. ></SUBSECTION
  46402. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17412"></RBW-ANCHOR
  46403. >Mapping a Mandatory &truehy; Optional Association</SS.SUBSEC.HEAD
  46404. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46405. >Introduction</L.LABEL
  46406. ><B.BODY>This is an example of a mandatory &truehy; optional association.</B.BODY
  46407. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00450.unk" origfile="pics/assmd-o.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46408. ></FA.FIGURE.ANCHOR
  46409. ><B.BODY>Each object A has a pointer to an object of the other class:</B.BODY
  46410. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  46411. ></ENTRY
  46412. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Attribute Type</CELLHEADING
  46413. ></ENTRY
  46414. ></RBW-ROW
  46415. ></THEAD
  46416. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  46417. ></ENTRY
  46418. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer</CELLBODY
  46419. ></ENTRY
  46420. ></RBW-ROW
  46421. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  46422. ></ENTRY
  46423. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer </CELLBODY
  46424. ></ENTRY
  46425. ></RBW-ROW
  46426. ></TBODY
  46427. ></TGROUP
  46428. ></RBW-TABLE
  46429. ></LABEL
  46430. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46431. >Constructor</L.LABEL
  46432. ><B.BODY>When an object B is constructed, a pointer to an object A must be set, since the association is mandatory at A’s end. This pointer is set in the constructor of class B.</B.BODY
  46433. ><B.BODY><CX5FX5FFILE.NAME>B.h</CX5FX5FFILE.NAME
  46434. > (generated file)</B.BODY
  46435. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46436. ><EM.EXAMPLE.MONO>class B {</EM.EXAMPLE.MONO
  46437. ><EM.EXAMPLE.MONO>    friend class A;</EM.EXAMPLE.MONO
  46438. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46439. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  46440. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  46441. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>B (A& a);</CX5FX5FBULLET.EMPHASIS
  46442. ></EM.EXAMPLE.MONO
  46443. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46444. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  46445. ></LABEL
  46446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46447. >Updating an association</L.LABEL
  46448. ><B.BODY>If an object A is associated with an object B in a mandatory &truehy; optional association, it cannot be associated with a different B because that would leave the old B unattached. </B.BODY
  46449. ><B.BODY>The only way to update the association is to attach an object B to an object A that was previously unattached. This leaves the old object A unattached and the pointer to the object B must therefore be set to 0.</B.BODY
  46450. ></LABEL
  46451. ></SUBSECTION
  46452. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="41997"></RBW-ANCHOR
  46453. >Mapping a Mandatory &truehy; Mandatory Association</SS.SUBSEC.HEAD
  46454. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46455. >Introduction</L.LABEL
  46456. ><B.BODY>This is an example of a mandatory &truehy; mandatory association.</B.BODY
  46457. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00451.unk" origfile="pics/assmd-md.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46458. ></FA.FIGURE.ANCHOR
  46459. ><B.BODY>In a mandatory &truehy; mandatory association, each object must have a pointer to an object of the other class. </B.BODY
  46460. ></LABEL
  46461. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46462. >Not supported</L.LABEL
  46463. ><B.BODY>An association having a mandatory multiplicity at both ends is not supported by the ObjectTeam C++ code generator. </B.BODY
  46464. ><B.BODY>The reason is that it is logically impossible to construct objects of either class, since in a mandatory&truehy;mandatory association, both classes need a constructed object at the other end in order to construct objects.</B.BODY
  46465. ></LABEL
  46466. ></SUBSECTION
  46467. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17197"></RBW-ANCHOR
  46468. >Mapping an Optional &truehy; Optional Association</SS.SUBSEC.HEAD
  46469. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46470. >Introduction</L.LABEL
  46471. ><B.BODY>This is an example of an optional &truehy; optional association.</B.BODY
  46472. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00452.unk" origfile="pics/asso-o.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46473. ></FA.FIGURE.ANCHOR
  46474. ><B.BODY>In an optional &truehy; optional association, each object has a pointer to an object of the other class. </B.BODY
  46475. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  46476. ></ENTRY
  46477. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Attribute Type</CELLHEADING
  46478. ></ENTRY
  46479. ></RBW-ROW
  46480. ></THEAD
  46481. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  46482. ></ENTRY
  46483. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer</CELLBODY
  46484. ></ENTRY
  46485. ></RBW-ROW
  46486. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  46487. ></ENTRY
  46488. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer </CELLBODY
  46489. ></ENTRY
  46490. ></RBW-ROW
  46491. ></TBODY
  46492. ></TGROUP
  46493. ></RBW-TABLE
  46494. ></LABEL
  46495. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46496. >Updating an association</L.LABEL
  46497. ><B.BODY>When an optional &truehy; optional association is updated, the old association must first be removed on both sides before the new association can be created.</B.BODY
  46498. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46499. >Example</SL.SUBLABEL
  46500. ><B.BODY>The following picture shows a situation where an object A (Ax) is associated with an object B (Bx), and another object A (Ay) is associated with another object B (By). </B.BODY
  46501. ><B.BODY>The arrows represent pointers.</B.BODY
  46502. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00453.tif" origseq="55" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46503. ></FA.FIGURE.ANCHOR
  46504. ><B.BODY>Suppose you now want to associate object Bx with object Ay. </B.BODY
  46505. ><B.BODY>The following tasks then need to be carried out in the following order:</B.BODY
  46506. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  46507. ></RBW-AUTOGEN
  46508. ></RBW-MARKER
  46509. ><RBW-PARABODY>Remove the Ax pointer to Bx</RBW-PARABODY
  46510. ></LN.LIST.NUM
  46511. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  46512. ></RBW-AUTOGEN
  46513. ></RBW-MARKER
  46514. ><RBW-PARABODY>Remove the By pointer to Ay</RBW-PARABODY
  46515. ></LN.LIST.NUM
  46516. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  46517. ></RBW-AUTOGEN
  46518. ></RBW-MARKER
  46519. ><RBW-PARABODY>Redirect the Ay pointer from By to Bx</RBW-PARABODY
  46520. ></LN.LIST.NUM
  46521. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  46522. ></RBW-AUTOGEN
  46523. ></RBW-MARKER
  46524. ><RBW-PARABODY>Redirect the Bx pointer from Ax to Ay.</RBW-PARABODY
  46525. ></LN.LIST.NUM
  46526. ><B.BODY>These steps are visualized in the following picture.</B.BODY
  46527. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00454.tif" origseq="56" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46528. ></FA.FIGURE.ANCHOR
  46529. ><B.BODY>The result of this update action is shown in the following picture.</B.BODY
  46530. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00455.tif" origseq="63" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46531. ></FA.FIGURE.ANCHOR
  46532. ></LABEL
  46533. ></SUBSECTION
  46534. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40782"></RBW-ANCHOR
  46535. >Mapping an Optional &truehy; Many Association</SS.SUBSEC.HEAD
  46536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46537. >Introduction</L.LABEL
  46538. ><B.BODY>This is an example of an optional &truehy; many association.</B.BODY
  46539. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00456.unk" origfile="pics/asso-my.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46540. ></FA.FIGURE.ANCHOR
  46541. ><B.BODY>In an optional &truehy; many association, objects at the optional end (A) have a set of pointers to objects at the many end (B). Objects at the many end (B) have a pointer to an object at the optional end (A).</B.BODY
  46542. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  46543. ></ENTRY
  46544. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Attribute</CELLHEADING
  46545. ></ENTRY
  46546. ></RBW-ROW
  46547. ></THEAD
  46548. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  46549. ></ENTRY
  46550. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set (PtrSet)</CELLBODY
  46551. ></ENTRY
  46552. ></RBW-ROW
  46553. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  46554. ></ENTRY
  46555. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer </CELLBODY
  46556. ></ENTRY
  46557. ></RBW-ROW
  46558. ></TBODY
  46559. ></TGROUP
  46560. ></RBW-TABLE
  46561. ></LABEL
  46562. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46563. >Updating an association</L.LABEL
  46564. ><B.BODY>When a pointer to an object B is added to the pointer set of an object A, the pointer must first be removed from the pointer set of the old object A (if the object B was already associated).</B.BODY
  46565. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46566. >Example</SL.SUBLABEL
  46567. ><B.BODY>The following picture shows two objects A: Ax and Ay. The pointer set of Ax contains, among other things, a pointer to Bz.</B.BODY
  46568. ><B.BODY>The arrows represent pointers.</B.BODY
  46569. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00457.tif" origseq="76" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46570. ></FA.FIGURE.ANCHOR
  46571. ><B.BODY>Suppose you now want to associate object Bz with object Ay. </B.BODY
  46572. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  46573. ></RBW-AUTOGEN
  46574. ></RBW-MARKER
  46575. ><RBW-PARABODY>The following tasks then need to be carried out in the following order:</RBW-PARABODY
  46576. ></P.PROCEDURE
  46577. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  46578. ></RBW-AUTOGEN
  46579. ></RBW-MARKER
  46580. ><RBW-PARABODY>Remove the pointer to Bz from Ax’s pointer set</RBW-PARABODY
  46581. ></LN.LIST.NUM
  46582. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  46583. ></RBW-AUTOGEN
  46584. ></RBW-MARKER
  46585. ><RBW-PARABODY>Redirect Bz’s pointer from Ax to Ay.</RBW-PARABODY
  46586. ></LN.LIST.NUM
  46587. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  46588. ></RBW-AUTOGEN
  46589. ></RBW-MARKER
  46590. ><RBW-PARABODY>Add a pointer to Bz to Ay’s pointer set</RBW-PARABODY
  46591. ></LN.LIST.NUM
  46592. ><B.BODY>These steps are visualized in the following picture.</B.BODY
  46593. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00458.tif" origseq="98" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46594. ></FA.FIGURE.ANCHOR
  46595. ><B.BODY>The result of this update action is shown in the following picture.</B.BODY
  46596. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00459.tif" origseq="107" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46597. ></FA.FIGURE.ANCHOR
  46598. ></LABEL
  46599. ></SUBSECTION
  46600. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="30073"></RBW-ANCHOR
  46601. >Mapping a Mandatory &truehy; Many Association</SS.SUBSEC.HEAD
  46602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46603. >Introduction</L.LABEL
  46604. ><B.BODY>This is an example of a mandatory &truehy; many association.</B.BODY
  46605. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00460.unk" origfile="pics/assmd-my.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46606. ></FA.FIGURE.ANCHOR
  46607. ><B.BODY>In a mandatory &truehy; many association, objects at the mandatory end (A) have a set of pointers to objects at the many end (B). Objects at the many end (B) have a pointer to an object at the optional end (A).</B.BODY
  46608. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  46609. ></ENTRY
  46610. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Attribute</CELLHEADING
  46611. ></ENTRY
  46612. ></RBW-ROW
  46613. ></THEAD
  46614. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  46615. ></ENTRY
  46616. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set (PtrSet)</CELLBODY
  46617. ></ENTRY
  46618. ></RBW-ROW
  46619. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  46620. ></ENTRY
  46621. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer </CELLBODY
  46622. ></ENTRY
  46623. ></RBW-ROW
  46624. ></TBODY
  46625. ></TGROUP
  46626. ></RBW-TABLE
  46627. ></LABEL
  46628. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46629. >Updating an association</L.LABEL
  46630. ><B.BODY>Updating a mandatory &truehy; many association is similar to updating an optional &truehy; many association (see <RBW-XREF REFID="40782" TYPE="XREF-TEXTCOPY">Mapping an Optional &truehy; Many Association</RBW-XREF
  46631. >). However, in a mandatory association, unattached objects A are not allowed.</B.BODY
  46632. ></LABEL
  46633. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46634. >Removing an association</L.LABEL
  46635. ><B.BODY>It is impossible to remove a pointer to an object B from an object A without adding it to another object A, since that would leave the object B unattached. Unattached B objects are not allowed because the multiplicity at the other end of B is mandatory.</B.BODY
  46636. ><B.BODY>Therefore, no remove method is generated for mandatory &truehy; many associations. A warning message in the Monitoring Window will inform you about this when code is being generated.</B.BODY
  46637. ></LABEL
  46638. ></SUBSECTION
  46639. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24577"></RBW-ANCHOR
  46640. >Mapping Many &truehy; Many Association</SS.SUBSEC.HEAD
  46641. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46642. >Introduction</L.LABEL
  46643. ><B.BODY>This is an example of a many &truehy; many association.</B.BODY
  46644. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00461.unk" origfile="pics/assmy-my.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46645. ></FA.FIGURE.ANCHOR
  46646. ><B.BODY>In a many &truehy; many association, objects at the first many end (A) have a set of pointers to objects at the second many end (B). Objects at the second many end (B) have a set of pointer to objects at the first many end (A) too.</B.BODY
  46647. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  46648. ></ENTRY
  46649. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Attribute</CELLHEADING
  46650. ></ENTRY
  46651. ></RBW-ROW
  46652. ></THEAD
  46653. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  46654. ></ENTRY
  46655. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set (PtrSet)</CELLBODY
  46656. ></ENTRY
  46657. ></RBW-ROW
  46658. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  46659. ></ENTRY
  46660. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set (PtrSet)</CELLBODY
  46661. ></ENTRY
  46662. ></RBW-ROW
  46663. ></TBODY
  46664. ></TGROUP
  46665. ></RBW-TABLE
  46666. ></LABEL
  46667. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46668. >Updating the association</L.LABEL
  46669. ><B.BODY>All updates in a many &truehy; many association must be done at both ends of the association. An <CX5FX5FEMPHASIS>add</CX5FX5FEMPHASIS
  46670. > method must add to the A object’s pointer set a pointer to the B object and to the B object’s pointer set a pointer to the A object.</B.BODY
  46671. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46672. >Example</SL.SUBLABEL
  46673. ><B.BODY>The following picture shows three objects A and three objects B. These objects have several relations with one another.</B.BODY
  46674. ><B.BODY>The arrows represent pointers.</B.BODY
  46675. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00462.tif" origseq="94" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46676. ></FA.FIGURE.ANCHOR
  46677. ><B.BODY>Suppose you now want to associate object Ay with object Bz (and keep the association between Ay and By).</B.BODY
  46678. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  46679. ></RBW-AUTOGEN
  46680. ></RBW-MARKER
  46681. ><RBW-PARABODY>The following tasks then need to be carried out in the following order:</RBW-PARABODY
  46682. ></P.PROCEDURE
  46683. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  46684. ></RBW-AUTOGEN
  46685. ></RBW-MARKER
  46686. ><RBW-PARABODY>Add the pointer to Bz to Ay’s pointer set</RBW-PARABODY
  46687. ></LN.LIST.NUM
  46688. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  46689. ></RBW-AUTOGEN
  46690. ></RBW-MARKER
  46691. ><RBW-PARABODY>Add the pointer to Ay to Bz’s pointer set</RBW-PARABODY
  46692. ></LN.LIST.NUM
  46693. ><B.BODY>These steps are visualized in the following picture.</B.BODY
  46694. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00463.tif" origseq="112" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46695. ></FA.FIGURE.ANCHOR
  46696. ><B.BODY>The result of this update action is shown in the following picture.</B.BODY
  46697. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00464.tif" origseq="117" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46698. ></FA.FIGURE.ANCHOR
  46699. ></LABEL
  46700. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46701. >Removing the association</L.LABEL
  46702. ><B.BODY>When a pointer to an object B is removed from an object A’s pointer set, (e.g. the pointer to Bx is removed from Ax’s pointer set), the corresponding pointer to object A must also be removed from object B.</B.BODY
  46703. ></LABEL
  46704. ></SUBSECTION
  46705. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14505"></RBW-ANCHOR
  46706. >Using an Association with a Multiplicity of Many</SS.SUBSEC.HEAD
  46707. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46708. >Prerequisite</L.LABEL
  46709. ><B.BODY>This section assumes that you are familiar with the information from the following sections:</B.BODY
  46710. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  46711. ></RBW-AUTOGEN
  46712. ></RBW-MARKER
  46713. ><RBW-PARABODY><RBW-XREF REFID="40782" TYPE="XREF-TEXTCOPY">Mapping an Optional &truehy; Many Association</RBW-XREF
  46714. ></RBW-PARABODY
  46715. ></LB.LIST.BULLET
  46716. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  46717. ></RBW-AUTOGEN
  46718. ></RBW-MARKER
  46719. ><RBW-PARABODY><RBW-XREF REFID="30073" TYPE="XREF-TEXTCOPY">Mapping a Mandatory &truehy; Many Association</RBW-XREF
  46720. ></RBW-PARABODY
  46721. ></LB.LIST.BULLET
  46722. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  46723. ></RBW-AUTOGEN
  46724. ></RBW-MARKER
  46725. ><RBW-PARABODY><RBW-XREF REFID="24577" TYPE="XREF-TEXTCOPY">Mapping Many &truehy; Many Association</RBW-XREF
  46726. ></RBW-PARABODY
  46727. ></LB.LIST.BULLET
  46728. ></LABEL
  46729. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46730. >Example</L.LABEL
  46731. ><BI.BODY.INTRO>The following picture shows an example of a mandatory &truehy; many association. The class at the <CX5FX5FEMPHASIS>mandatory</CX5FX5FEMPHASIS
  46732. > end acts as master (<CX5FX5FINPUT>classA</CX5FX5FINPUT
  46733. >), the class at the <CX5FX5FEMPHASIS>many</CX5FX5FEMPHASIS
  46734. > end as detail (<CX5FX5FINPUT>classB</CX5FX5FINPUT
  46735. >).</BI.BODY.INTRO
  46736. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00465.unk" origfile="pics/asscmany.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46737. ></FA.FIGURE.ANCHOR
  46738. ><B.BODY><CX5FX5FFILE.NAME>ClassA.h</CX5FX5FFILE.NAME
  46739. > (generated file):</B.BODY
  46740. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46741. ><EM.EXAMPLE.MONO>// File          : ClassA.h</EM.EXAMPLE.MONO
  46742. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46743. ><EM.EXAMPLE.MONO>#include <PtrSet.hxx></EM.EXAMPLE.MONO
  46744. ><EM.EXAMPLE.MONO>#include <assert.h></EM.EXAMPLE.MONO
  46745. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46746. ><EM.EXAMPLE.MONO>#ifndef CLASSB_H</EM.EXAMPLE.MONO
  46747. ><EM.EXAMPLE.MONO>#include "ClassB.h"</EM.EXAMPLE.MONO
  46748. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  46749. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46750. ><EM.EXAMPLE.MONO>class ClassA {</EM.EXAMPLE.MONO
  46751. ><EM.EXAMPLE.MONO>    friend class ClassB;</EM.EXAMPLE.MONO
  46752. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46753. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  46754. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  46755. ><EM.EXAMPLE.MONO>    ClassA();</EM.EXAMPLE.MONO
  46756. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46757. ><EM.EXAMPLE.MONO>    ~ClassA();</EM.EXAMPLE.MONO
  46758. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46759. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46760. ><EM.EXAMPLE.MONO>    // Association accessor methods</EM.EXAMPLE.MONO
  46761. ><EM.EXAMPLE.MONO>    const PtrSet< ClassB >& <CX5FX5FBULLET.EMPHASIS>getDetailSet</CX5FX5FBULLET.EMPHASIS
  46762. >() const;</EM.EXAMPLE.MONO
  46763. ><EM.EXAMPLE.MONO>    void <CX5FX5FBULLET.EMPHASIS>addDetail</CX5FX5FBULLET.EMPHASIS
  46764. >(ClassB* newDetail);</EM.EXAMPLE.MONO
  46765. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46766. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46767. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  46768. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46769. ><EM.EXAMPLE.MONO>    // Association attribute storage</EM.EXAMPLE.MONO
  46770. ><EM.EXAMPLE.MONO>    PtrSet< ClassB > <CX5FX5FBULLET.EMPHASIS>detailSet</CX5FX5FBULLET.EMPHASIS
  46771. >;</EM.EXAMPLE.MONO
  46772. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46773. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  46774. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46775. ></LABEL
  46776. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46777. >Generated method (Cayenne class library)</L.LABEL
  46778. ><B.BODY>For classes with a multiplicity of <CX5FX5FEMPHASIS>many</CX5FX5FEMPHASIS
  46779. > at the other end, the following association accessor method is generated:</B.BODY
  46780. ><E.EXAMPLE><RBW-IDXTERM TERM1="getSet"></RBW-IDXTERM
  46781. >get<CX5FX5FTERM>roleName</CX5FX5FTERM
  46782. >Set</E.EXAMPLE
  46783. ><B.BODY>In our example, the name of this <CX5FX5FINPUT>get</CX5FX5FINPUT
  46784. > method is: <CX5FX5FINPUT>getDetailSet</CX5FX5FINPUT
  46785. >. </B.BODY
  46786. ><B.BODY>The type of the method <CX5FX5FINPUT>getDetailSet</CX5FX5FINPUT
  46787. > is <CX5FX5FINPUT><RBW-IDXTERM TERM1="PtrSet"></RBW-IDXTERM
  46788. >PtrSet</CX5FX5FINPUT
  46789. >. <CX5FX5FINPUT>PtrSet</CX5FX5FINPUT
  46790. > is one of the storage structure classes that is included in the Cayenne class library (see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your C++ Environment on page 2–7</RBW-XREF
  46791. >). It is used for <RBW-IDXTERM TERM1="pointer set"></RBW-IDXTERM
  46792. >pointer sets. </B.BODY
  46793. ><B.BODY>Typical member functions of the class <CX5FX5FINPUT>PtrSet</CX5FX5FINPUT
  46794. > are:</B.BODY
  46795. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  46796. ></RBW-AUTOGEN
  46797. ></RBW-MARKER
  46798. ><RBW-PARABODY><CX5FX5FINPUT>first()</CX5FX5FINPUT
  46799. ></RBW-PARABODY
  46800. ></LB.LIST.BULLET
  46801. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  46802. ></RBW-AUTOGEN
  46803. ></RBW-MARKER
  46804. ><RBW-PARABODY><CX5FX5FINPUT>next()</CX5FX5FINPUT
  46805. ></RBW-PARABODY
  46806. ></LB.LIST.BULLET
  46807. ><B.BODY>These functions return the pointers to the detail objects that participate in the association.</B.BODY
  46808. ><B.BODY>Before you are able to retrieve (<CX5FX5FINPUT>get</CX5FX5FINPUT
  46809. >) objects from a PtrSet class, these objects first have to be added to the association. The master class contains methods which allow adding (and removing) detail objects. </B.BODY
  46810. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  46811. ></RBW-AUTOGEN
  46812. >Bear in mind that the class <CX5FX5FINPUT>PtrSet</CX5FX5FINPUT
  46813. > only stores the <CX5FX5FTITLE>pointers</CX5FX5FTITLE
  46814. > to the object.</N.NOTE
  46815. ></LABEL
  46816. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46817. >Adding an object to a pointer set</L.LABEL
  46818. ><BI.BODY.INTRO>The following construction is a typical construction for <CX5FX5FTITLE>adding</CX5FX5FTITLE
  46819. > an object to a pointer set. Here, it is used to add an object of class B to an object of class A.</BI.BODY.INTRO
  46820. ><EWM.EXAMPLEW.MONO>#ifndef CLASSA_H</EWM.EXAMPLEW.MONO
  46821. ><EWM.EXAMPLEW.MONO>#include "ClassA.h"</EWM.EXAMPLEW.MONO
  46822. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  46823. ><EWM.EXAMPLEW.MONO>#ifndef CLASSB_H</EWM.EXAMPLEW.MONO
  46824. ><EWM.EXAMPLEW.MONO>#include "ClassB.h"</EWM.EXAMPLEW.MONO
  46825. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  46826. ><EWM.EXAMPLEW.MONO> </EWM.EXAMPLEW.MONO
  46827. ><EWM.EXAMPLEW.MONO>ClassA *a = new ClassA(); // Make a new class occurrence of a</EWM.EXAMPLEW.MONO
  46828. ><EWM.EXAMPLEW.MONO>ClassB *b = new ClassB(); // Make a new class occurrence of b</EWM.EXAMPLEW.MONO
  46829. ><EWM.EXAMPLEW.MONO>a&truehy;><CX5FX5FBULLET.EMPHASIS>addDetail</CX5FX5FBULLET.EMPHASIS
  46830. >(b);          // Add class occurrence of b to a</EWM.EXAMPLEW.MONO
  46831. ></LABEL
  46832. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46833. >Retrieving objects from a pointer set</L.LABEL
  46834. ><BI.BODY.INTRO>The following construction are typical constructions for <CX5FX5FTITLE>retrieving</CX5FX5FTITLE
  46835. > objects from a pointer set. Here, they are used to retrieve objects B from an object A.</BI.BODY.INTRO
  46836. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  46837. ><EWM.EXAMPLEW.MONO>PtrSet<ClassB>& Details = a&truehy;><CX5FX5FBULLET.EMPHASIS>getDetailSet</CX5FX5FBULLET.EMPHASIS
  46838. >();</EWM.EXAMPLEW.MONO
  46839. ><EWM.EXAMPLEW.MONO>ClassB *b1 = Details.<CX5FX5FBULLET.EMPHASIS>first</CX5FX5FBULLET.EMPHASIS
  46840. >();</EWM.EXAMPLEW.MONO
  46841. ><EWM.EXAMPLEW.MONO>ClassB *b2 = Details.<CX5FX5FBULLET.EMPHASIS>next</CX5FX5FBULLET.EMPHASIS
  46842. >();</EWM.EXAMPLEW.MONO
  46843. ></LABEL
  46844. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46845. >Removing objects from a pointer set</L.LABEL
  46846. ><BI.BODY.INTRO>The following construction is a typical construction for <CX5FX5FTITLE>removing</CX5FX5FTITLE
  46847. > an object from a pointer set. Here it is used to remove an object B from an object A.</BI.BODY.INTRO
  46848. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  46849. ><EWM.EXAMPLEW.MONO>a&truehy;><CX5FX5FBULLET.EMPHASIS>removeDetail</CX5FX5FBULLET.EMPHASIS
  46850. >(b);       // Remove class occurrence of b to a</EWM.EXAMPLEW.MONO
  46851. ></LABEL
  46852. ></SUBSECTION
  46853. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19223"></RBW-ANCHOR
  46854. >Mapping Ordered Associations</SS.SUBSEC.HEAD
  46855. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46856. >Prerequisite</L.LABEL
  46857. ><B.BODY>This section assumes that you are familiar with the section <RBW-XREF REFID="14505" TYPE="XREF-TEXTCOPY">Using an Association with a Multiplicity of Many</RBW-XREF
  46858. >.</B.BODY
  46859. ></LABEL
  46860. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46861. >Ordered association</L.LABEL
  46862. ><B.BODY>Here is an example of an ordered association. </B.BODY
  46863. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00466.unk" origfile="pics/ordacc.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46864. ></FA.FIGURE.ANCHOR
  46865. ><B.BODY>Use an ordered association if the order of the objects in the pointer set matters.</B.BODY
  46866. ></LABEL
  46867. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46868. >Ordered pointer set</L.LABEL
  46869. ><B.BODY><RBW-IDXTERM TERM1="Queue class" TERM2="and ordered association"></RBW-IDXTERM
  46870. >The mapping of an ordered association is similar to that of an association with an unordered multiplicity of many; however, the implementation strategy that is used is slightly different.</B.BODY
  46871. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46872. >Cayenne class library</SL.SUBLABEL
  46873. ><B.BODY>If you are using the Cayenne class library, the class OPtrSet is used to implement ordered associations, whereas PtrSet is used to implement unordered associations in an optional &truehy; many association. </B.BODY
  46874. ></LABEL
  46875. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46876. >Example code</L.LABEL
  46877. ><B.BODY>Following is an excerpt from the code generated for the Customer class shown above.</B.BODY
  46878. ><B.BODY><CX5FX5FFILE.NAME>Customer.h</CX5FX5FFILE.NAME
  46879. > (generated file):</B.BODY
  46880. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46881. ><EM.EXAMPLE.MONO>#include <OPtrSet.hxx></EM.EXAMPLE.MONO
  46882. ><EM.EXAMPLE.MONO>#include <assert.h></EM.EXAMPLE.MONO
  46883. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46884. ><EM.EXAMPLE.MONO>class Customer {</EM.EXAMPLE.MONO
  46885. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46886. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  46887. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46888. ><EM.EXAMPLE.MONO>    // Association accessor methods</EM.EXAMPLE.MONO
  46889. ><EM.EXAMPLE.MONO>    const <CX5FX5FBULLET.EMPHASIS>OPtrSet<</CX5FX5FBULLET.EMPHASIS
  46890. > Book >& getBookSet() const;</EM.EXAMPLE.MONO
  46891. ><EM.EXAMPLE.MONO>    void addBook(Book* newBook);</EM.EXAMPLE.MONO
  46892. ><EM.EXAMPLE.MONO>    void removeBook(Book* oldBook);</EM.EXAMPLE.MONO
  46893. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46894. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  46895. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46896. ><EM.EXAMPLE.MONO>    // Association attribute storage</EM.EXAMPLE.MONO
  46897. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>OPtrSet<</CX5FX5FBULLET.EMPHASIS
  46898. > Book > bookSet;</EM.EXAMPLE.MONO
  46899. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46900. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  46901. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46902. ></LABEL
  46903. ></SUBSECTION
  46904. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38957"></RBW-ANCHOR
  46905. >Mapping Association Classes</SS.SUBSEC.HEAD
  46906. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46907. >Prerequisite</L.LABEL
  46908. ><B.BODY>This section assumes that you are familiar with the mapping of various types of associations, as described in the previous sections.</B.BODY
  46909. ></LABEL
  46910. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46911. >Association class</L.LABEL
  46912. ><B.BODY>ObjectTeam allows you to specify information about an association by an association class. The class Purchase in the following diagram is an association class.</B.BODY
  46913. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00467.unk" origfile="pics/asscls.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46914. ></FA.FIGURE.ANCHOR
  46915. ></LABEL
  46916. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46917. >Association mapped as two associations</L.LABEL
  46918. ><B.BODY>The C++ code generation converts a construction with an association class into a construction where the association class is associated with both the other classes by normal associations. The role names are converted into <CX5FX5FVARIABLE>linkClassName</CX5FX5FVARIABLE
  46919. >Of<CX5FX5FEMPHASIS>roleName</CX5FX5FEMPHASIS
  46920. ></B.BODY
  46921. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46922. >Example</SL.SUBLABEL
  46923. ><B.BODY>The code generated for the CD shown above is actually based on the following CD:</B.BODY
  46924. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00468.unk" origfile="pics/assclsnw.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  46925. ></FA.FIGURE.ANCHOR
  46926. ></LABEL
  46927. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46928. >Role names are required</L.LABEL
  46929. ><B.BODY>As with all associations, role names are required. If a role name is omitted, the association attributes and corresponding accessor methods that would map to that role name are not generated.</B.BODY
  46930. ></LABEL
  46931. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46932. >Qualified association class</L.LABEL
  46933. ><B.BODY>Qualified associations with association classes are treated similarly by the C++ code generator; the association is converted into a construction where the association class is associated with the other classes by a normal associations.</B.BODY
  46934. ></LABEL
  46935. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  46936. >Example</L.LABEL
  46937. ><BI.BODY.INTRO>Following is the code generated for the classes from the CD shown above.</BI.BODY.INTRO
  46938. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Purchase.h</CX5FX5FBULLET.EMPHASIS
  46939. > (generated file)</B.BODY
  46940. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46941. ><EM.EXAMPLE.MONO>class Purchase {</EM.EXAMPLE.MONO
  46942. ><EM.EXAMPLE.MONO>    friend class <CX5FX5FBULLET.EMPHASIS>Customer3</CX5FX5FBULLET.EMPHASIS
  46943. >;</EM.EXAMPLE.MONO
  46944. ><EM.EXAMPLE.MONO>    friend class <CX5FX5FBULLET.EMPHASIS>Book3</CX5FX5FBULLET.EMPHASIS
  46945. >;</EM.EXAMPLE.MONO
  46946. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46947. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  46948. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  46949. ><EM.EXAMPLE.MONO>    Purchase(<CX5FX5FBULLET.EMPHASIS>Customer3& customer</CX5FX5FBULLET.EMPHASIS
  46950. >, <CX5FX5FBULLET.EMPHASIS>Book3& book</CX5FX5FBULLET.EMPHASIS
  46951. >);</EM.EXAMPLE.MONO
  46952. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46953. ><EM.EXAMPLE.MONO>    ~Purchase();</EM.EXAMPLE.MONO
  46954. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46955. ><EM.EXAMPLE.MONO>    // Association accessor methods</EM.EXAMPLE.MONO
  46956. ><EM.EXAMPLE.MONO>    void <CX5FX5FBULLET.EMPHASIS>setCustomer</CX5FX5FBULLET.EMPHASIS
  46957. >(Customer3* newCustomer);</EM.EXAMPLE.MONO
  46958. ><EM.EXAMPLE.MONO>    const Customer3* <CX5FX5FBULLET.EMPHASIS>getCustomer</CX5FX5FBULLET.EMPHASIS
  46959. >() const;</EM.EXAMPLE.MONO
  46960. ><EM.EXAMPLE.MONO>    void <CX5FX5FBULLET.EMPHASIS>setBook</CX5FX5FBULLET.EMPHASIS
  46961. >(Book3* newBook);</EM.EXAMPLE.MONO
  46962. ><EM.EXAMPLE.MONO>    const Book3* <CX5FX5FBULLET.EMPHASIS>getBook</CX5FX5FBULLET.EMPHASIS
  46963. >() const;</EM.EXAMPLE.MONO
  46964. ><EM.EXAMPLE.MONO>protected:</EM.EXAMPLE.MONO
  46965. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46966. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  46967. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  46968. ><EM.EXAMPLE.MONO>    // Association attribute storage</EM.EXAMPLE.MONO
  46969. ><EM.EXAMPLE.MONO>    Customer3* <CX5FX5FBULLET.EMPHASIS>customerPtr</CX5FX5FBULLET.EMPHASIS
  46970. >;</EM.EXAMPLE.MONO
  46971. ><EM.EXAMPLE.MONO>    Book3* <CX5FX5FBULLET.EMPHASIS>bookPtr</CX5FX5FBULLET.EMPHASIS
  46972. >;</EM.EXAMPLE.MONO
  46973. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  46974. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  46975. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  46976. ><B.BODY><CX5FX5FFILE.NAME>Customer.h</CX5FX5FFILE.NAME
  46977. > (generated file)</B.BODY
  46978. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  46979. ><EWM.EXAMPLEW.MONO>class Customer3 {</EWM.EXAMPLEW.MONO
  46980. ><EWM.EXAMPLEW.MONO>    friend class <CX5FX5FBULLET.EMPHASIS>Purchase</CX5FX5FBULLET.EMPHASIS
  46981. >;</EWM.EXAMPLEW.MONO
  46982. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  46983. ><EWM.EXAMPLEW.MONO>public:</EWM.EXAMPLEW.MONO
  46984. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  46985. ><EWM.EXAMPLEW.MONO>    // Association accessor methods</EWM.EXAMPLEW.MONO
  46986. ><EWM.EXAMPLEW.MONO>    const set< Purchase*, less< Purchase* > >& <CX5FX5FBULLET.EMPHASIS>getBookSet</CX5FX5FBULLET.EMPHASIS
  46987. >() const;</EWM.EXAMPLEW.MONO
  46988. ><EWM.EXAMPLEW.MONO>    void <CX5FX5FBULLET.EMPHASIS>addBook</CX5FX5FBULLET.EMPHASIS
  46989. >(Purchase* newBook);</EWM.EXAMPLEW.MONO
  46990. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  46991. ><EWM.EXAMPLEW.MONO>protected:</EWM.EXAMPLEW.MONO
  46992. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  46993. ><EWM.EXAMPLEW.MONO>private:</EWM.EXAMPLEW.MONO
  46994. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  46995. ><EWM.EXAMPLEW.MONO>    // Association attribute storage</EWM.EXAMPLEW.MONO
  46996. ><EWM.EXAMPLEW.MONO>    set< Purchase*, less< Purchase* > > <CX5FX5FBULLET.EMPHASIS>bookOfPurchaseSet</CX5FX5FBULLET.EMPHASIS
  46997. >;</EWM.EXAMPLEW.MONO
  46998. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  46999. ><EWM.EXAMPLEW.MONO>};</EWM.EXAMPLEW.MONO
  47000. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  47001. ><B.BODY><CX5FX5FFILE.NAME>Book.h</CX5FX5FFILE.NAME
  47002. > (generated file)</B.BODY
  47003. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  47004. ><EM.EXAMPLE.MONO>class Book3 {</EM.EXAMPLE.MONO
  47005. ><EM.EXAMPLE.MONO>    friend class <CX5FX5FBULLET.EMPHASIS>Purchase</CX5FX5FBULLET.EMPHASIS
  47006. >;</EM.EXAMPLE.MONO
  47007. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  47008. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  47009. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  47010. ><EM.EXAMPLE.MONO>    // Association accessor methods</EM.EXAMPLE.MONO
  47011. ><EM.EXAMPLE.MONO>    void <CX5FX5FBULLET.EMPHASIS>setCustomer</CX5FX5FBULLET.EMPHASIS
  47012. >(Purchase* newCustomer);</EM.EXAMPLE.MONO
  47013. ><EM.EXAMPLE.MONO>    const Purchase* <CX5FX5FBULLET.EMPHASIS>getCustomer</CX5FX5FBULLET.EMPHASIS
  47014. >() const;</EM.EXAMPLE.MONO
  47015. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  47016. ><EM.EXAMPLE.MONO>protected:</EM.EXAMPLE.MONO
  47017. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  47018. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  47019. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  47020. ><EM.EXAMPLE.MONO>    // Association attribute storage</EM.EXAMPLE.MONO
  47021. ><EM.EXAMPLE.MONO>    Purchase* <CX5FX5FBULLET.EMPHASIS>customerOfPurchasePtr</CX5FX5FBULLET.EMPHASIS
  47022. >;</EM.EXAMPLE.MONO
  47023. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  47024. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  47025. ></LABEL
  47026. ></SUBSECTION
  47027. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34414"></RBW-ANCHOR
  47028. >Specifying Association Accessor Method Access</SS.SUBSEC.HEAD
  47029. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47030. >Introduction</L.LABEL
  47031. ><B.BODY>The C++ code generator generates accessor methods for every class: in an association that has a role name specified at the other end of the association (see <RBW-XREF REFID="21654" TYPE="XREF-TEXTCOPY">Mapping a bidirectional association</RBW-XREF
  47032. >). Examples of accessor methods are:</B.BODY
  47033. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47034. ></RBW-AUTOGEN
  47035. ></RBW-MARKER
  47036. ><RBW-PARABODY>set<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47037. ></RBW-PARABODY
  47038. ></LB.LIST.BULLET
  47039. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47040. ></RBW-AUTOGEN
  47041. ></RBW-MARKER
  47042. ><RBW-PARABODY>get<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47043. ></RBW-PARABODY
  47044. ></LB.LIST.BULLET
  47045. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47046. ></RBW-AUTOGEN
  47047. ></RBW-MARKER
  47048. ><RBW-PARABODY>remove<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47049. ></RBW-PARABODY
  47050. ></LB.LIST.BULLET
  47051. ><B.BODY>You can specify the access level of these methods, that is, you can instruct the code generator in which section (Public, Protected, Private) these methods must be generated.</B.BODY
  47052. ></LABEL
  47053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47054. >Read and Write accessor methods</L.LABEL
  47055. ><B.BODY>The setting specified in the Read field affects the attribute accessor method <CX5FX5FINPUT>get</CX5FX5FINPUT
  47056. ><RBWAUTO-0014>roleName</RBWAUTO-0014
  47057. >; the setting specified in the Write field the attribute accessor method <CX5FX5FINPUT>set</CX5FX5FINPUT
  47058. ><RBWAUTO-0018>roleName</RBWAUTO-0018
  47059. >.</B.BODY
  47060. ></LABEL
  47061. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47062. >Access level types</L.LABEL
  47063. ><B.BODY>The following types of access level can be selected for association accessor methods (Read and Write):</B.BODY
  47064. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47065. ></RBW-AUTOGEN
  47066. ></RBW-MARKER
  47067. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  47068. >. A public method is accessible anywhere within the program.</RBW-PARABODY
  47069. ></LB.LIST.BULLET
  47070. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47071. ></RBW-AUTOGEN
  47072. ></RBW-MARKER
  47073. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  47074. >. A protected method behaves as a <CX5FX5FEMPHASIS>public</CX5FX5FEMPHASIS
  47075. > method to a derived class but as a <CX5FX5FEMPHASIS>private</CX5FX5FEMPHASIS
  47076. > method to the rest of the program.</RBW-PARABODY
  47077. ></LB.LIST.BULLET
  47078. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47079. ></RBW-AUTOGEN
  47080. ></RBW-MARKER
  47081. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  47082. >. A private method can only be accessed by the other methods of its class and by <CX5FX5FEMPHASIS>friends</CX5FX5FEMPHASIS
  47083. > of its class.</RBW-PARABODY
  47084. ></LB.LIST.BULLET
  47085. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47086. ></RBW-AUTOGEN
  47087. ></RBW-MARKER
  47088. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  47089. >. No accessor methods are generated.</RBW-PARABODY
  47090. ></LB.LIST.BULLET
  47091. ></LABEL
  47092. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47093. >How to specify the access level</L.LABEL
  47094. ><B.BODY>You specify an association attribute accessor method’s access level through the following properties:</B.BODY
  47095. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="127p"><COLSPEC COLNAME="2" COLWIDTH="127p"><COLSPEC COLNAME="3" COLWIDTH="192p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Group</CELLHEADING
  47096. ></ENTRY
  47097. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  47098. ></ENTRY
  47099. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  47100. ></ENTRY
  47101. ></RBW-ROW
  47102. ></THEAD
  47103. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Access</CELLBODY
  47104. ></ENTRY
  47105. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Read</CELLBODY
  47106. ></ENTRY
  47107. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  47108. ></ENTRY
  47109. ></RBW-ROW
  47110. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  47111. ></ENTRY
  47112. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Write</CELLBODY
  47113. ></ENTRY
  47114. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  47115. ></ENTRY
  47116. ></RBW-ROW
  47117. ></TBODY
  47118. ></TGROUP
  47119. ></RBW-TABLE
  47120. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47121. >For more information</SL.SUBLABEL
  47122. ><B.BODY>See <RBW-XREF REFID="32778" TYPE="XREF-TEXTCOPY">Editing association attribute properties</RBW-XREF
  47123. ></B.BODY
  47124. ></LABEL
  47125. ></SUBSECTION
  47126. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31321"></RBW-ANCHOR
  47127. >Specifying a Class Library</SS.SUBSEC.HEAD
  47128. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47129. >Introduction</L.LABEL
  47130. ><B.BODY>The C++ code generator uses the information from a class library to implement various types of (qualified) associations. </B.BODY
  47131. ><B.BODY>Integrations of ObjectTeam with class libraries is controlled by modules. Which class library can be used for the implementation of an association therefore depends on the modules that are currently active.</B.BODY
  47132. ></LABEL
  47133. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47134. >Example</L.LABEL
  47135. ><B.BODY>If you are using the Cayenne class library, for example, the generated type for the association attribute at the Customer end in the following example will be a PtrSet. This information is retrieved from the Cayenne class library, just like the information needed to generate the implementations of the corresponding accessor methods.</B.BODY
  47136. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00469.unk" origfile="pics/assmany.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47137. ></FA.FIGURE.ANCHOR
  47138. ><B.BODY>If another class library is used, the type of the association attribute may be different, just like the implementation of the accessor methods may be different. The names of the accessor methods, however, remain the same across different class libraries. Their implementation may still vary.</B.BODY
  47139. ></LABEL
  47140. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47141. >Available class libraries</L.LABEL
  47142. ><B.BODY>Besides the Cayenne class library, the C++ code generator is also integrated with other class libraries to implement associations:</B.BODY
  47143. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="202p"><COLSPEC COLNAME="2" COLWIDTH="121p"><COLSPEC COLNAME="3" COLWIDTH="124p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ClaSS lIBRARY</CELLHEADING
  47144. ></ENTRY
  47145. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>aBBREVIATION</CELLHEADING
  47146. ></ENTRY
  47147. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module NAME</CELLHEADING
  47148. ></ENTRY
  47149. ></RBW-ROW
  47150. ></THEAD
  47151. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cayenne class library</CELLBODY
  47152. ></ENTRY
  47153. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>libcayn</CELLBODY
  47154. ></ENTRY
  47155. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;libcayn</CELLBODY
  47156. ></ENTRY
  47157. ></RBW-ROW
  47158. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Rogue Wave class library</CELLBODY
  47159. ></ENTRY
  47160. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>librw</CELLBODY
  47161. ></ENTRY
  47162. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;librw</CELLBODY
  47163. ></ENTRY
  47164. ></RBW-ROW
  47165. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>STL class library</CELLBODY
  47166. ></ENTRY
  47167. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>libstl</CELLBODY
  47168. ></ENTRY
  47169. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;libstl</CELLBODY
  47170. ></ENTRY
  47171. ></RBW-ROW
  47172. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>user&truehy;defined</CX5FX5FVARIABLE
  47173. > class library</CELLBODY
  47174. ></ENTRY
  47175. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>user&truehy;defined</CX5FX5FVARIABLE
  47176. ></CELLBODY
  47177. ></ENTRY
  47178. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>user&truehy;defined</CX5FX5FVARIABLE
  47179. ></CELLBODY
  47180. ></ENTRY
  47181. ></RBW-ROW
  47182. ></TBODY
  47183. ></TGROUP
  47184. ></RBW-TABLE
  47185. ><B.BODY>You can have multiple active class library modules in ObjectTeam, but there is only one default class library. </B.BODY
  47186. ></LABEL
  47187. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47188. >Default class library</L.LABEL
  47189. ><B.BODY>If you have multiple class library modules active, there is only one default class library: the last one in the list of active class library modules.</B.BODY
  47190. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  47191. ></RBW-AUTOGEN
  47192. ></RBW-MARKER
  47193. ><RBW-PARABODY>To see which library is the default:</RBW-PARABODY
  47194. ></P.PROCEDURE
  47195. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  47196. ></RBW-AUTOGEN
  47197. ></RBW-MARKER
  47198. ><RBW-PARABODY>In the Browser, select Utilities | Show Active Modules...</RBW-PARABODY
  47199. ></LN.LIST.NUM
  47200. ><LR.LIST.RESULT>The dialog box Active Module appears.</LR.LIST.RESULT
  47201. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00470.unk" origfile="pics/dbactmd.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47202. ></FA2.FIGURE.ANCHOR.2
  47203. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  47204. ></RBW-AUTOGEN
  47205. ></RBW-MARKER
  47206. ><RBW-PARABODY>Check which of the active class libraries is the last in line; this is the default class library.</RBW-PARABODY
  47207. ></LN.LIST.NUM
  47208. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  47209. ></RBW-AUTOGEN
  47210. >In this example, the Rogue Wave class library is the default.</T.TIP
  47211. ></LABEL
  47212. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47213. >Overruling the default class library</L.LABEL
  47214. ><B.BODY>For every individual end of an association with a role name you can instruct the C++ code generator to use an (active) class library other than the default.</B.BODY
  47215. ><B.BODY>You can do that using the association attribute property Class Library, which can be found in the Edit Properties dialog box on the Class Lib page.</B.BODY
  47216. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00471.unk" origfile="pics/dbcllib.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47217. ></FA.FIGURE.ANCHOR
  47218. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47219. >For more information</SL.SUBLABEL
  47220. ><B.BODY>See <RBW-XREF REFID="32778" TYPE="XREF-TEXTCOPY">Editing association attribute properties</RBW-XREF
  47221. ></B.BODY
  47222. ></LABEL
  47223. ></SUBSECTION
  47224. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19988"></RBW-ANCHOR
  47225. >Specifying an Implementation Strategy</SS.SUBSEC.HEAD
  47226. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47227. >Available strategies</L.LABEL
  47228. ><B.BODY>In some class libraries (see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your C++ Environment</RBW-XREF
  47229. >), multiple implementation strategies or storage structures have been made available for a particular association with a certain multiplicity. </B.BODY
  47230. ><B.BODY>In the Rogue Wave class library, for example, you have a choice between the following implementation strategies for associations ends having a multiplicity of <CX5FX5FEMPHASIS>many</CX5FX5FEMPHASIS
  47231. > at the opposite side. (see the role name <CX5FX5FEMPHASIS>customer</CX5FX5FEMPHASIS
  47232. > in the example CD):</B.BODY
  47233. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47234. ></RBW-AUTOGEN
  47235. ></RBW-MARKER
  47236. ><RBW-PARABODY>default</RBW-PARABODY
  47237. ></LB.LIST.BULLET
  47238. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47239. ></RBW-AUTOGEN
  47240. ></RBW-MARKER
  47241. ><RBW-PARABODY>hash</RBW-PARABODY
  47242. ></LB.LIST.BULLET
  47243. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47244. ></RBW-AUTOGEN
  47245. ></RBW-MARKER
  47246. ><RBW-PARABODY>doubleLL</RBW-PARABODY
  47247. ></LB.LIST.BULLET
  47248. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47249. ></RBW-AUTOGEN
  47250. ></RBW-MARKER
  47251. ><RBW-PARABODY>singleLL</RBW-PARABODY
  47252. ></LB.LIST.BULLET
  47253. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00472.unk" origfile="pics/assmany.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47254. ></FA.FIGURE.ANCHOR
  47255. ></LABEL
  47256. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47257. >Default implementation strategy</L.LABEL
  47258. ><B.BODY>The default implementation strategy for a particular association end is defined in the following file:</B.BODY
  47259. ><B.BODY><CX5FX5FFILE.NAME>cppclprop.tcl</CX5FX5FFILE.NAME
  47260. ></B.BODY
  47261. ><B.BODY>This file can be found in the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  47262. > directory of every class library module. It contains a mapping of association type indications (Ptr, Set, Dict, etc.) to implementation strategy indications to Tcl class names. </B.BODY
  47263. ><B.BODY>For Rogue Wave, for example, this mapping table looks like this:</B.BODY
  47264. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="112p"><COLSPEC COLNAME="2" COLWIDTH="126p"><COLSPEC COLNAME="3" COLWIDTH="208p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Type Indication</CELLHEADING
  47265. ></ENTRY
  47266. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Implementation Strategy</CELLHEADING
  47267. ></ENTRY
  47268. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl Class</CELLHEADING
  47269. ></ENTRY
  47270. ></RBW-ROW
  47271. ></THEAD
  47272. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Ptr</CELLBODY
  47273. ></ENTRY
  47274. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default</CELLBODY
  47275. ></ENTRY
  47276. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWPtrDef</CELLBODY
  47277. ></ENTRY
  47278. ></RBW-ROW
  47279. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set</CELLBODY
  47280. ></ENTRY
  47281. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default</CELLBODY
  47282. ></ENTRY
  47283. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWSetDef</CELLBODY
  47284. ></ENTRY
  47285. ></RBW-ROW
  47286. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set</CELLBODY
  47287. ></ENTRY
  47288. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>hash</CELLBODY
  47289. ></ENTRY
  47290. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWSetDef</CELLBODY
  47291. ></ENTRY
  47292. ></RBW-ROW
  47293. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set</CELLBODY
  47294. ></ENTRY
  47295. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>doubleLL</CELLBODY
  47296. ></ENTRY
  47297. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWDoubleSetDef</CELLBODY
  47298. ></ENTRY
  47299. ></RBW-ROW
  47300. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set</CELLBODY
  47301. ></ENTRY
  47302. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>singleLL</CELLBODY
  47303. ></ENTRY
  47304. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWSingleSetDef</CELLBODY
  47305. ></ENTRY
  47306. ></RBW-ROW
  47307. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OSet</CELLBODY
  47308. ></ENTRY
  47309. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default</CELLBODY
  47310. ></ENTRY
  47311. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWOSetDef</CELLBODY
  47312. ></ENTRY
  47313. ></RBW-ROW
  47314. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OSet</CELLBODY
  47315. ></ENTRY
  47316. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>hash</CELLBODY
  47317. ></ENTRY
  47318. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWOSetDef</CELLBODY
  47319. ></ENTRY
  47320. ></RBW-ROW
  47321. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dict</CELLBODY
  47322. ></ENTRY
  47323. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default</CELLBODY
  47324. ></ENTRY
  47325. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWDictDef</CELLBODY
  47326. ></ENTRY
  47327. ></RBW-ROW
  47328. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dict</CELLBODY
  47329. ></ENTRY
  47330. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>hash</CELLBODY
  47331. ></ENTRY
  47332. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWDictDef</CELLBODY
  47333. ></ENTRY
  47334. ></RBW-ROW
  47335. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SetDict</CELLBODY
  47336. ></ENTRY
  47337. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default</CELLBODY
  47338. ></ENTRY
  47339. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWSetDictDef</CELLBODY
  47340. ></ENTRY
  47341. ></RBW-ROW
  47342. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SetDict</CELLBODY
  47343. ></ENTRY
  47344. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>hash</CELLBODY
  47345. ></ENTRY
  47346. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWSetDictDef</CELLBODY
  47347. ></ENTRY
  47348. ></RBW-ROW
  47349. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OSetDict</CELLBODY
  47350. ></ENTRY
  47351. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default</CELLBODY
  47352. ></ENTRY
  47353. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWOSetDictDef</CELLBODY
  47354. ></ENTRY
  47355. ></RBW-ROW
  47356. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OSetDict</CELLBODY
  47357. ></ENTRY
  47358. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>hash</CELLBODY
  47359. ></ENTRY
  47360. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>RWOSetDictDef</CELLBODY
  47361. ></ENTRY
  47362. ></RBW-ROW
  47363. ></TBODY
  47364. ></TGROUP
  47365. ></RBW-TABLE
  47366. ><B.BODY>The Tcl classes contain the information required by the C++ code generator to generate the type of the association attribute and the bodies of the corresponding accessor methods.</B.BODY
  47367. ><B.BODY>The association type indications must be read as follows:</B.BODY
  47368. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="96p"><COLSPEC COLNAME="2" COLWIDTH="142p"><COLSPEC COLNAME="3" COLWIDTH="208p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type of association</CELLHEADING
  47369. ></ENTRY
  47370. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>multiplicity</CELLHEADING
  47371. ><CELLHEADING>(at the other end):</CELLHEADING
  47372. ></ENTRY
  47373. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Type Indication</CELLHEADING
  47374. ></ENTRY
  47375. ></RBW-ROW
  47376. ></THEAD
  47377. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>non&truehy;qualified</CELLBODY
  47378. ></ENTRY
  47379. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>mandatory, optional</CELLBODY
  47380. ></ENTRY
  47381. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Ptr</CELLBODY
  47382. ></ENTRY
  47383. ></RBW-ROW
  47384. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  47385. ></ENTRY
  47386. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  47387. ></ENTRY
  47388. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set</CELLBODY
  47389. ></ENTRY
  47390. ></RBW-ROW
  47391. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  47392. ></ENTRY
  47393. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>many {ordered}</CELLBODY
  47394. ></ENTRY
  47395. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>OSet</CELLBODY
  47396. ></ENTRY
  47397. ></RBW-ROW
  47398. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualified</CELLBODY
  47399. ></ENTRY
  47400. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>mandatory, optional</CELLBODY
  47401. ></ENTRY
  47402. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dict</CELLBODY
  47403. ></ENTRY
  47404. ></RBW-ROW
  47405. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  47406. ></ENTRY
  47407. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  47408. ></ENTRY
  47409. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>SetDict</CELLBODY
  47410. ></ENTRY
  47411. ></RBW-ROW
  47412. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  47413. ></ENTRY
  47414. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>many {ordered}</CELLBODY
  47415. ></ENTRY
  47416. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>OSetDict</CELLBODY
  47417. ></ENTRY
  47418. ></RBW-ROW
  47419. ></TBODY
  47420. ></TGROUP
  47421. ></RBW-TABLE
  47422. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47423. >For more information on customizing class libraries</SL.SUBLABEL
  47424. ><B.BODY>See <RBW-XREF REFID="32178" TYPE="XREF-TEXTCOPY">Customizing Class Libraries</RBW-XREF
  47425. >.</B.BODY
  47426. ></LABEL
  47427. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47428. >Overruling the default implementation strategy</L.LABEL
  47429. ><B.BODY>Depending on what has been defined in the <CX5FX5FFILE.NAME>cppclprop.tcl</CX5FX5FFILE.NAME
  47430. > file of the selected class library, you can select various implementation strategies for the implementation of a particular association end.</B.BODY
  47431. ><B.BODY>You can choose a strategy other than the default using the association attribute property Implementation Strategy, which can be found in the Edit Properties dialog box on the Class Lib page.</B.BODY
  47432. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00473.unk" origfile="pics/dbcllib2.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47433. ></FA.FIGURE.ANCHOR
  47434. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47435. >For more information</SL.SUBLABEL
  47436. ><B.BODY>See <RBW-XREF REFID="32778" TYPE="XREF-TEXTCOPY">Editing association attribute properties</RBW-XREF
  47437. ></B.BODY
  47438. ></LABEL
  47439. ></SUBSECTION
  47440. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="25709"></RBW-ANCHOR
  47441. >Specifying Free Text for an Association Attribute</SS.SUBSEC.HEAD
  47442. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47443. >Free Text</L.LABEL
  47444. ><B.BODY>Free text entered for role names in an association are inserted as C++ comments near the corresponding association attribute definition in the generated header file.</B.BODY
  47445. ></LABEL
  47446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47447. >Example</L.LABEL
  47448. ><B.BODY>In the following example, free text has been specified for the role name <CX5FX5FEMPHASIS>customer</CX5FX5FEMPHASIS
  47449. >. The definition of the corresponding association attribute is stored in the generated header file of the class at the opposite end: Book.</B.BODY
  47450. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00474.unk" origfile="pics/assfrtxt.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47451. ></FA.FIGURE.ANCHOR
  47452. ><B.BODY><CX5FX5FFILE.NAME>Book.h</CX5FX5FFILE.NAME
  47453. > (generated file):</B.BODY
  47454. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  47455. ><EM.EXAMPLE.MONO>class Book {</EM.EXAMPLE.MONO
  47456. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  47457. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  47458. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  47459. ><EM.EXAMPLE.MONO>protected:</EM.EXAMPLE.MONO
  47460. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  47461. ><EM.EXAMPLE.MONO>private:</EM.EXAMPLE.MONO
  47462. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  47463. ><EM.EXAMPLE.MONO>    // Association attribute storage</EM.EXAMPLE.MONO
  47464. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    // Free text entered for the role name: customer</CX5FX5FBULLET.EMPHASIS
  47465. ></EM.EXAMPLE.MONO
  47466. ><EM.EXAMPLE.MONO>    Customer* customerPtr;</EM.EXAMPLE.MONO
  47467. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  47468. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  47469. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  47470. ></LABEL
  47471. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47472. >How to enter free text</L.LABEL
  47473. ><B.BODY>You enter an association attribute’s free text through the following property of the corresponding role name:</B.BODY
  47474. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="268p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  47475. ></ENTRY
  47476. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Page</CELLHEADING
  47477. ></ENTRY
  47478. ></RBW-ROW
  47479. ></THEAD
  47480. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  47481. ></ENTRY
  47482. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  47483. ></ENTRY
  47484. ></RBW-ROW
  47485. ></TBODY
  47486. ></TGROUP
  47487. ></RBW-TABLE
  47488. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47489. >For more information</SL.SUBLABEL
  47490. ><B.BODY>See <RBW-XREF REFID="32778" TYPE="XREF-TEXTCOPY">Editing association attribute properties</RBW-XREF
  47491. ></B.BODY
  47492. ></LABEL
  47493. ></SUBSECTION
  47494. ></SECTION
  47495. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32807"></RBW-ANCHOR
  47496. >Mapping Qualified Associations</S.SECTION.HEAD
  47497. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47498. >Prerequisite</L.LABEL
  47499. ><B.BODY><RBW-XREF REFID="34926" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  47500. > describes the mapping of non&truehy;qualified associations with various multiplicity types. This section assumes that you are familiar with that information.</B.BODY
  47501. ></LABEL
  47502. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47503. >Introduction</L.LABEL
  47504. ><B.BODY>This section describes the general concepts behind the code that is generated for qualified associations with various multiplicity types:</B.BODY
  47505. ><B.BODY>This is an example of a qualified association:</B.BODY
  47506. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00475.unk" origfile="pics/qass.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47507. ></FA.FIGURE.ANCHOR
  47508. ><B.BODY>You can use qualified associations to model dictionaries of pointers to certain objects. The qualifier acts as the key to the dictionary.</B.BODY
  47509. ></LABEL
  47510. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47511. >Association attribute</L.LABEL
  47512. ><B.BODY>The attributes that are generated to support ObjectTeam associations are referred to as association attributes. The role name at the appropriate end of the qualified association is used as a base for generating association attributes.</B.BODY
  47513. ><B.BODY>The type of the association attribute reflects the strategy that is used to implement the association at the qualifier end. This strategy depends on:the multiplicity at the other end and on the active class library.</B.BODY
  47514. ></LABEL
  47515. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47516. >Implementation strategies</L.LABEL
  47517. ><B.BODY>The implementation strategy used to implement a qualified association at the qualifier end (Customer, for example) is a <CX5FX5FEMPHASIS>dictionary of pointers</CX5FX5FEMPHASIS
  47518. >. This strategy is reflected in the type of the association attribute. Which dictionary type is used depends on:</B.BODY
  47519. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47520. ></RBW-AUTOGEN
  47521. ></RBW-MARKER
  47522. ><RBW-PARABODY>the multiplicity at the other end (<CX5FX5FEMPHASIS>many</CX5FX5FEMPHASIS
  47523. > in the example above)</RBW-PARABODY
  47524. ></LB.LIST.BULLET
  47525. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47526. ></RBW-AUTOGEN
  47527. ></RBW-MARKER
  47528. ><RBW-PARABODY>the active class library (Cayenne class library, for example)</RBW-PARABODY
  47529. ></LB.LIST.BULLET
  47530. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity at non&truehy;qualified end (Book)</CELLHEADING
  47531. ></ENTRY
  47532. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING> Implementation Strategy</CELLHEADING
  47533. ></ENTRY
  47534. ></RBW-ROW
  47535. ></THEAD
  47536. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>mandatory, optional</CELLBODY
  47537. ></ENTRY
  47538. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer dictionary</CELLBODY
  47539. ></ENTRY
  47540. ></RBW-ROW
  47541. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>mandatory, optional {ordered}</CELLBODY
  47542. ></ENTRY
  47543. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ordered pointer dictionary</CELLBODY
  47544. ></ENTRY
  47545. ></RBW-ROW
  47546. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  47547. ></ENTRY
  47548. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set dictionary</CELLBODY
  47549. ></ENTRY
  47550. ></RBW-ROW
  47551. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many {ordered}</CELLBODY
  47552. ></ENTRY
  47553. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ordered pointer set dictionary</CELLBODY
  47554. ></ENTRY
  47555. ></RBW-ROW
  47556. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>mandatory, optional</CELLBODY
  47557. ></ENTRY
  47558. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer dictionary</CELLBODY
  47559. ></ENTRY
  47560. ></RBW-ROW
  47561. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  47562. ></ENTRY
  47563. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set dictionary</CELLBODY
  47564. ></ENTRY
  47565. ></RBW-ROW
  47566. ></TBODY
  47567. ></TGROUP
  47568. ></RBW-TABLE
  47569. ><B.BODY>In such a pointer (set) dictionary, the qualifier name is the dictionary key, and the data type of the qualifier is the key type. The data in the dictionary is:</B.BODY
  47570. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47571. ></RBW-AUTOGEN
  47572. ></RBW-MARKER
  47573. ><RBW-PARABODY>a pointer to an object at the other end (Book) for a pointer dictionary</RBW-PARABODY
  47574. ></LB.LIST.BULLET
  47575. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47576. ></RBW-AUTOGEN
  47577. ></RBW-MARKER
  47578. ><RBW-PARABODY>a set of pointers to objects at the other end (Book) for a pointer <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  47579. > dictionary</RBW-PARABODY
  47580. ></LB.LIST.BULLET
  47581. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47582. >Cayenne class library</SL.SUBLABEL
  47583. ><B.BODY>If you are using the Cayenne class library, the following association attribute types are used for implementing these qualified associations:</B.BODY
  47584. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="201p"><COLSPEC COLNAME="2" COLWIDTH="247p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>data structure</CELLHEADING
  47585. ></ENTRY
  47586. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Cayenne class library class</CELLHEADING
  47587. ></ENTRY
  47588. ></RBW-ROW
  47589. ></THEAD
  47590. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer dictionary</CELLBODY
  47591. ></ENTRY
  47592. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrDict</CELLBODY
  47593. ></ENTRY
  47594. ></RBW-ROW
  47595. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ordered pointer dictionary</CELLBODY
  47596. ></ENTRY
  47597. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPtrDict</CELLBODY
  47598. ></ENTRY
  47599. ></RBW-ROW
  47600. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set dictionary</CELLBODY
  47601. ></ENTRY
  47602. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PSetDict</CELLBODY
  47603. ></ENTRY
  47604. ></RBW-ROW
  47605. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ordered pointer set dictionary</CELLBODY
  47606. ></ENTRY
  47607. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPSetDict</CELLBODY
  47608. ></ENTRY
  47609. ></RBW-ROW
  47610. ></TBODY
  47611. ></TGROUP
  47612. ></RBW-TABLE
  47613. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  47614. ></RBW-AUTOGEN
  47615. >In some class libraries, there is more than one implementation strategy available for a particular type of association. There is always a default strategy defined, but you can select another implementation strategy using the association attribute property Implementation Strategy (see <RBW-XREF REFID="19988" TYPE="XREF-TEXTCOPY">Specifying an Implementation Strategy</RBW-XREF
  47616. >).</T.TIP
  47617. ></LABEL
  47618. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47619. >Association accessor methods</L.LABEL
  47620. ><B.BODY>Depending on the data structure of the association attribute type (pointer dictionary or pointer set dictionary), the following accessor methods are generated for a class at the qualifier end.</B.BODY
  47621. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  47622. ></RBW-AUTOGEN
  47623. >The dictionary key (specified by the qualifier) is used in the argument lists of these methods.</N.NOTE
  47624. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Pointer dictionary</CELLHEADING
  47625. ></ENTRY
  47626. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Pointer set dictionary</CELLHEADING
  47627. ></ENTRY
  47628. ></RBW-ROW
  47629. ></THEAD
  47630. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set<<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47631. >></CELLBODY
  47632. ></ENTRY
  47633. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>add<<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47634. >></CELLBODY
  47635. ></ENTRY
  47636. ></RBW-ROW
  47637. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>get<<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47638. >></CELLBODY
  47639. ></ENTRY
  47640. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>get<<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47641. >>Set</CELLBODY
  47642. ></ENTRY
  47643. ></RBW-ROW
  47644. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>remove<<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47645. >></CELLBODY
  47646. ></ENTRY
  47647. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>remove<<CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47648. >></CELLBODY
  47649. ></ENTRY
  47650. ></RBW-ROW
  47651. ></TBODY
  47652. ></TGROUP
  47653. ></RBW-TABLE
  47654. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  47655. ></RBW-AUTOGEN
  47656. >The remove method is not generated if the multiplicity at the qualifier end is mandatory</N.NOTE
  47657. ></LABEL
  47658. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47659. ><RBW-ANCHOR ID="27543"></RBW-ANCHOR
  47660. >Data type of the qualifier</L.LABEL
  47661. ><B.BODY>Qualifiers in qualified associations must have a data type, which can be specified through the qualifier property Data Type. Valid data types are standard types or class types. </B.BODY
  47662. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47663. >Cayenne class library</SL.SUBLABEL
  47664. ><B.BODY>If the Cayenne class library is part of your C++ environment (see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your C++ Environment on page 2–7</RBW-XREF
  47665. >), data types of qualifiers must be <RBW-IDXTERM TERM1="data type" TERM2="hashable"></RBW-IDXTERM
  47666. ><RBW-IDXTERM TERM1="hashable data type"></RBW-IDXTERM
  47667. >hashable data types. The following classes from the Cayenne class library support hashable data types:</B.BODY
  47668. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47669. ></RBW-AUTOGEN
  47670. ></RBW-MARKER
  47671. ><RBW-PARABODY><RBW-IDXTERM TERM1="IntHash"></RBW-IDXTERM
  47672. ><RBW-IDXTERM TERM1="libwmt4omt" TERM2="IntHash"></RBW-IDXTERM
  47673. >IntHash</RBW-PARABODY
  47674. ></LB.LIST.BULLET
  47675. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47676. ></RBW-AUTOGEN
  47677. ></RBW-MARKER
  47678. ><RBW-PARABODY><RBW-IDXTERM TERM1="StringHash"></RBW-IDXTERM
  47679. ><RBW-IDXTERM TERM1="libwmt4omt" TERM2="StringHash"></RBW-IDXTERM
  47680. >StringHash</RBW-PARABODY
  47681. ></LB.LIST.BULLET
  47682. ><B.BODY>These types behave the same as their base types <CX5FX5FINPUT>int</CX5FX5FINPUT
  47683. > and <CX5FX5FINPUT>String</CX5FX5FINPUT
  47684. >, but they can be used to locate certain occurrences of a detail class in a pointer set. </B.BODY
  47685. ><B.BODY>The class <RBW-IDXTERM TERM1="Hashable"></RBW-IDXTERM
  47686. ><RBW-IDXTERM TERM1="libwmt4omt" TERM2="Hashable"></RBW-IDXTERM
  47687. >Hashable, which is also part of the Cayenne class library, is the superclass of the classes IntHash and StringHash. You can specify any class as data type for a qualifier, as long as its superclass is the class Hashable. </B.BODY
  47688. ></LABEL
  47689. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47690. >Bidirectional qualified associations </L.LABEL
  47691. ><B.BODY>In the example depicted above, every Book object keeps track of the Customer object it is associated with, or, if the multiplicity at the qualifier side is many, the <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  47692. > of associated Customer objects. Hence, the associated Customer object(s) can always be retrieved from a Book object.</B.BODY
  47693. ><B.BODY>Bear in mind, however, that if you make the association bidirectional by putting a role name at the side of the qualifier, Book objects do not keep track of the qualifier, or the set of qualifiers used to establish the association with Customer object(s). The attribute <CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  47694. > (or, in the case of a many association <CX5FX5FVARIABLE>roleNameSet</CX5FX5FVARIABLE
  47695. >) that is generated for Book will not contain the qualifier, and will return the same as in a non&truehy;qualified association.</B.BODY
  47696. ></LABEL
  47697. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47698. ><RBW-ANCHOR ID="11116"></RBW-ANCHOR
  47699. >Editing qualifier properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for qualifier"></RBW-IDXTERM
  47700. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  47701. ><RBW-IDXTERM TERM1="qualifier" TERM2="editing properties"></RBW-IDXTERM
  47702. ></L.LABEL
  47703. ><B.BODY>The main qualifier property is Data Type, through which you can specify the dictionary key type.</B.BODY
  47704. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  47705. ></RBW-AUTOGEN
  47706. ></RBW-MARKER
  47707. ><RBW-PARABODY>To edit qualifier properties:</RBW-PARABODY
  47708. ></P.PROCEDURE
  47709. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  47710. ></RBW-AUTOGEN
  47711. ></RBW-MARKER
  47712. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  47713. ></LN.LIST.NUM
  47714. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  47715. ></RBW-AUTOGEN
  47716. ></RBW-MARKER
  47717. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  47718. ></LN.LIST.NUM
  47719. ><LR.LIST.RESULT>The Edit Properties dialog appears</LR.LIST.RESULT
  47720. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  47721. ></RBW-AUTOGEN
  47722. ></RBW-MARKER
  47723. ><RBW-PARABODY>Select a qualifier from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  47724. ></LN.LIST.NUM
  47725. ><LR.LIST.RESULT>The qualifier properties appear on the right side of the dialog box.</LR.LIST.RESULT
  47726. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00476.unk" origfile="pics/dbedprq.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47727. ></FA2.FIGURE.ANCHOR.2
  47728. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  47729. ></RBW-AUTOGEN
  47730. >Properties can be distributed over multiple property pages. You can select a property page by clicking its tab (Misc, Text).</N2.NOTE.2
  47731. ><LT.LIST.TEXT>The following qualifier properties are available:</LT.LIST.TEXT
  47732. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="133p"><COLSPEC COLNAME="2" COLWIDTH="39p"><COLSPEC COLNAME="3" COLWIDTH="156p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  47733. ></ENTRY
  47734. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Page</CELLHEADING
  47735. ></ENTRY
  47736. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  47737. ></ENTRY
  47738. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  47739. ></ENTRY
  47740. ></RBW-ROW
  47741. ></THEAD
  47742. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  47743. ></ENTRY
  47744. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  47745. ></ENTRY
  47746. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>the dictionary key type (e.g.: IntHash or StringHash)</CELLBODY
  47747. ></ENTRY
  47748. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="27543" TYPE="XREF-TEXTCOPY">Data type of the qualifier</RBW-XREF
  47749. ></CELLBODY
  47750. ></ENTRY
  47751. ></RBW-ROW
  47752. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nullable</CELLBODY
  47753. ></ENTRY
  47754. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  47755. ></ENTRY
  47756. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>whether or not the qualifier must be nullable</CELLBODY
  47757. ></ENTRY
  47758. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="35790" TYPE="XREF-TEXTCOPY">Specifying Mandatory Attributes</RBW-XREF
  47759. ></CELLBODY
  47760. ></ENTRY
  47761. ></RBW-ROW
  47762. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  47763. ></ENTRY
  47764. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  47765. ></ENTRY
  47766. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional qualifier notes</CELLBODY
  47767. ></ENTRY
  47768. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>These comments are not added to the generated files</CELLBODY
  47769. ></ENTRY
  47770. ></RBW-ROW
  47771. ></TBODY
  47772. ></TGROUP
  47773. ></RBW-TABLE
  47774. ><LT.LIST.TEXT>In the remainder of this section, these properties are discussed further.</LT.LIST.TEXT
  47775. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  47776. ></RBW-AUTOGEN
  47777. ></RBW-MARKER
  47778. ><RBW-PARABODY>Change the property values of your choice and click OK.</RBW-PARABODY
  47779. ></LN.LIST.NUM
  47780. ></LABEL
  47781. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47782. >Example</L.LABEL
  47783. ><B.BODY>Following is an excerpt from the header file for the Customer class shown above. The data type of the qualifier bookID is IntHash, which is a hashable data type from the Cayenne class library. The IntHash class must be defined in another system as external class.</B.BODY
  47784. ><B.BODY>The following association accessor methods are generated:</B.BODY
  47785. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47786. ></RBW-AUTOGEN
  47787. ></RBW-MARKER
  47788. ><RBW-PARABODY>getBook</RBW-PARABODY
  47789. ></LB.LIST.BULLET
  47790. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47791. ></RBW-AUTOGEN
  47792. ></RBW-MARKER
  47793. ><RBW-PARABODY>addBook</RBW-PARABODY
  47794. ></LB.LIST.BULLET
  47795. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47796. ></RBW-AUTOGEN
  47797. ></RBW-MARKER
  47798. ><RBW-PARABODY>removeBook</RBW-PARABODY
  47799. ></LB.LIST.BULLET
  47800. ><B.BODY>The data structure of the association attribute is a pointer set dictionary, implemented by the Cayenne class library class PsetDict.</B.BODY
  47801. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  47802. ><EWM.EXAMPLEW.MONO>// File          : Customer.h</EWM.EXAMPLEW.MONO
  47803. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  47804. ><EWM.EXAMPLEW.MONO>#include <PSetDict.hxx></EWM.EXAMPLEW.MONO
  47805. ><EWM.EXAMPLEW.MONO>#include <assert.h></EWM.EXAMPLEW.MONO
  47806. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  47807. ><EWM.EXAMPLEW.MONO>#ifndef BOOK_H</EWM.EXAMPLEW.MONO
  47808. ><EWM.EXAMPLEW.MONO>#include "Book.h"</EWM.EXAMPLEW.MONO
  47809. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  47810. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  47811. ><EWM.EXAMPLEW.MONO>#ifndef INTHASH_H</EWM.EXAMPLEW.MONO
  47812. ><EWM.EXAMPLEW.MONO>#include "IntHash.h"</EWM.EXAMPLEW.MONO
  47813. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  47814. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  47815. ><EWM.EXAMPLEW.MONO>class Customer {</EWM.EXAMPLEW.MONO
  47816. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  47817. ><EWM.EXAMPLEW.MONO>public:</EWM.EXAMPLEW.MONO
  47818. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  47819. ><EWM.EXAMPLEW.MONO>    // Association accessor methods</EWM.EXAMPLEW.MONO
  47820. ><EWM.EXAMPLEW.MONO>    const PtrSet< Book >& <CX5FX5FBULLET.EMPHASIS>getBookSet</CX5FX5FBULLET.EMPHASIS
  47821. >(IntHash BookID) const;</EWM.EXAMPLEW.MONO
  47822. ><EWM.EXAMPLEW.MONO>    void <CX5FX5FBULLET.EMPHASIS>addBook</CX5FX5FBULLET.EMPHASIS
  47823. >(IntHash BookID, Book* newBook);</EWM.EXAMPLEW.MONO
  47824. ><EWM.EXAMPLEW.MONO>    void <CX5FX5FBULLET.EMPHASIS>removeBook</CX5FX5FBULLET.EMPHASIS
  47825. >(IntHash BookID, Book* oldBook);</EWM.EXAMPLEW.MONO
  47826. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  47827. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  47828. ><EWM.EXAMPLEW.MONO>private:</EWM.EXAMPLEW.MONO
  47829. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  47830. ><EWM.EXAMPLEW.MONO>    // Association attribute storage</EWM.EXAMPLEW.MONO
  47831. ><EWM.EXAMPLEW.MONO>    PSetDict< IntHash, Book > <CX5FX5FBULLET.EMPHASIS>bookDictSet</CX5FX5FBULLET.EMPHASIS
  47832. >;</EWM.EXAMPLEW.MONO
  47833. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  47834. ><EWM.EXAMPLEW.MONO>};</EWM.EXAMPLEW.MONO
  47835. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  47836. ></LABEL
  47837. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47838. >In this section</L.LABEL
  47839. ><B.BODY>This section contains the following topics:</B.BODY
  47840. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  47841. ></ENTRY
  47842. ></RBW-ROW
  47843. ></THEAD
  47844. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38614" TYPE="XREF-TEXTCOPY">Mapping a Mandatory &truehy; Anything Qualified Association&rbwtab;3–92</RBW-XREF
  47845. ></SB.SECTION.BLOCK.TABLE
  47846. ></ENTRY
  47847. ></RBW-ROW
  47848. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13331" TYPE="XREF-TEXTCOPY">Mapping a Optional &truehy; Optional Qualified Association&rbwtab;3–93</RBW-XREF
  47849. ></SB.SECTION.BLOCK.TABLE
  47850. ></ENTRY
  47851. ></RBW-ROW
  47852. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27805" TYPE="XREF-TEXTCOPY">Mapping a Optional &truehy; Mandatory Qualified Association&rbwtab;3–95</RBW-XREF
  47853. ></SB.SECTION.BLOCK.TABLE
  47854. ></ENTRY
  47855. ></RBW-ROW
  47856. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26001" TYPE="XREF-TEXTCOPY">Mapping an Optional &truehy; Many Qualified Association&rbwtab;3–96</RBW-XREF
  47857. ></SB.SECTION.BLOCK.TABLE
  47858. ></ENTRY
  47859. ></RBW-ROW
  47860. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40669" TYPE="XREF-TEXTCOPY">Mapping a Many &truehy; Optional Qualified Association&rbwtab;3–99</RBW-XREF
  47861. ></SB.SECTION.BLOCK.TABLE
  47862. ></ENTRY
  47863. ></RBW-ROW
  47864. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37998" TYPE="XREF-TEXTCOPY">Mapping a Many &truehy; Mandatory Qualified Association&rbwtab;3–102</RBW-XREF
  47865. ></SB.SECTION.BLOCK.TABLE
  47866. ></ENTRY
  47867. ></RBW-ROW
  47868. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33442" TYPE="XREF-TEXTCOPY">Mapping a Many &truehy; Many Qualified Association&rbwtab;3–103</RBW-XREF
  47869. ></SB.SECTION.BLOCK.TABLE
  47870. ></ENTRY
  47871. ></RBW-ROW
  47872. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41254" TYPE="XREF-TEXTCOPY">Mapping Ordered Qualified Associations&rbwtab;3–105</RBW-XREF
  47873. ></SB.SECTION.BLOCK.TABLE
  47874. ></ENTRY
  47875. ></RBW-ROW
  47876. ></TBODY
  47877. ></TGROUP
  47878. ></RBW-TABLE
  47879. ></LABEL
  47880. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38614"></RBW-ANCHOR
  47881. >Mapping a Mandatory &truehy; Anything Qualified Association</SS.SUBSEC.HEAD
  47882. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47883. >Introduction</L.LABEL
  47884. ><B.BODY>Here is an example of a qualified association with a multiplicity of mandatory at the qualifier end:</B.BODY
  47885. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00477.unk" origfile="pics/qassmd-o.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47886. ></FA.FIGURE.ANCHOR
  47887. ><B.BODY>In a mandatory &truehy; {mandatory | optional | many} association, objects at the qualifier end (A) have a pointer dictionary to objects at the other end (B). Objects at the other end (B) have a pointer to an object at the qualifier end (A).</B.BODY
  47888. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="187p"><COLSPEC COLNAME="3" COLWIDTH="207p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  47889. ></ENTRY
  47890. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Implementation strategy</CELLHEADING
  47891. ></ENTRY
  47892. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Cayenne class library class</CELLHEADING
  47893. ></ENTRY
  47894. ></RBW-ROW
  47895. ></THEAD
  47896. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  47897. ></ENTRY
  47898. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer dictionary</CELLBODY
  47899. ></ENTRY
  47900. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrDict</CELLBODY
  47901. ></ENTRY
  47902. ></RBW-ROW
  47903. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  47904. ></ENTRY
  47905. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer</CELLBODY
  47906. ></ENTRY
  47907. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  47908. ></ENTRY
  47909. ></RBW-ROW
  47910. ></TBODY
  47911. ></TGROUP
  47912. ></RBW-TABLE
  47913. ></LABEL
  47914. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47915. >Updating an association</L.LABEL
  47916. ><B.BODY>The C++ code generator does not generate any methods for updating an association with a multiplicity of mandatory at the qualifier end. It does not generate the required constructor parameters for both classes either (see <RBW-XREF REFID="22663" TYPE="XREF-TEXTCOPY">Constructors</RBW-XREF
  47917. >).</B.BODY
  47918. ></LABEL
  47919. ></SUBSECTION
  47920. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13331"></RBW-ANCHOR
  47921. >Mapping a Optional &truehy; Optional Qualified Association</SS.SUBSEC.HEAD
  47922. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47923. >Introduction</L.LABEL
  47924. ><B.BODY>This is an example of a qualified optional &truehy; optional association.</B.BODY
  47925. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00478.unk" origfile="pics/qasso-o.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47926. ></FA.FIGURE.ANCHOR
  47927. ><B.BODY>In an optional &truehy; optional association, objects at the qualifier end (A) have a pointer dictionary to objects at the other end (B). Objects at the other end (B) have a pointer to an object at the qualifier end (A).</B.BODY
  47928. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="187p"><COLSPEC COLNAME="3" COLWIDTH="207p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  47929. ></ENTRY
  47930. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Implementation strategy</CELLHEADING
  47931. ></ENTRY
  47932. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Cayenne Class Library Class</CELLHEADING
  47933. ></ENTRY
  47934. ></RBW-ROW
  47935. ></THEAD
  47936. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  47937. ></ENTRY
  47938. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer dictionary</CELLBODY
  47939. ></ENTRY
  47940. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrDict</CELLBODY
  47941. ></ENTRY
  47942. ></RBW-ROW
  47943. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  47944. ></ENTRY
  47945. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer</CELLBODY
  47946. ></ENTRY
  47947. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  47948. ></ENTRY
  47949. ></RBW-ROW
  47950. ></TBODY
  47951. ></TGROUP
  47952. ></RBW-TABLE
  47953. ></LABEL
  47954. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47955. >Updating an association</L.LABEL
  47956. ><B.BODY>When an optional &truehy; optional association is updated, the old association must first be removed before the new association can be created.</B.BODY
  47957. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  47958. >Example</SL.SUBLABEL
  47959. ><B.BODY>The following picture shows a situation where an object A (Ax) is associated with two B objects:</B.BODY
  47960. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47961. ></RBW-AUTOGEN
  47962. ></RBW-MARKER
  47963. ><RBW-PARABODY>with Bx through <CX5FX5FEMPHASIS>key k1</CX5FX5FEMPHASIS
  47964. ></RBW-PARABODY
  47965. ></LB.LIST.BULLET
  47966. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  47967. ></RBW-AUTOGEN
  47968. ></RBW-MARKER
  47969. ><RBW-PARABODY>with By through <CX5FX5FEMPHASIS>key k2</CX5FX5FEMPHASIS
  47970. ></RBW-PARABODY
  47971. ></LB.LIST.BULLET
  47972. ><B.BODY>The other A object (Ay) is currently not associated with any B object.</B.BODY
  47973. ><B.BODY>The arrows represent pointers.</B.BODY
  47974. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00479.tif" origseq="49" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  47975. ></FA.FIGURE.ANCHOR
  47976. ><B.BODY>Suppose you now want to associate object By with object Ay, through <CX5FX5FEMPHASIS>key k3</CX5FX5FEMPHASIS
  47977. >. </B.BODY
  47978. ><B.BODY>The following tasks then need to be carried out in the following order:</B.BODY
  47979. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  47980. ></RBW-AUTOGEN
  47981. ></RBW-MARKER
  47982. ><RBW-PARABODY>Remove the Ax pointer to By (<CX5FX5FEMPHASIS>key</CX5FX5FEMPHASIS
  47983. > <CX5FX5FEMPHASIS>k2</CX5FX5FEMPHASIS
  47984. >)</RBW-PARABODY
  47985. ></LN.LIST.NUM
  47986. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  47987. ></RBW-AUTOGEN
  47988. ></RBW-MARKER
  47989. ><RBW-PARABODY>Redirect the By pointer from Ax to Ay (<CX5FX5FEMPHASIS>key k3</CX5FX5FEMPHASIS
  47990. >)</RBW-PARABODY
  47991. ></LN.LIST.NUM
  47992. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  47993. ></RBW-AUTOGEN
  47994. ></RBW-MARKER
  47995. ><RBW-PARABODY>Add to Ay a pointer to By (<CX5FX5FEMPHASIS>key 3</CX5FX5FEMPHASIS
  47996. >)</RBW-PARABODY
  47997. ></LN.LIST.NUM
  47998. ><B.BODY>These steps are visualized in the following picture.</B.BODY
  47999. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00480.tif" origseq="89" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48000. ></FA.FIGURE.ANCHOR
  48001. ><B.BODY>The result of this update action is shown in the following picture.</B.BODY
  48002. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00481.tif" origseq="121" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48003. ></FA.FIGURE.ANCHOR
  48004. ><B.BODY>The C++ code generator generates methods that implement these update actions.</B.BODY
  48005. ></LABEL
  48006. ></SUBSECTION
  48007. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27805"></RBW-ANCHOR
  48008. >Mapping a Optional &truehy; Mandatory Qualified Association </SS.SUBSEC.HEAD
  48009. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48010. >Introduction</L.LABEL
  48011. ><B.BODY>This is an example of a qualified optional &truehy; mandatory association.</B.BODY
  48012. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00482.unk" origfile="pics/qasso-o.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48013. ></FA.FIGURE.ANCHOR
  48014. ></LABEL
  48015. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48016. >Updating an association</L.LABEL
  48017. ><B.BODY>The update consequences for optional &truehy; mandatory associations are similar to those of optional &truehy; optional associations (see <RBW-XREF REFID="13331" TYPE="XREF-TEXTCOPY">Mapping a Optional &truehy; Optional Qualified Association</RBW-XREF
  48018. >).</B.BODY
  48019. ><B.BODY>The additional restriction for optional &truehy; mandatory associations is that a pointer to a B object can never be zero.</B.BODY
  48020. ></LABEL
  48021. ></SUBSECTION
  48022. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26001"></RBW-ANCHOR
  48023. >Mapping an Optional &truehy; Many Qualified Association</SS.SUBSEC.HEAD
  48024. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48025. >Introduction</L.LABEL
  48026. ><B.BODY>This is an example of a qualified optional &truehy; many association.</B.BODY
  48027. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00483.unk" origfile="pics/qasso-md.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48028. ></FA.FIGURE.ANCHOR
  48029. ><B.BODY>In an optional &truehy; many association, objects at the qualifier end (A) have a dictionary of pointers to objects at the other end (B). Objects at the other end (B) have a set of pointers to A objects.</B.BODY
  48030. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="63p"><COLSPEC COLNAME="2" COLWIDTH="192p"><COLSPEC COLNAME="3" COLWIDTH="193p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  48031. ></ENTRY
  48032. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Attribute Type</CELLHEADING
  48033. ></ENTRY
  48034. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Cayenne Class Library</CELLHEADING
  48035. ></ENTRY
  48036. ></RBW-ROW
  48037. ></THEAD
  48038. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  48039. ></ENTRY
  48040. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer dictionary</CELLBODY
  48041. ></ENTRY
  48042. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrDict</CELLBODY
  48043. ></ENTRY
  48044. ></RBW-ROW
  48045. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  48046. ></ENTRY
  48047. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set</CELLBODY
  48048. ></ENTRY
  48049. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrSet</CELLBODY
  48050. ></ENTRY
  48051. ></RBW-ROW
  48052. ></TBODY
  48053. ></TGROUP
  48054. ></RBW-TABLE
  48055. ></LABEL
  48056. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48057. >Updating an association</L.LABEL
  48058. ><B.BODY>When an optional &truehy; many association is updated, and the new object B already has an association with an object A, this association must be removed first. The object A must delete the old object B from its dictionary and the old object B must set its pointer to 0.</B.BODY
  48059. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48060. >Example</SL.SUBLABEL
  48061. ><B.BODY>The following picture shows a situation where an object A (Ax) is associated with two B objects:</B.BODY
  48062. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48063. ></RBW-AUTOGEN
  48064. ></RBW-MARKER
  48065. ><RBW-PARABODY>with Bx through <CX5FX5FEMPHASIS>key k1</CX5FX5FEMPHASIS
  48066. ></RBW-PARABODY
  48067. ></LB.LIST.BULLET
  48068. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48069. ></RBW-AUTOGEN
  48070. ></RBW-MARKER
  48071. ><RBW-PARABODY>with By through <CX5FX5FEMPHASIS>key k2</CX5FX5FEMPHASIS
  48072. ></RBW-PARABODY
  48073. ></LB.LIST.BULLET
  48074. ><B.BODY>The other A object (Ay) is currently associated with one B object:</B.BODY
  48075. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48076. ></RBW-AUTOGEN
  48077. ></RBW-MARKER
  48078. ><RBW-PARABODY>with Bz through <CX5FX5FEMPHASIS>key k3</CX5FX5FEMPHASIS
  48079. >.</RBW-PARABODY
  48080. ></LB.LIST.BULLET
  48081. ><B.BODY>The arrows represent pointers.</B.BODY
  48082. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00484.tif" origseq="46" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48083. ></FA.FIGURE.ANCHOR
  48084. ><B.BODY>Suppose you now want to associate object By with object Ay. Since its a <CX5FX5FEMPHASIS>many</CX5FX5FEMPHASIS
  48085. > association, you can do that through <CX5FX5FEMPHASIS>k3</CX5FX5FEMPHASIS
  48086. >, a key that is already used in the association between Ay and Bz.</B.BODY
  48087. ><B.BODY>The following tasks then need to be carried out in the following order:</B.BODY
  48088. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  48089. ></RBW-AUTOGEN
  48090. ></RBW-MARKER
  48091. ><RBW-PARABODY>Remove the Ax pointer to By (<CX5FX5FEMPHASIS>key k2</CX5FX5FEMPHASIS
  48092. >)</RBW-PARABODY
  48093. ></LN.LIST.NUM
  48094. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  48095. ></RBW-AUTOGEN
  48096. ></RBW-MARKER
  48097. ><RBW-PARABODY>Redirect the By pointer from Ax to Ay (<CX5FX5FEMPHASIS>key 2</CX5FX5FEMPHASIS
  48098. >)</RBW-PARABODY
  48099. ></LN.LIST.NUM
  48100. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  48101. ></RBW-AUTOGEN
  48102. ></RBW-MARKER
  48103. ><RBW-PARABODY>Add to Ay a pointer to By (<CX5FX5FEMPHASIS>key 3</CX5FX5FEMPHASIS
  48104. >)</RBW-PARABODY
  48105. ></LN.LIST.NUM
  48106. ><B.BODY>These steps are visualized in the following picture.</B.BODY
  48107. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00485.tif" origseq="39" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48108. ></FA.FIGURE.ANCHOR
  48109. ><B.BODY>The result of this update action is shown in the following picture.</B.BODY
  48110. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00486.tif" origseq="130" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48111. ></FA.FIGURE.ANCHOR
  48112. ><B.BODY>The C++ code generator generates methods that implement these update actions.</B.BODY
  48113. ><B.BODY></B.BODY
  48114. ></LABEL
  48115. ></SUBSECTION
  48116. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40669"></RBW-ANCHOR
  48117. >Mapping a Many &truehy; Optional Qualified Association</SS.SUBSEC.HEAD
  48118. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48119. >Introduction</L.LABEL
  48120. ><B.BODY>This is an example of a many &truehy; optional association.</B.BODY
  48121. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00487.unk" origfile="pics/qassmy-o.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48122. ></FA.FIGURE.ANCHOR
  48123. ><B.BODY>In a many &truehy; optional association, objects at the qualifier end (A) have a dictionary of pointers to objects at the other end (B). Objects at the other end (B) have a set of pointers to A objects.</B.BODY
  48124. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="63p"><COLSPEC COLNAME="2" COLWIDTH="192p"><COLSPEC COLNAME="3" COLWIDTH="193p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  48125. ></ENTRY
  48126. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Attribute Type</CELLHEADING
  48127. ></ENTRY
  48128. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Cayenne Class Library</CELLHEADING
  48129. ></ENTRY
  48130. ></RBW-ROW
  48131. ></THEAD
  48132. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  48133. ></ENTRY
  48134. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer dictionary</CELLBODY
  48135. ></ENTRY
  48136. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrDict</CELLBODY
  48137. ></ENTRY
  48138. ></RBW-ROW
  48139. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  48140. ></ENTRY
  48141. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set</CELLBODY
  48142. ></ENTRY
  48143. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrSet</CELLBODY
  48144. ></ENTRY
  48145. ></RBW-ROW
  48146. ></TBODY
  48147. ></TGROUP
  48148. ></RBW-TABLE
  48149. ></LABEL
  48150. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48151. >Updating an association</L.LABEL
  48152. ><B.BODY>When a new object B is added, and the current qualifier already has an object B attached to it, this association should be removed first. The pointer to the A object must also be removed from object B’s pointer set.</B.BODY
  48153. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48154. >Example</SL.SUBLABEL
  48155. ><B.BODY>The following picture shows a situation where an object A (Ax) is associated with two B objects:</B.BODY
  48156. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48157. ></RBW-AUTOGEN
  48158. ></RBW-MARKER
  48159. ><RBW-PARABODY>with By through <CX5FX5FEMPHASIS>key k1</CX5FX5FEMPHASIS
  48160. ></RBW-PARABODY
  48161. ></LB.LIST.BULLET
  48162. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48163. ></RBW-AUTOGEN
  48164. ></RBW-MARKER
  48165. ><RBW-PARABODY>with Bz through <CX5FX5FEMPHASIS>key k2</CX5FX5FEMPHASIS
  48166. ></RBW-PARABODY
  48167. ></LB.LIST.BULLET
  48168. ><B.BODY>The other A object (Ay) is currently associated with one B object:</B.BODY
  48169. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48170. ></RBW-AUTOGEN
  48171. ></RBW-MARKER
  48172. ><RBW-PARABODY>with Bz through <CX5FX5FEMPHASIS>key k3</CX5FX5FEMPHASIS
  48173. >.</RBW-PARABODY
  48174. ></LB.LIST.BULLET
  48175. ><B.BODY>The arrows represent pointers.</B.BODY
  48176. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00488.tif" origseq="122" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48177. ></FA.FIGURE.ANCHOR
  48178. ><B.BODY>Suppose you now want to associate object By with object Ax using <CX5FX5FEMPHASIS>key2</CX5FX5FEMPHASIS
  48179. >. The following tasks then need to be carried out in the following order:</B.BODY
  48180. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  48181. ></RBW-AUTOGEN
  48182. ></RBW-MARKER
  48183. ><RBW-PARABODY>Remove the Bz pointer to Ax (<CX5FX5FEMPHASIS>key k2</CX5FX5FEMPHASIS
  48184. >)</RBW-PARABODY
  48185. ></LN.LIST.NUM
  48186. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  48187. ></RBW-AUTOGEN
  48188. ></RBW-MARKER
  48189. ><RBW-PARABODY>Redirect the Ax pointer from Bz to By (<CX5FX5FEMPHASIS>key k2</CX5FX5FEMPHASIS
  48190. >)</RBW-PARABODY
  48191. ></LN.LIST.NUM
  48192. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  48193. ></RBW-AUTOGEN
  48194. ></RBW-MARKER
  48195. ><RBW-PARABODY>Add to By a pointer to Ax (<CX5FX5FEMPHASIS>key k2</CX5FX5FEMPHASIS
  48196. >)</RBW-PARABODY
  48197. ></LN.LIST.NUM
  48198. ><B.BODY>These steps are visualized in the following picture.</B.BODY
  48199. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00489.tif" origseq="133" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48200. ></FA.FIGURE.ANCHOR
  48201. ><B.BODY>The result of this update action is shown in the following picture.</B.BODY
  48202. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00490.tif" origseq="140" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48203. ></FA.FIGURE.ANCHOR
  48204. ><B.BODY>The C++ code generator generates methods that implement these update actions.</B.BODY
  48205. ><B.BODY></B.BODY
  48206. ></LABEL
  48207. ></SUBSECTION
  48208. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37998"></RBW-ANCHOR
  48209. >Mapping a Many &truehy; Mandatory Qualified Association</SS.SUBSEC.HEAD
  48210. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48211. >Introduction</L.LABEL
  48212. ><B.BODY>This is an example of a many &truehy; mandatory association.</B.BODY
  48213. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00491.unk" origfile="pics/qassmy-md.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48214. ></FA.FIGURE.ANCHOR
  48215. ></LABEL
  48216. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48217. >Updating an association</L.LABEL
  48218. ><B.BODY>The update consequences for many &truehy; mandatory associations are similar to those for many &truehy; optional associations (see <RBW-XREF REFID="40669" TYPE="XREF-TEXTCOPY">Mapping a Many &truehy; Optional Qualified Association</RBW-XREF
  48219. >).</B.BODY
  48220. ><B.BODY>The additional restriction for many &truehy; mandatory associations is that a pointer to a B object can never be zero.</B.BODY
  48221. ></LABEL
  48222. ></SUBSECTION
  48223. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33442"></RBW-ANCHOR
  48224. >Mapping a Many &truehy; Many Qualified Association</SS.SUBSEC.HEAD
  48225. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48226. >Introduction</L.LABEL
  48227. ><B.BODY>This is an example of a many &truehy; many association.</B.BODY
  48228. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00492.unk" origfile="pics/qassmy-my.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48229. ></FA.FIGURE.ANCHOR
  48230. ><B.BODY>In a many &truehy; many association, objects at the qualifier end (A) have a dictionary of pointers to objects at the other end (B). Objects at the other end (B) have a set of pointers to A objects.</B.BODY
  48231. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="63p"><COLSPEC COLNAME="2" COLWIDTH="192p"><COLSPEC COLNAME="3" COLWIDTH="193p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  48232. ></ENTRY
  48233. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Attribute Type</CELLHEADING
  48234. ></ENTRY
  48235. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Cayenne Class Library</CELLHEADING
  48236. ></ENTRY
  48237. ></RBW-ROW
  48238. ></THEAD
  48239. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  48240. ></ENTRY
  48241. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set dictionary</CELLBODY
  48242. ></ENTRY
  48243. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PSetDict</CELLBODY
  48244. ></ENTRY
  48245. ></RBW-ROW
  48246. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  48247. ></ENTRY
  48248. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set</CELLBODY
  48249. ></ENTRY
  48250. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PtrSet</CELLBODY
  48251. ></ENTRY
  48252. ></RBW-ROW
  48253. ></TBODY
  48254. ></TGROUP
  48255. ></RBW-TABLE
  48256. ></LABEL
  48257. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48258. >Updating an association</L.LABEL
  48259. ><B.BODY>When a new object B is added, no old associations have to be removed. Both sides of the association should always be updated.</B.BODY
  48260. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48261. >Example</SL.SUBLABEL
  48262. ><B.BODY>The following picture shows a situation with three objects A, and three objects B, which have multiple associations with one another.</B.BODY
  48263. ><B.BODY>The arrows represent pointers.</B.BODY
  48264. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00493.tif" origseq="125" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48265. ></FA.FIGURE.ANCHOR
  48266. ><B.BODY>Suppose you now want to associate object Bx with object Ay using <CX5FX5FEMPHASIS>key k3</CX5FX5FEMPHASIS
  48267. >. The following tasks then need to be carried out in the following order:</B.BODY
  48268. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  48269. ></RBW-AUTOGEN
  48270. ></RBW-MARKER
  48271. ><RBW-PARABODY>Add to Bx’s pointer set a pointer to Ay (k3)</RBW-PARABODY
  48272. ></LN.LIST.NUM
  48273. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  48274. ></RBW-AUTOGEN
  48275. ></RBW-MARKER
  48276. ><RBW-PARABODY>Add to Ay’s pointer set a pointer to Bx (k3)</RBW-PARABODY
  48277. ></LN.LIST.NUM
  48278. ><B.BODY>These steps are visualized in the following picture.</B.BODY
  48279. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00494.tif" origseq="82" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48280. ></FA.FIGURE.ANCHOR
  48281. ><B.BODY>The result of this update action is shown in the following picture.</B.BODY
  48282. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00495.tif" origseq="69" origtype="I" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48283. ></FA.FIGURE.ANCHOR
  48284. ><B.BODY>The C++ code generator generates methods that implement these update actions.</B.BODY
  48285. ></LABEL
  48286. ></SUBSECTION
  48287. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="41254"></RBW-ANCHOR
  48288. >Mapping Ordered Qualified Associations</SS.SUBSEC.HEAD
  48289. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48290. >Prerequisite</L.LABEL
  48291. ><B.BODY>This section assumes that you are familiar with the following sections:</B.BODY
  48292. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48293. ></RBW-AUTOGEN
  48294. ></RBW-MARKER
  48295. ><RBW-PARABODY><RBW-XREF REFID="26001" TYPE="XREF-TEXTCOPY">Mapping an Optional &truehy; Many Qualified Association</RBW-XREF
  48296. ></RBW-PARABODY
  48297. ></LB.LIST.BULLET
  48298. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48299. ></RBW-AUTOGEN
  48300. ></RBW-MARKER
  48301. ><RBW-PARABODY><RBW-XREF REFID="33442" TYPE="XREF-TEXTCOPY">Mapping a Many &truehy; Many Qualified Association</RBW-XREF
  48302. ></RBW-PARABODY
  48303. ></LB.LIST.BULLET
  48304. ></LABEL
  48305. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48306. >Ordered association</L.LABEL
  48307. ><B.BODY>Here is an example of an ordered qualified association. </B.BODY
  48308. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00496.unk" origfile="pics/qassord.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48309. ></FA.FIGURE.ANCHOR
  48310. ><B.BODY>Use an ordered qualified association if the order of the objects in the pointer set matters.</B.BODY
  48311. ></LABEL
  48312. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48313. >Ordered pointer dictionary</L.LABEL
  48314. ><B.BODY><RBW-IDXTERM TERM1="Queue class" TERM2="and ordered association"></RBW-IDXTERM
  48315. >The mapping of an ordered qualified association is similar to that of a qualified association with an unordered multiplicity of many; however, the implementation strategy that is used is slightly different.</B.BODY
  48316. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48317. >Cayenne class library</SL.SUBLABEL
  48318. ><B.BODY>If you are using the Cayenne class library, the class OPtrDict implements ordered qualified associations, whereas PtrDict implements unordered associations with a multiplicity of many at the other end. </B.BODY
  48319. ></LABEL
  48320. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48321. >Example code</L.LABEL
  48322. ><B.BODY>Following is an excerpt from the code generated for the Customer class shown above. The data type of the qualifier BookID is IntHash, a class from the Cayenne class library.</B.BODY
  48323. ><B.BODY><CX5FX5FFILE.NAME>Customer.h</CX5FX5FFILE.NAME
  48324. > (generated file):</B.BODY
  48325. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  48326. ><EWM.EXAMPLEW.MONO>// File          : Customer.h</EWM.EXAMPLEW.MONO
  48327. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  48328. ><EWM.EXAMPLEW.MONO>#ifndef CUSTOMER_H</EWM.EXAMPLEW.MONO
  48329. ><EWM.EXAMPLEW.MONO>#define CUSTOMER_H 1</EWM.EXAMPLEW.MONO
  48330. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  48331. ><EWM.EXAMPLEW.MONO>#include <OPSetDict.hxx></EWM.EXAMPLEW.MONO
  48332. ><EWM.EXAMPLEW.MONO>#include <assert.h></EWM.EXAMPLEW.MONO
  48333. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  48334. ><EWM.EXAMPLEW.MONO>#ifndef BOOK_H</EWM.EXAMPLEW.MONO
  48335. ><EWM.EXAMPLEW.MONO>#include "Book.h"</EWM.EXAMPLEW.MONO
  48336. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  48337. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  48338. ><EWM.EXAMPLEW.MONO>#ifndef INTHASH_H</EWM.EXAMPLEW.MONO
  48339. ><EWM.EXAMPLEW.MONO>#include "IntHash.h"</EWM.EXAMPLEW.MONO
  48340. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  48341. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  48342. ><EWM.EXAMPLEW.MONO>class Customer {</EWM.EXAMPLEW.MONO
  48343. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  48344. ><EWM.EXAMPLEW.MONO>public:</EWM.EXAMPLEW.MONO
  48345. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  48346. ><EWM.EXAMPLEW.MONO>    // Association accessor methods</EWM.EXAMPLEW.MONO
  48347. ><EWM.EXAMPLEW.MONO>    const OPtrSet< Book >& <CX5FX5FBULLET.EMPHASIS>getBookSet</CX5FX5FBULLET.EMPHASIS
  48348. >(IntHash BookID) const;</EWM.EXAMPLEW.MONO
  48349. ><EWM.EXAMPLEW.MONO>    void <CX5FX5FBULLET.EMPHASIS>addBook</CX5FX5FBULLET.EMPHASIS
  48350. >(IntHash BookID, Book* newBook);</EWM.EXAMPLEW.MONO
  48351. ><EWM.EXAMPLEW.MONO>    void <CX5FX5FBULLET.EMPHASIS>removeBook</CX5FX5FBULLET.EMPHASIS
  48352. >(IntHash BookID, Book* oldBook);</EWM.EXAMPLEW.MONO
  48353. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  48354. ><EWM.EXAMPLEW.MONO>private:</EWM.EXAMPLEW.MONO
  48355. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  48356. ><EWM.EXAMPLEW.MONO>    // Association attribute storage</EWM.EXAMPLEW.MONO
  48357. ><EWM.EXAMPLEW.MONO>    OPSetDict< IntHash, Book > <CX5FX5FBULLET.EMPHASIS>bookDictSet</CX5FX5FBULLET.EMPHASIS
  48358. >;</EWM.EXAMPLEW.MONO
  48359. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  48360. ><EWM.EXAMPLEW.MONO>};</EWM.EXAMPLEW.MONO
  48361. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  48362. ></LABEL
  48363. ></SUBSECTION
  48364. ></SECTION
  48365. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29909"></RBW-ANCHOR
  48366. >Handling External Classes</S.SECTION.HEAD
  48367. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48368. >Introduction</L.LABEL
  48369. ><B.BODY>An external class is a class that is defined in another system in the same phase.</B.BODY
  48370. ></LABEL
  48371. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48372. >Class as type</L.LABEL
  48373. ><B.BODY>You can use a standard type or a class name (class type) to indicate the type of an attribute, parameter or method. This class can be defined in the same system or in another system in the same phase. If it is defined in another system, it is referred to as an <CX5FX5FEMPHASIS>external class</CX5FX5FEMPHASIS
  48374. >.</B.BODY
  48375. ><B.BODY>The header file that belongs to the external class is included in the file that is generated for the class in which the external class type is used</B.BODY
  48376. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48377. >Example class</SL.SUBLABEL
  48378. ><B.BODY>The class Date is defined in another system in the same phase.</B.BODY
  48379. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00497.unk" origfile="pics/cltype.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48380. ></FA.FIGURE.ANCHOR
  48381. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48382. >Example code (generated)</SL.SUBLABEL
  48383. ><B.BODY>The header file <CX5FX5FFILE.NAME>Date.h</CX5FX5FFILE.NAME
  48384. > is added to the include section of the generated file <CX5FX5FFILE.NAME>Person.h</CX5FX5FFILE.NAME
  48385. >:</B.BODY
  48386. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48387. ><EM.EXAMPLE.MONO>// File          : Person.h</EM.EXAMPLE.MONO
  48388. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48389. ><EM.EXAMPLE.MONO>#ifndef PERSON_H</EM.EXAMPLE.MONO
  48390. ><EM.EXAMPLE.MONO>#define PERSON_H 1</EM.EXAMPLE.MONO
  48391. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48392. ><EM.EXAMPLE.MONO>#ifndef DATE_H</EM.EXAMPLE.MONO
  48393. ><EM.EXAMPLE.MONO>#include "<CX5FX5FBULLET.EMPHASIS>Date.h</CX5FX5FBULLET.EMPHASIS
  48394. >"</EM.EXAMPLE.MONO
  48395. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  48396. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48397. ></LABEL
  48398. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48399. >External classes and the makefile</L.LABEL
  48400. ><B.BODY>The variable <CX5FX5FINPUT>INCS</CX5FX5FINPUT
  48401. > in the makefile indicates the (relative) directory paths searched for include files during compilation and linking. By default, these are the user environment directories of all systems within the same phase.</B.BODY
  48402. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  48403. ></RBW-AUTOGEN
  48404. >You can change the default INCS variable specification by customizing the makefile template file <CX5FX5FFILE.NAME>maketmpl.maketmpl</CX5FX5FFILE.NAME
  48405. >.</T.TIP
  48406. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  48407. ></RBW-AUTOGEN
  48408. >If a header file cannot be found, an error message is issued and no code will be generated.</W.WARNING
  48409. ></LABEL
  48410. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48411. >External classes and the Cayenne class library</L.LABEL
  48412. ><B.BODY>If you are using the Cayenne class library, the <CX5FX5FFILE.NAME>include</CX5FX5FFILE.NAME
  48413. > directory in your user environment (where the include files were copied to during the configuration of your C++ environment) is part of this set of directories as well.</B.BODY
  48414. ><B.BODY>The directory in which the header files of the Cayenne class library are stored (the <CX5FX5FFILE.NAME>include</CX5FX5FFILE.NAME
  48415. > directory in your user environment, that is) is already part of the default <CX5FX5FINPUT>INCS</CX5FX5FINPUT
  48416. > variable specification in the makefile. Therefore, it will be sufficient to just create a class by the same name (e.g. String) in another system. Do not add any attributes or methods to this class. </B.BODY
  48417. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48418. >Example Class</SL.SUBLABEL
  48419. ><B.BODY>The example class Person contains an attribute <CX5FX5FEMPHASIS>name</CX5FX5FEMPHASIS
  48420. >, whose data type is String. The class String is defined in another system. The header file <CX5FX5FFILE.NAME>String.h</CX5FX5FFILE.NAME
  48421. > will be included in the generated file <CX5FX5FFILE.NAME>Person.h</CX5FX5FFILE.NAME
  48422. >. As the <CX5FX5FFILE.NAME>include</CX5FX5FFILE.NAME
  48423. > directory is part of the <CX5FX5FINPUT>INCS</CX5FX5FINPUT
  48424. > variable specification in the makefile, the linker will be able to locate this file.</B.BODY
  48425. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00498.unk" origfile="pics/extclas.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48426. ></FA.FIGURE.ANCHOR
  48427. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48428. >Example code (generated)</SL.SUBLABEL
  48429. ><B.BODY>The header file <CX5FX5FFILE.NAME>String.h</CX5FX5FFILE.NAME
  48430. > is added to the include section of the generated file <CX5FX5FFILE.NAME>Person.h</CX5FX5FFILE.NAME
  48431. >:</B.BODY
  48432. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48433. ><EM.EXAMPLE.MONO>// File          : Person.h</EM.EXAMPLE.MONO
  48434. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48435. ><EM.EXAMPLE.MONO>#ifndef PERSON_H</EM.EXAMPLE.MONO
  48436. ><EM.EXAMPLE.MONO>#define PERSON_H 1</EM.EXAMPLE.MONO
  48437. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48438. ><EM.EXAMPLE.MONO>#ifndef STRING_H</EM.EXAMPLE.MONO
  48439. ><EM.EXAMPLE.MONO>#include "<CX5FX5FBULLET.EMPHASIS>String.h</CX5FX5FBULLET.EMPHASIS
  48440. >"</EM.EXAMPLE.MONO
  48441. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  48442. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48443. ></LABEL
  48444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48445. >External classes and scope</L.LABEL
  48446. ><B.BODY>The initial scope of a class is Phase, so if an external class is used to indicate the type of an attribute, for example, the class is known to that system. However, if the scope of the external class was pushed down to system level, its definition would be obscured, and the other system would not be able to find the external class.</B.BODY
  48447. ></LABEL
  48448. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39660"></RBW-ANCHOR
  48449. >Specifying External Header Files</SS.SUBSEC.HEAD
  48450. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48451. >External Header Files</L.LABEL
  48452. ><B.BODY>You can use external classes to have a particular header file (or multiple header files) included in a generated file. You specify external header files through the class property External Include List.</B.BODY
  48453. ></LABEL
  48454. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48455. >Example Class</L.LABEL
  48456. ><B.BODY>This example class contains a data attribute with the type Date. This is the name of a class that is defined in another system. The class Date does not have any attributes or methods but it does have the header file <CX5FX5FFILE.NAME>datefmt.h</CX5FX5FFILE.NAME
  48457. > specified as External Include File. </B.BODY
  48458. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  48459. ></RBW-AUTOGEN
  48460. >Make sure that the directories in which the specified include files are stored are part of the <CX5FX5FINPUT>INCS</CX5FX5FINPUT
  48461. > variable specification in the makefile.</W.WARNING
  48462. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00499.unk" origfile="pics/cltype.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48463. ></FA.FIGURE.ANCHOR
  48464. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00500.unk" origfile="pics/extcls2.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48465. ></FA.FIGURE.ANCHOR
  48466. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00501.unk" origfile="pics/extincls.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48467. ></FA.FIGURE.ANCHOR
  48468. ></LABEL
  48469. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48470. >Example Code</L.LABEL
  48471. ><B.BODY>Instead of the header file <CX5FX5FFILE.NAME>Date.h</CX5FX5FFILE.NAME
  48472. >, the file <CX5FX5FFILE.NAME>datefmt.h</CX5FX5FFILE.NAME
  48473. > is now included in the header file generated for the class Person:</B.BODY
  48474. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48475. ><EM.EXAMPLE.MONO>// File          : Person.h</EM.EXAMPLE.MONO
  48476. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48477. ><EM.EXAMPLE.MONO>#ifndef PERSON_H</EM.EXAMPLE.MONO
  48478. ><EM.EXAMPLE.MONO>#define PERSON_H 1</EM.EXAMPLE.MONO
  48479. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48480. ><EM.EXAMPLE.MONO>#include <<CX5FX5FFILE.NAME>datefmt.h</CX5FX5FFILE.NAME
  48481. >></EM.EXAMPLE.MONO
  48482. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48483. ></LABEL
  48484. ></SUBSECTION
  48485. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20009"></RBW-ANCHOR
  48486. >Specifying an External Source</SS.SUBSEC.HEAD
  48487. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48488. >External Class Source</L.LABEL
  48489. ><B.BODY>It can be useful to model classes for which source files and header files are already available; for example, when you are using an external GUI builder.</B.BODY
  48490. ></LABEL
  48491. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48492. >External header file</L.LABEL
  48493. ><B.BODY>With the property External Class Source, you can specify the name of the header file whose contents must be used instead of the header file that would normally have been generated for the class.</B.BODY
  48494. ><B.BODY>During code generation, the contents of the specified header file are copied over to the file <RBWAUTO-0017>className</RBWAUTO-0017
  48495. >.h.</B.BODY
  48496. ></LABEL
  48497. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48498. >External header and source file</L.LABEL
  48499. ><B.BODY>You can also specify the name of a header file <CX5FX5FEMPHASIS>and</CX5FX5FEMPHASIS
  48500. > a source file as value of the External Class Source property. The contents of the first file is copied over to the file <RBWAUTO-0017>className</RBWAUTO-0017
  48501. >.h, that of the second to the file <RBWAUTO-0017>className</RBWAUTO-0017
  48502. >.cpp. Use commas to separate file names.</B.BODY
  48503. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  48504. ></RBW-AUTOGEN
  48505. >If you specify a header file after a C++ source file, the contents of the header file will be copied into <RBWAUTO-0017>className</RBWAUTO-0017
  48506. >.cpp and the contents of the C++ file into <RBWAUTO-0017>className</RBWAUTO-0017
  48507. >.h.</W.WARNING
  48508. ></LABEL
  48509. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48510. >Example</L.LABEL
  48511. ><B.BODY>The following figure shows an example of the property External Class Source without specified path names:</B.BODY
  48512. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00502.unk" origfile="pics/prpextcl.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48513. ></FA.FIGURE.ANCHOR
  48514. ><B.BODY>During code generation, no code is generated for the class Person, but the contents of the files <CX5FX5FFILE.NAME>Constr.h</CX5FX5FFILE.NAME
  48515. > and <CX5FX5FFILE.NAME>Constr.cpp</CX5FX5FFILE.NAME
  48516. > are copied over to the files <CX5FX5FFILE.NAME>Person.h</CX5FX5FFILE.NAME
  48517. > and <CX5FX5FFILE.NAME>Person.cpp</CX5FX5FFILE.NAME
  48518. > respectively.</B.BODY
  48519. ></LABEL
  48520. ></SUBSECTION
  48521. ></SECTION
  48522. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40407"></RBW-ANCHOR
  48523. >Handling Special ObjectTeam Classes</S.SECTION.HEAD
  48524. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48525. >Introduction</L.LABEL
  48526. ><B.BODY>Special ObjectTeam classes can be used to force the generation of the following C++ constructions:</B.BODY
  48527. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="208p"><COLSPEC COLNAME="2" COLWIDTH="240p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C++ Construction</CELLHEADING
  48528. ></ENTRY
  48529. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam class</CELLHEADING
  48530. ></ENTRY
  48531. ></RBW-ROW
  48532. ></THEAD
  48533. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>typedef</CELLBODY
  48534. ></ENTRY
  48535. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24618" TYPE="XREF-TEXTCOPY">Mapping Typedef Classes</RBW-XREF
  48536. ></CELLBODY
  48537. ></ENTRY
  48538. ></RBW-ROW
  48539. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  48540. ></ENTRY
  48541. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12612" TYPE="XREF-TEXTCOPY">Mapping Generic Typedef Classes</RBW-XREF
  48542. ></CELLBODY
  48543. ></ENTRY
  48544. ></RBW-ROW
  48545. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>enum</CELLBODY
  48546. ></ENTRY
  48547. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13941" TYPE="XREF-TEXTCOPY">Mapping Enum Classes</RBW-XREF
  48548. ></CELLBODY
  48549. ></ENTRY
  48550. ></RBW-ROW
  48551. ></TBODY
  48552. ></TGROUP
  48553. ></RBW-TABLE
  48554. ></LABEL
  48555. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24618"></RBW-ANCHOR
  48556. >Mapping Typedef Classes</SS.SUBSEC.HEAD
  48557. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48558. >Introduction</L.LABEL
  48559. ><B.BODY>The <CX5FX5FINPUT>typedef</CX5FX5FINPUT
  48560. > mechanism in C++ allows you to introduce synonyms for existing predefined, derived, and user&truehy;defined data types. The syntax for a typedef is:</B.BODY
  48561. ><EM.EXAMPLE.MONO><CX5FX5FINPUT>typedef</CX5FX5FINPUT
  48562. > <CX5FX5FVARIABLE>dataType</CX5FX5FVARIABLE
  48563. > <CX5FX5FVARIABLE>identifier</CX5FX5FVARIABLE
  48564. ></EM.EXAMPLE.MONO
  48565. ><B.BODY>For example:</B.BODY
  48566. ><EM.EXAMPLE.MONO>typedef double wages</EM.EXAMPLE.MONO
  48567. ></LABEL
  48568. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48569. >Typedef Class</L.LABEL
  48570. ><B.BODY>In ObjectTeam you use a typedef class to model a C++ typedef construction. This class:</B.BODY
  48571. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48572. ></RBW-AUTOGEN
  48573. ></RBW-MARKER
  48574. ><RBW-PARABODY>has only one attribute</RBW-PARABODY
  48575. ></LB.LIST.BULLET
  48576. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48577. ></RBW-AUTOGEN
  48578. ></RBW-MARKER
  48579. ><RBW-PARABODY>has no methods</RBW-PARABODY
  48580. ></LB.LIST.BULLET
  48581. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48582. ></RBW-AUTOGEN
  48583. ></RBW-MARKER
  48584. ><RBW-PARABODY>is not a subclass</RBW-PARABODY
  48585. ></LB.LIST.BULLET
  48586. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48587. ></RBW-AUTOGEN
  48588. ></RBW-MARKER
  48589. ><RBW-PARABODY>has no binary associations</RBW-PARABODY
  48590. ></LB.LIST.BULLET
  48591. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48592. ></RBW-AUTOGEN
  48593. ></RBW-MARKER
  48594. ><RBW-PARABODY>has no associations with a link attribute or an association as class (see <RBW-XREF REFID="38957" TYPE="XREF-TEXTCOPY">Mapping Association Classes</RBW-XREF
  48595. >)</RBW-PARABODY
  48596. ></LB.LIST.BULLET
  48597. ><B.BODY>The typedef class name is generated into the typedef <CX5FX5FVARIABLE>identifier</CX5FX5FVARIABLE
  48598. >, the attribute type into the typedef <CX5FX5FVARIABLE>dataType</CX5FX5FVARIABLE
  48599. >. The attribute name is not important. </B.BODY
  48600. ><B.BODY>The attribute type can be a:</B.BODY
  48601. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48602. ></RBW-AUTOGEN
  48603. ></RBW-MARKER
  48604. ><RBW-PARABODY>standard type </RBW-PARABODY
  48605. ></LB.LIST.BULLET
  48606. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48607. ></RBW-AUTOGEN
  48608. ></RBW-MARKER
  48609. ><RBW-PARABODY>class type</RBW-PARABODY
  48610. ></LB.LIST.BULLET
  48611. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  48612. ></RBW-AUTOGEN
  48613. >No source file is generated for typedef classes.</N.NOTE
  48614. ></LABEL
  48615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48616. ><CX5FX5FBULLET.EMPHASIS>Example</CX5FX5FBULLET.EMPHASIS
  48617. ></L.LABEL
  48618. ><FA.FIGURE.ANCHOR>Example class:</FA.FIGURE.ANCHOR
  48619. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00503.unk" origfile="pics/typedef.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48620. ></FA.FIGURE.ANCHOR
  48621. ><B.BODY><CX5FX5FFILE.NAME>MyTypeDef.h</CX5FX5FFILE.NAME
  48622. > (generated file)</B.BODY
  48623. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48624. ><EM.EXAMPLE.MONO>#ifndef MYTYPEDEF_HXX</EM.EXAMPLE.MONO
  48625. ><EM.EXAMPLE.MONO>#define MYTYPEDEF_HXX 1</EM.EXAMPLE.MONO
  48626. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48627. ><EM.EXAMPLE.MONO>#ifndef MYCLASS_HXX</EM.EXAMPLE.MONO
  48628. ><EM.EXAMPLE.MONO>#include “MyClass.hxx”</EM.EXAMPLE.MONO
  48629. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  48630. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48631. ><EM.EXAMPLE.MONO>// Start user added include file section</EM.EXAMPLE.MONO
  48632. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  48633. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48634. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48635. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>typedef MyClass MyTypeDef</CX5FX5FBULLET.EMPHASIS
  48636. >;</EM.EXAMPLE.MONO
  48637. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48638. ><EM.EXAMPLE.MONO>#endif // MYTYPEDEF_HXX</EM.EXAMPLE.MONO
  48639. ></LABEL
  48640. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48641. >Typedefs and subclasses</L.LABEL
  48642. ><B.BODY>Classes derived from a typedef class are regarded as normal subclasses by the C++ code generator. </B.BODY
  48643. ><B.BODY>Example:</B.BODY
  48644. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00504.unk" origfile="pics/typedef2.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48645. ></FA.FIGURE.ANCHOR
  48646. ><B.BODY><CX5FX5FFILE.NAME>MySubClass.h</CX5FX5FFILE.NAME
  48647. > (generated file):</B.BODY
  48648. ><EM.EXAMPLE.MONO>..</EM.EXAMPLE.MONO
  48649. ><EM.EXAMPLE.MONO>#ifndef MYSUBCLASS_HXX</EM.EXAMPLE.MONO
  48650. ><EM.EXAMPLE.MONO>#define MYSUBCLASS_HXX 1</EM.EXAMPLE.MONO
  48651. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48652. ><EM.EXAMPLE.MONO>// Start user added include file section</EM.EXAMPLE.MONO
  48653. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  48654. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48655. ><EM.EXAMPLE.MONO>class MySubClass {</EM.EXAMPLE.MONO
  48656. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48657. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  48658. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48659. ><EM.EXAMPLE.MONO>#endif // MYSUBCLASS_HXX</EM.EXAMPLE.MONO
  48660. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48661. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48662. ></LABEL
  48663. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48664. >How to avoid generating a typedef class</L.LABEL
  48665. ><B.BODY>For every class that has only one data attribute and no methods, the C++ code generator generates a typedef construction.</B.BODY
  48666. ><B.BODY>However, you may have such classes in your model for which you do not want to generate a typedef. The way of getting around this is to add the following method to the class:</B.BODY
  48667. ><EM.EXAMPLE.MONO>$create</EM.EXAMPLE.MONO
  48668. ><B.BODY>This method signals the C++ generator to handle the class as a regular class.</B.BODY
  48669. ></LABEL
  48670. ></SUBSECTION
  48671. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12612"></RBW-ANCHOR
  48672. >Mapping Generic Typedef Classes</SS.SUBSEC.HEAD
  48673. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48674. >Introduction</L.LABEL
  48675. ><B.BODY>Generic typedef constructions are typedefs through which you can define a synonym for the following C++ list types:</B.BODY
  48676. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48677. ></RBW-AUTOGEN
  48678. ></RBW-MARKER
  48679. ><RBW-PARABODY>Pointer</RBW-PARABODY
  48680. ></LB.LIST.BULLET
  48681. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48682. ></RBW-AUTOGEN
  48683. ></RBW-MARKER
  48684. ><RBW-PARABODY>Pointer set</RBW-PARABODY
  48685. ></LB.LIST.BULLET
  48686. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48687. ></RBW-AUTOGEN
  48688. ></RBW-MARKER
  48689. ><RBW-PARABODY>Dictionary</RBW-PARABODY
  48690. ></LB.LIST.BULLET
  48691. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48692. ></RBW-AUTOGEN
  48693. ></RBW-MARKER
  48694. ><RBW-PARABODY>Pointer set dictionary</RBW-PARABODY
  48695. ></LB.LIST.BULLET
  48696. ><B.BODY>In ObjectTeam, you model a generic typedef by associating a typedef class with the class you want to specify the typedef for. Which C++ construction is used in the typedef is determined by the following two factors:</B.BODY
  48697. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48698. ></RBW-AUTOGEN
  48699. ></RBW-MARKER
  48700. ><RBW-PARABODY>the multiplicity at the other end of the typedef class</RBW-PARABODY
  48701. ></LB.LIST.BULLET
  48702. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48703. ></RBW-AUTOGEN
  48704. ></RBW-MARKER
  48705. ><RBW-PARABODY>the type of association (normal or qualified):</RBW-PARABODY
  48706. ></LB.LIST.BULLET
  48707. ></LABEL
  48708. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48709. >How to specify a generic typedef class</L.LABEL
  48710. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  48711. ></RBW-AUTOGEN
  48712. ></RBW-MARKER
  48713. ><RBW-PARABODY>To specify a generic typedef class:</RBW-PARABODY
  48714. ></P.PROCEDURE
  48715. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  48716. ></RBW-AUTOGEN
  48717. ></RBW-MARKER
  48718. ><RBW-PARABODY>Draw a typedef class and give it a name.</RBW-PARABODY
  48719. ></LN.LIST.NUM
  48720. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  48721. ></RBW-AUTOGEN
  48722. ></RBW-MARKER
  48723. ><RBW-PARABODY>Make sure the class does not have any of the following:</RBW-PARABODY
  48724. ></LN.LIST.NUM
  48725. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  48726. ></RBW-MARKER
  48727. ><RBW-PARABODY>data attributes</RBW-PARABODY
  48728. ></LB2.LIST.BULLET.2
  48729. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  48730. ></RBW-MARKER
  48731. ><RBW-PARABODY>methods</RBW-PARABODY
  48732. ></LB2.LIST.BULLET.2
  48733. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  48734. ></RBW-MARKER
  48735. ><RBW-PARABODY>superclasses</RBW-PARABODY
  48736. ></LB2.LIST.BULLET.2
  48737. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  48738. ></RBW-AUTOGEN
  48739. ></RBW-MARKER
  48740. ><RBW-PARABODY>Draw an association between the typedef class you have just drawn (class A) and the class for which you want to generate the generic typedef (class B).</RBW-PARABODY
  48741. ></LN.LIST.NUM
  48742. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  48743. ></RBW-AUTOGEN
  48744. >The multiplicity at the side of class B determines which generic typedef is generated.</N2.NOTE.2
  48745. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  48746. ></RBW-AUTOGEN
  48747. ></RBW-MARKER
  48748. ><RBW-PARABODY>Supply a role at the side of class B.</RBW-PARABODY
  48749. ></LN.LIST.NUM
  48750. ><LT.LIST.TEXT>The name of the role is not important, but must be provided.</LT.LIST.TEXT
  48751. ></LABEL
  48752. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48753. >Association (optional &truehy; one)</L.LABEL
  48754. ><B.BODY><RBW-IDXTERM TERM1="generic typedef class" TERM2="example of generated C++ code"></RBW-IDXTERM
  48755. ><RBW-IDXTERM TERM1="C++" TERM2="code from generic typedef class"></RBW-IDXTERM
  48756. >The following CD shows a generic typedef class and the typedef generated for the typedef class myTypeDef.</B.BODY
  48757. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00505.unk" origfile="pics/gtpdef1.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48758. ></FA.FIGURE.ANCHOR
  48759. ><B.BODY><CX5FX5FFILE.NAME>myTypeDef.h</CX5FX5FFILE.NAME
  48760. > (generated file):</B.BODY
  48761. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48762. ><EM.EXAMPLE.MONO>typedef <CX5FX5FBULLET.EMPHASIS>Person* myTypeDef</CX5FX5FBULLET.EMPHASIS
  48763. >;</EM.EXAMPLE.MONO
  48764. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48765. ></LABEL
  48766. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48767. >Association (optional &truehy; many)</L.LABEL
  48768. ><B.BODY><RBW-IDXTERM TERM1="generic typedef class" TERM2="example of generated C++ code"></RBW-IDXTERM
  48769. ><RBW-IDXTERM TERM1="C++" TERM2="code from generic typedef class"></RBW-IDXTERM
  48770. >The following CD shows a generic typedef class and the typedef generated for the typedef class myTypeDef:</B.BODY
  48771. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00506.unk" origfile="pics/gtpdef2.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48772. ></FA.FIGURE.ANCHOR
  48773. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Generated Code</CX5FX5FBULLET.EMPHASIS
  48774. > (header file):</B.BODY
  48775. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48776. ><EM.EXAMPLE.MONO>#include <PtrSet.h></EM.EXAMPLE.MONO
  48777. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48778. ><EM.EXAMPLE.MONO>typedef <CX5FX5FBULLET.EMPHASIS>PtrSet< Person > myTypeDef</CX5FX5FBULLET.EMPHASIS
  48779. >;</EM.EXAMPLE.MONO
  48780. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48781. ></LABEL
  48782. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48783. >Qualified association (optional &truehy; one)</L.LABEL
  48784. ><B.BODY><RBW-IDXTERM TERM1="generic typedef class" TERM2="example of generated C++ code"></RBW-IDXTERM
  48785. ><RBW-IDXTERM TERM1="C++" TERM2="code from generic typedef class"></RBW-IDXTERM
  48786. >The following CD shows a generic typedef class and the typedef generated for the typedef class myTypeDef. </B.BODY
  48787. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  48788. ></RBW-AUTOGEN
  48789. >The data type of the qualifier is <CX5FX5FEMPHASIS>int</CX5FX5FEMPHASIS
  48790. >.</N.NOTE
  48791. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00507.unk" origfile="pics/gtpdef3.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48792. ></FA.FIGURE.ANCHOR
  48793. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Generated Code</CX5FX5FBULLET.EMPHASIS
  48794. > (header file):</B.BODY
  48795. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48796. ><EM.EXAMPLE.MONO>#include <PtrDict.h></EM.EXAMPLE.MONO
  48797. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48798. ><EM.EXAMPLE.MONO>typedef <CX5FX5FBULLET.EMPHASIS>PtrDict< int, Person > myTypeDef</CX5FX5FBULLET.EMPHASIS
  48799. >;</EM.EXAMPLE.MONO
  48800. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48801. ></LABEL
  48802. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48803. >Qualified association (optional &truehy; many)</L.LABEL
  48804. ><B.BODY><RBW-IDXTERM TERM1="generic typedef class" TERM2="example of generated C++ code"></RBW-IDXTERM
  48805. ><RBW-IDXTERM TERM1="C++" TERM2="code from generic typedef class"></RBW-IDXTERM
  48806. >The following CD shows a generic typedef class and the typedef generated for the typedef class myTypeDef. </B.BODY
  48807. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  48808. ></RBW-AUTOGEN
  48809. >The data type of the qualifier is <CX5FX5FEMPHASIS>int</CX5FX5FEMPHASIS
  48810. >.</N.NOTE
  48811. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00508.unk" origfile="pics/gtpdef4.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48812. ></FA.FIGURE.ANCHOR
  48813. ><B.BODY><CX5FX5FBULLET.EMPHASIS>myTypeDef.h </CX5FX5FBULLET.EMPHASIS
  48814. >(generated file):</B.BODY
  48815. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48816. ><EM.EXAMPLE.MONO>#include <PSetDict.hxx></EM.EXAMPLE.MONO
  48817. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48818. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>typedef PSetDict< int, Person > myTypeDef;</CX5FX5FBULLET.EMPHASIS
  48819. ></EM.EXAMPLE.MONO
  48820. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48821. ></LABEL
  48822. ></SUBSECTION
  48823. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13941"></RBW-ANCHOR
  48824. >Mapping Enum Classes</SS.SUBSEC.HEAD
  48825. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48826. >Introduction</L.LABEL
  48827. ><B.BODY>An enumeration (<CX5FX5FINPUT>enum</CX5FX5FINPUT
  48828. >) is a C++ type with named constants. The syntax for an enum is:</B.BODY
  48829. ><EM.EXAMPLE.MONO>enum <CX5FX5FVARIABLE>enumName</CX5FX5FVARIABLE
  48830. > {<CX5FX5FVARIABLE>enumList</CX5FX5FVARIABLE
  48831. >};</EM.EXAMPLE.MONO
  48832. ><B.BODY>where <CX5FX5FVARIABLE>enumList</CX5FX5FVARIABLE
  48833. > is a list of enumerators. Enumerators can have values.</B.BODY
  48834. ></LABEL
  48835. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48836. >Enum class</L.LABEL
  48837. ><B.BODY>In ObjectTeam you use an Enum class to model a C++ enumeration. This class:</B.BODY
  48838. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48839. ></RBW-AUTOGEN
  48840. ></RBW-MARKER
  48841. ><RBW-PARABODY>has only class attribute of type <CX5FX5FEMPHASIS>enum</CX5FX5FEMPHASIS
  48842. ></RBW-PARABODY
  48843. ></LB.LIST.BULLET
  48844. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48845. ></RBW-AUTOGEN
  48846. ></RBW-MARKER
  48847. ><RBW-PARABODY>has no methods</RBW-PARABODY
  48848. ></LB.LIST.BULLET
  48849. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48850. ></RBW-AUTOGEN
  48851. ></RBW-MARKER
  48852. ><RBW-PARABODY>is not a subclass</RBW-PARABODY
  48853. ></LB.LIST.BULLET
  48854. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48855. ></RBW-AUTOGEN
  48856. ></RBW-MARKER
  48857. ><RBW-PARABODY>has no associations</RBW-PARABODY
  48858. ></LB.LIST.BULLET
  48859. ><B.BODY>The class name is not important. </B.BODY
  48860. ><B.BODY>The attributes of an Enum class are generated into enumerators. Default values can be specified for these attributes, but are not required.</B.BODY
  48861. ></LABEL
  48862. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48863. ><CX5FX5FBULLET.EMPHASIS>Example</CX5FX5FBULLET.EMPHASIS
  48864. ></L.LABEL
  48865. ><FA.FIGURE.ANCHOR>In this example class, no values have been specified for the enumerators.</FA.FIGURE.ANCHOR
  48866. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00509.unk" origfile="pics/enum1.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48867. ></FA.FIGURE.ANCHOR
  48868. ><B.BODY><CX5FX5FFILE.NAME>myEnumClass.h</CX5FX5FFILE.NAME
  48869. > (generated file):</B.BODY
  48870. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48871. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>enum myEnumClass {</CX5FX5FBULLET.EMPHASIS
  48872. ></EM.EXAMPLE.MONO
  48873. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    a,</CX5FX5FBULLET.EMPHASIS
  48874. ></EM.EXAMPLE.MONO
  48875. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    b,</CX5FX5FBULLET.EMPHASIS
  48876. ></EM.EXAMPLE.MONO
  48877. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    c</CX5FX5FBULLET.EMPHASIS
  48878. ></EM.EXAMPLE.MONO
  48879. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>};</CX5FX5FBULLET.EMPHASIS
  48880. ></EM.EXAMPLE.MONO
  48881. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48882. ><FA.FIGURE.ANCHOR>In this example class, values have been specified for the enumerators.</FA.FIGURE.ANCHOR
  48883. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00510.unk" origfile="pics/enum.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48884. ></FA.FIGURE.ANCHOR
  48885. ><B.BODY><CX5FX5FFILE.NAME>myEnumClass.h</CX5FX5FFILE.NAME
  48886. > (generated file):</B.BODY
  48887. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48888. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>enum myEnumClass {</CX5FX5FBULLET.EMPHASIS
  48889. ></EM.EXAMPLE.MONO
  48890. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    a = 15,</CX5FX5FBULLET.EMPHASIS
  48891. ></EM.EXAMPLE.MONO
  48892. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    b = 20,</CX5FX5FBULLET.EMPHASIS
  48893. ></EM.EXAMPLE.MONO
  48894. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    c = 25</CX5FX5FBULLET.EMPHASIS
  48895. ></EM.EXAMPLE.MONO
  48896. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>};</CX5FX5FBULLET.EMPHASIS
  48897. ></EM.EXAMPLE.MONO
  48898. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  48899. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  48900. ></LABEL
  48901. ></SUBSECTION
  48902. ></SECTION
  48903. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="23714"></RBW-ANCHOR
  48904. >What is Not Supported by the C++ Code Generator</S.SECTION.HEAD
  48905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48906. >Introduction</L.LABEL
  48907. ><B.BODY>ObjectTeam allows you to draw certain constructions or to use certain diagram objects in a CD that are ignored by the C++ code generator, for example:</B.BODY
  48908. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48909. ></RBW-AUTOGEN
  48910. ></RBW-MARKER
  48911. ><RBW-PARABODY>Ternary associations</RBW-PARABODY
  48912. ></LB.LIST.BULLET
  48913. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48914. ></RBW-AUTOGEN
  48915. ></RBW-MARKER
  48916. ><RBW-PARABODY>Numerical constraints</RBW-PARABODY
  48917. ></LB.LIST.BULLET
  48918. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48919. ></RBW-AUTOGEN
  48920. ></RBW-MARKER
  48921. ><RBW-PARABODY>Subset constraints between associations</RBW-PARABODY
  48922. ></LB.LIST.BULLET
  48923. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  48924. ></RBW-AUTOGEN
  48925. ></RBW-MARKER
  48926. ><RBW-PARABODY>Propagations of operations</RBW-PARABODY
  48927. ></LB.LIST.BULLET
  48928. ><B.BODY>These constructions are further discussed in this section.</B.BODY
  48929. ></LABEL
  48930. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48931. >Ternary associations</L.LABEL
  48932. ><B.BODY>The C++ code generator generates code for all the individual classes in a ternary associations, but ignores the association itself.</B.BODY
  48933. ><B.BODY>Ternary associations can be drawn by combining the N&truehy;ary Association symbol with n&truehy;ary Association Connectors.</B.BODY
  48934. ><B.BODY>Example ternary association:</B.BODY
  48935. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00511.unk" origfile="pics/ternacc.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48936. ></FA.FIGURE.ANCHOR
  48937. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  48938. ></RBW-AUTOGEN
  48939. >A ternary association can often be represented differently, for instance by introducing a fourth class that manages the association’s constraints.</N.NOTE
  48940. ></LABEL
  48941. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48942. >Multiplicity constraints</L.LABEL
  48943. ><B.BODY>Multiplicity constraints other than <CX5FX5FEMPHASIS>1+</CX5FX5FEMPHASIS
  48944. > are ignored by the C++ code generator. Multiplicity constraints are specified by a multiplicity specification string.</B.BODY
  48945. ><B.BODY>Example multiplicity constraint:</B.BODY
  48946. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00512.unk" origfile="pics/multcstr.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48947. ></FA.FIGURE.ANCHOR
  48948. ></LABEL
  48949. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48950. >Subset constraints between associations</L.LABEL
  48951. ><B.BODY>Multiple associations can be drawn between two classes. With the Constraint symbol you can specify a subset constraint between two associations. Subset constraints have no meaning for the C++ code generator.</B.BODY
  48952. ><B.BODY>Example subset constraint:</B.BODY
  48953. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00513.unk" origfile="pics/subscstr.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48954. ></FA.FIGURE.ANCHOR
  48955. ></LABEL
  48956. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48957. >Propagation of operations</L.LABEL
  48958. ><B.BODY>In an association between two classes, you can indicate the propagation of an operation using the Propagation symbol. Propagations have no meaning for the C++ code generator.</B.BODY
  48959. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00514.unk" origfile="pics/propgt.gif" origtype="X" origdoc="../../sources/cpp/cppnpers.fm5.mif"></RBW-GRAPHIC
  48960. ></FA.FIGURE.ANCHOR
  48961. ><RBWAUTO-0001></RBWAUTO-0001
  48962. ><!--
  48963.  
  48964.  
  48965.  
  48966.  
  48967.  
  48968. CONVERTING SOURCE FILE ../../sources/cpp/cppeng.fm5.mif
  48969.  
  48970.  
  48971. --><B.BODY></B.BODY
  48972. ><B.BODY></B.BODY
  48973. ><B.BODY></B.BODY
  48974. ><B.BODY></B.BODY
  48975. ><B.BODY></B.BODY
  48976. ></LABEL
  48977. ></SECTION
  48978. ></CHAPTER
  48979. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  48980. ></RBW-AUTOGEN
  48981. >Reverse <RBW-ANCHOR ID="32714"></RBW-ANCHOR
  48982. >and Round&truehy;Trip Engineering<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  48983. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  48984. ></RBW-SYSOBJ
  48985. ></C.CHAPTER.HEAD
  48986. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48987. >Introduction</L.LABEL
  48988. ><B.BODY><RBW-IDXTERM TERM1="project" TERM2="using data from other sources"></RBW-IDXTERM
  48989. >This chapter describes how to use reverse engineering and round&truehy;trip engineering with the C++ code generator.</B.BODY
  48990. ></LABEL
  48991. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48992. >Reverse engineering</L.LABEL
  48993. ><B.BODY>One of the benefits of an object&truehy;oriented design methodology is its support for the reuse of software components. <CX5FX5FEMPHASIS>Reverse engineering</CX5FX5FEMPHASIS
  48994. > facilitates this by allowing you to use existing C++ code in your project. This code may come from other projects or from third&truehy;parties, such as class library vendors or public domain software sites.</B.BODY
  48995. ></LABEL
  48996. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  48997. >Round&truehy;trip engineering</L.LABEL
  48998. ><B.BODY>The C++ code generator generates header files and source files.</B.BODY
  48999. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49000. ></RBW-AUTOGEN
  49001. ></RBW-MARKER
  49002. ><RBW-PARABODY><RBW-IDXTERM TERM1="engineering"></RBW-IDXTERM
  49003. >The <CX5FX5FBULLET.EMPHASIS>header files</CX5FX5FBULLET.EMPHASIS
  49004. > are complete when they are generated and do not normally need to be edited. However, if you do edit them, you can often use <CX5FX5FEMPHASIS>round&truehy;trip engineering</CX5FX5FEMPHASIS
  49005. > to move your changes back into the CDMs of the Object Design phase. This ensures that your changes are preserved when you regenerate the header files.</RBW-PARABODY
  49006. ></LB.LIST.BULLET
  49007. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49008. ></RBW-AUTOGEN
  49009. ></RBW-MARKER
  49010. ><RBW-PARABODY>The <CX5FX5FBULLET.EMPHASIS>source files</CX5FX5FBULLET.EMPHASIS
  49011. >, which must be edited, include comments that indicate where you should add code. If you add code only in the places indicated, when you regenerate the source file, ObjectTeam copies your changes to the new source files.</RBW-PARABODY
  49012. ></LB.LIST.BULLET
  49013. ></LABEL
  49014. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49015. >In this chapter</L.LABEL
  49016. ><B.BODY>This chapter contains the following sections:</B.BODY
  49017. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  49018. ></ENTRY
  49019. ></RBW-ROW
  49020. ></THEAD
  49021. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26044" TYPE="XREF-TEXTCOPY">Reverse Engineering&rbwtab;4–2</RBW-XREF
  49022. ></SB.SECTION.BLOCK.TABLE
  49023. ></ENTRY
  49024. ></RBW-ROW
  49025. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29914" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering&rbwtab;4–13</RBW-XREF
  49026. ></SB.SECTION.BLOCK.TABLE
  49027. ></ENTRY
  49028. ></RBW-ROW
  49029. ></TBODY
  49030. ></TGROUP
  49031. ></RBW-TABLE
  49032. ></LABEL
  49033. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26044"></RBW-ANCHOR
  49034. >Reverse Engineering</S.SECTION.HEAD
  49035. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49036. >Introduction</L.LABEL
  49037. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  49038. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  49039. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  49040. ><RBW-IDXTERM TERM1="class library" TERM2="reverse engineering"></RBW-IDXTERM
  49041. >Reverse engineering parses C++ header files and builds CDs and CDMs that show the class hierarchy defined in the header files. </B.BODY
  49042. ></LABEL
  49043. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49044. >Purpose </L.LABEL
  49045. ><B.BODY>Use reverse engineering to capture and display the class hierarchy of a class library so that you can reuse the classes in the library. Reverse engineering:</B.BODY
  49046. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49047. ></RBW-AUTOGEN
  49048. ></RBW-MARKER
  49049. ><RBW-PARABODY>Makes class libraries available in ObjectTeam.</RBW-PARABODY
  49050. ></LB.LIST.BULLET
  49051. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49052. ></RBW-AUTOGEN
  49053. ></RBW-MARKER
  49054. ><RBW-PARABODY>Helps you to understand the structure and functionality of class libraries.</RBW-PARABODY
  49055. ></LB.LIST.BULLET
  49056. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49057. >Not an import utility</SL.SUBLABEL
  49058. ><B.BODY>Reverse engineering is not designed to capture all the information in a header file. Therefore, do not use reverse engineering to import classes <CX5FX5FEMPHASIS>in order to maintain them in ObjectTeam</CX5FX5FEMPHASIS
  49059. ><CX5FX5FEMPHASIS></CX5FX5FEMPHASIS
  49060. >. If you generate header files from the CDs and CDMs created by reverse engineering, the generated header files are <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  49061. > the same as the original header files.</B.BODY
  49062. ></LABEL
  49063. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49064. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="class library"></RBW-IDXTERM
  49065. ><RBW-IDXTERM TERM1="translating" TERM2="c++ header files to Class Association Diagrams"></RBW-IDXTERM
  49066. ><RBW-ANCHOR ID="22575"></RBW-ANCHOR
  49067. >What happens during reverse engineering</L.LABEL
  49068. ><B.BODY>Reverse engineering uses the following steps to translate C++ header files into CDs and CDMs that show the class hierarchy:</B.BODY
  49069. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  49070. ></RBW-AUTOGEN
  49071. ></RBW-MARKER
  49072. ><RBW-PARABODY>Parses the C++ header files, then maps the C++ elements to ObjectTeam elements.</RBW-PARABODY
  49073. ></LN.LIST.NUM
  49074. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  49075. ></RBW-AUTOGEN
  49076. ></RBW-MARKER
  49077. ><RBW-PARABODY>Creates CDs and CDMs that define the ObjectTeam elements.</RBW-PARABODY
  49078. ></LN.LIST.NUM
  49079. ></LABEL
  49080. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49081. >In this section</L.LABEL
  49082. ><B.BODY>This section contains the following topics:</B.BODY
  49083. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  49084. ></ENTRY
  49085. ></RBW-ROW
  49086. ></THEAD
  49087. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36369" TYPE="XREF-TEXTCOPY">Parsing the Files&rbwtab;4–3</RBW-XREF
  49088. ></SB.SECTION.BLOCK.TABLE
  49089. ></ENTRY
  49090. ></RBW-ROW
  49091. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15009" TYPE="XREF-TEXTCOPY">Creating the Diagrams&rbwtab;4–5</RBW-XREF
  49092. ></SB.SECTION.BLOCK.TABLE
  49093. ></ENTRY
  49094. ></RBW-ROW
  49095. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23867" TYPE="XREF-TEXTCOPY">Running Reverse Engineering&rbwtab;4–11</RBW-XREF
  49096. ></SB.SECTION.BLOCK.TABLE
  49097. ></ENTRY
  49098. ></RBW-ROW
  49099. ></TBODY
  49100. ></TGROUP
  49101. ></RBW-TABLE
  49102. ></LABEL
  49103. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36369"></RBW-ANCHOR
  49104. >Parsing the Files</SS.SUBSEC.HEAD
  49105. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49106. >Parsing the header files</L.LABEL
  49107. ><B.BODY>The parser processes the header files of the class libraries as follows:</B.BODY
  49108. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49109. ></RBW-AUTOGEN
  49110. ></RBW-MARKER
  49111. ><RBW-PARABODY>It recognizes the definitions of the following C++ constructs:</RBW-PARABODY
  49112. ></LB.LIST.BULLET
  49113. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  49114. ></RBW-MARKER
  49115. ><RBW-PARABODY>class</RBW-PARABODY
  49116. ></LB2.LIST.BULLET.2
  49117. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  49118. ></RBW-MARKER
  49119. ><RBW-PARABODY>struct</RBW-PARABODY
  49120. ></LB2.LIST.BULLET.2
  49121. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  49122. ></RBW-MARKER
  49123. ><RBW-PARABODY>enum</RBW-PARABODY
  49124. ></LB2.LIST.BULLET.2
  49125. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49126. ></RBW-AUTOGEN
  49127. ></RBW-MARKER
  49128. ><RBW-PARABODY>It treats complex constructs as follows:</RBW-PARABODY
  49129. ></LB.LIST.BULLET
  49130. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  49131. ></RBW-MARKER
  49132. ><RBW-PARABODY>Nested type definitions are recognized, but processed as if they are not nested. This can result in duplicate definitions.</RBW-PARABODY
  49133. ></LB2.LIST.BULLET.2
  49134. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  49135. ></RBW-MARKER
  49136. ><RBW-PARABODY>References to nested type definitions are transformed into references to type definitions that are not nested. For example, <CX5FX5FINPUT>nested::type</CX5FX5FINPUT
  49137. > becomes <CX5FX5FINPUT>nested@type</CX5FX5FINPUT
  49138. >.</RBW-PARABODY
  49139. ></LB2.LIST.BULLET.2
  49140. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  49141. ></RBW-MARKER
  49142. ><RBW-PARABODY>Definitions of templates are ignored; references to instances of the template are mapped to a reasonable name. For example, <CX5FX5FINPUT>List<Thing*></CX5FX5FINPUT
  49143. > becomes <CX5FX5FINPUT>List_ThingPtr</CX5FX5FINPUT
  49144. >.</RBW-PARABODY
  49145. ></LB2.LIST.BULLET.2
  49146. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49147. ></RBW-AUTOGEN
  49148. ></RBW-MARKER
  49149. ><RBW-PARABODY>It allows data types to be referenced before they are defined.</RBW-PARABODY
  49150. ></LB.LIST.BULLET
  49151. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49152. ></RBW-AUTOGEN
  49153. ></RBW-MARKER
  49154. ><RBW-PARABODY>It detects associations according to a heuristic process. The associations can be transformed either into graphical associations or into attributes and methods.</RBW-PARABODY
  49155. ></LB.LIST.BULLET
  49156. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49157. >Preprocessing directives</SL.SUBLABEL
  49158. ><B.BODY>The parser ignores all preprocessor symbols, such as #ifdef and #define. However, you can specify a preprocessor to be run before reverse engineering, as described in <RBW-XREF REFID="23867" TYPE="XREF-TEXTCOPY">Running Reverse Engineering</RBW-XREF
  49159. >.</B.BODY
  49160. ></LABEL
  49161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49162. >Mapping the elements<RBW-IDXTERM TERM1="C++" TERM2="reverse engineering"></RBW-IDXTERM
  49163. ><RBW-IDXTERM TERM1="mapping" TERM2="in reverse engineering"></RBW-IDXTERM
  49164. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="mapping"></RBW-IDXTERM
  49165. ></L.LABEL
  49166. ><B.BODY>After parsing the header file, reverse engineering maps the C++ constructs to ObjectTeam elements, as shown in the following table:</B.BODY
  49167. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C++ Construction</CELLHEADING
  49168. ></ENTRY
  49169. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam Element</CELLHEADING
  49170. ></ENTRY
  49171. ></RBW-ROW
  49172. ></THEAD
  49173. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  49174. ></ENTRY
  49175. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  49176. ></ENTRY
  49177. ></RBW-ROW
  49178. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Struct</CELLBODY
  49179. ></ENTRY
  49180. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  49181. ></ENTRY
  49182. ></RBW-ROW
  49183. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Enum</CELLBODY
  49184. ></ENTRY
  49185. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  49186. ></ENTRY
  49187. ></RBW-ROW
  49188. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data member</CELLBODY
  49189. ></ENTRY
  49190. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute and the <CX5FX5FOBJECT.NAME>attrib_access</CX5FX5FOBJECT.NAME
  49191. > property is set</CELLBODY
  49192. ></ENTRY
  49193. ></RBW-ROW
  49194. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Member function</CELLBODY
  49195. ></ENTRY
  49196. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation and the <CX5FX5FOBJECT.NAME>method_access</CX5FX5FOBJECT.NAME
  49197. > property is set</CELLBODY
  49198. ></ENTRY
  49199. ></RBW-ROW
  49200. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constructor</CELLBODY
  49201. ></ENTRY
  49202. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>$create</CELLBODY
  49203. ></ENTRY
  49204. ></RBW-ROW
  49205. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Destructor</CELLBODY
  49206. ></ENTRY
  49207. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  49208. ></ENTRY
  49209. ></RBW-ROW
  49210. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Static member</CELLBODY
  49211. ></ENTRY
  49212. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class feature (a $ is added to the front of the name)</CELLBODY
  49213. ></ENTRY
  49214. ></RBW-ROW
  49215. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pure member</CELLBODY
  49216. ></ENTRY
  49217. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>{abstract} is added at the end of the operation</CELLBODY
  49218. ></ENTRY
  49219. ></RBW-ROW
  49220. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Virtual member</CELLBODY
  49221. ></ENTRY
  49222. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation with <CX5FX5FOBJECT.NAME>is_dyn_bound</CX5FX5FOBJECT.NAME
  49223. > property added</CELLBODY
  49224. ></ENTRY
  49225. ></RBW-ROW
  49226. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Const member</CELLBODY
  49227. ></ENTRY
  49228. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation with <CX5FX5FOBJECT.NAME>const_function</CX5FX5FOBJECT.NAME
  49229. > property</CELLBODY
  49230. ></ENTRY
  49231. ></RBW-ROW
  49232. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Enumerator</CELLBODY
  49233. ></ENTRY
  49234. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class feature with type enum</CELLBODY
  49235. ></ENTRY
  49236. ></RBW-ROW
  49237. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  49238. ></ENTRY
  49239. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  49240. ></ENTRY
  49241. ></RBW-ROW
  49242. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data type</CELLBODY
  49243. ></ENTRY
  49244. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data type without modifiers and the attribute type modifier</CELLBODY
  49245. ></ENTRY
  49246. ></RBW-ROW
  49247. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type “void *”</CELLBODY
  49248. ></ENTRY
  49249. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation with return type genptr</CELLBODY
  49250. ></ENTRY
  49251. ></RBW-ROW
  49252. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>One&truehy;dimensional character array</CELLBODY
  49253. ></ENTRY
  49254. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>One&truehy;dimensional character array</CELLBODY
  49255. ></ENTRY
  49256. ></RBW-ROW
  49257. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Superclass</CELLBODY
  49258. ></ENTRY
  49259. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam inheritance structure that has the <CX5FX5FOBJECT.NAME>inher_access</CX5FX5FOBJECT.NAME
  49260. > property set</CELLBODY
  49261. ></ENTRY
  49262. ></RBW-ROW
  49263. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name of an instance of a template</CELLBODY
  49264. ></ENTRY
  49265. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reasonable name; for example, CList<X> becomes Clist_X</CELLBODY
  49266. ></ENTRY
  49267. ></RBW-ROW
  49268. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nested types</CELLBODY
  49269. ></ENTRY
  49270. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name in which @ replaces ::</CELLBODY
  49271. ></ENTRY
  49272. ></RBW-ROW
  49273. ></TBODY
  49274. ></TGROUP
  49275. ></RBW-TABLE
  49276. ><B.BODY>Implicit C++ constructions referring to associations can also be mapped to ObjectTeam elements, however, it will not be possible to map every construction. </B.BODY
  49277. ></LABEL
  49278. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49279. >Customizing reverse engineering</L.LABEL
  49280. ><B.BODY>The customization file <CX5FX5FFILE.NAME>tcl\rev_assoc.tcl</CX5FX5FFILE.NAME
  49281. > file in the cplusplus module defines the reverse engineering rules used to detect associations and attribute accessors. You can modify reverse engineering by editing this customization file, as described in <RBW-XREF REFID="36160" TYPE="XREF-TEXTCOPY">Chapter 5, Customizing Code Generation</RBW-XREF
  49282. >.</B.BODY
  49283. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  49284. ></RBW-AUTOGEN
  49285. >This customization file is not used unless you select the Reverse Engineer Associations option during reverse engineering.</W.WARNING
  49286. ></LABEL
  49287. ></SUBSECTION
  49288. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15009"></RBW-ANCHOR
  49289. >Creating the Diagrams</SS.SUBSEC.HEAD
  49290. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49291. >Creating diagrams<RBW-IDXTERM TERM1="diagrams" TERM2="draft, in reverse engineering"></RBW-IDXTERM
  49292. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="draft diagrams"></RBW-IDXTERM
  49293. ></L.LABEL
  49294. ><BI.BODY.INTRO>After mapping the C++ constructs to ObjectTeam elements, reverse engineering creates the CDs and CDMs that define the ObjectTeam elements. It creates the following CDs:</BI.BODY.INTRO
  49295. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49296. ></RBW-AUTOGEN
  49297. ></RBW-MARKER
  49298. ><RBW-PARABODY>One or more CDs to show the class hierarchy</RBW-PARABODY
  49299. ></LB.LIST.BULLET
  49300. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49301. ></RBW-AUTOGEN
  49302. ></RBW-MARKER
  49303. ><RBW-PARABODY>One or more CDs to show the associations among the classes</RBW-PARABODY
  49304. ></LB.LIST.BULLET
  49305. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49306. >Naming conventions for CDs</SL.SUBLABEL
  49307. ><B.BODY>Each CD is named for the primary class in the CD; for example, Class1. The word Tree is appended to the name of each CD that defines part of the class hierarchy; for example, TestClass1Tree.</B.BODY
  49308. ></LABEL
  49309. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49310. >How many diagrams are created</L.LABEL
  49311. ><B.BODY>The number and complexity of the CDs created by reverse engineering depend largely on the following:</B.BODY
  49312. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49313. ></RBW-AUTOGEN
  49314. ></RBW-MARKER
  49315. ><RBW-PARABODY>The files that you select for reverse engineering, particularly the number and complexity of classes defined in the files.</RBW-PARABODY
  49316. ></LB.LIST.BULLET
  49317. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49318. ></RBW-AUTOGEN
  49319. ></RBW-MARKER
  49320. ><RBW-PARABODY>The reverse engineering options that you select, particularly whether you choose to reverse engineer associations.</RBW-PARABODY
  49321. ></LB.LIST.BULLET
  49322. ></LABEL
  49323. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49324. ><RBW-ANCHOR ID="11053"></RBW-ANCHOR
  49325. >Options for reverse engineering</L.LABEL
  49326. ><BI.BODY.INTRO>During reverse engineering, ObjectTeam displays the following dialog box prompting you to select the options that you want to use:</BI.BODY.INTRO
  49327. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00515.unk" origfile="pics/reoption.gif" origtype="X" origdoc="../../sources/cpp/cppeng.fm5.mif"></RBW-GRAPHIC
  49328. ></FA.FIGURE.ANCHOR
  49329. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering" TERM2="configuring options"></RBW-IDXTERM
  49330. >The following table describes each option (default values are as shown in the dialog box):</B.BODY
  49331. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  49332. ></ENTRY
  49333. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Descriptions</CELLHEADING
  49334. ></ENTRY
  49335. ></RBW-ROW
  49336. ></THEAD
  49337. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diagram</CELLBODY
  49338. ></ENTRY
  49339. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Prefix used to name each generated CD.</CELLBODY
  49340. ></ENTRY
  49341. ></RBW-ROW
  49342. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate</CELLBODY
  49343. ></ENTRY
  49344. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether to generate CDs, CDMs, or both:</CELLBODY
  49345. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49346. ></RBW-AUTOGEN
  49347. ></RBW-MARKER
  49348. ><RBW-PARABODY>CDs and CDMs</RBW-PARABODY
  49349. ></CELLBULLET
  49350. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49351. ></RBW-AUTOGEN
  49352. ></RBW-MARKER
  49353. ><RBW-PARABODY>Only CDs (only class structure is generated)</RBW-PARABODY
  49354. ></CELLBULLET
  49355. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49356. ></RBW-AUTOGEN
  49357. ></RBW-MARKER
  49358. ><RBW-PARABODY>Only CDMs (only class features are generated)</RBW-PARABODY
  49359. ></CELLBULLET
  49360. ></ENTRY
  49361. ></RBW-ROW
  49362. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overwrite Existing Diagrams</CELLBODY
  49363. ></ENTRY
  49364. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, existing CDs are replaced.</CELLBODY
  49365. ></ENTRY
  49366. ></RBW-ROW
  49367. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Reference Diagrams</CELLBODY
  49368. ></ENTRY
  49369. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering creates a separate reference CD for each class that exceeds the maximum size. The class is folded in all diagrams other than the reference diagram.</CELLBODY
  49370. ></ENTRY
  49371. ></RBW-ROW
  49372. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Class Width & Height</CELLBODY
  49373. ></ENTRY
  49374. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class. When a class exceeds this size, it is folded.</CELLBODY
  49375. ></ENTRY
  49376. ></RBW-ROW
  49377. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Tree Width & Height</CELLBODY
  49378. ></ENTRY
  49379. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class tree. When a class hierarchy exceeds this size, it is split.</CELLBODY
  49380. ></ENTRY
  49381. ></RBW-ROW
  49382. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Screen Width & Height</CELLBODY
  49383. ></ENTRY
  49384. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a diagram. When a diagram exceeds this size, it is split.</CELLBODY
  49385. ></ENTRY
  49386. ></RBW-ROW
  49387. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Placement Algorithm</CELLBODY
  49388. ></ENTRY
  49389. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Reverse Engineering Associations is selected</CX5FX5FBULLET.EMPHASIS
  49390. >, specifies the algorithm reverse engineering uses to create the CDs that show the associations:</CELLBODY
  49391. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49392. ></RBW-AUTOGEN
  49393. ></RBW-MARKER
  49394. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Simple.</CX5FX5FBULLET.EMPHASIS
  49395. > Creates a CD for each class that has associations.</RBW-PARABODY
  49396. ></CELLBULLET
  49397. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49398. ></RBW-AUTOGEN
  49399. ></RBW-MARKER
  49400. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Grid.</CX5FX5FBULLET.EMPHASIS
  49401. > Creates a CD for each <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  49402. > classes, where <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  49403. > is the number specified in the Number of Classes per CD field.</RBW-PARABODY
  49404. ></CELLBULLET
  49405. ></ENTRY
  49406. ></RBW-ROW
  49407. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Number of Classes per CD</CELLBODY
  49408. ></ENTRY
  49409. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Placement Algorithm is Grid</CX5FX5FBULLET.EMPHASIS
  49410. >, specifies the number of unfolded classes per CD.</CELLBODY
  49411. ></ENTRY
  49412. ></RBW-ROW
  49413. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reverse Engineer Associations</CELLBODY
  49414. ></ENTRY
  49415. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering examines the attributes and accessor methods defined on each class to determine the associations among classes. It then creates CDs that show those associations.</CELLBODY
  49416. ></ENTRY
  49417. ></RBW-ROW
  49418. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Input Filter Command</CELLBODY
  49419. ></ENTRY
  49420. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Command used to preprocess the header files. Specify the command using the format:</CELLBODY
  49421. ><CELLBODY><CX5FX5FINPUT>myfilter %1 %2</CX5FX5FINPUT
  49422. > </CELLBODY
  49423. ><CELLBODY>It is then executed as</CELLBODY
  49424. ><CELLBODY><CX5FX5FINPUT>myfilter input&truehy;file output&truehy;file</CX5FX5FINPUT
  49425. > </CELLBODY
  49426. ><CELLBODY>If this option is not specified it will default to the settings of the M4_reveng_filter variable. If the M4_reveng_filter is not set, no input filter will be used.</CELLBODY
  49427. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  49428. > Reverse engineering ignores all preprocessor directives, such as #ifdef and #define. Use this field to specify a preprocessor that can resolve these directives before ObjectTeam reverse engineers the file.</CELLBODY
  49429. ></ENTRY
  49430. ></RBW-ROW
  49431. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Skip Identifiers File</CELLBODY
  49432. ></ENTRY
  49433. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>File containing a list of identifiers to be ignored by reverse engineering. The file must be an ASCII file that contains the identifiers; separate the identifiers using white space.</CELLBODY
  49434. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  49435. >If you want to retain the specification of this file for repeated use, set the M4_reveng_skipfile variable in your Meta4userenv file. For example:</CELLBODY
  49436. ><E.EXAMPLE>M4_reveng_skipfile=\user\bob\skip_file.txt;RW</E.EXAMPLE
  49437. ><CELLBODY>This value will be displayed in this field. Note that if you change the value in this field, it is not written to the Meta4UserEnv file.</CELLBODY
  49438. ></ENTRY
  49439. ></RBW-ROW
  49440. ></TBODY
  49441. ></TGROUP
  49442. ></RBW-TABLE
  49443. ></LABEL
  49444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49445. >CDs that show the class hierarchy</L.LABEL
  49446. ><B.BODY>Following are the guidelines used to draw the CDs that show the class hierarchy:</B.BODY
  49447. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49448. ></RBW-AUTOGEN
  49449. ></RBW-MARKER
  49450. ><RBW-PARABODY>Reverse engineering creates a CD for each top&truehy;level parent class. The CD contains the parent class and all subclasses.</RBW-PARABODY
  49451. ></LB.LIST.BULLET
  49452. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49453. ></RBW-AUTOGEN
  49454. ></RBW-MARKER
  49455. ><RBW-PARABODY>If a class has multiple parent classes, reverse engineering creates a CD for each parent. The CD for the first parent class contains the parent class, the child class, and all subclasses of the child class. The CD for each of the other parent classes contains only the parent class and the child class; in these diagrams, the child class is folded.</RBW-PARABODY
  49456. ></LB.LIST.BULLET
  49457. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00516.tif" origseq="7" origtype="I" origdoc="../../sources/cpp/cppeng.fm5.mif"></RBW-GRAPHIC
  49458. ></FA2.FIGURE.ANCHOR.2
  49459. ></LABEL
  49460. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49461. >CDs that show associations</L.LABEL
  49462. ><B.BODY>If you select the Reverse Engineer Associations option in the Reverse Engineer dialog box, reverse engineering creates CDs that show the associations. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box. Both algorithms are described below.</B.BODY
  49463. ><B.BODY>If you do not select the Reverse Engineer Associations option, reverse engineering shows associations only as attributes and accessor methods in the appropriate classes.</B.BODY
  49464. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  49465. ></RBW-AUTOGEN
  49466. >Bidirectional associations are reverse engineered as two unidirectional associations.</N.NOTE
  49467. ></LABEL
  49468. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49469. >Simple algorithm</L.LABEL
  49470. ><B.BODY>If you select Simple in the Placement Algorithm field of the Reverse Engineer dialog box, reverse engineering draws the CDs as follows:</B.BODY
  49471. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  49472. ></RBW-AUTOGEN
  49473. ></RBW-MARKER
  49474. ><RBW-PARABODY>Creates a CD for each class that has one or more associations. </RBW-PARABODY
  49475. ></LN.LIST.NUM
  49476. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  49477. ></RBW-AUTOGEN
  49478. ></RBW-MARKER
  49479. ><RBW-PARABODY>Unfolds the main class in each CD and folds all associated classes.</RBW-PARABODY
  49480. ></LN.LIST.NUM
  49481. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49482. >Example</SL.SUBLABEL
  49483. ><BI.BODY.INTRO>The examples for the simple and grid algorithms are created by reverse engineering the same files. The following example shows the CDs created using the simple algorithm.</BI.BODY.INTRO
  49484. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00517.unk" origfile="pics/rndsimp2.gif" origtype="X" origdoc="../../sources/cpp/cppeng.fm5.mif"></RBW-GRAPHIC
  49485. ></FA.FIGURE.ANCHOR
  49486. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00518.unk" origfile="pics/rndsimp1.gif" origtype="X" origdoc="../../sources/cpp/cppeng.fm5.mif"></RBW-GRAPHIC
  49487. ></FAR.FIGURE.ANCHOR.RIGHT
  49488. ></LABEL
  49489. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49490. >Grid algorithm</L.LABEL
  49491. ><B.BODY>If you select Grid in the Placement Algorithm field of the Reverse Engineer dialog box, reverse engineering draws the CDs as follows:</B.BODY
  49492. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  49493. ></RBW-AUTOGEN
  49494. ></RBW-MARKER
  49495. ><RBW-PARABODY>Divides all classes into groups of <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  49496. >, where <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  49497. > is the number specified by the Number of Classes per CD field of the Reverse Engineer dialog box. The algorithm attempts to group associated classes.</RBW-PARABODY
  49498. ></LN.LIST.NUM
  49499. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  49500. ></RBW-AUTOGEN
  49501. >To create a diagram that contains all classes, specify <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  49502. > as the number of classes being reverse engineered (or greater).</T2.TIP.2
  49503. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  49504. ></RBW-AUTOGEN
  49505. ></RBW-MARKER
  49506. ><RBW-PARABODY>For each group of classes, creates a CD and adds the classes (unfolded) to the CD. To position the classes, reverse engineering uses a uniform grid whose squares are the size of the largest class in the group and its longest association.</RBW-PARABODY
  49507. ></LN.LIST.NUM
  49508. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  49509. ></RBW-AUTOGEN
  49510. ></RBW-MARKER
  49511. ><RBW-PARABODY>For each class in each CD, draws all associations from the class to all associated classes. If an associated class is not in the CD, reverse engineering adds it (folded) to the CD.</RBW-PARABODY
  49512. ></LN.LIST.NUM
  49513. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49514. >Example</SL.SUBLABEL
  49515. ><B.BODY>The examples for the simple and grid algorithms are created by reverse engineering the same files. The following example shows the CD created using the grid algorithm. (The diagram layout has been modified to fit on the page.)</B.BODY
  49516. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00519.unk" origfile="pics/rndgrid.gif" origtype="X" origdoc="../../sources/cpp/cppeng.fm5.mif"></RBW-GRAPHIC
  49517. ></FAR.FIGURE.ANCHOR.RIGHT
  49518. ></LABEL
  49519. ></SUBSECTION
  49520. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23867"></RBW-ANCHOR
  49521. >Running Reverse Engineering</SS.SUBSEC.HEAD
  49522. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49523. >Introduction</L.LABEL
  49524. ><B.BODY>This section describes how to run reverse engineering.</B.BODY
  49525. ></LABEL
  49526. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49527. >How to reverse engineer</L.LABEL
  49528. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  49529. ></RBW-AUTOGEN
  49530. ></RBW-MARKER
  49531. ><RBW-PARABODY>To reverse engineer a class library from one or more header files:</RBW-PARABODY
  49532. ></P.PROCEDURE
  49533. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  49534. ></RBW-AUTOGEN
  49535. ></RBW-MARKER
  49536. ><RBW-PARABODY>Move to System level in Object Design phase.</RBW-PARABODY
  49537. ></LN.LIST.NUM
  49538. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  49539. ></RBW-AUTOGEN
  49540. >Typically, you reverse engineer into an empty system. This prevents name conflicts with existing classes. Classes are reverse engineered with scope ‘Phase’ by default, and, therefore, sometimes an empty phase may be needed.</N2.NOTE.2
  49541. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  49542. ></RBW-AUTOGEN
  49543. ></RBW-MARKER
  49544. ><RBW-PARABODY>Select Utilities | Reverse Engineer C++.</RBW-PARABODY
  49545. ></LN.LIST.NUM
  49546. ><LR.LIST.RESULT>A Reverse Engineer C++ dialog box appears (see <RBW-XREF REFID="14652" TYPE="XREF-TEXTCOPY">Files for reverse engineering</RBW-XREF
  49547. >), prompting you to select the files to be reverse engineered.</LR.LIST.RESULT
  49548. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  49549. ></RBW-AUTOGEN
  49550. ></RBW-MARKER
  49551. ><RBW-PARABODY>Select the files that you want to reverse engineer, then select OK.</RBW-PARABODY
  49552. ></LN.LIST.NUM
  49553. ><LR.LIST.RESULT>A Reverse Engineer C++ dialog box appears (see <RBW-XREF REFID="11053" TYPE="XREF-TEXTCOPY">Options for reverse engineering</RBW-XREF
  49554. >), prompting you to select the options that you want to use. </LR.LIST.RESULT
  49555. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  49556. ></RBW-AUTOGEN
  49557. ></RBW-MARKER
  49558. ><RBW-PARABODY>Select the options, then select OK.</RBW-PARABODY
  49559. ></LN.LIST.NUM
  49560. ><LR.LIST.RESULT>ObjectTeam reverse engineers the selected file, reporting the results in a Monitoring window.</LR.LIST.RESULT
  49561. ></LABEL
  49562. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49563. ><RBW-ANCHOR ID="14652"></RBW-ANCHOR
  49564. >Files for reverse engineering</L.LABEL
  49565. ><B.BODY>During reverse engineering, ObjectTeam prompts you to select the files that you want to reverse engineer. In most cases, you select C++ header files. </B.BODY
  49566. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  49567. ></RBW-AUTOGEN
  49568. >Reverse engineering creates CDs and CDMs based on the files that you select. Therefore, you generally want to reverse engineer all files in a library at the same time.</T.TIP
  49569. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49570. >Windows</SL.SUBLABEL
  49571. ><BI.BODY.INTRO>The following illustration shows the Windows dialog box. Use the File Name and Files of Type fields to filter the list of files displayed. </BI.BODY.INTRO
  49572. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00520.unk" origfile="pics/rvngselw.gif" origtype="X" origdoc="../../sources/cpp/cppeng.fm5.mif"></RBW-GRAPHIC
  49573. ></FA.FIGURE.ANCHOR
  49574. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49575. >UNIX</SL.SUBLABEL
  49576. ><BI.BODY.INTRO>The following illustration shows the UNIX dialog box. Use the Filter field and Filter button to filter the list of files displayed.</BI.BODY.INTRO
  49577. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00521.unk" origfile="pics/revengu1.gif" origtype="X" origdoc="../../sources/cpp/cppeng.fm5.mif"></RBW-GRAPHIC
  49578. ></FA.FIGURE.ANCHOR
  49579. ></LABEL
  49580. ></SUBSECTION
  49581. ></SECTION
  49582. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29914"></RBW-ANCHOR
  49583. >Round&truehy;Trip Engineering</S.SECTION.HEAD
  49584. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49585. >Introduction</L.LABEL
  49586. ><B.BODY>Round&truehy;trip engineering updates the ObjectTeam model based on the changes you have made to the generated C++ header files. Use round&truehy;trip engineering to update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  49587. > you regenerate the header files.</B.BODY
  49588. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  49589. ></RBW-AUTOGEN
  49590. >Round&truehy;trip engineering is not necessary, and does not work with, C++ source files. It is only needed for the C++ header files.</N.NOTE
  49591. ></LABEL
  49592. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49593. >Purpose</L.LABEL
  49594. ><B.BODY>The code generator generates code based on the ObjectTeam model. If you do not update the ObjectTeam model before regenerating the header files, the new header files do not include your changes. </B.BODY
  49595. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49596. >Example</SL.SUBLABEL
  49597. ><B.BODY>You generate C++ header files. You then add a new method to a generated file. If you do not update the ObjectTeam model, the model does not contain the operation that corresponds to the method. When you regenerate the header file, the code generator assumes that you <CX5FX5FEMPHASIS>deleted</CX5FX5FEMPHASIS
  49598. > the operation from ObjectTeam and, therefore, does not include the <CX5FX5FEMPHASIS>obsolete</CX5FX5FEMPHASIS
  49599. > method in the newly generated file.</B.BODY
  49600. ></LABEL
  49601. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49602. >Changes captured by round&truehy;trip engineering</L.LABEL
  49603. ><B.BODY>If you have made the following types of changes to the generated header file, round&truehy;trip engineering updates the ObjectTeam model based on those changes:</B.BODY
  49604. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49605. ></RBW-AUTOGEN
  49606. ></RBW-MARKER
  49607. ><RBW-PARABODY>Added or deleted attributes, or edited attribute declarations</RBW-PARABODY
  49608. ></LB.LIST.BULLET
  49609. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49610. ></RBW-AUTOGEN
  49611. ></RBW-MARKER
  49612. ><RBW-PARABODY>Added or deleted methods, or edited method declarations</RBW-PARABODY
  49613. ></LB.LIST.BULLET
  49614. ></LABEL
  49615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49616. >What happens during round&truehy;trip engineering</L.LABEL
  49617. ><B.BODY>The following table shows the steps that occur during round&truehy;trip engineering:</B.BODY
  49618. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  49619. ></ENTRY
  49620. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  49621. ></ENTRY
  49622. ></RBW-ROW
  49623. ></THEAD
  49624. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  49625. ></ENTRY
  49626. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>You select the generated (edited) header files that you are interested in and start round&truehy;trip engineering.</CELLBODY
  49627. ></ENTRY
  49628. ></RBW-ROW
  49629. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  49630. ></ENTRY
  49631. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam parses the selected files and compares the information in the files with the information in the ObjectTeam model.</CELLBODY
  49632. ></ENTRY
  49633. ></RBW-ROW
  49634. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  49635. ></ENTRY
  49636. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each difference it finds, ObjectTeam proposes an action and prompts you for confirmation. For example:</CELLBODY
  49637. ><CELLBODY><CX5FX5FINPUT>In class “Account”: delete attribute “Address”?</CX5FX5FINPUT
  49638. ></CELLBODY
  49639. ></ENTRY
  49640. ></RBW-ROW
  49641. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  49642. ></ENTRY
  49643. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Based on your answers, ObjectTeam updates the ObjectTeam model.</CELLBODY
  49644. ></ENTRY
  49645. ></RBW-ROW
  49646. ></TBODY
  49647. ></TGROUP
  49648. ></RBW-TABLE
  49649. ></LABEL
  49650. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49651. >In this section</L.LABEL
  49652. ><B.BODY>This section contains the following topics:</B.BODY
  49653. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  49654. ></ENTRY
  49655. ></RBW-ROW
  49656. ></THEAD
  49657. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34436" TYPE="XREF-TEXTCOPY">Parsing the Files&rbwtab;4–15</RBW-XREF
  49658. ></SB.SECTION.BLOCK.TABLE
  49659. ></ENTRY
  49660. ></RBW-ROW
  49661. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20879" TYPE="XREF-TEXTCOPY">Running Round&truehy;Trip Engineering&rbwtab;4–17</RBW-XREF
  49662. ></SB.SECTION.BLOCK.TABLE
  49663. ></ENTRY
  49664. ></RBW-ROW
  49665. ></TBODY
  49666. ></TGROUP
  49667. ></RBW-TABLE
  49668. ></LABEL
  49669. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34436"></RBW-ANCHOR
  49670. >Parsing the Files</SS.SUBSEC.HEAD
  49671. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49672. >Introduction</L.LABEL
  49673. ><B.BODY>This section describes which changes to the generated C++ header files are captured by round&truehy;trip engineering. </B.BODY
  49674. ></LABEL
  49675. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49676. >Changes to attributes</L.LABEL
  49677. ><B.BODY>In a header file generated by ObjectTeam, the section that defines attributes (Private section only) is indicated by the following comment:</B.BODY
  49678. ><EM.EXAMPLE.MONO>//User&truehy;defined attributes</EM.EXAMPLE.MONO
  49679. ><B.BODY>Within this section, you can make the following types of changes and round&truehy;trip engineering can move them back into the CDMs of the Object Design phase:</B.BODY
  49680. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49681. ></RBW-AUTOGEN
  49682. ></RBW-MARKER
  49683. ><RBW-PARABODY>Add attributes</RBW-PARABODY
  49684. ></LB.LIST.BULLET
  49685. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49686. ></RBW-AUTOGEN
  49687. ></RBW-MARKER
  49688. ><RBW-PARABODY>Delete attributes</RBW-PARABODY
  49689. ></LB.LIST.BULLET
  49690. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49691. ></RBW-AUTOGEN
  49692. ></RBW-MARKER
  49693. ><RBW-PARABODY>Reorder attributes</RBW-PARABODY
  49694. ></LB.LIST.BULLET
  49695. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49696. ></RBW-AUTOGEN
  49697. ></RBW-MARKER
  49698. ><RBW-PARABODY>Change the default value of an attribute</RBW-PARABODY
  49699. ></LB.LIST.BULLET
  49700. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  49701. ></RBW-AUTOGEN
  49702. >If you change a default value, be sure to change it in the comment as well as in the code; round&truehy;trip engineering reads the value from the comment.</N2.NOTE.2
  49703. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  49704. ></RBW-AUTOGEN
  49705. >If you rename an attribute, round&truehy;trip engineering removes and adds the attribute; therefore, its properties are lost.</N.NOTE
  49706. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49707. >Default constructor/destructor</SL.SUBLABEL
  49708. ><B.BODY>If you add or delete an attribute, you can also change the signature of the default constructor for the class. This is the only change to the default constructor/destructor that round&truehy;trip engineering moves back to the CDMs.</B.BODY
  49709. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49710. >Attribute accessor methods</SL.SUBLABEL
  49711. ><B.BODY>If you add or delete an attribute, you can also add or delete its accessor methods. This is the only change to the attribute accessor methods that round&truehy;trip engineering moves back to the CDMs. </B.BODY
  49712. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  49713. ></RBW-AUTOGEN
  49714. >If you add an attribute without adding its accessor method, round&truehy;trip engineering sets the attribute access to read&truehy;only; that is, in the Attribute Access property of the attribute, both the Read and Write fields are set to None.</N.NOTE
  49715. ></LABEL
  49716. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49717. >Changes to operations</L.LABEL
  49718. ><B.BODY>In a header file generated by ObjectTeam, the sections that define operations (Public, Protected, and Private sections) are indicated by the following comment:</B.BODY
  49719. ><EM.EXAMPLE.MONO>//User&truehy;defined methods</EM.EXAMPLE.MONO
  49720. ><B.BODY>Within these sections, you can make the following types of changes and round&truehy;trip engineering can move them back into the CDMs of the Object Design phase:</B.BODY
  49721. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49722. ></RBW-AUTOGEN
  49723. ></RBW-MARKER
  49724. ><RBW-PARABODY>Add methods</RBW-PARABODY
  49725. ></LB.LIST.BULLET
  49726. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49727. ></RBW-AUTOGEN
  49728. ></RBW-MARKER
  49729. ><RBW-PARABODY>Delete methods</RBW-PARABODY
  49730. ></LB.LIST.BULLET
  49731. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  49732. ></RBW-AUTOGEN
  49733. ></RBW-MARKER
  49734. ><RBW-PARABODY>Change method signatures by adding, removing, or reordering parameters, changing default values, or changing the return type. </RBW-PARABODY
  49735. ></LB.LIST.BULLET
  49736. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  49737. ></RBW-AUTOGEN
  49738. >If you rename an operation or parameter, round&truehy;trip engineering removes and adds the object; therefore, its properties are lost.</N.NOTE
  49739. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  49740. ></RBW-AUTOGEN
  49741. >If you have multiple methods with the same name, do not delete one and change the signature of another at the same time. Delete one, run round&truehy;trip engineering, change the signature of the other, and run round&truehy;trip engineering. This approach prevents potential errors in round&truehy;trip engineering.</T.TIP
  49742. ></LABEL
  49743. ></SUBSECTION
  49744. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20879"></RBW-ANCHOR
  49745. >Running Round&truehy;Trip Engineering</SS.SUBSEC.HEAD
  49746. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49747. >Customizing round&truehy;trip engineering</L.LABEL
  49748. ><B.BODY>The customization file <CX5FX5FFILE.NAME>roundtrip.roundtrip</CX5FX5FFILE.NAME
  49749. > in the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  49750. >/etc directory controls what actions round&truehy;trip engineering proposes, as well as the default answers it supplies. To examine or modify the current behavior of round&truehy;trip engineering, examine or modify the customization file.</B.BODY
  49751. ></LABEL
  49752. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49753. >How to run round&truehy;trip engineering</L.LABEL
  49754. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  49755. ></RBW-AUTOGEN
  49756. ></RBW-MARKER
  49757. ><RBW-PARABODY>To run round&truehy;trip engineering:</RBW-PARABODY
  49758. ></P.PROCEDURE
  49759. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  49760. ></RBW-AUTOGEN
  49761. ></RBW-MARKER
  49762. ><RBW-PARABODY>Move to the System level of the Implementation phase.</RBW-PARABODY
  49763. ></LN.LIST.NUM
  49764. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  49765. ></RBW-AUTOGEN
  49766. ></RBW-MARKER
  49767. ><RBW-PARABODY>Select the C++ header files on which you want to run round&truehy;trip engineering.</RBW-PARABODY
  49768. ></LN.LIST.NUM
  49769. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  49770. ></RBW-AUTOGEN
  49771. ></RBW-MARKER
  49772. ><RBW-PARABODY>Select Utilities | Round Trip Selected.</RBW-PARABODY
  49773. ></LN.LIST.NUM
  49774. ><LR.LIST.RESULT>ObjectTeam opens the Roundtrip Selected Files dialog box, compares the classes in the generated files to the classes in the Object Design phase, and then begins proposing actions and prompting you for confirmation.</LR.LIST.RESULT
  49775. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00522.unk" origfile="pics/rndtrip.gif" origtype="X" origdoc="../../sources/cpp/cppeng.fm5.mif"></RBW-GRAPHIC
  49776. ></FA2.FIGURE.ANCHOR.2
  49777. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  49778. ></RBW-AUTOGEN
  49779. ></RBW-MARKER
  49780. ><RBW-PARABODY>Use the buttons to respond to the proposed actions:</RBW-PARABODY
  49781. ></LN.LIST.NUM
  49782. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Button</CELLHEADING
  49783. ></ENTRY
  49784. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  49785. ></ENTRY
  49786. ></RBW-ROW
  49787. ></THEAD
  49788. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  49789. ></ENTRY
  49790. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make the proposed change.</CELLBODY
  49791. ></ENTRY
  49792. ></RBW-ROW
  49793. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>No</CELLBODY
  49794. ></ENTRY
  49795. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Do not make the proposed change.</CELLBODY
  49796. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  49797. > When you regenerate the C++ header file, the change to the file will be lost.</CELLBODY
  49798. ></ENTRY
  49799. ></RBW-ROW
  49800. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default to All</CELLBODY
  49801. ></ENTRY
  49802. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use the default response for all remaining questions.</CELLBODY
  49803. ></ENTRY
  49804. ></RBW-ROW
  49805. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Stop</CELLBODY
  49806. ></ENTRY
  49807. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cancel all changes</CELLBODY
  49808. ></ENTRY
  49809. ></RBW-ROW
  49810. ></TBODY
  49811. ></TGROUP
  49812. ></RBW-TABLE
  49813. ><LR.LIST.RESULT>ObjectTeam updates the model based on your responses.</LR.LIST.RESULT
  49814. ><RBWAUTO-0001></RBWAUTO-0001
  49815. ><!--
  49816.  
  49817.  
  49818.  
  49819.  
  49820.  
  49821. CONVERTING SOURCE FILE ../../sources/cpp/cppcust.fm5.mif
  49822.  
  49823.  
  49824. --><B.BODY></B.BODY
  49825. ><B.BODY></B.BODY
  49826. ><B.BODY></B.BODY
  49827. ><B.BODY></B.BODY
  49828. ><B.BODY></B.BODY
  49829. ></LABEL
  49830. ></SUBSECTION
  49831. ></SECTION
  49832. ></CHAPTER
  49833. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  49834. ></RBW-AUTOGEN
  49835. >Customizing <RBW-ANCHOR ID="36160"></RBW-ANCHOR
  49836. >Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  49837. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  49838. ></RBW-SYSOBJ
  49839. ></C.CHAPTER.HEAD
  49840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49841. >Introduction</L.LABEL
  49842. ><B.BODY>This chapter contains an introduction to the code generation process in ObjectTeam and an overview of the areas that can be customized and configured.</B.BODY
  49843. ></LABEL
  49844. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49845. >In this chapter</L.LABEL
  49846. ><B.BODY>This chapter contains the following sections:</B.BODY
  49847. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  49848. ></ENTRY
  49849. ></RBW-ROW
  49850. ></THEAD
  49851. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21823" TYPE="XREF-TEXTCOPY">How C++ Code is Generated&rbwtab;5–2</RBW-XREF
  49852. ></SB.SECTION.BLOCK.TABLE
  49853. ></ENTRY
  49854. ></RBW-ROW
  49855. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29462" TYPE="XREF-TEXTCOPY">How to Customize the Code Generation&rbwtab;5–13</RBW-XREF
  49856. ></SB.SECTION.BLOCK.TABLE
  49857. ></ENTRY
  49858. ></RBW-ROW
  49859. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32178" TYPE="XREF-TEXTCOPY">Customizing Class Libraries&rbwtab;5–25</RBW-XREF
  49860. ></SB.SECTION.BLOCK.TABLE
  49861. ></ENTRY
  49862. ></RBW-ROW
  49863. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28522" TYPE="XREF-TEXTCOPY">Customizing Types&rbwtab;5–43</RBW-XREF
  49864. ></SB.SECTION.BLOCK.TABLE
  49865. ></ENTRY
  49866. ></RBW-ROW
  49867. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30129" TYPE="XREF-TEXTCOPY">Customizing the Extension of Generated Files&rbwtab;5–47</RBW-XREF
  49868. ></SB.SECTION.BLOCK.TABLE
  49869. ></ENTRY
  49870. ></RBW-ROW
  49871. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32725" TYPE="XREF-TEXTCOPY">Customizing the Location of Generated Files&rbwtab;5–50</RBW-XREF
  49872. ></SB.SECTION.BLOCK.TABLE
  49873. ></ENTRY
  49874. ></RBW-ROW
  49875. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40004" TYPE="XREF-TEXTCOPY">Customizing Standard Headers&rbwtab;5–51</RBW-XREF
  49876. ></SB.SECTION.BLOCK.TABLE
  49877. ></ENTRY
  49878. ></RBW-ROW
  49879. ></TBODY
  49880. ></TGROUP
  49881. ></RBW-TABLE
  49882. ></LABEL
  49883. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21823"></RBW-ANCHOR
  49884. >How C++ Code is Generated</S.SECTION.HEAD
  49885. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49886. >Phases in the code generation process</L.LABEL
  49887. ><B.BODY>The code generation process in ObjectTeam can be divided into the following phases:</B.BODY
  49888. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  49889. ></RBW-AUTOGEN
  49890. ></RBW-MARKER
  49891. ><RBW-PARABODY>Traverse the OOPL model</RBW-PARABODY
  49892. ></LN.LIST.NUM
  49893. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  49894. ></RBW-AUTOGEN
  49895. ></RBW-MARKER
  49896. ><RBW-PARABODY>Generate target specific code</RBW-PARABODY
  49897. ></LN.LIST.NUM
  49898. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  49899. ></RBW-AUTOGEN
  49900. ></RBW-MARKER
  49901. ><RBW-PARABODY>Write the generated code to the file system</RBW-PARABODY
  49902. ></LN.LIST.NUM
  49903. ></LABEL
  49904. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49905. >Classes used in the code generation process</L.LABEL
  49906. ><B.BODY>Code generators in ObjectTeam consist of a set of Object Tcl classes, whose definitions are stored in Tcl files. Object Tcl is an object&truehy;oriented extension to standard Tcl developed by Cayenne.</B.BODY
  49907. ><B.BODY>The following types of classes can be distinguished in the code generation process:</B.BODY
  49908. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="138p"><COLSPEC COLNAME="2" COLWIDTH="220p"><COLSPEC COLNAME="3" COLWIDTH="90p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type of class</CELLHEADING
  49909. ></ENTRY
  49910. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  49911. ></ENTRY
  49912. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl file</CELLHEADING
  49913. ></ENTRY
  49914. ></RBW-ROW
  49915. ></THEAD
  49916. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Importer</CELLBODY
  49917. ></ENTRY
  49918. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Language&truehy;independent and language&truehy;dependent Importer classes handle the import of (new or selected) classes from the Object Design Phase into the Implementation phase</CELLBODY
  49919. ></ENTRY
  49920. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>importer.tcl</CELLBODY
  49921. ><CELLBODY>cppimport.tcl</CELLBODY
  49922. ></ENTRY
  49923. ></RBW-ROW
  49924. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>File handling</CELLBODY
  49925. ></ENTRY
  49926. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Language dependent FileHandler classes handle the mapping of class names to file names and vice versa.</CELLBODY
  49927. ><CELLBODY>Importer classes use these classes to map file names to class names and class names with file types to file names.</CELLBODY
  49928. ><CELLBODY>Regenerator classes use these classes to open a file using the class name and the file type.</CELLBODY
  49929. ></ENTRY
  49930. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>cppgentor.tcl</CELLBODY
  49931. ></ENTRY
  49932. ></RBW-ROW
  49933. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generator</CELLBODY
  49934. ></ENTRY
  49935. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Language dependent interface classes to the actual code generator.</CELLBODY
  49936. ></ENTRY
  49937. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>cppgentor.tcl</CELLBODY
  49938. ></ENTRY
  49939. ></RBW-ROW
  49940. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Regenerator</CELLBODY
  49941. ></ENTRY
  49942. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Language dependent Regenerator classes read existing code and filters out parts that can be reused</CELLBODY
  49943. ></ENTRY
  49944. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>cppgentor.tcl</CELLBODY
  49945. ></ENTRY
  49946. ></RBW-ROW
  49947. ></TBODY
  49948. ></TGROUP
  49949. ></RBW-TABLE
  49950. ><B.BODY>These classes are not further discussed in this section. The focus is on the actual code generation, which is based on the OOPL model.</B.BODY
  49951. ></LABEL
  49952. ><SUBSECTION><SS.SUBSEC.HEAD>The OOPL Model</SS.SUBSEC.HEAD
  49953. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49954. >The OOPL model in a nutshell</L.LABEL
  49955. ><B.BODY>The OOPL model is a target language independent data model based on the Cayenne repository. It can be accessed through a Tcl interface, consisting of a class hierarchy that is built&truehy;in in the Tcl interpreter ObjectTeam Shell (otsh).</B.BODY
  49956. ><B.BODY>A complete description of all the classes in the OOPL model and how they relate to one another can be found in <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  49957. ><CX5FX5FTITLE></CX5FX5FTITLE
  49958. >. In this section, only the classes most important for C++ code generation are listed. The three main superclasses are:</B.BODY
  49959. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="208p"><COLSPEC COLNAME="2" COLWIDTH="240p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  49960. ></ENTRY
  49961. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Handles</CELLHEADING
  49962. ></ENTRY
  49963. ></RBW-ROW
  49964. ></THEAD
  49965. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="25419" TYPE="XREF-TEXTCOPY">OPClass</RBW-XREF
  49966. ></CELLBODY
  49967. ></ENTRY
  49968. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Classes</CELLBODY
  49969. ></ENTRY
  49970. ></RBW-ROW
  49971. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="22502" TYPE="XREF-TEXTCOPY">OPType</RBW-XREF
  49972. ></CELLBODY
  49973. ></ENTRY
  49974. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attributes, methods and parameter types</CELLBODY
  49975. ></ENTRY
  49976. ></RBW-ROW
  49977. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19839" TYPE="XREF-TEXTCOPY">OPFeature</RBW-XREF
  49978. ></CELLBODY
  49979. ></ENTRY
  49980. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>attributes and operations</CELLBODY
  49981. ></ENTRY
  49982. ></RBW-ROW
  49983. ></TBODY
  49984. ></TGROUP
  49985. ></RBW-TABLE
  49986. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  49987. ></RBW-AUTOGEN
  49988. >The classes from the OOPL model are not Tcl classes; however, they have been made available to Tcl.</N.NOTE
  49989. ></LABEL
  49990. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  49991. ><RBW-ANCHOR ID="25419"></RBW-ANCHOR
  49992. >OPClass</L.LABEL
  49993. ><B.BODY>The most important subclasses of OPClass are:</B.BODY
  49994. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  49995. ></ENTRY
  49996. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Handles</CELLHEADING
  49997. ></ENTRY
  49998. ></RBW-ROW
  49999. ></THEAD
  50000. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPLinkClass</CELLBODY
  50001. ></ENTRY
  50002. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association classes</CELLBODY
  50003. ></ENTRY
  50004. ></RBW-ROW
  50005. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPClassTDef</CELLBODY
  50006. ></ENTRY
  50007. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Typedefs</CELLBODY
  50008. ></ENTRY
  50009. ></RBW-ROW
  50010. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPClassGenericTypeDef</CELLBODY
  50011. ></ENTRY
  50012. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generic typedefs</CELLBODY
  50013. ></ENTRY
  50014. ></RBW-ROW
  50015. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPClassEnum</CELLBODY
  50016. ></ENTRY
  50017. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Enums</CELLBODY
  50018. ></ENTRY
  50019. ></RBW-ROW
  50020. ></TBODY
  50021. ></TGROUP
  50022. ></RBW-TABLE
  50023. ></LABEL
  50024. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50025. ><RBW-ANCHOR ID="22502"></RBW-ANCHOR
  50026. >OPType</L.LABEL
  50027. ><B.BODY>The most important subclasses of OPType are:</B.BODY
  50028. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  50029. ></ENTRY
  50030. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Handles</CELLHEADING
  50031. ></ENTRY
  50032. ></RBW-ROW
  50033. ></THEAD
  50034. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPBaseType</CELLBODY
  50035. ></ENTRY
  50036. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>standard type</CELLBODY
  50037. ></ENTRY
  50038. ></RBW-ROW
  50039. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPClassType</CELLBODY
  50040. ></ENTRY
  50041. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>class type</CELLBODY
  50042. ></ENTRY
  50043. ></RBW-ROW
  50044. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPTypeDefType</CELLBODY
  50045. ></ENTRY
  50046. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> (generic) typedef class type</CELLBODY
  50047. ></ENTRY
  50048. ></RBW-ROW
  50049. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPEnumType</CELLBODY
  50050. ></ENTRY
  50051. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>enum class type</CELLBODY
  50052. ></ENTRY
  50053. ></RBW-ROW
  50054. ></TBODY
  50055. ></TGROUP
  50056. ></RBW-TABLE
  50057. ></LABEL
  50058. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50059. ><RBW-ANCHOR ID="19839"></RBW-ANCHOR
  50060. >OPFeature</L.LABEL
  50061. ><B.BODY>The most important subclasses of OPFeature are:</B.BODY
  50062. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  50063. ></ENTRY
  50064. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Handles</CELLHEADING
  50065. ></ENTRY
  50066. ></RBW-ROW
  50067. ></THEAD
  50068. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPAttribute</CELLBODY
  50069. ></ENTRY
  50070. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  50071. ></ENTRY
  50072. ></RBW-ROW
  50073. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPConstructor</CELLBODY
  50074. ></ENTRY
  50075. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>constructor</CELLBODY
  50076. ></ENTRY
  50077. ></RBW-ROW
  50078. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPOperation</CELLBODY
  50079. ></ENTRY
  50080. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>method</CELLBODY
  50081. ></ENTRY
  50082. ></RBW-ROW
  50083. ></TBODY
  50084. ></TGROUP
  50085. ></RBW-TABLE
  50086. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50087. >OPAttribute</SL.SUBLABEL
  50088. ><LT.LIST.TEXT>The most important subclasses of OPAttribute are:</LT.LIST.TEXT
  50089. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  50090. ></ENTRY
  50091. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Handles</CELLHEADING
  50092. ></ENTRY
  50093. ></RBW-ROW
  50094. ></THEAD
  50095. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPDataAttr</CELLBODY
  50096. ></ENTRY
  50097. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>data attribute</CELLBODY
  50098. ></ENTRY
  50099. ></RBW-ROW
  50100. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPGenAssocAttr</CELLBODY
  50101. ></ENTRY
  50102. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>association attribute</CELLBODY
  50103. ></ENTRY
  50104. ></RBW-ROW
  50105. ></TBODY
  50106. ></TGROUP
  50107. ></RBW-TABLE
  50108. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50109. >OPConstructor</SL.SUBLABEL
  50110. ><B.BODY>The most important subclasses of OPConstructor are:</B.BODY
  50111. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  50112. ></ENTRY
  50113. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Handles</CELLHEADING
  50114. ></ENTRY
  50115. ></RBW-ROW
  50116. ></THEAD
  50117. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPInitializer</CELLBODY
  50118. ></ENTRY
  50119. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>initializer</CELLBODY
  50120. ></ENTRY
  50121. ></RBW-ROW
  50122. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPCtorParameter</CELLBODY
  50123. ></ENTRY
  50124. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>constructor parameter</CELLBODY
  50125. ></ENTRY
  50126. ></RBW-ROW
  50127. ></TBODY
  50128. ></TGROUP
  50129. ></RBW-TABLE
  50130. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50131. >OPOperation</SL.SUBLABEL
  50132. ><B.BODY>The most important subclass of OPOperation is:</B.BODY
  50133. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  50134. ></ENTRY
  50135. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Handles</CELLHEADING
  50136. ></ENTRY
  50137. ></RBW-ROW
  50138. ></THEAD
  50139. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPParameter</CELLBODY
  50140. ></ENTRY
  50141. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>method parameter</CELLBODY
  50142. ></ENTRY
  50143. ></RBW-ROW
  50144. ></TBODY
  50145. ></TGROUP
  50146. ></RBW-TABLE
  50147. ></LABEL
  50148. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50149. >Building the OOPL model</L.LABEL
  50150. ><B.BODY>The OOPL model is built up during code generation and can be traversed using Object Tcl. The result of traversing the OOPL model is used by the code generator to generate target language specific code files.</B.BODY
  50151. ><B.BODY>If you want to customize any aspect of the code generation, you must be familiar with the structure of the (language&truehy;independent) OOPL model and the way it is used to generate language&truehy;specific code. This process is explained in the remaining part of this section.</B.BODY
  50152. ></LABEL
  50153. ></SUBSECTION
  50154. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33265"></RBW-ANCHOR
  50155. >The Derived OOPL Model</SS.SUBSEC.HEAD
  50156. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50157. >Why a derived OOPL model is required</L.LABEL
  50158. ><B.BODY>Since the OOPL model is a data&truehy;only model, which lacks functionality to generate anything, an extra model based on the OOPL model is needed: the derived OOPL model. </B.BODY
  50159. ></LABEL
  50160. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50161. >Classes</L.LABEL
  50162. ><B.BODY>Every class from the OOPL model that is meaningful for the generation of the particular programming language has a Tcl counterpart in the derived OOPL model.</B.BODY
  50163. ><B.BODY>The names of these Tcl classes resemble their counterparts; instead of the prefix OP they have a prefix indicating the target language (e.g. CppG).</B.BODY
  50164. ><B.BODY>For example:</B.BODY
  50165. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>OOPL Model</CELLHEADING
  50166. ></ENTRY
  50167. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Derived OOPL Model</CELLHEADING
  50168. ></ENTRY
  50169. ></RBW-ROW
  50170. ></THEAD
  50171. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPClass</CELLBODY
  50172. ></ENTRY
  50173. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppGClass</CELLBODY
  50174. ></ENTRY
  50175. ></RBW-ROW
  50176. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPType</CELLBODY
  50177. ></ENTRY
  50178. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppGtype</CELLBODY
  50179. ></ENTRY
  50180. ></RBW-ROW
  50181. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPFeature</CELLBODY
  50182. ></ENTRY
  50183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppGFeature</CELLBODY
  50184. ></ENTRY
  50185. ></RBW-ROW
  50186. ></TBODY
  50187. ></TGROUP
  50188. ></RBW-TABLE
  50189. ></LABEL
  50190. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50191. ><RBW-ANCHOR ID="33756"></RBW-ANCHOR
  50192. >Class hierarchy</L.LABEL
  50193. ><B.BODY>The derived model contains a class hierarchy similar to that of the OOPL model; the Tcl class CppGLinkClass, for example, is derived from CppGClass, just like OPLinkClass is derived from OPClass.</B.BODY
  50194. ><B.BODY>The classes in the derived OOPL model are Tcl classes. Their definition (including attributes and methods) are stored in the Tcl file <CX5FX5FFILE.NAME>cppgclasses.tcl</CX5FX5FFILE.NAME
  50195. >, which can be found in the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50196. > directory of the <CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  50197. > module. </B.BODY
  50198. ><B.BODY>The classes in the OOPL model, on the other hand, are compiled C++ classes, which have been made available to Tcl. The classes in the OOPL model are referred to as OP classes.</B.BODY
  50199. ></LABEL
  50200. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50201. >OP and Tcl classes</L.LABEL
  50202. ><B.BODY>A Tcl class can be derived from both an OP class and a Tcl class, but the inheritance tree is invalid if the Tcl base class, in turn, has also been derived from an OP class.</B.BODY
  50203. ><B.BODY>The Tcl class CppGLinkClass, for example, must be derived from its OP counterpart OPLinkClass. At the same time it must be derived from the Tcl class CppGClass, just like OPLinkClass is derived from OPClass. CppGClass, however, also has an OP class in its hierarchy (OPClass, that is). This renders the hierarchy for CppGLinkClass invalid.</B.BODY
  50204. ><B.BODY>The hierarchy in the following model is invalid.</B.BODY
  50205. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00523.unk" origfile="pics/cmz01.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  50206. ></FA.FIGURE.ANCHOR
  50207. ></LABEL
  50208. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50209. >Mix&truehy;in classes</L.LABEL
  50210. ><B.BODY>The restriction on the classes from which a Tcl class can be derived is circumvented in the derived OOPL model by pushing in a so&truehy;called mix&truehy;in class. </B.BODY
  50211. ><B.BODY>This concept is best explained in a picture. In the following picture, the class CppGLinkClassD is the mix&truehy;in class.</B.BODY
  50212. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00524.unk" origfile="pics/cmz02.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  50213. ></FA.FIGURE.ANCHOR
  50214. ><B.BODY>Using mix&truehy;in classes allows inheriting data from the OOPL tree and functionality from the derived OOPL model consecutively.</B.BODY
  50215. ><B.BODY>The name of a mix&truehy;in class resembles the name of the Tcl class it is derived from; only a capital D is added at the end. However, this name is not important.</B.BODY
  50216. ><B.BODY>For example:</B.BODY
  50217. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Mix&truehy;in class</CELLHEADING
  50218. ></ENTRY
  50219. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl base class</CELLHEADING
  50220. ></ENTRY
  50221. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C++ base class</CELLHEADING
  50222. ></ENTRY
  50223. ></RBW-ROW
  50224. ></THEAD
  50225. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppGLinkClassD</CELLBODY
  50226. ></ENTRY
  50227. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppGlinkClass</CELLBODY
  50228. ></ENTRY
  50229. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>OPLinkClass</CELLBODY
  50230. ></ENTRY
  50231. ></RBW-ROW
  50232. ></TBODY
  50233. ></TGROUP
  50234. ></RBW-TABLE
  50235. ><B.BODY>Mix&truehy;in classes do not contain any attributes or methods of their own, they inherit all functionality from their base classes. The mix&truehy;in class CppGLinkClassD, for example, is defined as follows:</B.BODY
  50236. ><EM.EXAMPLE.MONO>Class CppGLinkClassD : {<CX5FX5FBULLET.EMPHASIS>CppGLinkClass OPLinkClass</CX5FX5FBULLET.EMPHASIS
  50237. >} {</EM.EXAMPLE.MONO
  50238. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  50239. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  50240. ></RBW-AUTOGEN
  50241. >In the derived OOPL model, a mix&truehy;in class is created for every Tcl class, even if it is not strictly necessary.</N.NOTE
  50242. ></LABEL
  50243. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50244. >Self promotion</L.LABEL
  50245. ><B.BODY>The self promoter is a special method that can be added to a derived class. It is called just after an object is created of the class from which the derived class is derived. Self promotion can thus be used to promote an object to an object of a derived class. Promote here, means extending a class’s functionality without having to redefine any methods.</B.BODY
  50246. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50247. >Syntax:</SL.SUBLABEL
  50248. ><B.BODY>The syntax of a self promotion is as follows:</B.BODY
  50249. ><EM.EXAMPLE.MONO>selfPromoter <CX5FX5FVARIABLE>superClass</CX5FX5FVARIABLE
  50250. > {this} {</EM.EXAMPLE.MONO
  50251. ><EM.EXAMPLE.MONO>   <CX5FX5FVARIABLE>subClass</CX5FX5FVARIABLE
  50252. > promote $this</EM.EXAMPLE.MONO
  50253. ><B.BODY>Example class (the dotted line indicates self promotion):</B.BODY
  50254. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00525.unk" origfile="pics/slfprmt.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  50255. ></FA.FIGURE.ANCHOR
  50256. ><B.BODY>Example code (<CX5FX5FFILE.NAME>Chimp.tcl</CX5FX5FFILE.NAME
  50257. >):</B.BODY
  50258. ><EM.EXAMPLE.MONO>Class Chimp : {Monkey} {</EM.EXAMPLE.MONO
  50259. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  50260. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  50261. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>selfPromoter Monkey {this} {</CX5FX5FBULLET.EMPHASIS
  50262. ></EM.EXAMPLE.MONO
  50263. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>   Chimp promote $this</CX5FX5FBULLET.EMPHASIS
  50264. ></EM.EXAMPLE.MONO
  50265. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>}</CX5FX5FBULLET.EMPHASIS
  50266. ></EM.EXAMPLE.MONO
  50267. ><B.BODY>In the example displayed above, an objects of the class Monkey will be returned if an object of the class Chimp is created.</B.BODY
  50268. ><B.BODY>For example:</B.BODY
  50269. ><EM.EXAMPLE.MONO># create a new object of the class Monkey</EM.EXAMPLE.MONO
  50270. ><EM.EXAMPLE.MONO>set obj [Monkey new]</EM.EXAMPLE.MONO
  50271. ><EM.EXAMPLE.MONO># find out the type of the object</EM.EXAMPLE.MONO
  50272. ><EM.EXAMPLE.MONO>$obj objType</EM.EXAMPLE.MONO
  50273. ><B.BODY>This will return the following:</B.BODY
  50274. ><EM.EXAMPLE.MONO>Chimp</EM.EXAMPLE.MONO
  50275. ></LABEL
  50276. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50277. >Self promotion and the derived OOPL model</L.LABEL
  50278. ><B.BODY>The self promotion mechanism is used in the derived OOPL model to add a <CX5FX5FINPUT>generate</CX5FX5FINPUT
  50279. > method to the OOPL model. By providing a derived OOPL model for every target language the same OOPL model can be used to generate code for different target languages.</B.BODY
  50280. ><B.BODY>Since mix&truehy;in classes have been created for every Tcl class in the derived OOPL model, every OP class that has a counterpart in the derived model will be promoted to the corresponding mixed&truehy;in class.</B.BODY
  50281. ><B.BODY>Example code:</B.BODY
  50282. ><EM.EXAMPLE.MONO>selfPromoter <CX5FX5FBULLET.EMPHASIS>OPLinkClass</CX5FX5FBULLET.EMPHASIS
  50283. > {this} {</EM.EXAMPLE.MONO
  50284. ><EM.EXAMPLE.MONO>        <CX5FX5FBULLET.EMPHASIS>CppGLinkClassD</CX5FX5FBULLET.EMPHASIS
  50285. > promote $this</EM.EXAMPLE.MONO
  50286. ><B.BODY>Now if a new object of the class OpLinkClass is created, the type of this object will be CppGLinkClassD. The class CppGLinkClassD has a <CX5FX5FINPUT>generate</CX5FX5FINPUT
  50287. > method in its inheritance tree, unlike OPLinkClass.</B.BODY
  50288. ></LABEL
  50289. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50290. >Checking and code generation</L.LABEL
  50291. ><B.BODY>The derived OOPL model is not only used for code generation, but also for (target language dependent) diagram checking. If it is used for checking, the mix&truehy;in classes must not be derived from OP classes, but from CM classes. CM classes are special classes used for checking.</B.BODY
  50292. ><B.BODY>An <CX5FX5FINPUT>if</CX5FX5FINPUT
  50293. > statement is used in the Tcl code to handle this twofold functionality in the derived OOPL model. In the case of the mix&truehy;in class CppGLinkClassD, for example, the following piece of Object Tcl code can be found:</B.BODY
  50294. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  50295. ><EWM.EXAMPLEW.MONO>if [isCommand CMLinkClass] {</EWM.EXAMPLEW.MONO
  50296. ><EWM.EXAMPLEW.MONO>        Class  CppGLinkClassD : {<CX5FX5FBULLET.EMPHASIS>CppGLinkClass CMLinkClass</CX5FX5FBULLET.EMPHASIS
  50297. >} {</EWM.EXAMPLEW.MONO
  50298. ><EWM.EXAMPLEW.MONO>        }</EWM.EXAMPLEW.MONO
  50299. ><EWM.EXAMPLEW.MONO>} else {</EWM.EXAMPLEW.MONO
  50300. ><EWM.EXAMPLEW.MONO>        Class CppGLinkClassD : {<CX5FX5FBULLET.EMPHASIS>CppGLinkClass OPLinkClass</CX5FX5FBULLET.EMPHASIS
  50301. >} {</EWM.EXAMPLEW.MONO
  50302. ><EWM.EXAMPLEW.MONO>        }</EWM.EXAMPLEW.MONO
  50303. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50304. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  50305. ></LABEL
  50306. ></SUBSECTION
  50307. ><SUBSECTION><SS.SUBSEC.HEAD>The Target Language Model</SS.SUBSEC.HEAD
  50308. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50309. >Introduction</L.LABEL
  50310. ><B.BODY>The target language model consists of a collection of Tcl classes containing functionality to:</B.BODY
  50311. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50312. ></RBW-AUTOGEN
  50313. ></RBW-MARKER
  50314. ><RBW-PARABODY>store information needed to generate code for a specific target language (C++, for example)</RBW-PARABODY
  50315. ></LB.LIST.BULLET
  50316. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50317. ></RBW-AUTOGEN
  50318. ></RBW-MARKER
  50319. ><RBW-PARABODY>convert this information into target language compliant ASCII text.</RBW-PARABODY
  50320. ></LB.LIST.BULLET
  50321. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50322. >Example</SL.SUBLABEL
  50323. ><B.BODY>The target language model stores a method’s name and parameters and puts the keyword <CX5FX5FINPUT>method</CX5FX5FINPUT
  50324. >, the class’s name and two colons before writing out the method’s name.</B.BODY
  50325. ></LABEL
  50326. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50327. >Why a target language model is required</L.LABEL
  50328. ><B.BODY>The classes in the derived OOPL model extend the classes in the OOPL method with generate methods. These generate methods build up the target language model. </B.BODY
  50329. ><B.BODY>The classes in the target language model, in turn, contain generate methods themselves. After the target language model has been built up, these generate methods are called by the CppGenerator class, thus generating the code in text sections.</B.BODY
  50330. ></LABEL
  50331. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50332. ><RBW-ANCHOR ID="36289"></RBW-ANCHOR
  50333. >Class hierarchy</L.LABEL
  50334. ><B.BODY>The most important classes of the Target Language Model are:</B.BODY
  50335. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Target Language Model Class</CELLHEADING
  50336. ></ENTRY
  50337. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Derived from:</CELLHEADING
  50338. ></ENTRY
  50339. ></RBW-ROW
  50340. ></THEAD
  50341. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppClass</CELLBODY
  50342. ></ENTRY
  50343. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppDefinition</CELLBODY
  50344. ></ENTRY
  50345. ></RBW-ROW
  50346. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppAttribute</CELLBODY
  50347. ></ENTRY
  50348. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppClFeature</CELLBODY
  50349. ></ENTRY
  50350. ></RBW-ROW
  50351. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppGenMethod</CELLBODY
  50352. ></ENTRY
  50353. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppMethod</CELLBODY
  50354. ></ENTRY
  50355. ></RBW-ROW
  50356. ></TBODY
  50357. ></TGROUP
  50358. ></RBW-TABLE
  50359. ></LABEL
  50360. ></SUBSECTION
  50361. ><SUBSECTION><SS.SUBSEC.HEAD>User&truehy;Defined Classes</SS.SUBSEC.HEAD
  50362. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50363. >Introduction</L.LABEL
  50364. ><B.BODY>If you want to customize the way C++ code is generated, you have to introduce one or more user&truehy;defined classes based on classes from the OOPL model.</B.BODY
  50365. ></LABEL
  50366. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50367. ><RBW-ANCHOR ID="42227"></RBW-ANCHOR
  50368. >Class hierarchy</L.LABEL
  50369. ><B.BODY>User&truehy;defined classes required for customization must, in fact, be derived from:</B.BODY
  50370. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50371. ></RBW-AUTOGEN
  50372. ></RBW-MARKER
  50373. ><RBW-PARABODY>the appropriate class in the OOPL model</RBW-PARABODY
  50374. ></LB.LIST.BULLET
  50375. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50376. ></RBW-AUTOGEN
  50377. ></RBW-MARKER
  50378. ><RBW-PARABODY>the corresponding class in the derived OOPL model</RBW-PARABODY
  50379. ></LB.LIST.BULLET
  50380. ><B.BODY>The class from the OOPL model is promoted to the user&truehy;defined class. </B.BODY
  50381. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50382. >Example hierarchy</SL.SUBLABEL
  50383. ><B.BODY>The class hierarchy is depicted in the following example for the OOPL model class OPClass.</B.BODY
  50384. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00526.unk" origfile="pics/cmz03.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  50385. ></FA.FIGURE.ANCHOR
  50386. ><B.BODY>OPClass originates from the OOPL model, CppGClass originates from the derived OOPL model and CppGClassD is a mix&truehy;in class.</B.BODY
  50387. ><B.BODY>See <RBW-XREF REFID="33265" TYPE="XREF-TEXTCOPY">The Derived OOPL Model</RBW-XREF
  50388. > for details on the (derived) OOPL model and mix&truehy;in classes.</B.BODY
  50389. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50390. >Example code</SL.SUBLABEL
  50391. ><B.BODY>From the example picture, you would expect a class definition like the following:</B.BODY
  50392. ><EM.EXAMPLE.MONO>Class MyClass : {CppGClassD} {</EM.EXAMPLE.MONO
  50393. ><EM.EXAMPLE.MONO>   method generate</EM.EXAMPLE.MONO
  50394. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  50395. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50396. ><EM.EXAMPLE.MONO>method MyClass::generate {this tgt} {</EM.EXAMPLE.MONO
  50397. ><EM.EXAMPLE.MONO>   ...</EM.EXAMPLE.MONO
  50398. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  50399. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50400. ><EM.EXAMPLE.MONO>selfPromoter OPClass {this} {</EM.EXAMPLE.MONO
  50401. ><EM.EXAMPLE.MONO>   MyClass promote $this</EM.EXAMPLE.MONO
  50402. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  50403. ><B.BODY>However, user&truehy;defined Tcl classes can also be derived from existing user&truehy;defined Tcl classes. This situation is depicted in the following picture.</B.BODY
  50404. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00527.unk" origfile="pics/cmz04.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  50405. ></FA.FIGURE.ANCHOR
  50406. ><B.BODY>Now how do you know from which class(es) in the derived OOPL model the new user&truehy;defined class must be derived? </B.BODY
  50407. ><B.BODY>Actually, you don’t need to know. If you are using the Tcl procedure <CX5FX5FOBJECT.NAME>customizeOOPLModel</CX5FX5FOBJECT.NAME
  50408. >, you only need to know which class from the OOPL model you want to promote to your user&truehy;defined class.</B.BODY
  50409. ><B.BODY>If this is the class OPClass for example, and your user&truehy;defined class is MyClass, then the class definition reads as follows:</B.BODY
  50410. ><EWM.EXAMPLEW.MONO>require "cgcustom.tcl"</EWM.EXAMPLEW.MONO
  50411. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50412. ><EWM.EXAMPLEW.MONO>Class MyClass : <CX5FX5FBULLET.EMPHASIS>[customizeOOPLModel OPClass MyClass]</CX5FX5FBULLET.EMPHASIS
  50413. > {</EWM.EXAMPLEW.MONO
  50414. ><EWM.EXAMPLEW.MONO>   method generate</EWM.EXAMPLEW.MONO
  50415. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50416. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50417. ><EWM.EXAMPLEW.MONO>method MyClass::generate {this tgt} {</EWM.EXAMPLEW.MONO
  50418. ><EWM.EXAMPLEW.MONO>   ...</EWM.EXAMPLEW.MONO
  50419. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50420. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50421. ><EWM.EXAMPLEW.MONO>selfPromoter OPClass {this} {</EWM.EXAMPLEW.MONO
  50422. ><EWM.EXAMPLEW.MONO>   MyClass promote $this</EWM.EXAMPLEW.MONO
  50423. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50424. ><B.BODY>If your user&truehy;defined class were HisClass, for example, the class definition would be:</B.BODY
  50425. ><EWM.EXAMPLEW.MONO>require "cgcustom.tcl"</EWM.EXAMPLEW.MONO
  50426. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50427. ><EWM.EXAMPLEW.MONO>Class HisClass : <CX5FX5FBULLET.EMPHASIS>[customizeOOPLModel OPClass HisClass]</CX5FX5FBULLET.EMPHASIS
  50428. > {</EWM.EXAMPLEW.MONO
  50429. ><EWM.EXAMPLEW.MONO>   method generate</EWM.EXAMPLEW.MONO
  50430. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50431. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50432. ><EWM.EXAMPLEW.MONO>method HisClass::generate {this tgt} {</EWM.EXAMPLEW.MONO
  50433. ><EWM.EXAMPLEW.MONO>   ...</EWM.EXAMPLEW.MONO
  50434. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50435. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50436. ><EWM.EXAMPLEW.MONO>selfPromoter OPClass {this} {</EWM.EXAMPLEW.MONO
  50437. ><EWM.EXAMPLEW.MONO>   HisClass promote $this</EWM.EXAMPLEW.MONO
  50438. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50439. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  50440. ></RBW-AUTOGEN
  50441. >Refer to <RBW-XREF REFID="30393" TYPE="XREF-TEXTCOPY">m_import.tcl</RBW-XREF
  50442. > for an example of an implementation of the generate method.</T.TIP
  50443. ></LABEL
  50444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50445. >The Tcl procedure customizeOOPLModel</L.LABEL
  50446. ><B.BODY>The Tcl procedure <CX5FX5FOBJECT.NAME>customizeOOPLModel</CX5FX5FOBJECT.NAME
  50447. > is stored in the file <CX5FX5FFILE.NAME>cgcustom.tcl</CX5FX5FFILE.NAME
  50448. >, which can be found in the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50449. > directory directly under the <CX5FX5FVARIABLE>M4 home</CX5FX5FVARIABLE
  50450. > directory.</B.BODY
  50451. ><B.BODY><CX5FX5FOBJECT.NAME>customizeOOPLModel</CX5FX5FOBJECT.NAME
  50452. > takes care of positioning the user&truehy;defined class in the current class hierarchy. It requires two arguments: </B.BODY
  50453. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50454. ></RBW-AUTOGEN
  50455. ></RBW-MARKER
  50456. ><RBW-PARABODY>the name of the customized class from the OOPL model (OPClass)</RBW-PARABODY
  50457. ></LB.LIST.BULLET
  50458. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50459. ></RBW-AUTOGEN
  50460. ></RBW-MARKER
  50461. ><RBW-PARABODY>the user&truehy;defined class (MyClass)</RBW-PARABODY
  50462. ></LB.LIST.BULLET
  50463. ><B.BODY><CX5FX5FOBJECT.NAME>customizeOOPLModel</CX5FX5FOBJECT.NAME
  50464. > also defines the following global variable containing the name of the actual superclass:</B.BODY
  50465. ><EM.EXAMPLE.MONO>userDefinedClassName:: super</EM.EXAMPLE.MONO
  50466. ></LABEL
  50467. ></SUBSECTION
  50468. ></SECTION
  50469. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29462"></RBW-ANCHOR
  50470. >How to Customize the Code Generation</S.SECTION.HEAD
  50471. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50472. >Introduction</L.LABEL
  50473. ><B.BODY>The code generation in ObjectTeam is all Tcl based. Tcl code is interpreted rather than compiled, which makes the code generation process highly customizable. </B.BODY
  50474. ><B.BODY>Moreover, the use of the object&truehy;oriented extension made to Tcl (Object Tcl) allows you to make changes to the code generation process and reuse default functionality where necessary.</B.BODY
  50475. ><B.BODY>The use of ObjectTeam modules, in conclusion, facilitates managing customizations.</B.BODY
  50476. ></LABEL
  50477. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50478. >In this section</L.LABEL
  50479. ><B.BODY>This section discusses two ways of customizing the code generation process:</B.BODY
  50480. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  50481. ></ENTRY
  50482. ></RBW-ROW
  50483. ></THEAD
  50484. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10241" TYPE="XREF-TEXTCOPY">Making Simple Customizations&rbwtab;5–14</RBW-XREF
  50485. ></SB.SECTION.BLOCK.TABLE
  50486. ></ENTRY
  50487. ></RBW-ROW
  50488. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31773" TYPE="XREF-TEXTCOPY">Using Modules to Store Customizations&rbwtab;5–17</RBW-XREF
  50489. ></SB.SECTION.BLOCK.TABLE
  50490. ></ENTRY
  50491. ></RBW-ROW
  50492. ></TBODY
  50493. ></TGROUP
  50494. ></RBW-TABLE
  50495. ></LABEL
  50496. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10241"></RBW-ANCHOR
  50497. >Making Simple Customizations</SS.SUBSEC.HEAD
  50498. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50499. >Simple customization</L.LABEL
  50500. ><B.BODY>Simple customizations are customizations that can be implemented quickly and easily in a single customization file, without having to create separate modules. Bear in mind, though, that simple customizations are much harder to maintain than customizations that are stored in separate modules.</B.BODY
  50501. ></LABEL
  50502. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50503. >How is code generation started</L.LABEL
  50504. ><B.BODY>When a user of ObjectTeam activates the code generation by selecting Utilities | Generate C++ on system level in the Implementation phase, the Object Tcl interpreter <CX5FX5FFILE.NAME>otsh</CX5FX5FFILE.NAME
  50505. > is started with a couple of arguments. </B.BODY
  50506. ><B.BODY>For example:</B.BODY
  50507. ><EM.EXAMPLE.MONO><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  50508. >/bin/otsh &truehy;S oopl &truehy;f import.tcl &truehy;&truehy; &truehy;new</EM.EXAMPLE.MONO
  50509. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  50510. ></RBW-AUTOGEN
  50511. >The first line that is sent to the Monitoring Window shows the exact <CX5FX5FFILE.NAME>otsh</CX5FX5FFILE.NAME
  50512. > command.</T.TIP
  50513. ><B.BODY>The file name behind the argument <CX5FX5FINPUT>&truehy;f </CX5FX5FINPUT
  50514. >specifies the Tcl file that is intepreted first: <CX5FX5FFILE.NAME>import.tcl</CX5FX5FFILE.NAME
  50515. > in this case. This file activates other (language&truehy;dependent and language&truehy;independent) Tcl files, which, in turn, activate other Tcl files, and so on.</B.BODY
  50516. ></LABEL
  50517. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50518. >Customizing the code generation</L.LABEL
  50519. ><B.BODY>The language&truehy;dependent Tcl files used during code generation are stored in the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50520. > directory of the corresponding module (<CX5FX5FOBJECT.NAME>cplusplus</CX5FX5FOBJECT.NAME
  50521. > for example). These files are interpreted at some point by otsh. </B.BODY
  50522. ><B.BODY>If you know which method of which class you want to change or add, you can include the new or changed method implementation in the following customization file:</B.BODY
  50523. ><EM.EXAMPLE.MONO><CX5FX5FFILE.NAME>u_import.tcl</CX5FX5FFILE.NAME
  50524. ></EM.EXAMPLE.MONO
  50525. ><B.BODY>otsh checks on the existence of this file and sources it if it finds it.</B.BODY
  50526. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  50527. ></RBW-AUTOGEN
  50528. ></RBW-MARKER
  50529. ><RBW-PARABODY>To make a simple customization</RBW-PARABODY
  50530. ></P.PROCEDURE
  50531. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  50532. ></RBW-AUTOGEN
  50533. ></RBW-MARKER
  50534. ><RBW-PARABODY>Create an empty customization file <CX5FX5FFILE.NAME>u_import.tcl</CX5FX5FFILE.NAME
  50535. > on the customization level of your choice.</RBW-PARABODY
  50536. ></LN.LIST.NUM
  50537. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  50538. ></RBW-AUTOGEN
  50539. >Open this file if it already exists on the customization level of your choice.</N2.NOTE.2
  50540. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  50541. ></RBW-AUTOGEN
  50542. ></RBW-MARKER
  50543. ><RBW-PARABODY>Locate from the default code generation files the Tcl method you want to overload.</RBW-PARABODY
  50544. ></LN.LIST.NUM
  50545. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  50546. ></RBW-AUTOGEN
  50547. >Most of the functionality regarding the lay&truehy;out of code can be found in the Tcl file that contains the target language model, <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  50548. >/<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  50549. >/<CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  50550. >/<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50551. >/<CX5FX5FFILE.NAME>cppgrammar.tcl</CX5FX5FFILE.NAME
  50552. > </T2.TIP.2
  50553. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  50554. ></RBW-AUTOGEN
  50555. ></RBW-MARKER
  50556. ><RBW-PARABODY>Copy the method implementation and paste it into the <CX5FX5FFILE.NAME>u_import.tcl</CX5FX5FFILE.NAME
  50557. > file.</RBW-PARABODY
  50558. ></LN.LIST.NUM
  50559. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  50560. ></RBW-AUTOGEN
  50561. ></RBW-MARKER
  50562. ><RBW-PARABODY>Edit the method implementation and save the <CX5FX5FFILE.NAME>u_import.tcl</CX5FX5FFILE.NAME
  50563. > file.</RBW-PARABODY
  50564. ></LN.LIST.NUM
  50565. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  50566. ></RBW-AUTOGEN
  50567. >Add a line similar to the following to the top of the <CX5FX5FFILE.NAME>u_import.tcl</CX5FX5FFILE.NAME
  50568. > file. This makes it easier to check later whether the customization file is really evaluated by ObjectTeam:</T2.TIP.2
  50569. ><EM.EXAMPLE.MONO>puts "*** u_import.tcl loaded ***"</EM.EXAMPLE.MONO
  50570. ><B.BODY>If you now generate code, the customized method will be called instead of the default one. </B.BODY
  50571. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  50572. ></RBW-AUTOGEN
  50573. >The new method will only be called for newly generated classes or classes that have changed since the last time code was generated. Existing source files whose corresponding classes have not changed will not be regenerated.</W.WARNING
  50574. ></LABEL
  50575. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50576. >Example</L.LABEL
  50577. ><B.BODY>The method CppMethod::genRegenCode adds, among other things, a standard comment line to the (empty) body of a user&truehy;defined method. For example:</B.BODY
  50578. ><B.BODY><CX5FX5FFILE.NAME>Track.cpp</CX5FX5FFILE.NAME
  50579. > (generated file):</B.BODY
  50580. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  50581. ><EM.EXAMPLE.MONO>void Track::continuesTo(int nextCoordinate)</EM.EXAMPLE.MONO
  50582. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  50583. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    // !! Implement this function !!</CX5FX5FBULLET.EMPHASIS
  50584. ></EM.EXAMPLE.MONO
  50585. ><EM.EXAMPLE.MONO>    int continuesTo_is_not_yet_implemented;</EM.EXAMPLE.MONO
  50586. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  50587. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  50588. ><B.BODY>This default method can be found in the file <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  50589. >/<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  50590. >/<CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  50591. >/<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50592. >/<CX5FX5FFILE.NAME>cppgrammar.tcl</CX5FX5FFILE.NAME
  50593. >. </B.BODY
  50594. ><B.BODY>If you want to change the exclamation marks in the comment line into something else, hatch signs (#), for example, you must copy the default method implementation CppMethod::genRegenCode from <CX5FX5FFILE.NAME>cppgrammar.tcl</CX5FX5FFILE.NAME
  50595. > to a <CX5FX5FFILE.NAME>u_import.tcl </CX5FX5FFILE.NAME
  50596. >file<CX5FX5FFILE.NAME> </CX5FX5FFILE.NAME
  50597. >and change it accordingly:</B.BODY
  50598. ><B.BODY><CX5FX5FFILE.NAME>u_import.tcl</CX5FX5FFILE.NAME
  50599. > (user&truehy;defined file):</B.BODY
  50600. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>puts "*** u_import.tcl loaded ***"</CX5FX5FBULLET.EMPHASIS
  50601. ></EWM.EXAMPLEW.MONO
  50602. ><EWM.EXAMPLEW.MONO> </EWM.EXAMPLEW.MONO
  50603. ><EWM.EXAMPLEW.MONO>method CppMethod::genRegenCode {this section} {</EWM.EXAMPLEW.MONO
  50604. ><EWM.EXAMPLEW.MONO>        if {[[$this regenSet] empty] && ([$this name] != "")} {</EWM.EXAMPLEW.MONO
  50605. ><EWM.EXAMPLEW.MONO>                $section append "<CX5FX5FBULLET.EMPHASIS>## Implement this function \n"</CX5FX5FBULLET.EMPHASIS
  50606. ></EWM.EXAMPLEW.MONO
  50607. ><EWM.EXAMPLEW.MONO>                set name [$this name]</EWM.EXAMPLEW.MONO
  50608. ><EWM.EXAMPLEW.MONO>                if [string match operator* $name] {</EWM.EXAMPLEW.MONO
  50609. ><EWM.EXAMPLEW.MONO>                        set name "operator"</EWM.EXAMPLEW.MONO
  50610. ><EWM.EXAMPLEW.MONO>                }</EWM.EXAMPLEW.MONO
  50611. ><EWM.EXAMPLEW.MONO>                $section append "int ${name}_is_not_yet_implemented;\n"</EWM.EXAMPLEW.MONO
  50612. ><EWM.EXAMPLEW.MONO>        } else {</EWM.EXAMPLEW.MONO
  50613. ><EWM.EXAMPLEW.MONO>                $section indent &truehy;</EWM.EXAMPLEW.MONO
  50614. ><EWM.EXAMPLEW.MONO>                [$this regenSet] foreach regen {</EWM.EXAMPLEW.MONO
  50615. ><EWM.EXAMPLEW.MONO>                        $section appendSect $regen</EWM.EXAMPLEW.MONO
  50616. ><EWM.EXAMPLEW.MONO>                }</EWM.EXAMPLEW.MONO
  50617. ><EWM.EXAMPLEW.MONO>                $section indent +</EWM.EXAMPLEW.MONO
  50618. ><EWM.EXAMPLEW.MONO>        }</EWM.EXAMPLEW.MONO
  50619. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50620. ><B.BODY>During code generation, the method CppMethod::genRegenCode from the <CX5FX5FFILE.NAME>u_import.tcl</CX5FX5FFILE.NAME
  50621. > file will take precedence over the same method from the file <CX5FX5FFILE.NAME>cppgrammar.tcl</CX5FX5FFILE.NAME
  50622. >, and hatch signs instead of exclamation marks will be generated:</B.BODY
  50623. ><B.BODY><CX5FX5FFILE.NAME>Track.cpp</CX5FX5FFILE.NAME
  50624. > (generated file):</B.BODY
  50625. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  50626. ><EM.EXAMPLE.MONO>void Track::continuesTo(int nextCoordinate)</EM.EXAMPLE.MONO
  50627. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  50628. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    // ## Implement this function !!</CX5FX5FBULLET.EMPHASIS
  50629. ></EM.EXAMPLE.MONO
  50630. ><EM.EXAMPLE.MONO>    int continuesTo_is_not_yet_implemented;</EM.EXAMPLE.MONO
  50631. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  50632. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  50633. ></LABEL
  50634. ></SUBSECTION
  50635. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31773"></RBW-ANCHOR
  50636. >Using Modules to Store Customizations</SS.SUBSEC.HEAD
  50637. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50638. >Introduction</L.LABEL
  50639. ><B.BODY>Advanced code generation customizations are best stored in separate user&truehy;defined ObjectTeam modules. The Object Tcl code needed to extend or redefine the default code generation is then stored in such a module, which can be turned on or off on demand.</B.BODY
  50640. ></LABEL
  50641. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50642. >Creating a module</L.LABEL
  50643. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  50644. ></RBW-AUTOGEN
  50645. ></RBW-MARKER
  50646. ><RBW-PARABODY>These are the steps you need to take in order to create a user&truehy;defined module:</RBW-PARABODY
  50647. ></P.PROCEDURE
  50648. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  50649. ></RBW-AUTOGEN
  50650. ></RBW-MARKER
  50651. ><RBW-PARABODY>Create a new module directory.</RBW-PARABODY
  50652. ></LN.LIST.NUM
  50653. ><LT.LIST.TEXT>This directory can be created anywhere in the file system, as long as if it is accessible to ObjectTeam. The directory name is not important.</LT.LIST.TEXT
  50654. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  50655. ></RBW-AUTOGEN
  50656. ></RBW-MARKER
  50657. ><RBW-PARABODY>Create the following file in the new module directory:</RBW-PARABODY
  50658. ></LN.LIST.NUM
  50659. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  50660. ></RBW-MARKER
  50661. ><RBW-PARABODY><CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  50662. ></RBW-PARABODY
  50663. ></LB2.LIST.BULLET.2
  50664. ><LT.LIST.TEXT>See <RBW-XREF REFID="34289" TYPE="XREF-TEXTCOPY">properties.properties</RBW-XREF
  50665. > for details on the contents and structure of this file.</LT.LIST.TEXT
  50666. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  50667. ></RBW-AUTOGEN
  50668. ></RBW-MARKER
  50669. ><RBW-PARABODY>Create the following directories in the new module directory:</RBW-PARABODY
  50670. ></LN.LIST.NUM
  50671. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  50672. ></RBW-MARKER
  50673. ><RBW-PARABODY><CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50674. > </RBW-PARABODY
  50675. ></LB2.LIST.BULLET.2
  50676. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  50677. ></RBW-MARKER
  50678. ><RBW-PARABODY><CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  50679. > </RBW-PARABODY
  50680. ></LB2.LIST.BULLET.2
  50681. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  50682. ></RBW-AUTOGEN
  50683. ></RBW-MARKER
  50684. ><RBW-PARABODY>Create the following file in the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50685. > directory:</RBW-PARABODY
  50686. ></LN.LIST.NUM
  50687. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  50688. ></RBW-MARKER
  50689. ><RBW-PARABODY><CX5FX5FFILE.NAME>m_import.tcl</CX5FX5FFILE.NAME
  50690. ></RBW-PARABODY
  50691. ></LB2.LIST.BULLET.2
  50692. ><LT.LIST.TEXT>This file contains the definition of the user&truehy;defined Object Tcl class(es). </LT.LIST.TEXT
  50693. ><LT.LIST.TEXT>See <RBW-XREF REFID="42227" TYPE="XREF-TEXTCOPY">Class hierarchy</RBW-XREF
  50694. > for details on the contents and structure of this file.</LT.LIST.TEXT
  50695. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  50696. ></RBW-AUTOGEN
  50697. ></RBW-MARKER
  50698. ><RBW-PARABODY>Create, if necessary, the following customization files in the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  50699. > directory:</RBW-PARABODY
  50700. ></LN.LIST.NUM
  50701. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="145p"><COLSPEC COLNAME="2" COLWIDTH="157p"><COLSPEC COLNAME="3" COLWIDTH="129p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Customization file</CELLHEADING
  50702. ></ENTRY
  50703. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Customization of </CELLHEADING
  50704. ></ENTRY
  50705. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See for details</CELLHEADING
  50706. ></ENTRY
  50707. ></RBW-ROW
  50708. ></THEAD
  50709. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>propdefs.propdefs</CELLBODY
  50710. ></ENTRY
  50711. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>item, component and file properties</CELLBODY
  50712. ></ENTRY
  50713. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  50714. ><CX5FX5FTITLE></CX5FX5FTITLE
  50715. ></CELLBODY
  50716. ></ENTRY
  50717. ></RBW-ROW
  50718. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>proplocs.proplocs</CELLBODY
  50719. ></ENTRY
  50720. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>item, component and file properties</CELLBODY
  50721. ></ENTRY
  50722. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  50723. ><CX5FX5FTITLE></CX5FX5FTITLE
  50724. ></CELLBODY
  50725. ></ENTRY
  50726. ></RBW-ROW
  50727. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>standtypes.standtypes</CELLBODY
  50728. ></ENTRY
  50729. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>standard types</CELLBODY
  50730. ></ENTRY
  50731. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="28522" TYPE="XREF-TEXTCOPY">Customizing Types</RBW-XREF
  50732. ></CELLBODY
  50733. ></ENTRY
  50734. ></RBW-ROW
  50735. ></TBODY
  50736. ></TGROUP
  50737. ></RBW-TABLE
  50738. ><LT.LIST.TEXT>With these customization files you can extend the customization files residing at a higher level in the repository. As they are read incrementally, you only have to include new entries in these files.</LT.LIST.TEXT
  50739. ></LABEL
  50740. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50741. >Activating a module</L.LABEL
  50742. ><B.BODY>To activate a user&truehy;defined module, add it to the customization file <CX5FX5FFILE.NAME>modules.modules</CX5FX5FFILE.NAME
  50743. > on the appropriate customization level and turn it on. You can do this using the Module Customization Editor.</B.BODY
  50744. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  50745. ><CX5FX5FTITLE></CX5FX5FTITLE
  50746. > for details on module customization.</B.BODY
  50747. ><B.BODY>Before testing the new module, move the Browser to Corporate level. The new module will be read if you move down to the appropriate level.</B.BODY
  50748. ></LABEL
  50749. ></SUBSECTION
  50750. ><SUBSECTION><SS.SUBSEC.HEAD>Example Customization</SS.SUBSEC.HEAD
  50751. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50752. >Introduction</L.LABEL
  50753. ><B.BODY>In the following customization example, a new class property Singleton Class is introduced. Classes for which this property is turned on will be generated into singleton classes. </B.BODY
  50754. ><B.BODY>A singleton class is a class that can only have one instance. A global point of access is provided to singleton classes.</B.BODY
  50755. ></LABEL
  50756. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50757. >Result</L.LABEL
  50758. ><B.BODY>A singleton class differs from a regular class in that:</B.BODY
  50759. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50760. ></RBW-AUTOGEN
  50761. ></RBW-MARKER
  50762. ><RBW-PARABODY>the access level of its constructor is <CX5FX5FOBJECT.NAME>private</CX5FX5FOBJECT.NAME
  50763. ></RBW-PARABODY
  50764. ></LB.LIST.BULLET
  50765. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50766. ></RBW-AUTOGEN
  50767. ></RBW-MARKER
  50768. ><RBW-PARABODY>it does have the following special method:</RBW-PARABODY
  50769. ></LB.LIST.BULLET
  50770. ><EM.EXAMPLE.MONO>// Special methods</EM.EXAMPLE.MONO
  50771. ><EM.EXAMPLE.MONO>static <CX5FX5FVARIABLE>className</CX5FX5FVARIABLE
  50772. >* instance();</EM.EXAMPLE.MONO
  50773. ><LT.LIST.TEXT>This method is generated as inline method and is therefore stored in the generated header file.</LT.LIST.TEXT
  50774. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  50775. ></RBW-AUTOGEN
  50776. ></RBW-MARKER
  50777. ><RBW-PARABODY>it does have the following special (static) attribute:</RBW-PARABODY
  50778. ></LB.LIST.BULLET
  50779. ><EM.EXAMPLE.MONO>// Special attribute</EM.EXAMPLE.MONO
  50780. ><EM.EXAMPLE.MONO>static Author* obj /* = 0 */;</EM.EXAMPLE.MONO
  50781. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50782. >Example</SL.SUBLABEL
  50783. ><B.BODY>Here is an example of the header file of a singleton class Author:</B.BODY
  50784. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  50785. ><EM.EXAMPLE.MONO>// File          : Author.hxx</EM.EXAMPLE.MONO
  50786. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  50787. ><EM.EXAMPLE.MONO>class Author {</EM.EXAMPLE.MONO
  50788. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50789. ><EM.EXAMPLE.MONO>public:</EM.EXAMPLE.MONO
  50790. ><EM.EXAMPLE.MONO>    // Default constructor/destructor</EM.EXAMPLE.MONO
  50791. ><EM.EXAMPLE.MONO>    ~Author();</EM.EXAMPLE.MONO
  50792. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  50793. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    // Special methods</CX5FX5FBULLET.EMPHASIS
  50794. ></EM.EXAMPLE.MONO
  50795. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    static Author* instance();</CX5FX5FBULLET.EMPHASIS
  50796. ></EM.EXAMPLE.MONO
  50797. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50798. ><EM.EXAMPLE.MONO>protected:</EM.EXAMPLE.MONO
  50799. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  50800. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>private:</CX5FX5FBULLET.EMPHASIS
  50801. ></EM.EXAMPLE.MONO
  50802. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    // Default constructor/destructor</CX5FX5FBULLET.EMPHASIS
  50803. ></EM.EXAMPLE.MONO
  50804. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    Author();</CX5FX5FBULLET.EMPHASIS
  50805. ></EM.EXAMPLE.MONO
  50806. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  50807. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50808. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    // Special attribute</CX5FX5FBULLET.EMPHASIS
  50809. ></EM.EXAMPLE.MONO
  50810. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    static Author* obj /* = 0 */;</CX5FX5FBULLET.EMPHASIS
  50811. ></EM.EXAMPLE.MONO
  50812. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50813. ><EM.EXAMPLE.MONO>    // Association attribute storage</EM.EXAMPLE.MONO
  50814. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  50815. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50816. ><EM.EXAMPLE.MONO>// Do not delete this line &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  50817. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  50818. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>inline Author* Author::instance()</CX5FX5FBULLET.EMPHASIS
  50819. ></EM.EXAMPLE.MONO
  50820. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>{</CX5FX5FBULLET.EMPHASIS
  50821. ></EM.EXAMPLE.MONO
  50822. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    if (obj==0) {</CX5FX5FBULLET.EMPHASIS
  50823. ></EM.EXAMPLE.MONO
  50824. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>        obj=new Author();</CX5FX5FBULLET.EMPHASIS
  50825. ></EM.EXAMPLE.MONO
  50826. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    }</CX5FX5FBULLET.EMPHASIS
  50827. ></EM.EXAMPLE.MONO
  50828. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    return obj;</CX5FX5FBULLET.EMPHASIS
  50829. ></EM.EXAMPLE.MONO
  50830. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>}</CX5FX5FBULLET.EMPHASIS
  50831. ></EM.EXAMPLE.MONO
  50832. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50833. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50834. ><EM.EXAMPLE.MONO>#endif // AUTHOR_HXX</EM.EXAMPLE.MONO
  50835. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  50836. ></LABEL
  50837. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50838. >Files</L.LABEL
  50839. ><B.BODY>The following files and directories are needed for this customization:</B.BODY
  50840. ><B.BODY><CX5FX5FVARIABLE>moduleDirectory</CX5FX5FVARIABLE
  50841. >\<CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  50842. ></B.BODY
  50843. ><B.BODY><CX5FX5FVARIABLE>moduleDirectory</CX5FX5FVARIABLE
  50844. >\<CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  50845. >\<CX5FX5FFILE.NAME>propdefs.propdefs</CX5FX5FFILE.NAME
  50846. ></B.BODY
  50847. ><B.BODY><CX5FX5FVARIABLE>moduleDirectory</CX5FX5FVARIABLE
  50848. >\<CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  50849. >\<CX5FX5FFILE.NAME>proplocs.proplocs</CX5FX5FFILE.NAME
  50850. ></B.BODY
  50851. ><B.BODY><CX5FX5FVARIABLE>moduleDirectory</CX5FX5FVARIABLE
  50852. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50853. >\<CX5FX5FFILE.NAME>m_import.tcl</CX5FX5FFILE.NAME
  50854. ></B.BODY
  50855. ><B.BODY>The name of the <CX5FX5FVARIABLE>moduleDirectory</CX5FX5FVARIABLE
  50856. > in this example is <CX5FX5FFILE.NAME>C</CX5FX5FFILE.NAME
  50857. >:\<CX5FX5FFILE.NAME>MyModules</CX5FX5FFILE.NAME
  50858. >\<CX5FX5FFILE.NAME>cpp&truehy;singleton</CX5FX5FFILE.NAME
  50859. >.</B.BODY
  50860. ></LABEL
  50861. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50862. ><RBW-ANCHOR ID="34289"></RBW-ANCHOR
  50863. >properties.properties</L.LABEL
  50864. ><B.BODY>This file contains some information on the module itself. For this example it looks like this:</B.BODY
  50865. ><EM.EXAMPLE.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EM.EXAMPLE.MONO
  50866. ><EM.EXAMPLE.MONO># Property Name    | Property Value</EM.EXAMPLE.MONO
  50867. ><EM.EXAMPLE.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EM.EXAMPLE.MONO
  50868. ><EM.EXAMPLE.MONO>name               | cpp&truehy;singleton</EM.EXAMPLE.MONO
  50869. ><EM.EXAMPLE.MONO>version            | 1.0</EM.EXAMPLE.MONO
  50870. ><EM.EXAMPLE.MONO>longName           | C++ singleton</EM.EXAMPLE.MONO
  50871. ><EM.EXAMPLE.MONO>requiredModules    | cplusplus </EM.EXAMPLE.MONO
  50872. ><EM.EXAMPLE.MONO>type               | customization</EM.EXAMPLE.MONO
  50873. ></LABEL
  50874. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50875. >propdefs.propdefs and proplocs.proplocs</L.LABEL
  50876. ><B.BODY>Item, component and file properties are stored in two customization files:</B.BODY
  50877. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="300p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Customization file</CELLHEADING
  50878. ></ENTRY
  50879. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  50880. ></ENTRY
  50881. ></RBW-ROW
  50882. ></THEAD
  50883. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>propdefs.propdefs</CELLBODY
  50884. ></ENTRY
  50885. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>property definition</CELLBODY
  50886. ></ENTRY
  50887. ></RBW-ROW
  50888. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>proplocs.proplocs</CELLBODY
  50889. ></ENTRY
  50890. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>property location</CELLBODY
  50891. ></ENTRY
  50892. ></RBW-ROW
  50893. ></TBODY
  50894. ></TGROUP
  50895. ></RBW-TABLE
  50896. ><B.BODY>These files exist on Corporate level and can be extended on every lower repository level. As these files are read incrementally, you only have to include new definition and location lines in the module files.</B.BODY
  50897. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50898. >propdefs.propdefs</SL.SUBLABEL
  50899. ><B.BODY>Include the following line:</B.BODY
  50900. ><EWM.EXAMPLEW.MONO># Prop Name    | Long Name       | GUI Class   | attributes</EWM.EXAMPLEW.MONO
  50901. ><EWM.EXAMPLEW.MONO>singletonClass | Singleton Class | CheckButton | &truehy;state 0</EWM.EXAMPLEW.MONO
  50902. ><B.BODY>This line defines the property <CX5FX5FEMPHASIS>singletonClass</CX5FX5FEMPHASIS
  50903. > as a check button which is turned off by default. The name of the property in the dialog box is <CX5FX5FEMPHASIS>Singleton Class</CX5FX5FEMPHASIS
  50904. > (long name).</B.BODY
  50905. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50906. >proplocs.proplocs</SL.SUBLABEL
  50907. ><B.BODY>Include the following lines:</B.BODY
  50908. ><EWM.EXAMPLEW.MONO>singletonClass  | Item  | cl    | Analysis      | cad   | cad_class</EWM.EXAMPLEW.MONO
  50909. ><EWM.EXAMPLEW.MONO>singletonClass  | Item  | cl    | SystemDesign  | cad   | cad_class</EWM.EXAMPLEW.MONO
  50910. ><EWM.EXAMPLEW.MONO>singletonClass  | Item  | cl    | ObjectDesign  | cad   | cad_class</EWM.EXAMPLEW.MONO
  50911. ><EWM.EXAMPLEW.MONO>singletonClass  | Item  | cl    | Analysis      | cad   | cad_container</EWM.EXAMPLEW.MONO
  50912. ><EWM.EXAMPLEW.MONO>singletonClass  | Item  | cl    | SystemDesign  | cad   | cad_container</EWM.EXAMPLEW.MONO
  50913. ><EWM.EXAMPLEW.MONO>singletonClass  | Item  | cl    | ObjectDesign  | cad   | cad_container</EWM.EXAMPLEW.MONO
  50914. ><B.BODY>These lines specify the property <CX5FX5FOBJECT.NAME>singletonClass</CX5FX5FOBJECT.NAME
  50915. > as item property for classes and container classes in CDs for the phases Analysis, System Design and Object Design.</B.BODY
  50916. ><B.BODY>If the module containing these customization files is active, the Edit Properties dialog box for classes will have an extra property Singleton Class.</B.BODY
  50917. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00528.unk" origfile="pics/sgltondb.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  50918. ></FA.FIGURE.ANCHOR
  50919. ></LABEL
  50920. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  50921. ><RBW-ANCHOR ID="30393"></RBW-ANCHOR
  50922. >m_import.tcl</L.LABEL
  50923. ><B.BODY>The name of the user&truehy;defined class in this example is Singleton Cust. This class is derived from the OOPL model class OPClass and contains only one method: generate. </B.BODY
  50924. ><B.BODY>The class OPClass is promoted to the user&truehy;defined SingletonCust using self promotion.</B.BODY
  50925. ><B.BODY>See <RBW-XREF REFID="36289" TYPE="XREF-TEXTCOPY">Class hierarchy</RBW-XREF
  50926. > for details on the OOPL model and self promotion.</B.BODY
  50927. ><B.BODY>The required Object Tcl code, which is displayed below, is stored in the file <CX5FX5FFILE.NAME>m_import.tcl</CX5FX5FFILE.NAME
  50928. > in the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  50929. > directory of the module cpp&truehy;singleton.</B.BODY
  50930. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  50931. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  50932. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  50933. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  50934. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  50935. ><EWM.EXAMPLEW.MONO>#       File            : m_import.tcl</EWM.EXAMPLEW.MONO
  50936. ><EWM.EXAMPLEW.MONO>#       Description     : Singleton classes example</EWM.EXAMPLEW.MONO
  50937. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  50938. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  50939. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50940. ><EWM.EXAMPLEW.MONO>puts "*** cpp&truehy;singleton loaded ***"</EWM.EXAMPLEW.MONO
  50941. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50942. ><EWM.EXAMPLEW.MONO>require "cgcustom.tcl"</EWM.EXAMPLEW.MONO
  50943. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50944. ><EWM.EXAMPLEW.MONO>Class SingletonCust : [customizeOOPLModel OPClass SingletonCust] {</EWM.EXAMPLEW.MONO
  50945. ><EWM.EXAMPLEW.MONO>    method generate</EWM.EXAMPLEW.MONO
  50946. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50947. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50948. ><EWM.EXAMPLEW.MONO>method SingletonCust::generate {this tgt} {</EWM.EXAMPLEW.MONO
  50949. ><EWM.EXAMPLEW.MONO>    global SingletonCust::super</EWM.EXAMPLEW.MONO
  50950. ><EWM.EXAMPLEW.MONO>    set cl [ $tgt findDefinition [$this getName] ]</EWM.EXAMPLEW.MONO
  50951. ><EWM.EXAMPLEW.MONO>    if { $cl != "" } {</EWM.EXAMPLEW.MONO
  50952. ><EWM.EXAMPLEW.MONO>        set cl [$this ${SingletonCust::super}::generate $tgt]</EWM.EXAMPLEW.MONO
  50953. ><EWM.EXAMPLEW.MONO>        return $cl</EWM.EXAMPLEW.MONO
  50954. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  50955. ><EWM.EXAMPLEW.MONO>    set cl [$this ${SingletonCust::super}::generate $tgt]</EWM.EXAMPLEW.MONO
  50956. ><EWM.EXAMPLEW.MONO>    if {$cl != ""} {</EWM.EXAMPLEW.MONO
  50957. ><EWM.EXAMPLEW.MONO>        set singletonClass [$this getPropertyValue "singletonClass"]</EWM.EXAMPLEW.MONO
  50958. ><EWM.EXAMPLEW.MONO>        # no is the default</EWM.EXAMPLEW.MONO
  50959. ><EWM.EXAMPLEW.MONO>        if {$singletonClass == "1"} {</EWM.EXAMPLEW.MONO
  50960. ><EWM.EXAMPLEW.MONO>            set returnType [CppType new]</EWM.EXAMPLEW.MONO
  50961. ><EWM.EXAMPLEW.MONO>            $returnType localType $cl</EWM.EXAMPLEW.MONO
  50962. ><EWM.EXAMPLEW.MONO>            $returnType isPointer 1</EWM.EXAMPLEW.MONO
  50963. ><EWM.EXAMPLEW.MONO>            $returnType isStatic 1</EWM.EXAMPLEW.MONO
  50964. ><EWM.EXAMPLEW.MONO>            set instMethd [CppGenMethod new $cl "Public" $returnType]</EWM.EXAMPLEW.MONO
  50965. ><EWM.EXAMPLEW.MONO>            $instMethd name "instance"</EWM.EXAMPLEW.MONO
  50966. ><EWM.EXAMPLEW.MONO>            $instMethd isInline 1</EWM.EXAMPLEW.MONO
  50967. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50968. ><EWM.EXAMPLEW.MONO>            set body [CppGenCode new $instMethd]</EWM.EXAMPLEW.MONO
  50969. ><EWM.EXAMPLEW.MONO>            $body append "if (obj==0) \{\n"</EWM.EXAMPLEW.MONO
  50970. ><EWM.EXAMPLEW.MONO>            $body indent +</EWM.EXAMPLEW.MONO
  50971. ><EWM.EXAMPLEW.MONO>            $body append "obj=new [$cl getName]();\n"</EWM.EXAMPLEW.MONO
  50972. ><EWM.EXAMPLEW.MONO>            $body indent &truehy;</EWM.EXAMPLEW.MONO
  50973. ><EWM.EXAMPLEW.MONO>            $body append "\}\n"</EWM.EXAMPLEW.MONO
  50974. ><EWM.EXAMPLEW.MONO>            $body append "return obj;\n"</EWM.EXAMPLEW.MONO
  50975. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50976. ><EWM.EXAMPLEW.MONO>            set attrType [CppType new]</EWM.EXAMPLEW.MONO
  50977. ><EWM.EXAMPLEW.MONO>            $attrType localType $cl</EWM.EXAMPLEW.MONO
  50978. ><EWM.EXAMPLEW.MONO>            $attrType isPointer 1</EWM.EXAMPLEW.MONO
  50979. ><EWM.EXAMPLEW.MONO>            $attrType isStatic 1</EWM.EXAMPLEW.MONO
  50980. ><EWM.EXAMPLEW.MONO>            set attr [CppAttribute new $cl "Private" $attrType]</EWM.EXAMPLEW.MONO
  50981. ><EWM.EXAMPLEW.MONO>            $attr name "obj"</EWM.EXAMPLEW.MONO
  50982. ><EWM.EXAMPLEW.MONO>            $attr defaultValue "0"</EWM.EXAMPLEW.MONO
  50983. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50984. ><EWM.EXAMPLEW.MONO>            [$cl featureSet] foreach f {</EWM.EXAMPLEW.MONO
  50985. ><EWM.EXAMPLEW.MONO>                if [$f isA CppConstructor] {</EWM.EXAMPLEW.MONO
  50986. ><EWM.EXAMPLEW.MONO>                    $f access "Private"</EWM.EXAMPLEW.MONO
  50987. ><EWM.EXAMPLEW.MONO>                }</EWM.EXAMPLEW.MONO
  50988. ><EWM.EXAMPLEW.MONO>            }</EWM.EXAMPLEW.MONO
  50989. ><EWM.EXAMPLEW.MONO>        }</EWM.EXAMPLEW.MONO
  50990. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  50991. ><EWM.EXAMPLEW.MONO>    return $cl</EWM.EXAMPLEW.MONO
  50992. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50993. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  50994. ><EWM.EXAMPLEW.MONO>selfPromoter OPClass {this} {</EWM.EXAMPLEW.MONO
  50995. ><EWM.EXAMPLEW.MONO>    SingletonCust promote $this</EWM.EXAMPLEW.MONO
  50996. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  50997. ><B.BODY>If this module is active, a singleton class construction will be generated for all the classes that have the property Singleton Class turned on.</B.BODY
  50998. ></LABEL
  50999. ></SUBSECTION
  51000. ></SECTION
  51001. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32178"></RBW-ANCHOR
  51002. >Customizing Class Libraries</S.SECTION.HEAD
  51003. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51004. >Introduction</L.LABEL
  51005. ><B.BODY>Class libraries are used in ObjectTeam to implement associations between classes. As the integration of any class library with ObjectTeam is entirely written in Object Tcl, virtually any class library can be integrated.</B.BODY
  51006. ></LABEL
  51007. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51008. >What does a class library integration do</L.LABEL
  51009. ><B.BODY>The integration of a class library with ObjectTeam determines and generates the following:</B.BODY
  51010. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51011. ></RBW-AUTOGEN
  51012. ></RBW-MARKER
  51013. ><RBW-PARABODY>the type of the association attribute </RBW-PARABODY
  51014. ></LB.LIST.BULLET
  51015. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51016. ></RBW-AUTOGEN
  51017. ></RBW-MARKER
  51018. ><RBW-PARABODY>the parameters of the association accessor methods</RBW-PARABODY
  51019. ></LB.LIST.BULLET
  51020. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51021. ></RBW-AUTOGEN
  51022. ></RBW-MARKER
  51023. ><RBW-PARABODY>the implementation of the association accessor methods</RBW-PARABODY
  51024. ></LB.LIST.BULLET
  51025. ><B.BODY>What is generated is determined by two factors:</B.BODY
  51026. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51027. ></RBW-AUTOGEN
  51028. ></RBW-MARKER
  51029. ><RBW-PARABODY>the type of the association (qualified or non&truehy;qualified)</RBW-PARABODY
  51030. ></LB.LIST.BULLET
  51031. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51032. ></RBW-AUTOGEN
  51033. ></RBW-MARKER
  51034. ><RBW-PARABODY>the multiplicity at the other end (one, many)</RBW-PARABODY
  51035. ></LB.LIST.BULLET
  51036. ></LABEL
  51037. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51038. ><RBW-ANCHOR ID="35581"></RBW-ANCHOR
  51039. >How is an integration implemented</L.LABEL
  51040. ><B.BODY>The functionality to generate associations in C++ is implemented by Tcl classes and their methods. </B.BODY
  51041. ></LABEL
  51042. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51043. >Class library integration module</L.LABEL
  51044. ><B.BODY>Class library integrations, the ones supplied by Cayenne, as well as user&truehy;defined ones, are stored in ObjectTeam modules. A user can activate a class library integration by activating the corresponding module.</B.BODY
  51045. ></LABEL
  51046. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51047. >Overview of Tasks</L.LABEL
  51048. ><B.BODY>The following tasks must be carried out when a user&truehy;defined class library is created:</B.BODY
  51049. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="228p"><COLSPEC COLNAME="2" COLWIDTH="220p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  51050. ></ENTRY
  51051. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module file involved</CELLHEADING
  51052. ></ENTRY
  51053. ></RBW-ROW
  51054. ></THEAD
  51055. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51056. ></RBW-AUTOGEN
  51057. ></RBW-MARKER
  51058. ><RBW-PARABODY><RBW-XREF REFID="31607" TYPE="XREF-TEXTCOPY">Identifying the Module</RBW-XREF
  51059. ></RBW-PARABODY
  51060. ></CELLBULLET
  51061. ></ENTRY
  51062. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>moduleName</CX5FX5FVARIABLE
  51063. >\<CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  51064. ></CELLBODY
  51065. ></ENTRY
  51066. ></RBW-ROW
  51067. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51068. ></RBW-AUTOGEN
  51069. ></RBW-MARKER
  51070. ><RBW-PARABODY><RBW-XREF REFID="15736" TYPE="XREF-TEXTCOPY">Creating User&truehy;defined Tcl Classes</RBW-XREF
  51071. ></RBW-PARABODY
  51072. ></CELLBULLET
  51073. ></ENTRY
  51074. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>moduleName</CX5FX5FVARIABLE
  51075. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  51076. >\<CX5FX5FFILE.NAME>classlib.tcl</CX5FX5FFILE.NAME
  51077. > </CELLBODY
  51078. ></ENTRY
  51079. ></RBW-ROW
  51080. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51081. ></RBW-AUTOGEN
  51082. ></RBW-MARKER
  51083. ><RBW-PARABODY><RBW-XREF REFID="26835" TYPE="XREF-TEXTCOPY">Mapping User&truehy;defined Classes to Association Implementations</RBW-XREF
  51084. ></RBW-PARABODY
  51085. ></CELLBULLET
  51086. ></ENTRY
  51087. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>moduleName</CX5FX5FVARIABLE
  51088. >\<CX5FX5FVARIABLE>tcl</CX5FX5FVARIABLE
  51089. >\<CX5FX5FFILE.NAME>cppclprop.tcl</CX5FX5FFILE.NAME
  51090. ></CELLBODY
  51091. ></ENTRY
  51092. ></RBW-ROW
  51093. ></TBODY
  51094. ></TGROUP
  51095. ></RBW-TABLE
  51096. ><B.BODY>The following tasks are optional:</B.BODY
  51097. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="256p"><COLSPEC COLNAME="2" COLWIDTH="192p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Task</CELLHEADING
  51098. ></ENTRY
  51099. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module file involved</CELLHEADING
  51100. ></ENTRY
  51101. ></RBW-ROW
  51102. ></THEAD
  51103. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51104. ></RBW-AUTOGEN
  51105. ></RBW-MARKER
  51106. ><RBW-PARABODY><RBW-XREF REFID="24738" TYPE="XREF-TEXTCOPY">Makefile Template Customization</RBW-XREF
  51107. ></RBW-PARABODY
  51108. ></CELLBULLET
  51109. ></ENTRY
  51110. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>moduleName</CX5FX5FVARIABLE
  51111. >\<CX5FX5FVARIABLE>tcl</CX5FX5FVARIABLE
  51112. >\<CX5FX5FFILE.NAME>mkmkinc.tcl</CX5FX5FFILE.NAME
  51113. ></CELLBODY
  51114. ></ENTRY
  51115. ></RBW-ROW
  51116. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51117. ></RBW-AUTOGEN
  51118. ></RBW-MARKER
  51119. ><RBW-PARABODY><RBW-XREF REFID="24770" TYPE="XREF-TEXTCOPY">Automating Class Library Source Files Copying</RBW-XREF
  51120. ></RBW-PARABODY
  51121. ></CELLBULLET
  51122. ></ENTRY
  51123. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>moduleName</CX5FX5FVARIABLE
  51124. >\<CX5FX5FVARIABLE>tcl</CX5FX5FVARIABLE
  51125. >\<CX5FX5FFILE.NAME>subconfig.tcl</CX5FX5FFILE.NAME
  51126. ></CELLBODY
  51127. ></ENTRY
  51128. ></RBW-ROW
  51129. ></TBODY
  51130. ></TGROUP
  51131. ></RBW-TABLE
  51132. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  51133. ></RBW-AUTOGEN
  51134. >The Cayenne class library is used in this section to illustrate the mechanics involved in carrying out these tasks.</N.NOTE
  51135. ></LABEL
  51136. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31607"></RBW-ANCHOR
  51137. >Identifying the Module</SS.SUBSEC.HEAD
  51138. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51139. >Introduction</L.LABEL
  51140. ><B.BODY>Every module directory in ObjectTeam contains a properties file. It contains information to identify the module, such as its (long) name, its type, and so on.</B.BODY
  51141. ></LABEL
  51142. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51143. >Cayenne class library</L.LABEL
  51144. ><B.BODY>In the Cayenne class library module (cpp&truehy;libcayn), this file looks as follows:</B.BODY
  51145. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  51146. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  51147. ><EWM.EXAMPLEW.MONO># Property Name       | Property Value</EWM.EXAMPLEW.MONO
  51148. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  51149. ><EWM.EXAMPLEW.MONO>name                  | cpp&truehy;libcayn</EWM.EXAMPLEW.MONO
  51150. ><EWM.EXAMPLEW.MONO>version               | 1.0</EWM.EXAMPLEW.MONO
  51151. ><EWM.EXAMPLEW.MONO>longName              | Cayenne class library integration</EWM.EXAMPLEW.MONO
  51152. ><EWM.EXAMPLEW.MONO>type                  | CppClasslib</EWM.EXAMPLEW.MONO
  51153. ><EWM.EXAMPLEW.MONO>isSupportingModule    | yes</EWM.EXAMPLEW.MONO
  51154. ></LABEL
  51155. ></SUBSECTION
  51156. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15736"></RBW-ANCHOR
  51157. >Creating User&truehy;defined Tcl Classes</SS.SUBSEC.HEAD
  51158. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51159. >Base classes</L.LABEL
  51160. ><B.BODY>The user&truehy;defined Tcl classes you define to implement the integration must all be (indirectly) derived from one of the following class library independent Tcl base classes:</B.BODY
  51161. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="99p"><COLSPEC COLNAME="2" COLWIDTH="157p"><COLSPEC COLNAME="3" COLWIDTH="90p"><COLSPEC COLNAME="4" COLWIDTH="103p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl </CELLHEADING
  51162. ><CELLHEADING>class</CELLHEADING
  51163. ></ENTRY
  51164. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Data </CELLHEADING
  51165. ><CELLHEADING>Structure</CELLHEADING
  51166. ></ENTRY
  51167. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association</CELLHEADING
  51168. ><CELLHEADING>Type</CELLHEADING
  51169. ></ENTRY
  51170. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  51171. ></ENTRY
  51172. ></RBW-ROW
  51173. ></THEAD
  51174. ><TBODY><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppPtrDef</CELLBODY
  51175. ></ENTRY
  51176. ><ENTRY COLNAME="2" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer</CELLBODY
  51177. ></ENTRY
  51178. ><ENTRY COLNAME="3" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>non&truehy;qualified</CELLBODY
  51179. ></ENTRY
  51180. ><ENTRY COLNAME="4" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>one, mandatory</CELLBODY
  51181. ></ENTRY
  51182. ></RBW-ROW
  51183. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppSetDef</CELLBODY
  51184. ></ENTRY
  51185. ><ENTRY COLNAME="2" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer set</CELLBODY
  51186. ></ENTRY
  51187. ><ENTRY COLNAME="3" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>non&truehy;qualified</CELLBODY
  51188. ></ENTRY
  51189. ><ENTRY COLNAME="4" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  51190. ></ENTRY
  51191. ></RBW-ROW
  51192. ><RBW-ROW><ENTRY COLNAME="1" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppDictDef</CELLBODY
  51193. ></ENTRY
  51194. ><ENTRY COLNAME="2" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>dictionary of pointers</CELLBODY
  51195. ></ENTRY
  51196. ><ENTRY COLNAME="3" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualified</CELLBODY
  51197. ></ENTRY
  51198. ><ENTRY COLNAME="4" COLSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>one, mandatory</CELLBODY
  51199. ></ENTRY
  51200. ></RBW-ROW
  51201. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CppSetDictDef</CELLBODY
  51202. ></ENTRY
  51203. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>dictionary of pointer sets</CELLBODY
  51204. ></ENTRY
  51205. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualified</CELLBODY
  51206. ></ENTRY
  51207. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  51208. ></ENTRY
  51209. ></RBW-ROW
  51210. ></TBODY
  51211. ></TGROUP
  51212. ></RBW-TABLE
  51213. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51214. >For more information</SL.SUBLABEL
  51215. ><B.BODY>See <RBW-XREF REFID="21274" TYPE="XREF-TEXTCOPY">Base Classes</RBW-XREF
  51216. > for an overview of these classes and a description of their methods. </B.BODY
  51217. ></LABEL
  51218. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51219. >User&truehy;defined classes</L.LABEL
  51220. ><B.BODY>At least four user&truehy;defined classes must be created, one for every combination of association type &truehy; multiplicity. The methods of the base classes must be redefined, where necessary, in the user&truehy;defined classes.</B.BODY
  51221. ></LABEL
  51222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51223. >Module file</L.LABEL
  51224. ><B.BODY>User&truehy;defined Tcl classes and their methods must be defined and implemented in the following module file:</B.BODY
  51225. ><B.BODY><CX5FX5FVARIABLE>moduleDirectory</CX5FX5FVARIABLE
  51226. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  51227. >\<CX5FX5FFILE.NAME>classlib.tcl</CX5FX5FFILE.NAME
  51228. ></B.BODY
  51229. ></LABEL
  51230. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51231. >Cayenne class library</L.LABEL
  51232. ><B.BODY>In the Cayenne class library module, for example, the following Tcl classes are defined and implemented:</B.BODY
  51233. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51234. ></RBW-AUTOGEN
  51235. ></RBW-MARKER
  51236. ><RBW-PARABODY>CaynPtrDef</RBW-PARABODY
  51237. ></LB.LIST.BULLET
  51238. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51239. ></RBW-AUTOGEN
  51240. ></RBW-MARKER
  51241. ><RBW-PARABODY>CaynSetDef</RBW-PARABODY
  51242. ></LB.LIST.BULLET
  51243. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51244. ></RBW-AUTOGEN
  51245. ></RBW-MARKER
  51246. ><RBW-PARABODY>CaynDictDef</RBW-PARABODY
  51247. ></LB.LIST.BULLET
  51248. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51249. ></RBW-AUTOGEN
  51250. ></RBW-MARKER
  51251. ><RBW-PARABODY>CaynSetDictDef</RBW-PARABODY
  51252. ></LB.LIST.BULLET
  51253. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51254. ></RBW-AUTOGEN
  51255. ></RBW-MARKER
  51256. ><RBW-PARABODY>CaynOSetDef</RBW-PARABODY
  51257. ></LB.LIST.BULLET
  51258. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51259. ></RBW-AUTOGEN
  51260. ></RBW-MARKER
  51261. ><RBW-PARABODY>CaynOSetDictDef</RBW-PARABODY
  51262. ></LB.LIST.BULLET
  51263. ><B.BODY>The hierarchy of these classes is displayed in this picture:</B.BODY
  51264. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00529.unk" origfile="pics/caynclib.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  51265. ></FA.FIGURE.ANCHOR
  51266. ></LABEL
  51267. ></SUBSECTION
  51268. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26835"></RBW-ANCHOR
  51269. >Mapping User&truehy;defined Classes to Association Implementations</SS.SUBSEC.HEAD
  51270. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51271. >Introduction</L.LABEL
  51272. ><B.BODY>After you have defined and implemented the user&truehy;defined Tcl classes and their methods, you have to specify which Tcl class must be used to implement which type of association. </B.BODY
  51273. ></LABEL
  51274. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51275. >Module file</L.LABEL
  51276. ><B.BODY>The mapping of association types to user&truehy;defined Tcl classes is stored in the following module file:</B.BODY
  51277. ><B.BODY><CX5FX5FVARIABLE>moduleDirectory</CX5FX5FVARIABLE
  51278. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  51279. >\<CX5FX5FFILE.NAME>cppclprop.tcl</CX5FX5FFILE.NAME
  51280. ></B.BODY
  51281. ><B.BODY>This file contains some standard Tcl variable settings and a three column mapping table:</B.BODY
  51282. ><B.BODY><CX5FX5FFILE.NAME>cppclprop.tcl</CX5FX5FFILE.NAME
  51283. > (module file):</B.BODY
  51284. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  51285. ><EM.EXAMPLE.MONO>global cplusplusClassLib</EM.EXAMPLE.MONO
  51286. ><EM.EXAMPLE.MONO>global cplusplusClassLibDefault</EM.EXAMPLE.MONO
  51287. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  51288. ><EM.EXAMPLE.MONO>set cplusplusClassLib(<CX5FX5FVARIABLE>classLibraryName</CX5FX5FVARIABLE
  51289. >) {</EM.EXAMPLE.MONO
  51290. ><EM.EXAMPLE.MONO>     <CX5FX5FVARIABLE>1stColumn     </CX5FX5FVARIABLE
  51291. ><CX5FX5FVARIABLE>2ndColumn     </CX5FX5FVARIABLE
  51292. ><CX5FX5FVARIABLE>3rdColumn</CX5FX5FVARIABLE
  51293. ></EM.EXAMPLE.MONO
  51294. ><EM.EXAMPLE.MONO>     <CX5FX5FVARIABLE>1stColumn     </CX5FX5FVARIABLE
  51295. ><CX5FX5FVARIABLE>2ndColumn     </CX5FX5FVARIABLE
  51296. ><CX5FX5FVARIABLE>3rdColumn</CX5FX5FVARIABLE
  51297. ></EM.EXAMPLE.MONO
  51298. ><EM.EXAMPLE.MONO>     <CX5FX5FVARIABLE>1stColumn     </CX5FX5FVARIABLE
  51299. ><CX5FX5FVARIABLE>2ndColumn     </CX5FX5FVARIABLE
  51300. ><CX5FX5FVARIABLE>3rdColumn</CX5FX5FVARIABLE
  51301. ></EM.EXAMPLE.MONO
  51302. ><EM.EXAMPLE.MONO>     <CX5FX5FVARIABLE>1stColumn     </CX5FX5FVARIABLE
  51303. ><CX5FX5FVARIABLE>2ndColumn     </CX5FX5FVARIABLE
  51304. ><CX5FX5FVARIABLE>3rdColumn</CX5FX5FVARIABLE
  51305. ></EM.EXAMPLE.MONO
  51306. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  51307. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  51308. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  51309. ><EM.EXAMPLE.MONO>set cplusplusClassLibDefault   <CX5FX5FVARIABLE>classLibraryName</CX5FX5FVARIABLE
  51310. ></EM.EXAMPLE.MONO
  51311. ><B.BODY>The 3 columns in this file are explained below.</B.BODY
  51312. ></LABEL
  51313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51314. >First column</L.LABEL
  51315. ><B.BODY>This column indicates the type of the generated association:</B.BODY
  51316. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Implementation Type</CELLHEADING
  51317. ></ENTRY
  51318. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Association Type</CELLHEADING
  51319. ></ENTRY
  51320. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  51321. ></ENTRY
  51322. ></RBW-ROW
  51323. ></THEAD
  51324. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Ptr</CELLBODY
  51325. ></ENTRY
  51326. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>non&truehy;qualified</CELLBODY
  51327. ></ENTRY
  51328. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>one (or optional)</CELLBODY
  51329. ></ENTRY
  51330. ></RBW-ROW
  51331. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set</CELLBODY
  51332. ></ENTRY
  51333. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>non&truehy;qualified</CELLBODY
  51334. ></ENTRY
  51335. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  51336. ></ENTRY
  51337. ></RBW-ROW
  51338. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dict</CELLBODY
  51339. ></ENTRY
  51340. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualified</CELLBODY
  51341. ></ENTRY
  51342. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>one (or optional)</CELLBODY
  51343. ></ENTRY
  51344. ></RBW-ROW
  51345. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SetDict</CELLBODY
  51346. ></ENTRY
  51347. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>qualified</CELLBODY
  51348. ></ENTRY
  51349. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  51350. ></ENTRY
  51351. ></RBW-ROW
  51352. ></TBODY
  51353. ></TGROUP
  51354. ></RBW-TABLE
  51355. ><B.BODY>Bear in mind that the association implementation type does not always coincide with the generated association attribute type; the exact type is determined by the method getTypeAttr of the user&truehy;defined Tcl class mentioned in the third column.</B.BODY
  51356. ></LABEL
  51357. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51358. >Second column</L.LABEL
  51359. ><B.BODY>This column indicates the implementation strategy. For every association implementation type, at least a <CX5FX5FEMPHASIS>default</CX5FX5FEMPHASIS
  51360. > strategy must be defined. </B.BODY
  51361. ><B.BODY>If you want to give the user of the integration the choice between different implementation strategies for a particular association implementation type, you have to add a new line with the same association implementation type in the first column, an implementation strategy indication other than <CX5FX5FEMPHASIS>default</CX5FX5FEMPHASIS
  51362. > in the second column, and the appropriate user&truehy;defined Tcl class in the third.</B.BODY
  51363. ><B.BODY>The user can select an implementation strategy other than <CX5FX5FEMPHASIS>default</CX5FX5FEMPHASIS
  51364. > through the association property Implementation Strategy.</B.BODY
  51365. ></LABEL
  51366. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51367. >Third column</L.LABEL
  51368. ><B.BODY>This column indicates the user&truehy;defined Tcl class that must be used to implement the corresponding association.</B.BODY
  51369. ></LABEL
  51370. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51371. >Cayenne class library</L.LABEL
  51372. ><B.BODY>This is the <CX5FX5FFILE.NAME>cppclprop.tcl</CX5FX5FFILE.NAME
  51373. > file for the Cayenne class library. </B.BODY
  51374. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  51375. ></RBW-AUTOGEN
  51376. >Multiple implementation strategies have been specified (default, hash) here, but all use the same user&truehy;defined Tcl class as the default. </N.NOTE
  51377. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  51378. ><EM.EXAMPLE.MONO>global cplusplusClassLib</EM.EXAMPLE.MONO
  51379. ><EM.EXAMPLE.MONO>global cplusplusClassLibDefault</EM.EXAMPLE.MONO
  51380. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  51381. ><EM.EXAMPLE.MONO>set cplusplusClassLib(<CX5FX5FBULLET.EMPHASIS>libcayn</CX5FX5FBULLET.EMPHASIS
  51382. >) {</EM.EXAMPLE.MONO
  51383. ><EM.EXAMPLE.MONO>    Ptr        default     <CX5FX5FBULLET.EMPHASIS>CaynPtrDef</CX5FX5FBULLET.EMPHASIS
  51384. ></EM.EXAMPLE.MONO
  51385. ><EM.EXAMPLE.MONO>    Ptr        hash        <CX5FX5FBULLET.EMPHASIS>CaynPtrDef</CX5FX5FBULLET.EMPHASIS
  51386. ></EM.EXAMPLE.MONO
  51387. ><EM.EXAMPLE.MONO>    Set        default     <CX5FX5FBULLET.EMPHASIS>CaynSetDef</CX5FX5FBULLET.EMPHASIS
  51388. ></EM.EXAMPLE.MONO
  51389. ><EM.EXAMPLE.MONO>    Set        hash        <CX5FX5FBULLET.EMPHASIS>CaynSetDef</CX5FX5FBULLET.EMPHASIS
  51390. ></EM.EXAMPLE.MONO
  51391. ><EM.EXAMPLE.MONO>    OSet       default     <CX5FX5FBULLET.EMPHASIS>CaynOSetDef</CX5FX5FBULLET.EMPHASIS
  51392. ></EM.EXAMPLE.MONO
  51393. ><EM.EXAMPLE.MONO>    OSet       hash        <CX5FX5FBULLET.EMPHASIS>CaynOSetDef</CX5FX5FBULLET.EMPHASIS
  51394. ></EM.EXAMPLE.MONO
  51395. ><EM.EXAMPLE.MONO>    Dict       default     <CX5FX5FBULLET.EMPHASIS>CaynDictDef</CX5FX5FBULLET.EMPHASIS
  51396. ></EM.EXAMPLE.MONO
  51397. ><EM.EXAMPLE.MONO>    Dict       hash        <CX5FX5FBULLET.EMPHASIS>CaynDictDef</CX5FX5FBULLET.EMPHASIS
  51398. ></EM.EXAMPLE.MONO
  51399. ><EM.EXAMPLE.MONO>    SetDict    default     <CX5FX5FBULLET.EMPHASIS>CaynSetDictDef</CX5FX5FBULLET.EMPHASIS
  51400. ></EM.EXAMPLE.MONO
  51401. ><EM.EXAMPLE.MONO>    SetDict    hash        <CX5FX5FBULLET.EMPHASIS>CaynSetDictDef</CX5FX5FBULLET.EMPHASIS
  51402. ></EM.EXAMPLE.MONO
  51403. ><EM.EXAMPLE.MONO>    OSetDict   default     <CX5FX5FBULLET.EMPHASIS>CaynOSetDictDef</CX5FX5FBULLET.EMPHASIS
  51404. ></EM.EXAMPLE.MONO
  51405. ><EM.EXAMPLE.MONO>    OSetDict   hash        <CX5FX5FBULLET.EMPHASIS>CaynOSetDictDef</CX5FX5FBULLET.EMPHASIS
  51406. ></EM.EXAMPLE.MONO
  51407. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  51408. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  51409. ><EM.EXAMPLE.MONO>set cplusplusClassLibDefault <CX5FX5FBULLET.EMPHASIS>libcayn</CX5FX5FBULLET.EMPHASIS
  51410. ></EM.EXAMPLE.MONO
  51411. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  51412. ></RBW-AUTOGEN
  51413. >The (optional) implementation types OSet and OSetDict refer to ordered associations and ordered qualified associations respectively.</N.NOTE
  51414. ><B.BODY>The user now has the choice between the implementation strategies <CX5FX5FEMPHASIS>default</CX5FX5FEMPHASIS
  51415. > and <CX5FX5FEMPHASIS>hash</CX5FX5FEMPHASIS
  51416. > for every association implementation type.</B.BODY
  51417. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00530.unk" origfile="pics/cllibpry.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  51418. ></FA.FIGURE.ANCHOR
  51419. ></LABEL
  51420. ></SUBSECTION
  51421. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24738"></RBW-ANCHOR
  51422. >Makefile Template Customization</SS.SUBSEC.HEAD
  51423. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51424. >Introduction</L.LABEL
  51425. ><B.BODY>The Tcl code for generating class library independent makefile templates is stored in the following file:</B.BODY
  51426. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  51427. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  51428. >\<CX5FX5FFILE.NAME>makemake.tcl</CX5FX5FFILE.NAME
  51429. ></B.BODY
  51430. ></LABEL
  51431. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51432. >Module file</L.LABEL
  51433. ><B.BODY>Tcl code to add any class library dependent information to generated makefile templates can be stored in the following file:</B.BODY
  51434. ><B.BODY><CX5FX5FVARIABLE>moduleDirectory</CX5FX5FVARIABLE
  51435. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  51436. >\<CX5FX5FFILE.NAME>mkmkinc.tcl</CX5FX5FFILE.NAME
  51437. ></B.BODY
  51438. ></LABEL
  51439. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51440. >Procedure</L.LABEL
  51441. ><B.BODY>The file <CX5FX5FFILE.NAME>mkmkinc.tcl</CX5FX5FFILE.NAME
  51442. > contains a single Tcl procedure:</B.BODY
  51443. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  51444. ><EWM.EXAMPLEW.MONO>proc <RBWAUTO-0020>classLibraryName<RBWAUTO-0021>MakefileTemplate</RBWAUTO-0021
  51445. ></RBWAUTO-0020
  51446. > {suffixSect libSect inclSect defineSect ruleSect dependSect} {</EWM.EXAMPLEW.MONO
  51447. ><EWM.EXAMPLEW.MONO>&rbwtab;...</EWM.EXAMPLEW.MONO
  51448. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  51449. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  51450. ><EWM.EXAMPLEW.MONO>lappend classLibProcs <RBWAUTO-0020>classLibraryName<RBWAUTO-0021>MakefileTemplate</RBWAUTO-0021
  51451. ></RBWAUTO-0020
  51452. ></EWM.EXAMPLEW.MONO
  51453. ></LABEL
  51454. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51455. >Parameters</L.LABEL
  51456. ><B.BODY>The parameters taken by the procedure <CX5FX5FVARIABLE>classLibraryName</CX5FX5FVARIABLE
  51457. >MakefileTemplate all refer to the following specific text sections generated by the <CX5FX5FFILE.NAME>makemake.tcl</CX5FX5FFILE.NAME
  51458. > file:</B.BODY
  51459. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="87p"><COLSPEC COLNAME="2" COLWIDTH="232p"><COLSPEC COLNAME="3" COLWIDTH="127p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Parameter</CELLHEADING
  51460. ></ENTRY
  51461. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Text Section</CELLHEADING
  51462. ></ENTRY
  51463. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Details</CELLHEADING
  51464. ></ENTRY
  51465. ></RBW-ROW
  51466. ></THEAD
  51467. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>suffixSect</CELLBODY
  51468. ></ENTRY
  51469. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the <CX5FX5FINPUT>.SUFFIXES:</CX5FX5FINPUT
  51470. > line in the </CELLBODY
  51471. ><CELLBODY>makefile</CELLBODY
  51472. ></ENTRY
  51473. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>do not append a </CELLBODY
  51474. ><CELLBODY><CX5FX5FEMPHASIS>newline</CX5FX5FEMPHASIS
  51475. > character</CELLBODY
  51476. ></ENTRY
  51477. ></RBW-ROW
  51478. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>libSect</CELLBODY
  51479. ></ENTRY
  51480. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the <CX5FX5FINPUT>LIBS=</CX5FX5FINPUT
  51481. > line in the makefile </CELLBODY
  51482. ></ENTRY
  51483. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>do not append a </CELLBODY
  51484. ><CELLBODY><CX5FX5FEMPHASIS>newline</CX5FX5FEMPHASIS
  51485. > character</CELLBODY
  51486. ></ENTRY
  51487. ></RBW-ROW
  51488. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>inclSect</CELLBODY
  51489. ></ENTRY
  51490. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the <CX5FX5FINPUT>INCS=</CX5FX5FINPUT
  51491. > line in the makefile</CELLBODY
  51492. ></ENTRY
  51493. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>do not append a </CELLBODY
  51494. ><CELLBODY><CX5FX5FEMPHASIS>newline</CX5FX5FEMPHASIS
  51495. > character</CELLBODY
  51496. ></ENTRY
  51497. ></RBW-ROW
  51498. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>defineSect</CELLBODY
  51499. ></ENTRY
  51500. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>any specific makefile <CX5FX5FINPUT>define</CX5FX5FINPUT
  51501. ></CELLBODY
  51502. ></ENTRY
  51503. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  51504. ></ENTRY
  51505. ></RBW-ROW
  51506. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ruleSect</CELLBODY
  51507. ></ENTRY
  51508. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>special rules for building the application</CELLBODY
  51509. ></ENTRY
  51510. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  51511. ></ENTRY
  51512. ></RBW-ROW
  51513. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dependSect</CELLBODY
  51514. ></ENTRY
  51515. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>dependency section at the bottom of the makefile</CELLBODY
  51516. ></ENTRY
  51517. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  51518. ></ENTRY
  51519. ></RBW-ROW
  51520. ></TBODY
  51521. ></TGROUP
  51522. ></RBW-TABLE
  51523. ><B.BODY>To append class library dependent information to one of these lines, include the appropriate Tcl code in the body of the procedure <CX5FX5FEMPHASIS>classLibrary</CX5FX5FEMPHASIS
  51524. ><CX5FX5FVARIABLE>Name</CX5FX5FVARIABLE
  51525. >MakeFileTemplate. </B.BODY
  51526. ><B.BODY>To add the word <CX5FX5FEMPHASIS>whatever</CX5FX5FEMPHASIS
  51527. > to the <CX5FX5FINPUT>INCS=</CX5FX5FINPUT
  51528. > line, for example:</B.BODY
  51529. ><EM.EXAMPLE.MONO>$inclSect append "whatever"</EM.EXAMPLE.MONO
  51530. ></LABEL
  51531. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51532. >Cayenne class library</L.LABEL
  51533. ><B.BODY>In the Cayenne class library module, for example, the following extra makefile template information is added:</B.BODY
  51534. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  51535. ><EWM.EXAMPLEW.MONO>proc <CX5FX5FBULLET.EMPHASIS>libcaynMakefileTemplate</CX5FX5FBULLET.EMPHASIS
  51536. > {suffixSect libSect inclSect defineSect ruleSect dependSect} {</EWM.EXAMPLEW.MONO
  51537. ><EWM.EXAMPLEW.MONO>&rbwtab;if [isCommand getIncludePrefix] {</EWM.EXAMPLEW.MONO
  51538. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;<CX5FX5FBULLET.EMPHASIS>$inclSect append " [getIncludePrefix]"</CX5FX5FBULLET.EMPHASIS
  51539. ></EWM.EXAMPLEW.MONO
  51540. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;<CX5FX5FBULLET.EMPHASIS>$inclSect append "~\[location .. .. include\]"</CX5FX5FBULLET.EMPHASIS
  51541. ></EWM.EXAMPLEW.MONO
  51542. ><EWM.EXAMPLEW.MONO>&rbwtab;}</EWM.EXAMPLEW.MONO
  51543. ><EWM.EXAMPLEW.MONO>&rbwtab;if [isCommand getLibraryPrefix] {</EWM.EXAMPLEW.MONO
  51544. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;<CX5FX5FBULLET.EMPHASIS>$libSect append " [getLibraryPrefix]"</CX5FX5FBULLET.EMPHASIS
  51545. ></EWM.EXAMPLEW.MONO
  51546. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;<CX5FX5FBULLET.EMPHASIS>$libSect append "~\[location .. .. lib libwmt4omt.\$LIB_EXT\]"</CX5FX5FBULLET.EMPHASIS
  51547. ></EWM.EXAMPLEW.MONO
  51548. ><EWM.EXAMPLEW.MONO>&rbwtab;}</EWM.EXAMPLEW.MONO
  51549. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  51550. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  51551. ><EWM.EXAMPLEW.MONO>lappend classLibProcs <CX5FX5FBULLET.EMPHASIS>libcaynMakefileTemplate</CX5FX5FBULLET.EMPHASIS
  51552. ></EWM.EXAMPLEW.MONO
  51553. ></LABEL
  51554. ></SUBSECTION
  51555. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24770"></RBW-ANCHOR
  51556. >Automating Class Library Source Files Copying</SS.SUBSEC.HEAD
  51557. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51558. >Class Library Source Files</L.LABEL
  51559. ><B.BODY>When a user of ObjectTeam selects Utilities | Configure C++ environment and the user’s active class library is the Cayenne class library, the source files and the header files of the Cayenne class library are copied over from the <CX5FX5FFILE.NAME>include</CX5FX5FFILE.NAME
  51560. > and <CX5FX5FFILE.NAME>src</CX5FX5FFILE.NAME
  51561. > directories in the cpp&truehy;libcayn module to the user environment.</B.BODY
  51562. ><B.BODY>The user is then supposed to compile the source files into a class library whose classes are linked in when the application is compiled.</B.BODY
  51563. ></LABEL
  51564. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51565. >Module file</L.LABEL
  51566. ><B.BODY>Tcl code to copy class library source and header files to the user environment can be stored in the following file:</B.BODY
  51567. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  51568. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  51569. >\<CX5FX5FFILE.NAME>subconfig.tcl</CX5FX5FFILE.NAME
  51570. ></B.BODY
  51571. ></LABEL
  51572. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51573. >For more information</L.LABEL
  51574. ><B.BODY>Refer to the file <CX5FX5FFILE.NAME>subconfig.tcl</CX5FX5FFILE.NAME
  51575. > in the Cayenne class library integration module <CX5FX5FEMPHASIS>cpp&truehy;libcayn</CX5FX5FEMPHASIS
  51576. > for an example.</B.BODY
  51577. ></LABEL
  51578. ></SUBSECTION
  51579. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21274"></RBW-ANCHOR
  51580. >Base Classes</SS.SUBSEC.HEAD
  51581. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51582. >Overview</L.LABEL
  51583. ><B.BODY>The user&truehy;defined Tcl classes you have to create to integrate a class library with ObjectTeam need to be derived from one of the following class library independent Tcl classes:</B.BODY
  51584. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51585. ></RBW-AUTOGEN
  51586. ></RBW-MARKER
  51587. ><RBW-PARABODY><RBW-XREF REFID="27061" TYPE="XREF-TEXTCOPY">CppPtrDef</RBW-XREF
  51588. ></RBW-PARABODY
  51589. ></LB.LIST.BULLET
  51590. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51591. ></RBW-AUTOGEN
  51592. ></RBW-MARKER
  51593. ><RBW-PARABODY><RBW-XREF REFID="25930" TYPE="XREF-TEXTCOPY">CppSetDef</RBW-XREF
  51594. ></RBW-PARABODY
  51595. ></LB.LIST.BULLET
  51596. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51597. ></RBW-AUTOGEN
  51598. ></RBW-MARKER
  51599. ><RBW-PARABODY><RBW-XREF REFID="37532" TYPE="XREF-TEXTCOPY">CppDictDef</RBW-XREF
  51600. ></RBW-PARABODY
  51601. ></LB.LIST.BULLET
  51602. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51603. ></RBW-AUTOGEN
  51604. ></RBW-MARKER
  51605. ><RBW-PARABODY><RBW-XREF REFID="24607" TYPE="XREF-TEXTCOPY">CppSetDictDef</RBW-XREF
  51606. ></RBW-PARABODY
  51607. ></LB.LIST.BULLET
  51608. ><B.BODY>Their methods are further discussed in the following sections.</B.BODY
  51609. ></LABEL
  51610. ></SUBSECTION
  51611. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27061"></RBW-ANCHOR
  51612. >CppPtrDef</SS.SUBSEC.HEAD
  51613. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51614. >Base class</L.LABEL
  51615. ><E.EXAMPLE><CX5FX5FOBJECT.NAME>CppClassDef</CX5FX5FOBJECT.NAME
  51616. ></E.EXAMPLE
  51617. ></LABEL
  51618. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51619. >Methods</L.LABEL
  51620. ><E.EXAMPLE>getIncludeList( ): ListOfStrings</E.EXAMPLE
  51621. ><LT.LIST.TEXT>Returns a list containing the file names that should be included when this type of association is used.</LT.LIST.TEXT
  51622. ><E.EXAMPLE>getTypeAttr( ): CppType</E.EXAMPLE
  51623. ><LT.LIST.TEXT>Returns the type of the attribute storing the data for this association.</LT.LIST.TEXT
  51624. ><E.EXAMPLE>genIsEmpty( attrName: String ): String</E.EXAMPLE
  51625. ><LT.LIST.TEXT>Returns the C++ code (which can be used inside an if) for checking if the associations is connected.</LT.LIST.TEXT
  51626. ><E.EXAMPLE>genIsNotEmpty( attrName: String ): String</E.EXAMPLE
  51627. ><LT.LIST.TEXT>Returns the C++ code for checking for an empty association.</LT.LIST.TEXT
  51628. ><E.EXAMPLE>genGet( attrName: String ): String</E.EXAMPLE
  51629. ><LT.LIST.TEXT>Returns the code for getting the current value of the association.</LT.LIST.TEXT
  51630. ><E.EXAMPLE>genSet( attrName: String, value: String ): String</E.EXAMPLE
  51631. ><LT.LIST.TEXT>Returns the code for setting the value into the attribute representing the association.</LT.LIST.TEXT
  51632. ><E.EXAMPLE>genCtor( ): String</E.EXAMPLE
  51633. ><LT.LIST.TEXT>Returns code to initialize the association in the default constructor.</LT.LIST.TEXT
  51634. ><E.EXAMPLE>genDtor( ): String</E.EXAMPLE
  51635. ><LT.LIST.TEXT>Returns code to free the association in the destructor.</LT.LIST.TEXT
  51636. ></LABEL
  51637. ></SUBSECTION
  51638. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="25930"></RBW-ANCHOR
  51639. >CppSetDef</SS.SUBSEC.HEAD
  51640. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51641. >Base class</L.LABEL
  51642. ><E.EXAMPLE><CX5FX5FOBJECT.NAME>CppClassDef</CX5FX5FOBJECT.NAME
  51643. ></E.EXAMPLE
  51644. ></LABEL
  51645. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51646. >Methods</L.LABEL
  51647. ><E.EXAMPLE>getIncludeList( ): ListOfStrings</E.EXAMPLE
  51648. ><LT.LIST.TEXT>Returns a list containing the file names that should be included when this type of association is used.</LT.LIST.TEXT
  51649. ><E.EXAMPLE>getTypeAttr( ): CppType</E.EXAMPLE
  51650. ><LT.LIST.TEXT>Returns the type of the attribute storing the data for this association.</LT.LIST.TEXT
  51651. ><E.EXAMPLE>getTypeGet( ): CppType</E.EXAMPLE
  51652. ><LT.LIST.TEXT>Returns the return type of the get method.</LT.LIST.TEXT
  51653. ><E.EXAMPLE>genIsEmpty( attrName: String ): String</E.EXAMPLE
  51654. ><LT.LIST.TEXT>Returns the C++ code (which can be used inside an if) for checking if the associations is connected.</LT.LIST.TEXT
  51655. ><E.EXAMPLE>genIsNotEmpty( attrName: String ): String</E.EXAMPLE
  51656. ><LT.LIST.TEXT>Returns the C++ code for checking for an empty association.</LT.LIST.TEXT
  51657. ><E.EXAMPLE>genGet( attrName: String ): String</E.EXAMPLE
  51658. ><LT.LIST.TEXT>Returns the code for getting the list.</LT.LIST.TEXT
  51659. ><E.EXAMPLE>genAdd( attrName: String, value: String ): String</E.EXAMPLE
  51660. ><LT.LIST.TEXT>Returns the code for adding value to the association with the specified name.</LT.LIST.TEXT
  51661. ><E.EXAMPLE>genRemove( attrName: String, value: String ): String</E.EXAMPLE
  51662. ><LT.LIST.TEXT>Remove the value from the association list.</LT.LIST.TEXT
  51663. ><E.EXAMPLE>genIterator( sect: TextSection, loopExpr: String )</E.EXAMPLE
  51664. ><LT.LIST.TEXT>Iterate over all the values in the association set and execute the loop expression on each value. The <CX5FX5FOBJECT.NAME>$loopVar</CX5FX5FOBJECT.NAME
  51665. > is replaced by the actual value. The code for the iterator should be added to the TextSection.</LT.LIST.TEXT
  51666. ><E.EXAMPLE>genCtor( ): String</E.EXAMPLE
  51667. ><LT.LIST.TEXT>Returns code to initialize the association in the default constructor.</LT.LIST.TEXT
  51668. ><E.EXAMPLE>genDtor( ): String</E.EXAMPLE
  51669. ><LT.LIST.TEXT>Returns code to free the association in the destructor.</LT.LIST.TEXT
  51670. ></LABEL
  51671. ></SUBSECTION
  51672. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37532"></RBW-ANCHOR
  51673. >CppDictDef</SS.SUBSEC.HEAD
  51674. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51675. >Base class</L.LABEL
  51676. ><E.EXAMPLE><CX5FX5FOBJECT.NAME>CppClassDef</CX5FX5FOBJECT.NAME
  51677. ></E.EXAMPLE
  51678. ></LABEL
  51679. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51680. >Methods</L.LABEL
  51681. ><E.EXAMPLE>getIncludeList( ): ListOfStrings</E.EXAMPLE
  51682. ><LT.LIST.TEXT>Returns a list containing the filenames that should be included when this type of association is used.</LT.LIST.TEXT
  51683. ><E.EXAMPLE>getTypeAttr( ): CppType</E.EXAMPLE
  51684. ><LT.LIST.TEXT>Returns the type of the attribute storing the data for this association.</LT.LIST.TEXT
  51685. ><E.EXAMPLE>getTypeGet( ): CppType</E.EXAMPLE
  51686. ><LT.LIST.TEXT>Returns the return type of the get method.</LT.LIST.TEXT
  51687. ><E.EXAMPLE>genIsEmpty( attrName: String ): String</E.EXAMPLE
  51688. ><LT.LIST.TEXT>Returns the C++ code (which can be used inside an if) for checking if the associations is connected.</LT.LIST.TEXT
  51689. ><E.EXAMPLE>genIsNotEmpty( attrName: String ): String</E.EXAMPLE
  51690. ><LT.LIST.TEXT>Returns the C++ code for checking for an empty association.</LT.LIST.TEXT
  51691. ><E.EXAMPLE>genGet( attrName: String, keyName: String ): String</E.EXAMPLE
  51692. ><LT.LIST.TEXT>Return the code for getting a value (associated with the specified key).</LT.LIST.TEXT
  51693. ><E.EXAMPLE>genAdd( attrName: String, keyName: String, value: String ): String</E.EXAMPLE
  51694. ><LT.LIST.TEXT>Return the code for adding a key&value to the association with the specified name.</LT.LIST.TEXT
  51695. ><E.EXAMPLE>genRemove( attrName: String, keyName: String ): String</E.EXAMPLE
  51696. ><LT.LIST.TEXT>Remove the value with the specified key from the association dictionary.</LT.LIST.TEXT
  51697. ><E.EXAMPLE>genIterator( sect: TextSection, loopExpr: String )</E.EXAMPLE
  51698. ><LT.LIST.TEXT>Iterate over all the values in the association dictionary and execute the loop expression on each value. The <CX5FX5FOBJECT.NAME>$loopVar</CX5FX5FOBJECT.NAME
  51699. > is replaced by the actual value. The code for the iterator should be added to the TextSection.</LT.LIST.TEXT
  51700. ><E.EXAMPLE>genCtor( ): String</E.EXAMPLE
  51701. ><LT.LIST.TEXT>Returns code to initialize the association in the default constructor.</LT.LIST.TEXT
  51702. ><E.EXAMPLE>genDtor( ): String</E.EXAMPLE
  51703. ><LT.LIST.TEXT>Returns code to free the association in the destructor.</LT.LIST.TEXT
  51704. ></LABEL
  51705. ></SUBSECTION
  51706. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24607"></RBW-ANCHOR
  51707. >CppSetDictDef</SS.SUBSEC.HEAD
  51708. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51709. >Base class</L.LABEL
  51710. ><E.EXAMPLE><CX5FX5FOBJECT.NAME>CppClassDef</CX5FX5FOBJECT.NAME
  51711. ></E.EXAMPLE
  51712. ></LABEL
  51713. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51714. >Methods</L.LABEL
  51715. ><E.EXAMPLE>getIncludeList( ): ListOfStrings</E.EXAMPLE
  51716. ><LT.LIST.TEXT>Returns a list containing the file names that must be included when this type of association is used.</LT.LIST.TEXT
  51717. ><E.EXAMPLE>getTypeAttr( ): CppType</E.EXAMPLE
  51718. ><LT.LIST.TEXT>Returns the type of the attribute storing the data for this association.</LT.LIST.TEXT
  51719. ><E.EXAMPLE>getTypeGet( ): CppType</E.EXAMPLE
  51720. ><LT.LIST.TEXT>Returns the return type of the <CX5FX5FOBJECT.NAME>get</CX5FX5FOBJECT.NAME
  51721. > method.</LT.LIST.TEXT
  51722. ><E.EXAMPLE>genIsEmpty( attrName: String ): String</E.EXAMPLE
  51723. ><LT.LIST.TEXT>Returns the C++ code (which can be used inside an <CX5FX5FINPUT>if</CX5FX5FINPUT
  51724. > statement) for checking if the association is connected.</LT.LIST.TEXT
  51725. ><E.EXAMPLE>genIsNotEmpty( attrName: String ): String</E.EXAMPLE
  51726. ><LT.LIST.TEXT>Returns the C++ code for checking for an empty association.</LT.LIST.TEXT
  51727. ><E.EXAMPLE>genGet( attrName: String, keyName: String ): String</E.EXAMPLE
  51728. ><LT.LIST.TEXT>Return the code for getting the list.</LT.LIST.TEXT
  51729. ><E.EXAMPLE>genAdd( attrName: String, keyName: String, value: String ): String</E.EXAMPLE
  51730. ><LT.LIST.TEXT>Return the code for adding a <CX5FX5FINPUT>key&value</CX5FX5FINPUT
  51731. > to the association with the specified name.</LT.LIST.TEXT
  51732. ><E.EXAMPLE>genRemove( attrName: String, keyName: String, value: String ): String</E.EXAMPLE
  51733. ><LT.LIST.TEXT>Remove the value with the specified <CX5FX5FINPUT>key&value</CX5FX5FINPUT
  51734. > from the association dictionary.</LT.LIST.TEXT
  51735. ><E.EXAMPLE>genIterator( sect: TextSection, loopExpr: String )</E.EXAMPLE
  51736. ><LT.LIST.TEXT>Iterate over all the values in the association dictionary and execute the loop expression on each value. The <CX5FX5FOBJECT.NAME>$loopVar</CX5FX5FOBJECT.NAME
  51737. > is replaced by the actual value. The code for the iterator should be added to the TextSection.</LT.LIST.TEXT
  51738. ><E.EXAMPLE>genCtor( ): String</E.EXAMPLE
  51739. ><LT.LIST.TEXT>Returns code to initialize the association in the default constructor.</LT.LIST.TEXT
  51740. ><E.EXAMPLE>genDtor( ): String</E.EXAMPLE
  51741. ><LT.LIST.TEXT>Returns code to free the association in the destructor.</LT.LIST.TEXT
  51742. ></LABEL
  51743. ></SUBSECTION
  51744. ></SECTION
  51745. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28522"></RBW-ANCHOR
  51746. >Customizing Types</S.SECTION.HEAD
  51747. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51748. >Standard data types</L.LABEL
  51749. ><B.BODY>In the Object Design phase you can use standard types to define data types of data attributes and parameters. All the valid standard types are stored in the following file:</B.BODY
  51750. ><LT.LIST.TEXT><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  51751. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  51752. >\<CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  51753. >\<CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  51754. >\<CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="stand_types"></RBW-IDXTERM
  51755. >stand_types.stand_types</CX5FX5FFILE.NAME
  51756. ></LT.LIST.TEXT
  51757. ><B.BODY>This file also contains minimum and maximum values for the standard types.</B.BODY
  51758. ><B.BODY>Whenever you generate code or check a diagram’s contents, the data types used in the diagram are checked against the data types in the standard types file.</B.BODY
  51759. ><B.BODY>During code generation, the standard types are mapped to C++ types (see <RBW-XREF REFID="37444" TYPE="XREF-TEXTCOPY">C++ Types</RBW-XREF
  51760. >)</B.BODY
  51761. ></LABEL
  51762. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51763. >What does the stand_types file look like?</L.LABEL
  51764. ><B.BODY>Here is an example of a <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  51765. > file. The columns <CX5FX5FPROCEDURE.NAME>Min 1</CX5FX5FPROCEDURE.NAME
  51766. >, <CX5FX5FPROCEDURE.NAME>Max 1</CX5FX5FPROCEDURE.NAME
  51767. > and <CX5FX5FPROCEDURE.NAME>Min 2</CX5FX5FPROCEDURE.NAME
  51768. > and <CX5FX5FPROCEDURE.NAME>Max 2</CX5FX5FPROCEDURE.NAME
  51769. > can be used to specify constraints on array size or format values of the standard types.</B.BODY
  51770. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  51771. ><EWM.EXAMPLEW.MONO># StandardType                  | Min 1 | Max 1 | Min 2 | Max 2</EWM.EXAMPLEW.MONO
  51772. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  51773. ><EWM.EXAMPLEW.MONO>char                            |0      |32767  |0      |0</EWM.EXAMPLEW.MONO
  51774. ><EWM.EXAMPLEW.MONO>uns_char                        |0      |32767  |0      |0</EWM.EXAMPLEW.MONO
  51775. ><EWM.EXAMPLEW.MONO>varchar                         |1      |254    |0      |0</EWM.EXAMPLEW.MONO
  51776. ><EWM.EXAMPLEW.MONO>dec                             |0      |32     |0      |32</EWM.EXAMPLEW.MONO
  51777. ><EWM.EXAMPLEW.MONO>decimal                         |0      |32     |0      |32</EWM.EXAMPLEW.MONO
  51778. ><EWM.EXAMPLEW.MONO>double_precision                |0      |13     |0      |0</EWM.EXAMPLEW.MONO
  51779. ><EWM.EXAMPLEW.MONO>float                           |0      |13     |0      |0</EWM.EXAMPLEW.MONO
  51780. ><EWM.EXAMPLEW.MONO>double                          |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51781. ><EWM.EXAMPLEW.MONO>int                             |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51782. ><EWM.EXAMPLEW.MONO>integer                         |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51783. ><EWM.EXAMPLEW.MONO>unsigned                        |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51784. ><EWM.EXAMPLEW.MONO>short                           |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51785. ><EWM.EXAMPLEW.MONO>uns_short                       |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51786. ><EWM.EXAMPLEW.MONO>long                            |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51787. ><EWM.EXAMPLEW.MONO>uns_long                        |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51788. ><EWM.EXAMPLEW.MONO>numeric                         |0      |32     |0      |32</EWM.EXAMPLEW.MONO
  51789. ><EWM.EXAMPLEW.MONO>real                            |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51790. ><EWM.EXAMPLEW.MONO>smallint                        |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51791. ><EWM.EXAMPLEW.MONO>genptr                          |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51792. ><EWM.EXAMPLEW.MONO>notype                          |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51793. ><EWM.EXAMPLEW.MONO>flag                            |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51794. ><EWM.EXAMPLEW.MONO>flag_t                          |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51795. ><EWM.EXAMPLEW.MONO>class_type                      |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51796. ><EWM.EXAMPLEW.MONO>object_id                       |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51797. ><EWM.EXAMPLEW.MONO>enum                            |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  51798. ></LABEL
  51799. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51800. >Customizing the stand_types.stand_types file</L.LABEL
  51801. ><B.BODY>The default <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  51802. > file is stored in the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  51803. > directory of the <CX5FX5FEMPHASIS>cplusplus</CX5FX5FEMPHASIS
  51804. > module. You can add new standard types or override existing ones by creating your own <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  51805. > file. </B.BODY
  51806. ><B.BODY>All customization files of this type are read incrementally, which means that you only have to include the standard types that you want to add to the current set of standard types and the ones you want to override. </B.BODY
  51807. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  51808. ></RBW-AUTOGEN
  51809. >The current set of standard types on a certain level is the result of incrementally read <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  51810. > files from higher levels.</N.NOTE
  51811. ></LABEL
  51812. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51813. >Where to store thestand_types.stand_types file</L.LABEL
  51814. ><B.BODY>You can store your <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  51815. > file in the following locations:</B.BODY
  51816. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51817. ></RBW-AUTOGEN
  51818. ></RBW-MARKER
  51819. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Repository</CX5FX5FBULLET.EMPHASIS
  51820. >: open the pseudo object <CX5FX5FEMPHASIS><customization files></CX5FX5FEMPHASIS
  51821. > at the Browser level of your choice and store the file here.</RBW-PARABODY
  51822. ></LB.LIST.BULLET
  51823. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51824. ></RBW-AUTOGEN
  51825. ></RBW-MARKER
  51826. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Module</CX5FX5FBULLET.EMPHASIS
  51827. >: store it in the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  51828. > directory of a user&truehy;defined module. </RBW-PARABODY
  51829. ></LB.LIST.BULLET
  51830. ><B.BODY>Storing it in a module is the preferred way.</B.BODY
  51831. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  51832. ><CX5FX5FTITLE></CX5FX5FTITLE
  51833. > for details on user&truehy;defined modules.</B.BODY
  51834. ></LABEL
  51835. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="C++ types"></RBW-IDXTERM
  51836. ><RBW-ANCHOR ID="37444"></RBW-ANCHOR
  51837. >C++ Types</SS.SUBSEC.HEAD
  51838. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51839. >Mapping standard types to C++ types</L.LABEL
  51840. ><B.BODY>C++ types are data types that are supported by the C++ compiler you are using. The standard types are mapped to these C++ types..</B.BODY
  51841. ><B.BODY>The mapping is taken care of by the following customization file:</B.BODY
  51842. ><LT.LIST.TEXT><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  51843. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  51844. >\<CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  51845. >\<CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  51846. >\<CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  51847. ></LT.LIST.TEXT
  51848. ></LABEL
  51849. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51850. >What does the lang_types file look like?</L.LABEL
  51851. ><B.BODY>Here is an example of a <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  51852. > file for the Sun C++ compiler.</B.BODY
  51853. ><B.BODY>The first column in this file lists the standard types. These must be consistent with the types in the <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  51854. > file. The second column lists the C types the standard types must be mapped upon. In the column <CX5FX5FINPUT>range</CX5FX5FINPUT
  51855. > the type of brackets used in the target language is indicated.</B.BODY
  51856. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  51857. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  51858. ><EWM.EXAMPLEW.MONO># StandardType                 | Min 1    | Max 1    | Min 2    | Max 2</EWM.EXAMPLEW.MONO
  51859. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  51860. ><EWM.EXAMPLEW.MONO>char                           |0         |32767     |0         |0</EWM.EXAMPLEW.MONO
  51861. ><EWM.EXAMPLEW.MONO>uns_char                       |0         |32767     |0         |0</EWM.EXAMPLEW.MONO
  51862. ><EWM.EXAMPLEW.MONO>dec                            |0         |32        |0         |32</EWM.EXAMPLEW.MONO
  51863. ><EWM.EXAMPLEW.MONO>decimal                        |0         |32        |0         |32</EWM.EXAMPLEW.MONO
  51864. ><EWM.EXAMPLEW.MONO>double_precision               |0         |13        |0         |0</EWM.EXAMPLEW.MONO
  51865. ><EWM.EXAMPLEW.MONO>float                          |0         |13        |0         |0</EWM.EXAMPLEW.MONO
  51866. ><EWM.EXAMPLEW.MONO>double                         |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51867. ><EWM.EXAMPLEW.MONO>int                            |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51868. ><EWM.EXAMPLEW.MONO>integer                        |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51869. ><EWM.EXAMPLEW.MONO>unsigned                       |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51870. ><EWM.EXAMPLEW.MONO>short                          |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51871. ><EWM.EXAMPLEW.MONO>uns_short                      |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51872. ><EWM.EXAMPLEW.MONO>long                           |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51873. ><EWM.EXAMPLEW.MONO>uns_long                       |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51874. ><EWM.EXAMPLEW.MONO>numeric                        |0         |32        |0         |32</EWM.EXAMPLEW.MONO
  51875. ><EWM.EXAMPLEW.MONO>real                           |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51876. ><EWM.EXAMPLEW.MONO>smallint                       |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51877. ><EWM.EXAMPLEW.MONO>varchar                        |1         |254       |0         |0</EWM.EXAMPLEW.MONO
  51878. ><EWM.EXAMPLEW.MONO>genptr                         |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51879. ><EWM.EXAMPLEW.MONO>notype                         |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51880. ><EWM.EXAMPLEW.MONO>flag                           |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51881. ><EWM.EXAMPLEW.MONO>flag_t                         |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51882. ><EWM.EXAMPLEW.MONO>class_type                     |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51883. ><EWM.EXAMPLEW.MONO>object_id                      |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51884. ><EWM.EXAMPLEW.MONO>enum                           |0         |0         |0         |0</EWM.EXAMPLEW.MONO
  51885. ></LABEL
  51886. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51887. >Customizing the lang_types.lang_types file</L.LABEL
  51888. ><B.BODY>You can create user&truehy;defined <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  51889. > files if you want to add a language type to the current set or change an existing one.</B.BODY
  51890. ><B.BODY>The way to do that is analogous to creating a customization file for the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  51891. > file (see <RBW-XREF REFID="28522" TYPE="XREF-TEXTCOPY">Customizing Types</RBW-XREF
  51892. >).</B.BODY
  51893. ></LABEL
  51894. ></SUBSECTION
  51895. ></SECTION
  51896. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="30129"></RBW-ANCHOR
  51897. >Customizing the Extension of Generated Files</S.SECTION.HEAD
  51898. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51899. >Default file extensions</L.LABEL
  51900. ><B.BODY>By default, the extension for generated source files is as follows:<CX5FX5FFILE.NAME></CX5FX5FFILE.NAME
  51901. ></B.BODY
  51902. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="85p"><COLSPEC COLNAME="2" COLWIDTH="178p"><COLSPEC COLNAME="3" COLWIDTH="183p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Platform</CELLHEADING
  51903. ></ENTRY
  51904. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Source file extension</CELLHEADING
  51905. ></ENTRY
  51906. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Header file extension</CELLHEADING
  51907. ></ENTRY
  51908. ></RBW-ROW
  51909. ></THEAD
  51910. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Windows</CELLBODY
  51911. ></ENTRY
  51912. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>.cpp</CX5FX5FFILE.NAME
  51913. ></CELLBODY
  51914. ></ENTRY
  51915. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>.h</CX5FX5FFILE.NAME
  51916. ></CELLBODY
  51917. ></ENTRY
  51918. ></RBW-ROW
  51919. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UNIX</CELLBODY
  51920. ></ENTRY
  51921. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>.cxx</CX5FX5FFILE.NAME
  51922. ></CELLBODY
  51923. ></ENTRY
  51924. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>.hxx</CX5FX5FFILE.NAME
  51925. ></CELLBODY
  51926. ></ENTRY
  51927. ></RBW-ROW
  51928. ></TBODY
  51929. ></TGROUP
  51930. ></RBW-TABLE
  51931. ><B.BODY>You can change the default extension into something else, like <CX5FX5FFILE.NAME>.c</CX5FX5FFILE.NAME
  51932. > or <CX5FX5FFILE.NAME>.C</CX5FX5FFILE.NAME
  51933. > using the customization file <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  51934. >.</B.BODY
  51935. ></LABEL
  51936. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51937. >Customization file in repository or module</L.LABEL
  51938. ><B.BODY>To change the default extension, you have to create an ObjectTeam customization file in which the default settings are redefined. You can create this customization file on different repository levels, or you can create an ObjectTeam module and store it in the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  51939. > directory of that module. </B.BODY
  51940. ><B.BODY>The advantage of storing the file in the repository is that you can use a user&truehy;friendly Customization Editor to edit the file, whereas storing the file in a module offers you better control over whether and where the customized file must be used.</B.BODY
  51941. ></LABEL
  51942. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51943. >Customizing the <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  51944. > file</L.LABEL
  51945. ><B.BODY>The default <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  51946. > file is stored in the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  51947. > directory of the module that handles the integration of your C++ compiler with ObjectTeam (cpp&truehy;cc&truehy;sun, cpp&truehy;bc&truehy;45, and so on).</B.BODY
  51948. ><B.BODY>You can redefine default file extensions by creating your own <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  51949. > file. </B.BODY
  51950. ><B.BODY>All customization files of this type are read incrementally, which means that you only have to include the standard types that you want to add to the current set of standard types and the ones you want to override. </B.BODY
  51951. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  51952. ></RBW-AUTOGEN
  51953. >The current set of standard types on a certain level is the result of incrementally read <CX5FX5FFILE.NAME>objtypes.objtypes</CX5FX5FFILE.NAME
  51954. > files from higher levels.</N.NOTE
  51955. ></LABEL
  51956. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51957. >Where to store the stand_types.stand_types file</L.LABEL
  51958. ><B.BODY>You can store your <CX5FX5FFILE.NAME>objtypes.objtypes</CX5FX5FFILE.NAME
  51959. > file in the following locations:</B.BODY
  51960. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51961. ></RBW-AUTOGEN
  51962. ></RBW-MARKER
  51963. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Repository</CX5FX5FBULLET.EMPHASIS
  51964. >: open the pseudo object <CX5FX5FEMPHASIS><customization files></CX5FX5FEMPHASIS
  51965. > at the Browser level of your choice and store the file here.</RBW-PARABODY
  51966. ></LB.LIST.BULLET
  51967. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  51968. ></RBW-AUTOGEN
  51969. ></RBW-MARKER
  51970. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Module</CX5FX5FBULLET.EMPHASIS
  51971. >: store it in the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  51972. > directory of a user&truehy;defined module. </RBW-PARABODY
  51973. ></LB.LIST.BULLET
  51974. ><B.BODY>Storing it in a module is the preferred way.</B.BODY
  51975. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  51976. ><CX5FX5FTITLE></CX5FX5FTITLE
  51977. >for details on user&truehy;defined modules.</B.BODY
  51978. ></LABEL
  51979. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  51980. >How to change the default extension</L.LABEL
  51981. ><B.BODY>In the steps mentioned below it is assumed that the customization file used to change the default extension is stored in the repository.</B.BODY
  51982. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  51983. ></RBW-AUTOGEN
  51984. ></RBW-MARKER
  51985. ><RBW-PARABODY>To change the extension of generated source files:</RBW-PARABODY
  51986. ></P.PROCEDURE
  51987. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  51988. ></RBW-AUTOGEN
  51989. ></RBW-MARKER
  51990. ><RBW-PARABODY>Create a customization file <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  51991. > </RBW-PARABODY
  51992. ></LN.LIST.NUM
  51993. ><LT.LIST.TEXT>You do this by opening the pseudo object <customization files> on an appropriate Browser level, select File | New and select <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  51994. > from the dialog box.</LT.LIST.TEXT
  51995. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  51996. ></RBW-AUTOGEN
  51997. ></RBW-MARKER
  51998. ><RBW-PARABODY>Double&truehy;click on the new customization file in the information area of the Browser.</RBW-PARABODY
  51999. ></LN.LIST.NUM
  52000. ><LR.LIST.RESULT>The Object Type Customization Editor starts up.</LR.LIST.RESULT
  52001. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  52002. ></RBW-AUTOGEN
  52003. ></RBW-MARKER
  52004. ><RBW-PARABODY>To change the extension for C++ files, for example, select the row containing the Repository Type <CX5FX5FOBJECT.NAME>External File Version</CX5FX5FOBJECT.NAME
  52005. > and the Browser Type <CX5FX5FOBJECT.NAME>c++</CX5FX5FOBJECT.NAME
  52006. > </RBW-PARABODY
  52007. ></LN.LIST.NUM
  52008. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  52009. ></RBW-AUTOGEN
  52010. ></RBW-MARKER
  52011. ><RBW-PARABODY>Select Edit | Redefine</RBW-PARABODY
  52012. ></LN.LIST.NUM
  52013. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  52014. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  52015. ></RBW-AUTOGEN
  52016. ></RBW-MARKER
  52017. ><RBW-PARABODY>Click on the Interface tab in this dialog box</RBW-PARABODY
  52018. ></LN.LIST.NUM
  52019. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00531.unk" origfile="pics/objextfv.gif" origtype="X" origdoc="../../sources/cpp/cppcust.fm5.mif"></RBW-GRAPHIC
  52020. ></FA.FIGURE.ANCHOR
  52021. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  52022. ></RBW-AUTOGEN
  52023. ></RBW-MARKER
  52024. ><RBW-PARABODY>Change the value <CX5FX5FOBJECT.NAME>cxx</CX5FX5FOBJECT.NAME
  52025. > in the field File system extension into the preferred extension and click OK.</RBW-PARABODY
  52026. ></LN.LIST.NUM
  52027. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  52028. ></RBW-AUTOGEN
  52029. ></RBW-MARKER
  52030. ><RBW-PARABODY>Select File | Save in the Object Type Customization Editor.</RBW-PARABODY
  52031. ></LN.LIST.NUM
  52032. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  52033. ></RBW-AUTOGEN
  52034. ></RBW-MARKER
  52035. ><RBW-PARABODY>To make sure the new customization file is read by ObjectTeam, go to Corporate Level in the Browser and go back to Implementation System level.</RBW-PARABODY
  52036. ></LN.LIST.NUM
  52037. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  52038. ></RBW-AUTOGEN
  52039. ></RBW-MARKER
  52040. ><RBW-PARABODY>To test if your customization takes effect, select File | New | External File Version.</RBW-PARABODY
  52041. ></LN.LIST.NUM
  52042. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  52043. ></RBW-AUTOGEN
  52044. ></RBW-MARKER
  52045. ><RBW-PARABODY>Select <CX5FX5FOBJECT.NAME>c++</CX5FX5FOBJECT.NAME
  52046. > from the dialog box and click the Edit button</RBW-PARABODY
  52047. ></LN.LIST.NUM
  52048. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  52049. ></RBW-AUTOGEN
  52050. ></RBW-MARKER
  52051. ><RBW-PARABODY>The text editor that is now started up should show the file name with the new extension.</RBW-PARABODY
  52052. ></LN.LIST.NUM
  52053. ><B.BODY>Newly generated files will have the new extension in your user environment. However, the column Type in the information area of the Browser on Implementation System level still reads c++.</B.BODY
  52054. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  52055. ></RBW-AUTOGEN
  52056. >Delete files that were generated before you created the customization file. When you generate them again, they will have the new file extension.</T.TIP
  52057. ></LABEL
  52058. ></SECTION
  52059. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="32725"></RBW-ANCHOR
  52060. >Customizing the Location of Generated Files</S.SECTION.HEAD
  52061. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52062. >Default file extensions</L.LABEL
  52063. ><B.BODY>Generated source files and header files are stored in the user environment. By default, both file types are stored in the same directory. </B.BODY
  52064. ><B.BODY>You can customize the code generator in such a way that header files are stored in one directory, and source file in another. </B.BODY
  52065. ></LABEL
  52066. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52067. >How to customize the location of generated files</L.LABEL
  52068. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  52069. ></RBW-AUTOGEN
  52070. ></RBW-MARKER
  52071. ><RBW-PARABODY>To customize the default location of generated files:</RBW-PARABODY
  52072. ></P.PROCEDURE
  52073. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  52074. ></RBW-AUTOGEN
  52075. ></RBW-MARKER
  52076. ><RBW-PARABODY>Create a user&truehy;defined module</RBW-PARABODY
  52077. ></LN.LIST.NUM
  52078. ><LT.LIST.TEXT>See <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  52079. ><CX5FX5FTITLE></CX5FX5FTITLE
  52080. > for details on how to create a module.</LT.LIST.TEXT
  52081. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  52082. ></RBW-AUTOGEN
  52083. ></RBW-MARKER
  52084. ><RBW-PARABODY>Create a <CX5FX5FFILE.NAME>properties.properties</CX5FX5FFILE.NAME
  52085. > file in the module directory</RBW-PARABODY
  52086. ></LN.LIST.NUM
  52087. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  52088. ></RBW-AUTOGEN
  52089. ></RBW-MARKER
  52090. ><RBW-PARABODY>Copy the following file over to the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  52091. > directory of this module:</RBW-PARABODY
  52092. ></LN.LIST.NUM
  52093. ><LT.LIST.TEXT><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  52094. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  52095. >\<CX5FX5FFILE.NAME>fstorage.tcl</CX5FX5FFILE.NAME
  52096. ></LT.LIST.TEXT
  52097. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  52098. ></RBW-AUTOGEN
  52099. ></RBW-MARKER
  52100. ><RBW-PARABODY>Edit the Tcl procedure <CX5FX5FOBJECT.NAME>fstorage::getFilePath</CX5FX5FOBJECT.NAME
  52101. > in the <CX5FX5FFILE.NAME>fstorage.tcl</CX5FX5FFILE.NAME
  52102. > file</RBW-PARABODY
  52103. ></LN.LIST.NUM
  52104. ><LT.LIST.TEXT>This procedure takes care of storing generated files.</LT.LIST.TEXT
  52105. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  52106. ></RBW-AUTOGEN
  52107. ></RBW-MARKER
  52108. ><RBW-PARABODY>Activate the module in ObjectTeam.</RBW-PARABODY
  52109. ></LN.LIST.NUM
  52110. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  52111. ></RBW-AUTOGEN
  52112. ></RBW-MARKER
  52113. ><RBW-PARABODY>Generate new code. </RBW-PARABODY
  52114. ></LN.LIST.NUM
  52115. ><B.BODY>Newly generated files will be stored in the new location.</B.BODY
  52116. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  52117. ></RBW-AUTOGEN
  52118. >Delete files that were generated before you created the customization file. When you regenerate them, they will be stored in the new location.</T.TIP
  52119. ></LABEL
  52120. ></SECTION
  52121. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40004"></RBW-ANCHOR
  52122. >Customizing Standard Headers</S.SECTION.HEAD
  52123. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52124. >Default file headers</L.LABEL
  52125. ><B.BODY>By default, the following headers are generated for C++ source and header files:</B.BODY
  52126. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  52127. ><EWM.EXAMPLEW.MONO>// File          : <CX5FX5FVARIABLE>fileName</CX5FX5FVARIABLE
  52128. ></EWM.EXAMPLEW.MONO
  52129. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  52130. ><EWM.EXAMPLEW.MONO>// Project       : <CX5FX5FVARIABLE>projectName</CX5FX5FVARIABLE
  52131. ></EWM.EXAMPLEW.MONO
  52132. ><EWM.EXAMPLEW.MONO>// Configuration : <CX5FX5FVARIABLE>configurationName configurationVersion</CX5FX5FVARIABLE
  52133. ></EWM.EXAMPLEW.MONO
  52134. ><EWM.EXAMPLEW.MONO>// Phase         : <CX5FX5FVARIABLE>phaseName</CX5FX5FVARIABLE
  52135. > <CX5FX5FVARIABLE>phaseVersion</CX5FX5FVARIABLE
  52136. ></EWM.EXAMPLEW.MONO
  52137. ><EWM.EXAMPLEW.MONO>// System        : <CX5FX5FVARIABLE>systemName systemVersion</CX5FX5FVARIABLE
  52138. ></EWM.EXAMPLEW.MONO
  52139. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  52140. ><B.BODY>The default header for generated makefiles are similar:</B.BODY
  52141. ><EWM.EXAMPLEW.MONO>##</EWM.EXAMPLEW.MONO
  52142. ><EWM.EXAMPLEW.MONO>## File          : <CX5FX5FVARIABLE>fileName</CX5FX5FVARIABLE
  52143. ></EWM.EXAMPLEW.MONO
  52144. ><EWM.EXAMPLEW.MONO>##</EWM.EXAMPLEW.MONO
  52145. ><EWM.EXAMPLEW.MONO>## Project       : <CX5FX5FVARIABLE>projectName</CX5FX5FVARIABLE
  52146. ></EWM.EXAMPLEW.MONO
  52147. ><EWM.EXAMPLEW.MONO>## Configuration : <CX5FX5FVARIABLE>configurationName configurationVersion</CX5FX5FVARIABLE
  52148. ></EWM.EXAMPLEW.MONO
  52149. ><EWM.EXAMPLEW.MONO>## Phase         : <CX5FX5FVARIABLE>phaseName</CX5FX5FVARIABLE
  52150. > <CX5FX5FVARIABLE>phaseVersion</CX5FX5FVARIABLE
  52151. ></EWM.EXAMPLEW.MONO
  52152. ><EWM.EXAMPLEW.MONO>## System        : <CX5FX5FVARIABLE>systemName systemVersion</CX5FX5FVARIABLE
  52153. ></EWM.EXAMPLEW.MONO
  52154. ><EWM.EXAMPLEW.MONO>##</EWM.EXAMPLEW.MONO
  52155. ></LABEL
  52156. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52157. >Template files</L.LABEL
  52158. ><B.BODY>The generated headers are the result of expanded template files. For every type of generated file such a template file exists:</B.BODY
  52159. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  52160. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  52161. >\<CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  52162. >\<CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  52163. >\<CX5FX5FFILE.NAME>c++.hdr</CX5FX5FFILE.NAME
  52164. ></B.BODY
  52165. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  52166. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  52167. >\<CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  52168. >\<CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  52169. >\<CX5FX5FFILE.NAME>h++.hdr</CX5FX5FFILE.NAME
  52170. ></B.BODY
  52171. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  52172. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  52173. >\<CX5FX5FFILE.NAME>cplusplus</CX5FX5FFILE.NAME
  52174. >\<CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  52175. >\<CX5FX5FFILE.NAME>makefile.hdr</CX5FX5FFILE.NAME
  52176. ></B.BODY
  52177. ></LABEL
  52178. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52179. >Tcl variables</L.LABEL
  52180. ><B.BODY>The following global Tcl variables are used in the template files to generate file names, project names, configuration names, and so on:</B.BODY
  52181. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl variable</CELLHEADING
  52182. ></ENTRY
  52183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Expands to</CELLHEADING
  52184. ></ENTRY
  52185. ></RBW-ROW
  52186. ></THEAD
  52187. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$filename</CELLBODY
  52188. ></ENTRY
  52189. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>File Name</CELLBODY
  52190. ></ENTRY
  52191. ></RBW-ROW
  52192. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$projName</CELLBODY
  52193. ></ENTRY
  52194. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Project Name</CELLBODY
  52195. ></ENTRY
  52196. ></RBW-ROW
  52197. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$configName</CELLBODY
  52198. ></ENTRY
  52199. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration Name</CELLBODY
  52200. ></ENTRY
  52201. ></RBW-ROW
  52202. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$configV</CELLBODY
  52203. ></ENTRY
  52204. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configuration Version</CELLBODY
  52205. ></ENTRY
  52206. ></RBW-ROW
  52207. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$phaseName</CELLBODY
  52208. ></ENTRY
  52209. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase Name</CELLBODY
  52210. ></ENTRY
  52211. ></RBW-ROW
  52212. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$phaseV</CELLBODY
  52213. ></ENTRY
  52214. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Phase Version</CELLBODY
  52215. ></ENTRY
  52216. ></RBW-ROW
  52217. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$systemName</CELLBODY
  52218. ></ENTRY
  52219. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System Name</CELLBODY
  52220. ></ENTRY
  52221. ></RBW-ROW
  52222. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$systemV</CELLBODY
  52223. ></ENTRY
  52224. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>System Version</CELLBODY
  52225. ></ENTRY
  52226. ></RBW-ROW
  52227. ></TBODY
  52228. ></TGROUP
  52229. ></RBW-TABLE
  52230. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  52231. ></RBW-AUTOGEN
  52232. >The built&truehy;in Tcl command <CX5FX5FPROCEDURE.NAME>expand_file</CX5FX5FPROCEDURE.NAME
  52233. > is used for expanding files containing Tcl variables. See <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  52234. ><CX5FX5FTITLE></CX5FX5FTITLE
  52235. > for details on this command.</N.NOTE
  52236. ></LABEL
  52237. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52238. >How to change the default header</L.LABEL
  52239. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  52240. ></RBW-AUTOGEN
  52241. ></RBW-MARKER
  52242. ><RBW-PARABODY>To change the extension of generated source files:</RBW-PARABODY
  52243. ></P.PROCEDURE
  52244. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  52245. ></RBW-AUTOGEN
  52246. ></RBW-MARKER
  52247. ><RBW-PARABODY>Create a customization file <CX5FX5FFILE.NAME>c++.hdr</CX5FX5FFILE.NAME
  52248. >, <CX5FX5FFILE.NAME>h++.hdr</CX5FX5FFILE.NAME
  52249. > or <CX5FX5FFILE.NAME>makefile.hdr</CX5FX5FFILE.NAME
  52250. >.</RBW-PARABODY
  52251. ></LN.LIST.NUM
  52252. ><LT.LIST.TEXT>You do this by opening the pseudo object <CX5FX5FEMPHASIS><customization files></CX5FX5FEMPHASIS
  52253. > on an appropriate Browser level, select File | New and enter the name of the customization file in the dialog box.</LT.LIST.TEXT
  52254. ><W2.WARNING.2><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  52255. ></RBW-AUTOGEN
  52256. >Do not create a <CX5FX5FFILE.NAME>.hdr</CX5FX5FFILE.NAME
  52257. > user customization file. </W2.WARNING.2
  52258. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  52259. ></RBW-AUTOGEN
  52260. ></RBW-MARKER
  52261. ><RBW-PARABODY>Double&truehy;click on the new customization file in the information area of the Browser.</RBW-PARABODY
  52262. ></LN.LIST.NUM
  52263. ><LR.LIST.RESULT>The Text Editor starts up.</LR.LIST.RESULT
  52264. ><LT.LIST.TEXT>You can copy the contents of the file you are customizing from the <CX5FX5FFILE.NAME>cplusplus\etc</CX5FX5FFILE.NAME
  52265. > directory to the new customization file. You can use the same Tcl variables that are used in the original<CX5FX5FFILE.NAME>.hdr</CX5FX5FFILE.NAME
  52266. > file.</LT.LIST.TEXT
  52267. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  52268. ></RBW-AUTOGEN
  52269. ></RBW-MARKER
  52270. ><RBW-PARABODY>Edit the customization file and save it</RBW-PARABODY
  52271. ></LN.LIST.NUM
  52272. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  52273. ></RBW-AUTOGEN
  52274. ></RBW-MARKER
  52275. ><RBW-PARABODY>To make sure the new customization file is read by ObjectTeam, go to Corporate Level in the Browser and go back to Implementation System level.</RBW-PARABODY
  52276. ></LN.LIST.NUM
  52277. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  52278. ></RBW-AUTOGEN
  52279. ></RBW-MARKER
  52280. ><RBW-PARABODY>To test if your customization takes effect, generate code for a class for which no code was generated yet and edit the header file, source file or makefile.</RBW-PARABODY
  52281. ></LN.LIST.NUM
  52282. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  52283. ></RBW-AUTOGEN
  52284. >Only newly generated files will have the new header. Files that were generated before you created the customization file will not change, unless you regenerate them.</N.NOTE
  52285. ><RBWAUTO-0001></RBWAUTO-0001
  52286. ><!--
  52287.  
  52288.  
  52289.  
  52290.  
  52291.  
  52292. CONVERTING SOURCE FILE ../../sources/cpp/cppprop.fm5.mif
  52293.  
  52294.  
  52295. --><B.BODY></B.BODY
  52296. ><B.BODY></B.BODY
  52297. ><B.BODY></B.BODY
  52298. ><B.BODY></B.BODY
  52299. ><B.BODY></B.BODY
  52300. ></LABEL
  52301. ></SECTION
  52302. ></CHAPTER
  52303. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  52304. ></RBW-AUTOGEN
  52305. >Properties<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  52306. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  52307. ></RBW-SYSOBJ
  52308. ></A.APPENDIX.HEAD
  52309. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52310. >C++ code generation properties</L.LABEL
  52311. ><B.BODY>The following table lists all the properties that effect C++ code generation. They are available in the CD in the Object Design phase.</B.BODY
  52312. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="157p"><COLSPEC COLNAME="2" COLWIDTH="135p"><COLSPEC COLNAME="3" COLWIDTH="120p"><COLSPEC COLNAME="4" COLWIDTH="214p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  52313. ></ENTRY
  52314. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  52315. ></ENTRY
  52316. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  52317. ><CELLHEADING>Value</CELLHEADING
  52318. ></ENTRY
  52319. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>For More Information</CELLHEADING
  52320. ></ENTRY
  52321. ></RBW-ROW
  52322. ></THEAD
  52323. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Access</CELLBODY
  52324. ></ENTRY
  52325. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  52326. ></ENTRY
  52327. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  52328. ><CELLBODY>Protected</CELLBODY
  52329. ><CELLBODY>Private</CELLBODY
  52330. ><CELLBODY>None</CELLBODY
  52331. ></ENTRY
  52332. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34414" TYPE="XREF-TEXTCOPY">Specifying Association Accessor Method Access</RBW-XREF
  52333. ></CELLBODY
  52334. ></ENTRY
  52335. ></RBW-ROW
  52336. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Access</CELLBODY
  52337. ></ENTRY
  52338. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  52339. ></ENTRY
  52340. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  52341. ><CELLBODY>Protected</CELLBODY
  52342. ><CELLBODY>Private</CELLBODY
  52343. ><CELLBODY>None</CELLBODY
  52344. ></ENTRY
  52345. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="29557" TYPE="XREF-TEXTCOPY">Specifying Attribute Accessor Method Access</RBW-XREF
  52346. ></CELLBODY
  52347. ></ENTRY
  52348. ></RBW-ROW
  52349. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Library</CELLBODY
  52350. ></ENTRY
  52351. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association End</CELLBODY
  52352. ></ENTRY
  52353. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52354. ></ENTRY
  52355. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31321" TYPE="XREF-TEXTCOPY">Specifying a Class Library</RBW-XREF
  52356. ></CELLBODY
  52357. ></ENTRY
  52358. ></RBW-ROW
  52359. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant Function</CELLBODY
  52360. ></ENTRY
  52361. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  52362. ></ENTRY
  52363. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  52364. ></ENTRY
  52365. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31580" TYPE="XREF-TEXTCOPY">Specifying Constant Functions</RBW-XREF
  52366. ></CELLBODY
  52367. ></ENTRY
  52368. ></RBW-ROW
  52369. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  52370. ></ENTRY
  52371. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  52372. ></ENTRY
  52373. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52374. ></ENTRY
  52375. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="27543" TYPE="XREF-TEXTCOPY">Data type of the qualifier</RBW-XREF
  52376. ></CELLBODY
  52377. ></ENTRY
  52378. ></RBW-ROW
  52379. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  52380. ></ENTRY
  52381. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  52382. ></ENTRY
  52383. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52384. ></ENTRY
  52385. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="15392" TYPE="XREF-TEXTCOPY">Specifying a Parameter’s Default Value</RBW-XREF
  52386. ></CELLBODY
  52387. ></ENTRY
  52388. ></RBW-ROW
  52389. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dynamic Destructor</CELLBODY
  52390. ></ENTRY
  52391. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  52392. ></ENTRY
  52393. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  52394. ></ENTRY
  52395. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39716" TYPE="XREF-TEXTCOPY">Specifying a Virtual Destructor</RBW-XREF
  52396. ></CELLBODY
  52397. ></ENTRY
  52398. ></RBW-ROW
  52399. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dynamically Bound</CELLBODY
  52400. ></ENTRY
  52401. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  52402. ></ENTRY
  52403. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  52404. ></ENTRY
  52405. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="18829" TYPE="XREF-TEXTCOPY">Specifying Static Methods</RBW-XREF
  52406. ></CELLBODY
  52407. ></ENTRY
  52408. ></RBW-ROW
  52409. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>External Class Source</CELLBODY
  52410. ></ENTRY
  52411. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  52412. ></ENTRY
  52413. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52414. ></ENTRY
  52415. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="20009" TYPE="XREF-TEXTCOPY">Specifying an External Source</RBW-XREF
  52416. ></CELLBODY
  52417. ></ENTRY
  52418. ></RBW-ROW
  52419. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>External Include List</CELLBODY
  52420. ></ENTRY
  52421. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  52422. ></ENTRY
  52423. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52424. ></ENTRY
  52425. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39660" TYPE="XREF-TEXTCOPY">Specifying External Header Files</RBW-XREF
  52426. ></CELLBODY
  52427. ></ENTRY
  52428. ></RBW-ROW
  52429. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  52430. ></ENTRY
  52431. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  52432. ></ENTRY
  52433. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52434. ></ENTRY
  52435. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="14417" TYPE="XREF-TEXTCOPY">Specifying Free Text for a Class</RBW-XREF
  52436. ></CELLBODY
  52437. ></ENTRY
  52438. ></RBW-ROW
  52439. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  52440. ></ENTRY
  52441. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  52442. ></ENTRY
  52443. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52444. ></ENTRY
  52445. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12435" TYPE="XREF-TEXTCOPY">Specifying Attribute Free Text</RBW-XREF
  52446. ></CELLBODY
  52447. ></ENTRY
  52448. ></RBW-ROW
  52449. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  52450. ></ENTRY
  52451. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  52452. ></ENTRY
  52453. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52454. ></ENTRY
  52455. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="38516" TYPE="XREF-TEXTCOPY">Specifying Method Free Text</RBW-XREF
  52456. ></CELLBODY
  52457. ></ENTRY
  52458. ></RBW-ROW
  52459. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  52460. ></ENTRY
  52461. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  52462. ></ENTRY
  52463. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52464. ></ENTRY
  52465. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  52466. ></ENTRY
  52467. ></RBW-ROW
  52468. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  52469. ></ENTRY
  52470. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generalization</CELLBODY
  52471. ></ENTRY
  52472. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52473. ></ENTRY
  52474. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  52475. ></ENTRY
  52476. ></RBW-ROW
  52477. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  52478. ></ENTRY
  52479. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  52480. ></ENTRY
  52481. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52482. ></ENTRY
  52483. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="25709" TYPE="XREF-TEXTCOPY">Specifying Free Text for an Association Attribute</RBW-XREF
  52484. ></CELLBODY
  52485. ></ENTRY
  52486. ></RBW-ROW
  52487. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  52488. ></ENTRY
  52489. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  52490. ></ENTRY
  52491. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52492. ></ENTRY
  52493. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  52494. ></ENTRY
  52495. ></RBW-ROW
  52496. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Implementation Strategy</CELLBODY
  52497. ></ENTRY
  52498. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association End</CELLBODY
  52499. ></ENTRY
  52500. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52501. ></ENTRY
  52502. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19988" TYPE="XREF-TEXTCOPY">Specifying an Implementation Strategy</RBW-XREF
  52503. ></CELLBODY
  52504. ></ENTRY
  52505. ></RBW-ROW
  52506. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Inheritance Access</CELLBODY
  52507. ></ENTRY
  52508. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generalization</CELLBODY
  52509. ></ENTRY
  52510. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  52511. ><CELLBODY>Private</CELLBODY
  52512. ><CELLBODY>Protected</CELLBODY
  52513. ></ENTRY
  52514. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34256" TYPE="XREF-TEXTCOPY">Specifying Inheritance Access</RBW-XREF
  52515. ></CELLBODY
  52516. ></ENTRY
  52517. ></RBW-ROW
  52518. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Inline Method</CELLBODY
  52519. ></ENTRY
  52520. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  52521. ></ENTRY
  52522. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  52523. ></ENTRY
  52524. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="30308" TYPE="XREF-TEXTCOPY">Specifying Inline Methods</RBW-XREF
  52525. ></CELLBODY
  52526. ></ENTRY
  52527. ></RBW-ROW
  52528. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Access</CELLBODY
  52529. ></ENTRY
  52530. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  52531. ></ENTRY
  52532. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  52533. ><CELLBODY>Private</CELLBODY
  52534. ><CELLBODY>Protected</CELLBODY
  52535. ></ENTRY
  52536. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="22538" TYPE="XREF-TEXTCOPY">Specifying Method Access</RBW-XREF
  52537. ></CELLBODY
  52538. ></ENTRY
  52539. ></RBW-ROW
  52540. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nullable</CELLBODY
  52541. ></ENTRY
  52542. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  52543. ></ENTRY
  52544. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  52545. ><CELLBODY>Yes</CELLBODY
  52546. ><CELLBODY>No</CELLBODY
  52547. ></ENTRY
  52548. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="35790" TYPE="XREF-TEXTCOPY">Specifying Mandatory Attributes</RBW-XREF
  52549. > </CELLBODY
  52550. ></ENTRY
  52551. ></RBW-ROW
  52552. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nullable</CELLBODY
  52553. ></ENTRY
  52554. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  52555. ></ENTRY
  52556. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  52557. ><CELLBODY>Yes</CELLBODY
  52558. ><CELLBODY>No</CELLBODY
  52559. ></ENTRY
  52560. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="35790" TYPE="XREF-TEXTCOPY">Specifying Mandatory Attributes</RBW-XREF
  52561. > </CELLBODY
  52562. ></ENTRY
  52563. ></RBW-ROW
  52564. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  52565. ></ENTRY
  52566. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  52567. ></ENTRY
  52568. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  52569. ><CELLBODY>Reference</CELLBODY
  52570. ><CELLBODY>Reference to Const</CELLBODY
  52571. ><CELLBODY>Pointer</CELLBODY
  52572. ><CELLBODY>Pointer to Const</CELLBODY
  52573. ><CELLBODY>Value</CELLBODY
  52574. ></ENTRY
  52575. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34259" TYPE="XREF-TEXTCOPY">Editing method properties</RBW-XREF
  52576. ></CELLBODY
  52577. ></ENTRY
  52578. ></RBW-ROW
  52579. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  52580. ></ENTRY
  52581. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  52582. ></ENTRY
  52583. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  52584. ><CELLBODY>Reference</CELLBODY
  52585. ><CELLBODY>Reference to Const</CELLBODY
  52586. ><CELLBODY>Pointer</CELLBODY
  52587. ><CELLBODY>Pointer to Const</CELLBODY
  52588. ><CELLBODY>Value</CELLBODY
  52589. ></ENTRY
  52590. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40884" TYPE="XREF-TEXTCOPY">Modifying Parameter Types</RBW-XREF
  52591. ></CELLBODY
  52592. ></ENTRY
  52593. ></RBW-ROW
  52594. ></TBODY
  52595. ></TGROUP
  52596. ><RBW-ICONIZE></RBW-TABLE
  52597. ><RBWAUTO-0001></RBWAUTO-0001
  52598. ><!--
  52599.  
  52600.  
  52601.  
  52602.  
  52603.  
  52604. CONVERTING SOURCE FILE ../../sources/cpp/exappl.fm5.mif
  52605.  
  52606.  
  52607. --><B.BODY></B.BODY
  52608. ><B.BODY></B.BODY
  52609. ><B.BODY></B.BODY
  52610. ><B.BODY></B.BODY
  52611. ><B.BODY></B.BODY
  52612. ></LABEL
  52613. ></APPENDIX
  52614. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix B&rbwtab;</CX5FX5FZCHAPTER.NUM
  52615. ></RBW-AUTOGEN
  52616. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  52617. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  52618. ></RBW-SYSOBJ
  52619. ><RBW-ANCHOR ID="11059"></RBW-ANCHOR
  52620. >Example Application</A.APPENDIX.HEAD
  52621. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52622. >Introduction</L.LABEL
  52623. ><B.BODY>This section contains an example of a Class Diagram and user&truehy;defined code with which a simple C++ application can be created. The application administrates songs on an audio medium (a compact disc, for example).</B.BODY
  52624. ></LABEL
  52625. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52626. >What does the example application do?</L.LABEL
  52627. ><B.BODY>The example application does the following:</B.BODY
  52628. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  52629. ></RBW-AUTOGEN
  52630. ></RBW-MARKER
  52631. ><RBW-PARABODY>It adds a number of songs to the current set of songs.</RBW-PARABODY
  52632. ></LB.LIST.BULLET
  52633. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  52634. ></RBW-AUTOGEN
  52635. ></RBW-MARKER
  52636. ><RBW-PARABODY>It prints the name, the author, the performer and the play time of every song that has been added.</RBW-PARABODY
  52637. ></LB.LIST.BULLET
  52638. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  52639. ></RBW-AUTOGEN
  52640. ></RBW-MARKER
  52641. ><RBW-PARABODY>It prints the title and the total play time of the audio medium. The total play time is calculated by the application.</RBW-PARABODY
  52642. ></LB.LIST.BULLET
  52643. ><B.BODY>The example <CX5FX5FINPUT>main</CX5FX5FINPUT
  52644. > file in this section calls the appropriate functions from the code that was generated by ObjectTeam and later completed with user&truehy;defined code.</B.BODY
  52645. ></LABEL
  52646. ><SECTION><S.SECTION.HEAD>The Object Design Phase</S.SECTION.HEAD
  52647. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52648. >Introduction</L.LABEL
  52649. ><B.BODY>In the Object Design Phase, the model of the application is further refined. The Class Diagram is completed and (C++ dependent) properties are set, where desired.</B.BODY
  52650. ></LABEL
  52651. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52652. >Class Diagram</L.LABEL
  52653. ><B.BODY>The following Class Diagram is the model for the example application:</B.BODY
  52654. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00532.unk" origfile="pics/exCAD.gif" origtype="X" origdoc="../../sources/cpp/exappl.fm5.mif"></RBW-GRAPHIC
  52655. ></FA.FIGURE.ANCHOR
  52656. ></LABEL
  52657. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52658. >Properties</L.LABEL
  52659. ><B.BODY>For most of the classes, attributes, methods, parameters and associations in the model, the default property values are used. The following property values in the class Time, however, are explicitly set to a non&truehy;default value:</B.BODY
  52660. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="100p"><COLSPEC COLNAME="2" COLWIDTH="118p"><COLSPEC COLNAME="3" COLWIDTH="102p"><COLSPEC COLNAME="4" COLWIDTH="126p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Time </CELLHEADING
  52661. ></ENTRY
  52662. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  52663. ></ENTRY
  52664. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  52665. ></ENTRY
  52666. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  52667. ></ENTRY
  52668. ></RBW-ROW
  52669. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  52670. ></ENTRY
  52671. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  52672. ></ENTRY
  52673. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  52674. ></ENTRY
  52675. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set To:</CELLHEADING
  52676. ></ENTRY
  52677. ></RBW-ROW
  52678. ></THEAD
  52679. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>create</CELLBODY
  52680. ></ENTRY
  52681. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Name</CELLBODY
  52682. ></ENTRY
  52683. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52684. ></ENTRY
  52685. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52686. ></ENTRY
  52687. ></RBW-ROW
  52688. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&rbwtab;hour</CELLBODY
  52689. ></ENTRY
  52690. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Name</CELLBODY
  52691. ></ENTRY
  52692. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  52693. ></ENTRY
  52694. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>0</CELLBODY
  52695. ></ENTRY
  52696. ></RBW-ROW
  52697. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&rbwtab;min</CELLBODY
  52698. ></ENTRY
  52699. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Name</CELLBODY
  52700. ></ENTRY
  52701. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  52702. ></ENTRY
  52703. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>0</CELLBODY
  52704. ></ENTRY
  52705. ></RBW-ROW
  52706. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&rbwtab;sec</CELLBODY
  52707. ></ENTRY
  52708. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Name</CELLBODY
  52709. ></ENTRY
  52710. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  52711. ></ENTRY
  52712. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>0</CELLBODY
  52713. ></ENTRY
  52714. ></RBW-ROW
  52715. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorMIN</CELLBODY
  52716. ></ENTRY
  52717. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Name</CELLBODY
  52718. ></ENTRY
  52719. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Inline Function</CELLBODY
  52720. ></ENTRY
  52721. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>True</CELLBODY
  52722. ></ENTRY
  52723. ></RBW-ROW
  52724. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Time</CELLBODY
  52725. ></ENTRY
  52726. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Type</CELLBODY
  52727. ></ENTRY
  52728. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52729. ></ENTRY
  52730. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52731. ></ENTRY
  52732. ></RBW-ROW
  52733. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&rbwtab;right</CELLBODY
  52734. ></ENTRY
  52735. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Name</CELLBODY
  52736. ></ENTRY
  52737. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  52738. ></ENTRY
  52739. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reference To Const</CELLBODY
  52740. ></ENTRY
  52741. ></RBW-ROW
  52742. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&rbwtab;Time</CELLBODY
  52743. ></ENTRY
  52744. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Type</CELLBODY
  52745. ></ENTRY
  52746. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52747. ></ENTRY
  52748. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52749. ></ENTRY
  52750. ></RBW-ROW
  52751. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>operatorPLUS</CELLBODY
  52752. ></ENTRY
  52753. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Name</CELLBODY
  52754. ></ENTRY
  52755. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Inline Function</CELLBODY
  52756. ></ENTRY
  52757. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>True</CELLBODY
  52758. ></ENTRY
  52759. ></RBW-ROW
  52760. ><RBW-ROW><ENTRY COLNAME="1" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Time</CELLBODY
  52761. ></ENTRY
  52762. ><ENTRY COLNAME="2" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Type</CELLBODY
  52763. ></ENTRY
  52764. ><ENTRY COLNAME="3" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52765. ></ENTRY
  52766. ><ENTRY COLNAME="4" ROWSEP="0" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52767. ></ENTRY
  52768. ></RBW-ROW
  52769. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&rbwtab;right</CELLBODY
  52770. ></ENTRY
  52771. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Name</CELLBODY
  52772. ></ENTRY
  52773. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  52774. ></ENTRY
  52775. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reference To Const</CELLBODY
  52776. ></ENTRY
  52777. ></RBW-ROW
  52778. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&rbwtab;Time</CELLBODY
  52779. ></ENTRY
  52780. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Type</CELLBODY
  52781. ></ENTRY
  52782. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52783. ></ENTRY
  52784. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52785. ></ENTRY
  52786. ></RBW-ROW
  52787. ></TBODY
  52788. ></TGROUP
  52789. ></RBW-TABLE
  52790. ><B.BODY></B.BODY
  52791. ></LABEL
  52792. ></SECTION
  52793. ><SECTION><S.SECTION.HEAD>The Implementation Phase</S.SECTION.HEAD
  52794. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52795. >Introduction</L.LABEL
  52796. ><B.BODY>In the Implementation Phase, C++ code is generated from the model as defined in the Object Design phase. This code needs to be completed with implementations of user&truehy;defined methods before it can be compiled. This section provides example code for these method bodies.</B.BODY
  52797. ></LABEL
  52798. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52799. >Implemented Functions</L.LABEL
  52800. ><B.BODY>The table below lists all the methods of all the classes in the example application. Some methods are implemented automatically by the code generator, others are implemented through user&truehy;defined code. Some methods are not implemented at all.</B.BODY
  52801. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="118p"><COLSPEC COLNAME="3" COLWIDTH="222p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  52802. ></ENTRY
  52803. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Method</CELLHEADING
  52804. ></ENTRY
  52805. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated / User&truehy;defined</CELLHEADING
  52806. ></ENTRY
  52807. ></RBW-ROW
  52808. ></THEAD
  52809. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Time</CELLBODY
  52810. ></ENTRY
  52811. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>constructor</CELLBODY
  52812. ></ENTRY
  52813. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>user&truehy;defined</CELLBODY
  52814. ></ENTRY
  52815. ></RBW-ROW
  52816. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52817. ></ENTRY
  52818. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>destructor</CELLBODY
  52819. ></ENTRY
  52820. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>generated</CELLBODY
  52821. ></ENTRY
  52822. ></RBW-ROW
  52823. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52824. ></ENTRY
  52825. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operatorMIN</CX5FX5FINPUT
  52826. ></CELLBODY
  52827. ></ENTRY
  52828. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>user&truehy;defined</CELLBODY
  52829. ></ENTRY
  52830. ></RBW-ROW
  52831. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52832. ></ENTRY
  52833. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>operatorPLUS</CX5FX5FINPUT
  52834. ></CELLBODY
  52835. ></ENTRY
  52836. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>user&truehy;defined</CELLBODY
  52837. ></ENTRY
  52838. ></RBW-ROW
  52839. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52840. ></ENTRY
  52841. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>print</CX5FX5FINPUT
  52842. ></CELLBODY
  52843. ></ENTRY
  52844. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>user&truehy;defined</CELLBODY
  52845. ></ENTRY
  52846. ></RBW-ROW
  52847. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>AudioMedia</CELLBODY
  52848. ></ENTRY
  52849. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>constructor</CELLBODY
  52850. ></ENTRY
  52851. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>generated</CELLBODY
  52852. ></ENTRY
  52853. ></RBW-ROW
  52854. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52855. ></ENTRY
  52856. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>destructor</CELLBODY
  52857. ></ENTRY
  52858. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>generated</CELLBODY
  52859. ></ENTRY
  52860. ></RBW-ROW
  52861. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52862. ></ENTRY
  52863. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>play</CX5FX5FINPUT
  52864. ></CELLBODY
  52865. ></ENTRY
  52866. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>not implemented</CELLBODY
  52867. ></ENTRY
  52868. ></RBW-ROW
  52869. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52870. ></ENTRY
  52871. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>stop</CX5FX5FINPUT
  52872. ></CELLBODY
  52873. ></ENTRY
  52874. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>not implemented</CELLBODY
  52875. ></ENTRY
  52876. ></RBW-ROW
  52877. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52878. ></ENTRY
  52879. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>print</CX5FX5FINPUT
  52880. ></CELLBODY
  52881. ></ENTRY
  52882. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>user&truehy;defined</CELLBODY
  52883. ></ENTRY
  52884. ></RBW-ROW
  52885. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Song</CELLBODY
  52886. ></ENTRY
  52887. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>constructor</CELLBODY
  52888. ></ENTRY
  52889. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>generated</CELLBODY
  52890. ></ENTRY
  52891. ></RBW-ROW
  52892. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52893. ></ENTRY
  52894. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>destructor</CELLBODY
  52895. ></ENTRY
  52896. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>generated</CELLBODY
  52897. ></ENTRY
  52898. ></RBW-ROW
  52899. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52900. ></ENTRY
  52901. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>print</CX5FX5FINPUT
  52902. ></CELLBODY
  52903. ></ENTRY
  52904. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>user&truehy;defined</CELLBODY
  52905. ></ENTRY
  52906. ></RBW-ROW
  52907. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Person</CELLBODY
  52908. ></ENTRY
  52909. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>constructor</CELLBODY
  52910. ></ENTRY
  52911. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>generated</CELLBODY
  52912. ></ENTRY
  52913. ></RBW-ROW
  52914. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52915. ></ENTRY
  52916. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>destructor</CELLBODY
  52917. ></ENTRY
  52918. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>generated</CELLBODY
  52919. ></ENTRY
  52920. ></RBW-ROW
  52921. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  52922. ></ENTRY
  52923. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>print</CX5FX5FINPUT
  52924. ></CELLBODY
  52925. ></ENTRY
  52926. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>user&truehy;defined</CELLBODY
  52927. ></ENTRY
  52928. ></RBW-ROW
  52929. ></TBODY
  52930. ></TGROUP
  52931. ></RBW-TABLE
  52932. ></LABEL
  52933. ><SUBSECTION><SS.SUBSEC.HEAD>The Class Time</SS.SUBSEC.HEAD
  52934. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52935. >Introduction</L.LABEL
  52936. ><B.BODY>All the methods defined for the class Time are implemented in this example. The inline functions <CX5FX5FINPUT>operator&truehy;</CX5FX5FINPUT
  52937. > and <CX5FX5FINPUT>operator+</CX5FX5FINPUT
  52938. > in the header file, the other methods, including the user&truehy;defined constructor, in the source file.</B.BODY
  52939. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  52940. ></RBW-AUTOGEN
  52941. >The user&truehy;defined code that was added later to the generated files is printed in bold.</N.NOTE
  52942. ></LABEL
  52943. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  52944. >Time.hxx</L.LABEL
  52945. ><B.BODY>Unlike other functions, the implementations of inline functions are stored in the header file. The methods <CX5FX5FINPUT>operator&truehy;</CX5FX5FINPUT
  52946. > and <CX5FX5FINPUT>operator+</CX5FX5FINPUT
  52947. > were specified as inline functions.</B.BODY
  52948. ><B.BODY><CX5FX5FINPUT>operator&truehy;</CX5FX5FINPUT
  52949. > subtracts one time unit from the other, whereas <CX5FX5FINPUT>operator+</CX5FX5FINPUT
  52950. > adds up two time units.</B.BODY
  52951. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  52952. ><EWM.EXAMPLEW.MONO>// File          : Time.hxx</EWM.EXAMPLEW.MONO
  52953. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  52954. ><EWM.EXAMPLEW.MONO>class Time {</EWM.EXAMPLEW.MONO
  52955. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  52956. ><EWM.EXAMPLEW.MONO>public:</EWM.EXAMPLEW.MONO
  52957. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  52958. ><EWM.EXAMPLEW.MONO>    Time operator&truehy;(const Time& right);</EWM.EXAMPLEW.MONO
  52959. ><EWM.EXAMPLEW.MONO>    Time operator+(const Time& right);</EWM.EXAMPLEW.MONO
  52960. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  52961. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  52962. ><EWM.EXAMPLEW.MONO>inline Time Time::operator&truehy;(const Time& right)</EWM.EXAMPLEW.MONO
  52963. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  52964. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;long tl,tr,ta;</CX5FX5FBULLET.EMPHASIS
  52965. ></EWM.EXAMPLEW.MONO
  52966. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;int h,m,s;</CX5FX5FBULLET.EMPHASIS
  52967. ></EWM.EXAMPLEW.MONO
  52968. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;tl = ((long)hour*3600L)+((long)min*60L)+(long)sec;</CX5FX5FBULLET.EMPHASIS
  52969. ></EWM.EXAMPLEW.MONO
  52970. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;tr = ((long)right.hour*3600L)+((long)right.min*60L)+(long)right.sec;</CX5FX5FBULLET.EMPHASIS
  52971. ></EWM.EXAMPLEW.MONO
  52972. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;ta = tl &truehy; tr;</CX5FX5FBULLET.EMPHASIS
  52973. ></EWM.EXAMPLEW.MONO
  52974. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;h = ta/3600;</CX5FX5FBULLET.EMPHASIS
  52975. ></EWM.EXAMPLEW.MONO
  52976. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;m = (ta%3600)/60;</CX5FX5FBULLET.EMPHASIS
  52977. ></EWM.EXAMPLEW.MONO
  52978. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;s = ta%60;</CX5FX5FBULLET.EMPHASIS
  52979. ></EWM.EXAMPLEW.MONO
  52980. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;return Time(h,m,s);</CX5FX5FBULLET.EMPHASIS
  52981. ></EWM.EXAMPLEW.MONO
  52982. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  52983. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  52984. ><EWM.EXAMPLEW.MONO>inline Time Time::operator+(const Time& right)</EWM.EXAMPLEW.MONO
  52985. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  52986. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;long tl,tr,ta;</CX5FX5FBULLET.EMPHASIS
  52987. ></EWM.EXAMPLEW.MONO
  52988. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;int h,m,s;</CX5FX5FBULLET.EMPHASIS
  52989. ></EWM.EXAMPLEW.MONO
  52990. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;tl = ((long)hour*3600L)+((long)min*60L)+(long)sec;</CX5FX5FBULLET.EMPHASIS
  52991. ></EWM.EXAMPLEW.MONO
  52992. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;tr = ((long)right.hour*3600L)+((long)right.min*60L)+(long)right.sec;</CX5FX5FBULLET.EMPHASIS
  52993. ></EWM.EXAMPLEW.MONO
  52994. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;ta = tl + tr;</CX5FX5FBULLET.EMPHASIS
  52995. ></EWM.EXAMPLEW.MONO
  52996. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;h = ta/3600;</CX5FX5FBULLET.EMPHASIS
  52997. ></EWM.EXAMPLEW.MONO
  52998. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;m = (ta%3600)/60;</CX5FX5FBULLET.EMPHASIS
  52999. ></EWM.EXAMPLEW.MONO
  53000. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;s = ta%60;</CX5FX5FBULLET.EMPHASIS
  53001. ></EWM.EXAMPLEW.MONO
  53002. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;return Time(h,m,s);</CX5FX5FBULLET.EMPHASIS
  53003. ></EWM.EXAMPLEW.MONO
  53004. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  53005. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53006. ></LABEL
  53007. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53008. >Time.cxx</L.LABEL
  53009. ><B.BODY>The user&truehy;defined constructor and the method <CX5FX5FINPUT>print</CX5FX5FINPUT
  53010. > are implemented in the source file. Additionally, the standard header file <CX5FX5FFILE.NAME>iostream.h</CX5FX5FFILE.NAME
  53011. > is added to the user&truehy;defined include file section, in order to be able to use the <CX5FX5FINPUT>cout</CX5FX5FINPUT
  53012. > function.</B.BODY
  53013. ><B.BODY><CX5FX5FINPUT>print</CX5FX5FINPUT
  53014. > prints the number of hours, minutes and seconds of a song, separated by colons.</B.BODY
  53015. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  53016. ><EM.EXAMPLE.MONO>// File          : Time.cxx</EM.EXAMPLE.MONO
  53017. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  53018. ><EM.EXAMPLE.MONO>// Start user added include file section</EM.EXAMPLE.MONO
  53019. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>#include <iostream.h></CX5FX5FBULLET.EMPHASIS
  53020. ></EM.EXAMPLE.MONO
  53021. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  53022. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  53023. ><EM.EXAMPLE.MONO>Time::Time(int hour, int min, int sec)</EM.EXAMPLE.MONO
  53024. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  53025. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;this&truehy;>hour=hour;</CX5FX5FBULLET.EMPHASIS
  53026. ></EM.EXAMPLE.MONO
  53027. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;this&truehy;>min=min;</CX5FX5FBULLET.EMPHASIS
  53028. ></EM.EXAMPLE.MONO
  53029. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;this&truehy;>sec=sec;</CX5FX5FBULLET.EMPHASIS
  53030. ></EM.EXAMPLE.MONO
  53031. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  53032. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  53033. ><EM.EXAMPLE.MONO>void Time::print()</EM.EXAMPLE.MONO
  53034. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  53035. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;cout << hour << “:” << min << “:” << sec;</CX5FX5FBULLET.EMPHASIS
  53036. ></EM.EXAMPLE.MONO
  53037. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  53038. ></LABEL
  53039. ></SUBSECTION
  53040. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33295"></RBW-ANCHOR
  53041. >The Class AudioMedia</SS.SUBSEC.HEAD
  53042. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53043. >Introduction</L.LABEL
  53044. ><B.BODY>In the source file generated for the class AudioMedia only the method <CX5FX5FINPUT>print</CX5FX5FINPUT
  53045. > is implemented. No code needs to be added to the generated header file.</B.BODY
  53046. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  53047. ></RBW-AUTOGEN
  53048. >The user&truehy;defined code that was added later to the generated files is printed in bold.</N.NOTE
  53049. ></LABEL
  53050. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53051. >AudioMedia.cxx</L.LABEL
  53052. ><B.BODY>Besides the implementation of the method <CX5FX5FINPUT>print</CX5FX5FINPUT
  53053. >, the standard header file <CX5FX5FFILE.NAME>iostream.h</CX5FX5FFILE.NAME
  53054. > is added to the user&truehy;defined include file section, in order to be able to use <CX5FX5FINPUT>cout</CX5FX5FINPUT
  53055. > in the <CX5FX5FINPUT>print</CX5FX5FINPUT
  53056. > function.</B.BODY
  53057. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53058. ><EWM.EXAMPLEW.MONO>// File          : AudioMedia.cxx</EWM.EXAMPLEW.MONO
  53059. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53060. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  53061. ><EWM.EXAMPLEW.MONO>// Start user added include file section</EWM.EXAMPLEW.MONO
  53062. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>#include <iostream.h></CX5FX5FBULLET.EMPHASIS
  53063. ></EWM.EXAMPLEW.MONO
  53064. ><EWM.EXAMPLEW.MONO>// End user added include file section</EWM.EXAMPLEW.MONO
  53065. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53066. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  53067. ><EWM.EXAMPLEW.MONO>void AudioMedia::print()</EWM.EXAMPLEW.MONO
  53068. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  53069. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    Song *song;</CX5FX5FBULLET.EMPHASIS
  53070. ></EWM.EXAMPLEW.MONO
  53071. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    for (song=containsSet.first(); song!=0; song=containsSet.next()) {</CX5FX5FBULLET.EMPHASIS
  53072. ></EWM.EXAMPLEW.MONO
  53073. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;totalPlayTime = totalPlayTime + song&truehy;>getPlayTime();</CX5FX5FBULLET.EMPHASIS
  53074. ></EWM.EXAMPLEW.MONO
  53075. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    }</CX5FX5FBULLET.EMPHASIS
  53076. ></EWM.EXAMPLEW.MONO
  53077. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    cout << “Title: “ << title << endl;</CX5FX5FBULLET.EMPHASIS
  53078. ></EWM.EXAMPLEW.MONO
  53079. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    cout << “Total play time: “;</CX5FX5FBULLET.EMPHASIS
  53080. ></EWM.EXAMPLEW.MONO
  53081. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    totalPlayTime.print();</CX5FX5FBULLET.EMPHASIS
  53082. ></EWM.EXAMPLEW.MONO
  53083. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    cout << endl;</CX5FX5FBULLET.EMPHASIS
  53084. ></EWM.EXAMPLEW.MONO
  53085. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    for (song=containsSet.first(); song!=0; song=containsSet.next()) {</CX5FX5FBULLET.EMPHASIS
  53086. ></EWM.EXAMPLEW.MONO
  53087. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;song&truehy;>print();</CX5FX5FBULLET.EMPHASIS
  53088. ></EWM.EXAMPLEW.MONO
  53089. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    }</CX5FX5FBULLET.EMPHASIS
  53090. ></EWM.EXAMPLEW.MONO
  53091. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  53092. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53093. ></LABEL
  53094. ></SUBSECTION
  53095. ><SUBSECTION><SS.SUBSEC.HEAD>The Class Song</SS.SUBSEC.HEAD
  53096. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53097. >Introduction</L.LABEL
  53098. ><B.BODY>In the source file generated for the class Song the single method <CX5FX5FINPUT>print</CX5FX5FINPUT
  53099. > is implemented. No code needs to be added to the generated header file.</B.BODY
  53100. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  53101. ></RBW-AUTOGEN
  53102. >The user&truehy;defined code that was added later to the generated files is printed in bold.</N.NOTE
  53103. ></LABEL
  53104. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53105. >Song.cxx</L.LABEL
  53106. ><B.BODY>Besides the implementation of the method <CX5FX5FINPUT>print</CX5FX5FINPUT
  53107. >, the standard header file <CX5FX5FFILE.NAME>iostream.h</CX5FX5FFILE.NAME
  53108. > is added to the user&truehy;defined include file section, in order to be able to use <CX5FX5FINPUT>cout</CX5FX5FINPUT
  53109. > in the <CX5FX5FINPUT>print</CX5FX5FINPUT
  53110. > function.</B.BODY
  53111. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53112. ><EWM.EXAMPLEW.MONO>// File          : Song.cxx</EWM.EXAMPLEW.MONO
  53113. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53114. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  53115. ><EWM.EXAMPLEW.MONO>// Start user added include file section</EWM.EXAMPLEW.MONO
  53116. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>#include <iostream.h></CX5FX5FBULLET.EMPHASIS
  53117. ></EWM.EXAMPLEW.MONO
  53118. ><EWM.EXAMPLEW.MONO>// End user added include file section</EWM.EXAMPLEW.MONO
  53119. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53120. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  53121. ><EWM.EXAMPLEW.MONO>void Song::print()</EWM.EXAMPLEW.MONO
  53122. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  53123. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;cout << “Title: “ << title << endl;</CX5FX5FBULLET.EMPHASIS
  53124. ></EWM.EXAMPLEW.MONO
  53125. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;cout << “PlayTime: “;</CX5FX5FBULLET.EMPHASIS
  53126. ></EWM.EXAMPLEW.MONO
  53127. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;playTime.print();</CX5FX5FBULLET.EMPHASIS
  53128. ></EWM.EXAMPLEW.MONO
  53129. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;cout << endl;</CX5FX5FBULLET.EMPHASIS
  53130. ></EWM.EXAMPLEW.MONO
  53131. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;cout << “Author:” << endl;</CX5FX5FBULLET.EMPHASIS
  53132. ></EWM.EXAMPLEW.MONO
  53133. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;Person *person;</CX5FX5FBULLET.EMPHASIS
  53134. ></EWM.EXAMPLEW.MONO
  53135. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;for (person=writtenBySet.first(); person!=0; person=writtenBySet.next()) {</CX5FX5FBULLET.EMPHASIS
  53136. ></EWM.EXAMPLEW.MONO
  53137. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;&rbwtab;person&truehy;>print();</CX5FX5FBULLET.EMPHASIS
  53138. ></EWM.EXAMPLEW.MONO
  53139. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;}</CX5FX5FBULLET.EMPHASIS
  53140. ></EWM.EXAMPLEW.MONO
  53141. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  53142. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;cout << “Performed by:” << endl;</CX5FX5FBULLET.EMPHASIS
  53143. ></EWM.EXAMPLEW.MONO
  53144. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;for (person=performerSet.first(); person!=0; person=performerSet.next()) {</CX5FX5FBULLET.EMPHASIS
  53145. ></EWM.EXAMPLEW.MONO
  53146. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;&rbwtab;person&truehy;>print();</CX5FX5FBULLET.EMPHASIS
  53147. ></EWM.EXAMPLEW.MONO
  53148. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;}</CX5FX5FBULLET.EMPHASIS
  53149. ></EWM.EXAMPLEW.MONO
  53150. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  53151. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53152. ></LABEL
  53153. ></SUBSECTION
  53154. ><SUBSECTION><SS.SUBSEC.HEAD>The Class Person</SS.SUBSEC.HEAD
  53155. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53156. >Introduction</L.LABEL
  53157. ><B.BODY>In the source file generated for the class Person the single method <CX5FX5FINPUT>print</CX5FX5FINPUT
  53158. > is implemented. No code needs to be added to the generated header file.</B.BODY
  53159. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  53160. ></RBW-AUTOGEN
  53161. >The user&truehy;defined code that was added later to the generated files is printed in bold.</N.NOTE
  53162. ></LABEL
  53163. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53164. >Person.cxx</L.LABEL
  53165. ><B.BODY>Besides the implementation of the method <CX5FX5FINPUT>print</CX5FX5FINPUT
  53166. >, the standard header file <CX5FX5FFILE.NAME>iostream.h</CX5FX5FFILE.NAME
  53167. > is added to the user&truehy;defined include file section, in order to be able to use <CX5FX5FINPUT>cout</CX5FX5FINPUT
  53168. > in the <CX5FX5FINPUT>print</CX5FX5FINPUT
  53169. > function.</B.BODY
  53170. ><B.BODY><CX5FX5FINPUT>print</CX5FX5FINPUT
  53171. > prints the name of a person.</B.BODY
  53172. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53173. ><EWM.EXAMPLEW.MONO>// File          : Person.cxx</EWM.EXAMPLEW.MONO
  53174. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53175. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  53176. ><EWM.EXAMPLEW.MONO>// Start user added include file section</EWM.EXAMPLEW.MONO
  53177. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>#include <iostream.h></CX5FX5FBULLET.EMPHASIS
  53178. ></EWM.EXAMPLEW.MONO
  53179. ><EWM.EXAMPLEW.MONO>// End user added include file section</EWM.EXAMPLEW.MONO
  53180. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53181. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  53182. ><EWM.EXAMPLEW.MONO>void Person::print()</EWM.EXAMPLEW.MONO
  53183. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  53184. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;cout << “Name: “ << name << endl;</CX5FX5FBULLET.EMPHASIS
  53185. ></EWM.EXAMPLEW.MONO
  53186. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  53187. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  53188. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  53189. ></LABEL
  53190. ></SUBSECTION
  53191. ><SUBSECTION><SS.SUBSEC.HEAD>The <CX5FX5FINPUT>main</CX5FX5FINPUT
  53192. > File</SS.SUBSEC.HEAD
  53193. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53194. >Introduction</L.LABEL
  53195. ><B.BODY>The following main file is an illustration of how the generated (and completed) code from the example can be used in a simple C++ application.</B.BODY
  53196. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  53197. ></RBW-AUTOGEN
  53198. >This file is not generated by ObjectTeam. </N.NOTE
  53199. ></LABEL
  53200. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53201. ><RBW-ANCHOR ID="22765"></RBW-ANCHOR
  53202. >main.cxx</L.LABEL
  53203. ><EM.EXAMPLE.MONO>#include “AudioMedia.hxx”</EM.EXAMPLE.MONO
  53204. ><EM.EXAMPLE.MONO>#include “Person.hxx”</EM.EXAMPLE.MONO
  53205. ><EM.EXAMPLE.MONO>#include “Song.hxx”</EM.EXAMPLE.MONO
  53206. ><EM.EXAMPLE.MONO>#include “Time.hxx”</EM.EXAMPLE.MONO
  53207. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  53208. ><EM.EXAMPLE.MONO>AudioMedia audioMedia;</EM.EXAMPLE.MONO
  53209. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  53210. ><EM.EXAMPLE.MONO>int main(int argc, char *argv[]) {</EM.EXAMPLE.MONO
  53211. ><EM.EXAMPLE.MONO>&rbwtab;audioMedia.setTitle(“Hello World”);</EM.EXAMPLE.MONO
  53212. ><EM.EXAMPLE.MONO>&rbwtab;Person performer1(“performer1”);</EM.EXAMPLE.MONO
  53213. ><EM.EXAMPLE.MONO>&rbwtab;Person performer2(“performer2”);</EM.EXAMPLE.MONO
  53214. ><EM.EXAMPLE.MONO>&rbwtab;Person author1(“author1”);</EM.EXAMPLE.MONO
  53215. ><EM.EXAMPLE.MONO>&rbwtab;Person author2(“author2”);</EM.EXAMPLE.MONO
  53216. ><EM.EXAMPLE.MONO>&rbwtab;Person author3(“author3”);</EM.EXAMPLE.MONO
  53217. ><EM.EXAMPLE.MONO>&rbwtab;Song song1(audioMedia);</EM.EXAMPLE.MONO
  53218. ><EM.EXAMPLE.MONO>&rbwtab;song1.setTitle(“Song 1”);</EM.EXAMPLE.MONO
  53219. ><EM.EXAMPLE.MONO>&rbwtab;song1.addPerformer(&performer1);</EM.EXAMPLE.MONO
  53220. ><EM.EXAMPLE.MONO>&rbwtab;song1.addPerformer(&performer2);</EM.EXAMPLE.MONO
  53221. ><EM.EXAMPLE.MONO>&rbwtab;song1.addWrittenBy(&author1);</EM.EXAMPLE.MONO
  53222. ><EM.EXAMPLE.MONO>&rbwtab;song1.addWrittenBy(&author3);</EM.EXAMPLE.MONO
  53223. ><EM.EXAMPLE.MONO>&rbwtab;song1.setPlayTime(Time(0,10,23));</EM.EXAMPLE.MONO
  53224. ><EM.EXAMPLE.MONO>&rbwtab;Song song2(audioMedia);</EM.EXAMPLE.MONO
  53225. ><EM.EXAMPLE.MONO>&rbwtab;song2.setTitle(“Song 2”);</EM.EXAMPLE.MONO
  53226. ><EM.EXAMPLE.MONO>&rbwtab;song2.addPerformer(&performer1);</EM.EXAMPLE.MONO
  53227. ><EM.EXAMPLE.MONO>&rbwtab;song2.addWrittenBy(&author2);</EM.EXAMPLE.MONO
  53228. ><EM.EXAMPLE.MONO>&rbwtab;song2.setPlayTime(Time(0,5,8));</EM.EXAMPLE.MONO
  53229. ><EM.EXAMPLE.MONO>&rbwtab;Song song3(audioMedia);</EM.EXAMPLE.MONO
  53230. ><EM.EXAMPLE.MONO>&rbwtab;song3.setTitle(“Song 3”);</EM.EXAMPLE.MONO
  53231. ><EM.EXAMPLE.MONO>&rbwtab;song3.addPerformer(&performer2);</EM.EXAMPLE.MONO
  53232. ><EM.EXAMPLE.MONO>&rbwtab;song3.addWrittenBy(&author1);</EM.EXAMPLE.MONO
  53233. ><EM.EXAMPLE.MONO>&rbwtab;song3.addWrittenBy(&author2);</EM.EXAMPLE.MONO
  53234. ><EM.EXAMPLE.MONO>&rbwtab;song3.setPlayTime(Time(0,15,40));</EM.EXAMPLE.MONO
  53235. ><EM.EXAMPLE.MONO>&rbwtab;audioMedia.print();</EM.EXAMPLE.MONO
  53236. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  53237. ></LABEL
  53238. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53239. >Objects created</L.LABEL
  53240. ><B.BODY>The example <CX5FX5FINPUT>main</CX5FX5FINPUT
  53241. > file creates objects of the following classes:</B.BODY
  53242. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="123p"><COLSPEC COLNAME="2" COLWIDTH="325p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  53243. ></ENTRY
  53244. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects</CELLHEADING
  53245. ></ENTRY
  53246. ></RBW-ROW
  53247. ></THEAD
  53248. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>AudioMedia</CELLBODY
  53249. ></ENTRY
  53250. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>audiomedia</CELLBODY
  53251. ></ENTRY
  53252. ></RBW-ROW
  53253. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Person</CELLBODY
  53254. ></ENTRY
  53255. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>performer1</CELLBODY
  53256. ></ENTRY
  53257. ></RBW-ROW
  53258. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  53259. ></ENTRY
  53260. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>performer2</CELLBODY
  53261. ></ENTRY
  53262. ></RBW-ROW
  53263. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  53264. ></ENTRY
  53265. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>author1</CELLBODY
  53266. ></ENTRY
  53267. ></RBW-ROW
  53268. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  53269. ></ENTRY
  53270. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>author2</CELLBODY
  53271. ></ENTRY
  53272. ></RBW-ROW
  53273. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  53274. ></ENTRY
  53275. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>author3</CELLBODY
  53276. ></ENTRY
  53277. ></RBW-ROW
  53278. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Song</CELLBODY
  53279. ></ENTRY
  53280. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>song1</CELLBODY
  53281. ></ENTRY
  53282. ></RBW-ROW
  53283. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  53284. ></ENTRY
  53285. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>song2</CELLBODY
  53286. ></ENTRY
  53287. ></RBW-ROW
  53288. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  53289. ></ENTRY
  53290. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>song3</CELLBODY
  53291. ></ENTRY
  53292. ></RBW-ROW
  53293. ></TBODY
  53294. ></TGROUP
  53295. ></RBW-TABLE
  53296. ><B.BODY>These objects are created by calling the constructors of the corresponding classes with the appropriate arguments. </B.BODY
  53297. ><B.BODY>For example:</B.BODY
  53298. ><EM.EXAMPLE.MONO>AudioMedia audioMedia;</EM.EXAMPLE.MONO
  53299. ><EM.EXAMPLE.MONO>Person performer1 (“performer1”);</EM.EXAMPLE.MONO
  53300. ><EM.EXAMPLE.MONO>Person author1 (“author1”);</EM.EXAMPLE.MONO
  53301. ><EM.EXAMPLE.MONO>Song song1 (audioMedia);</EM.EXAMPLE.MONO
  53302. ></LABEL
  53303. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53304. >Functions called on the AudioMedia object</L.LABEL
  53305. ><B.BODY>The following functions are called on the object <CX5FX5FINPUT>audiomedia</CX5FX5FINPUT
  53306. >:</B.BODY
  53307. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="217p"><COLSPEC COLNAME="2" COLWIDTH="231p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Function</CELLHEADING
  53308. ></ENTRY
  53309. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Explanation</CELLHEADING
  53310. ></ENTRY
  53311. ></RBW-ROW
  53312. ></THEAD
  53313. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>setTitle (“Hello World”);</CX5FX5FINPUT
  53314. ></CELLBODY
  53315. ></ENTRY
  53316. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sets a value (an object of the external class String) for the attribute <CX5FX5FINPUT>title</CX5FX5FINPUT
  53317. ></CELLBODY
  53318. ></ENTRY
  53319. ></RBW-ROW
  53320. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>print();</CX5FX5FINPUT
  53321. ></CELLBODY
  53322. ></ENTRY
  53323. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Prints the object’s title and its total playing time (see <RBW-XREF REFID="33295" TYPE="XREF-TEXTCOPY">The Class AudioMedia</RBW-XREF
  53324. >)</CELLBODY
  53325. ></ENTRY
  53326. ></RBW-ROW
  53327. ></TBODY
  53328. ></TGROUP
  53329. ></RBW-TABLE
  53330. ></LABEL
  53331. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53332. >Functions called on the Song objects</L.LABEL
  53333. ><B.BODY>The following functions are called on the objects <CX5FX5FINPUT>song1</CX5FX5FINPUT
  53334. >, <CX5FX5FINPUT>song2 </CX5FX5FINPUT
  53335. >and <CX5FX5FINPUT>song3</CX5FX5FINPUT
  53336. >:</B.BODY
  53337. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="301p"><COLSPEC COLNAME="2" COLWIDTH="328p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Function</CELLHEADING
  53338. ></ENTRY
  53339. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Explanation</CELLHEADING
  53340. ></ENTRY
  53341. ></RBW-ROW
  53342. ></THEAD
  53343. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>setTitle (“<RBWAUTO-0007>songName”</RBWAUTO-0007
  53344. >);</CX5FX5FINPUT
  53345. ></CELLBODY
  53346. ></ENTRY
  53347. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sets a value (an object of the external class String) for the attribute <CX5FX5FINPUT>title</CX5FX5FINPUT
  53348. ></CELLBODY
  53349. ></ENTRY
  53350. ></RBW-ROW
  53351. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>addPerformer (&</CX5FX5FINPUT
  53352. ><RBWAUTO-0018>performerName</RBWAUTO-0018
  53353. ><CX5FX5FINPUT>);</CX5FX5FINPUT
  53354. ></CELLBODY
  53355. ></ENTRY
  53356. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Adds a pointer to <CX5FX5FVARIABLE>performerName</CX5FX5FVARIABLE
  53357. > (an object of the class Person) to the pointer set <CX5FX5FINPUT>performerSet</CX5FX5FINPUT
  53358. ></CELLBODY
  53359. ></ENTRY
  53360. ></RBW-ROW
  53361. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>addWrittenBy (&</CX5FX5FINPUT
  53362. ><RBWAUTO-0018>authorName</RBWAUTO-0018
  53363. ><CX5FX5FINPUT>);</CX5FX5FINPUT
  53364. ></CELLBODY
  53365. ></ENTRY
  53366. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Adds a pointer to <CX5FX5FVARIABLE>authorName</CX5FX5FVARIABLE
  53367. > (an object of the class Person) to the pointer set <CX5FX5FINPUT>writtenBySet</CX5FX5FINPUT
  53368. ></CELLBODY
  53369. ></ENTRY
  53370. ></RBW-ROW
  53371. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>setPlayTime (Time (<CX5FX5FVARIABLE>hour</CX5FX5FVARIABLE
  53372. >, <CX5FX5FVARIABLE>min</CX5FX5FVARIABLE
  53373. >, <CX5FX5FVARIABLE>sec</CX5FX5FVARIABLE
  53374. >));</CELLBODY
  53375. ></ENTRY
  53376. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sets a value (an object of the class Time) for the attribute <CX5FX5FINPUT>playTime</CX5FX5FINPUT
  53377. >.</CELLBODY
  53378. ></ENTRY
  53379. ></RBW-ROW
  53380. ></TBODY
  53381. ></TGROUP
  53382. ><RBW-ICONIZE></RBW-TABLE
  53383. ><B.BODY></B.BODY
  53384. ></LABEL
  53385. ></SUBSECTION
  53386. ><SUBSECTION><SS.SUBSEC.HEAD>How to Compile And Run the Example Application</SS.SUBSEC.HEAD
  53387. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53388. >Prerequisites</L.LABEL
  53389. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  53390. ></RBW-AUTOGEN
  53391. ></RBW-MARKER
  53392. ><RBW-PARABODY>Before you compile the source code do the following:</RBW-PARABODY
  53393. ></P.PROCEDURE
  53394. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  53395. ></RBW-AUTOGEN
  53396. ></RBW-MARKER
  53397. ><RBW-PARABODY>If you haven’t created a <CX5FX5FFILE.NAME>main.cxx</CX5FX5FFILE.NAME
  53398. > file yet, do so by selecting File | New | External File Version</RBW-PARABODY
  53399. ></LN.LIST.NUM
  53400. ><LR.LIST.RESULT>The New External File Version dialog box appears.</LR.LIST.RESULT
  53401. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  53402. ></RBW-AUTOGEN
  53403. ></RBW-MARKER
  53404. ><RBW-PARABODY>Select <CX5FX5FOBJECT.NAME>c++</CX5FX5FOBJECT.NAME
  53405. > under Type, enter <CX5FX5FINPUT>main</CX5FX5FINPUT
  53406. > under Name and click OK</RBW-PARABODY
  53407. ></LN.LIST.NUM
  53408. ><LR.LIST.RESULT>The main file is created.</LR.LIST.RESULT
  53409. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  53410. ></RBW-AUTOGEN
  53411. >An example file <CX5FX5FFILE.NAME>main.cxx</CX5FX5FFILE.NAME
  53412. > can be found in <RBW-XREF REFID="22765" TYPE="XREF-TEXTCOPY">main.cxx</RBW-XREF
  53413. ></T2.TIP.2
  53414. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  53415. ></RBW-AUTOGEN
  53416. ></RBW-MARKER
  53417. ><RBW-PARABODY>If you haven’t created an executable yet, do so by selecting File | New | External File Version.</RBW-PARABODY
  53418. ></LN.LIST.NUM
  53419. ><LR.LIST.RESULT>The New External File Version dialog box appears.</LR.LIST.RESULT
  53420. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  53421. ></RBW-AUTOGEN
  53422. ></RBW-MARKER
  53423. ><RBW-PARABODY>Select <CX5FX5FOBJECT.NAME>executable</CX5FX5FOBJECT.NAME
  53424. > under Type, enter a name for the application under Name and click OK</RBW-PARABODY
  53425. ></LN.LIST.NUM
  53426. ><LR.LIST.RESULT>The new executable is created.</LR.LIST.RESULT
  53427. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  53428. ></RBW-AUTOGEN
  53429. ></RBW-MARKER
  53430. ><RBW-PARABODY>Select Target | Generate makefile to (re)generate the makefile.</RBW-PARABODY
  53431. ></LN.LIST.NUM
  53432. ></LABEL
  53433. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53434. >How to compile the application</L.LABEL
  53435. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  53436. ></RBW-AUTOGEN
  53437. ></RBW-MARKER
  53438. ><RBW-PARABODY>To compile the source code:</RBW-PARABODY
  53439. ></P.PROCEDURE
  53440. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53441. ></RBW-AUTOGEN
  53442. ></RBW-MARKER
  53443. ><RBW-PARABODY>Select Target | Compile</RBW-PARABODY
  53444. ></LB.LIST.BULLET
  53445. ><LR.LIST.RESULT>A Monitoring Window starts up, reporting the progress of the compilation process.</LR.LIST.RESULT
  53446. ></LABEL
  53447. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53448. >How to run the application</L.LABEL
  53449. ><B.BODY>If there were no problems detected during the compilation of the source code, you can run it by doing the following:</B.BODY
  53450. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  53451. ></RBW-AUTOGEN
  53452. ></RBW-MARKER
  53453. ><RBW-PARABODY>Select the executable in the Information Area</RBW-PARABODY
  53454. ></LN.LIST.NUM
  53455. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  53456. ></RBW-AUTOGEN
  53457. ></RBW-MARKER
  53458. ><RBW-PARABODY>Select Target | Run to run the application.</RBW-PARABODY
  53459. ></LN.LIST.NUM
  53460. ><LR.LIST.RESULT>The application is started up in an Execution Window.</LR.LIST.RESULT
  53461. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00533.unk" origfile="pics/exappl.gif" origtype="X" origdoc="../../sources/cpp/exappl.fm5.mif"></RBW-GRAPHIC
  53462. ></FA2.FIGURE.ANCHOR.2
  53463. ><FA2.FIGURE.ANCHOR.2></FA2.FIGURE.ANCHOR.2
  53464. ><RBWAUTO-0001></RBWAUTO-0001
  53465. ><!--
  53466.  
  53467.  
  53468.  
  53469.  
  53470.  
  53471. CONVERTING SOURCE FILE ../../sources/cpp/cgcompat.fm5.mif
  53472.  
  53473.  
  53474. --><B.BODY></B.BODY
  53475. ><B.BODY></B.BODY
  53476. ><B.BODY></B.BODY
  53477. ><B.BODY></B.BODY
  53478. ><B.BODY></B.BODY
  53479. ></LABEL
  53480. ></SUBSECTION
  53481. ></SECTION
  53482. ></APPENDIX
  53483. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix C&rbwtab;</CX5FX5FZCHAPTER.NUM
  53484. ></RBW-AUTOGEN
  53485. >Compatibility <RBW-ANCHOR ID="15646"></RBW-ANCHOR
  53486. >With Previous Releases<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  53487. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  53488. ></RBW-SYSOBJ
  53489. ></A.APPENDIX.HEAD
  53490. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53491. >Introduction</L.LABEL
  53492. ><B.BODY>The current release of the C++ code generator is completely new. Due to customer requests, the new code generator now supports the use of multiple class libraries.</B.BODY
  53493. ></LABEL
  53494. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53495. >Incompatibilities</L.LABEL
  53496. ><B.BODY>The new release of the code generator does not support persistent code generation. In addition, customization files designed to work with the previous release of the C++ code generator cannot be used with the new release.</B.BODY
  53497. ></LABEL
  53498. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53499. >Modules for backward&truehy;compatibility</L.LABEL
  53500. ><B.BODY>If you rely on ObjectTeam’s persistent code generation or have a large investment in your C++ customization files, you might prefer to continue using Release 6.1.1 of the C++ code generator. To do so, activate an ObjectTeam module of type <CX5FX5FEMPHASIS>PersistentCpp</CX5FX5FEMPHASIS
  53501. >. </B.BODY
  53502. ><B.BODY>Modules of type <CX5FX5FEMPHASIS>PersistentCpp</CX5FX5FEMPHASIS
  53503. > require other modules, which require other modules in turn. If possible, these required modules will be activated automatically after you select a module of type <CX5FX5FEMPHASIS>PersistentCpp</CX5FX5FEMPHASIS
  53504. >. If there is more than one module of a required type available, you select the module of your choice from a dialog box.</B.BODY
  53505. ><B.BODY>These are the modules required to run persistent C++ code generation:</B.BODY
  53506. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00534.tif" origseq="1" origtype="I" origdoc="../../sources/cpp/cgcompat.fm5.mif"></RBW-GRAPHIC
  53507. ></FAR.FIGURE.ANCHOR.RIGHT
  53508. ><B.BODY>The names in this picture refer to the following modules:</B.BODY
  53509. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="237p"><COLSPEC COLNAME="3" COLWIDTH="109p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Module name</CELLHEADING
  53510. ></ENTRY
  53511. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Long Name</CELLHEADING
  53512. ></ENTRY
  53513. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  53514. ></ENTRY
  53515. ></RBW-ROW
  53516. ></THEAD
  53517. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;inf</CELLBODY
  53518. ></ENTRY
  53519. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C++ Informix Code generation</CELLBODY
  53520. ></ENTRY
  53521. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersistentCpp</CELLBODY
  53522. ></ENTRY
  53523. ></RBW-ROW
  53524. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;ing</CELLBODY
  53525. ></ENTRY
  53526. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> C++ Ingres Code Generation</CELLBODY
  53527. ></ENTRY
  53528. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersistentCpp</CELLBODY
  53529. ></ENTRY
  53530. ></RBW-ROW
  53531. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;mss</CELLBODY
  53532. ></ENTRY
  53533. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C++ MS&truehy;SQL Code Generation</CELLBODY
  53534. ></ENTRY
  53535. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersistentCpp</CELLBODY
  53536. ></ENTRY
  53537. ></RBW-ROW
  53538. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;ora</CELLBODY
  53539. ></ENTRY
  53540. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C++ Oracle Code Generation</CELLBODY
  53541. ></ENTRY
  53542. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersistentCpp</CELLBODY
  53543. ></ENTRY
  53544. ></RBW-ROW
  53545. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;syb</CELLBODY
  53546. ></ENTRY
  53547. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> C++ Sybase Code Generation</CELLBODY
  53548. ></ENTRY
  53549. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersistentCpp</CELLBODY
  53550. ></ENTRY
  53551. ></RBW-ROW
  53552. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>persist&truehy;props</CELLBODY
  53553. ></ENTRY
  53554. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent properties</CELLBODY
  53555. ></ENTRY
  53556. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersistProps</CELLBODY
  53557. ></ENTRY
  53558. ></RBW-ROW
  53559. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cplusplus</CELLBODY
  53560. ></ENTRY
  53561. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent C++ Generation</CELLBODY
  53562. ></ENTRY
  53563. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>CodeGeneration</CELLBODY
  53564. ></ENTRY
  53565. ></RBW-ROW
  53566. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;aix</CELLBODY
  53567. ></ENTRY
  53568. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>IBM C++ compiler integration</CELLBODY
  53569. ></ENTRY
  53570. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  53571. ></ENTRY
  53572. ></RBW-ROW
  53573. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;dec</CELLBODY
  53574. ></ENTRY
  53575. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Digital C++ compiler integration</CELLBODY
  53576. ></ENTRY
  53577. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  53578. ></ENTRY
  53579. ></RBW-ROW
  53580. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;hp</CELLBODY
  53581. ></ENTRY
  53582. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>HP C++ compiler integration</CELLBODY
  53583. ></ENTRY
  53584. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  53585. ></ENTRY
  53586. ></RBW-ROW
  53587. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;cc&truehy;sun</CELLBODY
  53588. ></ENTRY
  53589. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Sun C++ compiler integration</CELLBODY
  53590. ></ENTRY
  53591. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  53592. ></ENTRY
  53593. ></RBW-ROW
  53594. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;bc&truehy;45</CELLBODY
  53595. ></ENTRY
  53596. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Borland C++ 4.5 compiler integration</CELLBODY
  53597. ></ENTRY
  53598. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  53599. ></ENTRY
  53600. ></RBW-ROW
  53601. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>cpp&truehy;vc&truehy;40</CELLBODY
  53602. ></ENTRY
  53603. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Visual C++ compiler integration</CELLBODY
  53604. ></ENTRY
  53605. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>DevelEnv</CELLBODY
  53606. ></ENTRY
  53607. ></RBW-ROW
  53608. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;libwmt</CELLBODY
  53609. ></ENTRY
  53610. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent Cayenne library integration</CELLBODY
  53611. ></ENTRY
  53612. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersCppClasslib</CELLBODY
  53613. ></ENTRY
  53614. ></RBW-ROW
  53615. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pers&truehy;cpp&truehy;librw</CELLBODY
  53616. ></ENTRY
  53617. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent Rogue Wave library integration</CELLBODY
  53618. ></ENTRY
  53619. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>PersCppClasslib</CELLBODY
  53620. ></ENTRY
  53621. ></RBW-ROW
  53622. ></TBODY
  53623. ></TGROUP
  53624. ></RBW-TABLE
  53625. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  53626. ></RBW-AUTOGEN
  53627. >Make sure the ObjectTeam module <CX5FX5FEMPHASIS>C++ Code Generation</CX5FX5FEMPHASIS
  53628. > of type <CX5FX5FEMPHASIS>CodeGeneration</CX5FX5FEMPHASIS
  53629. > is deactivated when you activate a persistent code generator module.</N.NOTE
  53630. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53631. >For more information</SL.SUBLABEL
  53632. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  53633. ><CX5FX5FTITLE></CX5FX5FTITLE
  53634. > for details on how to activate and deactivate a module.</B.BODY
  53635. ></LABEL
  53636. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53637. >Documentation</L.LABEL
  53638. ><B.BODY>The current release of the <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  53639. ><CX5FX5FTITLE></CX5FX5FTITLE
  53640. > for C++ documents the new C++ code generator. For information about Release 6.1.1 of the code generator, refer to the following appendices:</B.BODY
  53641. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53642. ></RBW-AUTOGEN
  53643. ></RBW-MARKER
  53644. ><RBW-PARABODY><RBW-XREF REFID="37484" TYPE="XREF-TEXTCOPY">Generating Persistent Code</RBW-XREF
  53645. ></RBW-PARABODY
  53646. ></LB.LIST.BULLET
  53647. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53648. ></RBW-AUTOGEN
  53649. ></RBW-MARKER
  53650. ><RBW-PARABODY><RBW-XREF REFID="13285" TYPE="XREF-TEXTCOPY">Customizing Persistent C++ Code Generation</RBW-XREF
  53651. ></RBW-PARABODY
  53652. ></LB.LIST.BULLET
  53653. ></LABEL
  53654. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53655. >License files</L.LABEL
  53656. ><B.BODY>The license for the current release of the C++ code generation is valid regardless of which set of C++ code generator modules you choose to activate.</B.BODY
  53657. ></LABEL
  53658. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53659. >Features exclusive to 6.1.1 users </L.LABEL
  53660. ><B.BODY>The following features are available in release 6.1.1. of ObjectTeam, but not in release 7.1.1:</B.BODY
  53661. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53662. >Tcl Method Implementation Procedure</SL.SUBLABEL
  53663. ><B.BODY>See <RBW-XREF REFID="30517" TYPE="XREF-TEXTCOPY">Tcl Method Implementation Procedure</RBW-XREF
  53664. > for details.</B.BODY
  53665. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53666. >Persistent Code Generation</SL.SUBLABEL
  53667. ><B.BODY>See <RBW-XREF REFID="37484" TYPE="XREF-TEXTCOPY">Generating Persistent Code</RBW-XREF
  53668. > for details</B.BODY
  53669. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53670. >Template simulation</SL.SUBLABEL
  53671. ><B.BODY><CX5FX5FINPUT>#define</CX5FX5FINPUT
  53672. > template simulation is supported.</B.BODY
  53673. ></LABEL
  53674. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53675. >Features exclusive to 7.1.1 users</L.LABEL
  53676. ><B.BODY>The following features are new in release 7.1.1:</B.BODY
  53677. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53678. >Header file regeneration</SL.SUBLABEL
  53679. ><B.BODY>Unlike in 6.1.1, header files can be regenerated in 7.1.1.</B.BODY
  53680. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53681. >Inline methods</SL.SUBLABEL
  53682. ><B.BODY>The method property Inline Method can be used to specify a method inline. </B.BODY
  53683. ><B.BODY>See <RBW-XREF REFID="30308" TYPE="XREF-TEXTCOPY">Specifying Inline Methods</RBW-XREF
  53684. > for details.</B.BODY
  53685. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53686. >Virtual Destructors</SL.SUBLABEL
  53687. ><B.BODY>The class property Dynamic Destructor can be used to specify in which situation a virtual destructor must be generated.</B.BODY
  53688. ><B.BODY>See <RBW-XREF REFID="39716" TYPE="XREF-TEXTCOPY">Specifying a Virtual Destructor</RBW-XREF
  53689. > for details.</B.BODY
  53690. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53691. >Association Implementation</SL.SUBLABEL
  53692. ><B.BODY>The association property Class Library can be used to select an (active) class library for a particular role name in an association. Within a selected class library, you can select an implementation strategy through the association property Implementation Strategy.</B.BODY
  53693. ><B.BODY>See See <RBW-XREF REFID="31321" TYPE="XREF-TEXTCOPY">Specifying a Class Library</RBW-XREF
  53694. > and <RBW-XREF REFID="19988" TYPE="XREF-TEXTCOPY">Specifying an Implementation Strategy</RBW-XREF
  53695. > for details.</B.BODY
  53696. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53697. >Strict association handling</SL.SUBLABEL
  53698. ><B.BODY>Associations are handled more strictly in that consistency of associations is kept.</B.BODY
  53699. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53700. >Object&truehy;oriented code generation</SL.SUBLABEL
  53701. ><B.BODY>The code generator in release 7.1.1 has been rewritten completely. Code generation is now a completely object&truehy;oriented process. As a result, customizations written for release 6.1.1 cannot be reused in release 7.1.1.</B.BODY
  53702. ><B.BODY>See <RBW-XREF REFID="36160" TYPE="XREF-TEXTCOPY">Customizing Code Generation</RBW-XREF
  53703. >.</B.BODY
  53704. ></LABEL
  53705. ><SECTION><S.SECTION.HEAD>Non&truehy;Persistent Code Generation in Release 6.1.1</S.SECTION.HEAD
  53706. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53707. >Introduction</L.LABEL
  53708. ><B.BODY>Non&truehy;persistent code generation in release 6.1.1of ObjectTeam is almost identical to non&truehy;persistent code generation in release 7.1.1. </B.BODY
  53709. ><B.BODY>The property Tcl Method Implementation Procedure, however, is exclusive to users of release 6.1.1 (and lower).</B.BODY
  53710. ></LABEL
  53711. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53712. ><RBW-IDXTERM TERM1="Tcl method implementation procedure" TERM2="property"></RBW-IDXTERM
  53713. ><RBW-IDXTERM TERM1="property" TERM2="Tcl method implementation procedure"></RBW-IDXTERM
  53714. ><RBW-IDXTERM TERM1="operation" TERM2="Tcl method implementation procedure09"></RBW-IDXTERM
  53715. ><RBW-ANCHOR ID="30517"></RBW-ANCHOR
  53716. >Tcl Method Implementation Procedure</L.LABEL
  53717. ><B.BODY>Use the Tcl Method Implementation Procedure property to generate code for a method automatically.</B.BODY
  53718. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  53719. ></RBW-AUTOGEN
  53720. ></RBW-MARKER
  53721. ><RBW-PARABODY>To <RBW-IDXTERM TERM1="generating" TERM2="code via TCL procedures"></RBW-IDXTERM
  53722. >generate code for a method body automatically:</RBW-PARABODY
  53723. ></P.PROCEDURE
  53724. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  53725. ></RBW-AUTOGEN
  53726. ></RBW-MARKER
  53727. ><RBW-PARABODY><RBW-IDXTERM TERM1="Tcl" TERM2="creating - procedures"></RBW-IDXTERM
  53728. >Create a Tcl procedure.</RBW-PARABODY
  53729. ></LN.LIST.NUM
  53730. ><LT.LIST.TEXT>This procedure generates the source code for a particular method with a very general purpose such as a printOn function. </LT.LIST.TEXT
  53731. ><LT.LIST.TEXT>Such a printOn function prints all the data members of a class to standard output. You can use this kind of function for any class. The contents of the function is the same for every class; only the class differs.</LT.LIST.TEXT
  53732. ><LT.LIST.TEXT>Use the following syntax when creating the Tcl procedure:</LT.LIST.TEXT
  53733. ><E.EXAMPLE>proc operation::<CX5FX5FTERM>name</CX5FX5FTERM
  53734. > {<CX5FX5FTERM>oper class sect</CX5FX5FTERM
  53735. >} { }</E.EXAMPLE
  53736. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="378p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>name</CX5FX5FTERM
  53737. > </CELLBODY
  53738. ></ENTRY
  53739. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This name has to be specified as value for the property Tcl Method Implementation Procedure</CELLBODY
  53740. ></ENTRY
  53741. ></RBW-ROW
  53742. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>oper</CX5FX5FTERM
  53743. > </CELLBODY
  53744. ></ENTRY
  53745. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation handle</CELLBODY
  53746. ></ENTRY
  53747. ></RBW-ROW
  53748. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>class</CX5FX5FTERM
  53749. > </CELLBODY
  53750. ></ENTRY
  53751. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>class handle</CELLBODY
  53752. ></ENTRY
  53753. ></RBW-ROW
  53754. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>sect</CX5FX5FTERM
  53755. > </CELLBODY
  53756. ></ENTRY
  53757. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>section handle</CELLBODY
  53758. ></ENTRY
  53759. ></RBW-ROW
  53760. ></TBODY
  53761. ></TGROUP
  53762. ></RBW-TABLE
  53763. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  53764. ></RBW-AUTOGEN
  53765. ></RBW-MARKER
  53766. ><RBW-PARABODY>Store the Tcl procedure in a customization file</RBW-PARABODY
  53767. ></LN.LIST.NUM
  53768. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  53769. ></RBW-AUTOGEN
  53770. ></RBW-MARKER
  53771. ><RBW-PARABODY>Specify the value of the property Tcl Method Implementation Procedure as the name that you specified for the Tcl procedure (without <CX5FX5FINPUT>operation::</CX5FX5FINPUT
  53772. >).</RBW-PARABODY
  53773. ></LN.LIST.NUM
  53774. ><B.BODY>Now the body of the method is automatically generated every time you generate code for the class. The ObjectTeam Shell calls this procedure and inserts the code generated by the procedure as the body of the method.</B.BODY
  53775. ><B.BODY></B.BODY
  53776. ><RBWAUTO-0001></RBWAUTO-0001
  53777. ><!--
  53778.  
  53779.  
  53780.  
  53781.  
  53782.  
  53783. CONVERTING SOURCE FILE ../../sources/cpp/pers611.fm5.mif
  53784.  
  53785.  
  53786. --><B.BODY></B.BODY
  53787. ><B.BODY></B.BODY
  53788. ><B.BODY></B.BODY
  53789. ><B.BODY></B.BODY
  53790. ><B.BODY></B.BODY
  53791. ></LABEL
  53792. ></SECTION
  53793. ></APPENDIX
  53794. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix D&rbwtab;</CX5FX5FZCHAPTER.NUM
  53795. ></RBW-AUTOGEN
  53796. >Generating <RBW-ANCHOR ID="37484"></RBW-ANCHOR
  53797. >Persistent Code<RBW-IDXTERM TERM1="persistent code generation"></RBW-IDXTERM
  53798. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  53799. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  53800. ></RBW-SYSOBJ
  53801. ></A.APPENDIX.HEAD
  53802. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53803. >Introduction</L.LABEL
  53804. ><B.BODY><RBW-IDXTERM TERM1="code generation" TERM2="persistent"></RBW-IDXTERM
  53805. >A persistent class is a class whose instances persists beyond the lifetime of a single program execution. The public interface of the persistent class is similar to that of the non&truehy;persistent classes. The implementation, however, is completely different because of the storage of the data members in a relational database. </B.BODY
  53806. ><B.BODY>Persistent code refers to SQL (Structured Query Language) and ESQLC++ (Embedded Structure Query Language C++). </B.BODY
  53807. ></LABEL
  53808. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53809. >In this chapter</L.LABEL
  53810. ><B.BODY>This chapter contains the following sections:</B.BODY
  53811. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  53812. ></ENTRY
  53813. ></RBW-ROW
  53814. ></THEAD
  53815. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36652" TYPE="XREF-TEXTCOPY">How SQL is Generated&rbwtab;D–13</RBW-XREF
  53816. ></SB.SECTION.BLOCK.TABLE
  53817. ></ENTRY
  53818. ></RBW-ROW
  53819. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20418" TYPE="XREF-TEXTCOPY">ESQLC++ Generation&rbwtab;D–23</RBW-XREF
  53820. ></SB.SECTION.BLOCK.TABLE
  53821. ></ENTRY
  53822. ></RBW-ROW
  53823. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23699" TYPE="XREF-TEXTCOPY">Specific Features of CA&truehy;OpenIngres (E)SQL&rbwtab;D–49</RBW-XREF
  53824. ></SB.SECTION.BLOCK.TABLE
  53825. ></ENTRY
  53826. ></RBW-ROW
  53827. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41103" TYPE="XREF-TEXTCOPY">Specific Features of Microsoft SQL&truehy;Server (Dynamic) SQL&rbwtab;D–54</RBW-XREF
  53828. ></SB.SECTION.BLOCK.TABLE
  53829. ></ENTRY
  53830. ></RBW-ROW
  53831. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42686" TYPE="XREF-TEXTCOPY">Specific Features of Oracle (E)SQL&rbwtab;D–63</RBW-XREF
  53832. ></SB.SECTION.BLOCK.TABLE
  53833. ></ENTRY
  53834. ></RBW-ROW
  53835. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17338" TYPE="XREF-TEXTCOPY">Specific Features of Sybase (E)SQL&rbwtab;D–71</RBW-XREF
  53836. ></SB.SECTION.BLOCK.TABLE
  53837. ></ENTRY
  53838. ></RBW-ROW
  53839. ></TBODY
  53840. ></TGROUP
  53841. ></RBW-TABLE
  53842. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  53843. ></RBW-AUTOGEN
  53844. >The examples in the first two sections apply mostly to <RBW-IDXTERM TERM1="Informix"></RBW-IDXTERM
  53845. >Informix.</N.NOTE
  53846. ></LABEL
  53847. ><SECTION><S.SECTION.HEAD>How to Generate Persistent Code</S.SECTION.HEAD
  53848. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53849. >Class property Persistent</L.LABEL
  53850. ><B.BODY>Persistent code (SQL and ESQLC++) is only generated for classes that have the class property Persistent turned on.</B.BODY
  53851. ></LABEL
  53852. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53853. >How to generate on Implementation Phase level</L.LABEL
  53854. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  53855. ></RBW-AUTOGEN
  53856. ></RBW-MARKER
  53857. ><RBW-PARABODY>To generate code for systems on the Implementation Phase level:</RBW-PARABODY
  53858. ></P.PROCEDURE
  53859. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  53860. ></RBW-AUTOGEN
  53861. ></RBW-MARKER
  53862. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  53863. ></LN.LIST.NUM
  53864. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  53865. ></RBW-AUTOGEN
  53866. ></RBW-MARKER
  53867. ><RBW-PARABODY>Select Utilities | Generate C++.</RBW-PARABODY
  53868. ></LN.LIST.NUM
  53869. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  53870. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  53871. ></RBW-AUTOGEN
  53872. ></RBW-MARKER
  53873. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  53874. ></LN.LIST.NUM
  53875. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  53876. ></RBW-MARKER
  53877. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  53878. > to generate code for all systems from the Object Design phase that have not yet been imported into the Implementation phase.</RBW-PARABODY
  53879. ></LB2.LIST.BULLET.2
  53880. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  53881. ></RBW-MARKER
  53882. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  53883. > to select the systems from the Object Design phase for which you want to generate code. You can select only systems for which no code has yet been generated.</RBW-PARABODY
  53884. ></LB2.LIST.BULLET.2
  53885. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then imports the systems. For each system, ObjectTeam imports both the OOPL and SQL Models. (The SQL model is described later in this section.)</LR.LIST.RESULT
  53886. ></LABEL
  53887. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53888. ><RBW-ANCHOR ID="10881"></RBW-ANCHOR
  53889. >How to generate on System level</L.LABEL
  53890. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  53891. ></RBW-AUTOGEN
  53892. ></RBW-MARKER
  53893. ><RBW-PARABODY>To regenerate selected system files:</RBW-PARABODY
  53894. ></P.PROCEDURE
  53895. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  53896. ></RBW-AUTOGEN
  53897. ></RBW-MARKER
  53898. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  53899. ></LN.LIST.NUM
  53900. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  53901. ></RBW-AUTOGEN
  53902. ></RBW-MARKER
  53903. ><RBW-PARABODY>Select Utilities | Generate C++.</RBW-PARABODY
  53904. ></LN.LIST.NUM
  53905. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  53906. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  53907. ></RBW-AUTOGEN
  53908. ></RBW-MARKER
  53909. ><RBW-PARABODY>Select New or Selected:</RBW-PARABODY
  53910. ></LN.LIST.NUM
  53911. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  53912. ></RBW-MARKER
  53913. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New</CX5FX5FBULLET.EMPHASIS
  53914. > to generate code for all CADs for which you have not yet generated code. The Import New dialog box appears.</RBW-PARABODY
  53915. ></LB2.LIST.BULLET.2
  53916. ></LABEL
  53917. ></SECTION
  53918. ><SECTION><S.SECTION.HEAD>How to Define a Target Database</S.SECTION.HEAD
  53919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53920. >Introduction</L.LABEL
  53921. ><B.BODY>If your CADs contain persistent classes, the persistent classes must be defined as database tables in a Relational Database Management System (RDBMS). That database must then be selected when you run the application code.</B.BODY
  53922. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53923. >Oracle</SL.SUBLABEL
  53924. ><B.BODY>The term for a database in Oracle is a <CX5FX5FTITLE>schema</CX5FX5FTITLE
  53925. >. What is called a database <CX5FX5FTITLE>Server</CX5FX5FTITLE
  53926. > in other RDBMSs, is called an <CX5FX5FTITLE>Oracle SID</CX5FX5FTITLE
  53927. > in Oracle.</B.BODY
  53928. ></LABEL
  53929. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53930. >Defining a target database</L.LABEL
  53931. ><B.BODY>The steps for defining a target database depend on whether you already have the database defined:</B.BODY
  53932. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53933. ></RBW-AUTOGEN
  53934. ></RBW-MARKER
  53935. ><RBW-PARABODY>If you do not have a database defined, you must create the database, select it, then execute the generated SQL scripts to create the database tables. (The SQL scripts are generated when you import the SQL Model into the Implementation phase.)</RBW-PARABODY
  53936. ></LB.LIST.BULLET
  53937. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53938. ></RBW-AUTOGEN
  53939. ></RBW-MARKER
  53940. ><RBW-PARABODY>If you have a database, but it does not contain the required database tables, you must select the database and execute the generated SQL scripts to create the database tables.</RBW-PARABODY
  53941. ></LB.LIST.BULLET
  53942. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53943. ></RBW-AUTOGEN
  53944. ></RBW-MARKER
  53945. ><RBW-PARABODY>If you already have a database that contains the required database tables, just select the database.</RBW-PARABODY
  53946. ></LB.LIST.BULLET
  53947. ></LABEL
  53948. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53949. >Generated SQL scripts</L.LABEL
  53950. ><B.BODY>When you import the SQL Model into the Implementation phase, a number of SQL scripts are generated. The SQL script to build the target database is <CX5FX5FPROCEDURE.NAME>create</CX5FX5FPROCEDURE.NAME
  53951. >. This script activates other SQL scripts containing statements to create tables, procedures and rules.</B.BODY
  53952. ></LABEL
  53953. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53954. >Database tables that are created</L.LABEL
  53955. ><B.BODY>When you execute the SQL script <CX5FX5FPROCEDURE.NAME>create</CX5FX5FPROCEDURE.NAME
  53956. >, database tables are created for the following persistent objects:</B.BODY
  53957. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53958. ></RBW-AUTOGEN
  53959. ></RBW-MARKER
  53960. ><RBW-PARABODY>Class</RBW-PARABODY
  53961. ></LB.LIST.BULLET
  53962. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53963. ></RBW-AUTOGEN
  53964. ></RBW-MARKER
  53965. ><RBW-PARABODY>Association as class</RBW-PARABODY
  53966. ></LB.LIST.BULLET
  53967. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53968. ></RBW-AUTOGEN
  53969. ></RBW-MARKER
  53970. ><RBW-PARABODY>Aggregation as class</RBW-PARABODY
  53971. ></LB.LIST.BULLET
  53972. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53973. ></RBW-AUTOGEN
  53974. ></RBW-MARKER
  53975. ><RBW-PARABODY>Link attribute box</RBW-PARABODY
  53976. ></LB.LIST.BULLET
  53977. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53978. ></RBW-AUTOGEN
  53979. ></RBW-MARKER
  53980. ><RBW-PARABODY>Qualified association</RBW-PARABODY
  53981. ></LB.LIST.BULLET
  53982. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53983. ></RBW-AUTOGEN
  53984. ></RBW-MARKER
  53985. ><RBW-PARABODY>Qualified aggregation</RBW-PARABODY
  53986. ></LB.LIST.BULLET
  53987. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53988. ></RBW-AUTOGEN
  53989. ></RBW-MARKER
  53990. ><RBW-PARABODY>Many&truehy;to&truehy;many association (that is not an association as class)</RBW-PARABODY
  53991. ></LB.LIST.BULLET
  53992. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  53993. ></RBW-AUTOGEN
  53994. ></RBW-MARKER
  53995. ><RBW-PARABODY>Many&truehy;to&truehy;many aggregation (that is not an aggregation as class)</RBW-PARABODY
  53996. ></LB.LIST.BULLET
  53997. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  53998. >For more information</SL.SUBLABEL
  53999. ><B.BODY>See <RBW-XREF REFID="20418" TYPE="XREF-TEXTCOPY">ESQLC++ Generation on page 4–12</RBW-XREF
  54000. > for more detail.</B.BODY
  54001. ></LABEL
  54002. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54003. >Available operations on a target database</L.LABEL
  54004. ><B.BODY>The available entries under the Database menu vary among the different RDBMSs supported by ObjectTeam:</B.BODY
  54005. ><B.BODY>(A = available; NA = not available)</B.BODY
  54006. ><RBW-TABLE><TGROUP COLS="6"><COLSPEC COLNAME="1" COLWIDTH="132p"><COLSPEC COLNAME="2" COLWIDTH="75p"><COLSPEC COLNAME="3" COLWIDTH="58p"><COLSPEC COLNAME="4" COLWIDTH="60p"><COLSPEC COLNAME="5" COLWIDTH="63p"><COLSPEC COLNAME="6" COLWIDTH="57p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Menu Entry</CELLHEADING
  54007. ></ENTRY
  54008. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Informix</CELLHEADING
  54009. ></ENTRY
  54010. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Ingres</CELLHEADING
  54011. ></ENTRY
  54012. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>MS SQL&truehy;</CELLHEADING
  54013. ><CELLHEADING>Server</CELLHEADING
  54014. ></ENTRY
  54015. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Oracle</CELLHEADING
  54016. ></ENTRY
  54017. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Sybase</CELLHEADING
  54018. ></ENTRY
  54019. ></RBW-ROW
  54020. ></THEAD
  54021. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Database</CELLBODY
  54022. ></ENTRY
  54023. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54024. ></ENTRY
  54025. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54026. ></ENTRY
  54027. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54028. ></ENTRY
  54029. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54030. ></ENTRY
  54031. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54032. ></ENTRY
  54033. ></RBW-ROW
  54034. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deselect Database</CELLBODY
  54035. ></ENTRY
  54036. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54037. ></ENTRY
  54038. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54039. ></ENTRY
  54040. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54041. ></ENTRY
  54042. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54043. ></ENTRY
  54044. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54045. ></ENTRY
  54046. ></RBW-ROW
  54047. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deselect Schema</CELLBODY
  54048. ></ENTRY
  54049. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54050. ></ENTRY
  54051. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54052. ></ENTRY
  54053. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54054. ></ENTRY
  54055. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54056. ></ENTRY
  54057. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54058. ></ENTRY
  54059. ></RBW-ROW
  54060. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Destroy Database</CELLBODY
  54061. ></ENTRY
  54062. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54063. ></ENTRY
  54064. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54065. ></ENTRY
  54066. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54067. ></ENTRY
  54068. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54069. ></ENTRY
  54070. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54071. ></ENTRY
  54072. ></RBW-ROW
  54073. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Execute SQL</CELLBODY
  54074. ></ENTRY
  54075. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54076. ></ENTRY
  54077. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54078. ></ENTRY
  54079. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54080. ></ENTRY
  54081. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54082. ></ENTRY
  54083. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54084. ></ENTRY
  54085. ></RBW-ROW
  54086. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Select Database</CELLBODY
  54087. ></ENTRY
  54088. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54089. ></ENTRY
  54090. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54091. ></ENTRY
  54092. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54093. ></ENTRY
  54094. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54095. ></ENTRY
  54096. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54097. ></ENTRY
  54098. ></RBW-ROW
  54099. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Select Schema</CELLBODY
  54100. ></ENTRY
  54101. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54102. ></ENTRY
  54103. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54104. ></ENTRY
  54105. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54106. ></ENTRY
  54107. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54108. ></ENTRY
  54109. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54110. ></ENTRY
  54111. ></RBW-ROW
  54112. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set Password</CELLBODY
  54113. ></ENTRY
  54114. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54115. ></ENTRY
  54116. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>NA</CELLBODY
  54117. ></ENTRY
  54118. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54119. ></ENTRY
  54120. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54121. ></ENTRY
  54122. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  54123. ></ENTRY
  54124. ></RBW-ROW
  54125. ></TBODY
  54126. ></TGROUP
  54127. ></RBW-TABLE
  54128. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54129. >Package must be specified</SL.SUBLABEL
  54130. ><B.BODY>You specify your RDBMS using ObjectTeam’s M4_package variable. For example, the following statement specifies Oracle as the RDBMS:</B.BODY
  54131. ><EM.EXAMPLE.MONO>M4_package=ObjectTeam&truehy;OMT/Oracle;RW</EM.EXAMPLE.MONO
  54132. ><B.BODY>If the package specified is ObjectTeam&truehy;OMT/Gen, the Database menu does not appear. For more information, see the <CX5FX5FTITLE>ObjectTeam System Administrator’s Guide</CX5FX5FTITLE
  54133. ><CX5FX5FTITLE></CX5FX5FTITLE
  54134. >.</B.BODY
  54135. ></LABEL
  54136. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54137. >How to define a database<RBW-IDXTERM TERM1="database" TERM2="building"></RBW-IDXTERM
  54138. ><RBW-IDXTERM TERM1="database" TERM2="building"></RBW-IDXTERM
  54139. ></L.LABEL
  54140. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  54141. ></RBW-AUTOGEN
  54142. ></RBW-MARKER
  54143. ><RBW-PARABODY>To define a target database:</RBW-PARABODY
  54144. ></P.PROCEDURE
  54145. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  54146. ></RBW-AUTOGEN
  54147. ></RBW-MARKER
  54148. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  54149. ></LN.LIST.NUM
  54150. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  54151. ></RBW-AUTOGEN
  54152. ></RBW-MARKER
  54153. ><RBW-PARABODY>To create the database, select Database | Create Database.</RBW-PARABODY
  54154. ></LN.LIST.NUM
  54155. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  54156. ></RBW-AUTOGEN
  54157. >If the Database | Create Database item is not available for your RDBMS, you must use the RDBMS to create the database.</N2.NOTE.2
  54158. ><LR.LIST.RESULT>The ObjectTeam shell interprets the Tcl script <CX5FX5FFILE.NAME>tdbop.tcl</CX5FX5FFILE.NAME
  54159. >, which creates the new database on the specified server if the RDBMS is configured properly. When you create a database, some initial actions are executed, such as the creation of empty system tables for the database and the registration of the database in the Relational Database Management System. </LR.LIST.RESULT
  54160. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  54161. ></RBW-AUTOGEN
  54162. ></RBW-MARKER
  54163. ><RBW-PARABODY>To select the database, select Database | Select Database.</RBW-PARABODY
  54164. ></LN.LIST.NUM
  54165. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>Oracle:</CX5FX5FBULLET.EMPHASIS
  54166. > If you are using Oracle, select Database | Select Schema.</LT.LIST.TEXT
  54167. ><LR.LIST.RESULT>The Select Database dialog box appears. The following illustrations show Informix and Oracle:</LR.LIST.RESULT
  54168. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00535.unk" origfile="pics/seldtbif.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54169. ></FA2.FIGURE.ANCHOR.2
  54170. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00536.unk" origfile="pics/seldtbor.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54171. ></FA2.FIGURE.ANCHOR.2
  54172. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  54173. ></RBW-AUTOGEN
  54174. ></RBW-MARKER
  54175. ><RBW-PARABODY>To create the database tables:</RBW-PARABODY
  54176. ></LN.LIST.NUM
  54177. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  54178. ></RBW-AUTOGEN
  54179. ></RBW-MARKER
  54180. ><RBW-PARABODY>In the Information area, select the appropriate SQL create script.</RBW-PARABODY
  54181. ></LN2.LIST.NUM.2
  54182. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  54183. ></RBW-AUTOGEN
  54184. ></RBW-MARKER
  54185. ><RBW-PARABODY>Select Database | Execute SQL.</RBW-PARABODY
  54186. ></LN2.LIST.NUM.2
  54187. ><LR.LIST.RESULT>The ObjectTeam Shell executes the SQL statements of the selected SQL script.</LR.LIST.RESULT
  54188. ></LABEL
  54189. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54190. >Setting a database (server) password</L.LABEL
  54191. ><B.BODY>Microsoft SQL&truehy;Server and Sybase need a password to access the database server. Oracle needs a password to access the database itself. To avoid entering the required password every time you access the database server or database, select Database | Set <RBW-IDXTERM TERM1="password" TERM2="for accessing database"></RBW-IDXTERM
  54192. >Password. Following is the Set Password dialog box for Oracle:</B.BODY
  54193. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00537.unk" origfile="pics/password.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54194. ></FA.FIGURE.ANCHOR
  54195. ></LABEL
  54196. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54197. >Deleting a target database</L.LABEL
  54198. ><B.BODY>In the RDBMSs that support the creation of databases from ObjectTeam, you can also <CX5FX5FTITLE>delete</CX5FX5FTITLE
  54199. > databases. To delete a database, select Database | Destroy Database.</B.BODY
  54200. ></LABEL
  54201. ></SECTION
  54202. ><SECTION><S.SECTION.HEAD>How <RBW-ANCHOR ID="36652"></RBW-ANCHOR
  54203. >SQL is Generated</S.SECTION.HEAD
  54204. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54205. >Introduction</L.LABEL
  54206. ><B.BODY>The mapping of C++ classes on a relational database is carried out through the runtime system. The Data Definition Language (DDL) to create the runtime system in ObjectTeam is SQL. The SQL code that is generated during persistent code generation is generated from the Class Association Diagrams residing in the same system of the previous phase.</B.BODY
  54207. ></LABEL
  54208. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54209. ><RBW-IDXTERM TERM1="data type" TERM2="standard"></RBW-IDXTERM
  54210. >Standard data types</L.LABEL
  54211. ><B.BODY>In Class Association Diagrams, standard data types are used to define the data type of attributes. These types are mapped to target&truehy;dependent database types during persistent code generation. The standard data types can be found in the customization file:</B.BODY
  54212. ><E.EXAMPLE><CX5FX5FTERM>M4_home</CX5FX5FTERM
  54213. >/etc/t_<CX5FX5FTERM>RDBMS</CX5FX5FTERM
  54214. >/l_<CX5FX5FTERM>lang</CX5FX5FTERM
  54215. >/stand_types</E.EXAMPLE
  54216. ><B.BODY>The following customization file is used to map the standard types to database types:</B.BODY
  54217. ><E.EXAMPLE><CX5FX5FTERM>M4_home</CX5FX5FTERM
  54218. >/etc/t_<CX5FX5FTERM>RDBMS</CX5FX5FTERM
  54219. >/db_types</E.EXAMPLE
  54220. ><B.BODY>See <RBW-XREF REFID="14052" TYPE="XREF-TEXTCOPY">Customizing Data Types on page 6–11</RBW-XREF
  54221. > for more information on these files.</B.BODY
  54222. ></LABEL
  54223. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54224. >Generated files</L.LABEL
  54225. ><B.BODY>Whatever RDBMS you are using, the following SQL script files are generated during SQL generation:</B.BODY
  54226. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="111p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File Name</CELLHEADING
  54227. ></ENTRY
  54228. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  54229. ></ENTRY
  54230. ></RBW-ROW
  54231. ></THEAD
  54232. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="create.sql"></RBW-IDXTERM
  54233. >create.sql</CELLBODY
  54234. ></ENTRY
  54235. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Invokes the scripts create_tables and create_procs</CELLBODY
  54236. ></ENTRY
  54237. ></RBW-ROW
  54238. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="create_tables.sql"></RBW-IDXTERM
  54239. >create_tables.sql</CELLBODY
  54240. ></ENTRY
  54241. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains SQL code for table definitions</CELLBODY
  54242. ></ENTRY
  54243. ></RBW-ROW
  54244. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="create_procs.sql"></RBW-IDXTERM
  54245. >create_procs.sql</CELLBODY
  54246. ></ENTRY
  54247. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains SQL code for procedure creation. For every database table that is defined, the database operations <CX5FX5FTITLE>delete</CX5FX5FTITLE
  54248. >, <CX5FX5FTITLE>insert</CX5FX5FTITLE
  54249. > and <CX5FX5FTITLE>update</CX5FX5FTITLE
  54250. > are generated. These procedures also handle referential integrity</CELLBODY
  54251. ></ENTRY
  54252. ></RBW-ROW
  54253. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="drop.sql"></RBW-IDXTERM
  54254. >drop.sql</CELLBODY
  54255. ></ENTRY
  54256. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Invokes the scripts drop_table and drop_procs</CELLBODY
  54257. ></ENTRY
  54258. ></RBW-ROW
  54259. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="drop_tables.sql"></RBW-IDXTERM
  54260. >drop_tables.sql</CELLBODY
  54261. ></ENTRY
  54262. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains SQL code to drop table definitions</CELLBODY
  54263. ></ENTRY
  54264. ></RBW-ROW
  54265. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="drop_procs.sql"></RBW-IDXTERM
  54266. >drop_procs.sql</CELLBODY
  54267. ></ENTRY
  54268. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains SQL code to drop procedure definitions. </CELLBODY
  54269. ></ENTRY
  54270. ></RBW-ROW
  54271. ></TBODY
  54272. ></TGROUP
  54273. ></RBW-TABLE
  54274. ></LABEL
  54275. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54276. >In this section</L.LABEL
  54277. ><B.BODY>This section contains the following topics:</B.BODY
  54278. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  54279. ></ENTRY
  54280. ></RBW-ROW
  54281. ></THEAD
  54282. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41904" TYPE="XREF-TEXTCOPY">Persistent Code Properties&rbwtab;D–14</RBW-XREF
  54283. ></SB.SECTION.BLOCK.TABLE
  54284. ></ENTRY
  54285. ></RBW-ROW
  54286. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30438" TYPE="XREF-TEXTCOPY">Database Table Creation (create_tables)&rbwtab;D–15</RBW-XREF
  54287. ></SB.SECTION.BLOCK.TABLE
  54288. ></ENTRY
  54289. ></RBW-ROW
  54290. ></TBODY
  54291. ></TGROUP
  54292. ></RBW-TABLE
  54293. ></LABEL
  54294. ><SUBSECTION><SS.SUBSEC.HEAD>Persistent Code <RBW-ANCHOR ID="41904"></RBW-ANCHOR
  54295. >Properties</SS.SUBSEC.HEAD
  54296. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54297. >Introduction</L.LABEL
  54298. ><B.BODY>This section describes properties that affect persistent code generation. For instructions on how to specify properties, see <RBW-XREF REFID="16804" TYPE="XREF-TEXTCOPY">How to specify properties on page 3–5</RBW-XREF
  54299. >.</B.BODY
  54300. ></LABEL
  54301. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54302. >Which properties can you specify</L.LABEL
  54303. ><B.BODY>The following class properties affect persistent code generation:</B.BODY
  54304. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54305. ></RBW-AUTOGEN
  54306. ></RBW-MARKER
  54307. ><RBW-PARABODY>Persistent</RBW-PARABODY
  54308. ></LB.LIST.BULLET
  54309. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54310. ></RBW-AUTOGEN
  54311. ></RBW-MARKER
  54312. ><RBW-PARABODY>Abbreviation</RBW-PARABODY
  54313. ></LB.LIST.BULLET
  54314. ><B.BODY>The following data attribute properties affect persistent code generation:</B.BODY
  54315. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54316. ></RBW-AUTOGEN
  54317. ></RBW-MARKER
  54318. ><RBW-PARABODY>Abbreviation</RBW-PARABODY
  54319. ></LB.LIST.BULLET
  54320. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54321. ></RBW-AUTOGEN
  54322. ></RBW-MARKER
  54323. ><RBW-PARABODY>Nullable</RBW-PARABODY
  54324. ></LB.LIST.BULLET
  54325. ><B.BODY>The following association properties affect persistent code generation:</B.BODY
  54326. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54327. ></RBW-AUTOGEN
  54328. ></RBW-MARKER
  54329. ><RBW-PARABODY>Referential Integrity</RBW-PARABODY
  54330. ></LB.LIST.BULLET
  54331. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54332. ></RBW-AUTOGEN
  54333. ></RBW-MARKER
  54334. ><RBW-PARABODY>Insert Policy</RBW-PARABODY
  54335. ></LB.LIST.BULLET
  54336. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54337. ></RBW-AUTOGEN
  54338. ></RBW-MARKER
  54339. ><RBW-PARABODY>Update Policy</RBW-PARABODY
  54340. ></LB.LIST.BULLET
  54341. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54342. ></RBW-AUTOGEN
  54343. ></RBW-MARKER
  54344. ><RBW-PARABODY>Delete Policy</RBW-PARABODY
  54345. ></LB.LIST.BULLET
  54346. ><B.BODY>For details on referential integrity, refer to:</B.BODY
  54347. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54348. ></RBW-AUTOGEN
  54349. ></RBW-MARKER
  54350. ><RBW-PARABODY><RBW-XREF REFID="33656" TYPE="XREF-TEXTCOPY">Referential Integrity (RI)</RBW-XREF
  54351. ></RBW-PARABODY
  54352. ></LB.LIST.BULLET
  54353. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54354. ></RBW-AUTOGEN
  54355. ></RBW-MARKER
  54356. ><RBW-PARABODY><RBW-XREF REFID="11865" TYPE="XREF-TEXTCOPY">Customizing Referential Integrity Policies</RBW-XREF
  54357. ></RBW-PARABODY
  54358. ></LB.LIST.BULLET
  54359. ></LABEL
  54360. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54361. ><RBW-IDXTERM TERM1="persistent" TERM2="property"></RBW-IDXTERM
  54362. ><RBW-IDXTERM TERM1="property" TERM2="persistent"></RBW-IDXTERM
  54363. >Persistent</L.LABEL
  54364. ><B.BODY>This property must be switched on to indicate that a class is persistent. Besides, at least one data attribute must be identified as a key attribute. You can do that by inserting an asterisk (*) in front of the attribute’s name.</B.BODY
  54365. ></LABEL
  54366. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54367. ><RBW-IDXTERM TERM1="abbreviation" TERM2="property"></RBW-IDXTERM
  54368. ><RBW-IDXTERM TERM1="property" TERM2="abbreviation"></RBW-IDXTERM
  54369. >Abbreviation</L.LABEL
  54370. ><B.BODY>If the name of a persistent class or data attribute is longer than the maximum length accepted by the RDBMS, you should specify an abbreviation.</B.BODY
  54371. ></LABEL
  54372. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54373. ><RBW-IDXTERM TERM1="nullable" TERM2="property"></RBW-IDXTERM
  54374. ><RBW-IDXTERM TERM1="property" TERM2="nullable"></RBW-IDXTERM
  54375. >Nullable</L.LABEL
  54376. ><B.BODY>This property determines whether or not an attribute is allowed to have a NULL value. </B.BODY
  54377. ></LABEL
  54378. ></SUBSECTION
  54379. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="30438"></RBW-ANCHOR
  54380. >Database Table Creation (create_tables)</SS.SUBSEC.HEAD
  54381. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54382. >SQL</L.LABEL
  54383. ><B.BODY>This section describes the SQL that is generated to create the database tables.</B.BODY
  54384. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  54385. ></RBW-AUTOGEN
  54386. >The generated SQL is different for every RDBMS supported by ObjectTeam, but the underlying principles are the same. The examples in this section use the SQL for Informix.</N.NOTE
  54387. ></LABEL
  54388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54389. >SQL generation for persistent classes</L.LABEL
  54390. ><B.BODY>In the simplest situation one persistent class maps to one table. Operations are irrelevant to SQL generation; they are generated as C++ code.</B.BODY
  54391. ><B.BODY>Each persistent class is mapped to a table, and the table rows are instances of the class. The combination of class name (table name) and instance name (user&truehy;defined primary key) is a system&truehy;wide unique identification. Prefixing an attribute in the Class Association Diagram with an asterisk (*) makes the attribute part of the primary key. </B.BODY
  54392. ><B.BODY>The following <CX5FX5FINPUT>CREATE TABLE</CX5FX5FINPUT
  54393. > statements are generated for one persistent class:</B.BODY
  54394. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00538.unk" origfile="pics/patient.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54395. ></FA2.FIGURE.ANCHOR.2
  54396. ><B.BODY><CX5FX5FTITLE>SQL (Informix)</CX5FX5FTITLE
  54397. >.</B.BODY
  54398. ><EM.EXAMPLE.MONO>CREATE TABLE Patient (</EM.EXAMPLE.MONO
  54399. ><EM.EXAMPLE.MONO>   name CHAR(40),</EM.EXAMPLE.MONO
  54400. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80),</EM.EXAMPLE.MONO
  54401. ><EM.EXAMPLE.MONO>   address CHAR(50),</EM.EXAMPLE.MONO
  54402. ><EM.EXAMPLE.MONO>   age INT,</EM.EXAMPLE.MONO
  54403. ><EM.EXAMPLE.MONO>   PRIMARY KEY (name, class_type)</EM.EXAMPLE.MONO
  54404. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54405. ><B.BODY></B.BODY
  54406. ></LABEL
  54407. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54408. >Association: one &truehy; optional </L.LABEL
  54409. ><B.BODY>In relationships that meet the following multiplicity requirements, it does not matter which table acts as master and which as detail:</B.BODY
  54410. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54411. ></RBW-AUTOGEN
  54412. ></RBW-MARKER
  54413. ><RBW-PARABODY>The association has a multiplicity of <CX5FX5FEMPHASIS>one</CX5FX5FEMPHASIS
  54414. > at one side.</RBW-PARABODY
  54415. ></LB.LIST.BULLET
  54416. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54417. ></RBW-AUTOGEN
  54418. ></RBW-MARKER
  54419. ><RBW-PARABODY>The association has a multiplicity that is <CX5FX5FEMPHASIS>not many</CX5FX5FEMPHASIS
  54420. > at the other side.</RBW-PARABODY
  54421. ></LB.LIST.BULLET
  54422. ><B.BODY>However, since there has to be a master and a detail, the rule is that the destination class becomes master. The destination class is the class <CX5FX5FTITLE>to</CX5FX5FTITLE
  54423. > which the association was drawn in the Class Association Diagram. The class <CX5FX5FTITLE>from</CX5FX5FTITLE
  54424. > which the association was drawn becomes the detail. </B.BODY
  54425. ><B.BODY>The association in the diagram below meets the requirements. The master&truehy;detail pair is as follows:</B.BODY
  54426. ><E.EXAMPLE>A(master) &truehy; B(detail)</E.EXAMPLE
  54427. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  54428. ></RBW-AUTOGEN
  54429. >You cannot tell by looking at the diagram which class is the destination class.</N.NOTE
  54430. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00539.unk" origfile="pics/sqasoo.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54431. ></FA.FIGURE.ANCHOR
  54432. ><B.BODY><CX5FX5FTITLE>SQL (Informix)</CX5FX5FTITLE
  54433. >.</B.BODY
  54434. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  54435. ><EM.EXAMPLE.MONO>   b_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54436. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54437. ><EM.EXAMPLE.MONO>   a_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54438. ><EM.EXAMPLE.MONO>   i_class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54439. ><EM.EXAMPLE.MONO>   b_date INT  ,</EM.EXAMPLE.MONO
  54440. ><EM.EXAMPLE.MONO>   PRIMARY KEY (b_name, class_type)</EM.EXAMPLE.MONO
  54441. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54442. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  54443. ><EM.EXAMPLE.MONO>   a_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54444. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54445. ><EM.EXAMPLE.MONO>   a_date INT  ,</EM.EXAMPLE.MONO
  54446. ><EM.EXAMPLE.MONO>   PRIMARY KEY (a_name, class_type)</EM.EXAMPLE.MONO
  54447. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54448. ><EM.EXAMPLE.MONO>ALTER TABLE B</EM.EXAMPLE.MONO
  54449. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY </EM.EXAMPLE.MONO
  54450. ><EM.EXAMPLE.MONO>      (a_name,  i_class_type)</EM.EXAMPLE.MONO
  54451. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  54452. ></LABEL
  54453. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54454. >Associations with a many multiplicity at one side</L.LABEL
  54455. ><B.BODY>In relationships that meet the following requirements, the class at the end of the <CX5FX5FTITLE>many</CX5FX5FTITLE
  54456. > multiplicity acts as detail in the master&truehy;detail pair:</B.BODY
  54457. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54458. ></RBW-AUTOGEN
  54459. ></RBW-MARKER
  54460. ><RBW-PARABODY>The association has no class or link attribute associated to it.</RBW-PARABODY
  54461. ></LB.LIST.BULLET
  54462. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54463. ></RBW-AUTOGEN
  54464. ></RBW-MARKER
  54465. ><RBW-PARABODY>The multiplicity is not <CX5FX5FTITLE>many</CX5FX5FTITLE
  54466. > at either ends .</RBW-PARABODY
  54467. ></LB.LIST.BULLET
  54468. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54469. ></RBW-AUTOGEN
  54470. ></RBW-MARKER
  54471. ><RBW-PARABODY>The relationship is not qualified.</RBW-PARABODY
  54472. ></LB.LIST.BULLET
  54473. ><B.BODY>The diagrams depicted below meet these requirements. The master&truehy;detail pairs are as follows:</B.BODY
  54474. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54475. ></RBW-AUTOGEN
  54476. ></RBW-MARKER
  54477. ><RBW-PARABODY>For diagrams 1 and 2</RBW-PARABODY
  54478. ></LB.LIST.BULLET
  54479. ><E.EXAMPLE>A(master) &truehy; B(detail)</E.EXAMPLE
  54480. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00540.unk" origfile="pics/sqasm1.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54481. ></FA2.FIGURE.ANCHOR.2
  54482. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00541.unk" origfile="pics/sqasm2.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54483. ></FA2.FIGURE.ANCHOR.2
  54484. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54485. ></RBW-AUTOGEN
  54486. ></RBW-MARKER
  54487. ><RBW-PARABODY>For diagram 3</RBW-PARABODY
  54488. ></LB.LIST.BULLET
  54489. ><E.EXAMPLE>A(master) &truehy; A(detail</E.EXAMPLE
  54490. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00542.unk" origfile="pics/sqasm3.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54491. ></FA2.FIGURE.ANCHOR.2
  54492. ><B.BODY><CX5FX5FTITLE>SQL (Informix): Diagram 1</CX5FX5FTITLE
  54493. >.</B.BODY
  54494. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  54495. ><EM.EXAMPLE.MONO>   b_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54496. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54497. ><EM.EXAMPLE.MONO>   a_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54498. ><EM.EXAMPLE.MONO>   i_class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54499. ><EM.EXAMPLE.MONO>   b_date INT  ,</EM.EXAMPLE.MONO
  54500. ><EM.EXAMPLE.MONO>   PRIMARY KEY (b_name, class_type)</EM.EXAMPLE.MONO
  54501. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54502. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  54503. ><EM.EXAMPLE.MONO>   a_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54504. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54505. ><EM.EXAMPLE.MONO>   a_date INT  ,</EM.EXAMPLE.MONO
  54506. ><EM.EXAMPLE.MONO>   PRIMARY KEY (a_name, class_type)</EM.EXAMPLE.MONO
  54507. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54508. ><EM.EXAMPLE.MONO>ALTER TABLE B</EM.EXAMPLE.MONO
  54509. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY </EM.EXAMPLE.MONO
  54510. ><EM.EXAMPLE.MONO>      (a_name, i_class_type)</EM.EXAMPLE.MONO
  54511. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  54512. ><EM.EXAMPLE.MONO>A(master) &truehy; A(detail)</EM.EXAMPLE.MONO
  54513. ></LABEL
  54514. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54515. >Association: qualified and m&truehy;n</L.LABEL
  54516. ><B.BODY>For relations that meet the following requirements, an extra table with the name of the association is generated:</B.BODY
  54517. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54518. ></RBW-AUTOGEN
  54519. ></RBW-MARKER
  54520. ><RBW-PARABODY>The association has no class or link attribute associated to it.</RBW-PARABODY
  54521. ></LB.LIST.BULLET
  54522. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54523. ></RBW-AUTOGEN
  54524. ></RBW-MARKER
  54525. ><RBW-PARABODY>If the relationship is not qualified, the multiplicity of the relationship is <CX5FX5FTITLE>many</CX5FX5FTITLE
  54526. > at both sides (m&truehy;n relationship). If the relationship is qualified, the multiplicity of the relationship is irrelevant.</RBW-PARABODY
  54527. ></LB.LIST.BULLET
  54528. ><B.BODY>The diagrams depicted below meet these requirements. In all these cases, an extra table <CX5FX5FOBJECT.NAME>assoc</CX5FX5FOBJECT.NAME
  54529. > is generated. This extra table acts as detail in the master&truehy;detail pairs:</B.BODY
  54530. ><E.EXAMPLE>A(master) &truehy; assoc (detail) </E.EXAMPLE
  54531. ><E.EXAMPLE>B(master) &truehy; assoc (detail)</E.EXAMPLE
  54532. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00543.unk" origfile="pics/sqasmn1.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54533. ></FA.FIGURE.ANCHOR
  54534. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00544.unk" origfile="pics/sqasmn2.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54535. ></FA.FIGURE.ANCHOR
  54536. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00545.unk" origfile="pics/sqasmn3.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54537. ></FA.FIGURE.ANCHOR
  54538. ><B.BODY><CX5FX5FTITLE>SQL (Informix): Diagram 1</CX5FX5FTITLE
  54539. >.</B.BODY
  54540. ><EM.EXAMPLE.MONO>CREATE TABLE assoc (</EM.EXAMPLE.MONO
  54541. ><EM.EXAMPLE.MONO>   b_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54542. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54543. ><EM.EXAMPLE.MONO>   a_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54544. ><EM.EXAMPLE.MONO>   i_class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54545. ><EM.EXAMPLE.MONO>   PRIMARY KEY (b_name, class_type, </EM.EXAMPLE.MONO
  54546. ><EM.EXAMPLE.MONO>   a_name, i_class_type)</EM.EXAMPLE.MONO
  54547. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54548. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  54549. ><EM.EXAMPLE.MONO>   b_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54550. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54551. ><EM.EXAMPLE.MONO>   b_date INT  ,</EM.EXAMPLE.MONO
  54552. ><EM.EXAMPLE.MONO>   PRIMARY KEY (b_name, class_type)</EM.EXAMPLE.MONO
  54553. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54554. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  54555. ><EM.EXAMPLE.MONO>   a_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54556. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54557. ><EM.EXAMPLE.MONO>   a_date INT  ,</EM.EXAMPLE.MONO
  54558. ><EM.EXAMPLE.MONO>   PRIMARY KEY (a_name, class_type)</EM.EXAMPLE.MONO
  54559. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54560. ><EM.EXAMPLE.MONO>ALTER TABLE assoc</EM.EXAMPLE.MONO
  54561. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY </EM.EXAMPLE.MONO
  54562. ><EM.EXAMPLE.MONO>     (b_name,    class_type)</EM.EXAMPLE.MONO
  54563. ><EM.EXAMPLE.MONO>   REFERENCES B;</EM.EXAMPLE.MONO
  54564. ></LABEL
  54565. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54566. >Associations with class or link attribute </L.LABEL
  54567. ><B.BODY>In associations that have a class or a link attribute associated with them, the associative object acts as detail in the master&truehy;detail&truehy;pairs. In the diagrams depicted below, the master&truehy;detail pairs are as follows:</B.BODY
  54568. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54569. ></RBW-AUTOGEN
  54570. ></RBW-MARKER
  54571. ><RBW-PARABODY>For diagram 1 </RBW-PARABODY
  54572. ></LB.LIST.BULLET
  54573. ><E.EXAMPLE>A(master) &truehy; C(detail)</E.EXAMPLE
  54574. ><E.EXAMPLE>B(master) &truehy; C(detail)</E.EXAMPLE
  54575. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00546.unk" origfile="pics/sqaslnk1.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54576. ></FA2.FIGURE.ANCHOR.2
  54577. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54578. ></RBW-AUTOGEN
  54579. ></RBW-MARKER
  54580. ><RBW-PARABODY>For diagram 2</RBW-PARABODY
  54581. ></LB.LIST.BULLET
  54582. ><E.EXAMPLE>A(master) &truehy; assoc(detail)</E.EXAMPLE
  54583. ><E.EXAMPLE>B(master) &truehy; assoc(detail)</E.EXAMPLE
  54584. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00547.unk" origfile="pics/sqaslnk2.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54585. ></FA2.FIGURE.ANCHOR.2
  54586. ><B.BODY><CX5FX5FTITLE>SQL (Informix): Diagram 1</CX5FX5FTITLE
  54587. >.</B.BODY
  54588. ><EM.EXAMPLE.MONO>CREATE TABLE C (</EM.EXAMPLE.MONO
  54589. ><EM.EXAMPLE.MONO>   b_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54590. ><EM.EXAMPLE.MONO>   i_class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54591. ><EM.EXAMPLE.MONO>   a_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54592. ><EM.EXAMPLE.MONO>   j_class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54593. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54594. ><EM.EXAMPLE.MONO>   c_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54595. ><EM.EXAMPLE.MONO>   c_date INT  ,</EM.EXAMPLE.MONO
  54596. ><EM.EXAMPLE.MONO>   PRIMARY KEY (b_name, i_class_type, </EM.EXAMPLE.MONO
  54597. ><EM.EXAMPLE.MONO>     a_name, j_class_type, class_type)</EM.EXAMPLE.MONO
  54598. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54599. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  54600. ><EM.EXAMPLE.MONO>   b_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54601. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54602. ><EM.EXAMPLE.MONO>   b_date INT  ,</EM.EXAMPLE.MONO
  54603. ><EM.EXAMPLE.MONO>   PRIMARY KEY (b_name, class_type)</EM.EXAMPLE.MONO
  54604. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54605. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  54606. ><EM.EXAMPLE.MONO>   a_name CHAR(40)  ,</EM.EXAMPLE.MONO
  54607. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54608. ><EM.EXAMPLE.MONO>   a_date INT  ,</EM.EXAMPLE.MONO
  54609. ><EM.EXAMPLE.MONO>   PRIMARY KEY (a_name, class_type)</EM.EXAMPLE.MONO
  54610. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54611. ><EM.EXAMPLE.MONO>ALTER TABLE C</EM.EXAMPLE.MONO
  54612. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (b_name, </EM.EXAMPLE.MONO
  54613. ><EM.EXAMPLE.MONO>      i_class_type)</EM.EXAMPLE.MONO
  54614. ><EM.EXAMPLE.MONO>   REFERENCES B;</EM.EXAMPLE.MONO
  54615. ><EM.EXAMPLE.MONO>ALTER TABLE C</EM.EXAMPLE.MONO
  54616. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (a_name,</EM.EXAMPLE.MONO
  54617. ><EM.EXAMPLE.MONO>      j_class_type)</EM.EXAMPLE.MONO
  54618. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  54619. ><EM.EXAMPLE.MONO>CREATE TABLE C (</EM.EXAMPLE.MONO
  54620. ></LABEL
  54621. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54622. >Generalizations<RBW-IDXTERM TERM1="generalization" TERM2="example of generated C++ code"></RBW-IDXTERM
  54623. ></L.LABEL
  54624. ><B.BODY>In a generalization, the superclass acts as master and the subclass as detail. In the following diagram, the master&truehy;detail pairs are as follows:</B.BODY
  54625. ><E.EXAMPLE>A(master) &truehy; B(detail)</E.EXAMPLE
  54626. ><E.EXAMPLE>A(master) &truehy; C(detail)</E.EXAMPLE
  54627. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00548.unk" origfile="pics/sqasgen.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  54628. ></FA2.FIGURE.ANCHOR.2
  54629. ><B.BODY><CX5FX5FTITLE>SQL (Informix)</CX5FX5FTITLE
  54630. >.</B.BODY
  54631. ><EM.EXAMPLE.MONO>CREATE TABLE C (</EM.EXAMPLE.MONO
  54632. ><EM.EXAMPLE.MONO>   name CHAR(40)  ,</EM.EXAMPLE.MONO
  54633. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54634. ><EM.EXAMPLE.MONO>   c_date INT  ,</EM.EXAMPLE.MONO
  54635. ><EM.EXAMPLE.MONO>   PRIMARY KEY (name, class_type)</EM.EXAMPLE.MONO
  54636. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54637. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  54638. ><EM.EXAMPLE.MONO>   name CHAR(40)  ,</EM.EXAMPLE.MONO
  54639. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54640. ><EM.EXAMPLE.MONO>   b_id INT  ,</EM.EXAMPLE.MONO
  54641. ><EM.EXAMPLE.MONO>   PRIMARY KEY (name, class_type)</EM.EXAMPLE.MONO
  54642. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54643. ><EM.EXAMPLE.MONO>*</EM.EXAMPLE.MONO
  54644. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  54645. ><EM.EXAMPLE.MONO>   name CHAR(40)  ,</EM.EXAMPLE.MONO
  54646. ><EM.EXAMPLE.MONO>   class_type VARCHAR(80)  ,</EM.EXAMPLE.MONO
  54647. ><EM.EXAMPLE.MONO>   a_date INT  ,</EM.EXAMPLE.MONO
  54648. ><EM.EXAMPLE.MONO>   PRIMARY KEY (name, class_type)</EM.EXAMPLE.MONO
  54649. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  54650. ><EM.EXAMPLE.MONO>ALTER TABLE C</EM.EXAMPLE.MONO
  54651. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (name, </EM.EXAMPLE.MONO
  54652. ><EM.EXAMPLE.MONO>   class_type)</EM.EXAMPLE.MONO
  54653. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  54654. ><EM.EXAMPLE.MONO>ALTER TABLE B</EM.EXAMPLE.MONO
  54655. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (name, </EM.EXAMPLE.MONO
  54656. ><EM.EXAMPLE.MONO>   class_type)</EM.EXAMPLE.MONO
  54657. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  54658. ><EM.EXAMPLE.MONO>CREATE TABLE C (</EM.EXAMPLE.MONO
  54659. ><E.EXAMPLE></E.EXAMPLE
  54660. ><B.BODY>The attribute <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  54661. >, which is generated for every base class, is essential in generalizations. </B.BODY
  54662. ><B.BODY>The following tables show what could be the contents of database table A, B and C. The value of <CX5FX5FOBJECT.NAME>a_date</CX5FX5FOBJECT.NAME
  54663. > is the same for both Z’s that occur in the table A. Without the <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  54664. > attribute, it would be impossible to distinguish the two Z’s, even though they are two different occurrences with the same name.</B.BODY
  54665. ><B.BODY></B.BODY
  54666. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="34p"><COLSPEC COLNAME="2" COLWIDTH="108p"><COLSPEC COLNAME="3" COLWIDTH="180p"><COLSPEC COLNAME="4" COLWIDTH="126p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>A</CELLHEADING
  54667. ></ENTRY
  54668. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Name</CELLHEADING
  54669. ></ENTRY
  54670. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class_type</CELLHEADING
  54671. ></ENTRY
  54672. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>A_date</CELLHEADING
  54673. ></ENTRY
  54674. ></RBW-ROW
  54675. ></THEAD
  54676. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  54677. ></ENTRY
  54678. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  54679. ></ENTRY
  54680. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  54681. ></ENTRY
  54682. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>951107</CELLBODY
  54683. ></ENTRY
  54684. ></RBW-ROW
  54685. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  54686. ></ENTRY
  54687. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Y</CELLBODY
  54688. ></ENTRY
  54689. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>C</CELLBODY
  54690. ></ENTRY
  54691. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>951106</CELLBODY
  54692. ></ENTRY
  54693. ></RBW-ROW
  54694. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  54695. ></ENTRY
  54696. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  54697. ></ENTRY
  54698. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  54699. ></ENTRY
  54700. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>951111</CELLBODY
  54701. ></ENTRY
  54702. ></RBW-ROW
  54703. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  54704. ></ENTRY
  54705. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  54706. ></ENTRY
  54707. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>C</CELLBODY
  54708. ></ENTRY
  54709. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>951111</CELLBODY
  54710. ></ENTRY
  54711. ></RBW-ROW
  54712. ></TBODY
  54713. ></TGROUP
  54714. ></RBW-TABLE
  54715. ><B.BODY></B.BODY
  54716. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="34p"><COLSPEC COLNAME="2" COLWIDTH="108p"><COLSPEC COLNAME="3" COLWIDTH="180p"><COLSPEC COLNAME="4" COLWIDTH="126p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>B</CELLHEADING
  54717. ></ENTRY
  54718. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Name</CELLHEADING
  54719. ></ENTRY
  54720. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>class_type</CELLHEADING
  54721. ></ENTRY
  54722. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>B_id</CELLHEADING
  54723. ></ENTRY
  54724. ></RBW-ROW
  54725. ></THEAD
  54726. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  54727. ></ENTRY
  54728. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  54729. ></ENTRY
  54730. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  54731. ></ENTRY
  54732. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>333</CELLBODY
  54733. ></ENTRY
  54734. ></RBW-ROW
  54735. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  54736. ></ENTRY
  54737. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  54738. ></ENTRY
  54739. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  54740. ></ENTRY
  54741. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>444</CELLBODY
  54742. ></ENTRY
  54743. ></RBW-ROW
  54744. ></TBODY
  54745. ></TGROUP
  54746. ></RBW-TABLE
  54747. ><B.BODY></B.BODY
  54748. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="34p"><COLSPEC COLNAME="2" COLWIDTH="108p"><COLSPEC COLNAME="3" COLWIDTH="180p"><COLSPEC COLNAME="4" COLWIDTH="126p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C</CELLHEADING
  54749. ></ENTRY
  54750. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Name</CELLHEADING
  54751. ></ENTRY
  54752. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class_type</CELLHEADING
  54753. ></ENTRY
  54754. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>C_date</CELLHEADING
  54755. ></ENTRY
  54756. ></RBW-ROW
  54757. ></THEAD
  54758. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  54759. ></ENTRY
  54760. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  54761. ></ENTRY
  54762. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>C</CELLBODY
  54763. ></ENTRY
  54764. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>940709</CELLBODY
  54765. ></ENTRY
  54766. ></RBW-ROW
  54767. ></TBODY
  54768. ></TGROUP
  54769. ></RBW-TABLE
  54770. ></LABEL
  54771. ></SUBSECTION
  54772. ></SECTION
  54773. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="20418"></RBW-ANCHOR
  54774. ><RBW-ANCHOR ID="13730"></RBW-ANCHOR
  54775. >ESQLC++ <RBW-IDXTERM TERM1="Informix" TERM2="ESQL Features"></RBW-IDXTERM
  54776. ><RBW-IDXTERM TERM1="ESQL generation" TERM2="for Informix"></RBW-IDXTERM
  54777. >Generation<RBW-IDXTERM TERM1="ESQLC++" TERM2="generation"></RBW-IDXTERM
  54778. ><RBW-IDXTERM TERM1="code generation" TERM2="ESQLC++"></RBW-IDXTERM
  54779. ><RBW-IDXTERM TERM1="persistent code generation" TERM2="ESQLC++"></RBW-IDXTERM
  54780. ></S.SECTION.HEAD
  54781. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54782. >Introduction</L.LABEL
  54783. ><B.BODY>The mapping of C++ classes to a Relational Database is carried out through a runtime system. This runtime system enables the classes to do the following: </B.BODY
  54784. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54785. ></RBW-AUTOGEN
  54786. ></RBW-MARKER
  54787. ><RBW-PARABODY>Connect to the database</RBW-PARABODY
  54788. ></LB.LIST.BULLET
  54789. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54790. ></RBW-AUTOGEN
  54791. ></RBW-MARKER
  54792. ><RBW-PARABODY>Transact information to and from the database </RBW-PARABODY
  54793. ></LB.LIST.BULLET
  54794. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54795. ></RBW-AUTOGEN
  54796. ></RBW-MARKER
  54797. ><RBW-PARABODY>Carry out operations on the database such as <CX5FX5FTITLE>insert</CX5FX5FTITLE
  54798. >, <CX5FX5FTITLE>update</CX5FX5FTITLE
  54799. > and <CX5FX5FTITLE>delete</CX5FX5FTITLE
  54800. > </RBW-PARABODY
  54801. ></LB.LIST.BULLET
  54802. ><B.BODY>The Data Manipulation Language (DML) for the runtime system is ESQLC++. The generated ESQLC++ is different for every RDBMS supported by ObjectTeam, but the underlying principles are the same.</B.BODY
  54803. ></LABEL
  54804. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54805. >In this section</L.LABEL
  54806. ><B.BODY>This section contains the following topics:</B.BODY
  54807. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  54808. ></ENTRY
  54809. ></RBW-ROW
  54810. ></THEAD
  54811. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32016" TYPE="XREF-TEXTCOPY">Typedef Structs&rbwtab;D–24</RBW-XREF
  54812. ></SB.SECTION.BLOCK.TABLE
  54813. ></ENTRY
  54814. ></RBW-ROW
  54815. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29071" TYPE="XREF-TEXTCOPY">DBObject&rbwtab;D–25</RBW-XREF
  54816. ></SB.SECTION.BLOCK.TABLE
  54817. ></ENTRY
  54818. ></RBW-ROW
  54819. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13891" TYPE="XREF-TEXTCOPY">The Persistent Class&rbwtab;D–26</RBW-XREF
  54820. ></SB.SECTION.BLOCK.TABLE
  54821. ></ENTRY
  54822. ></RBW-ROW
  54823. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28359" TYPE="XREF-TEXTCOPY">Database Class Generation&rbwtab;D–30</RBW-XREF
  54824. ></SB.SECTION.BLOCK.TABLE
  54825. ></ENTRY
  54826. ></RBW-ROW
  54827. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17301" TYPE="XREF-TEXTCOPY">Data Attribute Generation&rbwtab;D–33</RBW-XREF
  54828. ></SB.SECTION.BLOCK.TABLE
  54829. ></ENTRY
  54830. ></RBW-ROW
  54831. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19856" TYPE="XREF-TEXTCOPY">Association Generation&rbwtab;D–35</RBW-XREF
  54832. ></SB.SECTION.BLOCK.TABLE
  54833. ></ENTRY
  54834. ></RBW-ROW
  54835. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37091" TYPE="XREF-TEXTCOPY">Qualified Association Generation&rbwtab;D–39</RBW-XREF
  54836. ></SB.SECTION.BLOCK.TABLE
  54837. ></ENTRY
  54838. ></RBW-ROW
  54839. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12248" TYPE="XREF-TEXTCOPY">Link Attribute Generation&rbwtab;D–42</RBW-XREF
  54840. ></SB.SECTION.BLOCK.TABLE
  54841. ></ENTRY
  54842. ></RBW-ROW
  54843. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40455" TYPE="XREF-TEXTCOPY">Qualified Link Generation&rbwtab;D–44</RBW-XREF
  54844. ></SB.SECTION.BLOCK.TABLE
  54845. ></ENTRY
  54846. ></RBW-ROW
  54847. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39175" TYPE="XREF-TEXTCOPY">Example&rbwtab;D–45</RBW-XREF
  54848. ></SB.SECTION.BLOCK.TABLE
  54849. ></ENTRY
  54850. ></RBW-ROW
  54851. ></TBODY
  54852. ></TGROUP
  54853. ></RBW-TABLE
  54854. ></LABEL
  54855. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32016"></RBW-ANCHOR
  54856. >Typedef Structs<RBW-IDXTERM TERM1="typedef structs" TERM2="in ESQLC++ generation"></RBW-IDXTERM
  54857. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="typedef structs file"></RBW-IDXTERM
  54858. ></SS.SUBSEC.HEAD
  54859. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54860. >Types of typedef structs</L.LABEL
  54861. ><B.BODY>For every runtime system a file system_name<CX5FX5FFILE.NAME>Struct.hxx</CX5FX5FFILE.NAME
  54862. > is generated. This file contains typedef structs of the table representations. This typedef structs file contains the following type def structs used in embedded SQL:</B.BODY
  54863. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54864. ></RBW-AUTOGEN
  54865. ></RBW-MARKER
  54866. ><RBW-PARABODY><CX5FX5FTERM>table_name</CX5FX5FTERM
  54867. >Row &truehy; used to represent in&truehy;core copies of table rows</RBW-PARABODY
  54868. ></LB.LIST.BULLET
  54869. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54870. ></RBW-AUTOGEN
  54871. ></RBW-MARKER
  54872. ><RBW-PARABODY><CX5FX5FTERM>table_name</CX5FX5FTERM
  54873. >Ind &truehy; used to check on null values</RBW-PARABODY
  54874. ></LB.LIST.BULLET
  54875. ><B.BODY>The Tcl procedure <CX5FX5FPROCEDURE.NAME>table::generate</CX5FX5FPROCEDURE.NAME
  54876. >, which is used to generate the typedefs structs file, can be found in the default Tcl file:</B.BODY
  54877. ><E.EXAMPLE><CX5FX5FTERM>M4_home</CX5FX5FTERM
  54878. >/tcl/t_<CX5FX5FTERM>RDBMS</CX5FX5FTERM
  54879. >/l_cpp/gen_db_def.tcl</E.EXAMPLE
  54880. ></LABEL
  54881. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54882. >Example</L.LABEL
  54883. ><B.BODY>This is an example of both typedef structs:</B.BODY
  54884. ><EM.EXAMPLE.MONO>typedef struct DbPersonRow_ {</EM.EXAMPLE.MONO
  54885. ><EM.EXAMPLE.MONO>      char name[31];</EM.EXAMPLE.MONO
  54886. ><EM.EXAMPLE.MONO>      char class_type[81];</EM.EXAMPLE.MONO
  54887. ><EM.EXAMPLE.MONO>      char address[31];</EM.EXAMPLE.MONO
  54888. ><EM.EXAMPLE.MONO>} DbPersonRow;</EM.EXAMPLE.MONO
  54889. ><EM.EXAMPLE.MONO>typedef struct DbPersonInd_ {</EM.EXAMPLE.MONO
  54890. ><EM.EXAMPLE.MONO>      short name;</EM.EXAMPLE.MONO
  54891. ><EM.EXAMPLE.MONO>      short class_type;</EM.EXAMPLE.MONO
  54892. ><EM.EXAMPLE.MONO>      short address;</EM.EXAMPLE.MONO
  54893. ><EM.EXAMPLE.MONO>} DbPersonInd;</EM.EXAMPLE.MONO
  54894. ><B.BODY>The typedefs allow you to retrieve data from the database, as shown in the following Informix ESQLC example (<CX5FX5FINPUT>data</CX5FX5FINPUT
  54895. > and <CX5FX5FINPUT>nullInd</CX5FX5FINPUT
  54896. > are data members of the persistent class):</B.BODY
  54897. ><EM.EXAMPLE.MONO>$DbPersonRow *db_data = &data;</EM.EXAMPLE.MONO
  54898. ><EM.EXAMPLE.MONO>$DbPersonInd *db_ind = &nullInd;</EM.EXAMPLE.MONO
  54899. ><EM.EXAMPLE.MONO>$SELECT name, class_type, address</EM.EXAMPLE.MONO
  54900. ><EM.EXAMPLE.MONO>INTO $db_data&truehy;>name:db_ind&truehy;>name,</EM.EXAMPLE.MONO
  54901. ><EM.EXAMPLE.MONO>   $db_data&truehy;>class_type:db_ind&truehy;>class_type,</EM.EXAMPLE.MONO
  54902. ><EM.EXAMPLE.MONO>   $db_data&truehy;>address:db_ind&truehy;>address</EM.EXAMPLE.MONO
  54903. ><EM.EXAMPLE.MONO>FROM DbPerson</EM.EXAMPLE.MONO
  54904. ><EM.EXAMPLE.MONO>WHERE name = $db_data&truehy;>name AND</EM.EXAMPLE.MONO
  54905. ><EM.EXAMPLE.MONO>   class_type = $db_data&truehy;>class_type;</EM.EXAMPLE.MONO
  54906. ></LABEL
  54907. ></SUBSECTION
  54908. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29071"></RBW-ANCHOR
  54909. >DBObject<RBW-IDXTERM TERM1="DBObject"></RBW-IDXTERM
  54910. ><RBW-IDXTERM TERM1="database" TERM2="object class library"></RBW-IDXTERM
  54911. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="DBObject"></RBW-IDXTERM
  54912. ></SS.SUBSEC.HEAD
  54913. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54914. >Introduction</L.LABEL
  54915. ><B.BODY>All persistent classes are <CX5FX5FINPUT>public</CX5FX5FINPUT
  54916. > <CX5FX5FINPUT>virtual</CX5FX5FINPUT
  54917. > subclasses of the class <CX5FX5FINPUT>DBObject</CX5FX5FINPUT
  54918. > from the ObjectTeam class library. This class offers database connection and transaction functions.</B.BODY
  54919. ></LABEL
  54920. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54921. >Functions</L.LABEL
  54922. ><B.BODY>The following functions are available:</B.BODY
  54923. ><EWM.EXAMPLEW.MONO>static int     connectDB(const char *dbName);</EWM.EXAMPLEW.MONO
  54924. ><EWM.EXAMPLEW.MONO>static int     beginWork();</EWM.EXAMPLEW.MONO
  54925. ><EWM.EXAMPLEW.MONO>static int     commit();</EWM.EXAMPLEW.MONO
  54926. ><EWM.EXAMPLEW.MONO>static int     rollback();</EWM.EXAMPLEW.MONO
  54927. ><EWM.EXAMPLEW.MONO>int           processSqlStatus();         // process sqlca.sql_code</EWM.EXAMPLEW.MONO
  54928. ></LABEL
  54929. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54930. >States</L.LABEL
  54931. ><B.BODY>A DbObject can find itself in one of several states:</B.BODY
  54932. ><EM.EXAMPLE.MONO>enum State {</EM.EXAMPLE.MONO
  54933. ><EM.EXAMPLE.MONO>   CREATED,      // just created</EM.EXAMPLE.MONO
  54934. ><EM.EXAMPLE.MONO>   NORMAL,       // everything OK</EM.EXAMPLE.MONO
  54935. ><EM.EXAMPLE.MONO>   SQL_ERROR,     // SQL error occurred</EM.EXAMPLE.MONO
  54936. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  54937. ><B.BODY>Note that the <CX5FX5FINPUT>DBObject</CX5FX5FINPUT
  54938. > header file contains no embedded SQL.</B.BODY
  54939. ></LABEL
  54940. ></SUBSECTION
  54941. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13891"></RBW-ANCHOR
  54942. >The Persistent Class<RBW-IDXTERM TERM1="persistent class"></RBW-IDXTERM
  54943. ><RBW-IDXTERM TERM1="class" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  54944. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="class"></RBW-IDXTERM
  54945. ></SS.SUBSEC.HEAD
  54946. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54947. >Introduction</L.LABEL
  54948. ><B.BODY>The structure of the Tcl code for the persistent class generation is the same as for non&truehy;persistent class generation. Objects for which persistence is important are represented in the OOPL model with the prefix <CX5FX5FINPUT>db_</CX5FX5FINPUT
  54949. >. For instance, there is a Tcl procedure <CX5FX5FPROCEDURE.NAME>assoc_attrib::generate</CX5FX5FPROCEDURE.NAME
  54950. > available for non&truehy;persistent code generation. The name of the persistent counterpart is <CX5FX5FPROCEDURE.NAME>db_assoc_attrib::generate</CX5FX5FPROCEDURE.NAME
  54951. >.</B.BODY
  54952. ><B.BODY>Great care is taken to keep embedded C++ code out of the header files. If the header file contained embedded code, using just one persistent class would cause all normal C++ files referring to the header to be compiled by the embedded SQL&truehy;C preprocessor.</B.BODY
  54953. ></LABEL
  54954. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54955. >Communicating with the database</L.LABEL
  54956. ><B.BODY>Persistent classes automatically get a set of member functions and data attributes for communication with the database. No specification in a Class Association Diagram is needed. These data attributes, a struct for keeping table values in&truehy;core, and the accompanying null indicator struct are:</B.BODY
  54957. ><E.EXAMPLE><CX5FX5FTERM>class_name </CX5FX5FTERM
  54958. >Row data;</E.EXAMPLE
  54959. ><E.EXAMPLE><CX5FX5FTERM>class_name </CX5FX5FTERM
  54960. >Ind nullInd;</E.EXAMPLE
  54961. ><B.BODY>Four member functions take care of the data transport between data struct and database. These functions are generated for every persistent class:</B.BODY
  54962. ><EM.EXAMPLE.MONO>virtual int    insertInDB();   //  INSERT</EM.EXAMPLE.MONO
  54963. ><EM.EXAMPLE.MONO>virtual int    readFromDB();   //  SELECT</EM.EXAMPLE.MONO
  54964. ><EM.EXAMPLE.MONO>virtual int    deleteFromDB(); //  DELETE</EM.EXAMPLE.MONO
  54965. ><EM.EXAMPLE.MONO>virtual int    updateInDB();   //  UPDATE</EM.EXAMPLE.MONO
  54966. ><B.BODY>These embedded SQL queries have the following structure:</B.BODY
  54967. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54968. ></RBW-AUTOGEN
  54969. ></RBW-MARKER
  54970. ><RBW-PARABODY>Declaration of embedded pointer variables to data and null&truehy;indicator structs</RBW-PARABODY
  54971. ></LB.LIST.BULLET
  54972. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54973. ></RBW-AUTOGEN
  54974. ></RBW-MARKER
  54975. ><RBW-PARABODY>Embedded query</RBW-PARABODY
  54976. ></LB.LIST.BULLET
  54977. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  54978. ></RBW-AUTOGEN
  54979. ></RBW-MARKER
  54980. ><RBW-PARABODY>Checking error status</RBW-PARABODY
  54981. ></LB.LIST.BULLET
  54982. ><B.BODY>The <CX5FX5FINPUT>updateInDB()</CX5FX5FINPUT
  54983. > member function cannot update attributes that are part of the key. Foreign keys are not updated either.</B.BODY
  54984. ><B.BODY>The other queries have a similar structure. For the Informix queries <CX5FX5FFILE.NAME>delete</CX5FX5FFILE.NAME
  54985. > and <CX5FX5FFILE.NAME>insert</CX5FX5FFILE.NAME
  54986. >, the stored procedures are called to ensure the <RBW-IDXTERM TERM1="referential integrity" TERM2="in Informix"></RBW-IDXTERM
  54987. ><RBW-IDXTERM TERM1="Informix" TERM2="referential integrity"></RBW-IDXTERM
  54988. >referential integrity. The stored procedures are generated by <CX5FX5FINPUT>gensql</CX5FX5FINPUT
  54989. >.</B.BODY
  54990. ><B.BODY>Subclasses of persistent classes redefine the <CX5FX5FINPUT>insertInDB()</CX5FX5FINPUT
  54991. >, <CX5FX5FINPUT>readFromDB()</CX5FX5FINPUT
  54992. >, <CX5FX5FINPUT>deleteFromDB()</CX5FX5FINPUT
  54993. > and <CX5FX5FINPUT>updateInDB()</CX5FX5FINPUT
  54994. > member functions; these so&truehy;called <CX5FX5FTITLE>cascade</CX5FX5FTITLE
  54995. > functions handle the extra data from their level and then call the base class member of the function.</B.BODY
  54996. ></LABEL
  54997. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  54998. >Creating new instances of a class</L.LABEL
  54999. ><B.BODY>Every persistent class has a static <CX5FX5FINPUT>instantiate()</CX5FX5FINPUT
  55000. > member for making a new instance of the class and reading the data from the database. The function takes the key without class name as argument:</B.BODY
  55001. ><EM.EXAMPLE.MONO>DbPerson *DbPerson::instantiate(const char * name)</EM.EXAMPLE.MONO
  55002. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  55003. ><EM.EXAMPLE.MONO>    DbPerson *tmp = new DbPerson(name);</EM.EXAMPLE.MONO
  55004. ><EM.EXAMPLE.MONO>    if (tmp&truehy;>readFromDB() < 0) {</EM.EXAMPLE.MONO
  55005. ><EM.EXAMPLE.MONO>          delete tmp;</EM.EXAMPLE.MONO
  55006. ><EM.EXAMPLE.MONO>          return 0;</EM.EXAMPLE.MONO
  55007. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  55008. ><EM.EXAMPLE.MONO>    return tmp;</EM.EXAMPLE.MONO
  55009. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  55010. ><B.BODY>The caller of this function is responsible for cleaning up the used memory.</B.BODY
  55011. ></LABEL
  55012. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55013. >Creating new instances of subclasses</L.LABEL
  55014. ><B.BODY>The member functions discussed so far are not adequate for creating an instance of the correct subclass. You need a function for creating an instance of a class with keys. For this, the base persistent class gets the following member function and data member:</B.BODY
  55015. ><EM.EXAMPLE.MONO>static DbPerson *findInDB(</EM.EXAMPLE.MONO
  55016. ><EM.EXAMPLE.MONO>   const char * name, int class_type</EM.EXAMPLE.MONO
  55017. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  55018. ><EM.EXAMPLE.MONO>static DbPersonFindPF_NmFuncMap *typeMap;</EM.EXAMPLE.MONO
  55019. ><B.BODY>These members are added <CX5FX5FINPUT>static</CX5FX5FINPUT
  55020. > to the persistent base class, and are therefore the same for all instances of the persistent class and its subclasses. <CX5FX5FINPUT>DbPersonFindPF_NmFuncMap</CX5FX5FINPUT
  55021. > is a mapping of class name to a class instantiation function, which is initialized at startup for all classes in the application. This map contains the base class and all existing subclasses. </B.BODY
  55022. ></LABEL
  55023. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55024. >findInDB()</L.LABEL
  55025. ><B.BODY>This is <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55026. >:</B.BODY
  55027. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  55028. ><EM.EXAMPLE.MONO>findInDB(name, class_type);  // class key,type&truehy;id</EM.EXAMPLE.MONO
  55029. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  55030. ><EM.EXAMPLE.MONO>   func = typeMap&truehy;>get(class_nm);</EM.EXAMPLE.MONO
  55031. ><EM.EXAMPLE.MONO>                            // search for instantiate</EM.EXAMPLE.MONO
  55032. ><EM.EXAMPLE.MONO>                            // function of class</EM.EXAMPLE.MONO
  55033. ><EM.EXAMPLE.MONO>   return func(name);       // execute the instance</EM.EXAMPLE.MONO
  55034. ><EM.EXAMPLE.MONO>                            // function with key</EM.EXAMPLE.MONO
  55035. ><EM.EXAMPLE.MONO>} </EM.EXAMPLE.MONO
  55036. ><B.BODY>For example: </B.BODY
  55037. ><B.BODY>Search for the instance Tuttle of class DbPerson:</B.BODY
  55038. ><EM.EXAMPLE.MONO>findInDB(“Tuttle”, “DbPerson”)</EM.EXAMPLE.MONO
  55039. ><B.BODY>Two useful extra functions are:</B.BODY
  55040. ><EM.EXAMPLE.MONO>static DbPerson *findInDB(const char * name);</EM.EXAMPLE.MONO
  55041. ><EM.EXAMPLE.MONO>static int searchInDB(DbPerson_PtrSet &dbPersonSet,</EM.EXAMPLE.MONO
  55042. ><EM.EXAMPLE.MONO>   const String &whereClause);</EM.EXAMPLE.MONO
  55043. ></LABEL
  55044. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55045. >searchInDB()</L.LABEL
  55046. ><B.BODY>The <CX5FX5FINPUT>searchInDB()</CX5FX5FINPUT
  55047. > function fills a set of pointers to instances of classes matching the search condition of the string <CX5FX5FINPUT>whereClause</CX5FX5FINPUT
  55048. >. The <CX5FX5FINPUT>whereClause</CX5FX5FINPUT
  55049. > is embedded SQL.</B.BODY
  55050. ></LABEL
  55051. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55052. >Initialization</L.LABEL
  55053. ><B.BODY>The last part of the runtime system is the initialization. This consists of filling the <CX5FX5FINPUT>typeMap</CX5FX5FINPUT
  55054. > with class&truehy;name &truehy; class&truehy;instantiate pairs. To the base persistent class header file the following is added:</B.BODY
  55055. ><EM.EXAMPLE.MONO>class DbPerson;</EM.EXAMPLE.MONO
  55056. ><EM.EXAMPLE.MONO>typedef DbPerson * (*DbPersonFindPF)</EM.EXAMPLE.MONO
  55057. ><EM.EXAMPLE.MONO>   (const char * name);</EM.EXAMPLE.MONO
  55058. ><EM.EXAMPLE.MONO>class StringHash;</EM.EXAMPLE.MONO
  55059. ><EM.EXAMPLE.MONO>struct DbPersonInitializer {</EM.EXAMPLE.MONO
  55060. ><EM.EXAMPLE.MONO>   DbPersonInitializer(const String &name, </EM.EXAMPLE.MONO
  55061. ><EM.EXAMPLE.MONO>   DbPersonFindPF func);</EM.EXAMPLE.MONO
  55062. ><EM.EXAMPLE.MONO>};</EM.EXAMPLE.MONO
  55063. ><EM.EXAMPLE.MONO>inline DbPersonInitializer::DBPersonInitializer</EM.EXAMPLE.MONO
  55064. ><EM.EXAMPLE.MONO>   (const String &name, DbPersonFindPF func)</EM.EXAMPLE.MONO
  55065. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  55066. ><EM.EXAMPLE.MONO>   if (DbPerson::typeMap == 0)</EM.EXAMPLE.MONO
  55067. ><EM.EXAMPLE.MONO>      DbPerson::typeMap = new NmFuncMap</EM.EXAMPLE.MONO
  55068. ><EM.EXAMPLE.MONO>      <DbPersonFindPF>;</EM.EXAMPLE.MONO
  55069. ><EM.EXAMPLE.MONO>   DbPerson::typeMap&truehy;>set(name, func);</EM.EXAMPLE.MONO
  55070. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  55071. ><B.BODY>To every persistent class source, a static instance of this class is added (using the DbPerson example):</B.BODY
  55072. ><EM.EXAMPLE.MONO>static DbPersonInitializer initialize(DbPersonStr,</EM.EXAMPLE.MONO
  55073. ><EM.EXAMPLE.MONO>   &DbPerson::instantiate);</EM.EXAMPLE.MONO
  55074. ><B.BODY>And to every derived class of <CX5FX5FINPUT>DbPerson</CX5FX5FINPUT
  55075. >, <CX5FX5FINPUT>DbDerPerson</CX5FX5FINPUT
  55076. > for example:</B.BODY
  55077. ><EM.EXAMPLE.MONO>static DbPersonInitializer initialize(DbDerPersonStr,</EM.EXAMPLE.MONO
  55078. ><EM.EXAMPLE.MONO>   &DbDerPerson::instantiate);</EM.EXAMPLE.MONO
  55079. ><B.BODY>The <CX5FX5FINPUT>DbPersonStr</CX5FX5FINPUT
  55080. > is a static string of the class name incorporated in the source of every generated class:</B.BODY
  55081. ><EM.EXAMPLE.MONO>static String DbPersonStr(“DbPerson”);</EM.EXAMPLE.MONO
  55082. ></LABEL
  55083. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55084. >Model of the runtime system</L.LABEL
  55085. ><B.BODY>The model of the runtime system looks as follows:</B.BODY
  55086. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00549.unk" origfile="pics/runtime.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55087. ></FAR.FIGURE.ANCHOR.RIGHT
  55088. ></LABEL
  55089. ></SUBSECTION
  55090. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28359"></RBW-ANCHOR
  55091. >Database Class Generation<RBW-IDXTERM TERM1="database class" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  55092. ><RBW-IDXTERM TERM1="class" TERM2="database"></RBW-IDXTERM
  55093. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="database class"></RBW-IDXTERM
  55094. ></SS.SUBSEC.HEAD
  55095. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55096. >Generated parts</L.LABEL
  55097. ><B.BODY>From the Tcl function <CX5FX5FINPUT>oopl_model::generate</CX5FX5FINPUT
  55098. > the function <CX5FX5FINPUT>db_class::generate</CX5FX5FINPUT
  55099. > is called for persistent classes. The following parts are generated:</B.BODY
  55100. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55101. ></RBW-AUTOGEN
  55102. ></RBW-MARKER
  55103. ><RBW-PARABODY>Embedded SQL header in the source file (see <RBW-XREF REFID="19651" TYPE="XREF-TEXTCOPY">Embedded SQL header in the source file (Informix)</RBW-XREF
  55104. >)</RBW-PARABODY
  55105. ></LB.LIST.BULLET
  55106. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55107. ></RBW-AUTOGEN
  55108. ></RBW-MARKER
  55109. ><RBW-PARABODY>The static class name string; for example for the class DbPerson:<CX5FX5FINPUT>static String DbPersonStr(“DbPerson”)</CX5FX5FINPUT
  55110. ></RBW-PARABODY
  55111. ></LB.LIST.BULLET
  55112. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55113. ></RBW-AUTOGEN
  55114. ></RBW-MARKER
  55115. ><RBW-PARABODY>The class features (via <CX5FX5FPROCEDURE.NAME>class::generate</CX5FX5FPROCEDURE.NAME
  55116. >) (see <RBW-XREF REFID="15090" TYPE="XREF-TEXTCOPY">Class features</RBW-XREF
  55117. >)</RBW-PARABODY
  55118. ></LB.LIST.BULLET
  55119. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55120. ></RBW-AUTOGEN
  55121. ></RBW-MARKER
  55122. ><RBW-PARABODY>The call to <CX5FX5FINPUT>db_class::gen_for_base</CX5FX5FINPUT
  55123. > (only for base classes)</RBW-PARABODY
  55124. ></LB.LIST.BULLET
  55125. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55126. ></RBW-AUTOGEN
  55127. ></RBW-MARKER
  55128. ><RBW-PARABODY>The initializer functionality, the <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55129. > and <CX5FX5FINPUT>searchInDB()</CX5FX5FINPUT
  55130. > functions</RBW-PARABODY
  55131. ></LB.LIST.BULLET
  55132. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55133. ></RBW-AUTOGEN
  55134. ></RBW-MARKER
  55135. ><RBW-PARABODY>The call to <CX5FX5FPROCEDURE.NAME>db_class::gen_for_derived</CX5FX5FPROCEDURE.NAME
  55136. > </RBW-PARABODY
  55137. ></LB.LIST.BULLET
  55138. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55139. ></RBW-AUTOGEN
  55140. ></RBW-MARKER
  55141. ><RBW-PARABODY>The <CX5FX5FINPUT>Instantiate()</CX5FX5FINPUT
  55142. > function</RBW-PARABODY
  55143. ></LB.LIST.BULLET
  55144. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55145. ></RBW-AUTOGEN
  55146. ></RBW-MARKER
  55147. ><RBW-PARABODY>The default include of system_name<CX5FX5FFILE.NAME>Struct.hxx</CX5FX5FFILE.NAME
  55148. > in the header file</RBW-PARABODY
  55149. ></LB.LIST.BULLET
  55150. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55151. ></RBW-AUTOGEN
  55152. ></RBW-MARKER
  55153. ><RBW-PARABODY>For Informix an extra <CX5FX5FINPUT>#define</CX5FX5FINPUT
  55154. > protector statement</RBW-PARABODY
  55155. ></LB.LIST.BULLET
  55156. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55157. ></RBW-AUTOGEN
  55158. ></RBW-MARKER
  55159. ><RBW-PARABODY>Two data members in the class struct; an in&truehy;core copy of table values and the accompanying null indicator struct (see <RBW-XREF REFID="12438" TYPE="XREF-TEXTCOPY">Data members in the class struct</RBW-XREF
  55160. >)</RBW-PARABODY
  55161. ></LB.LIST.BULLET
  55162. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55163. ></RBW-AUTOGEN
  55164. ></RBW-MARKER
  55165. ><RBW-PARABODY>A constructor declaration and implementation (see <RBW-XREF REFID="15480" TYPE="XREF-TEXTCOPY">Constructor declaration and implementation</RBW-XREF
  55166. >)</RBW-PARABODY
  55167. ></LB.LIST.BULLET
  55168. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55169. ></RBW-AUTOGEN
  55170. ></RBW-MARKER
  55171. ><RBW-PARABODY>The declaration and implementation of the following (see <RBW-XREF REFID="17450" TYPE="XREF-TEXTCOPY">Declaration and implementation of SQL operations</RBW-XREF
  55172. >):</RBW-PARABODY
  55173. ></LB.LIST.BULLET
  55174. ><E.EXAMPLE>insertInDB()</E.EXAMPLE
  55175. ><E.EXAMPLE>readFromDB()</E.EXAMPLE
  55176. ><E.EXAMPLE>deleteFromDB()</E.EXAMPLE
  55177. ><E.EXAMPLE>updateInDB()</E.EXAMPLE
  55178. ></LABEL
  55179. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55180. ><RBW-ANCHOR ID="19651"></RBW-ANCHOR
  55181. >Embedded SQL header in the source file (Informix)</L.LABEL
  55182. ><B.BODY>Instead of the normally used <CX5FX5FINPUT>$</CX5FX5FINPUT
  55183. > notation, the <CX5FX5FINPUT>EXEC SQL</CX5FX5FINPUT
  55184. > notation is used because system_name<CX5FX5FFILE.NAME>Struct.hxx</CX5FX5FFILE.NAME
  55185. > is not embedded itself. The path for <CX5FX5FFILE.NAME>../</CX5FX5FFILE.NAME
  55186. >system_name<CX5FX5FFILE.NAME>Struct.hxx</CX5FX5FFILE.NAME
  55187. > is needed because Informix <CX5FX5FINPUT>esqlc</CX5FX5FINPUT
  55188. > does not accept include directories. Informix <CX5FX5FINPUT>esqlc</CX5FX5FINPUT
  55189. > also accepts no <CX5FX5FINPUT>#define</CX5FX5FINPUT
  55190. > statements, therefore the file protector for the system_name<CX5FX5FFILE.NAME>Struct.hxx</CX5FX5FFILE.NAME
  55191. > is placed outside the embedded section, and outside the file. The user has to provide functions like SqlPrint. This is included in the ObjectTeam class library.</B.BODY
  55192. ><EM.EXAMPLE.MONO>EXEC SQL BEGIN DECLARE SECTION;</EM.EXAMPLE.MONO
  55193. ><EM.EXAMPLE.MONO>EXEC SQL include “../<CX5FX5FTERM>sys_name</CX5FX5FTERM
  55194. >/<CX5FX5FTERM>sys_name</CX5FX5FTERM
  55195. >Struct.hxx”;</EM.EXAMPLE.MONO
  55196. ><EM.EXAMPLE.MONO>EXEC SQL END DECLARE SECTION;</EM.EXAMPLE.MONO
  55197. ><EM.EXAMPLE.MONO>#define DBSPECSTRUCT_HXX 1</EM.EXAMPLE.MONO
  55198. ><EM.EXAMPLE.MONO>#ifdef SQLPRINT_HXX</EM.EXAMPLE.MONO
  55199. ><EM.EXAMPLE.MONO>#include “SqlPrint.hxx”</EM.EXAMPLE.MONO
  55200. ><EM.EXAMPLE.MONO>#endif</EM.EXAMPLE.MONO
  55201. ><EM.EXAMPLE.MONO>$WHENEVER SQLERROR CALL sqlprint;</EM.EXAMPLE.MONO
  55202. ></LABEL
  55203. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55204. ><RBW-ANCHOR ID="15090"></RBW-ANCHOR
  55205. >Class features </L.LABEL
  55206. ><B.BODY>The special database class features are (see also the OOPL model):</B.BODY
  55207. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="175p"><COLSPEC COLNAME="2" COLWIDTH="273p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Database Class Feature</CELLHEADING
  55208. ></ENTRY
  55209. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl Procedure</CELLHEADING
  55210. ></ENTRY
  55211. ></RBW-ROW
  55212. ></THEAD
  55213. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data attribute</CELLBODY
  55214. ></ENTRY
  55215. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>db_data_attrib::generate</CELLBODY
  55216. ></ENTRY
  55217. ></RBW-ROW
  55218. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Associate attribute</CELLBODY
  55219. ></ENTRY
  55220. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>db_assoc_attrib::generate</CELLBODY
  55221. ></ENTRY
  55222. ></RBW-ROW
  55223. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualified associate attribute</CELLBODY
  55224. ></ENTRY
  55225. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>db_qual_assoc_attrib::generate</CELLBODY
  55226. ></ENTRY
  55227. ></RBW-ROW
  55228. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Link attribute</CELLBODY
  55229. ></ENTRY
  55230. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>db_link_attrib::generate</CELLBODY
  55231. ></ENTRY
  55232. ></RBW-ROW
  55233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualified link attribute</CELLBODY
  55234. ></ENTRY
  55235. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>db_qual_link_attrib::generate</CELLBODY
  55236. ></ENTRY
  55237. ></RBW-ROW
  55238. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reverse link attribute</CELLBODY
  55239. ></ENTRY
  55240. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>db_rv_link_attrib::generate</CELLBODY
  55241. ></ENTRY
  55242. ></RBW-ROW
  55243. ></TBODY
  55244. ></TGROUP
  55245. ></RBW-TABLE
  55246. ><B.BODY>Note that <CX5FX5FPROCEDURE.NAME>db_operation::generate</CX5FX5FPROCEDURE.NAME
  55247. > is missing on this list if compared with the non&truehy;persistent class features. The <CX5FX5FINPUT>operation</CX5FX5FINPUT
  55248. > object in the OOPL model does not exist in a persistent version.</B.BODY
  55249. ></LABEL
  55250. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55251. ><RBW-ANCHOR ID="12438"></RBW-ANCHOR
  55252. >Data members in the class struct</L.LABEL
  55253. ><B.BODY>Two data members are in the class struct: an in&truehy;core copy of table values and the accompanying null indicator struct.</B.BODY
  55254. ><B.BODY>The syntax is:</B.BODY
  55255. ><E.EXAMPLE><CX5FX5FTERM>class_name</CX5FX5FTERM
  55256. >Row data;</E.EXAMPLE
  55257. ><E.EXAMPLE><CX5FX5FTERM>class_name</CX5FX5FTERM
  55258. >Ind nullInd;</E.EXAMPLE
  55259. ><B.BODY>Currently, these are generated in the public data section. Following is an example for the table <CX5FX5FINPUT>DbPerson</CX5FX5FINPUT
  55260. >:</B.BODY
  55261. ><EM.EXAMPLE.MONO>DbPersonRow data;</EM.EXAMPLE.MONO
  55262. ><EM.EXAMPLE.MONO>DbPersonInd nullInd;</EM.EXAMPLE.MONO
  55263. ></LABEL
  55264. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55265. ><RBW-ANCHOR ID="15480"></RBW-ANCHOR
  55266. >Constructor declaration and implementation<RBW-IDXTERM TERM1="constructor" TERM2="declaration and implementation"></RBW-IDXTERM
  55267. ></L.LABEL
  55268. ><B.BODY>The keys of the table are the parameters of the constructor. For a derived class the keys are imported from its base class. The initialization of base classes is done by calling <CX5FX5FPROCEDURE.NAME>db_class::init_bases</CX5FX5FPROCEDURE.NAME
  55269. >. The fields of the null indicator struct in the body are set to one of the following:</B.BODY
  55270. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55271. ></RBW-AUTOGEN
  55272. ></RBW-MARKER
  55273. ><RBW-PARABODY>&truehy;1 (accompanying host variable contains NULL data, i.e. is nullable) </RBW-PARABODY
  55274. ></LB.LIST.BULLET
  55275. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55276. ></RBW-AUTOGEN
  55277. ></RBW-MARKER
  55278. ><RBW-PARABODY>0 (accompanying host variable contains non&truehy;NULL data, i.e. is not nullable)</RBW-PARABODY
  55279. ></LB.LIST.BULLET
  55280. ><B.BODY>The following are not nullable:</B.BODY
  55281. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55282. ></RBW-AUTOGEN
  55283. ></RBW-MARKER
  55284. ><RBW-PARABODY>Keys</RBW-PARABODY
  55285. ></LB.LIST.BULLET
  55286. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55287. ></RBW-AUTOGEN
  55288. ></RBW-MARKER
  55289. ><RBW-PARABODY>Foreign keys of mandatory associations</RBW-PARABODY
  55290. ></LB.LIST.BULLET
  55291. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55292. ></RBW-AUTOGEN
  55293. ></RBW-MARKER
  55294. ><RBW-PARABODY>Fields with the nullable property set to No</RBW-PARABODY
  55295. ></LB.LIST.BULLET
  55296. ><B.BODY>Following is an example of a constructor for the persistent class DbPerson. The key is a character array <CX5FX5FINPUT>name</CX5FX5FINPUT
  55297. > and <CX5FX5FINPUT>address</CX5FX5FINPUT
  55298. > is a non&truehy;key attribute.</B.BODY
  55299. ><EM.EXAMPLE.MONO>DbPerson::DbPerson(const char * name) :</EM.EXAMPLE.MONO
  55300. ><EM.EXAMPLE.MONO>      DBObject(DbPersonStr)</EM.EXAMPLE.MONO
  55301. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  55302. ><EM.EXAMPLE.MONO>      nullInd.address = &truehy;1;</EM.EXAMPLE.MONO
  55303. ><EM.EXAMPLE.MONO>      nullInd.name = 0;</EM.EXAMPLE.MONO
  55304. ><EM.EXAMPLE.MONO>      nullInd.class_type = 0;</EM.EXAMPLE.MONO
  55305. ><EM.EXAMPLE.MONO>      strcpy(data.class_type, DbPersonStr);</EM.EXAMPLE.MONO
  55306. ><EM.EXAMPLE.MONO>      strcpy(data.name, name);</EM.EXAMPLE.MONO
  55307. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  55308. ></LABEL
  55309. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55310. ><RBW-ANCHOR ID="17450"></RBW-ANCHOR
  55311. >Declaration and implementation of SQL operations<RBW-IDXTERM TERM1="SQL operations" TERM2="declaration and implementation"></RBW-IDXTERM
  55312. ></L.LABEL
  55313. ><B.BODY>The function declarations are in the class declaration:</B.BODY
  55314. ><EM.EXAMPLE.MONO>virtual int insertInDB();</EM.EXAMPLE.MONO
  55315. ><EM.EXAMPLE.MONO>virtual int readFromDB();</EM.EXAMPLE.MONO
  55316. ><EM.EXAMPLE.MONO>virtual int deleteFromDB();</EM.EXAMPLE.MONO
  55317. ><EM.EXAMPLE.MONO>virtual int updateInDB();</EM.EXAMPLE.MONO
  55318. ><B.BODY>Following is an Informix example with the class <CX5FX5FINPUT>DbDerPerson</CX5FX5FINPUT
  55319. >, a subclass of <CX5FX5FINPUT>DbPerson</CX5FX5FINPUT
  55320. >, and one extra data member <CX5FX5FINPUT>integer salary</CX5FX5FINPUT
  55321. >: </B.BODY
  55322. ><EM.EXAMPLE.MONO>int DbDerPerson::insertInDB()</EM.EXAMPLE.MONO
  55323. ><EM.EXAMPLE.MONO>{</EM.EXAMPLE.MONO
  55324. ><EM.EXAMPLE.MONO>      if (DbPerson::insertInDB() < 0)</EM.EXAMPLE.MONO
  55325. ><EM.EXAMPLE.MONO>            return &truehy;1;</EM.EXAMPLE.MONO
  55326. ><EM.EXAMPLE.MONO>      $DbDerPersonRow *db_data = &data;</EM.EXAMPLE.MONO
  55327. ><EM.EXAMPLE.MONO>      $DbDerPersonInd *db_ind = &nullInd;</EM.EXAMPLE.MONO
  55328. ><EM.EXAMPLE.MONO>      $EXECUTE PROCEDURE pins_DbDerPerson(</EM.EXAMPLE.MONO
  55329. ><EM.EXAMPLE.MONO>         $db_data&truehy;>name:db_ind&truehy;>name,</EM.EXAMPLE.MONO
  55330. ><EM.EXAMPLE.MONO>         $db_data&truehy;>class_type:db_ind&truehy;>class_type,</EM.EXAMPLE.MONO
  55331. ><EM.EXAMPLE.MONO>         $db_data&truehy;>salary:db_ind&truehy;>salary);</EM.EXAMPLE.MONO
  55332. ><EM.EXAMPLE.MONO>      return processSqlStatus();</EM.EXAMPLE.MONO
  55333. ><EM.EXAMPLE.MONO>}</EM.EXAMPLE.MONO
  55334. ></LABEL
  55335. ></SUBSECTION
  55336. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17301"></RBW-ANCHOR
  55337. >Data Attribute Generation<RBW-IDXTERM TERM1="data attribute" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  55338. ><RBW-IDXTERM TERM1="data attribute"></RBW-IDXTERM
  55339. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="data attribute"></RBW-IDXTERM
  55340. ></SS.SUBSEC.HEAD
  55341. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55342. >Syntax</L.LABEL
  55343. ><B.BODY>Use the following syntax when you specify the <RBW-IDXTERM TERM1="data attribute" TERM2="syntax"></RBW-IDXTERM
  55344. ><RBW-IDXTERM SEE="data attribute" TERM1="attribute"></RBW-IDXTERM
  55345. >data attributes of a class:</B.BODY
  55346. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00550.tif" origseq="1" origtype="I" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55347. ></FA.FIGURE.ANCHOR
  55348. ></LABEL
  55349. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55350. >system_name<CX5FX5FFILE.NAME>Struct.hxx</CX5FX5FFILE.NAME
  55351. ></L.LABEL
  55352. ><B.BODY>In the system_name<CX5FX5FFILE.NAME>Struct.hxx</CX5FX5FFILE.NAME
  55353. > file, a table and an indicator <CX5FX5FINPUT>typedef</CX5FX5FINPUT
  55354. > are generated with the following standard data type class.</B.BODY
  55355. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00551.unk" origfile="pics/esqdata.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55356. ></FA.FIGURE.ANCHOR
  55357. ><B.BODY><CX5FX5FTITLE>Part Of <System_name>struct.hxx</CX5FX5FTITLE
  55358. >.</B.BODY
  55359. ><EM.EXAMPLE.MONO>typedef struct DbDerPersonRow_ {</EM.EXAMPLE.MONO
  55360. ><EM.EXAMPLE.MONO>      char name[31];</EM.EXAMPLE.MONO
  55361. ><EM.EXAMPLE.MONO>      char class_type[81];</EM.EXAMPLE.MONO
  55362. ><EM.EXAMPLE.MONO>      int salary;</EM.EXAMPLE.MONO
  55363. ><EM.EXAMPLE.MONO>} DbDerPersonRow;</EM.EXAMPLE.MONO
  55364. ><EM.EXAMPLE.MONO>typedef struct DbDerPersonInd_ {</EM.EXAMPLE.MONO
  55365. ><EM.EXAMPLE.MONO>      short name;</EM.EXAMPLE.MONO
  55366. ><EM.EXAMPLE.MONO>      short class_type;</EM.EXAMPLE.MONO
  55367. ><EM.EXAMPLE.MONO>      short salary;</EM.EXAMPLE.MONO
  55368. ><EM.EXAMPLE.MONO>} DbDerPersonInd;</EM.EXAMPLE.MONO
  55369. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55370. ><EM.EXAMPLE.MONO>:</EM.EXAMPLE.MONO
  55371. ></LABEL
  55372. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55373. >Member functions</L.LABEL
  55374. ><B.BODY>In the Tcl function <CX5FX5FPROCEDURE.NAME>db_data_attrib::generate</CX5FX5FPROCEDURE.NAME
  55375. >, the following member functions can be generated:</B.BODY
  55376. ></LABEL
  55377. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55378. >Example</L.LABEL
  55379. ><B.BODY>The following overview shows various data attributes you can specify in classes and the most significant part of the resulting ESQLC++ code:</B.BODY
  55380. ><B.BODY><CX5FX5FPROCEDURE.NAME>Standard type class</CX5FX5FPROCEDURE.NAME
  55381. >.</B.BODY
  55382. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00552.unk" origfile="pics/esqmem1.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55383. ></FA.FIGURE.ANCHOR
  55384. ><B.BODY><CX5FX5FTITLE>C++</CX5FX5FTITLE
  55385. >.</B.BODY
  55386. ><EM.EXAMPLE.MONO>Member(long int memberNo);</EM.EXAMPLE.MONO
  55387. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55388. ><EM.EXAMPLE.MONO>long int getMemberNo() const;</EM.EXAMPLE.MONO
  55389. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55390. ><EM.EXAMPLE.MONO>MemberRow data;</EM.EXAMPLE.MONO
  55391. ><EM.EXAMPLE.MONO>MemberInd nullInd;</EM.EXAMPLE.MONO
  55392. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  55393. ><B.BODY><CX5FX5FPROCEDURE.NAME>Standard type class</CX5FX5FPROCEDURE.NAME
  55394. >.</B.BODY
  55395. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00553.unk" origfile="pics/esqmem2.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55396. ></FA.FIGURE.ANCHOR
  55397. ><B.BODY><CX5FX5FTITLE>C++</CX5FX5FTITLE
  55398. >.</B.BODY
  55399. ><EM.EXAMPLE.MONO>Member();</EM.EXAMPLE.MONO
  55400. ><EM.EXAMPLE.MONO>...   </EM.EXAMPLE.MONO
  55401. ><EM.EXAMPLE.MONO>const char *getName() const;</EM.EXAMPLE.MONO
  55402. ><EM.EXAMPLE.MONO>int nameIsNull() const;</EM.EXAMPLE.MONO
  55403. ><EM.EXAMPLE.MONO>void setName(const char *newname);</EM.EXAMPLE.MONO
  55404. ><EM.EXAMPLE.MONO>void nullifyName();</EM.EXAMPLE.MONO
  55405. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55406. ><EM.EXAMPLE.MONO>MemberRow data;</EM.EXAMPLE.MONO
  55407. ><EM.EXAMPLE.MONO>MemberInd nullInd;</EM.EXAMPLE.MONO
  55408. ></LABEL
  55409. ></SUBSECTION
  55410. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19856"></RBW-ANCHOR
  55411. >Association Generation<RBW-IDXTERM TERM1="association" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  55412. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="association"></RBW-IDXTERM
  55413. ></SS.SUBSEC.HEAD
  55414. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55415. >Introduction</L.LABEL
  55416. ><B.BODY>Analogous to the non&truehy;persistent association generation a generic dispatch function exists. This function is <CX5FX5FINPUT>gen_for_db_assoc</CX5FX5FINPUT
  55417. >. It has the following association parts:</B.BODY
  55418. ><B.BODY>The get, set/add and remove functions that are generated have the same names as their non&truehy;persistent counterparts. The parameter interface is slightly different. The functions always have an integer return value for the SQL error status. The other return values are parameters. The exception is the one&truehy;get function, which returns the pointer to the object. </B.BODY
  55419. ></LABEL
  55420. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55421. >Examples (one&truehy;optional one&truehy;mandatory)</L.LABEL
  55422. ><B.BODY>The following overview shows two associations you can model in Class Association Diagrams: the multiplicity of the first association is one&truehy;optional, for the second one it is one&truehy;mandatory.</B.BODY
  55423. ><B.BODY><CX5FX5FPROCEDURE.NAME><RBW-IDXTERM TERM1="association" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  55424. >Normal Association. Multiplicity: one&truehy;optional</CX5FX5FPROCEDURE.NAME
  55425. >.</B.BODY
  55426. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00554.unk" origfile="pics/esqasoo.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55427. ></FA.FIGURE.ANCHOR
  55428. ><B.BODY><CX5FX5FTITLE>Interface Of Class A</CX5FX5FTITLE
  55429. >.</B.BODY
  55430. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55431. ><EM.EXAMPLE.MONO>ClassA(int m1classA);</EM.EXAMPLE.MONO
  55432. ><EM.EXAMPLE.MONO>ClassB *getRoleB() const;</EM.EXAMPLE.MONO
  55433. ><EM.EXAMPLE.MONO>int setRoleB(ClassB *newRoleB);</EM.EXAMPLE.MONO
  55434. ><EM.EXAMPLE.MONO>int removeRoleB();</EM.EXAMPLE.MONO
  55435. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55436. ><B.BODY><CX5FX5FPROCEDURE.NAME><RBW-IDXTERM TERM1="association" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  55437. >Normal Association. Multiplicity: one&truehy;mandatory</CX5FX5FPROCEDURE.NAME
  55438. >.</B.BODY
  55439. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00555.unk" origfile="pics/esqasom.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55440. ></FA.FIGURE.ANCHOR
  55441. ><B.BODY><CX5FX5FTITLE>Interface Of Class A</CX5FX5FTITLE
  55442. >.</B.BODY
  55443. ><B.BODY>...</B.BODY
  55444. ><B.BODY>ClassA(int i_m1classA, ClassB& roleB));</B.BODY
  55445. ><B.BODY>ClassB *getRoleB() const;</B.BODY
  55446. ><B.BODY>int setRoleB(ClassB *newRoleB);</B.BODY
  55447. ><B.BODY>...</B.BODY
  55448. ><B.BODY></B.BODY
  55449. ></LABEL
  55450. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55451. >Tcl procedures</L.LABEL
  55452. ><BI.BODY.INTRO>The following Tcl procedures are involved while generating this code:</BI.BODY.INTRO
  55453. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55454. ></RBW-AUTOGEN
  55455. ></RBW-MARKER
  55456. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_assoc_attrib::one_set</CX5FX5FPROCEDURE.NAME
  55457. > </RBW-PARABODY
  55458. ></LB.LIST.BULLET
  55459. ><LT.LIST.TEXT>Two pointers to data structures are declared, one to the class’s own structure and one to the related structure (master and detail). The imported keys implementing the relation get a value through an embedded SQL update. Depending on the export target, the own or the related table is updated. </LT.LIST.TEXT
  55460. ><LT.LIST.TEXT>This function is not generated if the other side of the relation is qualified, because the key needed to implement the function is not available.</LT.LIST.TEXT
  55461. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55462. ></RBW-AUTOGEN
  55463. ></RBW-MARKER
  55464. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_assoc_attrib::one_remove</CX5FX5FPROCEDURE.NAME
  55465. > </RBW-PARABODY
  55466. ></LB.LIST.BULLET
  55467. ><LT.LIST.TEXT>A pointer to the own data structure is declared and the imported key is set to NULL with an embedded SQL update. In the case of a mandatory relation, nothing is generated.</LT.LIST.TEXT
  55468. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55469. ></RBW-AUTOGEN
  55470. ></RBW-MARKER
  55471. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_assoc_attrib::one_get</CX5FX5FPROCEDURE.NAME
  55472. > </RBW-PARABODY
  55473. ></LB.LIST.BULLET
  55474. ><LT.LIST.TEXT>For the get function three situations are possible:</LT.LIST.TEXT
  55475. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  55476. ></RBW-MARKER
  55477. ><RBW-PARABODY>The keys are imported to the table belonging to the current class </RBW-PARABODY
  55478. ></LB2.LIST.BULLET.2
  55479. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  55480. ></RBW-MARKER
  55481. ><RBW-PARABODY>The keys are part of the related class</RBW-PARABODY
  55482. ></LB2.LIST.BULLET.2
  55483. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  55484. ></RBW-MARKER
  55485. ><RBW-PARABODY>The relation is qualified, and the keys are exported to a separate table</RBW-PARABODY
  55486. ></LB2.LIST.BULLET.2
  55487. ><LT.LIST.TEXT>In the first situation, the existence of a relation is checked by looking at the imported key field of the null indicator struct: <CX5FX5FPROCEDURE.NAME>&truehy;1</CX5FX5FPROCEDURE.NAME
  55488. > means no relation. If the relation exists, the result of a <CX5FX5FTERM>related_class</CX5FX5FTERM
  55489. ><CX5FX5FINPUT>::findInDB()</CX5FX5FINPUT
  55490. > is returned. The parameters of this <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55491. > are the imported key fields of the data struct. </LT.LIST.TEXT
  55492. ><LT.LIST.TEXT>In the second situation, the imported key fields in the data struct are not available because they reside with the related class. The fields are made available by executing embedded SQL on the table of the related class and storing them in a temporary local struct. From there, the fields are accessed by the <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55493. >.</LT.LIST.TEXT
  55494. ><LT.LIST.TEXT>In the third situation, a qualified relation with a separate table is implemented. Then, an embedded SQL select and a <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55495. > are generated, as in the second situation.</LT.LIST.TEXT
  55496. ></LABEL
  55497. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55498. >Example: many&truehy;optional, many&truehy;mandatory</L.LABEL
  55499. ><B.BODY>The following table shows two associations you can model in Class Association Diagrams. The multiplicity of the first association is <CX5FX5FTERM>many&truehy;optional</CX5FX5FTERM
  55500. >, for the second one it is <CX5FX5FTERM>many&truehy;mandatory</CX5FX5FTERM
  55501. >.</B.BODY
  55502. ><B.BODY><CX5FX5FPROCEDURE.NAME>Association. Normal</CX5FX5FPROCEDURE.NAME
  55503. >.</B.BODY
  55504. ><B.BODY>Multiplicity: many&truehy;optional.</B.BODY
  55505. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00556.unk" origfile="pics/esqasmo.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55506. ></FA.FIGURE.ANCHOR
  55507. ><B.BODY>Multiplicity: many&truehy;mandatory.</B.BODY
  55508. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00557.unk" origfile="pics/esqasmm.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55509. ></FA.FIGURE.ANCHOR
  55510. ><B.BODY><CX5FX5FTITLE>Interface Of Class A</CX5FX5FTITLE
  55511. >.</B.BODY
  55512. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55513. ><EM.EXAMPLE.MONO>ClassA(int m1classA);</EM.EXAMPLE.MONO
  55514. ><EM.EXAMPLE.MONO>int getroleBSet (PtrSet<ClassB> </EM.EXAMPLE.MONO
  55515. ><EM.EXAMPLE.MONO>   &RoleBSet) const;</EM.EXAMPLE.MONO
  55516. ><EM.EXAMPLE.MONO>int addRoleB(ClassB *newRoleB);</EM.EXAMPLE.MONO
  55517. ><EM.EXAMPLE.MONO>int removeRoleB(ClassB *to_remove);</EM.EXAMPLE.MONO
  55518. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55519. ></LABEL
  55520. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55521. >Tcl procedures</L.LABEL
  55522. ><B.BODY>The following Tcl procedures are involved while generating this code:</B.BODY
  55523. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55524. ></RBW-AUTOGEN
  55525. ></RBW-MARKER
  55526. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_assoc_attrib::many_set</CX5FX5FPROCEDURE.NAME
  55527. > </RBW-PARABODY
  55528. ></LB.LIST.BULLET
  55529. ><LT.LIST.TEXT>Two types of one&truehy;many relations exist: without an extra table and with an extra table.</LT.LIST.TEXT
  55530. ><LT.LIST.TEXT>For a one&truehy;many relation without an extra table, the foreign keys of the detail table are updated with an embedded SQL table.</LT.LIST.TEXT
  55531. ><LT.LIST.TEXT>For a one&truehy;many relation with an extra table, a SQL insert is executed on the extra table. This table includes the keys of both related classes. For Informix, an insert procedure is used. </LT.LIST.TEXT
  55532. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55533. ></RBW-AUTOGEN
  55534. ></RBW-MARKER
  55535. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_assoc_attrib::many_remove</CX5FX5FPROCEDURE.NAME
  55536. > </RBW-PARABODY
  55537. ></LB.LIST.BULLET
  55538. ><LT.LIST.TEXT>Many&truehy;remove relations also appear in two versions: without and with an extra table. In the first case, the foreign keys in the detail table are set to NULL with an embedded SQL update.</LT.LIST.TEXT
  55539. ><LT.LIST.TEXT>The many&truehy;remove relation with an extra table is executed with a delete procedure (Informix) using the keys of both the related classes on the extra table.</LT.LIST.TEXT
  55540. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55541. ></RBW-AUTOGEN
  55542. ></RBW-MARKER
  55543. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_assoc_attrib::many_get</CX5FX5FPROCEDURE.NAME
  55544. > </RBW-PARABODY
  55545. ></LB.LIST.BULLET
  55546. ><LT.LIST.TEXT>Like the previous relations, the many&truehy;get has two variations. In both cases a pointer set is filled with an embedded SQL cursor and a <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55547. >. In the case without the extra table, the cursor operates on the detail table. In the case with an extra table, the cursor operates on the extra table.</LT.LIST.TEXT
  55548. ></LABEL
  55549. ></SUBSECTION
  55550. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37091"></RBW-ANCHOR
  55551. >Qualified Association Generation<RBW-IDXTERM TERM1="qualified association" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  55552. ><RBW-IDXTERM TERM1="association" TERM2="qualified"></RBW-IDXTERM
  55553. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="qualified association"></RBW-IDXTERM
  55554. ></SS.SUBSEC.HEAD
  55555. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55556. >Introduction</L.LABEL
  55557. ><B.BODY>Qualified associations always have an extra table generated. The code generation is similar to that of the many&truehy;many association attribute, however, the qualifier is used as extra search condition for the embedded queries. The keys of the extra table are:</B.BODY
  55558. ><B.BODY>Note that the qualifier data type is a standard type. This is an important difference with the non&truehy;persistent code generation.</B.BODY
  55559. ></LABEL
  55560. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55561. >Example: one&truehy;optional</L.LABEL
  55562. ><B.BODY>The following overview shows a qualified association you can model in Class Association Diagrams. The multiplicity of the qualified association is <CX5FX5FTITLE>one&truehy;optional</CX5FX5FTITLE
  55563. >. The type of <CX5FX5FINPUT>qualA</CX5FX5FINPUT
  55564. > is <CX5FX5FINPUT>integer</CX5FX5FINPUT
  55565. >.</B.BODY
  55566. ><B.BODY><CX5FX5FPROCEDURE.NAME>Association. <RBW-IDXTERM TERM1="qualified association"></RBW-IDXTERM
  55567. ><RBW-IDXTERM TERM1="association" TERM2="qualified"></RBW-IDXTERM
  55568. >Qualified</CX5FX5FPROCEDURE.NAME
  55569. >.</B.BODY
  55570. ><B.BODY>Multiplicity: one&truehy;optional.</B.BODY
  55571. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00558.unk" origfile="pics/esqasqoo.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55572. ></FA.FIGURE.ANCHOR
  55573. ><B.BODY><CX5FX5FTITLE>Interface Of Class A (Informix)</CX5FX5FTITLE
  55574. >.</B.BODY
  55575. ><EM.EXAMPLE.MONO>// Default constructor/destructor</EM.EXAMPLE.MONO
  55576. ><EM.EXAMPLE.MONO>   A(int m1A);</EM.EXAMPLE.MONO
  55577. ><EM.EXAMPLE.MONO>   ~A();</EM.EXAMPLE.MONO
  55578. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  55579. ><EM.EXAMPLE.MONO>// Association accessor methods</EM.EXAMPLE.MONO
  55580. ><EM.EXAMPLE.MONO>   B *getB(int  qualA) const;</EM.EXAMPLE.MONO
  55581. ><EM.EXAMPLE.MONO>   int setB(int  qualA, B *new_b);</EM.EXAMPLE.MONO
  55582. ><EM.EXAMPLE.MONO>   int removeB(int  qualA);</EM.EXAMPLE.MONO
  55583. ></LABEL
  55584. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55585. >Tcl procedures</L.LABEL
  55586. ><B.BODY>The following Tcl procedures are involved while generating this code:</B.BODY
  55587. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55588. ></RBW-AUTOGEN
  55589. ></RBW-MARKER
  55590. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_qual_assoc_attrib::one_set</CX5FX5FPROCEDURE.NAME
  55591. > </RBW-PARABODY
  55592. ></LB.LIST.BULLET
  55593. ><LT.LIST.TEXT>This function is implemented with an insert procedure (Informix) on the extra created table.</LT.LIST.TEXT
  55594. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55595. ></RBW-AUTOGEN
  55596. ></RBW-MARKER
  55597. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_qual_assoc_attrib::one_remove</CX5FX5FPROCEDURE.NAME
  55598. > </RBW-PARABODY
  55599. ></LB.LIST.BULLET
  55600. ><LT.LIST.TEXT>This function is implemented with a delete procedure (Informix) on the extra created table.</LT.LIST.TEXT
  55601. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55602. ></RBW-AUTOGEN
  55603. ></RBW-MARKER
  55604. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_qual_assoc_attrib::one_get</CX5FX5FPROCEDURE.NAME
  55605. > </RBW-PARABODY
  55606. ></LB.LIST.BULLET
  55607. ><LT.LIST.TEXT>This function is implemented with an embedded SQL select on the extra created table followed by a <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55608. > call.</LT.LIST.TEXT
  55609. ></LABEL
  55610. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55611. >Example: optional&truehy;many</L.LABEL
  55612. ><B.BODY>The following overview shows a qualified association you can model in Class Association Diagrams. The multiplicity of the qualified association is <CX5FX5FTITLE>optional&truehy;many</CX5FX5FTITLE
  55613. >. The type of <CX5FX5FINPUT>qualA</CX5FX5FINPUT
  55614. > is <CX5FX5FINPUT>integer</CX5FX5FINPUT
  55615. >.</B.BODY
  55616. ><B.BODY><CX5FX5FPROCEDURE.NAME>Association. Qualified</CX5FX5FPROCEDURE.NAME
  55617. >.</B.BODY
  55618. ><B.BODY>Multiplicity: optional&truehy;many.</B.BODY
  55619. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00559.unk" origfile="pics/esqasqmo.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55620. ></FA.FIGURE.ANCHOR
  55621. ><B.BODY><CX5FX5FTITLE>Interface Of Class A (Informix)</CX5FX5FTITLE
  55622. >.</B.BODY
  55623. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55624. ><EM.EXAMPLE.MONO>ClassA(int m1classA);</EM.EXAMPLE.MONO
  55625. ><EM.EXAMPLE.MONO>int getClassBSet (PtrSet<ClassB></EM.EXAMPLE.MONO
  55626. ><EM.EXAMPLE.MONO>   &ClassBSet, int qualA) const;</EM.EXAMPLE.MONO
  55627. ><EM.EXAMPLE.MONO>int addClassB(int qualA, ClassB *newClassB);</EM.EXAMPLE.MONO
  55628. ><EM.EXAMPLE.MONO>int removeClassB(int qualA, ClassB </EM.EXAMPLE.MONO
  55629. ><EM.EXAMPLE.MONO>   *to_remove);</EM.EXAMPLE.MONO
  55630. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55631. ></LABEL
  55632. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55633. >Tcl procedures</L.LABEL
  55634. ><B.BODY>The following Tcl procedures are involved while generating this code:</B.BODY
  55635. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55636. ></RBW-AUTOGEN
  55637. ></RBW-MARKER
  55638. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_qual_assoc_attrib::many_set</CX5FX5FPROCEDURE.NAME
  55639. > </RBW-PARABODY
  55640. ></LB.LIST.BULLET
  55641. ><LT.LIST.TEXT>This function is implemented with an insert procedure (Informix) on the extra created table.</LT.LIST.TEXT
  55642. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55643. ></RBW-AUTOGEN
  55644. ></RBW-MARKER
  55645. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_qual_assoc_attrib::many_remove</CX5FX5FPROCEDURE.NAME
  55646. > </RBW-PARABODY
  55647. ></LB.LIST.BULLET
  55648. ><LT.LIST.TEXT>This function is implemented with a delete procedure (Informix) on the extra created table.</LT.LIST.TEXT
  55649. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55650. ></RBW-AUTOGEN
  55651. ></RBW-MARKER
  55652. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_qual_assoc_attrib::many_get</CX5FX5FPROCEDURE.NAME
  55653. > </RBW-PARABODY
  55654. ></LB.LIST.BULLET
  55655. ><LT.LIST.TEXT>This function is implemented with an insert procedure (Informix) on the extra created table.</LT.LIST.TEXT
  55656. ></LABEL
  55657. ></SUBSECTION
  55658. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12248"></RBW-ANCHOR
  55659. >Link Attribute Generation<RBW-IDXTERM TERM1="link attribute" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  55660. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="link attribute"></RBW-IDXTERM
  55661. ></SS.SUBSEC.HEAD
  55662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55663. >Introduction</L.LABEL
  55664. ><B.BODY>For Link Attribute and Reverse Link Attribute generation, a table is created for the link. The keys of this table are:</B.BODY
  55665. ><B.BODY>The keys become foreign keys of the link table.</B.BODY
  55666. ><B.BODY>In each of the related classes, a get function to the link class is generated. In the link class, a get function is generated to both related classes. Because there are only get functions created, no dispatch functions are needed. </B.BODY
  55667. ></LABEL
  55668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55669. >Example</L.LABEL
  55670. ><B.BODY>The following overview shows examples of associations with a link attribute that you can model in Class Association Diagrams. </B.BODY
  55671. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00560.unk" origfile="pics/esqaslnk.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55672. ></FA.FIGURE.ANCHOR
  55673. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55674. >CUST Interface</SL.SUBLABEL
  55675. ><B.BODY>Multiplicity: optional&truehy;many</B.BODY
  55676. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55677. ><EM.EXAMPLE.MONO>Cust(int m1cust);</EM.EXAMPLE.MONO
  55678. ><EM.EXAMPLE.MONO>... </EM.EXAMPLE.MONO
  55679. ><EM.EXAMPLE.MONO>int getPurchaseofBookSet (PtrSet<purchase></EM.EXAMPLE.MONO
  55680. ><EM.EXAMPLE.MONO>   &BookSet) const;</EM.EXAMPLE.MONO
  55681. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55682. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55683. >PURCHASE Interface</SL.SUBLABEL
  55684. ><B.BODY>Multiplicity: one&truehy;mandatory</B.BODY
  55685. ><EM.EXAMPLE.MONO>Purchase(Book& book, Cust& cust);</EM.EXAMPLE.MONO
  55686. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55687. ><EM.EXAMPLE.MONO>Book *getBook() const;</EM.EXAMPLE.MONO
  55688. ><EM.EXAMPLE.MONO>Cust *getCust() const;</EM.EXAMPLE.MONO
  55689. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55690. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55691. >BOOK Interface</SL.SUBLABEL
  55692. ><B.BODY>Multiplicity: one</B.BODY
  55693. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55694. ><EM.EXAMPLE.MONO>Book(int m1book);</EM.EXAMPLE.MONO
  55695. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55696. ><EM.EXAMPLE.MONO>Purchase *getPurchaseOfCust() const;</EM.EXAMPLE.MONO
  55697. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55698. ></LABEL
  55699. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55700. >Tcl procedures</L.LABEL
  55701. ><B.BODY>These are the Tcl procedures containing the implementation:</B.BODY
  55702. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55703. ></RBW-AUTOGEN
  55704. ></RBW-MARKER
  55705. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_link_attrib::one_generate</CX5FX5FPROCEDURE.NAME
  55706. > </RBW-PARABODY
  55707. ></LB.LIST.BULLET
  55708. ><LT.LIST.TEXT>The get function is created with an embedded SQL <CX5FX5FINPUT>select</CX5FX5FINPUT
  55709. > plus a <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55710. > function. The select is used to retrieve the parameters from the link class table using the own keys. The parameters go into the <CX5FX5FINPUT>findInDB().</CX5FX5FINPUT
  55711. ></LT.LIST.TEXT
  55712. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55713. ></RBW-AUTOGEN
  55714. ></RBW-MARKER
  55715. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_link_attrib::many_generate</CX5FX5FPROCEDURE.NAME
  55716. > </RBW-PARABODY
  55717. ></LB.LIST.BULLET
  55718. ><LT.LIST.TEXT>The get function is created with an embedded SQL <CX5FX5FINPUT>select</CX5FX5FINPUT
  55719. > plus a <CX5FX5FINPUT>findInDB()</CX5FX5FINPUT
  55720. > function. The select is used to retrieve the parameters from the link class table using the own keys. The parameters go into the <CX5FX5FINPUT>findInDB().</CX5FX5FINPUT
  55721. ></LT.LIST.TEXT
  55722. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55723. ></RBW-AUTOGEN
  55724. ></RBW-MARKER
  55725. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>db_rv_link_attrib::generate (always one)</CX5FX5FPROCEDURE.NAME
  55726. > </RBW-PARABODY
  55727. ></LB.LIST.BULLET
  55728. ><LT.LIST.TEXT>The get function consists of a <CX5FX5FINPUT>find_InDB()</CX5FX5FINPUT
  55729. >.</LT.LIST.TEXT
  55730. ></LABEL
  55731. ></SUBSECTION
  55732. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40455"></RBW-ANCHOR
  55733. >Qualified Link Generation<RBW-IDXTERM TERM1="qualified association" TERM2="in persistent code generation (ESQLC++)"></RBW-IDXTERM
  55734. ><RBW-IDXTERM TERM1="association" TERM2="qualified"></RBW-IDXTERM
  55735. ><RBW-IDXTERM TERM1="ESQLC++" TERM2="qualified association attribute"></RBW-IDXTERM
  55736. ></SS.SUBSEC.HEAD
  55737. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55738. >Introduction</L.LABEL
  55739. ><B.BODY>The code generation for qualified links is, for the main part, the same as the non&truehy;qualified version. The difference is the qualifier which is added as extra condition in the embedded SQL. </B.BODY
  55740. ></LABEL
  55741. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55742. >Example</L.LABEL
  55743. ><B.BODY>The following overview shows examples of associations with a <RBW-IDXTERM TERM1="association" TERM2="qualified link attribute"></RBW-IDXTERM
  55744. ><RBW-IDXTERM TERM1="data attribute" TERM2="qualified link"></RBW-IDXTERM
  55745. ><RBW-IDXTERM TERM1="link attribute" TERM2="qualified"></RBW-IDXTERM
  55746. >qualified link attribute that you can model in Class Association Diagrams.</B.BODY
  55747. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00561.unk" origfile="pics/esqasqln.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55748. ></FA.FIGURE.ANCHOR
  55749. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55750. >Interface </SL.SUBLABEL
  55751. ><B.BODY>Multiplicity: many&truehy;optional</B.BODY
  55752. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55753. ><EM.EXAMPLE.MONO>Cust(int m1cust);</EM.EXAMPLE.MONO
  55754. ><EM.EXAMPLE.MONO>... </EM.EXAMPLE.MONO
  55755. ><EM.EXAMPLE.MONO>int getPurchaseofBookSet (PtrSet<purchase> </EM.EXAMPLE.MONO
  55756. ><EM.EXAMPLE.MONO>   &BookSet int shop) const;</EM.EXAMPLE.MONO
  55757. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  55758. ></LABEL
  55759. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55760. >Tcl procedures</L.LABEL
  55761. ><B.BODY>The Tcl procedures containing the implementations are:</B.BODY
  55762. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55763. ></RBW-AUTOGEN
  55764. ></RBW-MARKER
  55765. ><RBW-PARABODY><CX5FX5FFILE.NAME>db_qual_link_attrib::one_generate</CX5FX5FFILE.NAME
  55766. > </RBW-PARABODY
  55767. ></LB.LIST.BULLET
  55768. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55769. ></RBW-AUTOGEN
  55770. ></RBW-MARKER
  55771. ><RBW-PARABODY><CX5FX5FFILE.NAME>db_qual_link_attrib::many_generate</CX5FX5FFILE.NAME
  55772. > </RBW-PARABODY
  55773. ></LB.LIST.BULLET
  55774. ><LT.LIST.TEXT>The get function consists of a <CX5FX5FINPUT>find_InDB()</CX5FX5FINPUT
  55775. >.</LT.LIST.TEXT
  55776. ></LABEL
  55777. ></SUBSECTION
  55778. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39175"></RBW-ANCHOR
  55779. >Example</SS.SUBSEC.HEAD
  55780. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55781. >Example</L.LABEL
  55782. ><B.BODY>The following Class Association Diagram displays the relation between a Person and the Company the person works for. Both the classes, Person and Company, are persistent classes for which SQL and ESQLC++ is generated. </B.BODY
  55783. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00562.unk" origfile="pics/esqperco.gif" origtype="X" origdoc="../../sources/cpp/pers611.fm5.mif"></RBW-GRAPHIC
  55784. ></FA.FIGURE.ANCHOR
  55785. ></LABEL
  55786. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55787. >Functions</L.LABEL
  55788. ><B.BODY>Following is a simple C++ main file that shows the following functions:</B.BODY
  55789. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55790. ></RBW-AUTOGEN
  55791. ></RBW-MARKER
  55792. ><RBW-PARABODY>Three instances of the class Person are created (insertAll)</RBW-PARABODY
  55793. ></LB.LIST.BULLET
  55794. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55795. ></RBW-AUTOGEN
  55796. ></RBW-MARKER
  55797. ><RBW-PARABODY>Two instances of the class Company are created (insertAll)</RBW-PARABODY
  55798. ></LB.LIST.BULLET
  55799. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55800. ></RBW-AUTOGEN
  55801. ></RBW-MARKER
  55802. ><RBW-PARABODY>Instances of the class Person are associated to instances of the class Company (insertAll)</RBW-PARABODY
  55803. ></LB.LIST.BULLET
  55804. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55805. ></RBW-AUTOGEN
  55806. ></RBW-MARKER
  55807. ><RBW-PARABODY>All Persons working for a Company are listed (listAll)</RBW-PARABODY
  55808. ></LB.LIST.BULLET
  55809. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55810. ></RBW-AUTOGEN
  55811. ></RBW-MARKER
  55812. ><RBW-PARABODY>All instances of the classes Person and Company are removed (removeAll)</RBW-PARABODY
  55813. ></LB.LIST.BULLET
  55814. ><B.BODY>This simple program does not contain any RDBMS&truehy;specific ESQLC++ code. It only contains C++ code and calls to functions that are made available in C++. These calls are printed in bold.</B.BODY
  55815. ><EWM.EXAMPLEW.MONO>#include <iostream.h></EWM.EXAMPLEW.MONO
  55816. ><EWM.EXAMPLEW.MONO>#ifndef COMPANY_HXX</EWM.EXAMPLEW.MONO
  55817. ><EWM.EXAMPLEW.MONO>#include "Company.hxx"</EWM.EXAMPLEW.MONO
  55818. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  55819. ><EWM.EXAMPLEW.MONO>#ifndef PERSON_HXX</EWM.EXAMPLEW.MONO
  55820. ><EWM.EXAMPLEW.MONO>#include "Person.hxx"</EWM.EXAMPLEW.MONO
  55821. ><EWM.EXAMPLEW.MONO>#endif</EWM.EXAMPLEW.MONO
  55822. ><EWM.EXAMPLEW.MONO>void insertAll();</EWM.EXAMPLEW.MONO
  55823. ><EWM.EXAMPLEW.MONO>void listAll();</EWM.EXAMPLEW.MONO
  55824. ><EWM.EXAMPLEW.MONO>void removeAll();</EWM.EXAMPLEW.MONO
  55825. ><EWM.EXAMPLEW.MONO>main(int argc, char *argv[])</EWM.EXAMPLEW.MONO
  55826. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  55827. ><EWM.EXAMPLEW.MONO>      if (argc != 2) {</EWM.EXAMPLEW.MONO
  55828. ><EWM.EXAMPLEW.MONO>            cerr << "Usage: " << argv[0] << " <database name>" << endl;</EWM.EXAMPLEW.MONO
  55829. ><EWM.EXAMPLEW.MONO>            return 1;</EWM.EXAMPLEW.MONO
  55830. ><EWM.EXAMPLEW.MONO>      }</EWM.EXAMPLEW.MONO
  55831. ><EWM.EXAMPLEW.MONO>      cerr << "Connect to " << argv[1] << endl;</EWM.EXAMPLEW.MONO
  55832. ><EWM.EXAMPLEW.MONO>      if (<CX5FX5FPROCEDURE.NAME>DBObject::connectDB</CX5FX5FPROCEDURE.NAME
  55833. >(argv[1]) < 0) {</EWM.EXAMPLEW.MONO
  55834. ><EWM.EXAMPLEW.MONO>            cerr << "Connect failed" << endl;</EWM.EXAMPLEW.MONO
  55835. ><EWM.EXAMPLEW.MONO>            return 1;</EWM.EXAMPLEW.MONO
  55836. ><EWM.EXAMPLEW.MONO>      }</EWM.EXAMPLEW.MONO
  55837. ><EWM.EXAMPLEW.MONO>      listAll();</EWM.EXAMPLEW.MONO
  55838. ><EWM.EXAMPLEW.MONO>      </EWM.EXAMPLEW.MONO
  55839. ><EWM.EXAMPLEW.MONO>      cerr << "Begin" << endl; <CX5FX5FPROCEDURE.NAME>DBObject::beginWork</CX5FX5FPROCEDURE.NAME
  55840. >();</EWM.EXAMPLEW.MONO
  55841. ><EWM.EXAMPLEW.MONO>      insertAll();</EWM.EXAMPLEW.MONO
  55842. ><EWM.EXAMPLEW.MONO>      cerr << "Commit" << endl; <CX5FX5FPROCEDURE.NAME>DBObject::commit</CX5FX5FPROCEDURE.NAME
  55843. >();</EWM.EXAMPLEW.MONO
  55844. ><EWM.EXAMPLEW.MONO>      </EWM.EXAMPLEW.MONO
  55845. ><EWM.EXAMPLEW.MONO>      listAll();</EWM.EXAMPLEW.MONO
  55846. ><EWM.EXAMPLEW.MONO>      cerr << "Begin" << endl; <CX5FX5FPROCEDURE.NAME>DBObject::beginWork</CX5FX5FPROCEDURE.NAME
  55847. >();</EWM.EXAMPLEW.MONO
  55848. ><EWM.EXAMPLEW.MONO>      removeAll();</EWM.EXAMPLEW.MONO
  55849. ><EWM.EXAMPLEW.MONO>      cerr << "Commit" << endl; <CX5FX5FPROCEDURE.NAME>DBObject::commit</CX5FX5FPROCEDURE.NAME
  55850. >();</EWM.EXAMPLEW.MONO
  55851. ><EWM.EXAMPLEW.MONO>      listAll();</EWM.EXAMPLEW.MONO
  55852. ><EWM.EXAMPLEW.MONO>      return 0;</EWM.EXAMPLEW.MONO
  55853. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  55854. ><EWM.EXAMPLEW.MONO>void insertAll()</EWM.EXAMPLEW.MONO
  55855. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  55856. ><EWM.EXAMPLEW.MONO>      // Create Persons</EWM.EXAMPLEW.MONO
  55857. ><EWM.EXAMPLEW.MONO>      cerr << "Create Persons" << endl;</EWM.EXAMPLEW.MONO
  55858. ><EWM.EXAMPLEW.MONO>      Person person1("Person One");</EWM.EXAMPLEW.MONO
  55859. ><EWM.EXAMPLEW.MONO>      person1.setBornIn(1964);</EWM.EXAMPLEW.MONO
  55860. ><EWM.EXAMPLEW.MONO>      Person person2("Person Two");</EWM.EXAMPLEW.MONO
  55861. ><EWM.EXAMPLEW.MONO>      person2.setBornIn(1966);</EWM.EXAMPLEW.MONO
  55862. ><EWM.EXAMPLEW.MONO>      Person person3("Person Three");</EWM.EXAMPLEW.MONO
  55863. ><EWM.EXAMPLEW.MONO>      person3.setBornIn(1968);</EWM.EXAMPLEW.MONO
  55864. ><EWM.EXAMPLEW.MONO>      // Create Companies</EWM.EXAMPLEW.MONO
  55865. ><EWM.EXAMPLEW.MONO>      cerr << "Create Companies" << endl;</EWM.EXAMPLEW.MONO
  55866. ><EWM.EXAMPLEW.MONO>      Company company1("Company One");</EWM.EXAMPLEW.MONO
  55867. ><EWM.EXAMPLEW.MONO>      company1.setFoundedIn(1980);</EWM.EXAMPLEW.MONO
  55868. ><EWM.EXAMPLEW.MONO>      Company company2("Company Two");</EWM.EXAMPLEW.MONO
  55869. ><EWM.EXAMPLEW.MONO>      company2.setFoundedIn(1985);</EWM.EXAMPLEW.MONO
  55870. ><EWM.EXAMPLEW.MONO>      // Insert Tuples</EWM.EXAMPLEW.MONO
  55871. ><EWM.EXAMPLEW.MONO>      cerr << "Insert Persons in DB" << endl;</EWM.EXAMPLEW.MONO
  55872. ><EWM.EXAMPLEW.MONO>      person1.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  55873. >();</EWM.EXAMPLEW.MONO
  55874. ><EWM.EXAMPLEW.MONO>      person2.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  55875. >();</EWM.EXAMPLEW.MONO
  55876. ><EWM.EXAMPLEW.MONO>      person3.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  55877. >();</EWM.EXAMPLEW.MONO
  55878. ><EWM.EXAMPLEW.MONO>      cerr << "Insert Companies in DB" << endl;</EWM.EXAMPLEW.MONO
  55879. ><EWM.EXAMPLEW.MONO>      company1.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  55880. >();</EWM.EXAMPLEW.MONO
  55881. ><EWM.EXAMPLEW.MONO>      company2.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  55882. >();</EWM.EXAMPLEW.MONO
  55883. ><EWM.EXAMPLEW.MONO>      // Set relations</EWM.EXAMPLEW.MONO
  55884. ><EWM.EXAMPLEW.MONO>      cerr << "Set relations between Persons and Companies" << endl;</EWM.EXAMPLEW.MONO
  55885. ><EWM.EXAMPLEW.MONO>      person1.setEmployer(&company1);</EWM.EXAMPLEW.MONO
  55886. ><EWM.EXAMPLEW.MONO>      person2.setEmployer(&company2);</EWM.EXAMPLEW.MONO
  55887. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  55888. ><EWM.EXAMPLEW.MONO>void listAll()</EWM.EXAMPLEW.MONO
  55889. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  55890. ><EWM.EXAMPLEW.MONO>      cerr << "Now list all Persons with Company" << endl;</EWM.EXAMPLEW.MONO
  55891. ><EWM.EXAMPLEW.MONO>      PtrSet<Person> personSet;</EWM.EXAMPLEW.MONO
  55892. ><EWM.EXAMPLEW.MONO>      if (<CX5FX5FPROCEDURE.NAME>Person::searchInDB</CX5FX5FPROCEDURE.NAME
  55893. >(personSet, "")==0) {</EWM.EXAMPLEW.MONO
  55894. ><EWM.EXAMPLEW.MONO>            Person *p;</EWM.EXAMPLEW.MONO
  55895. ><EWM.EXAMPLEW.MONO>            Company *c;</EWM.EXAMPLEW.MONO
  55896. ><EWM.EXAMPLEW.MONO>            p=personSet.first();</EWM.EXAMPLEW.MONO
  55897. ><EWM.EXAMPLEW.MONO>            while (p!=NULL) {</EWM.EXAMPLEW.MONO
  55898. ><EWM.EXAMPLEW.MONO>                  cout << p&truehy;>getName() << " ";</EWM.EXAMPLEW.MONO
  55899. ><EWM.EXAMPLEW.MONO>                  if (p&truehy;>bornInIsNull()) </EWM.EXAMPLEW.MONO
  55900. ><EWM.EXAMPLEW.MONO>                        cout << "NULL ";</EWM.EXAMPLEW.MONO
  55901. ><EWM.EXAMPLEW.MONO>                  else</EWM.EXAMPLEW.MONO
  55902. ><EWM.EXAMPLEW.MONO>                        cout << p&truehy;>getBornIn() << " ";</EWM.EXAMPLEW.MONO
  55903. ><EWM.EXAMPLEW.MONO>                  c=p&truehy;>getEmployer();</EWM.EXAMPLEW.MONO
  55904. ><EWM.EXAMPLEW.MONO>                  if (c!=NULL) {</EWM.EXAMPLEW.MONO
  55905. ><EWM.EXAMPLEW.MONO>                        cout << c&truehy;>getName() << " ";</EWM.EXAMPLEW.MONO
  55906. ><EWM.EXAMPLEW.MONO>                        if (c&truehy;>foundedInIsNull())</EWM.EXAMPLEW.MONO
  55907. ><EWM.EXAMPLEW.MONO>                              cout << "NULL" << endl;</EWM.EXAMPLEW.MONO
  55908. ><EWM.EXAMPLEW.MONO>                        else</EWM.EXAMPLEW.MONO
  55909. ><EWM.EXAMPLEW.MONO>                              cout << c&truehy;>getFoundedIn() << endl;</EWM.EXAMPLEW.MONO
  55910. ><EWM.EXAMPLEW.MONO>                  } else {</EWM.EXAMPLEW.MONO
  55911. ><EWM.EXAMPLEW.MONO>                        cout << "Unemployed" << endl;</EWM.EXAMPLEW.MONO
  55912. ><EWM.EXAMPLEW.MONO>                  }</EWM.EXAMPLEW.MONO
  55913. ><EWM.EXAMPLEW.MONO>                  delete c;</EWM.EXAMPLEW.MONO
  55914. ><EWM.EXAMPLEW.MONO>                  delete p;</EWM.EXAMPLEW.MONO
  55915. ><EWM.EXAMPLEW.MONO>                  p=personSet.next();</EWM.EXAMPLEW.MONO
  55916. ><EWM.EXAMPLEW.MONO>            }</EWM.EXAMPLEW.MONO
  55917. ><EWM.EXAMPLEW.MONO>      }</EWM.EXAMPLEW.MONO
  55918. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  55919. ><EWM.EXAMPLEW.MONO>void removeAll()</EWM.EXAMPLEW.MONO
  55920. ><EWM.EXAMPLEW.MONO>{</EWM.EXAMPLEW.MONO
  55921. ><EWM.EXAMPLEW.MONO>      PtrSet<Person> personSet;</EWM.EXAMPLEW.MONO
  55922. ><EWM.EXAMPLEW.MONO>      if (<CX5FX5FPROCEDURE.NAME>Person::searchInDB</CX5FX5FPROCEDURE.NAME
  55923. >(personSet, "")==0) {</EWM.EXAMPLEW.MONO
  55924. ><EWM.EXAMPLEW.MONO>            Person *p;</EWM.EXAMPLEW.MONO
  55925. ><EWM.EXAMPLEW.MONO>            p=personSet.first();</EWM.EXAMPLEW.MONO
  55926. ><EWM.EXAMPLEW.MONO>            while (p!=NULL) {</EWM.EXAMPLEW.MONO
  55927. ><EWM.EXAMPLEW.MONO>                  cerr << "deleting " << p&truehy;>getName() << endl;</EWM.EXAMPLEW.MONO
  55928. ><EWM.EXAMPLEW.MONO>                  p&truehy;><CX5FX5FPROCEDURE.NAME>deleteFromDB</CX5FX5FPROCEDURE.NAME
  55929. >();</EWM.EXAMPLEW.MONO
  55930. ><EWM.EXAMPLEW.MONO>                  delete p;</EWM.EXAMPLEW.MONO
  55931. ><EWM.EXAMPLEW.MONO>                  p=personSet.next();</EWM.EXAMPLEW.MONO
  55932. ><EWM.EXAMPLEW.MONO>            }</EWM.EXAMPLEW.MONO
  55933. ><EWM.EXAMPLEW.MONO>      }</EWM.EXAMPLEW.MONO
  55934. ><EWM.EXAMPLEW.MONO>      PtrSet<Company> companySet;</EWM.EXAMPLEW.MONO
  55935. ><EWM.EXAMPLEW.MONO>      if (<CX5FX5FPROCEDURE.NAME>Company::searchInDB</CX5FX5FPROCEDURE.NAME
  55936. >(companySet, "")==0) {</EWM.EXAMPLEW.MONO
  55937. ><EWM.EXAMPLEW.MONO>            Company *c;</EWM.EXAMPLEW.MONO
  55938. ><EWM.EXAMPLEW.MONO>            c=companySet.first();</EWM.EXAMPLEW.MONO
  55939. ><EWM.EXAMPLEW.MONO>            while (c!=NULL) {</EWM.EXAMPLEW.MONO
  55940. ><EWM.EXAMPLEW.MONO>                  cerr << "deleting " << c&truehy;>getName() << endl;</EWM.EXAMPLEW.MONO
  55941. ><EWM.EXAMPLEW.MONO>                  c&truehy;><CX5FX5FPROCEDURE.NAME>deleteFromDB</CX5FX5FPROCEDURE.NAME
  55942. >();</EWM.EXAMPLEW.MONO
  55943. ><EWM.EXAMPLEW.MONO>                  delete c;</EWM.EXAMPLEW.MONO
  55944. ><EWM.EXAMPLEW.MONO>                  c=companySet.next();</EWM.EXAMPLEW.MONO
  55945. ><EWM.EXAMPLEW.MONO>            }</EWM.EXAMPLEW.MONO
  55946. ><EWM.EXAMPLEW.MONO>      }</EWM.EXAMPLEW.MONO
  55947. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  55948. ><B.BODY></B.BODY
  55949. ></LABEL
  55950. ></SUBSECTION
  55951. ></SECTION
  55952. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="23699"></RBW-ANCHOR
  55953. >Specific Features of <RBW-IDXTERM TERM1="CA-OpenIngres"></RBW-IDXTERM
  55954. >CA&truehy;OpenIngres (E)SQL</S.SECTION.HEAD
  55955. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55956. >Introduction</L.LABEL
  55957. ><B.BODY>CA&truehy;OpenIngres 1.1. is one of the Relational Database Management Systems (RDBMS) supported by the persistent code generation of ObjectTeam. In this section, some special features of CA&truehy;OpenIngres SQL and ESQL are discussed.</B.BODY
  55958. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  55959. ></RBW-AUTOGEN
  55960. >Make sure CA&truehy;OpenIngres is configured properly before using it in combination with ObjectTeam. </N.NOTE
  55961. ></LABEL
  55962. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55963. >Supported platforms</L.LABEL
  55964. ><B.BODY>Persistent code generation for CA&truehy;Ingres applies to:</B.BODY
  55965. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  55966. ></RBW-AUTOGEN
  55967. ></RBW-MARKER
  55968. ><RBW-PARABODY>Unix&truehy;based platforms</RBW-PARABODY
  55969. ></LB.LIST.BULLET
  55970. ></LABEL
  55971. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55972. >In this section</L.LABEL
  55973. ><B.BODY>This section contains the following topics:</B.BODY
  55974. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  55975. ></ENTRY
  55976. ></RBW-ROW
  55977. ></THEAD
  55978. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35912" TYPE="XREF-TEXTCOPY">SQL: Database Table Creation&rbwtab;D–50</RBW-XREF
  55979. ></SB.SECTION.BLOCK.TABLE
  55980. ></ENTRY
  55981. ></RBW-ROW
  55982. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31070" TYPE="XREF-TEXTCOPY">SQL: Database Procedure Creation&rbwtab;D–51</RBW-XREF
  55983. ></SB.SECTION.BLOCK.TABLE
  55984. ></ENTRY
  55985. ></RBW-ROW
  55986. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36156" TYPE="XREF-TEXTCOPY">ESQL Features&rbwtab;D–53</RBW-XREF
  55987. ></SB.SECTION.BLOCK.TABLE
  55988. ></ENTRY
  55989. ></RBW-ROW
  55990. ></TBODY
  55991. ></TGROUP
  55992. ></RBW-TABLE
  55993. ></LABEL
  55994. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="CA-OpenIngres" TERM2="SQL features"></RBW-IDXTERM
  55995. ><RBW-IDXTERM TERM1="SQL generation" TERM2="for CA-OpenIngres"></RBW-IDXTERM
  55996. ><RBW-ANCHOR ID="35912"></RBW-ANCHOR
  55997. >SQL: Database Table Creation</SS.SUBSEC.HEAD
  55998. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  55999. >Introduction</L.LABEL
  56000. ><B.BODY>When using CA&truehy;OpenIngres, you should be aware of the following notes concerning how ObjectTeam generates table definitions.</B.BODY
  56001. ></LABEL
  56002. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56003. >NOT NULL generation</L.LABEL
  56004. ><B.BODY>The SQL generator generates a nullability of <CX5FX5FINPUT>NOT NULL</CX5FX5FINPUT
  56005. > if both the following statements are true:</B.BODY
  56006. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56007. ></RBW-AUTOGEN
  56008. ></RBW-MARKER
  56009. ><RBW-PARABODY>The column is (part of) the key in a table definition.</RBW-PARABODY
  56010. ></LB.LIST.BULLET
  56011. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56012. ></RBW-AUTOGEN
  56013. ></RBW-MARKER
  56014. ><RBW-PARABODY>The property <CX5FX5FTITLE>nullable</CX5FX5FTITLE
  56015. > of the corresponding attribute in the SQL model is set to No.</RBW-PARABODY
  56016. ></LB.LIST.BULLET
  56017. ></LABEL
  56018. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56019. >Comment generation</L.LABEL
  56020. ><B.BODY>The SQL generator generates comment strings for every column in a table definition. </B.BODY
  56021. ></LABEL
  56022. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56023. ><RBW-IDXTERM TERM1="key constraint" TERM2="in CA-OpenIngres"></RBW-IDXTERM
  56024. >Key constraints</L.LABEL
  56025. ><B.BODY>The SQL generator does not generate primary key and foreign key constraints. Instead, it generates a <CX5FX5FINPUT>CREATE UNIQUE INDEX</CX5FX5FINPUT
  56026. > statement for the (composed) key of a table, and a <CX5FX5FINPUT>CREATE INDEX</CX5FX5FINPUT
  56027. > statement for the (composed) foreign key(s) in a table. </B.BODY
  56028. ></LABEL
  56029. ></SUBSECTION
  56030. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31070"></RBW-ANCHOR
  56031. >SQL: Database Procedure Creation</SS.SUBSEC.HEAD
  56032. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56033. ><RBW-IDXTERM TERM1="database procedure" TERM2="in CA-OpenIngres"></RBW-IDXTERM
  56034. >Generated DB procedures</L.LABEL
  56035. ><B.BODY>During SQL code generation, DB procedures are generated. These procedures are executed after the database operations <CX5FX5FTITLE>delete</CX5FX5FTITLE
  56036. >, <CX5FX5FTITLE>insert</CX5FX5FTITLE
  56037. > and <CX5FX5FTITLE>update</CX5FX5FTITLE
  56038. >. The names of these procedures are:</B.BODY
  56039. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56040. ></RBW-AUTOGEN
  56041. ></RBW-MARKER
  56042. ><RBW-PARABODY>pdel_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56043. > </RBW-PARABODY
  56044. ></LB.LIST.BULLET
  56045. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56046. ></RBW-AUTOGEN
  56047. ></RBW-MARKER
  56048. ><RBW-PARABODY>pins_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56049. > </RBW-PARABODY
  56050. ></LB.LIST.BULLET
  56051. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56052. ></RBW-AUTOGEN
  56053. ></RBW-MARKER
  56054. ><RBW-PARABODY>pupd_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56055. > </RBW-PARABODY
  56056. ></LB.LIST.BULLET
  56057. ></LABEL
  56058. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56059. >When DB procedures are not generated</L.LABEL
  56060. ><B.BODY>Generally speaking, these DB procedures are generated for every table definition that is generated. However, in the following circumstances, they are not:</B.BODY
  56061. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56062. ></RBW-AUTOGEN
  56063. ></RBW-MARKER
  56064. ><RBW-PARABODY>When all rules for the operation and the types of links of the table are set to <CX5FX5FFILE.NAME>none</CX5FX5FFILE.NAME
  56065. >. These rules can be set in the customization file <CX5FX5FFILE.NAME>sqlrules</CX5FX5FFILE.NAME
  56066. >.</RBW-PARABODY
  56067. ></LB.LIST.BULLET
  56068. ><LT.LIST.TEXT>As this means that no conditions must be met and no actions must be taken, the procedure would be empty; therefore, no DB procedure is generated.</LT.LIST.TEXT
  56069. ><W2.WARNING.2><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  56070. ></RBW-AUTOGEN
  56071. >The term rule as used here refers to ObjectTeam rules, not Ingres rules.</W2.WARNING.2
  56072. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56073. ></RBW-AUTOGEN
  56074. ></RBW-MARKER
  56075. ><RBW-PARABODY>The procedure cannot be created due to a cascade cycle (<CX5FX5FTITLE>delete</CX5FX5FTITLE
  56076. > or <CX5FX5FTITLE>update</CX5FX5FTITLE
  56077. >).</RBW-PARABODY
  56078. ></LB.LIST.BULLET
  56079. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56080. ></RBW-AUTOGEN
  56081. ></RBW-MARKER
  56082. ><RBW-PARABODY>The procedure cannot be implemented due to a conflict in rules for an operation. Such a conflict occurs, for instance, when an <CX5FX5FTITLE>insert</CX5FX5FTITLE
  56083. > into a detail table demands the existence of the foreign key in the master table and vice versa. Another example of a conflict is when a <CX5FX5FTITLE>delete</CX5FX5FTITLE
  56084. > from a detail table is rejected if the foreign key exists in the master table and vice versa. </RBW-PARABODY
  56085. ></LB.LIST.BULLET
  56086. ></LABEL
  56087. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56088. ><RBW-ANCHOR ID="33656"></RBW-ANCHOR
  56089. >Referential <RBW-IDXTERM TERM1="referential integrity" TERM2="in CA-OpenIngres"></RBW-IDXTERM
  56090. ><RBW-IDXTERM TERM1="CA-OpenIngres" TERM2="referential integrity"></RBW-IDXTERM
  56091. >Integrity (RI)</L.LABEL
  56092. ><B.BODY>To enforce and maintain referential integrity in a generated CA&truehy;OpenIngres database, the code generator of ObjectTeam uses a mechanism of rules and DB procedures.</B.BODY
  56093. ><B.BODY>A rule is a user&truehy;defined mechanism that invokes a specified DB procedure whenever the database changes in a specified way. Whenever the execution of a statement satisfies an existing rule condition, the rule is fired, i.e. the DB procedure associated with that rule is executed. The code generator generates <CX5FX5FINPUT>CREATE PROCEDURE</CX5FX5FINPUT
  56094. > and <CX5FX5FINPUT>CREATE RULE</CX5FX5FINPUT
  56095. > statements to implement this mechanism.</B.BODY
  56096. ><B.BODY>Whenever a referential integrity check fails, the procedure raises an error and returns, which causes all the statements in the procedure which have been executed to be rolled back. The statement that fired the rule associated with the procedure is also rolled back. </B.BODY
  56097. ></LABEL
  56098. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56099. >Supported RI rules </L.LABEL
  56100. ><B.BODY>The following table summarizes the RI rules supported for the combinations of operation and table types:</B.BODY
  56101. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="126p"><COLSPEC COLNAME="3" COLWIDTH="216p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operation</CELLHEADING
  56102. ></ENTRY
  56103. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Rule</CELLHEADING
  56104. ></ENTRY
  56105. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Comment</CELLHEADING
  56106. ></ENTRY
  56107. ></RBW-ROW
  56108. ></THEAD
  56109. ><TBODY><RBW-ROW><ENTRY COLNAME="1" MOREROWS="1" VALIGN="TOP"><CELLBODY>insert in detail </CELLBODY
  56110. ></ENTRY
  56111. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_not_exist </CELLBODY
  56112. ></ENTRY
  56113. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on not exist impkey in master</CELLBODY
  56114. ></ENTRY
  56115. ></RBW-ROW
  56116. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> ins_in_master</CELLBODY
  56117. ></ENTRY
  56118. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cascade insert in master</CELLBODY
  56119. ></ENTRY
  56120. ></RBW-ROW
  56121. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert in master </CELLBODY
  56122. ></ENTRY
  56123. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> rej_not_exist</CELLBODY
  56124. ></ENTRY
  56125. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on not exist expkey in detail</CELLBODY
  56126. ></ENTRY
  56127. ></RBW-ROW
  56128. ><RBW-ROW><ENTRY COLNAME="1" MOREROWS="3" VALIGN="TOP"><CELLBODY>delete in detail </CELLBODY
  56129. ></ENTRY
  56130. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_exist</CELLBODY
  56131. ></ENTRY
  56132. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on exist impkey in master</CELLBODY
  56133. ></ENTRY
  56134. ></RBW-ROW
  56135. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> del_in_master</CELLBODY
  56136. ></ENTRY
  56137. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cascade delete impkey in master</CELLBODY
  56138. ></ENTRY
  56139. ></RBW-ROW
  56140. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> rej_last_in_master</CELLBODY
  56141. ></ENTRY
  56142. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on last impkey in master</CELLBODY
  56143. ></ENTRY
  56144. ></RBW-ROW
  56145. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> rej_last</CELLBODY
  56146. ></ENTRY
  56147. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on last impkey in current table</CELLBODY
  56148. ></ENTRY
  56149. ></RBW-ROW
  56150. ><RBW-ROW><ENTRY COLNAME="1" MOREROWS="3" VALIGN="TOP"><CELLBODY>delete in master </CELLBODY
  56151. ></ENTRY
  56152. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>nullify_detail</CELLBODY
  56153. ></ENTRY
  56154. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nullify expkey in detail</CELLBODY
  56155. ></ENTRY
  56156. ></RBW-ROW
  56157. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> del_in_detail</CELLBODY
  56158. ></ENTRY
  56159. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cascade delete expkey in detail</CELLBODY
  56160. ></ENTRY
  56161. ></RBW-ROW
  56162. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> rej_exist</CELLBODY
  56163. ></ENTRY
  56164. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on exist expkey in detail</CELLBODY
  56165. ></ENTRY
  56166. ></RBW-ROW
  56167. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> rej_last</CELLBODY
  56168. ></ENTRY
  56169. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on last expkey in current table</CELLBODY
  56170. ></ENTRY
  56171. ></RBW-ROW
  56172. ><RBW-ROW><ENTRY COLNAME="1" MOREROWS="1" VALIGN="TOP"><CELLBODY>update in detail </CELLBODY
  56173. ></ENTRY
  56174. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_not_exist</CELLBODY
  56175. ></ENTRY
  56176. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on not exist impkey in master</CELLBODY
  56177. ></ENTRY
  56178. ></RBW-ROW
  56179. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> ins_in_master</CELLBODY
  56180. ></ENTRY
  56181. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Insert in master</CELLBODY
  56182. ></ENTRY
  56183. ></RBW-ROW
  56184. ><RBW-ROW><ENTRY COLNAME="1" MOREROWS="2" VALIGN="TOP"><CELLBODY>update in master </CELLBODY
  56185. ></ENTRY
  56186. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>upd_in_detail</CELLBODY
  56187. ></ENTRY
  56188. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Update expkey in detail</CELLBODY
  56189. ></ENTRY
  56190. ></RBW-ROW
  56191. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> nullify_detail</CELLBODY
  56192. ></ENTRY
  56193. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nullify expkey in detail</CELLBODY
  56194. ></ENTRY
  56195. ></RBW-ROW
  56196. ><RBW-ROW><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> rej_exist</CELLBODY
  56197. ></ENTRY
  56198. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reject on exist expkey in detail</CELLBODY
  56199. ></ENTRY
  56200. ></RBW-ROW
  56201. ></TBODY
  56202. ></TGROUP
  56203. ></RBW-TABLE
  56204. ></LABEL
  56205. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56206. >Declarative referential integrity</L.LABEL
  56207. ><B.BODY>Declarative referential integrity, as supported by CA&truehy;OpenIngres, is not used by ObjectTeam code generation. The main reason is that certain cascade RI policies can result in DB procedures that need to call cross&truehy;dependent procedures and that need cursor&truehy;like structures.</B.BODY
  56208. ></LABEL
  56209. ></SUBSECTION
  56210. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="CA-OpenIngres" TERM2="ESQL features"></RBW-IDXTERM
  56211. ><RBW-IDXTERM TERM1="ESQL generation" TERM2="for CA-OpenIngres"></RBW-IDXTERM
  56212. ><RBW-ANCHOR ID="36156"></RBW-ANCHOR
  56213. >ESQL Features</SS.SUBSEC.HEAD
  56214. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56215. >Information</L.LABEL
  56216. ><B.BODY>When using CA&truehy;OpenIngres, you should be aware of the following notes concerning the generation of Embedded SQL (ESQL).</B.BODY
  56217. ></LABEL
  56218. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56219. ><RBW-IDXTERM TERM1="ESQLC preprocessor" TERM2="for CA-OpenIngres"></RBW-IDXTERM
  56220. >ESQLC preprocessor </L.LABEL
  56221. ><B.BODY>Within the ObjectTeam environment, the ESQLC++ preprocessor of CA&truehy;OpenIngres is used in the makefile. You can generate a makefile by selecting -Utilities | Generate Makefile in the Implementation phase. The corresponding command is named esqlcc. </B.BODY
  56222. ></LABEL
  56223. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56224. >Generated ESQL files</L.LABEL
  56225. ><B.BODY>The following files are generated in your user environment by the ESQL generator:</B.BODY
  56226. ><B.BODY>Note that the DB procedures mentioned earlier in this chapter are not called directly from the generated embedded C++ files. Instead, simple SQL statements like <CX5FX5FINPUT>INSERT</CX5FX5FINPUT
  56227. > and <CX5FX5FINPUT>DELETE</CX5FX5FINPUT
  56228. > are used to interact with the database.</B.BODY
  56229. ></LABEL
  56230. ></SUBSECTION
  56231. ></SECTION
  56232. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="41103"></RBW-ANCHOR
  56233. >Specific <RBW-IDXTERM SEE="Microsoft SQL-Server" TERM1="MS SQL-Server"></RBW-IDXTERM
  56234. >Features of <RBW-IDXTERM TERM1="Microsoft SQL-Server"></RBW-IDXTERM
  56235. >Microsoft SQL&truehy;Server (Dynamic) SQL</S.SECTION.HEAD
  56236. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56237. >Introduction</L.LABEL
  56238. ><B.BODY>Microsoft SQL&truehy;Server is one of the Relational Database Management Systems (RDBMS) supported by the persistent code generation of ObjectTeam. In this section, some special features of Microsoft Transact&truehy;SQL and Microsoft DB&truehy;Library for C(++) are discussed.</B.BODY
  56239. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  56240. ></RBW-AUTOGEN
  56241. >Make sure MS SQL&truehy;Server is configured properly before using it in combination with ObjectTeam. </N.NOTE
  56242. ></LABEL
  56243. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56244. >Supported platforms</L.LABEL
  56245. ><B.BODY>Persistent code generation for Microsoft SQL&truehy;Server applies to:</B.BODY
  56246. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56247. ></RBW-AUTOGEN
  56248. ></RBW-MARKER
  56249. ><RBW-PARABODY>PC platforms</RBW-PARABODY
  56250. ></LB.LIST.BULLET
  56251. ></LABEL
  56252. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56253. >In this section</L.LABEL
  56254. ><B.BODY>This section contains the following topics:</B.BODY
  56255. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  56256. ></ENTRY
  56257. ></RBW-ROW
  56258. ></THEAD
  56259. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32104" TYPE="XREF-TEXTCOPY">SQL: Database Table Creation&rbwtab;D–55</RBW-XREF
  56260. ></SB.SECTION.BLOCK.TABLE
  56261. ></ENTRY
  56262. ></RBW-ROW
  56263. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40113" TYPE="XREF-TEXTCOPY">SQL: Database Procedure Creation&rbwtab;D–56</RBW-XREF
  56264. ></SB.SECTION.BLOCK.TABLE
  56265. ></ENTRY
  56266. ></RBW-ROW
  56267. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19689" TYPE="XREF-TEXTCOPY">Dynamic SQL Features&rbwtab;D–60</RBW-XREF
  56268. ></SB.SECTION.BLOCK.TABLE
  56269. ></ENTRY
  56270. ></RBW-ROW
  56271. ></TBODY
  56272. ></TGROUP
  56273. ></RBW-TABLE
  56274. ></LABEL
  56275. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="Microsoft SQL-Server" TERM2="SQL features"></RBW-IDXTERM
  56276. ><RBW-IDXTERM TERM1="SQL generation" TERM2="for Microsoft SQL-Server"></RBW-IDXTERM
  56277. ><RBW-ANCHOR ID="32104"></RBW-ANCHOR
  56278. >SQL: Database Table Creation</SS.SUBSEC.HEAD
  56279. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56280. >Features</L.LABEL
  56281. ><B.BODY>When using Microsoft SQL&truehy;Server, you should be aware of the following notes concerning the generation of table definitions in ObjectTeam:</B.BODY
  56282. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56283. ></RBW-AUTOGEN
  56284. ></RBW-MARKER
  56285. ><RBW-PARABODY>Column constraints can be added to column definitions.</RBW-PARABODY
  56286. ></LB.LIST.BULLET
  56287. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56288. ></RBW-AUTOGEN
  56289. ></RBW-MARKER
  56290. ><RBW-PARABODY>Table constraints can be added to table definitions.</RBW-PARABODY
  56291. ></LB.LIST.BULLET
  56292. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56293. ></RBW-AUTOGEN
  56294. ></RBW-MARKER
  56295. ><RBW-PARABODY>The <CX5FX5FINPUT>PRIMARY KEY</CX5FX5FINPUT
  56296. > constraint is generated as part of the table definition. </RBW-PARABODY
  56297. ></LB.LIST.BULLET
  56298. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56299. ></RBW-AUTOGEN
  56300. ></RBW-MARKER
  56301. ><RBW-PARABODY>In the <CX5FX5FFILE.NAME>create_tables.sql</CX5FX5FFILE.NAME
  56302. > script, <CX5FX5FINPUT>ALTER TABLE</CX5FX5FINPUT
  56303. > statements are generated to add the <CX5FX5FINPUT>FOREIGN KEY</CX5FX5FINPUT
  56304. > constraints. </RBW-PARABODY
  56305. ></LB.LIST.BULLET
  56306. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56307. ></RBW-AUTOGEN
  56308. ></RBW-MARKER
  56309. ><RBW-PARABODY>No Transact&truehy;SQL code is generated to check on column and table constraints. Because the column and table constraints are included in the column and table definition, the database engine enforces these constraints. </RBW-PARABODY
  56310. ></LB.LIST.BULLET
  56311. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56312. ></RBW-AUTOGEN
  56313. ></RBW-MARKER
  56314. ><RBW-PARABODY>No Transact&truehy;SQL code is generated for referential integrity constraints that are enforced by the database engine (through <CX5FX5FINPUT>FOREIGN KEY</CX5FX5FINPUT
  56315. > constraints).</RBW-PARABODY
  56316. ></LB.LIST.BULLET
  56317. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56318. ></RBW-AUTOGEN
  56319. ></RBW-MARKER
  56320. ><RBW-PARABODY>For each table, a <CX5FX5FINPUT>CREATE TABLE</CX5FX5FINPUT
  56321. > statement is generated, containing all columns and the following constraints: <CX5FX5FINPUT>NULL</CX5FX5FINPUT
  56322. >, <CX5FX5FINPUT>NOT NULL</CX5FX5FINPUT
  56323. >, <CX5FX5FINPUT>CHECK</CX5FX5FINPUT
  56324. >, and <CX5FX5FINPUT>PRIMARY KEY</CX5FX5FINPUT
  56325. >. Foreign keys are generated using the <CX5FX5FINPUT>ALTER TABLE</CX5FX5FINPUT
  56326. > command.</RBW-PARABODY
  56327. ></LB.LIST.BULLET
  56328. ></LABEL
  56329. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56330. >Numbering <RBW-IDXTERM TERM1="key fields" TERM2="numbering - in Microsoft SQL-Server"></RBW-IDXTERM
  56331. ><RBW-IDXTERM TERM1="serial" TERM2="standard type for Microsoft SQL-Server"></RBW-IDXTERM
  56332. >key fields (serial)</L.LABEL
  56333. ><B.BODY>Microsoft SQL&truehy;Server supports the serial (identity) type, which can be used for the automatic generation of unique numbers for key fields. ObjectTeam offers the standard type <CX5FX5FOBJECT.NAME>serial</CX5FX5FOBJECT.NAME
  56334. > to support this feature. </B.BODY
  56335. ><B.BODY>You can apply the type <CX5FX5FOBJECT.NAME>serial</CX5FX5FOBJECT.NAME
  56336. > to only one field a table. Fields to which this type is applied cannot be updated. Foreign keys referencing a serial type are translated to the type <CX5FX5FINPUT>INTEGER</CX5FX5FINPUT
  56337. >.</B.BODY
  56338. ></LABEL
  56339. ></SUBSECTION
  56340. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40113"></RBW-ANCHOR
  56341. >SQL: Database Procedure Creation</SS.SUBSEC.HEAD
  56342. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56343. ><RBW-IDXTERM TERM1="procedures" TERM2="stored - in Microsoft SQL-Server"></RBW-IDXTERM
  56344. >Stored procedures</L.LABEL
  56345. ><B.BODY>Microsoft SQL&truehy;Server supports stored procedures. These procedures are written in Transact&truehy;SQL and stored in the database. For every table definition that is generated, stored procedures are generated that handle the database operations <CX5FX5FTITLE>delete</CX5FX5FTITLE
  56346. >, <CX5FX5FTITLE>insert</CX5FX5FTITLE
  56347. > and <CX5FX5FTITLE>update</CX5FX5FTITLE
  56348. >.</B.BODY
  56349. ><B.BODY>The names of these stored procedures are as follows:</B.BODY
  56350. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56351. ></RBW-AUTOGEN
  56352. ></RBW-MARKER
  56353. ><RBW-PARABODY>pdel_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56354. > </RBW-PARABODY
  56355. ></LB.LIST.BULLET
  56356. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56357. ></RBW-AUTOGEN
  56358. ></RBW-MARKER
  56359. ><RBW-PARABODY>pins_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56360. > </RBW-PARABODY
  56361. ></LB.LIST.BULLET
  56362. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56363. ></RBW-AUTOGEN
  56364. ></RBW-MARKER
  56365. ><RBW-PARABODY>pupd_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56366. > </RBW-PARABODY
  56367. ></LB.LIST.BULLET
  56368. ><B.BODY>Transact&truehy;SQL procedures generally consist of a basic query, which can be preceded by referential integrity checks that are not enforced by the database engine. An example of a basic query is:</B.BODY
  56369. ><E.EXAMPLE>DELETE</E.EXAMPLE
  56370. ><E.EXAMPLE>FROM person</E.EXAMPLE
  56371. ><E.EXAMPLE>WHERE p_number=number</E.EXAMPLE
  56372. ></LABEL
  56373. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56374. >Referential <RBW-IDXTERM TERM1="referential integrity" TERM2="in Microsoft SQL-Server"></RBW-IDXTERM
  56375. ><RBW-IDXTERM TERM1="Microsoft SQL-Server" TERM2="referential integrity"></RBW-IDXTERM
  56376. >Integrity (RI)</L.LABEL
  56377. ><B.BODY>To implement referential integrity that is not enforced by the database engine, ObjectTeam generates Transact&truehy;SQL procedures. </B.BODY
  56378. ><B.BODY>Referential integrity rules are obtained from the SQL Model (see the <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  56379. ><CX5FX5FTITLE></CX5FX5FTITLE
  56380. >), where they are specified by links between tables. If a rule cannot be implemented, the procedure that should contain the rule is not generated and a warning message is issued. In that case, you have to implement the procedure manually.</B.BODY
  56381. ></LABEL
  56382. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56383. >Supported RI rules</L.LABEL
  56384. ><B.BODY>On the following pages, every referential integrity rule is briefly discussed:</B.BODY
  56385. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56386. ></RBW-AUTOGEN
  56387. ></RBW-MARKER
  56388. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on not exist expkey in detail.</CX5FX5FBULLET.EMPHASIS
  56389. > This rule cannot be implemented. Microsoft SQL&truehy;Server prohibits the occurrence of foreign keys that do not exist in the master table. </RBW-PARABODY
  56390. ></LB.LIST.BULLET
  56391. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56392. ></RBW-AUTOGEN
  56393. ></RBW-MARKER
  56394. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on not exist impkey in master.</CX5FX5FBULLET.EMPHASIS
  56395. > This rule is enforced by Microsoft SQL&truehy;Server through FOREIGN KEY CONSTRAINT.</RBW-PARABODY
  56396. ></LB.LIST.BULLET
  56397. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56398. ></RBW-AUTOGEN
  56399. ></RBW-MARKER
  56400. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on exist expkey in detail.</CX5FX5FBULLET.EMPHASIS
  56401. > This rule is enforced by Microsoft SQL&truehy;Server through FOREIGN KEY CONSTRAINT. </RBW-PARABODY
  56402. ></LB.LIST.BULLET
  56403. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56404. ></RBW-AUTOGEN
  56405. ></RBW-MARKER
  56406. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on exist impkey in master.</CX5FX5FBULLET.EMPHASIS
  56407. > This rule must be executed before the query. To check this rule, the entire row is needed. Because Microsoft SQL&truehy;Server enforces the existence of a non&truehy;NULL imported key, you only need to test if the impkey is NULL. The following code is generated: </RBW-PARABODY
  56408. ></LB.LIST.BULLET
  56409. ><EM.EXAMPLE.MONO>IF <impkey> IS NOT NULL</EM.EXAMPLE.MONO
  56410. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  56411. ><EM.EXAMPLE.MONO>   RAISEERROR (‘Referential integrity</EM.EXAMPLE.MONO
  56412. ><EM.EXAMPLE.MONO>   violated’,16,&truehy;1)</EM.EXAMPLE.MONO
  56413. ><EM.EXAMPLE.MONO>END</EM.EXAMPLE.MONO
  56414. ><LT.LIST.TEXT>In case of an <CX5FX5FTITLE>update</CX5FX5FTITLE
  56415. >, the code generator tests if the old impkey is not NULL. This means that for an <CX5FX5FTITLE>update</CX5FX5FTITLE
  56416. > the old row. needs to be fetched.</LT.LIST.TEXT
  56417. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56418. ></RBW-AUTOGEN
  56419. ></RBW-MARKER
  56420. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on last impkey in current table.</CX5FX5FBULLET.EMPHASIS
  56421. > This rule needs the entire row and is checked before the query. The following code is generated: </RBW-PARABODY
  56422. ></LB.LIST.BULLET
  56423. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  56424. ><EM.EXAMPLE.MONO>      IF (SELECT COUNT(*) FROM </EM.EXAMPLE.MONO
  56425. ><EM.EXAMPLE.MONO>      <current table></EM.EXAMPLE.MONO
  56426. ><EM.EXAMPLE.MONO>         WHERE <table.impkey = row.impkey>)</EM.EXAMPLE.MONO
  56427. ><EM.EXAMPLE.MONO>            = 1</EM.EXAMPLE.MONO
  56428. ><EM.EXAMPLE.MONO>      BEGIN</EM.EXAMPLE.MONO
  56429. ><EM.EXAMPLE.MONO>         RAISERROR(’Referential integrity</EM.EXAMPLE.MONO
  56430. ><EM.EXAMPLE.MONO>         violated’,16,&truehy;1)</EM.EXAMPLE.MONO
  56431. ><EM.EXAMPLE.MONO>      END</EM.EXAMPLE.MONO
  56432. ><EM.EXAMPLE.MONO>END</EM.EXAMPLE.MONO
  56433. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56434. ></RBW-AUTOGEN
  56435. ></RBW-MARKER
  56436. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on last impkey in master.</CX5FX5FBULLET.EMPHASIS
  56437. > This rule is implemented in the same way as in the <CX5FX5FTITLE>Reject on exist impkey in master</CX5FX5FTITLE
  56438. > rule.</RBW-PARABODY
  56439. ></LB.LIST.BULLET
  56440. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56441. ></RBW-AUTOGEN
  56442. ></RBW-MARKER
  56443. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Insert in master impkey.</CX5FX5FBULLET.EMPHASIS
  56444. > The following code is generated: </RBW-PARABODY
  56445. ></LB.LIST.BULLET
  56446. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  56447. ><EM.EXAMPLE.MONO>   IF (SELECT COUNT(*) FROM <current table></EM.EXAMPLE.MONO
  56448. ><EM.EXAMPLE.MONO>      WHERE <table.impkey = row.impkey>) = 0</EM.EXAMPLE.MONO
  56449. ><EM.EXAMPLE.MONO>   BEGIN</EM.EXAMPLE.MONO
  56450. ><EM.EXAMPLE.MONO>      EXEC pins_<current table> <values></EM.EXAMPLE.MONO
  56451. ><EM.EXAMPLE.MONO>   END</EM.EXAMPLE.MONO
  56452. ><EM.EXAMPLE.MONO>END</EM.EXAMPLE.MONO
  56453. ><LT.LIST.TEXT>To process this rule, non&truehy;key columns in the master table must be nullable. This cannot be checked during generation, but Microsoft SQL&truehy;Server will issue a runtime error. </LT.LIST.TEXT
  56454. ><LT.LIST.TEXT>Besides, this cascade&truehy;<CX5FX5FTITLE>insert</CX5FX5FTITLE
  56455. > is an operation that is subject to other referential integrity rules. The following rules are applicable for <CX5FX5FTITLE>insert</CX5FX5FTITLE
  56456. >: </LT.LIST.TEXT
  56457. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56458. ></RBW-MARKER
  56459. ><RBW-PARABODY><CX5FX5FTITLE>reject on not exist expkey in detail</CX5FX5FTITLE
  56460. > </RBW-PARABODY
  56461. ></LB2.LIST.BULLET.2
  56462. ><LT2.LIST.TEXT.2>This operation is not supported. </LT2.LIST.TEXT.2
  56463. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56464. ></RBW-MARKER
  56465. ><RBW-PARABODY><CX5FX5FTITLE>reject on exist impkey in master</CX5FX5FTITLE
  56466. > </RBW-PARABODY
  56467. ></LB2.LIST.BULLET.2
  56468. ><LT2.LIST.TEXT.2>This is handled by Microsoft SQL&truehy;Server.</LT2.LIST.TEXT.2
  56469. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56470. ></RBW-MARKER
  56471. ><RBW-PARABODY><CX5FX5FTITLE>insert in master impkey</CX5FX5FTITLE
  56472. > </RBW-PARABODY
  56473. ></LB2.LIST.BULLET.2
  56474. ><LT2.LIST.TEXT.2>This action can only be supported if the <CX5FX5FINPUT>impkey</CX5FX5FINPUT
  56475. > is equal to the <CX5FX5FINPUT>key</CX5FX5FINPUT
  56476. >. If this is not the case, it will result in a runtime Microsoft SQL&truehy;Server error. </LT2.LIST.TEXT.2
  56477. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56478. ></RBW-AUTOGEN
  56479. ></RBW-MARKER
  56480. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Delete in detail expkey</CX5FX5FBULLET.EMPHASIS
  56481. >. This rule is executed before the master is deleted. The following code is generated:</RBW-PARABODY
  56482. ></LB.LIST.BULLET
  56483. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  56484. ><EM.EXAMPLE.MONO>   <definition of local key></EM.EXAMPLE.MONO
  56485. ><EM.EXAMPLE.MONO>   DECLARE <detail>_cursor CURSOR FOR</EM.EXAMPLE.MONO
  56486. ><EM.EXAMPLE.MONO>      SELECT <detail key></EM.EXAMPLE.MONO
  56487. ><EM.EXAMPLE.MONO>      FROM <detail></EM.EXAMPLE.MONO
  56488. ><EM.EXAMPLE.MONO>      WHERE <detail.impkey = master.impkey></EM.EXAMPLE.MONO
  56489. ><EM.EXAMPLE.MONO>   OPEN <detail>_cursor</EM.EXAMPLE.MONO
  56490. ><EM.EXAMPLE.MONO>   FETCH NEXT FROM <detail>_cursor</EM.EXAMPLE.MONO
  56491. ><EM.EXAMPLE.MONO>   INTO <local key></EM.EXAMPLE.MONO
  56492. ><EM.EXAMPLE.MONO>   WHILE (@@FETCH_STATUS <> &truehy;1)</EM.EXAMPLE.MONO
  56493. ><EM.EXAMPLE.MONO>   BEGIN</EM.EXAMPLE.MONO
  56494. ><EM.EXAMPLE.MONO>      IF (@@FETCH_STATUS <> &truehy;2)</EM.EXAMPLE.MONO
  56495. ><EM.EXAMPLE.MONO>         EXEC pdel_<detail> <local key></EM.EXAMPLE.MONO
  56496. ><EM.EXAMPLE.MONO>      FETCH NEXT FROM <detail>_cursor</EM.EXAMPLE.MONO
  56497. ><EM.EXAMPLE.MONO>         INTO <local key></EM.EXAMPLE.MONO
  56498. ><EM.EXAMPLE.MONO>   END</EM.EXAMPLE.MONO
  56499. ><EM.EXAMPLE.MONO>   CLOSE <detail>_cursor</EM.EXAMPLE.MONO
  56500. ><EM.EXAMPLE.MONO>   DEALLOCATE <detail>_cursor</EM.EXAMPLE.MONO
  56501. ><EM.EXAMPLE.MONO>END</EM.EXAMPLE.MONO
  56502. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56503. ></RBW-AUTOGEN
  56504. ></RBW-MARKER
  56505. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Delete in master impkey</CX5FX5FBULLET.EMPHASIS
  56506. >. This is a special case: the rule should be executed <CX5FX5FEMPHASIS>after</CX5FX5FEMPHASIS
  56507. > the query, otherwise references from the detail to the master may still exist. For this rule, the entire tuple is needed. The following code is generated: </RBW-PARABODY
  56508. ></LB.LIST.BULLET
  56509. ><E.EXAMPLE>DELETE</E.EXAMPLE
  56510. ><E.EXAMPLE>FROM <master></E.EXAMPLE
  56511. ><E.EXAMPLE>WHERE <key = master.impkey>;</E.EXAMPLE
  56512. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56513. ></RBW-AUTOGEN
  56514. ></RBW-MARKER
  56515. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Update in detail expkey</CX5FX5FBULLET.EMPHASIS
  56516. >. Updating of key values is not supported.</RBW-PARABODY
  56517. ></LB.LIST.BULLET
  56518. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56519. ></RBW-AUTOGEN
  56520. ></RBW-MARKER
  56521. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Nullify expkey in detail</CX5FX5FBULLET.EMPHASIS
  56522. >. This rule is executed before the query. The following code is generated: </RBW-PARABODY
  56523. ></LB.LIST.BULLET
  56524. ><E.EXAMPLE>UPDATE <detail></E.EXAMPLE
  56525. ><E.EXAMPLE>SET <expkey> = NULL</E.EXAMPLE
  56526. ><E.EXAMPLE>WHERE <key = detail.expkey>;</E.EXAMPLE
  56527. ></LABEL
  56528. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56529. ><RBW-IDXTERM TERM1="data type" TERM2="in Microsoft SQL-Server"></RBW-IDXTERM
  56530. >SQL types and C++ types</L.LABEL
  56531. ><LT.LIST.TEXT>During code generation, the code generator needs to know how SQL types must be converted to C++ types and vice versa. The required information is stored in the customization file <CX5FX5FFILE.NAME>db_binding.db_binding</CX5FX5FFILE.NAME
  56532. >, which can be found in the directory <CX5FX5FTERM><RBW-IDXTERM TERM1="db_binding"></RBW-IDXTERM
  56533. >M4_home</CX5FX5FTERM
  56534. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  56535. >\<CX5FX5FFILE.NAME>pers&truehy;cpp&truehy;mss</CX5FX5FFILE.NAME
  56536. >\<CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  56537. >.</LT.LIST.TEXT
  56538. ><LT.LIST.TEXT>This file contains three columns:</LT.LIST.TEXT
  56539. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56540. ></RBW-MARKER
  56541. ><RBW-PARABODY><CX5FX5FINPUT>standard type</CX5FX5FINPUT
  56542. > </RBW-PARABODY
  56543. ></LB2.LIST.BULLET.2
  56544. ><LT2.LIST.TEXT.2>This column corresponds to columns by the same name in the customization files <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  56545. >, <CX5FX5FFILE.NAME>db_types</CX5FX5FFILE.NAME
  56546. > and <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  56547. >.</LT2.LIST.TEXT.2
  56548. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56549. ></RBW-MARKER
  56550. ><RBW-PARABODY><CX5FX5FINPUT>SQL binding</CX5FX5FINPUT
  56551. > </RBW-PARABODY
  56552. ></LB2.LIST.BULLET.2
  56553. ><LT2.LIST.TEXT.2>This column contains a <CX5FX5FINPUT>vartype</CX5FX5FINPUT
  56554. >, as defined in the description of <CX5FX5FINPUT>dbbind</CX5FX5FINPUT
  56555. > in the <CX5FX5FTITLE>Microsoft SQL Server Programming DB&truehy;Library for C manual</CX5FX5FTITLE
  56556. >.</LT2.LIST.TEXT.2
  56557. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56558. ></RBW-MARKER
  56559. ><RBW-PARABODY><CX5FX5FINPUT>Format String</CX5FX5FINPUT
  56560. > </RBW-PARABODY
  56561. ></LB2.LIST.BULLET.2
  56562. ><LT2.LIST.TEXT.2>This column contains a simple format string similar to C&truehy;printf.</LT2.LIST.TEXT.2
  56563. ></LABEL
  56564. ></SUBSECTION
  56565. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="Microsoft SQL-Server" TERM2="Dynamic SQL features"></RBW-IDXTERM
  56566. ><RBW-IDXTERM TERM1="Dynamic SQL" TERM2="generated for Microsoft SQL-Server"></RBW-IDXTERM
  56567. ><RBW-ANCHOR ID="19689"></RBW-ANCHOR
  56568. >Dynamic SQL Features</SS.SUBSEC.HEAD
  56569. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56570. >Introduction</L.LABEL
  56571. ><B.BODY>All SQL statements are processed dynamically using <CX5FX5FPROCEDURE.NAME>db...</CX5FX5FPROCEDURE.NAME
  56572. > functions from the DB&truehy;library. These functions need to connect to the database. Because only one query at a time can be done on a single connection, a second connection is needed for all functions returning a set of objects.</B.BODY
  56573. ><B.BODY>When using Microsoft SQL&truehy;Server, you should be aware of the following notes regarding the generation of Dynamic SQL (ESQL) in ObjectTeam.</B.BODY
  56574. ></LABEL
  56575. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56576. ><RBW-IDXTERM TERM1="C++ compiler" TERM2="for Microsoft SQL-Server"></RBW-IDXTERM
  56577. >C++ compiler</L.LABEL
  56578. ><B.BODY>The code generated by the code generator of ObjectTeam can only be compiled with a Microsoft Visual C++ compatible compiler.</B.BODY
  56579. ></LABEL
  56580. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56581. ><RBW-IDXTERM TERM1="Microsoft SQL-Server" TERM2="runtime environment variables"></RBW-IDXTERM
  56582. >Runtime features</L.LABEL
  56583. ><B.BODY>To execute an application that was compiled to work with a Microsoft SQL&truehy;Server database, the following environment variables must be set properly:</B.BODY
  56584. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56585. ></RBW-AUTOGEN
  56586. ></RBW-MARKER
  56587. ><RBW-PARABODY><CX5FX5FINPUT><RBW-IDXTERM TERM1="DBUSERNAME" TERM2="runtime environment variable for Microsoft SQL-Server"></RBW-IDXTERM
  56588. >DBUSERNAME</CX5FX5FINPUT
  56589. >. This variable must correspond to the user name you use to connect to the database.</RBW-PARABODY
  56590. ></LB.LIST.BULLET
  56591. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56592. ></RBW-AUTOGEN
  56593. ></RBW-MARKER
  56594. ><RBW-PARABODY><CX5FX5FINPUT><RBW-IDXTERM TERM1="DBPASSWD" TERM2="runtime environment variable for Microsoft SQL-Server"></RBW-IDXTERM
  56595. >DBPASSWD</CX5FX5FINPUT
  56596. >. This variable must correspond to the password required to connect the user specified by DBUSERNAME to the database.</RBW-PARABODY
  56597. ></LB.LIST.BULLET
  56598. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56599. ></RBW-AUTOGEN
  56600. ></RBW-MARKER
  56601. ><RBW-PARABODY><CX5FX5FINPUT><RBW-IDXTERM TERM1="DBSERVER" TERM2="runtime environment variable for Microsoft SQL-Server"></RBW-IDXTERM
  56602. >DBSERVER</CX5FX5FINPUT
  56603. >. This variable must correspond to the name of the server on which your database runs.</RBW-PARABODY
  56604. ></LB.LIST.BULLET
  56605. ></LABEL
  56606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56607. ><RBW-IDXTERM TERM1="Dynamic SQL" TERM2="files generated for Microsoft SQL-Server"></RBW-IDXTERM
  56608. >Generated Dynamic SQL files</L.LABEL
  56609. ><B.BODY>The following files are generated in your user environment by the Dynamic SQL generator:</B.BODY
  56610. ></LABEL
  56611. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56612. >Specific <RBW-IDXTERM TERM1="Tcl procedures" TERM2="Microsoft SQL-Server specific"></RBW-IDXTERM
  56613. >Tcl procedures</L.LABEL
  56614. ><B.BODY>A number of Tcl procedures specific to Microsoft SQL&truehy;Server are available, mainly to support dynamic SQL. The definition of these procedures can be found in the following file:</B.BODY
  56615. ><LT.LIST.TEXT><CX5FX5FTERM>M4_home</CX5FX5FTERM
  56616. >\tcl\t_mss\libmss.tcl </LT.LIST.TEXT
  56617. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="223p"><COLSPEC COLNAME="2" COLWIDTH="223p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl Procedure</CELLHEADING
  56618. ></ENTRY
  56619. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Explanation</CELLHEADING
  56620. ></ENTRY
  56621. ></RBW-ROW
  56622. ></THEAD
  56623. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>get_bind_typestd</CX5FX5FFILE.NAME
  56624. > <CX5FX5FTERM>typeStd</CX5FX5FTERM
  56625. > </CELLBODY
  56626. ></ENTRY
  56627. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Returns the handle of a bind&truehy;type entry from the file <CX5FX5FTERM>M4_home</CX5FX5FTERM
  56628. >\etc\ t_mss\db_binding.</CELLBODY
  56629. ><CELLBODY><CX5FX5FTITLE>typeStd</CX5FX5FTITLE
  56630. > is the name of the standard type.</CELLBODY
  56631. ></ENTRY
  56632. ></RBW-ROW
  56633. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>get_bind_entry</CX5FX5FFILE.NAME
  56634. > <CX5FX5FTERM>column</CX5FX5FTERM
  56635. > </CELLBODY
  56636. ></ENTRY
  56637. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Returns the handle of a bind&truehy;type entry from the file <CX5FX5FTERM>M4_home</CX5FX5FTERM
  56638. >\etc\t_mss\db_binding </CELLBODY
  56639. ></ENTRY
  56640. ></RBW-ROW
  56641. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>get_format_char</CX5FX5FFILE.NAME
  56642. > <CX5FX5FTERM>column</CX5FX5FTERM
  56643. > </CELLBODY
  56644. ></ENTRY
  56645. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Uses <CX5FX5FFILE.NAME>get_bind_entry</CX5FX5FFILE.NAME
  56646. > to get the handle and returns the format character, including the %. For example: ’<CX5FX5FTERM>%s’</CX5FX5FTERM
  56647. > or ‘<CX5FX5FTERM>%d’</CX5FX5FTERM
  56648. >.</CELLBODY
  56649. ></ENTRY
  56650. ></RBW-ROW
  56651. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>get_bind_type</CX5FX5FFILE.NAME
  56652. > <CX5FX5FTERM>column</CX5FX5FTERM
  56653. > </CELLBODY
  56654. ></ENTRY
  56655. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Uses <CX5FX5FFILE.NAME>get_bind_entry</CX5FX5FFILE.NAME
  56656. > to get the handle and returns the bind type. For example: <CX5FX5FTITLE>NTBSTRINGBIND</CX5FX5FTITLE
  56657. > or <CX5FX5FTITLE>INTBIND</CX5FX5FTITLE
  56658. >. </CELLBODY
  56659. ></ENTRY
  56660. ></RBW-ROW
  56661. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>mss_gen_compare</CX5FX5FFILE.NAME
  56662. > <CX5FX5FTERM>sect table ?selector? ?prefix1? ?postfix1? ?prefix2? ?postfix2? ?separator? ?newline? ?master_table? ?dbproc?</CX5FX5FTERM
  56663. > </CELLBODY
  56664. ></ENTRY
  56665. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generates a list of <CX5FX5FFILE.NAME>dbfcmd</CX5FX5FFILE.NAME
  56666. > functions: one for each column. Each of these functions lists one <CX5FX5FFILE.NAME>compare</CX5FX5FFILE.NAME
  56667. >. </CELLBODY
  56668. ><CELLBODY>Only the columns that match the <CX5FX5FTERM>selector</CX5FX5FTERM
  56669. > are used.</CELLBODY
  56670. ></ENTRY
  56671. ></RBW-ROW
  56672. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>mss_gen_compare_cl</CX5FX5FFILE.NAME
  56673. > <CX5FX5FTERM>sect table ?prefix1? ?postfix1? ?prefix2? ?postfix2? ?separator? ?newline? ?dbproc?</CX5FX5FTERM
  56674. > </CELLBODY
  56675. ></ENTRY
  56676. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generates a list of <CX5FX5FPROCEDURE.NAME>dbfcmd</CX5FX5FPROCEDURE.NAME
  56677. > functions: one for each column. Each of these functions lists one <CX5FX5FPROCEDURE.NAME>compare</CX5FX5FPROCEDURE.NAME
  56678. >. </CELLBODY
  56679. ><CELLBODY>All columns are used.</CELLBODY
  56680. ></ENTRY
  56681. ></RBW-ROW
  56682. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>mss_gen_binding</CX5FX5FFILE.NAME
  56683. > <CX5FX5FTERM>sect link ?prefix? ?postfix? ?selector? ?master_table? ?dbproc?</CX5FX5FTERM
  56684. > </CELLBODY
  56685. ></ENTRY
  56686. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Binds all columns matching the <CX5FX5FTITLE>selector</CX5FX5FTITLE
  56687. > to a variable. </CELLBODY
  56688. ></ENTRY
  56689. ></RBW-ROW
  56690. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>mss_gen_nbinding</CX5FX5FFILE.NAME
  56691. > <CX5FX5FTERM>sect link ?prefix? ?postfix? ?selector? ?master_table? ?dbproc?</CX5FX5FTERM
  56692. > </CELLBODY
  56693. ></ENTRY
  56694. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Binds all nulls of columns matching the selector to a variable. </CELLBODY
  56695. ></ENTRY
  56696. ></RBW-ROW
  56697. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>mss_gen_var_ind_list</CX5FX5FFILE.NAME
  56698. > <CX5FX5FTERM>sect table ?selector? ?prefix1? ?prefix2? ?prefix3? ?sep? ?master_table? ?dbproc?</CX5FX5FTERM
  56699. > </CELLBODY
  56700. ></ENTRY
  56701. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A special line is generated for each column that matches the <CX5FX5FTITLE>selector</CX5FX5FTITLE
  56702. >.</CELLBODY
  56703. ><CELLBODY>This line contains one <CX5FX5FTITLE>if</CX5FX5FTITLE
  56704. > statement checking if the column should be <CX5FX5FTITLE>NULL</CX5FX5FTITLE
  56705. >. If so, a <CX5FX5FPROCEDURE.NAME>dbcmd</CX5FX5FPROCEDURE.NAME
  56706. >(<CX5FX5FTITLE>....=NULL</CX5FX5FTITLE
  56707. >) is executed; otherwise, a <CX5FX5FPROCEDURE.NAME>dbfcmd</CX5FX5FPROCEDURE.NAME
  56708. >(<CX5FX5FTITLE>....,var</CX5FX5FTITLE
  56709. >) is executed. </CELLBODY
  56710. ></ENTRY
  56711. ></RBW-ROW
  56712. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FFILE.NAME>mss_sqlpostfix_needed</CX5FX5FFILE.NAME
  56713. > <CX5FX5FTERM>col</CX5FX5FTERM
  56714. > </CELLBODY
  56715. ></ENTRY
  56716. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Appends a <CX5FX5FTITLE>NOT NULL</CX5FX5FTITLE
  56717. >, <CX5FX5FTITLE>NULL</CX5FX5FTITLE
  56718. >, and/or <CX5FX5FTITLE>IDENTITY</CX5FX5FTITLE
  56719. > constraint to the column definitions in the generated file <CX5FX5FFILE.NAME>create_tables.sql</CX5FX5FFILE.NAME
  56720. >. </CELLBODY
  56721. ></ENTRY
  56722. ></RBW-ROW
  56723. ></TBODY
  56724. ></TGROUP
  56725. ></RBW-TABLE
  56726. ></LABEL
  56727. ></SUBSECTION
  56728. ></SECTION
  56729. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="42686"></RBW-ANCHOR
  56730. >Specific Features of <RBW-IDXTERM TERM1="Oracle"></RBW-IDXTERM
  56731. >Oracle (E)SQL</S.SECTION.HEAD
  56732. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56733. >Introduction</L.LABEL
  56734. ><B.BODY>Oracle is one of the Relational Database Management Systems (RDBMS) supported by the persistent code generation of ObjectTeam. In this section, some special features of Oracle SQL and Oracle Embedded SQL (ESQL) are discussed.</B.BODY
  56735. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  56736. ></RBW-AUTOGEN
  56737. >Make sure Oracle is configured properly before using it in combination with ObjectTeam. </N.NOTE
  56738. ></LABEL
  56739. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56740. >Supported platforms</L.LABEL
  56741. ><B.BODY>Persistent code generation for Oracle applies to:</B.BODY
  56742. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56743. ></RBW-AUTOGEN
  56744. ></RBW-MARKER
  56745. ><RBW-PARABODY>Unix&truehy;based platforms</RBW-PARABODY
  56746. ></LB.LIST.BULLET
  56747. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56748. ></RBW-AUTOGEN
  56749. ></RBW-MARKER
  56750. ><RBW-PARABODY>PC Platforms</RBW-PARABODY
  56751. ></LB.LIST.BULLET
  56752. ></LABEL
  56753. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56754. >In this section</L.LABEL
  56755. ><B.BODY>This section contains the following topics:</B.BODY
  56756. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  56757. ></ENTRY
  56758. ></RBW-ROW
  56759. ></THEAD
  56760. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12877" TYPE="XREF-TEXTCOPY">SQL: Database Table Creation&rbwtab;D–64</RBW-XREF
  56761. ></SB.SECTION.BLOCK.TABLE
  56762. ></ENTRY
  56763. ></RBW-ROW
  56764. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12256" TYPE="XREF-TEXTCOPY">SQL: Database Procedure Creation&rbwtab;D–65</RBW-XREF
  56765. ></SB.SECTION.BLOCK.TABLE
  56766. ></ENTRY
  56767. ></RBW-ROW
  56768. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25953" TYPE="XREF-TEXTCOPY">ESQL Features&rbwtab;D–69</RBW-XREF
  56769. ></SB.SECTION.BLOCK.TABLE
  56770. ></ENTRY
  56771. ></RBW-ROW
  56772. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40306" TYPE="XREF-TEXTCOPY">Specific Built&truehy;in Tcl Commands&rbwtab;D–70</RBW-XREF
  56773. ></SB.SECTION.BLOCK.TABLE
  56774. ></ENTRY
  56775. ></RBW-ROW
  56776. ></TBODY
  56777. ></TGROUP
  56778. ></RBW-TABLE
  56779. ></LABEL
  56780. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="Oracle" TERM2="SQL features"></RBW-IDXTERM
  56781. ><RBW-IDXTERM TERM1="SQL generation" TERM2="for Oracle"></RBW-IDXTERM
  56782. ><RBW-ANCHOR ID="12877"></RBW-ANCHOR
  56783. >SQL: Database Table Creation </SS.SUBSEC.HEAD
  56784. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56785. >Features</L.LABEL
  56786. ><B.BODY>‘When using Oracle, you should be aware of the following notes regarding the generation of table definitions in ObjectTeam:</B.BODY
  56787. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56788. ></RBW-AUTOGEN
  56789. ></RBW-MARKER
  56790. ><RBW-PARABODY>Column constraints can be added to column definitions.</RBW-PARABODY
  56791. ></LB.LIST.BULLET
  56792. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56793. ></RBW-AUTOGEN
  56794. ></RBW-MARKER
  56795. ><RBW-PARABODY>Table constraints can be added to table definitions.</RBW-PARABODY
  56796. ></LB.LIST.BULLET
  56797. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56798. ></RBW-AUTOGEN
  56799. ></RBW-MARKER
  56800. ><RBW-PARABODY>The <CX5FX5FINPUT>PRIMARY KEY</CX5FX5FINPUT
  56801. > constraint is generated as part of the table definition.</RBW-PARABODY
  56802. ></LB.LIST.BULLET
  56803. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56804. ></RBW-AUTOGEN
  56805. ></RBW-MARKER
  56806. ><RBW-PARABODY>The <CX5FX5FINPUT>ALTER TABLE</CX5FX5FINPUT
  56807. > statement is generated to add <CX5FX5FINPUT>FOREIGN KEY</CX5FX5FINPUT
  56808. > constraints.</RBW-PARABODY
  56809. ></LB.LIST.BULLET
  56810. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56811. ></RBW-AUTOGEN
  56812. ></RBW-MARKER
  56813. ><RBW-PARABODY>As column and table constraints are included in the column and table definitions respectively, no PL/SQL code is generated to check on column and table constraints. The database engine enforces these constraints.</RBW-PARABODY
  56814. ></LB.LIST.BULLET
  56815. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56816. ></RBW-AUTOGEN
  56817. ></RBW-MARKER
  56818. ><RBW-PARABODY>Similarly, no PL/SQL is generated for referential integrity constraints that are enforced by the database engine through <CX5FX5FINPUT>FOREIGN KEY</CX5FX5FINPUT
  56819. > constraints.</RBW-PARABODY
  56820. ></LB.LIST.BULLET
  56821. ></LABEL
  56822. ></SUBSECTION
  56823. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12256"></RBW-ANCHOR
  56824. >SQL: Database Procedure Creation</SS.SUBSEC.HEAD
  56825. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56826. >Stored <RBW-IDXTERM TERM1="procedures" TERM2="stored - in Oracle"></RBW-IDXTERM
  56827. >procedures</L.LABEL
  56828. ><B.BODY>Oracle supports stored procedures. These procedures are written in PL/SQL and stored in the database. For every table definition that is generated, stored procedures are generated that handle the database operations <CX5FX5FTITLE>delete</CX5FX5FTITLE
  56829. >, <CX5FX5FTITLE>insert</CX5FX5FTITLE
  56830. > and <CX5FX5FTITLE>update</CX5FX5FTITLE
  56831. >.</B.BODY
  56832. ><B.BODY>The names of these stored procedures are:</B.BODY
  56833. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56834. ></RBW-AUTOGEN
  56835. ></RBW-MARKER
  56836. ><RBW-PARABODY>pdel_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56837. > </RBW-PARABODY
  56838. ></LB.LIST.BULLET
  56839. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56840. ></RBW-AUTOGEN
  56841. ></RBW-MARKER
  56842. ><RBW-PARABODY>pins_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56843. > </RBW-PARABODY
  56844. ></LB.LIST.BULLET
  56845. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56846. ></RBW-AUTOGEN
  56847. ></RBW-MARKER
  56848. ><RBW-PARABODY>pupd_<CX5FX5FTERM>table_name</CX5FX5FTERM
  56849. > </RBW-PARABODY
  56850. ></LB.LIST.BULLET
  56851. ><B.BODY>PL/SQL procedures generally consist of a basic query, which can be preceded by referential integrity checks that are not enforced by the database engine. An example of a basic query is:</B.BODY
  56852. ><EM.EXAMPLE.MONO>DELETE</EM.EXAMPLE.MONO
  56853. ><EM.EXAMPLE.MONO>FROM person</EM.EXAMPLE.MONO
  56854. ><EM.EXAMPLE.MONO>WHERE p_number=number</EM.EXAMPLE.MONO
  56855. ></LABEL
  56856. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56857. >Referential <RBW-IDXTERM TERM1="referential integrity" TERM2="in Oracle"></RBW-IDXTERM
  56858. ><RBW-IDXTERM TERM1="Oracle" TERM2="referential integrity"></RBW-IDXTERM
  56859. >Integrity (RI)</L.LABEL
  56860. ><B.BODY>To implement referential integrity that is not enforced by the database engine, ObjectTeam generates PL/SQL procedures. </B.BODY
  56861. ><B.BODY>Referential integrity rules are obtained from the SQL Model (see the <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  56862. ><CX5FX5FTITLE></CX5FX5FTITLE
  56863. >), where they are specified by links between tables. If a rule cannot be implemented, the procedure that should contain the rule is not generated and a warning message is issued. In that case, you have to implement the procedure manually.</B.BODY
  56864. ><B.BODY>For a number of rules checked during the <CX5FX5FTITLE>delete</CX5FX5FTITLE
  56865. > operation, all fields must be available. If such a rule occurs, the following code is generated:</B.BODY
  56866. ><EM.EXAMPLE.MONO><definition of extra local variables></EM.EXAMPLE.MONO
  56867. ><EM.EXAMPLE.MONO>SELECT <nonkeys></EM.EXAMPLE.MONO
  56868. ><EM.EXAMPLE.MONO>INTO <extra local variables></EM.EXAMPLE.MONO
  56869. ><EM.EXAMPLE.MONO>FROM <table to delete from></EM.EXAMPLE.MONO
  56870. ><EM.EXAMPLE.MONO>WHERE <key=passed key>;</EM.EXAMPLE.MONO
  56871. ></LABEL
  56872. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  56873. >Supported RI rules</L.LABEL
  56874. ><B.BODY>On the following pages, every referential integrity rule is briefly discussed:</B.BODY
  56875. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56876. ></RBW-AUTOGEN
  56877. ></RBW-MARKER
  56878. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on not exist expkey in detail</CX5FX5FBULLET.EMPHASIS
  56879. >. This rule cannot be implemented. Oracle prohibits the occurrence of foreign keys that do not exist in the master table. </RBW-PARABODY
  56880. ></LB.LIST.BULLET
  56881. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56882. ></RBW-AUTOGEN
  56883. ></RBW-MARKER
  56884. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on not exist impkey in master</CX5FX5FBULLET.EMPHASIS
  56885. >. This rule is enforced by Oracle through FOREIGN KEY CONSTRAINT.</RBW-PARABODY
  56886. ></LB.LIST.BULLET
  56887. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56888. ></RBW-AUTOGEN
  56889. ></RBW-MARKER
  56890. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on exist expkey in detail</CX5FX5FBULLET.EMPHASIS
  56891. >. This rule is enforced by Oracle (<CX5FX5FINPUT>FOREIGN KEY CONSTRAINT</CX5FX5FINPUT
  56892. >). </RBW-PARABODY
  56893. ></LB.LIST.BULLET
  56894. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56895. ></RBW-AUTOGEN
  56896. ></RBW-MARKER
  56897. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on exist impkey in master</CX5FX5FBULLET.EMPHASIS
  56898. >. This rule must be executed before the query. To check this rule, the entire row is needed. Because Oracle enforces the existence of a non&truehy;NULL imported key, you only need to test if the impkey is NULL. The following code is generated: </RBW-PARABODY
  56899. ></LB.LIST.BULLET
  56900. ><EM.EXAMPLE.MONO>IF <impkey> IS NOT NULL THEN</EM.EXAMPLE.MONO
  56901. ><EM.EXAMPLE.MONO>RAISE DUP_VAL_ON_INDEX;</EM.EXAMPLE.MONO
  56902. ><EM.EXAMPLE.MONO>END IF;</EM.EXAMPLE.MONO
  56903. ><LT.LIST.TEXT>In the case of an <CX5FX5FTITLE>update</CX5FX5FTITLE
  56904. >, you test if the old impkey is not NULL. This means that for an <CX5FX5FTITLE>update</CX5FX5FTITLE
  56905. > you need to fetch the old row. </LT.LIST.TEXT
  56906. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56907. ></RBW-AUTOGEN
  56908. ></RBW-MARKER
  56909. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on last impkey in current table</CX5FX5FBULLET.EMPHASIS
  56910. >. This rule needs the entire row and is checked before the query. The following code is generated: </RBW-PARABODY
  56911. ></LB.LIST.BULLET
  56912. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  56913. ><EM.EXAMPLE.MONO>   DECLARE</EM.EXAMPLE.MONO
  56914. ><EM.EXAMPLE.MONO>      counter INT;</EM.EXAMPLE.MONO
  56915. ><EM.EXAMPLE.MONO>   BEGIN</EM.EXAMPLE.MONO
  56916. ><EM.EXAMPLE.MONO>      SELECT COUNT(*)</EM.EXAMPLE.MONO
  56917. ><EM.EXAMPLE.MONO>      INTO counter</EM.EXAMPLE.MONO
  56918. ><EM.EXAMPLE.MONO>      FROM <current table></EM.EXAMPLE.MONO
  56919. ><EM.EXAMPLE.MONO>      WHERE <table.impkey = row.impkey>;</EM.EXAMPLE.MONO
  56920. ><EM.EXAMPLE.MONO>      IF counter = 1 THEN</EM.EXAMPLE.MONO
  56921. ><EM.EXAMPLE.MONO>         RAISE DUP_VAL_ON_INDEX;</EM.EXAMPLE.MONO
  56922. ><EM.EXAMPLE.MONO>      END IF;</EM.EXAMPLE.MONO
  56923. ><EM.EXAMPLE.MONO>   END;</EM.EXAMPLE.MONO
  56924. ><EM.EXAMPLE.MONO>END;</EM.EXAMPLE.MONO
  56925. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56926. ></RBW-AUTOGEN
  56927. ></RBW-MARKER
  56928. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on last impkey in master</CX5FX5FBULLET.EMPHASIS
  56929. >. This rule is implemented in the same way as in the <CX5FX5FTITLE>Reject on exist impkey in master</CX5FX5FTITLE
  56930. > rule.</RBW-PARABODY
  56931. ></LB.LIST.BULLET
  56932. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56933. ></RBW-AUTOGEN
  56934. ></RBW-MARKER
  56935. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Insert in master impkey</CX5FX5FBULLET.EMPHASIS
  56936. >. The following code is generated: </RBW-PARABODY
  56937. ></LB.LIST.BULLET
  56938. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  56939. ><EM.EXAMPLE.MONO>   DECLARE</EM.EXAMPLE.MONO
  56940. ><EM.EXAMPLE.MONO>      counter INT;</EM.EXAMPLE.MONO
  56941. ><EM.EXAMPLE.MONO>   BEGIN</EM.EXAMPLE.MONO
  56942. ><EM.EXAMPLE.MONO>      SELECT COUNT(*)</EM.EXAMPLE.MONO
  56943. ><EM.EXAMPLE.MONO>      INTO counter</EM.EXAMPLE.MONO
  56944. ><EM.EXAMPLE.MONO>      FROM <current table></EM.EXAMPLE.MONO
  56945. ><EM.EXAMPLE.MONO>      WHERE <table.impkey = row.impkey>;</EM.EXAMPLE.MONO
  56946. ><EM.EXAMPLE.MONO>      IF counter = 0 THEN</EM.EXAMPLE.MONO
  56947. ><EM.EXAMPLE.MONO>         INSERT INTO <current table></EM.EXAMPLE.MONO
  56948. ><EM.EXAMPLE.MONO>         VALUES <values>;</EM.EXAMPLE.MONO
  56949. ><EM.EXAMPLE.MONO>      END IF;</EM.EXAMPLE.MONO
  56950. ><EM.EXAMPLE.MONO>   END;</EM.EXAMPLE.MONO
  56951. ><EM.EXAMPLE.MONO>END;</EM.EXAMPLE.MONO
  56952. ><LT.LIST.TEXT>To process this rule, non&truehy;key columns in the master table must be nullable. This cannot be checked during generation, but Oracle will give a runtime error. </LT.LIST.TEXT
  56953. ><LT.LIST.TEXT>Besides, this cascade&truehy;<CX5FX5FTITLE>insert</CX5FX5FTITLE
  56954. > is an operation that is subject to other referential integrity rules. The following rules are applicable for <CX5FX5FTITLE>insert</CX5FX5FTITLE
  56955. >: </LT.LIST.TEXT
  56956. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56957. ></RBW-MARKER
  56958. ><RBW-PARABODY><CX5FX5FTITLE>reject on not exist expkey in detail</CX5FX5FTITLE
  56959. > </RBW-PARABODY
  56960. ></LB2.LIST.BULLET.2
  56961. ><LT2.LIST.TEXT.2>As already mentioned, it is not possible to support this operation. </LT2.LIST.TEXT.2
  56962. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56963. ></RBW-MARKER
  56964. ><RBW-PARABODY><CX5FX5FTITLE>reject on exist impkey in master</CX5FX5FTITLE
  56965. > </RBW-PARABODY
  56966. ></LB2.LIST.BULLET.2
  56967. ><LT2.LIST.TEXT.2>This is handled by Oracle.</LT2.LIST.TEXT.2
  56968. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  56969. ></RBW-MARKER
  56970. ><RBW-PARABODY><CX5FX5FTITLE>insert in master impkey</CX5FX5FTITLE
  56971. > </RBW-PARABODY
  56972. ></LB2.LIST.BULLET.2
  56973. ><LT2.LIST.TEXT.2>This action can only be supported if the <CX5FX5FINPUT>impkey</CX5FX5FINPUT
  56974. > is equal to the <CX5FX5FINPUT>key</CX5FX5FINPUT
  56975. >. If this is not the case, it will result in a runtime Oracle error. </LT2.LIST.TEXT.2
  56976. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56977. ></RBW-AUTOGEN
  56978. ></RBW-MARKER
  56979. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Delete in detail expkey</CX5FX5FBULLET.EMPHASIS
  56980. >. This rule is forced through an ALTER TABLE statement. Oracle will take care of the rest. </RBW-PARABODY
  56981. ></LB.LIST.BULLET
  56982. ><EWM.EXAMPLEW.MONO>ALTER TABLE <master></EWM.EXAMPLEW.MONO
  56983. ><EWM.EXAMPLEW.MONO>   ADD CONSTRAINT <constraint name></EWM.EXAMPLEW.MONO
  56984. ><EWM.EXAMPLEW.MONO>   FOREIGN KEY <foreign key> REFERENCES <detail> ON DELETE CASCADE;</EWM.EXAMPLEW.MONO
  56985. ><LT.LIST.TEXT>Using <CX5FX5FINPUT>ON DELETE CASCADE</CX5FX5FINPUT
  56986. > statements, a loop of cascade <CX5FX5FTITLE>delete</CX5FX5FTITLE
  56987. >s may occur. If a loop is detected during generation, a warning message is given and no <CX5FX5FINPUT>ON DELETE CASCADE</CX5FX5FINPUT
  56988. > statements are generated for these links. </LT.LIST.TEXT
  56989. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  56990. ></RBW-AUTOGEN
  56991. ></RBW-MARKER
  56992. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Delete in master impkey</CX5FX5FBULLET.EMPHASIS
  56993. >. This is a special case: the rule should be executed <CX5FX5FEMPHASIS>after</CX5FX5FEMPHASIS
  56994. > the query, otherwise references from the detail to the master may still exist. For this rule, the entire tuple is needed. The following code is generated: </RBW-PARABODY
  56995. ></LB.LIST.BULLET
  56996. ><EM.EXAMPLE.MONO>DELETE</EM.EXAMPLE.MONO
  56997. ><EM.EXAMPLE.MONO>FROM <master></EM.EXAMPLE.MONO
  56998. ><EM.EXAMPLE.MONO>WHERE <key = master.impkey>;</EM.EXAMPLE.MONO
  56999. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57000. ></RBW-AUTOGEN
  57001. ></RBW-MARKER
  57002. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Update in detail expkey</CX5FX5FBULLET.EMPHASIS
  57003. >. Updating of key values is not supported.</RBW-PARABODY
  57004. ></LB.LIST.BULLET
  57005. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57006. ></RBW-AUTOGEN
  57007. ></RBW-MARKER
  57008. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Nullify expkey in detail</CX5FX5FBULLET.EMPHASIS
  57009. >. This rule is executed in the exception block. The following code is generated: </RBW-PARABODY
  57010. ></LB.LIST.BULLET
  57011. ><EM.EXAMPLE.MONO>UPDATE <detail></EM.EXAMPLE.MONO
  57012. ><EM.EXAMPLE.MONO>SET <expkey> = NULL</EM.EXAMPLE.MONO
  57013. ><EM.EXAMPLE.MONO>WHERE <key = detail.expkey>;</EM.EXAMPLE.MONO
  57014. ></LABEL
  57015. ></SUBSECTION
  57016. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="Oracle" TERM2="ESQL features"></RBW-IDXTERM
  57017. ><RBW-IDXTERM TERM1="ESQL generation" TERM2="for Oracle"></RBW-IDXTERM
  57018. ><RBW-ANCHOR ID="25953"></RBW-ANCHOR
  57019. >ESQL Features</SS.SUBSEC.HEAD
  57020. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57021. ><RBW-IDXTERM TERM1="Pro*C 2.0"></RBW-IDXTERM
  57022. >Pro*C 2.0</L.LABEL
  57023. ><B.BODY>The ESQL code generated for the Oracle target can only be used with Pro*C version 2.0. The generated code does not work with earlier versions. </B.BODY
  57024. ></LABEL
  57025. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57026. >Fields from structs</L.LABEL
  57027. ><B.BODY>In Oracle ESQL, no fields from structs can be passed to queries. To solve this, the code generator generates a dummy pointer for each field in a struct it needs.</B.BODY
  57028. ></LABEL
  57029. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57030. >Retrieving character strings</L.LABEL
  57031. ><B.BODY>When character strings are retrieved, Oracle determines the length of the destination string by calling strlen(). The destination buffer is padded with spaces if the result string has less characters than the destination buffer. To avoid this, character strings are retrieved in an Oracle <CX5FX5FINPUT>VARCHAR</CX5FX5FINPUT
  57032. > struct and then copied to the destination pointer.</B.BODY
  57033. ></LABEL
  57034. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57035. ><RBW-IDXTERM TERM1="database" TERM2="accessing - in Oracle"></RBW-IDXTERM
  57036. >Database password</L.LABEL
  57037. ><B.BODY>Calls to stored procedures are made from within the generated Embedded SQL. The Oracle preprocessor needs to connect to the target database to check if such a call is valid. Therefore, <CX5FX5FTERM>schema_name</CX5FX5FTERM
  57038. >/<CX5FX5FTERM>password</CX5FX5FTERM
  57039. > must be passed to the Oracle preprocessor. The user can do this by passing the password to the make command, for example:</B.BODY
  57040. ><E.EXAMPLE><RBW-IDXTERM TERM1="make PASSWORD" TERM2="in Oracle"></RBW-IDXTERM
  57041. >make PASSWORD=my_password</E.EXAMPLE
  57042. ></LABEL
  57043. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57044. >Generated ESQL files</L.LABEL
  57045. ><B.BODY>The following files are generated in your user environment by the ESQL generator:</B.BODY
  57046. ></LABEL
  57047. ></SUBSECTION
  57048. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="Tcl commands" TERM2="Oracle specific built-in"></RBW-IDXTERM
  57049. ><RBW-ANCHOR ID="40306"></RBW-ANCHOR
  57050. >Specific Built&truehy;in Tcl Commands</SS.SUBSEC.HEAD
  57051. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57052. >Introduction</L.LABEL
  57053. ><B.BODY>A number of built&truehy;in Tcl commands specific to Oracle SQL are available:</B.BODY
  57054. ></LABEL
  57055. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57056. >is_sequence</L.LABEL
  57057. ><B.BODY><RBW-IDXTERM TERM1="is_sequence" TERM2="Oracle-specific built-in Tcl command"></RBW-IDXTERM
  57058. ><RBW-IDXTERM TERM1="Oracle" TERM2="built-in commands"></RBW-IDXTERM
  57059. >Returns <CX5FX5FINPUT>1</CX5FX5FINPUT
  57060. > if the type is an Oracle sequence, a <CX5FX5FINPUT>0</CX5FX5FINPUT
  57061. > if it is not. Returns status.</B.BODY
  57062. ><E.EXAMPLE><CX5FX5FPROCEDURE.NAME>is_sequence</CX5FX5FPROCEDURE.NAME
  57063. > <CX5FX5FTITLE>type</CX5FX5FTITLE
  57064. > </E.EXAMPLE
  57065. ></LABEL
  57066. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57067. >get_ora_type_4gl</L.LABEL
  57068. ><B.BODY>Returns the 4gl type for a column. If there is a sequence type, it will be mapped to NUMBER. Returns a string</B.BODY
  57069. ><E.EXAMPLE><CX5FX5FPROCEDURE.NAME>get_ora_type_4gl</CX5FX5FPROCEDURE.NAME
  57070. > <CX5FX5FTITLE>column</CX5FX5FTITLE
  57071. > </E.EXAMPLE
  57072. ></LABEL
  57073. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57074. >gen_ora_check</L.LABEL
  57075. ><B.BODY><RBW-IDXTERM TERM1="get_ora_type_4gl" TERM2="Oracle-specific built-in Tcl command"></RBW-IDXTERM
  57076. ><RBW-IDXTERM TERM1="Oracle" TERM2="built-in commands"></RBW-IDXTERM
  57077. >Generates</B.BODY
  57078. ><E.EXAMPLE>$prefixCHECK(<constraint for $object>)</E.EXAMPLE
  57079. ><B.BODY>if <CX5FX5FINPUT>object</CX5FX5FINPUT
  57080. > has a constraint. The default for <CX5FX5FINPUT>prefix</CX5FX5FINPUT
  57081. > is an empty string.</B.BODY
  57082. ><E.EXAMPLE><CX5FX5FPROCEDURE.NAME>gen_ora_check</CX5FX5FPROCEDURE.NAME
  57083. > <CX5FX5FTITLE>section object ?prefix?</CX5FX5FTITLE
  57084. > </E.EXAMPLE
  57085. ></LABEL
  57086. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57087. >gen_ora_col_def</L.LABEL
  57088. ><B.BODY><RBW-IDXTERM TERM1="get_ora_type_4gl" TERM2="Oracle-specific built-in Tcl command"></RBW-IDXTERM
  57089. ><RBW-IDXTERM TERM1="Oracle" TERM2="built-in commands"></RBW-IDXTERM
  57090. >Generates column definitions for all columns in <CX5FX5FTITLE>table</CX5FX5FTITLE
  57091. > that meet the <CX5FX5FTITLE>selector</CX5FX5FTITLE
  57092. > criterion.</B.BODY
  57093. ><E.EXAMPLE><CX5FX5FPROCEDURE.NAME>gen_ora_col_def</CX5FX5FPROCEDURE.NAME
  57094. > <CX5FX5FTITLE>section table selector</CX5FX5FTITLE
  57095. > </E.EXAMPLE
  57096. ></LABEL
  57097. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57098. >gen_ora_prim_key_def</L.LABEL
  57099. ><B.BODY><RBW-IDXTERM TERM1="get_ora_type_4gl" TERM2="Oracle-specific built-in Tcl command"></RBW-IDXTERM
  57100. ><RBW-IDXTERM TERM1="Oracle" TERM2="built-in commands"></RBW-IDXTERM
  57101. >Generates the primary key definition for a <CX5FX5FTITLE>table</CX5FX5FTITLE
  57102. >.</B.BODY
  57103. ><E.EXAMPLE><CX5FX5FPROCEDURE.NAME>gen_ora_prim_key_def</CX5FX5FPROCEDURE.NAME
  57104. > <CX5FX5FTITLE>section table</CX5FX5FTITLE
  57105. > </E.EXAMPLE
  57106. ></LABEL
  57107. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57108. >gen_ora_tbl_def</L.LABEL
  57109. ><B.BODY><RBW-IDXTERM TERM1="get_ora_type_4gl" TERM2="Oracle-specific built-in Tcl command"></RBW-IDXTERM
  57110. ><RBW-IDXTERM TERM1="Oracle" TERM2="built-in commands"></RBW-IDXTERM
  57111. >Generates column definitions, the table constraint and the primary key definition for <CX5FX5FTITLE>table</CX5FX5FTITLE
  57112. >.</B.BODY
  57113. ><E.EXAMPLE><CX5FX5FPROCEDURE.NAME>gen_ora_tbl_def</CX5FX5FPROCEDURE.NAME
  57114. > <CX5FX5FTITLE>section table</CX5FX5FTITLE
  57115. > </E.EXAMPLE
  57116. ></LABEL
  57117. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57118. >gen_ora_for_key_def</L.LABEL
  57119. ><B.BODY><RBW-IDXTERM TERM1="get_ora_type_4gl" TERM2="Oracle-specific built-in Tcl command"></RBW-IDXTERM
  57120. ><RBW-IDXTERM TERM1="Oracle" TERM2="built-in commands"></RBW-IDXTERM
  57121. >Generates foreign key definitions for <CX5FX5FTITLE>table</CX5FX5FTITLE
  57122. >.</B.BODY
  57123. ><E.EXAMPLE><CX5FX5FPROCEDURE.NAME>gen_ora_for_key_def</CX5FX5FPROCEDURE.NAME
  57124. > <CX5FX5FTITLE>section table</CX5FX5FTITLE
  57125. > </E.EXAMPLE
  57126. ></LABEL
  57127. ></SUBSECTION
  57128. ></SECTION
  57129. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17338"></RBW-ANCHOR
  57130. >Specific Features of <RBW-IDXTERM TERM1="Sybase"></RBW-IDXTERM
  57131. >Sybase (E)SQL</S.SECTION.HEAD
  57132. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57133. >Introduction</L.LABEL
  57134. ><B.BODY>Sybase 10.0 is one of the Relational Database Management Systems (RDBMS) supported by the persistent code generation of ObjectTeam. In this section, some special features of Sybase SQL and ESQL are discussed.</B.BODY
  57135. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  57136. ></RBW-AUTOGEN
  57137. >Make sure Sybase is configured properly before using it in combination with ObjectTeam. </N.NOTE
  57138. ></LABEL
  57139. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57140. >Supported platforms</L.LABEL
  57141. ><B.BODY>Persistent code generation for Sybase applies to:</B.BODY
  57142. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57143. ></RBW-AUTOGEN
  57144. ></RBW-MARKER
  57145. ><RBW-PARABODY>Unix&truehy;based platforms</RBW-PARABODY
  57146. ></LB.LIST.BULLET
  57147. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57148. ></RBW-AUTOGEN
  57149. ></RBW-MARKER
  57150. ><RBW-PARABODY>PC platforms</RBW-PARABODY
  57151. ></LB.LIST.BULLET
  57152. ></LABEL
  57153. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57154. >In this section</L.LABEL
  57155. ><B.BODY>This section contains the following topics:</B.BODY
  57156. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  57157. ></ENTRY
  57158. ></RBW-ROW
  57159. ></THEAD
  57160. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12731" TYPE="XREF-TEXTCOPY">SQL: Database Table Creation&rbwtab;D–72</RBW-XREF
  57161. ></SB.SECTION.BLOCK.TABLE
  57162. ></ENTRY
  57163. ></RBW-ROW
  57164. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34313" TYPE="XREF-TEXTCOPY">SQL: Database Procedure Creation&rbwtab;D–73</RBW-XREF
  57165. ></SB.SECTION.BLOCK.TABLE
  57166. ></ENTRY
  57167. ></RBW-ROW
  57168. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13679" TYPE="XREF-TEXTCOPY">ESQL Features&rbwtab;D–77</RBW-XREF
  57169. ></SB.SECTION.BLOCK.TABLE
  57170. ></ENTRY
  57171. ></RBW-ROW
  57172. ></TBODY
  57173. ></TGROUP
  57174. ></RBW-TABLE
  57175. ></LABEL
  57176. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="Sybase" TERM2="SQL features"></RBW-IDXTERM
  57177. ><RBW-IDXTERM TERM1="SQL generation" TERM2="for Sybase"></RBW-IDXTERM
  57178. ><RBW-ANCHOR ID="12731"></RBW-ANCHOR
  57179. >SQL: Database Table Creation</SS.SUBSEC.HEAD
  57180. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57181. >Features</L.LABEL
  57182. ><B.BODY>When using Sybase, you should be aware of the following notes regarding the generation of table definitions in ObjectTeam:</B.BODY
  57183. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57184. ></RBW-AUTOGEN
  57185. ></RBW-MARKER
  57186. ><RBW-PARABODY>Column constraints can be added to column definitions.</RBW-PARABODY
  57187. ></LB.LIST.BULLET
  57188. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57189. ></RBW-AUTOGEN
  57190. ></RBW-MARKER
  57191. ><RBW-PARABODY>Table constraints can be added to table definitions.</RBW-PARABODY
  57192. ></LB.LIST.BULLET
  57193. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57194. ></RBW-AUTOGEN
  57195. ></RBW-MARKER
  57196. ><RBW-PARABODY>The <CX5FX5FINPUT>PRIMARY KEY</CX5FX5FINPUT
  57197. > constraint is generated as part of the table definition. </RBW-PARABODY
  57198. ></LB.LIST.BULLET
  57199. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57200. ></RBW-AUTOGEN
  57201. ></RBW-MARKER
  57202. ><RBW-PARABODY>In the <CX5FX5FFILE.NAME>create_tables.sql</CX5FX5FFILE.NAME
  57203. > script, <CX5FX5FINPUT>ALTER TABLE</CX5FX5FINPUT
  57204. > statements are generated to add the <CX5FX5FINPUT>FOREIGN KEY</CX5FX5FINPUT
  57205. > constraints. </RBW-PARABODY
  57206. ></LB.LIST.BULLET
  57207. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57208. ></RBW-AUTOGEN
  57209. ></RBW-MARKER
  57210. ><RBW-PARABODY>No Transact&truehy;SQL code is generated to check on column and table constraints. Because the column and table constraints are included in the column and table definition, the database engine will enforce these constraints. </RBW-PARABODY
  57211. ></LB.LIST.BULLET
  57212. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57213. ></RBW-AUTOGEN
  57214. ></RBW-MARKER
  57215. ><RBW-PARABODY>No Transact&truehy;SQL code is generated for referential integrity constraints that are enforced by the database engine (through <CX5FX5FINPUT>FOREIGN KEY</CX5FX5FINPUT
  57216. > constraints).</RBW-PARABODY
  57217. ></LB.LIST.BULLET
  57218. ></LABEL
  57219. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57220. >Numbering <RBW-IDXTERM TERM1="key fields" TERM2="numbering - in Sybase"></RBW-IDXTERM
  57221. ><RBW-IDXTERM TERM1="identity" TERM2="standard type for Sybase"></RBW-IDXTERM
  57222. >key fields (identify)</L.LABEL
  57223. ><B.BODY>Identity columns in Sybase can be used for the automatic generation of numbers for key fields. ObjectTeam offers the standard type <CX5FX5FOBJECT.NAME>identity</CX5FX5FOBJECT.NAME
  57224. > to support this feature.</B.BODY
  57225. ><B.BODY>During code generation, the SQL generator translates the standard type <CX5FX5FOBJECT.NAME>identity</CX5FX5FOBJECT.NAME
  57226. > into <CX5FX5FINPUT>IDENTITY</CX5FX5FINPUT
  57227. > if it is applied to a column that is not imported from another table. Whenever a new tuple is inserted in the database, this identity is used to generate the value of the associated database column. </B.BODY
  57228. ><B.BODY>If applied to a column that <CX5FX5FTITLE>is</CX5FX5FTITLE
  57229. > imported from another table, the standard type <CX5FX5FOBJECT.NAME>identity</CX5FX5FOBJECT.NAME
  57230. > is translated into the <CX5FX5FINPUT>NUMERIC</CX5FX5FINPUT
  57231. > type. </B.BODY
  57232. ><B.BODY>Each table in a database can have one Identity column. Identity columns cannot be updated and do not allow <CX5FX5FINPUT>NULL</CX5FX5FINPUT
  57233. >s. </B.BODY
  57234. ></LABEL
  57235. ></SUBSECTION
  57236. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34313"></RBW-ANCHOR
  57237. >SQL: Database Procedure Creation</SS.SUBSEC.HEAD
  57238. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57239. >Stored <RBW-IDXTERM TERM1="procedures" TERM2="stored - in Sybase"></RBW-IDXTERM
  57240. >procedures</L.LABEL
  57241. ><B.BODY>Sybase supports stored procedures. These procedures are written in Transact&truehy;SQL and stored in the database. For every table definition that is generated, stored procedures are generated that handle the database operations <CX5FX5FTITLE>delete</CX5FX5FTITLE
  57242. >, <CX5FX5FTITLE>insert</CX5FX5FTITLE
  57243. > and <CX5FX5FTITLE>update</CX5FX5FTITLE
  57244. >.</B.BODY
  57245. ><B.BODY>The names of these stored procedures are:</B.BODY
  57246. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57247. ></RBW-AUTOGEN
  57248. ></RBW-MARKER
  57249. ><RBW-PARABODY>pdel_<CX5FX5FTERM>table_name</CX5FX5FTERM
  57250. > </RBW-PARABODY
  57251. ></LB.LIST.BULLET
  57252. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57253. ></RBW-AUTOGEN
  57254. ></RBW-MARKER
  57255. ><RBW-PARABODY>pins_<CX5FX5FTERM>table_name</CX5FX5FTERM
  57256. > </RBW-PARABODY
  57257. ></LB.LIST.BULLET
  57258. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57259. ></RBW-AUTOGEN
  57260. ></RBW-MARKER
  57261. ><RBW-PARABODY>pupd_<CX5FX5FTERM>table_name</CX5FX5FTERM
  57262. > </RBW-PARABODY
  57263. ></LB.LIST.BULLET
  57264. ><B.BODY>Transact&truehy;SQL procedures generally consist of a basic query, which can be preceded by referential integrity checks that are not enforced by the database engine. An example of a basic query is:</B.BODY
  57265. ><EM.EXAMPLE.MONO>DELETE</EM.EXAMPLE.MONO
  57266. ><EM.EXAMPLE.MONO>FROM person</EM.EXAMPLE.MONO
  57267. ><EM.EXAMPLE.MONO>WHERE p_number = number</EM.EXAMPLE.MONO
  57268. ></LABEL
  57269. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57270. >Referential <RBW-IDXTERM TERM1="referential integrity" TERM2="in Sybase"></RBW-IDXTERM
  57271. ><RBW-IDXTERM TERM1="Sybase" TERM2="referential integrity"></RBW-IDXTERM
  57272. >Integrity (RI)</L.LABEL
  57273. ><B.BODY>To implement referential integrity that is not enforced by the database engine, ObjectTeam generates Transact&truehy;SQL procedures. </B.BODY
  57274. ><B.BODY>Referential integrity rules are obtained from the SQL Model (see the <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  57275. ><CX5FX5FTITLE></CX5FX5FTITLE
  57276. >), where they are specified by links between tables. If a rule cannot be implemented, the procedure that should contain the rule is not generated and a warning message is issued. In that case, you have to implement the procedure manually.</B.BODY
  57277. ><B.BODY>For a number of rules checked during the <CX5FX5FTITLE>delete</CX5FX5FTITLE
  57278. > operation, all fields must be available. If such a rule occurs, the following code is generated:</B.BODY
  57279. ><EM.EXAMPLE.MONO><definition of extra local variables></EM.EXAMPLE.MONO
  57280. ><EM.EXAMPLE.MONO>SELECT    <extra local variable_1> = <nonkey_1>,</EM.EXAMPLE.MONO
  57281. ><EM.EXAMPLE.MONO>          <extra local variable_2> = <nonkey_2>,</EM.EXAMPLE.MONO
  57282. ><EM.EXAMPLE.MONO>            ...</EM.EXAMPLE.MONO
  57283. ><EM.EXAMPLE.MONO>FROM <table to delete from></EM.EXAMPLE.MONO
  57284. ><EM.EXAMPLE.MONO>WHERE <key = passed key></EM.EXAMPLE.MONO
  57285. ></LABEL
  57286. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57287. >Supported RI rules </L.LABEL
  57288. ><B.BODY>On the following pages, every referential integrity rule is briefly discussed:</B.BODY
  57289. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57290. ></RBW-AUTOGEN
  57291. ></RBW-MARKER
  57292. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on not exist expkey in detail</CX5FX5FBULLET.EMPHASIS
  57293. >. This rule cannot be implemented. Sybase prohibits the occurrence of foreign keys that do not exist in the master table.</RBW-PARABODY
  57294. ></LB.LIST.BULLET
  57295. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57296. ></RBW-AUTOGEN
  57297. ></RBW-MARKER
  57298. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on not exist impkey in master</CX5FX5FBULLET.EMPHASIS
  57299. >. This rule is enforced by Sybase (FOREIGN KEY CONSTRAINT). </RBW-PARABODY
  57300. ></LB.LIST.BULLET
  57301. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57302. ></RBW-AUTOGEN
  57303. ></RBW-MARKER
  57304. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on exist expkey in detail</CX5FX5FBULLET.EMPHASIS
  57305. >. This rule is enforced by Sybase (FOREIGN KEY CONSTRAINT). </RBW-PARABODY
  57306. ></LB.LIST.BULLET
  57307. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57308. ></RBW-AUTOGEN
  57309. ></RBW-MARKER
  57310. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on exist impkey in master</CX5FX5FBULLET.EMPHASIS
  57311. >. This rule must be executed before the query. To check this rule, the entire row is needed. Because Sybase enforces the existence of an imported key with nullability of NOT NULL, the code generator only needs to test if the impkey is NULL. The following code is generated: </RBW-PARABODY
  57312. ></LB.LIST.BULLET
  57313. ><EM.EXAMPLE.MONO>IF <impkey> IS NOT NULL</EM.EXAMPLE.MONO
  57314. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  57315. ><EM.EXAMPLE.MONO>    RAISEERROR 99998 "Referential integrity violated"</EM.EXAMPLE.MONO
  57316. ><EM.EXAMPLE.MONO>END</EM.EXAMPLE.MONO
  57317. ><LT.LIST.TEXT>In case of an <CX5FX5FTITLE>update</CX5FX5FTITLE
  57318. >, the code generator tests if the old impkey is <CX5FX5FINPUT>NOT NULL</CX5FX5FINPUT
  57319. >.</LT.LIST.TEXT
  57320. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57321. ></RBW-AUTOGEN
  57322. ></RBW-MARKER
  57323. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on last impkey in current table</CX5FX5FBULLET.EMPHASIS
  57324. >. This rule needs the entire row and is checked before the query. The following code is generated: </RBW-PARABODY
  57325. ></LB.LIST.BULLET
  57326. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  57327. ><EM.EXAMPLE.MONO>   DECLARE @counter INT</EM.EXAMPLE.MONO
  57328. ><EM.EXAMPLE.MONO>   BEGIN</EM.EXAMPLE.MONO
  57329. ><EM.EXAMPLE.MONO>      SELECT @counter = COUNT(*)</EM.EXAMPLE.MONO
  57330. ><EM.EXAMPLE.MONO>      FROM <current table></EM.EXAMPLE.MONO
  57331. ><EM.EXAMPLE.MONO>      WHERE <table.impkey = row.impkey></EM.EXAMPLE.MONO
  57332. ><EM.EXAMPLE.MONO>      IF (@counter = 1)</EM.EXAMPLE.MONO
  57333. ><EM.EXAMPLE.MONO>      BEGIN</EM.EXAMPLE.MONO
  57334. ><EM.EXAMPLE.MONO>         RAISEERROR 99997 "Referential integrity</EM.EXAMPLE.MONO
  57335. ><EM.EXAMPLE.MONO>   violated"</EM.EXAMPLE.MONO
  57336. ><EM.EXAMPLE.MONO>      END</EM.EXAMPLE.MONO
  57337. ><EM.EXAMPLE.MONO>   END</EM.EXAMPLE.MONO
  57338. ><EM.EXAMPLE.MONO>END</EM.EXAMPLE.MONO
  57339. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57340. ></RBW-AUTOGEN
  57341. ></RBW-MARKER
  57342. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reject on last impkey in master</CX5FX5FBULLET.EMPHASIS
  57343. >. This rule is implemented in the same way as the <CX5FX5FOBJECT.NAME>Reject on exist impkey in master</CX5FX5FOBJECT.NAME
  57344. > rule.</RBW-PARABODY
  57345. ></LB.LIST.BULLET
  57346. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57347. ></RBW-AUTOGEN
  57348. ></RBW-MARKER
  57349. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Insert in master impkey</CX5FX5FBULLET.EMPHASIS
  57350. >. The following code is generated: </RBW-PARABODY
  57351. ></LB.LIST.BULLET
  57352. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  57353. ><EM.EXAMPLE.MONO>   DECLARE @counter INT</EM.EXAMPLE.MONO
  57354. ><EM.EXAMPLE.MONO>   BEGIN</EM.EXAMPLE.MONO
  57355. ><EM.EXAMPLE.MONO>      SELECT @counter = COUNT(*)</EM.EXAMPLE.MONO
  57356. ><EM.EXAMPLE.MONO>      FROM <current table></EM.EXAMPLE.MONO
  57357. ><EM.EXAMPLE.MONO>      WHERE <table.impkey = row.impkey></EM.EXAMPLE.MONO
  57358. ><EM.EXAMPLE.MONO>      IF (@counter = 0)</EM.EXAMPLE.MONO
  57359. ><EM.EXAMPLE.MONO>      BEGIN</EM.EXAMPLE.MONO
  57360. ><EM.EXAMPLE.MONO>         pins_<current table> <values></EM.EXAMPLE.MONO
  57361. ><EM.EXAMPLE.MONO>      END</EM.EXAMPLE.MONO
  57362. ><EM.EXAMPLE.MONO>   END</EM.EXAMPLE.MONO
  57363. ><EM.EXAMPLE.MONO>END</EM.EXAMPLE.MONO
  57364. ><LT.LIST.TEXT>This rule can only be processed when non&truehy;key columns in the master table are nullable. This cannot be checked during generation, but Sybase will issue a runtime error if they are not.</LT.LIST.TEXT
  57365. ><LT.LIST.TEXT>Moreover, this cascade&truehy;<CX5FX5FTITLE>insert</CX5FX5FTITLE
  57366. > operation is subject to other RI rules as well. The following rules are applicable for the <CX5FX5FTITLE>insert</CX5FX5FTITLE
  57367. > operation: </LT.LIST.TEXT
  57368. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  57369. ></RBW-MARKER
  57370. ><RBW-PARABODY><CX5FX5FTITLE>reject on not exist expkey in detail</CX5FX5FTITLE
  57371. > </RBW-PARABODY
  57372. ></LB2.LIST.BULLET.2
  57373. ><LT2.LIST.TEXT.2>As already mentioned, it is not possible to support this operation. </LT2.LIST.TEXT.2
  57374. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  57375. ></RBW-MARKER
  57376. ><RBW-PARABODY><CX5FX5FTITLE>reject on exist impkey in master</CX5FX5FTITLE
  57377. > </RBW-PARABODY
  57378. ></LB2.LIST.BULLET.2
  57379. ><LT2.LIST.TEXT.2>This is handled by Sybase. </LT2.LIST.TEXT.2
  57380. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  57381. ></RBW-MARKER
  57382. ><RBW-PARABODY><CX5FX5FTITLE>insert in master impkey</CX5FX5FTITLE
  57383. > </RBW-PARABODY
  57384. ></LB2.LIST.BULLET.2
  57385. ><LT2.LIST.TEXT.2>This action is only supported if the impkey is equal to the key. If this is not the case, it will result in a runtime Sybase error. </LT2.LIST.TEXT.2
  57386. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57387. ></RBW-AUTOGEN
  57388. ></RBW-MARKER
  57389. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Delete in detail expkey</CX5FX5FBULLET.EMPHASIS
  57390. >. This rule is executed prior to the deletion of the master. The following code is generated: </RBW-PARABODY
  57391. ></LB.LIST.BULLET
  57392. ><EM.EXAMPLE.MONO>BEGIN</EM.EXAMPLE.MONO
  57393. ><EM.EXAMPLE.MONO>   <definition of local key></EM.EXAMPLE.MONO
  57394. ><EM.EXAMPLE.MONO>   DECLARE <detail>_Crsr CURSOR</EM.EXAMPLE.MONO
  57395. ><EM.EXAMPLE.MONO>      FOR SELECT <detail.key></EM.EXAMPLE.MONO
  57396. ><EM.EXAMPLE.MONO>      FROM   <detail></EM.EXAMPLE.MONO
  57397. ><EM.EXAMPLE.MONO>      WHERE  <detail.impkey = master.key></EM.EXAMPLE.MONO
  57398. ><EM.EXAMPLE.MONO>   OPEN <detail>_Crsr</EM.EXAMPLE.MONO
  57399. ><EM.EXAMPLE.MONO>   FETCH <detail>_Crsr</EM.EXAMPLE.MONO
  57400. ><EM.EXAMPLE.MONO>      INTO <local key></EM.EXAMPLE.MONO
  57401. ><EM.EXAMPLE.MONO>   WHILE (@@sqlstatus = 0)</EM.EXAMPLE.MONO
  57402. ><EM.EXAMPLE.MONO>   BEGIN</EM.EXAMPLE.MONO
  57403. ><EM.EXAMPLE.MONO>      EXEC pdel_<detail> <local key></EM.EXAMPLE.MONO
  57404. ><EM.EXAMPLE.MONO>      FETCH <detail>_Crsr</EM.EXAMPLE.MONO
  57405. ><EM.EXAMPLE.MONO>         INTO <local key></EM.EXAMPLE.MONO
  57406. ><EM.EXAMPLE.MONO>   END</EM.EXAMPLE.MONO
  57407. ><EM.EXAMPLE.MONO>   CLOSE <detail>_Crsr</EM.EXAMPLE.MONO
  57408. ><EM.EXAMPLE.MONO>END</EM.EXAMPLE.MONO
  57409. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57410. ></RBW-AUTOGEN
  57411. ></RBW-MARKER
  57412. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Delete in master impkey</CX5FX5FBULLET.EMPHASIS
  57413. >. This is a special case: the rule should be executed <CX5FX5FEMPHASIS>after</CX5FX5FEMPHASIS
  57414. > the query, otherwise references from the detail to the master may still exist. For this rule, the entire tuple is needed. The following code is generated: </RBW-PARABODY
  57415. ></LB.LIST.BULLET
  57416. ><EM.EXAMPLE.MONO>DELETE</EM.EXAMPLE.MONO
  57417. ><EM.EXAMPLE.MONO>FROM <master></EM.EXAMPLE.MONO
  57418. ><EM.EXAMPLE.MONO>WHERE <key = master.impkey></EM.EXAMPLE.MONO
  57419. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57420. ></RBW-AUTOGEN
  57421. ></RBW-MARKER
  57422. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Update in detail expkey</CX5FX5FBULLET.EMPHASIS
  57423. >. Updating of key values is not supported. </RBW-PARABODY
  57424. ></LB.LIST.BULLET
  57425. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57426. ></RBW-AUTOGEN
  57427. ></RBW-MARKER
  57428. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Nullify expkey in detail</CX5FX5FBULLET.EMPHASIS
  57429. >. This rule is executed before the query. The following code is generated: </RBW-PARABODY
  57430. ></LB.LIST.BULLET
  57431. ><EM.EXAMPLE.MONO>UPDATE <detail></EM.EXAMPLE.MONO
  57432. ><EM.EXAMPLE.MONO>SET <expkey> = NULL</EM.EXAMPLE.MONO
  57433. ><EM.EXAMPLE.MONO>WHERE <key = detail.expkey></EM.EXAMPLE.MONO
  57434. ></LABEL
  57435. ></SUBSECTION
  57436. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="Sybase" TERM2="ESQL features"></RBW-IDXTERM
  57437. ><RBW-IDXTERM TERM1="ESQL generation" TERM2="for Sybase"></RBW-IDXTERM
  57438. ><RBW-ANCHOR ID="13679"></RBW-ANCHOR
  57439. >ESQL Features</SS.SUBSEC.HEAD
  57440. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57441. >Generated ESQL files</L.LABEL
  57442. ><B.BODY>The following files are generated in your user environment by the persistent code generator:</B.BODY
  57443. ></LABEL
  57444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57445. >Runtime <RBW-IDXTERM TERM1="Sybase" TERM2="runtime environment variables"></RBW-IDXTERM
  57446. >features</L.LABEL
  57447. ><B.BODY>The executable <CX5FX5FINPUT>isql</CX5FX5FINPUT
  57448. > is used by ObjectTeam to create, delete and fill databases. On PC platforms, <CX5FX5FINPUT>isql</CX5FX5FINPUT
  57449. > is invoked with the argument <CX5FX5FINPUT>&truehy;J</CX5FX5FINPUT
  57450. >.</B.BODY
  57451. ><B.BODY>To be able to execute an application that was compiled to work with a Sybase database, the following environment variables must be set properly:</B.BODY
  57452. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57453. ></RBW-AUTOGEN
  57454. ></RBW-MARKER
  57455. ><RBW-PARABODY><CX5FX5FINPUT><RBW-IDXTERM TERM1="SYBASE" TERM2="runtime environment variable for Sybase"></RBW-IDXTERM
  57456. >SYBASE</CX5FX5FINPUT
  57457. >. The path to the Sybase directory, for example: </RBW-PARABODY
  57458. ></LB.LIST.BULLET
  57459. ><LT.LIST.TEXT><CX5FX5FINPUT>/usr/sybase</CX5FX5FINPUT
  57460. > or <CX5FX5FINPUT>c:\sql10</CX5FX5FINPUT
  57461. > </LT.LIST.TEXT
  57462. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57463. ></RBW-AUTOGEN
  57464. ></RBW-MARKER
  57465. ><RBW-PARABODY><CX5FX5FINPUT><RBW-IDXTERM TERM1="DSQUERY" TERM2="runtime environment variable for Sybase"></RBW-IDXTERM
  57466. >DSQUERY</CX5FX5FINPUT
  57467. >. The name of the server your database runs on.</RBW-PARABODY
  57468. ></LB.LIST.BULLET
  57469. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57470. ></RBW-AUTOGEN
  57471. ></RBW-MARKER
  57472. ><RBW-PARABODY><CX5FX5FINPUT><RBW-IDXTERM TERM1="DBPASSWD" TERM2="runtime environment variable for Sybase"></RBW-IDXTERM
  57473. >DBPASSWD</CX5FX5FINPUT
  57474. >. The password required to connect to the database.</RBW-PARABODY
  57475. ></LB.LIST.BULLET
  57476. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57477. ></RBW-AUTOGEN
  57478. ></RBW-MARKER
  57479. ><RBW-PARABODY><CX5FX5FINPUT><RBW-IDXTERM TERM1="DBUSERNAME" TERM2="runtime environment variable for Sybase"></RBW-IDXTERM
  57480. >DBUSERNAME</CX5FX5FINPUT
  57481. > (PC platforms only). The name of the user as whom you connect to the database. This variable is only needed when you want to connect to the database under a different user name as specified by the variable USERNAME.</RBW-PARABODY
  57482. ></LB.LIST.BULLET
  57483. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57484. ></RBW-AUTOGEN
  57485. ></RBW-MARKER
  57486. ><RBW-PARABODY><CX5FX5FINPUT><RBW-IDXTERM TERM1="USERNAME" TERM2="runtime environment variable for Sybase"></RBW-IDXTERM
  57487. >USERNAME</CX5FX5FINPUT
  57488. > (PC platforms only). The name of the user as whom you connect to the database.</RBW-PARABODY
  57489. ></LB.LIST.BULLET
  57490. ><FA.FIGURE.ANCHOR></FA.FIGURE.ANCHOR
  57491. ><RBWAUTO-0001></RBWAUTO-0001
  57492. ><!--
  57493.  
  57494.  
  57495.  
  57496.  
  57497.  
  57498. CONVERTING SOURCE FILE ../../sources/cpp/cmz611.fm5.mif
  57499.  
  57500.  
  57501. --><B.BODY></B.BODY
  57502. ><B.BODY></B.BODY
  57503. ><B.BODY></B.BODY
  57504. ><B.BODY></B.BODY
  57505. ><B.BODY></B.BODY
  57506. ></LABEL
  57507. ></SUBSECTION
  57508. ></SECTION
  57509. ></APPENDIX
  57510. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix E&rbwtab;</CX5FX5FZCHAPTER.NUM
  57511. ></RBW-AUTOGEN
  57512. >Customizing Persistent <RBW-ANCHOR ID="13285"></RBW-ANCHOR
  57513. >C++ Code Generation<RBW-IDXTERM TERM1="persistent code generation"></RBW-IDXTERM
  57514. ><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  57515. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  57516. ></RBW-SYSOBJ
  57517. ></A.APPENDIX.HEAD
  57518. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57519. >Introduction</L.LABEL
  57520. ><B.BODY>This chapter contains an overview of the areas in ObjectTeam code generation that can be customized and configured.</B.BODY
  57521. ></LABEL
  57522. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57523. >In this chapter</L.LABEL
  57524. ><B.BODY>This chapter contains the following sections:</B.BODY
  57525. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  57526. ></ENTRY
  57527. ></RBW-ROW
  57528. ></THEAD
  57529. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22291" TYPE="XREF-TEXTCOPY">How Tcl is Used in Code Generation&rbwtab;E–80</RBW-XREF
  57530. ></SB.SECTION.BLOCK.TABLE
  57531. ></ENTRY
  57532. ></RBW-ROW
  57533. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15250" TYPE="XREF-TEXTCOPY">Customizing Tcl Scripts Used for Code Generation&rbwtab;E–83</RBW-XREF
  57534. ></SB.SECTION.BLOCK.TABLE
  57535. ></ENTRY
  57536. ></RBW-ROW
  57537. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14052" TYPE="XREF-TEXTCOPY">Customizing Data Types&rbwtab;E–87</RBW-XREF
  57538. ></SB.SECTION.BLOCK.TABLE
  57539. ></ENTRY
  57540. ></RBW-ROW
  57541. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11865" TYPE="XREF-TEXTCOPY">Customizing Referential Integrity Policies&rbwtab;E–94</RBW-XREF
  57542. ></SB.SECTION.BLOCK.TABLE
  57543. ></ENTRY
  57544. ></RBW-ROW
  57545. ></TBODY
  57546. ></TGROUP
  57547. ></RBW-TABLE
  57548. ></LABEL
  57549. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22291"></RBW-ANCHOR
  57550. >How Tcl is Used in Code Generation</S.SECTION.HEAD
  57551. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57552. ><RBW-ANCHOR ID="37266"></RBW-ANCHOR
  57553. >Introduction</L.LABEL
  57554. ><B.BODY>This entry focuses on the use of Tcl (Tool command language) in ObjectTeam. It does not provide an introduction to Tcl itself. If you want to familiarize yourself with Tcl, we recommend the following introductory book on Tcl:</B.BODY
  57555. ><LT.LIST.TEXT>Ousterhout, John K. <CX5FX5FTITLE>Tcl and the Tk Toolkit</CX5FX5FTITLE
  57556. >. (Reading, Massachusetts: Addison--&truehy;Wesley Publishing Company, 1994)</LT.LIST.TEXT
  57557. ></LABEL
  57558. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57559. >What is Tcl?</L.LABEL
  57560. ><B.BODY>Tcl (Tool Command Language) is an interpretive command language that resembles C. By default all arguments are passed as strings. These strings are C&truehy;compatible. Tcl consists of:</B.BODY
  57561. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57562. ></RBW-AUTOGEN
  57563. ></RBW-MARKER
  57564. ><RBW-PARABODY>A library of C procedures</RBW-PARABODY
  57565. ></LB.LIST.BULLET
  57566. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57567. ></RBW-AUTOGEN
  57568. ></RBW-MARKER
  57569. ><RBW-PARABODY>An interpreter</RBW-PARABODY
  57570. ></LB.LIST.BULLET
  57571. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57572. ></RBW-AUTOGEN
  57573. ></RBW-MARKER
  57574. ><RBW-PARABODY>The Tcl core</RBW-PARABODY
  57575. ></LB.LIST.BULLET
  57576. ><B.BODY>The Tcl core is a simple language that can be completely programmed. It provides a collection of commonly used features such as:</B.BODY
  57577. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57578. ></RBW-AUTOGEN
  57579. ></RBW-MARKER
  57580. ><RBW-PARABODY>Variables</RBW-PARABODY
  57581. ></LB.LIST.BULLET
  57582. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57583. ></RBW-AUTOGEN
  57584. ></RBW-MARKER
  57585. ><RBW-PARABODY>Conditional and looping commands</RBW-PARABODY
  57586. ></LB.LIST.BULLET
  57587. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57588. ></RBW-AUTOGEN
  57589. ></RBW-MARKER
  57590. ><RBW-PARABODY>Procedures</RBW-PARABODY
  57591. ></LB.LIST.BULLET
  57592. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57593. ></RBW-AUTOGEN
  57594. ></RBW-MARKER
  57595. ><RBW-PARABODY>Associative arrays</RBW-PARABODY
  57596. ></LB.LIST.BULLET
  57597. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57598. ></RBW-AUTOGEN
  57599. ></RBW-MARKER
  57600. ><RBW-PARABODY>Lists</RBW-PARABODY
  57601. ></LB.LIST.BULLET
  57602. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57603. ></RBW-AUTOGEN
  57604. ></RBW-MARKER
  57605. ><RBW-PARABODY>Expressions</RBW-PARABODY
  57606. ></LB.LIST.BULLET
  57607. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57608. ></RBW-AUTOGEN
  57609. ></RBW-MARKER
  57610. ><RBW-PARABODY>File manipulation</RBW-PARABODY
  57611. ></LB.LIST.BULLET
  57612. ></LABEL
  57613. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57614. >How is Tcl used in the code generation?</L.LABEL
  57615. ><B.BODY>When the ObjectTeam shell executes a Tcl script file, it translates information from the repository, internal models, and <RBW-IDXTERM TERM1="code generation model" TERM2="and Tcl"></RBW-IDXTERM
  57616. ><RBW-IDXTERM TERM1="model" TERM2="code generation"></RBW-IDXTERM
  57617. >Code Generation models into source code. The following picture shows this process schematically:</B.BODY
  57618. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00563.tif" origseq="1" origtype="I" origdoc="../../sources/cpp/cmz611.fm5.mif"></RBW-GRAPHIC
  57619. ></FAR.FIGURE.ANCHOR.RIGHT
  57620. ></LABEL
  57621. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57622. >Types of Tcl used</L.LABEL
  57623. ><B.BODY>In the procedures of the default Tcl script files used for code generation, different levels of Tcl are used:</B.BODY
  57624. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="168p"><COLSPEC COLNAME="2" COLWIDTH="280p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  57625. ></ENTRY
  57626. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>description</CELLHEADING
  57627. ></ENTRY
  57628. ></RBW-ROW
  57629. ></THEAD
  57630. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Standard Tcl</CELLBODY
  57631. ></ENTRY
  57632. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Refer to general Tcl documentation for details.</CELLBODY
  57633. ></ENTRY
  57634. ></RBW-ROW
  57635. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calls to other Tcl procedures</CELLBODY
  57636. ></ENTRY
  57637. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These procedures are stored in other Tcl files. They become available when the file in which the procedure is defined is sourced.</CELLBODY
  57638. ></ENTRY
  57639. ></RBW-ROW
  57640. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calls to methods of classes in the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  57641. ><RBWAUTO-0024></RBWAUTO-0024
  57642. > models</CELLBODY
  57643. ></ENTRY
  57644. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The classes of the ObjectTeam models (including the OOPL model and SQL model) are documented in <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  57645. ><CX5FX5FTITLE></CX5FX5FTITLE
  57646. >. </CELLBODY
  57647. ></ENTRY
  57648. ></RBW-ROW
  57649. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Built&truehy;in Classes</CELLBODY
  57650. ></ENTRY
  57651. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Besides methods of classes belonging to the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  57652. ><RBWAUTO-0024></RBWAUTO-0024
  57653. > models, methods belonging to built&truehy;in classes can also be called. Refer to the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  57654. ><CX5FX5FTITLE></CX5FX5FTITLE
  57655. > for details.</CELLBODY
  57656. ></ENTRY
  57657. ></RBW-ROW
  57658. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Built&truehy;in <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  57659. ><RBWAUTO-0024></RBWAUTO-0024
  57660. > commands</CELLBODY
  57661. ></ENTRY
  57662. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These commands are built&truehy;in in otsh. You can use these commands, but you cannot edit or view them like Tcl procedures. Refer to the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  57663. ><CX5FX5FTITLE></CX5FX5FTITLE
  57664. > for details. </CELLBODY
  57665. ></ENTRY
  57666. ></RBW-ROW
  57667. ></TBODY
  57668. ></TGROUP
  57669. ></RBW-TABLE
  57670. ></LABEL
  57671. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57672. ><RBW-ANCHOR ID="35220"></RBW-ANCHOR
  57673. >Which Tcl files are used?</L.LABEL
  57674. ><B.BODY>Tcl procedures used for code generation are stored in procedural Tcl script files. During code generation, these scripts are interpreted and executed by the ObjectTeam Shell (otsh). When you select Utilities | Generate C++ in the Browser on Implementation System level, otsh interprets the procedures in the Tcl file <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="import.tcl"></RBW-IDXTERM
  57675. >import.tcl</CX5FX5FFILE.NAME
  57676. >. These procedures use procedures defined in other Tcl scripts, and they also activate other Tcl script files.</B.BODY
  57677. ><B.BODY>The Tcl files used for non&truehy;persistent and persistent code generation can be found in the following directories:</B.BODY
  57678. ><B.BODY></B.BODY
  57679. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="90p"><COLSPEC COLNAME="3" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Directory under <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  57680. ></CELLHEADING
  57681. ></ENTRY
  57682. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File</CELLHEADING
  57683. ></ENTRY
  57684. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  57685. ></ENTRY
  57686. ></RBW-ROW
  57687. ></THEAD
  57688. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>tcl</CELLBODY
  57689. ></ENTRY
  57690. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>legacy.tcl</CELLBODY
  57691. ></ENTRY
  57692. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Legacy file for 3.x compatibility</CELLBODY
  57693. ></ENTRY
  57694. ></RBW-ROW
  57695. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  57696. ></ENTRY
  57697. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="gensqlomt.tcl"></RBW-IDXTERM
  57698. >gensqlomt.tcl</CELLBODY
  57699. ></ENTRY
  57700. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>OMT specific target independent gensql procedures</CELLBODY
  57701. ></ENTRY
  57702. ></RBW-ROW
  57703. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  57704. ></ENTRY
  57705. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="wmt_util.tcl"></RBW-IDXTERM
  57706. >wmt_util.tcl</CELLBODY
  57707. ></ENTRY
  57708. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam TCL utilities</CELLBODY
  57709. ></ENTRY
  57710. ></RBW-ROW
  57711. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  57712. ></ENTRY
  57713. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="tdbop.tcl"></RBW-IDXTERM
  57714. >tdbop.tcl</CELLBODY
  57715. ></ENTRY
  57716. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Perform TDB Operations</CELLBODY
  57717. ></ENTRY
  57718. ></RBW-ROW
  57719. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>modules\pers&truehy;cplusplus\tcl</CELLBODY
  57720. ></ENTRY
  57721. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>all files</CELLBODY
  57722. ></ENTRY
  57723. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  57724. ></ENTRY
  57725. ></RBW-ROW
  57726. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>modules\pers&truehy;cpp&truehy;inf\tcl</CELLBODY
  57727. ></ENTRY
  57728. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>all files</CELLBODY
  57729. ></ENTRY
  57730. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Tcl files for generating persistent code for Informix databases</CELLBODY
  57731. ></ENTRY
  57732. ></RBW-ROW
  57733. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>modules\pers&truehy;cpp&truehy;ing\tcl</CELLBODY
  57734. ></ENTRY
  57735. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>all files</CELLBODY
  57736. ></ENTRY
  57737. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Tcl files for generating persistent code for CA&truehy;Ingres databases</CELLBODY
  57738. ></ENTRY
  57739. ></RBW-ROW
  57740. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>modules\pers&truehy;cpp&truehy;mss\tcl</CELLBODY
  57741. ></ENTRY
  57742. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>all files</CELLBODY
  57743. ></ENTRY
  57744. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Tcl files for generating persistent code for Microsoft SQL Server databases</CELLBODY
  57745. ></ENTRY
  57746. ></RBW-ROW
  57747. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>modules\pers&truehy;cpp&truehy;ora\tcl</CELLBODY
  57748. ></ENTRY
  57749. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>all files</CELLBODY
  57750. ></ENTRY
  57751. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Tcl files for generating persistent code for Oracle databases</CELLBODY
  57752. ></ENTRY
  57753. ></RBW-ROW
  57754. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>modules\pers&truehy;cpp&truehy;syb\tcl</CELLBODY
  57755. ></ENTRY
  57756. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>all files</CELLBODY
  57757. ></ENTRY
  57758. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Tcl files for generating persistent code for Sybase databases</CELLBODY
  57759. ></ENTRY
  57760. ></RBW-ROW
  57761. ></TBODY
  57762. ></TGROUP
  57763. ></RBW-TABLE
  57764. ></LABEL
  57765. ></SECTION
  57766. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="15250"></RBW-ANCHOR
  57767. ><RBW-ANCHOR ID="15580"></RBW-ANCHOR
  57768. >Customizing Tcl Scripts Used for <RBW-IDXTERM TERM1="code generation" TERM2="adapting"></RBW-IDXTERM
  57769. >Code Generation</S.SECTION.HEAD
  57770. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57771. >User&truehy;defined Tcl files</L.LABEL
  57772. ><B.BODY>Because of the open character of Tcl, you are free to rewrite the Tcl procedures of the Tcl scripts, if you feel like adapting the code generation to your specific needs and circumstances. You can include your own properties, control flow keywords and section keywords in the code generation this way. You can even build your own code generator by creating your own Tcl scripts. </B.BODY
  57773. ></LABEL
  57774. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57775. >Which Tcl files can you customize</L.LABEL
  57776. ><B.BODY>To customize a Tcl script, you must create a user&truehy;defined customization file. These are the ObjectTeam Tcl script files that you can extend with a user&truehy;defined customization file:</B.BODY
  57777. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57778. ></RBW-AUTOGEN
  57779. ></RBW-MARKER
  57780. ><RBW-PARABODY><RBW-IDXTERM TERM1="check.tcl"></RBW-IDXTERM
  57781. >check.tcl</RBW-PARABODY
  57782. ></LB.LIST.BULLET
  57783. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57784. ></RBW-AUTOGEN
  57785. ></RBW-MARKER
  57786. ><RBW-PARABODY><RBW-IDXTERM TERM1="gencpp.tcl"></RBW-IDXTERM
  57787. >gencpp.tcl</RBW-PARABODY
  57788. ></LB.LIST.BULLET
  57789. ><B.BODY>The most obvious way to extend these default script is by creating a customization file <CX5FX5FFILE.NAME>u_</CX5FX5FFILE.NAME
  57790. ><RBWAUTO-0022>fileName</RBWAUTO-0022
  57791. >.tcl. If you want to overrule any of the Tcl procedures in the following default Tcl files, Cayenne recommends that you include them in the customization file <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="u_gencpp.tcl"></RBW-IDXTERM
  57792. >u_gencpp.tcl</CX5FX5FFILE.NAME
  57793. > as well:</B.BODY
  57794. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57795. ></RBW-AUTOGEN
  57796. ></RBW-MARKER
  57797. ><RBW-PARABODY><CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="cpp_disp.tcl"></RBW-IDXTERM
  57798. >cpp_disp.tcl</CX5FX5FFILE.NAME
  57799. > </RBW-PARABODY
  57800. ></LB.LIST.BULLET
  57801. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57802. ></RBW-AUTOGEN
  57803. ></RBW-MARKER
  57804. ><RBW-PARABODY><CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="cpp_funcs.tcl"></RBW-IDXTERM
  57805. >cpp_funcs.tcl</CX5FX5FFILE.NAME
  57806. > </RBW-PARABODY
  57807. ></LB.LIST.BULLET
  57808. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57809. ></RBW-AUTOGEN
  57810. ></RBW-MARKER
  57811. ><RBW-PARABODY><CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="cpp_regen.tcl"></RBW-IDXTERM
  57812. >cpp_regen.tcl</CX5FX5FFILE.NAME
  57813. > </RBW-PARABODY
  57814. ></LB.LIST.BULLET
  57815. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57816. ></RBW-AUTOGEN
  57817. ></RBW-MARKER
  57818. ><RBW-PARABODY><CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="gen_db_fnc.tcl"></RBW-IDXTERM
  57819. >gen_db_fnc.tcl</CX5FX5FFILE.NAME
  57820. > </RBW-PARABODY
  57821. ></LB.LIST.BULLET
  57822. ><B.BODY>The file <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="check_conf.tcl"></RBW-IDXTERM
  57823. >check_conf.tcl</CX5FX5FFILE.NAME
  57824. > contains several configurable procedures like the definition of DBObject. These procedures can also be redefined using a customization file called<RBW-IDXTERM TERM1="u_check.tcl"></RBW-IDXTERM
  57825. > <CX5FX5FFILE.NAME>u_check.tcl</CX5FX5FFILE.NAME
  57826. >.</B.BODY
  57827. ></LABEL
  57828. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57829. ><RBW-ANCHOR ID="37212"></RBW-ANCHOR
  57830. >Where to Store User&truehy;defined Tcl Procedures</L.LABEL
  57831. ><B.BODY>The Tcl script files used for the default code generation are stored in the file system. They can be found in the following directories under <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  57832. >:</B.BODY
  57833. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><RBWAUTO-0023>n&rbwtab;</RBWAUTO-0023
  57834. ></RBW-AUTOGEN
  57835. ></RBW-MARKER
  57836. ><RBW-PARABODY><CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  57837. ></RBW-PARABODY
  57838. ></LB.LIST.BULLET
  57839. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57840. ></RBW-AUTOGEN
  57841. ></RBW-MARKER
  57842. ><RBW-PARABODY><CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  57843. >\<CX5FX5FFILE.NAME>pers&truehy;cplusplus</CX5FX5FFILE.NAME
  57844. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  57845. > </RBW-PARABODY
  57846. ></LB.LIST.BULLET
  57847. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57848. ></RBW-AUTOGEN
  57849. ></RBW-MARKER
  57850. ><RBW-PARABODY>the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  57851. > directory in the module directory of type PersistentCpp</RBW-PARABODY
  57852. ></LB.LIST.BULLET
  57853. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57854. ></RBW-AUTOGEN
  57855. ></RBW-MARKER
  57856. ><RBW-PARABODY>the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  57857. > directory in the module directory of type DevelEnv</RBW-PARABODY
  57858. ></LB.LIST.BULLET
  57859. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57860. ></RBW-AUTOGEN
  57861. ></RBW-MARKER
  57862. ><RBW-PARABODY>the <CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  57863. > directory in the module directory of type PersCppClassLib</RBW-PARABODY
  57864. ></LB.LIST.BULLET
  57865. ><B.BODY>If you want to adapt the default code generation, you can edit the Tcl files in this directory, but it is better to leave the original files untouched. You can make otsh use user&truehy;defined files by: </B.BODY
  57866. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57867. ></RBW-AUTOGEN
  57868. ></RBW-MARKER
  57869. ><RBW-PARABODY>Storing Tcl files as customization file in the repository</RBW-PARABODY
  57870. ></LB.LIST.BULLET
  57871. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57872. ></RBW-AUTOGEN
  57873. ></RBW-MARKER
  57874. ><RBW-PARABODY>Storing Tcl files as External File Versions in the same System as where the code is generated</RBW-PARABODY
  57875. ></LB.LIST.BULLET
  57876. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57877. ></RBW-AUTOGEN
  57878. ></RBW-MARKER
  57879. ><RBW-PARABODY>Storing Tcl files as External File Versions in a System called Tcl</RBW-PARABODY
  57880. ></LB.LIST.BULLET
  57881. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  57882. ></RBW-AUTOGEN
  57883. ></RBW-MARKER
  57884. ><RBW-PARABODY>Creating and activating a user&truehy;defined ObjectTeam module.</RBW-PARABODY
  57885. ></LB.LIST.BULLET
  57886. ><B.BODY>You can <CX5FX5FTITLE>overrule</CX5FX5FTITLE
  57887. > existing Tcl files or you can create new Tcl files with new user&truehy;defined Tcl procedures and thus <CX5FX5FTITLE>extending</CX5FX5FTITLE
  57888. > the default code generation. </B.BODY
  57889. ><B.BODY>Each of the storing methods listed above are discussed below.</B.BODY
  57890. ></LABEL
  57891. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57892. >Storing Tcl files as customization file in the repository</L.LABEL
  57893. ><B.BODY>The Browser level in which you store the customization file determines the extent to which the Tcl file must be used by otsh. A customization file stored on System level for instance, won’t affect the code generation for another system in the same Configuration. However, a customization file stored on Phase level will, provided there are no Tcl customization files of the same name stored on Implementation System level.</B.BODY
  57894. ><B.BODY>The Tcl file which is stored the closest in hierarchy to the current level (for example, System level) overrules all higher customization files by the same name.</B.BODY
  57895. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  57896. ></RBW-AUTOGEN
  57897. ></RBW-MARKER
  57898. ><RBW-PARABODY>To store a Tcl file:</RBW-PARABODY
  57899. ></P.PROCEDURE
  57900. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  57901. ></RBW-AUTOGEN
  57902. ></RBW-MARKER
  57903. ><RBW-PARABODY>Make the Browser level of your choice the current Browser level.</RBW-PARABODY
  57904. ></LN.LIST.NUM
  57905. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  57906. ></RBW-AUTOGEN
  57907. ></RBW-MARKER
  57908. ><RBW-PARABODY>Check your access rights to see if you are allowed to create customization files on the current Browser level.</RBW-PARABODY
  57909. ></LN.LIST.NUM
  57910. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  57911. ></RBW-AUTOGEN
  57912. ></RBW-MARKER
  57913. ><RBW-PARABODY>Open the <customization files> Browser object.</RBW-PARABODY
  57914. ></LN.LIST.NUM
  57915. ><LR.LIST.RESULT><CX5FX5FTITLE><customization files></CX5FX5FTITLE
  57916. > is now the current Browser object.</LR.LIST.RESULT
  57917. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  57918. ></RBW-AUTOGEN
  57919. ></RBW-MARKER
  57920. ><RBW-PARABODY>Select File | New | Customization File Version... from the menu bar.</RBW-PARABODY
  57921. ></LN.LIST.NUM
  57922. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  57923. ></RBW-AUTOGEN
  57924. ></RBW-MARKER
  57925. ><RBW-PARABODY>Enter a name for the tcl file (include the extension <CX5FX5FINPUT>.tcl</CX5FX5FINPUT
  57926. >).</RBW-PARABODY
  57927. ></LN.LIST.NUM
  57928. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  57929. ></RBW-MARKER
  57930. ><RBW-PARABODY>If you want to replace an existing file, enter the exact name of the default Tcl file you want to replace (for example, <CX5FX5FFILE.NAME>cpp_regen.tcl</CX5FX5FFILE.NAME
  57931. >). The default Tcl file of the corporate level will be ignored in that case.</RBW-PARABODY
  57932. ></LB2.LIST.BULLET.2
  57933. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  57934. ></RBW-MARKER
  57935. ><RBW-PARABODY>If you want to create a customization file in which you either redefine procedures from the default file or extend the default file with new procedures, enter the name of the default file with the prefix <CX5FX5FFILE.NAME>u_</CX5FX5FFILE.NAME
  57936. > (for example, <CX5FX5FFILE.NAME>u_gencpp.tcl</CX5FX5FFILE.NAME
  57937. >). The default Tcl file on corporate level will be sourced and will be complemented by the customization file.</RBW-PARABODY
  57938. ></LB2.LIST.BULLET.2
  57939. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  57940. ></RBW-AUTOGEN
  57941. ></RBW-MARKER
  57942. ><RBW-PARABODY>Open the new customization file.</RBW-PARABODY
  57943. ></LN.LIST.NUM
  57944. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  57945. ></RBW-AUTOGEN
  57946. ></RBW-MARKER
  57947. ><RBW-PARABODY>Enter the required Tcl code.</RBW-PARABODY
  57948. ></LN.LIST.NUM
  57949. ><LT.LIST.TEXT>If you are replacing an existing default Tcl file, you might include the contents of the default Tcl file first and make all the necessary changes later.</LT.LIST.TEXT
  57950. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  57951. ></RBW-AUTOGEN
  57952. ></RBW-MARKER
  57953. ><RBW-PARABODY>Save the customization file.</RBW-PARABODY
  57954. ></LN.LIST.NUM
  57955. ><LR.LIST.RESULT>The next time you generate code, the new Tcl customization file is sourced by otsh.</LR.LIST.RESULT
  57956. ></LABEL
  57957. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57958. >Storing Tcl files in the same System as where the code is generated</L.LABEL
  57959. ><B.BODY>One of the available file types on Implementation system level is <CX5FX5FTITLE>Tcl</CX5FX5FTITLE
  57960. >. You can create new files of this type and define user&truehy;defined Tcl procedures in such a file. During code generation, otsh sources all files of the type Tcl in the current system, regardless of their name.</B.BODY
  57961. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  57962. ></RBW-AUTOGEN
  57963. ></RBW-MARKER
  57964. ><RBW-PARABODY>To create a new file of type Tcl:</RBW-PARABODY
  57965. ></P.PROCEDURE
  57966. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  57967. ></RBW-AUTOGEN
  57968. ></RBW-MARKER
  57969. ><RBW-PARABODY>Open the Implementation System.</RBW-PARABODY
  57970. ></LN.LIST.NUM
  57971. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  57972. ></RBW-AUTOGEN
  57973. ></RBW-MARKER
  57974. ><RBW-PARABODY>Select File | New | Tcl.</RBW-PARABODY
  57975. ></LN.LIST.NUM
  57976. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  57977. ></RBW-AUTOGEN
  57978. ></RBW-MARKER
  57979. ><RBW-PARABODY>Enter a name for the tcl file (without the extension <CX5FX5FINPUT>.tcl</CX5FX5FINPUT
  57980. >).</RBW-PARABODY
  57981. ></LN.LIST.NUM
  57982. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  57983. ></RBW-AUTOGEN
  57984. ></RBW-MARKER
  57985. ><RBW-PARABODY>Edit and save the new Tcl file.</RBW-PARABODY
  57986. ></LN.LIST.NUM
  57987. ><LR.LIST.RESULT>The next time you generate code, the new Tcl file is sourced by otsh.</LR.LIST.RESULT
  57988. ></LABEL
  57989. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  57990. >Storing Tcl files in a System Tcl</L.LABEL
  57991. ><B.BODY>If you don’t want to store user&truehy;defined Tcl files in the same system in which your code is generated, you can decide to create a system called <CX5FX5FTITLE>Tcl</CX5FX5FTITLE
  57992. > and store your user&truehy;defined Tcl files in that system. Any Tcl file that is defined in such a system is sourced during code generation. You can use this mechanism for new user&truehy;defined Tcl files or for user&truehy;defined Tcl files that are meant to replace existing ones.</B.BODY
  57993. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  57994. ></RBW-AUTOGEN
  57995. ></RBW-MARKER
  57996. ><RBW-PARABODY>To create a new system named Tcl, and a new file of Tcl in that system:</RBW-PARABODY
  57997. ></P.PROCEDURE
  57998. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  57999. ></RBW-AUTOGEN
  58000. ></RBW-MARKER
  58001. ><RBW-PARABODY>Make sure the Browser is on Implementation level.</RBW-PARABODY
  58002. ></LN.LIST.NUM
  58003. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  58004. ></RBW-AUTOGEN
  58005. ></RBW-MARKER
  58006. ><RBW-PARABODY>Select File | New | System Version.</RBW-PARABODY
  58007. ></LN.LIST.NUM
  58008. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  58009. ></RBW-AUTOGEN
  58010. ></RBW-MARKER
  58011. ><RBW-PARABODY>Enter <CX5FX5FINPUT>Tcl</CX5FX5FINPUT
  58012. > as system name (be sure to use the case shown here).</RBW-PARABODY
  58013. ></LN.LIST.NUM
  58014. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  58015. ></RBW-AUTOGEN
  58016. ></RBW-MARKER
  58017. ><RBW-PARABODY>Open the system Tcl.</RBW-PARABODY
  58018. ></LN.LIST.NUM
  58019. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  58020. ></RBW-AUTOGEN
  58021. ></RBW-MARKER
  58022. ><RBW-PARABODY>Select File | New | Tcl.</RBW-PARABODY
  58023. ></LN.LIST.NUM
  58024. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  58025. ></RBW-AUTOGEN
  58026. ></RBW-MARKER
  58027. ><RBW-PARABODY>Enter a name for the Tcl file (without the extension <CX5FX5FINPUT>.tcl</CX5FX5FINPUT
  58028. >).</RBW-PARABODY
  58029. ></LN.LIST.NUM
  58030. ><LT.LIST.TEXT>You can enter the name of an existing Tcl file used for code generation (e.g. <CX5FX5FFILE.NAME>cpp_regen.tcl</CX5FX5FFILE.NAME
  58031. >) or any other name. If you enter an existing name, the original Tcl file is replaced by this new file during code generation.</LT.LIST.TEXT
  58032. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  58033. ></RBW-AUTOGEN
  58034. ></RBW-MARKER
  58035. ><RBW-PARABODY>Edit and save the new Tcl file.</RBW-PARABODY
  58036. ></LN.LIST.NUM
  58037. ><LR.LIST.RESULT>The next time you generate code, the new Tcl file is sourced by otsh.</LR.LIST.RESULT
  58038. ></LABEL
  58039. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58040. >Creating a user&truehy;defined module</L.LABEL
  58041. ><B.BODY>Besides storing customized Tcl files as customization files or as External File Version, you can create a user&truehy;defined ObjectTeam module. You can then copy over all the files from the corresponding default module directory provided by Cayenne to your user&truehy;defined module, and edit the customization files directly. Finally, you activate it.</B.BODY
  58042. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  58043. ></RBW-AUTOGEN
  58044. >In a user&truehy;defined module, you cannot extend the default files with your own procedures or redefine existing procedures through an <CX5FX5FFILE.NAME>u_ *.tcl</CX5FX5FFILE.NAME
  58045. > file. You have to edit the Tcl files directly.</N.NOTE
  58046. ></LABEL
  58047. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58048. ><RBW-IDXTERM TERM1="Tcl" TERM2="script files, testing"></RBW-IDXTERM
  58049. >Testing Tcl files</L.LABEL
  58050. ><B.BODY>If you want to test a customized Tcl file before you insert it into the repository of ObjectTeam, you can decide to create the Tcl file in your file system and feed it to otsh outside the ObjectTeam environment. </B.BODY
  58051. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  58052. ><CX5FX5FTITLE></CX5FX5FTITLE
  58053. > for details on how to start otsh from the command line.</B.BODY
  58054. ><B.BODY>When the Tcl file has reached its final state, you can decide to incorporate it in the repository, as described above. </B.BODY
  58055. ></LABEL
  58056. ></SECTION
  58057. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="14052"></RBW-ANCHOR
  58058. >Customizing Data <RBW-IDXTERM TERM1="data type" TERM2="customizing"></RBW-IDXTERM
  58059. >Types</S.SECTION.HEAD
  58060. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58061. >Standard data types</L.LABEL
  58062. ><B.BODY>In the Object Design phase you can use standard types to define data types of data attributes and parameters. All the valid standard types are stored in the following file:</B.BODY
  58063. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  58064. >\modules\pers&truehy;cpp&truehy;<RBWAUTO-0022>RDBMS</RBWAUTO-0022
  58065. >\etc\<RBW-IDXTERM TERM1="lang_types"></RBW-IDXTERM
  58066. >lang_types.<CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  58067. ></B.BODY
  58068. ><B.BODY>This file also contains minimum and maximum values for the standard types.</B.BODY
  58069. ><B.BODY>Whenever you generate code or check a diagram’s contents, the data types used in the diagram are checked against the data types in the standard types file. This checking is always carried out, even when you don’t generate persistent code.</B.BODY
  58070. ><B.BODY>During code generation, the standard types are mapped to:</B.BODY
  58071. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  58072. ></RBW-AUTOGEN
  58073. ></RBW-MARKER
  58074. ><RBW-PARABODY>C++ types (see <RBW-XREF REFID="37444" TYPE="XREF-TEXTCOPY">page E–90</RBW-XREF
  58075. >)</RBW-PARABODY
  58076. ></LB.LIST.BULLET
  58077. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  58078. ></RBW-AUTOGEN
  58079. ></RBW-MARKER
  58080. ><RBW-PARABODY>SQL types (<RBW-XREF REFID="23446" TYPE="XREF-TEXTCOPY">page E–92</RBW-XREF
  58081. >)</RBW-PARABODY
  58082. ></LB.LIST.BULLET
  58083. ></LABEL
  58084. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58085. >What does the stand_types file look like?</L.LABEL
  58086. ><B.BODY>Here is an example of a <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58087. > file for the Generic package. </B.BODY
  58088. ><B.BODY>The columns <CX5FX5FPROCEDURE.NAME>Min 1</CX5FX5FPROCEDURE.NAME
  58089. >, <CX5FX5FPROCEDURE.NAME>Max 1</CX5FX5FPROCEDURE.NAME
  58090. > and <CX5FX5FPROCEDURE.NAME>Min 2</CX5FX5FPROCEDURE.NAME
  58091. > and <CX5FX5FPROCEDURE.NAME>Max 2</CX5FX5FPROCEDURE.NAME
  58092. > can be used to specify constraints on array size or format values of the standard types.</B.BODY
  58093. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58094. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58095. ><EWM.EXAMPLEW.MONO># Copyright (c) 1992&truehy;1996 by Cayenne Software, Inc.</EWM.EXAMPLEW.MONO
  58096. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58097. ><EWM.EXAMPLEW.MONO># This software is furnished under a license and may be used only in</EWM.EXAMPLEW.MONO
  58098. ><EWM.EXAMPLEW.MONO># accordance with the terms of such license and with the inclusion of</EWM.EXAMPLEW.MONO
  58099. ><EWM.EXAMPLEW.MONO># the above copyright notice. This software or any other copies thereof</EWM.EXAMPLEW.MONO
  58100. ><EWM.EXAMPLEW.MONO># may not be provided or otherwise made available to any other person.</EWM.EXAMPLEW.MONO
  58101. ><EWM.EXAMPLEW.MONO># No title to and ownership of the software is hereby transferred.</EWM.EXAMPLEW.MONO
  58102. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58103. ><EWM.EXAMPLEW.MONO># The information in this software is subject to change without notice</EWM.EXAMPLEW.MONO
  58104. ><EWM.EXAMPLEW.MONO># and should not be construed as a commitment by Cayenne Software, Inc.</EWM.EXAMPLEW.MONO
  58105. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58106. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58107. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58108. ><EWM.EXAMPLEW.MONO>#       File            : @(#)stand_types       1.4</EWM.EXAMPLEW.MONO
  58109. ><EWM.EXAMPLEW.MONO>#       Original date   : 7&truehy;1992</EWM.EXAMPLEW.MONO
  58110. ><EWM.EXAMPLEW.MONO>#       Description     : Configuration file for standard GEN datatypes</EWM.EXAMPLEW.MONO
  58111. ><EWM.EXAMPLEW.MONO>#                         given values are examples</EWM.EXAMPLEW.MONO
  58112. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58113. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58114. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58115. ><EWM.EXAMPLEW.MONO># @(#)stand_types       1.4\t12/24/93 Copyright 1992&truehy;1996 Cayenne Software</EWM.EXAMPLEW.MONO
  58116. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58117. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58118. ><EWM.EXAMPLEW.MONO># StandardType                  | Min 1 | Max 1 | Min 2 | Max 2</EWM.EXAMPLEW.MONO
  58119. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58120. ><EWM.EXAMPLEW.MONO>char                            |0      |32767  |0      |0</EWM.EXAMPLEW.MONO
  58121. ><EWM.EXAMPLEW.MONO>uns_char                        |0      |32767  |0      |0</EWM.EXAMPLEW.MONO
  58122. ><EWM.EXAMPLEW.MONO>varchar                         |1      |254    |0      |0</EWM.EXAMPLEW.MONO
  58123. ><EWM.EXAMPLEW.MONO>dec                             |0      |32     |0      |32</EWM.EXAMPLEW.MONO
  58124. ><EWM.EXAMPLEW.MONO>decimal                         |0      |32     |0      |32</EWM.EXAMPLEW.MONO
  58125. ><EWM.EXAMPLEW.MONO>double_precision                |0      |13     |0      |0</EWM.EXAMPLEW.MONO
  58126. ><EWM.EXAMPLEW.MONO>float                           |0      |13     |0      |0</EWM.EXAMPLEW.MONO
  58127. ><EWM.EXAMPLEW.MONO>double                          |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58128. ><EWM.EXAMPLEW.MONO>int                             |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58129. ><EWM.EXAMPLEW.MONO>integer                         |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58130. ><EWM.EXAMPLEW.MONO>unsigned                        |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58131. ><EWM.EXAMPLEW.MONO>short                           |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58132. ><EWM.EXAMPLEW.MONO>uns_short                       |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58133. ><EWM.EXAMPLEW.MONO>long                            |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58134. ><EWM.EXAMPLEW.MONO>uns_long                        |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58135. ><EWM.EXAMPLEW.MONO>numeric                         |0      |32     |0      |32</EWM.EXAMPLEW.MONO
  58136. ><EWM.EXAMPLEW.MONO>real                            |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58137. ><EWM.EXAMPLEW.MONO>smallint                        |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58138. ><EWM.EXAMPLEW.MONO>genptr                          |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58139. ><EWM.EXAMPLEW.MONO>notype                          |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58140. ><EWM.EXAMPLEW.MONO>flag                            |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58141. ><EWM.EXAMPLEW.MONO>flag_t                          |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58142. ><EWM.EXAMPLEW.MONO>class_type                      |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58143. ><EWM.EXAMPLEW.MONO>object_id                       |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58144. ><EWM.EXAMPLEW.MONO>enum                            |0      |0      |0      |0</EWM.EXAMPLEW.MONO
  58145. ></LABEL
  58146. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58147. ><RBW-ANCHOR ID="18910"></RBW-ANCHOR
  58148. >Customizing the default stand_types file </L.LABEL
  58149. ><B.BODY>You can create a customization file <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58150. > if you want to extend or change the default <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58151. > file. You can do that by selecting File | New on the Browser level of your choice with the pseudo object <CX5FX5FTITLE><customization files></CX5FX5FTITLE
  58152. > as the current object. The name of the new customization file must be <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58153. >. After you have created the file, you can edit it and save it.</B.BODY
  58154. ><B.BODY>The next time you generate code, your user&truehy;defined customization file is evaluated instead of the customization file on Corporate level. The nearest customization file overrules all other customization files that might be defined on higher levels. So if you have, for instance, a user&truehy;defined customization file <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58155. > defined on Configuration level, Project level, and System level, the one on System level overrules all the other ones.</B.BODY
  58156. ></LABEL
  58157. ><SUBSECTION><SS.SUBSEC.HEAD>Customizing <RBW-IDXTERM TERM1="C++ types"></RBW-IDXTERM
  58158. ><RBW-ANCHOR ID="37444"></RBW-ANCHOR
  58159. >C++ Types</SS.SUBSEC.HEAD
  58160. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58161. >Mapping standard types to C++ types</L.LABEL
  58162. ><B.BODY>C++ types are data types that are supported by the ESQLC++ implementation of the Relational Database System (RDBMS) used. If you are not using an RDBMS, the standard types are mapped to standard C++ types.</B.BODY
  58163. ><B.BODY>The mapping is taken care of by the following customization file:</B.BODY
  58164. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  58165. >\modules\pers&truehy;cpp&truehy;<RBWAUTO-0022>RDBMS</RBWAUTO-0022
  58166. >\etc\<RBW-IDXTERM TERM1="lang_types"></RBW-IDXTERM
  58167. >lang_types.<CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  58168. ></B.BODY
  58169. ></LABEL
  58170. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58171. >What does the lang_types file look like?</L.LABEL
  58172. ><B.BODY>Here is an example of a <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58173. > file for the Informix package. </B.BODY
  58174. ><B.BODY>The first column in this file lists the standard types. These must be consistent with the types in the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58175. > file. The second column lists the C types the standard types must be mapped upon. In the column <CX5FX5FINPUT>range</CX5FX5FINPUT
  58176. > the type of brackets used in the target language is indicated.</B.BODY
  58177. ><EWM.EXAMPLEW.MONO>#       File            : @(#)lang_types        1.5 (1.7)</EWM.EXAMPLEW.MONO
  58178. ><EWM.EXAMPLEW.MONO>#       Original date   : 7&truehy;1992</EWM.EXAMPLEW.MONO
  58179. ><EWM.EXAMPLEW.MONO>#       Description     : Translates standard types into C++ types</EWM.EXAMPLEW.MONO
  58180. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58181. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58182. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58183. ><EWM.EXAMPLEW.MONO># @(#)lang_types        1.5\t24 Dec 1993 Copyright 1996 Cayenne Software </EWM.EXAMPLEW.MONO
  58184. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58185. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58186. ><EWM.EXAMPLEW.MONO># Standard type             | Informix       | range</EWM.EXAMPLEW.MONO
  58187. ><EWM.EXAMPLEW.MONO>#                           | C type         |</EWM.EXAMPLEW.MONO
  58188. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58189. ><EWM.EXAMPLEW.MONO>byte                        | loc_t          | *</EWM.EXAMPLEW.MONO
  58190. ><EWM.EXAMPLEW.MONO>char                        | char           | []</EWM.EXAMPLEW.MONO
  58191. ><EWM.EXAMPLEW.MONO>uns_char                    | unsigned char  | []</EWM.EXAMPLEW.MONO
  58192. ><EWM.EXAMPLEW.MONO>date                        | long int       | *</EWM.EXAMPLEW.MONO
  58193. ><EWM.EXAMPLEW.MONO>datetime_year_to_day        | char[30]       | *</EWM.EXAMPLEW.MONO
  58194. ><EWM.EXAMPLEW.MONO>datetime_hour_to_minute     | char[30]       | *</EWM.EXAMPLEW.MONO
  58195. ><EWM.EXAMPLEW.MONO>datetime_year_to_fraction   | char[30]       | *</EWM.EXAMPLEW.MONO
  58196. ><EWM.EXAMPLEW.MONO>dec                         | double         | *</EWM.EXAMPLEW.MONO
  58197. ><EWM.EXAMPLEW.MONO>decimal                     | double         | *</EWM.EXAMPLEW.MONO
  58198. ><EWM.EXAMPLEW.MONO>double_precision            | double         | *</EWM.EXAMPLEW.MONO
  58199. ><EWM.EXAMPLEW.MONO>float                       | double         | *</EWM.EXAMPLEW.MONO
  58200. ><EWM.EXAMPLEW.MONO>double                      | double         | *</EWM.EXAMPLEW.MONO
  58201. ><EWM.EXAMPLEW.MONO>short                       | short          | *</EWM.EXAMPLEW.MONO
  58202. ><EWM.EXAMPLEW.MONO>uns_short                   | unsigned short | *</EWM.EXAMPLEW.MONO
  58203. ><EWM.EXAMPLEW.MONO>int                         | long int       | *</EWM.EXAMPLEW.MONO
  58204. ></LABEL
  58205. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58206. >Customizing the default lang_types file </L.LABEL
  58207. ><B.BODY>You can also create customization files for the <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  58208. > file. The way to do that is analogous to creating a customization file for the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58209. > file (see <RBW-XREF REFID="18910" TYPE="XREF-TEXTCOPY">page E–88</RBW-XREF
  58210. >).</B.BODY
  58211. ></LABEL
  58212. ></SUBSECTION
  58213. ><SUBSECTION><SS.SUBSEC.HEAD>Customizing <RBW-IDXTERM TERM1="SQL types"></RBW-IDXTERM
  58214. ><RBW-ANCHOR ID="23446"></RBW-ANCHOR
  58215. >SQL Types</SS.SUBSEC.HEAD
  58216. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58217. >Mapping standard types to SQL types</L.LABEL
  58218. ><B.BODY>SQL types are data types that are supported by the SQL implementation of the RDBMS used. If you are not using an RDBMS, the standard types are mapped to ANSI SQL types.</B.BODY
  58219. ><B.BODY>The mapping is taken care of by the following configuration file:</B.BODY
  58220. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  58221. >\modules\pers&truehy;cpp&truehy;<RBWAUTO-0022>RDBMS</RBWAUTO-0022
  58222. >\etc\db_types.db_types</B.BODY
  58223. ></LABEL
  58224. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58225. >What does the db_types file look like?</L.LABEL
  58226. ><B.BODY>Here is an example of a <CX5FX5FFILE.NAME>db_types.db_types</CX5FX5FFILE.NAME
  58227. > file for the Informix package. </B.BODY
  58228. ><B.BODY>The first column in this file lists the standard types. These must be consistent with the types in the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58229. > file. The second column lists the SQL types the standard types must be mapped upon. In the column has <CX5FX5FINPUT>range</CX5FX5FINPUT
  58230. > the type of brackets used in the target language is indicated.</B.BODY
  58231. ><EWM.EXAMPLEW.MONO>#       File            : @(#)db_types  1.2 (1.9)</EWM.EXAMPLEW.MONO
  58232. ><EWM.EXAMPLEW.MONO>#       Original date   : June 6, 1992</EWM.EXAMPLEW.MONO
  58233. ><EWM.EXAMPLEW.MONO>#       Description     : Configuration file used for mapping</EWM.EXAMPLEW.MONO
  58234. ><EWM.EXAMPLEW.MONO>#                         standard datatypes to Informix 4GL(SQL) datatypes</EWM.EXAMPLEW.MONO
  58235. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58236. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58237. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58238. ><EWM.EXAMPLEW.MONO># @(#)db_types  1.2\t29 Jul 1993 Copyright 1990, 1992 Cayenne Software</EWM.EXAMPLEW.MONO
  58239. ><EWM.EXAMPLEW.MONO>#</EWM.EXAMPLEW.MONO
  58240. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58241. ><EWM.EXAMPLEW.MONO># standard type                | Informix type                  | has range?</EWM.EXAMPLEW.MONO
  58242. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  58243. ><EWM.EXAMPLEW.MONO>byte                           | BYTE                           | *</EWM.EXAMPLEW.MONO
  58244. ><EWM.EXAMPLEW.MONO>char                           | CHAR                           | ()</EWM.EXAMPLEW.MONO
  58245. ><EWM.EXAMPLEW.MONO>date                           | DATE                           | *</EWM.EXAMPLEW.MONO
  58246. ><EWM.EXAMPLEW.MONO># some examples of DATETIME</EWM.EXAMPLEW.MONO
  58247. ><EWM.EXAMPLEW.MONO>datetime_year_to_day           | DATETIME YEAR TO DAY           | *</EWM.EXAMPLEW.MONO
  58248. ><EWM.EXAMPLEW.MONO>datetime_hour_to_minute        | DATETIME HOUR TO MINUTE        | *</EWM.EXAMPLEW.MONO
  58249. ><EWM.EXAMPLEW.MONO>datetime_year_to_fraction      | DATETIME YEAR TO FRACTION      | ()</EWM.EXAMPLEW.MONO
  58250. ><EWM.EXAMPLEW.MONO>dec                            | DEC                            | ()</EWM.EXAMPLEW.MONO
  58251. ><EWM.EXAMPLEW.MONO>decimal                        | DECIMAL                        | ()</EWM.EXAMPLEW.MONO
  58252. ><EWM.EXAMPLEW.MONO>double_precision               | DOUBLE PRECISION               | ()</EWM.EXAMPLEW.MONO
  58253. ><EWM.EXAMPLEW.MONO>float                          | FLOAT                          | ()</EWM.EXAMPLEW.MONO
  58254. ><EWM.EXAMPLEW.MONO>int                            | INT                            | *</EWM.EXAMPLEW.MONO
  58255. ><EWM.EXAMPLEW.MONO>integer                        | INTEGER                        | *</EWM.EXAMPLEW.MONO
  58256. ></LABEL
  58257. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58258. >Customizing the default db_types file </L.LABEL
  58259. ><B.BODY>You can also create customization files for the <CX5FX5FFILE.NAME>db_types.db_types</CX5FX5FFILE.NAME
  58260. > file. The way to do that is analogous to creating a customization file for the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  58261. > file (see <RBW-XREF REFID="18910" TYPE="XREF-TEXTCOPY">page E–88</RBW-XREF
  58262. >).</B.BODY
  58263. ></LABEL
  58264. ></SUBSECTION
  58265. ></SECTION
  58266. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="11865"></RBW-ANCHOR
  58267. >Customizing <RBW-IDXTERM TERM1="referential integrity" TERM2="SQL generation"></RBW-IDXTERM
  58268. >Referential Integrity Policies</S.SECTION.HEAD
  58269. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58270. >SQL rules file</L.LABEL
  58271. ><B.BODY>ObjectTeam offers the possibility to incorporate rules for referential integrity checking in the database. The default Referential Integrity rules are specified in the following customization file:</B.BODY
  58272. ><LT.LIST.TEXT><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  58273. >\etc\<RBW-IDXTERM TERM1="sqlrules"></RBW-IDXTERM
  58274. >sqlrules </LT.LIST.TEXT
  58275. ><B.BODY>In this file, a rule is specified for every type of association, aggregation and generalization. The rules, specified in the last column of the file, refer to Tcl procedures. </B.BODY
  58276. ><B.BODY>During persistent code generation, the Tcl procedure specified for the specific type of relation is called. The SQL code that is generated by this procedure is inserted in the SQL script <CX5FX5FFILE.NAME>create_procs</CX5FX5FFILE.NAME
  58277. >. See the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  58278. ><CX5FX5FTITLE></CX5FX5FTITLE
  58279. > for an overview of the mapping of the different types of relations to the SQL model.</B.BODY
  58280. ></LABEL
  58281. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58282. >What does the sqlrules file look like?</L.LABEL
  58283. ><B.BODY>Here is an example of the customization file <CX5FX5FFILE.NAME>sqlrules</CX5FX5FFILE.NAME
  58284. >:</B.BODY
  58285. ><RBW-TABLE><TGROUP COLS="9"><COLSPEC COLNAME="1" COLWIDTH="64p"><COLSPEC COLNAME="2" COLWIDTH="58p"><COLSPEC COLNAME="3" COLWIDTH="60p"><COLSPEC COLNAME="4" COLWIDTH="67p"><COLSPEC COLNAME="5" COLWIDTH="67p"><COLSPEC COLNAME="6" COLWIDTH="61p"><COLSPEC COLNAME="7" COLWIDTH="67p"><COLSPEC COLNAME="8" COLWIDTH="72p"><COLSPEC COLNAME="9" COLWIDTH="103p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>#rela</CELLHEADING
  58286. ><CELLHEADING>#tion</CELLHEADING
  58287. ><CELLHEADING>#type</CELLHEADING
  58288. ></ENTRY
  58289. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>opera</CELLHEADING
  58290. ><CELLHEADING>tion</CELLHEADING
  58291. ></ENTRY
  58292. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>table </CELLHEADING
  58293. ><CELLHEADING>type</CELLHEADING
  58294. ></ENTRY
  58295. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>master</CELLHEADING
  58296. ><CELLHEADING>type</CELLHEADING
  58297. ></ENTRY
  58298. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>detail</CELLHEADING
  58299. ><CELLHEADING>type</CELLHEADING
  58300. ></ENTRY
  58301. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLHEADING>source</CELLHEADING
  58302. ><CELLHEADING>type</CELLHEADING
  58303. ><CELLHEADING>detail</CELLHEADING
  58304. ></ENTRY
  58305. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLHEADING>policy</CELLHEADING
  58306. ></ENTRY
  58307. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLHEADING>allowed</CELLHEADING
  58308. ></ENTRY
  58309. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLHEADING>rule</CELLHEADING
  58310. ></ENTRY
  58311. ></RBW-ROW
  58312. ></THEAD
  58313. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>#&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58314. ></CELLBODY
  58315. ></ENTRY
  58316. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58317. ></CELLBODY
  58318. ></ENTRY
  58319. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58320. ></CELLBODY
  58321. ></ENTRY
  58322. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58323. ></CELLBODY
  58324. ></ENTRY
  58325. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58326. ></CELLBODY
  58327. ></ENTRY
  58328. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58329. ></CELLBODY
  58330. ></ENTRY
  58331. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58332. ></CELLBODY
  58333. ></ENTRY
  58334. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58335. ></CELLBODY
  58336. ></ENTRY
  58337. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58338. ></CELLBODY
  58339. ></ENTRY
  58340. ></RBW-ROW
  58341. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58342. ></ENTRY
  58343. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58344. ></ENTRY
  58345. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58346. ></ENTRY
  58347. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58348. ></ENTRY
  58349. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58350. ></ENTRY
  58351. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58352. ></ENTRY
  58353. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>none     </CELLBODY
  58354. ></ENTRY
  58355. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>default </CELLBODY
  58356. ></ENTRY
  58357. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>none</CELLBODY
  58358. ></ENTRY
  58359. ></RBW-ROW
  58360. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58361. ></ENTRY
  58362. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58363. ></ENTRY
  58364. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58365. ></ENTRY
  58366. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58367. ></ENTRY
  58368. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58369. ></ENTRY
  58370. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58371. ></ENTRY
  58372. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>restrict </CELLBODY
  58373. ></ENTRY
  58374. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58375. ></ENTRY
  58376. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_not_exist</CELLBODY
  58377. ></ENTRY
  58378. ></RBW-ROW
  58379. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58380. ></ENTRY
  58381. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58382. ></ENTRY
  58383. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58384. ></ENTRY
  58385. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58386. ></ENTRY
  58387. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58388. ></ENTRY
  58389. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58390. ></ENTRY
  58391. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>cascade  </CELLBODY
  58392. ></ENTRY
  58393. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58394. ></ENTRY
  58395. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>not_applicable</CELLBODY
  58396. ></ENTRY
  58397. ></RBW-ROW
  58398. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>#&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58399. ></CELLBODY
  58400. ></ENTRY
  58401. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58402. ></CELLBODY
  58403. ></ENTRY
  58404. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58405. ></CELLBODY
  58406. ></ENTRY
  58407. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58408. ></CELLBODY
  58409. ></ENTRY
  58410. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58411. ></CELLBODY
  58412. ></ENTRY
  58413. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58414. ></CELLBODY
  58415. ></ENTRY
  58416. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58417. ></CELLBODY
  58418. ></ENTRY
  58419. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58420. ></CELLBODY
  58421. ></ENTRY
  58422. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58423. ></CELLBODY
  58424. ></ENTRY
  58425. ></RBW-ROW
  58426. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58427. ></ENTRY
  58428. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58429. ></ENTRY
  58430. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58431. ></ENTRY
  58432. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58433. ></ENTRY
  58434. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58435. ></ENTRY
  58436. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58437. ></ENTRY
  58438. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>none     </CELLBODY
  58439. ></ENTRY
  58440. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>default </CELLBODY
  58441. ></ENTRY
  58442. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>none</CELLBODY
  58443. ></ENTRY
  58444. ></RBW-ROW
  58445. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58446. ></ENTRY
  58447. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58448. ></ENTRY
  58449. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58450. ></ENTRY
  58451. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58452. ></ENTRY
  58453. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58454. ></ENTRY
  58455. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58456. ></ENTRY
  58457. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>restrict </CELLBODY
  58458. ></ENTRY
  58459. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58460. ></ENTRY
  58461. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_not_exist</CELLBODY
  58462. ></ENTRY
  58463. ></RBW-ROW
  58464. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58465. ></ENTRY
  58466. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58467. ></ENTRY
  58468. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58469. ></ENTRY
  58470. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58471. ></ENTRY
  58472. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58473. ></ENTRY
  58474. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58475. ></ENTRY
  58476. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>cascade  </CELLBODY
  58477. ></ENTRY
  58478. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58479. ></ENTRY
  58480. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>not_applicable</CELLBODY
  58481. ></ENTRY
  58482. ></RBW-ROW
  58483. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>#&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58484. ></CELLBODY
  58485. ></ENTRY
  58486. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58487. ></CELLBODY
  58488. ></ENTRY
  58489. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58490. ></CELLBODY
  58491. ></ENTRY
  58492. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58493. ></CELLBODY
  58494. ></ENTRY
  58495. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58496. ></CELLBODY
  58497. ></ENTRY
  58498. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58499. ></CELLBODY
  58500. ></ENTRY
  58501. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58502. ></CELLBODY
  58503. ></ENTRY
  58504. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58505. ></CELLBODY
  58506. ></ENTRY
  58507. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58508. ></CELLBODY
  58509. ></ENTRY
  58510. ></RBW-ROW
  58511. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58512. ></ENTRY
  58513. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58514. ></ENTRY
  58515. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58516. ></ENTRY
  58517. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58518. ></ENTRY
  58519. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58520. ></ENTRY
  58521. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58522. ></ENTRY
  58523. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>none     </CELLBODY
  58524. ></ENTRY
  58525. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58526. ></ENTRY
  58527. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>not_applicable</CELLBODY
  58528. ></ENTRY
  58529. ></RBW-ROW
  58530. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58531. ></ENTRY
  58532. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58533. ></ENTRY
  58534. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58535. ></ENTRY
  58536. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58537. ></ENTRY
  58538. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58539. ></ENTRY
  58540. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58541. ></ENTRY
  58542. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>restrict </CELLBODY
  58543. ></ENTRY
  58544. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>default </CELLBODY
  58545. ></ENTRY
  58546. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_not_exist</CELLBODY
  58547. ></ENTRY
  58548. ></RBW-ROW
  58549. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58550. ></ENTRY
  58551. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58552. ></ENTRY
  58553. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58554. ></ENTRY
  58555. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58556. ></ENTRY
  58557. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58558. ></ENTRY
  58559. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58560. ></ENTRY
  58561. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>cascade  </CELLBODY
  58562. ></ENTRY
  58563. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes     </CELLBODY
  58564. ></ENTRY
  58565. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>ins_in_master</CELLBODY
  58566. ></ENTRY
  58567. ></RBW-ROW
  58568. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>#&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58569. ></CELLBODY
  58570. ></ENTRY
  58571. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58572. ></CELLBODY
  58573. ></ENTRY
  58574. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58575. ></CELLBODY
  58576. ></ENTRY
  58577. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58578. ></CELLBODY
  58579. ></ENTRY
  58580. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58581. ></CELLBODY
  58582. ></ENTRY
  58583. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58584. ></CELLBODY
  58585. ></ENTRY
  58586. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58587. ></CELLBODY
  58588. ></ENTRY
  58589. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58590. ></CELLBODY
  58591. ></ENTRY
  58592. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58593. ></CELLBODY
  58594. ></ENTRY
  58595. ></RBW-ROW
  58596. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58597. ></ENTRY
  58598. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58599. ></ENTRY
  58600. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58601. ></ENTRY
  58602. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58603. ></ENTRY
  58604. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58605. ></ENTRY
  58606. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58607. ></ENTRY
  58608. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>none     </CELLBODY
  58609. ></ENTRY
  58610. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58611. ></ENTRY
  58612. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>none</CELLBODY
  58613. ></ENTRY
  58614. ></RBW-ROW
  58615. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58616. ></ENTRY
  58617. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58618. ></ENTRY
  58619. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58620. ></ENTRY
  58621. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58622. ></ENTRY
  58623. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58624. ></ENTRY
  58625. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58626. ></ENTRY
  58627. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>restrict </CELLBODY
  58628. ></ENTRY
  58629. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>default </CELLBODY
  58630. ></ENTRY
  58631. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_not_exist</CELLBODY
  58632. ></ENTRY
  58633. ></RBW-ROW
  58634. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58635. ></ENTRY
  58636. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>insert </CELLBODY
  58637. ></ENTRY
  58638. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58639. ></ENTRY
  58640. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58641. ></ENTRY
  58642. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58643. ></ENTRY
  58644. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58645. ></ENTRY
  58646. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>cascade  </CELLBODY
  58647. ></ENTRY
  58648. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes     </CELLBODY
  58649. ></ENTRY
  58650. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>ins_in_master</CELLBODY
  58651. ></ENTRY
  58652. ></RBW-ROW
  58653. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>#&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58654. ></CELLBODY
  58655. ></ENTRY
  58656. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58657. ></CELLBODY
  58658. ></ENTRY
  58659. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58660. ></CELLBODY
  58661. ></ENTRY
  58662. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58663. ></CELLBODY
  58664. ></ENTRY
  58665. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58666. ></CELLBODY
  58667. ></ENTRY
  58668. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58669. ></CELLBODY
  58670. ></ENTRY
  58671. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58672. ></CELLBODY
  58673. ></ENTRY
  58674. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58675. ></CELLBODY
  58676. ></ENTRY
  58677. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58678. ></CELLBODY
  58679. ></ENTRY
  58680. ></RBW-ROW
  58681. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58682. ></ENTRY
  58683. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58684. ></ENTRY
  58685. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58686. ></ENTRY
  58687. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58688. ></ENTRY
  58689. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58690. ></ENTRY
  58691. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58692. ></ENTRY
  58693. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>none     </CELLBODY
  58694. ></ENTRY
  58695. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58696. ></ENTRY
  58697. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>none</CELLBODY
  58698. ></ENTRY
  58699. ></RBW-ROW
  58700. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58701. ></ENTRY
  58702. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58703. ></ENTRY
  58704. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58705. ></ENTRY
  58706. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58707. ></ENTRY
  58708. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58709. ></ENTRY
  58710. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58711. ></ENTRY
  58712. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>restrict </CELLBODY
  58713. ></ENTRY
  58714. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>default </CELLBODY
  58715. ></ENTRY
  58716. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_exist</CELLBODY
  58717. ></ENTRY
  58718. ></RBW-ROW
  58719. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58720. ></ENTRY
  58721. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58722. ></ENTRY
  58723. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58724. ></ENTRY
  58725. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58726. ></ENTRY
  58727. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58728. ></ENTRY
  58729. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58730. ></ENTRY
  58731. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>nullify  </CELLBODY
  58732. ></ENTRY
  58733. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes     </CELLBODY
  58734. ></ENTRY
  58735. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>nullify_detail</CELLBODY
  58736. ></ENTRY
  58737. ></RBW-ROW
  58738. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58739. ></ENTRY
  58740. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58741. ></ENTRY
  58742. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58743. ></ENTRY
  58744. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58745. ></ENTRY
  58746. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58747. ></ENTRY
  58748. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58749. ></ENTRY
  58750. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>cascade  </CELLBODY
  58751. ></ENTRY
  58752. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes     </CELLBODY
  58753. ></ENTRY
  58754. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>upd_in_detail</CELLBODY
  58755. ></ENTRY
  58756. ></RBW-ROW
  58757. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>#&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58758. ></CELLBODY
  58759. ></ENTRY
  58760. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58761. ></CELLBODY
  58762. ></ENTRY
  58763. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58764. ></CELLBODY
  58765. ></ENTRY
  58766. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58767. ></CELLBODY
  58768. ></ENTRY
  58769. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58770. ></CELLBODY
  58771. ></ENTRY
  58772. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58773. ></CELLBODY
  58774. ></ENTRY
  58775. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58776. ></CELLBODY
  58777. ></ENTRY
  58778. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58779. ></CELLBODY
  58780. ></ENTRY
  58781. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58782. ></CELLBODY
  58783. ></ENTRY
  58784. ></RBW-ROW
  58785. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58786. ></ENTRY
  58787. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58788. ></ENTRY
  58789. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58790. ></ENTRY
  58791. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58792. ></ENTRY
  58793. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58794. ></ENTRY
  58795. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58796. ></ENTRY
  58797. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>none     </CELLBODY
  58798. ></ENTRY
  58799. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58800. ></ENTRY
  58801. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>none</CELLBODY
  58802. ></ENTRY
  58803. ></RBW-ROW
  58804. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58805. ></ENTRY
  58806. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58807. ></ENTRY
  58808. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58809. ></ENTRY
  58810. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58811. ></ENTRY
  58812. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58813. ></ENTRY
  58814. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58815. ></ENTRY
  58816. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>restrict </CELLBODY
  58817. ></ENTRY
  58818. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>default </CELLBODY
  58819. ></ENTRY
  58820. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_exist</CELLBODY
  58821. ></ENTRY
  58822. ></RBW-ROW
  58823. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58824. ></ENTRY
  58825. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58826. ></ENTRY
  58827. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58828. ></ENTRY
  58829. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58830. ></ENTRY
  58831. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58832. ></ENTRY
  58833. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58834. ></ENTRY
  58835. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>nullify  </CELLBODY
  58836. ></ENTRY
  58837. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58838. ></ENTRY
  58839. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>not_applicable</CELLBODY
  58840. ></ENTRY
  58841. ></RBW-ROW
  58842. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58843. ></ENTRY
  58844. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58845. ></ENTRY
  58846. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>master  </CELLBODY
  58847. ></ENTRY
  58848. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58849. ></ENTRY
  58850. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58851. ></ENTRY
  58852. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>relation </CELLBODY
  58853. ></ENTRY
  58854. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>cascade  </CELLBODY
  58855. ></ENTRY
  58856. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>yes     </CELLBODY
  58857. ></ENTRY
  58858. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>upd_in_detail</CELLBODY
  58859. ></ENTRY
  58860. ></RBW-ROW
  58861. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>#&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58862. ></CELLBODY
  58863. ></ENTRY
  58864. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58865. ></CELLBODY
  58866. ></ENTRY
  58867. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58868. ></CELLBODY
  58869. ></ENTRY
  58870. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58871. ></CELLBODY
  58872. ></ENTRY
  58873. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58874. ></CELLBODY
  58875. ></ENTRY
  58876. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58877. ></CELLBODY
  58878. ></ENTRY
  58879. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58880. ></CELLBODY
  58881. ></ENTRY
  58882. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58883. ></CELLBODY
  58884. ></ENTRY
  58885. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</CX5FX5FINPUT
  58886. ></CELLBODY
  58887. ></ENTRY
  58888. ></RBW-ROW
  58889. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58890. ></ENTRY
  58891. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58892. ></ENTRY
  58893. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58894. ></ENTRY
  58895. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58896. ></ENTRY
  58897. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58898. ></ENTRY
  58899. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58900. ></ENTRY
  58901. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>none     </CELLBODY
  58902. ></ENTRY
  58903. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58904. ></ENTRY
  58905. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>not_applicable</CELLBODY
  58906. ></ENTRY
  58907. ></RBW-ROW
  58908. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58909. ></ENTRY
  58910. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58911. ></ENTRY
  58912. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58913. ></ENTRY
  58914. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58915. ></ENTRY
  58916. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58917. ></ENTRY
  58918. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58919. ></ENTRY
  58920. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>restrict </CELLBODY
  58921. ></ENTRY
  58922. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>default </CELLBODY
  58923. ></ENTRY
  58924. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>rej_not_exist</CELLBODY
  58925. ></ENTRY
  58926. ></RBW-ROW
  58927. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  58928. ></ENTRY
  58929. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>update </CELLBODY
  58930. ></ENTRY
  58931. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>detail  </CELLBODY
  58932. ></ENTRY
  58933. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58934. ></ENTRY
  58935. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional </CELLBODY
  58936. ></ENTRY
  58937. ><ENTRY COLNAME="6" VALIGN="TOP" MOREROWS="0"><CELLBODY>table    </CELLBODY
  58938. ></ENTRY
  58939. ><ENTRY COLNAME="7" VALIGN="TOP" MOREROWS="0"><CELLBODY>nullify  </CELLBODY
  58940. ></ENTRY
  58941. ><ENTRY COLNAME="8" VALIGN="TOP" MOREROWS="0"><CELLBODY>no      </CELLBODY
  58942. ></ENTRY
  58943. ><ENTRY COLNAME="9" VALIGN="TOP" MOREROWS="0"><CELLBODY>not_applicable</CELLBODY
  58944. ></ENTRY
  58945. ></RBW-ROW
  58946. ></TBODY
  58947. ></TGROUP
  58948. ><RBW-ICONIZE></RBW-TABLE
  58949. ></LABEL
  58950. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  58951. >What does the sqlrules file do</L.LABEL
  58952. ><B.BODY>In the SQL rules file, a rule is specified for every combination of:</B.BODY
  58953. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  58954. ></RBW-AUTOGEN
  58955. ></RBW-MARKER
  58956. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>relation type</CX5FX5FBULLET.EMPHASIS
  58957. >:</RBW-PARABODY
  58958. ></LB.LIST.BULLET
  58959. ><LT.LIST.TEXT>The relation type is determined by the (combination of) the master type and the detail type:</LT.LIST.TEXT
  58960. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  58961. ></RBW-MARKER
  58962. ><RBW-PARABODY><CX5FX5FTITLE>associative</CX5FX5FTITLE
  58963. >: when the detail type is associative</RBW-PARABODY
  58964. ></LB2.LIST.BULLET.2
  58965. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  58966. ></RBW-MARKER
  58967. ><RBW-PARABODY><CX5FX5FTITLE>optional</CX5FX5FTITLE
  58968. >: when both the master type and the detail type are optional</RBW-PARABODY
  58969. ></LB2.LIST.BULLET.2
  58970. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  58971. ></RBW-MARKER
  58972. ><RBW-PARABODY><CX5FX5FTITLE>total</CX5FX5FTITLE
  58973. >: when the detail type is not associative and either the master type or the detail type is total</RBW-PARABODY
  58974. ></LB2.LIST.BULLET.2
  58975. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  58976. ></RBW-MARKER
  58977. ><RBW-PARABODY><CX5FX5FTITLE>supersubtype</CX5FX5FTITLE
  58978. >: when the master type is supertype and the detail type is subtype</RBW-PARABODY
  58979. ></LB2.LIST.BULLET.2
  58980. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  58981. ></RBW-AUTOGEN
  58982. ></RBW-MARKER
  58983. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>database operation</CX5FX5FPROCEDURE.NAME
  58984. >:</RBW-PARABODY
  58985. ></LB.LIST.BULLET
  58986. ><LT.LIST.TEXT><CX5FX5FTITLE>insert</CX5FX5FTITLE
  58987. >, <CX5FX5FTITLE>update</CX5FX5FTITLE
  58988. >, or <CX5FX5FTITLE>delete</CX5FX5FTITLE
  58989. > </LT.LIST.TEXT
  58990. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  58991. ></RBW-AUTOGEN
  58992. ></RBW-MARKER
  58993. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>table type</CX5FX5FPROCEDURE.NAME
  58994. >:</RBW-PARABODY
  58995. ></LB.LIST.BULLET
  58996. ><LT.LIST.TEXT><CX5FX5FTITLE>master</CX5FX5FTITLE
  58997. > or <CX5FX5FTITLE>detail</CX5FX5FTITLE
  58998. > </LT.LIST.TEXT
  58999. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59000. ></RBW-AUTOGEN
  59001. ></RBW-MARKER
  59002. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>master type</CX5FX5FPROCEDURE.NAME
  59003. >:</RBW-PARABODY
  59004. ></LB.LIST.BULLET
  59005. ><LT.LIST.TEXT><CX5FX5FTITLE>optional</CX5FX5FTITLE
  59006. >, <CX5FX5FTITLE>total</CX5FX5FTITLE
  59007. > (i.e. mandatory), or <CX5FX5FTITLE>supertype</CX5FX5FTITLE
  59008. > </LT.LIST.TEXT
  59009. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59010. ></RBW-AUTOGEN
  59011. ></RBW-MARKER
  59012. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>detail type</CX5FX5FPROCEDURE.NAME
  59013. >:</RBW-PARABODY
  59014. ></LB.LIST.BULLET
  59015. ><LT.LIST.TEXT><CX5FX5FTITLE>optional</CX5FX5FTITLE
  59016. >, <CX5FX5FTITLE>total</CX5FX5FTITLE
  59017. > (i.e. mandatory), <CX5FX5FTITLE>subtype</CX5FX5FTITLE
  59018. >, or <CX5FX5FTITLE>associative</CX5FX5FTITLE
  59019. > </LT.LIST.TEXT
  59020. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59021. ></RBW-AUTOGEN
  59022. ></RBW-MARKER
  59023. ><RBW-PARABODY><RBW-IDXTERM TERM1="policies" TERM2="for referential integrity"></RBW-IDXTERM
  59024. ><RBW-IDXTERM TERM1="referential integrity" TERM2="policies"></RBW-IDXTERM
  59025. ><CX5FX5FPROCEDURE.NAME>policy</CX5FX5FPROCEDURE.NAME
  59026. >:</RBW-PARABODY
  59027. ></LB.LIST.BULLET
  59028. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59029. ></RBW-MARKER
  59030. ><RBW-PARABODY><CX5FX5FTERM>None<RBW-IDXTERM TERM1="none" TERM2="policy for referential integrity"></RBW-IDXTERM
  59031. ></CX5FX5FTERM
  59032. >: no checks are carried out when the database operation is executed.</RBW-PARABODY
  59033. ></LB2.LIST.BULLET.2
  59034. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59035. ></RBW-MARKER
  59036. ><RBW-PARABODY><CX5FX5FTITLE>Cascade<RBW-IDXTERM TERM1="cascade" TERM2="policy for referential integrity"></RBW-IDXTERM
  59037. ></CX5FX5FTITLE
  59038. >: referential integrity is maintained by propagating the database operation across the association. The most obvious use is for <CX5FX5FPROCEDURE.NAME>delete</CX5FX5FPROCEDURE.NAME
  59039. >.</RBW-PARABODY
  59040. ></LB2.LIST.BULLET.2
  59041. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59042. ></RBW-MARKER
  59043. ><RBW-PARABODY><CX5FX5FTITLE>Restrict<RBW-IDXTERM TERM1="restrict" TERM2="policy for referential integrity"></RBW-IDXTERM
  59044. ></CX5FX5FTITLE
  59045. >: the database operation is cancelled if a problem regarding referential integrity occurs.</RBW-PARABODY
  59046. ></LB2.LIST.BULLET.2
  59047. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59048. ></RBW-MARKER
  59049. ><RBW-PARABODY><CX5FX5FTITLE>Nullify<RBW-IDXTERM TERM1="nullify" TERM2="policy for referential integrity"></RBW-IDXTERM
  59050. ></CX5FX5FTITLE
  59051. >: when an object is removed, the foreign key value is changed to NULL, indicating that no link exists. This policy cannot be selected for <CX5FX5FPROCEDURE.NAME>insert</CX5FX5FPROCEDURE.NAME
  59052. >.</RBW-PARABODY
  59053. ></LB2.LIST.BULLET.2
  59054. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59055. ></RBW-AUTOGEN
  59056. ></RBW-MARKER
  59057. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>allowed</CX5FX5FPROCEDURE.NAME
  59058. >:</RBW-PARABODY
  59059. ></LB.LIST.BULLET
  59060. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59061. ></RBW-MARKER
  59062. ><RBW-PARABODY><CX5FX5FTITLE>default</CX5FX5FTITLE
  59063. >: whether or not referential integrity is checked for this type of relation is determined by what is indicated at the top of the SQL rules file: on or off</RBW-PARABODY
  59064. ></LB2.LIST.BULLET.2
  59065. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59066. ></RBW-MARKER
  59067. ><RBW-PARABODY><CX5FX5FTITLE>yes</CX5FX5FTITLE
  59068. >: referential integrity is checked</RBW-PARABODY
  59069. ></LB2.LIST.BULLET.2
  59070. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59071. ></RBW-MARKER
  59072. ><RBW-PARABODY><CX5FX5FTITLE>no</CX5FX5FTITLE
  59073. >: referential integrity is not checked</RBW-PARABODY
  59074. ></LB2.LIST.BULLET.2
  59075. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59076. ></RBW-AUTOGEN
  59077. ></RBW-MARKER
  59078. ><RBW-PARABODY><CX5FX5FPROCEDURE.NAME>rule</CX5FX5FPROCEDURE.NAME
  59079. >:</RBW-PARABODY
  59080. ></LB.LIST.BULLET
  59081. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59082. ></RBW-MARKER
  59083. ><RBW-PARABODY><CX5FX5FTITLE>rej_not_exist</CX5FX5FTITLE
  59084. >: this rule is only valid for the database operations <CX5FX5FTITLE>insert</CX5FX5FTITLE
  59085. > and <CX5FX5FTITLE>update</CX5FX5FTITLE
  59086. > and for the policy <CX5FX5FTITLE>Restrict</CX5FX5FTITLE
  59087. >. The database operation is cancelled if a tuple exports or imports keys and the tuple to which it export keys or from which it imports keys doesn’t exist.</RBW-PARABODY
  59088. ></LB2.LIST.BULLET.2
  59089. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59090. ></RBW-MARKER
  59091. ><RBW-PARABODY><CX5FX5FTITLE>rej_exist</CX5FX5FTITLE
  59092. >: this rule is only valid for the database operations <CX5FX5FTITLE>update</CX5FX5FTITLE
  59093. > and <CX5FX5FTITLE>delete</CX5FX5FTITLE
  59094. > and for the policy <CX5FX5FTITLE>Restrict</CX5FX5FTITLE
  59095. >. The database operation is cancelled if the tuple export or imports keys.</RBW-PARABODY
  59096. ></LB2.LIST.BULLET.2
  59097. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59098. ></RBW-MARKER
  59099. ><RBW-PARABODY><CX5FX5FTITLE>rej_last</CX5FX5FTITLE
  59100. >: this rule is only valid for the database operation <CX5FX5FTITLE>delete </CX5FX5FTITLE
  59101. >and the table type is <CX5FX5FTITLE>detail</CX5FX5FTITLE
  59102. >.</RBW-PARABODY
  59103. ></LB2.LIST.BULLET.2
  59104. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59105. ></RBW-MARKER
  59106. ><RBW-PARABODY><CX5FX5FTITLE>ins_in_master</CX5FX5FTITLE
  59107. >: this rule is only valid for the database operations <CX5FX5FTITLE>insert</CX5FX5FTITLE
  59108. > and <CX5FX5FTITLE>update</CX5FX5FTITLE
  59109. > and for the policy <CX5FX5FTITLE>Cascade</CX5FX5FTITLE
  59110. >. If a tuple is inserted in the detail table and the corresponding keys do not exist in the master table, they are inserted in the master table.</RBW-PARABODY
  59111. ></LB2.LIST.BULLET.2
  59112. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59113. ></RBW-MARKER
  59114. ><RBW-PARABODY><CX5FX5FTITLE>upd_in_detail</CX5FX5FTITLE
  59115. >: this rule is only valid for the database operation <CX5FX5FTITLE>update</CX5FX5FTITLE
  59116. > and for the policy <CX5FX5FTITLE>Cascade</CX5FX5FTITLE
  59117. >. If keys in the master table are updated, the corresponding keys in the detail table are also updated.</RBW-PARABODY
  59118. ></LB2.LIST.BULLET.2
  59119. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59120. ></RBW-MARKER
  59121. ><RBW-PARABODY><CX5FX5FTITLE>del_in_detail</CX5FX5FTITLE
  59122. >: this rule is only valid for the database operations <CX5FX5FTITLE>update</CX5FX5FTITLE
  59123. > and <CX5FX5FTITLE>delete</CX5FX5FTITLE
  59124. > and for the policy <CX5FX5FTITLE>Cascade</CX5FX5FTITLE
  59125. >. If a tuple in the master table is deleted, all the detail tuples are also deleted.</RBW-PARABODY
  59126. ></LB2.LIST.BULLET.2
  59127. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59128. ></RBW-MARKER
  59129. ><RBW-PARABODY><CX5FX5FTITLE>nullify_detail</CX5FX5FTITLE
  59130. >: this rule is only valid for the database operations <CX5FX5FTITLE>delete</CX5FX5FTITLE
  59131. > and <CX5FX5FTITLE>update</CX5FX5FTITLE
  59132. >, for the table type <CX5FX5FTITLE>master</CX5FX5FTITLE
  59133. >, and for the policy <CX5FX5FTITLE>Nullify</CX5FX5FTITLE
  59134. >. If a tuple in the master table is deleted, all the corresponding keys in the detail table are set to NULL.</RBW-PARABODY
  59135. ></LB2.LIST.BULLET.2
  59136. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59137. ></RBW-MARKER
  59138. ><RBW-PARABODY><CX5FX5FTITLE>none</CX5FX5FTITLE
  59139. >: no rule is executed.</RBW-PARABODY
  59140. ></LB2.LIST.BULLET.2
  59141. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59142. ></RBW-MARKER
  59143. ><RBW-PARABODY><CX5FX5FTITLE>not_applicable</CX5FX5FTITLE
  59144. ><RBWAUTO-0013> </RBWAUTO-0013
  59145. ></RBW-PARABODY
  59146. ></LB2.LIST.BULLET.2
  59147. ></LABEL
  59148. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59149. >Customizing Referential Integrity globally</L.LABEL
  59150. ><B.BODY>If you want to change anything regarding Referential Integrity policies that must affect all relations of a particular type, you should create a customization file with the name <CX5FX5FFILE.NAME>sqlrules</CX5FX5FFILE.NAME
  59151. > on the Browser level of your choice.</B.BODY
  59152. ><B.BODY>You can create customization files on Project level, Configuration level, Phase level, and System level. These files are stored in the repository. The customization files on Corporate level are not stored in the repository, but in the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  59153. > directory under <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  59154. >.</B.BODY
  59155. ><B.BODY>The Tcl files that are used during code generation first check if there are any customization files present in the repository. If there aren’t, the customization file from corporate level (i.e. the file stored in the <CX5FX5FFILE.NAME>etc</CX5FX5FFILE.NAME
  59156. > directory under <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  59157. >) is used. If the same customization file is stored on more than one Browser level, the file on the Browser level closest in hierarchy is evaluated.</B.BODY
  59158. ></LABEL
  59159. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59160. >Customizing Referential Integrity locally</L.LABEL
  59161. ><B.BODY>The default policy for a particular type of relation is specified in the SQL rules file. For every type of relation a certain rule is defined. However, for individual associations, aggregations or generalizations, you can overrule the following settings from the sqlrules file:</B.BODY
  59162. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59163. ></RBW-AUTOGEN
  59164. ></RBW-MARKER
  59165. ><RBW-PARABODY>The <CX5FX5FTITLE>policy</CX5FX5FTITLE
  59166. > for a particular <CX5FX5FTITLE>operation</CX5FX5FTITLE
  59167. > </RBW-PARABODY
  59168. ></LB.LIST.BULLET
  59169. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59170. ></RBW-AUTOGEN
  59171. ></RBW-MARKER
  59172. ><RBW-PARABODY>Whether or not referential integrity must be checked </RBW-PARABODY
  59173. ></LB.LIST.BULLET
  59174. ><BI.BODY.INTRO>You can do that in the Class Association Diagram by editing the properties of the association, aggregation, or generalization you want to overrule the default settings for. The following figure shows the Edit Properties dialog box that you would use:</BI.BODY.INTRO
  59175. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00564.unk" origfile="pics/prpriloc.gif" origtype="X" origdoc="../../sources/cpp/cmz611.fm5.mif"></RBW-GRAPHIC
  59176. ></FA.FIGURE.ANCHOR
  59177. ><RBWAUTO-0001></RBWAUTO-0001
  59178. ><!--
  59179.  
  59180.  
  59181.  
  59182.  
  59183.  
  59184. CONVERTING SOURCE FILE ../../sources/corba/corbabk.mif
  59185.  
  59186.  
  59187. --><B.BODY></B.BODY
  59188. ><B.BODY></B.BODY
  59189. ><B.BODY></B.BODY
  59190. ><B.BODY></B.BODY
  59191. ><B.BODY></B.BODY
  59192. ></LABEL
  59193. ></SECTION
  59194. ></APPENDIX
  59195. ></BOOK
  59196. ><BOOK><BH.BOOK.HEAD>CORBA IDL Code Generation Guide</BH.BOOK.HEAD
  59197. ><!--
  59198.  
  59199.  
  59200.  
  59201.  
  59202.  
  59203. CONVERTING SOURCE FILE ../../sources/corba/corbpref.fm5.mif
  59204.  
  59205.  
  59206. --><B.BODY></B.BODY
  59207. ><B.BODY></B.BODY
  59208. ><B.BODY></B.BODY
  59209. ><B.BODY></B.BODY
  59210. ><B.BODY></B.BODY
  59211. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  59212. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Corba IDL</RBW-TEXTFLD
  59213. ></RBW-SYSOBJ
  59214. ></CN.CHAPTER.NOX23
  59215. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59216. >About this manual</L.LABEL
  59217. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  59218. ><CX5FX5FTITLE></CX5FX5FTITLE
  59219. > <CX5FX5FTITLE>for CORBA IDL</CX5FX5FTITLE
  59220. > contains information specific to the CORBA IDL code generator. The code generator automates the process of generating CORBA IDL specifications from systems in the Object Design phase. This guide describes the mapping of the ObjectTeam model to CORBA IDL. </B.BODY
  59221. ><B.BODY>Refer to the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  59222. ><CX5FX5FTITLE></CX5FX5FTITLE
  59223. > for general information about the code generation process.</B.BODY
  59224. ></LABEL
  59225. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59226. >Prerequisites</L.LABEL
  59227. ><B.BODY>This guide is intended for experienced users of ObjectTeam and the analysis and design method it supports. Knowledge of CORBA IDL is also required. </B.BODY
  59228. ><B.BODY>To customize or extend the capabilities of the CORBA IDL code generator, you must have a thorough understanding of the ObjectTeam Shell, the Object&truehy;Oriented Programming Language (OOPL) model structure, and the Tool Command Language (Tcl) commands.</B.BODY
  59229. ><RBWAUTO-0001></RBWAUTO-0001
  59230. ><!--
  59231.  
  59232.  
  59233.  
  59234.  
  59235.  
  59236. CONVERTING SOURCE FILE ../../sources/corba/corbobjd.fm5.mif
  59237.  
  59238.  
  59239. --><B.BODY></B.BODY
  59240. ><B.BODY></B.BODY
  59241. ><B.BODY></B.BODY
  59242. ><B.BODY></B.BODY
  59243. ><B.BODY></B.BODY
  59244. ></LABEL
  59245. ></CHAPTERNONUM
  59246. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  59247. ></RBW-AUTOGEN
  59248. >Preparing <RBW-ANCHOR ID="30937"></RBW-ANCHOR
  59249. >Your ObjectTeam Model for Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  59250. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for CORBA IDL</RBW-TEXTFLD
  59251. ></RBW-SYSOBJ
  59252. ></C.CHAPTER.HEAD
  59253. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59254. >Introduction</L.LABEL
  59255. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  59256. ><CX5FX5FTITLE></CX5FX5FTITLE
  59257. >, you model the system without regard to the implementation environment.</B.BODY
  59258. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  59259. ></LABEL
  59260. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59261. >Corba IDL module required</L.LABEL
  59262. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>CORBA IDL Code Generation</CX5FX5FEMPHASIS
  59263. > provides the menu items, the properties and the Tcl code required to use the CORBA IDL Code Generator. Therefore, before moving to the Object Design phase, make sure this module is active.</B.BODY
  59264. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  59265. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59266. >For more information</SL.SUBLABEL
  59267. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  59268. ><CX5FX5FTITLE></CX5FX5FTITLE
  59269. > for details on how to activate a module.</B.BODY
  59270. ></LABEL
  59271. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59272. >Object Design and Implementation</L.LABEL
  59273. ><B.BODY>This chapter describes the tasks of the Object Design phase. <RBW-XREF REFID="41422" TYPE="XREF-TEXTCOPY">Chapter 2, Generating CORBA IDL</RBW-XREF
  59274. >, describes the tasks of the Implementation phase. You work iteratively in these two phases to generate code and complete your application.</B.BODY
  59275. ></LABEL
  59276. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59277. >Purpose of object design</L.LABEL
  59278. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  59279. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  59280. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  59281. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use oter diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  59282. ></LABEL
  59283. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59284. >In this chapter</L.LABEL
  59285. ><B.BODY>This chapter contains the following sections:</B.BODY
  59286. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  59287. ></ENTRY
  59288. ></RBW-ROW
  59289. ></THEAD
  59290. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19276" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;1–3</RBW-XREF
  59291. ></SB.SECTION.BLOCK.TABLE
  59292. ></ENTRY
  59293. ></RBW-ROW
  59294. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40198" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;1–6</RBW-XREF
  59295. ></SB.SECTION.BLOCK.TABLE
  59296. ></ENTRY
  59297. ></RBW-ROW
  59298. ></TBODY
  59299. ></TGROUP
  59300. ></RBW-TABLE
  59301. ></LABEL
  59302. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  59303. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  59304. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  59305. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  59306. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  59307. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  59308. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  59309. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  59310. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  59311. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  59312. >Refining the Class Diagrams</S.SECTION.HEAD
  59313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59314. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  59315. ></L.LABEL
  59316. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  59317. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  59318. ></LABEL
  59319. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59320. >Using data from diagrams other than CDs</L.LABEL
  59321. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  59322. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  59323. ></ENTRY
  59324. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  59325. ></ENTRY
  59326. ></RBW-ROW
  59327. ></THEAD
  59328. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  59329. ></ENTRY
  59330. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  59331. ><CELLBODY>STD class</CELLBODY
  59332. ><CELLBODY>UCD actor</CELLBODY
  59333. ></ENTRY
  59334. ></RBW-ROW
  59335. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  59336. ></ENTRY
  59337. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  59338. ><CELLBODY>STD event or event message</CELLBODY
  59339. ><CELLBODY>UCD communication association</CELLBODY
  59340. ></ENTRY
  59341. ></RBW-ROW
  59342. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  59343. ></ENTRY
  59344. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  59345. ><CELLBODY>STD condition on an event</CELLBODY
  59346. ></ENTRY
  59347. ></RBW-ROW
  59348. ></TBODY
  59349. ></TGROUP
  59350. ></RBW-TABLE
  59351. ></LABEL
  59352. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59353. >Classes</L.LABEL
  59354. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  59355. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions and procedures of the class type. </B.BODY
  59356. ></LABEL
  59357. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59358. >External classes</L.LABEL
  59359. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  59360. ></LABEL
  59361. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59362. >Associations</L.LABEL
  59363. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  59364. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  59365. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59366. >Role names in Analysis and System Design</SL.SUBLABEL
  59367. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  59368. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00565.tif" origseq="1" origtype="I" origdoc="../../sources/corba/corbobjd.fm5.mif"></RBW-GRAPHIC
  59369. ></FA.FIGURE.ANCHOR
  59370. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59371. >Role names in Object Design and Implementation</SL.SUBLABEL
  59372. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods  for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  59373. ></LABEL
  59374. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59375. >Attributes</L.LABEL
  59376. ><B.BODY>You must specify each attribute completely, including its data type. The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  59377. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  59378. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59379. >Data types</SL.SUBLABEL
  59380. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and derived types. </B.BODY
  59381. ></LABEL
  59382. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59383. >Operations</L.LABEL
  59384. ><BI.BODY.INTRO>You must specify each operation completely.  This includes specifying such aspects as:</BI.BODY.INTRO
  59385. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59386. ></RBW-AUTOGEN
  59387. ></RBW-MARKER
  59388. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  59389. ></LB.LIST.BULLET
  59390. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59391. ></RBW-AUTOGEN
  59392. ></RBW-MARKER
  59393. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  59394. ></LB.LIST.BULLET
  59395. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59396. ></RBW-AUTOGEN
  59397. ></RBW-MARKER
  59398. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  59399. ></LB.LIST.BULLET
  59400. ></LABEL
  59401. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59402. >Properties</L.LABEL
  59403. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  59404. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  59405. >These details are incorporated in the final code.</BI.BODY.INTRO
  59406. ></LABEL
  59407. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59408. >Checking</L.LABEL
  59409. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  59410. ><CX5FX5FTITLE></CX5FX5FTITLE
  59411. > for more information about the Check utility.</B.BODY
  59412. ></LABEL
  59413. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59414. >For more information</L.LABEL
  59415. ><B.BODY><RBW-XREF REFID="37761" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to CORBA IDL</RBW-XREF
  59416. >, describes how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  59417. ></LABEL
  59418. ></SECTION
  59419. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  59420. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  59421. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  59422. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  59423. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  59424. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  59425. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  59426. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  59427. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  59428. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  59429. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  59430. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59431. >Introduction</L.LABEL
  59432. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  59433. ></LABEL
  59434. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59435. >Understanding the translations</L.LABEL
  59436. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  59437. ></LABEL
  59438. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59439. >Naming conventions</L.LABEL
  59440. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, bear in mind that spaces between words (in class names, for instance) are deleted by ObjectTeam code generators.</B.BODY
  59441. ></LABEL
  59442. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59443. >Customizing code generation</L.LABEL
  59444. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own.. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  59445. ></LABEL
  59446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59447. >Using multiple languages in a single application</L.LABEL
  59448. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  59449. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  59450. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  59451. ></RBW-AUTOGEN
  59452. ></RBW-MARKER
  59453. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  59454. ></LN.LIST.NUM
  59455. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  59456. ></RBW-AUTOGEN
  59457. ></RBW-MARKER
  59458. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  59459. ></LN.LIST.NUM
  59460. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  59461. ></RBW-AUTOGEN
  59462. ></RBW-MARKER
  59463. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  59464. ></LN.LIST.NUM
  59465. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  59466. ></RBW-AUTOGEN
  59467. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  59468. ></LABEL
  59469. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59470. ></L.LABEL
  59471. ><!--
  59472.  
  59473.  
  59474.  
  59475.  
  59476.  
  59477. CONVERTING SOURCE FILE ../../sources/corba/corbcodg.fm5.mif
  59478.  
  59479.  
  59480. --><B.BODY></B.BODY
  59481. ><B.BODY></B.BODY
  59482. ><B.BODY></B.BODY
  59483. ><B.BODY></B.BODY
  59484. ><B.BODY></B.BODY
  59485. ></LABEL
  59486. ></SECTION
  59487. ></CHAPTER
  59488. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  59489. ></RBW-AUTOGEN
  59490. ><RBW-ANCHOR ID="41422"></RBW-ANCHOR
  59491. >Generating CORBA IDL<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  59492. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for CORBA IDL</RBW-TEXTFLD
  59493. ></RBW-SYSOBJ
  59494. ></C.CHAPTER.HEAD
  59495. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59496. >Introduction</L.LABEL
  59497. ><B.BODY><RBW-IDXTERM TERM1="code generation"></RBW-IDXTERM
  59498. >Typically, the ultimate goal of modeling an application is to produce code that implements the application. In ObjectTeam, you can generate a significant portion of the code automatically, then complete the code by adding the details that not specified in the model.</B.BODY
  59499. ></LABEL
  59500. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59501. >Prerequisites</L.LABEL
  59502. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59503. ></RBW-AUTOGEN
  59504. ></RBW-MARKER
  59505. ><RBW-PARABODY>The ObjectTeam module <CX5FX5FEMPHASIS>CORBA IDL Code generation</CX5FX5FEMPHASIS
  59506. > must be active from Object Design Phase and Implementation Phase level down.</RBW-PARABODY
  59507. ></LB.LIST.BULLET
  59508. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59509. ></RBW-AUTOGEN
  59510. ></RBW-MARKER
  59511. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="30937" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  59512. >.</RBW-PARABODY
  59513. ></LB.LIST.BULLET
  59514. ></LABEL
  59515. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59516. >Steps in code generation</L.LABEL
  59517. ><B.BODY>The following table provides an overview of the code generation process. This chapter describes each step in greater detail.</B.BODY
  59518. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  59519. ></ENTRY
  59520. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  59521. ></ENTRY
  59522. ></RBW-ROW
  59523. ></THEAD
  59524. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  59525. ></ENTRY
  59526. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate CORBA IDL files. During this step, ObjectTeam creates CORBA IDL specification files on System level in the Implementation phase.</CELLBODY
  59527. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  59528. > System level in the Implementation phase is fundamentally different than System level in other phases. The System files in the Implementation phase are specification files, not diagram files.</CELLBODY
  59529. ></ENTRY
  59530. ></RBW-ROW
  59531. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  59532. ></ENTRY
  59533. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit the specification files, if necessary</CELLBODY
  59534. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  59535. > Any changes you make to the specification files will be lost when you regenerate. <RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  59536. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  59537. ><RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  59538. ></CELLBODY
  59539. ></ENTRY
  59540. ></RBW-ROW
  59541. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  59542. ></ENTRY
  59543. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Using your ORB implementation, generate code. If necessary: correct the model, and regenerate the code files.</CELLBODY
  59544. ></ENTRY
  59545. ></RBW-ROW
  59546. ></TBODY
  59547. ></TGROUP
  59548. ></RBW-TABLE
  59549. ></LABEL
  59550. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59551. >Illustration of code generation</L.LABEL
  59552. ><BI.BODY.INTRO>The following illustration shows how ObjectTeam generates code, including the names of the Tcl scripts that it uses. The CDs and CDMs shown at the top are in the Object Design phase.</BI.BODY.INTRO
  59553. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00566.tif" origseq="1" origtype="I" origdoc="../../sources/corba/corbcodg.fm5.mif"></RBW-GRAPHIC
  59554. ></FAR.FIGURE.ANCHOR.RIGHT
  59555. ></LABEL
  59556. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59557. >In this chapter</L.LABEL
  59558. ><B.BODY>This chapter contains the following sections:</B.BODY
  59559. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  59560. ></ENTRY
  59561. ></RBW-ROW
  59562. ></THEAD
  59563. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15736" TYPE="XREF-TEXTCOPY">Introduction&rbwtab;2–3</RBW-XREF
  59564. ></SB.SECTION.BLOCK.TABLE
  59565. ></ENTRY
  59566. ></RBW-ROW
  59567. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16679" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;2–4</RBW-XREF
  59568. ></SB.SECTION.BLOCK.TABLE
  59569. ></ENTRY
  59570. ></RBW-ROW
  59571. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38108" TYPE="XREF-TEXTCOPY">Generating CORBA IDL Code&rbwtab;2–5</RBW-XREF
  59572. ></SB.SECTION.BLOCK.TABLE
  59573. ></ENTRY
  59574. ></RBW-ROW
  59575. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37977" TYPE="XREF-TEXTCOPY">CORBA IDL Limitations&rbwtab;2–7</RBW-XREF
  59576. ></SB.SECTION.BLOCK.TABLE
  59577. ></ENTRY
  59578. ></RBW-ROW
  59579. ></TBODY
  59580. ></TGROUP
  59581. ></RBW-TABLE
  59582. ></LABEL
  59583. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="15736"></RBW-ANCHOR
  59584. >Introduction</S.SECTION.HEAD
  59585. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59586. >A Brief Description of CORBA IDL </L.LABEL
  59587. ><B.BODY>The Object Management Group (OMG) developed specifications for interactions between distributed objects. These specifications are referred to as the Common Object Request Broker Architecture (CORBA). As part of its specifications, CORBA defines the Interface Definition Language (IDL). CORBA IDL describes an object’s interface which enables objects to communicate their methods and attributes to other objects. This is done without individual objects needing to know each other’s location or how they accomplish their tasks. Communication is handled by an Object Request Broker (ORB). ORBs negotiate requests (messages) between clients and servers and their related data sets. </B.BODY
  59588. ><B.BODY>CORBA IDL is a separate language within the CORBA specification. Its lexical rules are similar to those of  C++ with some new keywords added. Using CORBA IDL statements, you can define the kind of objects and their attributes and operations that your client uses or your server provides.</B.BODY
  59589. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  59590. ></RBW-AUTOGEN
  59591. >CORBA IDL only defines the interface to the objects. An implementation mapping between the interface and the actual object data and procedures is required. The ObjectTeam CORBA IDL code generator does not support this mapping.</N.NOTE
  59592. ></LABEL
  59593. ></SECTION
  59594. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16679"></RBW-ANCHOR
  59595. >Components of Code Generation</S.SECTION.HEAD
  59596. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59597. >Code generation results</L.LABEL
  59598. ><B.BODY>The CORBA IDL code generator automatically generates CORBA IDL specifications for ObjectTeam systems. It interprets classes, associations, and generalization (inheritance) and translates them into the appropriate CORBA IDL constructs. One file is produced per system with a file extension of <CX5FX5FFILE.NAME>.idl</CX5FX5FFILE.NAME
  59599. >.</B.BODY
  59600. ><B.BODY>In contrast to the other ObjectTeam code generators, the CORBA IDL code generator produces only CORBA IDL specifications. To produce executable code, you normally compile the CORBA IDL specifications into a target language such as C++ or Java. Refer to your ORB vendor’s documentation for information on mapping CORBA IDL to client or server objects.</B.BODY
  59601. ></LABEL
  59602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59603. >Regenerating specification files</L.LABEL
  59604. ><B.BODY>The ObjectTeam CORBA IDL code generator produces ASCII format CORBA IDL files. Do not edit these files since any edits you make will not be maintained. They are overwritten each time you generate code.</B.BODY
  59605. ></LABEL
  59606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59607. >Tcl scripts for code generation</L.LABEL
  59608. ><B.BODY>The scripts written for code generation retrieve information from the code generation models, format this information and write the results to source code files. Code generation models are built from the CDs in the Object Design phase.</B.BODY
  59609. ><B.BODY>The default <RBW-IDXTERM TERM1="Tcl" TERM2="script files used for code generation"></RBW-IDXTERM
  59610. >Tcl scripts used by otsh to generate CORBA IDL source code can be found under the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  59611. >/<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  59612. > directory tree. </B.BODY
  59613. ></LABEL
  59614. ></SECTION
  59615. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="Implementation" TERM2="importing systems"></RBW-IDXTERM
  59616. ><RBW-IDXTERM TERM1="importing" TERM2="in Implementation Phase"></RBW-IDXTERM
  59617. ><RBW-ANCHOR ID="38108"></RBW-ANCHOR
  59618. >Generating CORBA IDL Code</S.SECTION.HEAD
  59619. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59620. >Result of generating</L.LABEL
  59621. ><B.BODY>When you generate code for a system in the Implementation phase, the code generator transforms the CDs and CDMs of the Object Design phase into CORBA IDL source files. At System level of the Implementation phase, you can then refine the source code and complete the application.</B.BODY
  59622. ></LABEL
  59623. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59624. >Implementation Phase is different</L.LABEL
  59625. ><B.BODY>The System level of the Implementation phase is fundamentally different from System level of any other phase. In the Implementation phase, the System files are CORBA IDL files. In other phases, the System files are ObjectTeam diagrams.</B.BODY
  59626. ></LABEL
  59627. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59628. >Generate code on Phase or System level</L.LABEL
  59629. ><B.BODY>You can generate code on the Implementation Phase level or on the System level of the Implementation phase.</B.BODY
  59630. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59631. ></RBW-AUTOGEN
  59632. ></RBW-MARKER
  59633. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>Implementation Phase level</CX5FX5FBULLET.EMPHASIS
  59634. >, you can generate code for one or more systems. This creates a matching system in the Implementation Phase that contains the generated source files. To regenerate code for an existing system, use System level.</RBW-PARABODY
  59635. ></LB.LIST.BULLET
  59636. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59637. ></RBW-AUTOGEN
  59638. ></RBW-MARKER
  59639. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>System level of the Implementation phase</CX5FX5FBULLET.EMPHASIS
  59640. >, you can (re)generate code for the entire system, or regenerate selected source files.</RBW-PARABODY
  59641. ></LB.LIST.BULLET
  59642. ><B.BODY>Typically, you use Implementation Phase level to generate code for a system initially and System level to regenerate code subsequently.</B.BODY
  59643. ></LABEL
  59644. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59645. >How to generate code on Implementation Phase level</L.LABEL
  59646. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  59647. ></RBW-AUTOGEN
  59648. ></RBW-MARKER
  59649. ><RBW-PARABODY>To generate code for systems on the Implementation Phase level:</RBW-PARABODY
  59650. ></P.PROCEDURE
  59651. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  59652. ></RBW-AUTOGEN
  59653. ></RBW-MARKER
  59654. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  59655. ></LN.LIST.NUM
  59656. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  59657. ></RBW-AUTOGEN
  59658. ></RBW-MARKER
  59659. ><RBW-PARABODY>Select Utilities | Generate CORBA.</RBW-PARABODY
  59660. ></LN.LIST.NUM
  59661. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  59662. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  59663. ></RBW-AUTOGEN
  59664. ></RBW-MARKER
  59665. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  59666. ></LN.LIST.NUM
  59667. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59668. ></RBW-MARKER
  59669. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  59670. > to generate code for all systems from the Object Design phase for which no code has been generated yet.</RBW-PARABODY
  59671. ></LB2.LIST.BULLET.2
  59672. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  59673. ></RBW-MARKER
  59674. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  59675. > to select the systems from the Object Design phase for which you want to generate code. You can select only systems for which no code has been generated yet</RBW-PARABODY
  59676. ></LB2.LIST.BULLET.2
  59677. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files.</LR.LIST.RESULT
  59678. ></LABEL
  59679. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59680. ><RBW-ANCHOR ID="10881"></RBW-ANCHOR
  59681. >How to generate code on System level</L.LABEL
  59682. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  59683. ></RBW-AUTOGEN
  59684. ></RBW-MARKER
  59685. ><RBW-PARABODY>To generate code for a system, or selected system files on the System level:</RBW-PARABODY
  59686. ></P.PROCEDURE
  59687. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  59688. ></RBW-AUTOGEN
  59689. ></RBW-MARKER
  59690. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  59691. ></LN.LIST.NUM
  59692. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  59693. ></RBW-AUTOGEN
  59694. ></RBW-MARKER
  59695. ><RBW-PARABODY>Select Utilities | Generate CORBA File.</RBW-PARABODY
  59696. ></LN.LIST.NUM
  59697. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates code for the files. The following illustration shows the Monitor window after generating code for a system that contains only one class.</LR.LIST.RESULT
  59698. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00567.unk" origfile="pics/imp_impl.gif" origtype="X" origdoc="../../sources/corba/corbcodg.fm5.mif"></RBW-GRAPHIC
  59699. ></FA2.FIGURE.ANCHOR.2
  59700. ></LABEL
  59701. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59702. >Location of the source files</L.LABEL
  59703. ><B.BODY>Source files are stored in the repository as external files. They are also written to the user environment. (See the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  59704. ><CX5FX5FTITLE></CX5FX5FTITLE
  59705. > for more information about the user environment.)</B.BODY
  59706. ></LABEL
  59707. ></SECTION
  59708. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37977"></RBW-ANCHOR
  59709. >CORBA IDL Limitations</S.SECTION.HEAD
  59710. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59711. >Introduction</L.LABEL
  59712. ><B.BODY>The objects and their characteristics specified in ObjectTeam do not always map exactly to the language of a particular ObjectTeam code generator.</B.BODY
  59713. ></LABEL
  59714. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59715. >CORBA IDL code generation limitations </L.LABEL
  59716. ><B.BODY>Please note the following limitations of the CORBA IDL code generator. They are described in detail in the following chapter.</B.BODY
  59717. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59718. ></RBW-AUTOGEN
  59719. ></RBW-MARKER
  59720. ><RBW-PARABODY>Types</RBW-PARABODY
  59721. ></LB.LIST.BULLET
  59722. ><LT.LIST.TEXT>ObjectTeam only allows single&truehy;dimensioned arrays.</LT.LIST.TEXT
  59723. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59724. ></RBW-AUTOGEN
  59725. ></RBW-MARKER
  59726. ><RBW-PARABODY>Mapping attributes</RBW-PARABODY
  59727. ></LB.LIST.BULLET
  59728. ><LT.LIST.TEXT>Attributes must have either their Read Access or Write Access property set to Public to be placed in the generated CORBA IDL file. (Class and instance attributes are treated the same way.)</LT.LIST.TEXT
  59729. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59730. ></RBW-AUTOGEN
  59731. ></RBW-MARKER
  59732. ><RBW-PARABODY>Mapping operations</RBW-PARABODY
  59733. ></LB.LIST.BULLET
  59734. ><LT.LIST.TEXT>Only operations with a value of Public for their Method Access property are represented in the generated CORBA IDL file. (Class and instance operators are treated the same way.) Constructors are not represented in CORBA IDL, so they are ignored.</LT.LIST.TEXT
  59735. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59736. ></RBW-AUTOGEN
  59737. ></RBW-MARKER
  59738. ><RBW-PARABODY>Mapping inheritance</RBW-PARABODY
  59739. ></LB.LIST.BULLET
  59740. ><LT.LIST.TEXT>CORBA IDL only permits inheritance with an Inheritance Access property value of Public.</LT.LIST.TEXT
  59741. ><LT.LIST.TEXT>Although CORBA IDL has inheritance, it is illegal to overload a function in a derived class.</LT.LIST.TEXT
  59742. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59743. ></RBW-AUTOGEN
  59744. ></RBW-MARKER
  59745. ><RBW-PARABODY>Union classes</RBW-PARABODY
  59746. ></LB.LIST.BULLET
  59747. ><LT.LIST.TEXT>Although any enumerable type is allowed for the discriminator in CORBA IDL, ObjectTeam forces the discriminator to be of type long. There is no default case.</LT.LIST.TEXT
  59748. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  59749. ></RBW-AUTOGEN
  59750. ></RBW-MARKER
  59751. ><RBW-PARABODY>Sequences</RBW-PARABODY
  59752. ></LB.LIST.BULLET
  59753. ><LT.LIST.TEXT>Although you can specify an optional second argument to indicate the sequence’s size in CORBA IDL, there is no way to specify it in ObjectTeam. </LT.LIST.TEXT
  59754. ><RBWAUTO-0001></RBWAUTO-0001
  59755. ><!--
  59756.  
  59757.  
  59758.  
  59759.  
  59760.  
  59761. CONVERTING SOURCE FILE ../../sources/corba/corbprop.fm5.mif
  59762.  
  59763.  
  59764. --><B.BODY></B.BODY
  59765. ><B.BODY></B.BODY
  59766. ><B.BODY></B.BODY
  59767. ><B.BODY></B.BODY
  59768. ><B.BODY></B.BODY
  59769. ></LABEL
  59770. ></SECTION
  59771. ></CHAPTER
  59772. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  59773. ></RBW-AUTOGEN
  59774. >Properties<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  59775. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Corba</RBW-TEXTFLD
  59776. ></RBW-SYSOBJ
  59777. ></A.APPENDIX.HEAD
  59778. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  59779. >Corba code generation properties</L.LABEL
  59780. ><B.BODY>The following table lists the properties that effect Corba IDL code generation. These are available in the CD in the Object Design phase.</B.BODY
  59781. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  59782. ></RBW-AUTOGEN
  59783. >The asterisks next to certain property values indicate the values that must be selected to generate code.</N.NOTE
  59784. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="99p"><COLSPEC COLNAME="3" COLWIDTH="117p"><COLSPEC COLNAME="4" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  59785. ></ENTRY
  59786. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  59787. ></ENTRY
  59788. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  59789. ><CELLHEADING>Value</CELLHEADING
  59790. ></ENTRY
  59791. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>For More Information</CELLHEADING
  59792. ></ENTRY
  59793. ></RBW-ROW
  59794. ></THEAD
  59795. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Access</CELLBODY
  59796. ></ENTRY
  59797. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  59798. ></ENTRY
  59799. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  59800. ><CELLBODY>Private</CELLBODY
  59801. ><CELLBODY>Protected</CELLBODY
  59802. ><CELLBODY>None</CELLBODY
  59803. ></ENTRY
  59804. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13462" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  59805. ></CELLBODY
  59806. ></ENTRY
  59807. ></RBW-ROW
  59808. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Access</CELLBODY
  59809. ></ENTRY
  59810. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  59811. ></ENTRY
  59812. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>*Public</CELLBODY
  59813. ><CELLBODY>Private</CELLBODY
  59814. ><CELLBODY>Protected</CELLBODY
  59815. ><CELLBODY>None</CELLBODY
  59816. ></ENTRY
  59817. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17844" TYPE="XREF-TEXTCOPY">Translating Data Attribute Syntax</RBW-XREF
  59818. ></CELLBODY
  59819. ></ENTRY
  59820. ></RBW-ROW
  59821. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Case Label</CELLBODY
  59822. ></ENTRY
  59823. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  59824. ></ENTRY
  59825. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  59826. ></ENTRY
  59827. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39850" TYPE="XREF-TEXTCOPY">Union Classes</RBW-XREF
  59828. ></CELLBODY
  59829. ></ENTRY
  59830. ></RBW-ROW
  59831. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Type</CELLBODY
  59832. ></ENTRY
  59833. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  59834. ></ENTRY
  59835. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Exception</CELLBODY
  59836. ><CELLBODY>Interface</CELLBODY
  59837. ><CELLBODY>Sequence</CELLBODY
  59838. ><CELLBODY>Structure</CELLBODY
  59839. ><CELLBODY>Union</CELLBODY
  59840. ></ENTRY
  59841. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17829" TYPE="XREF-TEXTCOPY">Handling Special Classes</RBW-XREF
  59842. ></CELLBODY
  59843. ></ENTRY
  59844. ></RBW-ROW
  59845. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Const</CELLBODY
  59846. ></ENTRY
  59847. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  59848. ></ENTRY
  59849. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  59850. ></ENTRY
  59851. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31773" TYPE="XREF-TEXTCOPY">Editing Attribute Properties</RBW-XREF
  59852. ></CELLBODY
  59853. ></ENTRY
  59854. ></RBW-ROW
  59855. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Context</CELLBODY
  59856. ></ENTRY
  59857. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  59858. ></ENTRY
  59859. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  59860. ></ENTRY
  59861. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="37828" TYPE="XREF-TEXTCOPY">Constructors, Exceptions and Context</RBW-XREF
  59862. ></CELLBODY
  59863. ></ENTRY
  59864. ></RBW-ROW
  59865. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  59866. ></ENTRY
  59867. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  59868. ></ENTRY
  59869. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  59870. ></ENTRY
  59871. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="16870" TYPE="XREF-TEXTCOPY">Implementing Qualified Associations</RBW-XREF
  59872. ></CELLBODY
  59873. ></ENTRY
  59874. ></RBW-ROW
  59875. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Direction</CELLBODY
  59876. ></ENTRY
  59877. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  59878. ></ENTRY
  59879. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>In</CELLBODY
  59880. ><CELLBODY>Out</CELLBODY
  59881. ><CELLBODY>InOut</CELLBODY
  59882. ></ENTRY
  59883. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="26272" TYPE="XREF-TEXTCOPY">Editing Operation Parameters</RBW-XREF
  59884. ></CELLBODY
  59885. ></ENTRY
  59886. ></RBW-ROW
  59887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Discriminator</CELLBODY
  59888. ></ENTRY
  59889. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  59890. ></ENTRY
  59891. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  59892. ></ENTRY
  59893. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39850" TYPE="XREF-TEXTCOPY">Union Classes</RBW-XREF
  59894. ></CELLBODY
  59895. ></ENTRY
  59896. ></RBW-ROW
  59897. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>External Class Definition</CELLBODY
  59898. ></ENTRY
  59899. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  59900. ></ENTRY
  59901. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  59902. ></ENTRY
  59903. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31621" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  59904. ></CELLBODY
  59905. ></ENTRY
  59906. ></RBW-ROW
  59907. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Inheritance access</CELLBODY
  59908. ></ENTRY
  59909. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generalization</CELLBODY
  59910. ></ENTRY
  59911. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>*Public</CELLBODY
  59912. ><CELLBODY>Protected</CELLBODY
  59913. ><CELLBODY>Private</CELLBODY
  59914. ></ENTRY
  59915. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="41483" TYPE="XREF-TEXTCOPY">Mapping Inheritance</RBW-XREF
  59916. ></CELLBODY
  59917. ></ENTRY
  59918. ></RBW-ROW
  59919. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Access</CELLBODY
  59920. ></ENTRY
  59921. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  59922. ></ENTRY
  59923. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>*Public</CELLBODY
  59924. ><CELLBODY>Protected</CELLBODY
  59925. ><CELLBODY>Private</CELLBODY
  59926. ></ENTRY
  59927. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="25909" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  59928. ></CELLBODY
  59929. ></ENTRY
  59930. ></RBW-ROW
  59931. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oneway Invokation</CELLBODY
  59932. ></ENTRY
  59933. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  59934. ></ENTRY
  59935. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Automatic</CELLBODY
  59936. ><CELLBODY>Off</CELLBODY
  59937. ></ENTRY
  59938. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21601" TYPE="XREF-TEXTCOPY">Translating Operation Syntax</RBW-XREF
  59939. ></CELLBODY
  59940. ></ENTRY
  59941. ></RBW-ROW
  59942. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Raises</CELLBODY
  59943. ></ENTRY
  59944. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  59945. ></ENTRY
  59946. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  59947. ></ENTRY
  59948. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="37828" TYPE="XREF-TEXTCOPY">Constructors, Exceptions and Context</RBW-XREF
  59949. ></CELLBODY
  59950. ></ENTRY
  59951. ></RBW-ROW
  59952. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text </CELLBODY
  59953. ></ENTRY
  59954. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>All objects</CELLBODY
  59955. ></ENTRY
  59956. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  59957. ></ENTRY
  59958. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  59959. ></ENTRY
  59960. ></RBW-ROW
  59961. ></TBODY
  59962. ></TGROUP
  59963. ><RBW-ICONIZE></RBW-TABLE
  59964. ><B.BODY></B.BODY
  59965. ><RBWAUTO-0001></RBWAUTO-0001
  59966. ><!--
  59967.  
  59968.  
  59969.  
  59970.  
  59971.  
  59972. CONVERTING SOURCE FILE ../../sources/delphi/dlphbk.mif
  59973.  
  59974.  
  59975. --><B.BODY></B.BODY
  59976. ><B.BODY></B.BODY
  59977. ><B.BODY></B.BODY
  59978. ><B.BODY></B.BODY
  59979. ><B.BODY></B.BODY
  59980. ></LABEL
  59981. ></APPENDIX
  59982. ></BOOK
  59983. ><BOOK><BH.BOOK.HEAD>Delphi Generation Guide</BH.BOOK.HEAD
  59984. ><!--
  59985.  
  59986.  
  59987.  
  59988.  
  59989.  
  59990. CONVERTING SOURCE FILE ../../sources/delphi/dlphpref.fm5.mif
  59991.  
  59992.  
  59993. --><B.BODY></B.BODY
  59994. ><B.BODY></B.BODY
  59995. ><B.BODY></B.BODY
  59996. ><B.BODY></B.BODY
  59997. ><B.BODY></B.BODY
  59998. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  59999. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for C++</RBW-TEXTFLD
  60000. ></RBW-SYSOBJ
  60001. ></CN.CHAPTER.NOX23
  60002. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60003. >About this manual</L.LABEL
  60004. ><B.BODY>ObjectTeam provides code generation tools that enable you to generate object&truehy;oriented code for a range of object&truehy;oriented programming languages. This guide focuses on Delphi as target language. </B.BODY
  60005. ><B.BODY>This manual explains the following things:</B.BODY
  60006. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60007. ></RBW-AUTOGEN
  60008. ></RBW-MARKER
  60009. ><RBW-PARABODY>Which steps to take to generate Delphi code </RBW-PARABODY
  60010. ></LB.LIST.BULLET
  60011. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60012. ></RBW-AUTOGEN
  60013. ></RBW-MARKER
  60014. ><RBW-PARABODY>How certain constructions in the Class Diagrams (CDs) are translated into Delphi code</RBW-PARABODY
  60015. ></LB.LIST.BULLET
  60016. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60017. ></RBW-AUTOGEN
  60018. ></RBW-MARKER
  60019. ><RBW-PARABODY>How you use reverse and round&truehy;trip engineering</RBW-PARABODY
  60020. ></LB.LIST.BULLET
  60021. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60022. ></RBW-AUTOGEN
  60023. ></RBW-MARKER
  60024. ><RBW-PARABODY>How you can customize the default code generation process</RBW-PARABODY
  60025. ></LB.LIST.BULLET
  60026. ></LABEL
  60027. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60028. >Prerequisites</L.LABEL
  60029. ><B.BODY>This book assumes a basic knowledge of ObjectTeam, including familiarity with the information provided in the <CX5FX5FTITLE><CX5FX5FTITLE>ObjectTeam Getting Started</CX5FX5FTITLE
  60030. ></CX5FX5FTITLE
  60031. > and <CX5FX5FTITLE><CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  60032. ></CX5FX5FTITLE
  60033. >. </B.BODY
  60034. ><B.BODY>Furthermore, knowledge of Delphi is necessary to understand the Delphi constructions generated from the CDs. You also need this knowledge to complete the generated source files.</B.BODY
  60035. ><B.BODY>If you plan to customize the default code generation process, you should be familiar with Tcl and the object&truehy;oriented extensions to Tcl supplied with ObjectTeam. For details on Object Tcl, refer to the <CX5FX5FTITLE><CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  60036. ></CX5FX5FTITLE
  60037. >.</B.BODY
  60038. ><RBWAUTO-0001></RBWAUTO-0001
  60039. ><!--
  60040.  
  60041.  
  60042.  
  60043.  
  60044.  
  60045. CONVERTING SOURCE FILE ../../sources/delphi/dlphobjd.fm5.mif
  60046.  
  60047.  
  60048. --><B.BODY></B.BODY
  60049. ><B.BODY></B.BODY
  60050. ><B.BODY></B.BODY
  60051. ><B.BODY></B.BODY
  60052. ><B.BODY></B.BODY
  60053. ></LABEL
  60054. ></CHAPTERNONUM
  60055. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  60056. ></RBW-AUTOGEN
  60057. >Preparing <RBW-ANCHOR ID="30937"></RBW-ANCHOR
  60058. >Your ObjectTeam Model for Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  60059. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Delphi</RBW-TEXTFLD
  60060. ></RBW-SYSOBJ
  60061. ></C.CHAPTER.HEAD
  60062. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60063. >Introduction</L.LABEL
  60064. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  60065. ><CX5FX5FTITLE></CX5FX5FTITLE
  60066. >, you model the system without regard to the implementation environment.</B.BODY
  60067. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  60068. ></LABEL
  60069. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60070. >Delphi module required</L.LABEL
  60071. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>Delphi Code Generation</CX5FX5FEMPHASIS
  60072. > provides the menu items, the properties and the Tcl code required to use the Delphi Code Generator. Therefore, before moving to the Object Design phase, make sure this module is active.</B.BODY
  60073. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  60074. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60075. >For more information</SL.SUBLABEL
  60076. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  60077. ><CX5FX5FTITLE></CX5FX5FTITLE
  60078. > for details on how to activate a module.</B.BODY
  60079. ></LABEL
  60080. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60081. >Object Design and Implementation</L.LABEL
  60082. ><B.BODY>This chapter describes the tasks of the Object Design phase. <RBW-XREF REFID="27382" TYPE="XREF-TEXTCOPY">Chapter 2, Generating Code</RBW-XREF
  60083. >, describes the tasks of the Implementation phase. You work iteratively in these two phases to generate code and complete your application.</B.BODY
  60084. ></LABEL
  60085. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60086. >Purpose of object design</L.LABEL
  60087. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  60088. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  60089. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  60090. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use oter diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  60091. ></LABEL
  60092. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60093. >In this chapter</L.LABEL
  60094. ><B.BODY>This chapter contains the following sections:</B.BODY
  60095. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  60096. ></ENTRY
  60097. ></RBW-ROW
  60098. ></THEAD
  60099. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23235" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;1–3</RBW-XREF
  60100. ></SB.SECTION.BLOCK.TABLE
  60101. ></ENTRY
  60102. ></RBW-ROW
  60103. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11520" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;1–6</RBW-XREF
  60104. ></SB.SECTION.BLOCK.TABLE
  60105. ></ENTRY
  60106. ></RBW-ROW
  60107. ></TBODY
  60108. ></TGROUP
  60109. ></RBW-TABLE
  60110. ></LABEL
  60111. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  60112. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  60113. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  60114. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  60115. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  60116. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  60117. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  60118. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  60119. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  60120. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  60121. >Refining the Class Diagrams</S.SECTION.HEAD
  60122. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60123. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  60124. ></L.LABEL
  60125. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  60126. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  60127. ></LABEL
  60128. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60129. >Using data from diagrams other than CDs</L.LABEL
  60130. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  60131. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  60132. ></ENTRY
  60133. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  60134. ></ENTRY
  60135. ></RBW-ROW
  60136. ></THEAD
  60137. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  60138. ></ENTRY
  60139. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  60140. ><CELLBODY>STD class</CELLBODY
  60141. ><CELLBODY>UCD actor</CELLBODY
  60142. ></ENTRY
  60143. ></RBW-ROW
  60144. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  60145. ></ENTRY
  60146. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  60147. ><CELLBODY>STD event or event message</CELLBODY
  60148. ><CELLBODY>UCD communication association</CELLBODY
  60149. ></ENTRY
  60150. ></RBW-ROW
  60151. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  60152. ></ENTRY
  60153. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  60154. ><CELLBODY>STD condition on an event</CELLBODY
  60155. ></ENTRY
  60156. ></RBW-ROW
  60157. ></TBODY
  60158. ></TGROUP
  60159. ></RBW-TABLE
  60160. ></LABEL
  60161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60162. >Classes</L.LABEL
  60163. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  60164. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions and procedures of the class type. </B.BODY
  60165. ></LABEL
  60166. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60167. >External classes</L.LABEL
  60168. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  60169. ></LABEL
  60170. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60171. >Associations</L.LABEL
  60172. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  60173. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  60174. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60175. >Role names in Analysis and System Design</SL.SUBLABEL
  60176. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  60177. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00568.tif" origseq="1" origtype="I" origdoc="../../sources/delphi/dlphobjd.fm5.mif"></RBW-GRAPHIC
  60178. ></FA.FIGURE.ANCHOR
  60179. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60180. >Role names in Object Design and Implementation</SL.SUBLABEL
  60181. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods  for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  60182. ></LABEL
  60183. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60184. >Attributes</L.LABEL
  60185. ><B.BODY>You must specify each attribute completely, including its data type. The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  60186. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  60187. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60188. >Data types</SL.SUBLABEL
  60189. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and derived types. </B.BODY
  60190. ></LABEL
  60191. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60192. >Operations</L.LABEL
  60193. ><BI.BODY.INTRO>You must specify each operation completely.  This includes specifying such aspects as:</BI.BODY.INTRO
  60194. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60195. ></RBW-AUTOGEN
  60196. ></RBW-MARKER
  60197. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  60198. ></LB.LIST.BULLET
  60199. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60200. ></RBW-AUTOGEN
  60201. ></RBW-MARKER
  60202. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  60203. ></LB.LIST.BULLET
  60204. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60205. ></RBW-AUTOGEN
  60206. ></RBW-MARKER
  60207. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  60208. ></LB.LIST.BULLET
  60209. ></LABEL
  60210. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60211. >Properties</L.LABEL
  60212. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  60213. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  60214. >These details are incorporated in the final code.</BI.BODY.INTRO
  60215. ></LABEL
  60216. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60217. >Checking</L.LABEL
  60218. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  60219. ><CX5FX5FTITLE></CX5FX5FTITLE
  60220. > for more information about the Check utility.</B.BODY
  60221. ></LABEL
  60222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60223. >For more information</L.LABEL
  60224. ><B.BODY><RBW-XREF REFID="33269" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Classes to Units</RBW-XREF
  60225. >, and <RBW-XREF REFID="20051" TYPE="XREF-TEXTCOPY">Chapter 4, Modeling Forms and Data Modules</RBW-XREF
  60226. >, describe how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  60227. ></LABEL
  60228. ></SECTION
  60229. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  60230. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  60231. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  60232. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  60233. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  60234. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  60235. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  60236. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  60237. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  60238. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  60239. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  60240. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60241. >Introduction</L.LABEL
  60242. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  60243. ></LABEL
  60244. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60245. >Understanding the translations</L.LABEL
  60246. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  60247. ></LABEL
  60248. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60249. >Naming conventions</L.LABEL
  60250. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, bear in mind that spaces between words (in class names, for instance) are deleted by ObjectTeam code generators.</B.BODY
  60251. ></LABEL
  60252. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60253. >Customizing code generation</L.LABEL
  60254. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own.. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  60255. ></LABEL
  60256. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60257. >Using multiple languages in a single application</L.LABEL
  60258. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  60259. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  60260. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60261. ></RBW-AUTOGEN
  60262. ></RBW-MARKER
  60263. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  60264. ></LN.LIST.NUM
  60265. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60266. ></RBW-AUTOGEN
  60267. ></RBW-MARKER
  60268. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  60269. ></LN.LIST.NUM
  60270. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  60271. ></RBW-AUTOGEN
  60272. ></RBW-MARKER
  60273. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  60274. ></LN.LIST.NUM
  60275. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  60276. ></RBW-AUTOGEN
  60277. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  60278. ></LABEL
  60279. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60280. ></L.LABEL
  60281. ><!--
  60282.  
  60283.  
  60284.  
  60285.  
  60286.  
  60287. CONVERTING SOURCE FILE ../../sources/delphi/dlphcodg.fm5.mif
  60288.  
  60289.  
  60290. --><B.BODY></B.BODY
  60291. ><B.BODY></B.BODY
  60292. ><B.BODY></B.BODY
  60293. ><B.BODY></B.BODY
  60294. ><B.BODY></B.BODY
  60295. ></LABEL
  60296. ></SECTION
  60297. ></CHAPTER
  60298. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  60299. ></RBW-AUTOGEN
  60300. >Generating <RBW-ANCHOR ID="27382"></RBW-ANCHOR
  60301. >Code<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  60302. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Delphi</RBW-TEXTFLD
  60303. ></RBW-SYSOBJ
  60304. ></C.CHAPTER.HEAD
  60305. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60306. >Introduction</L.LABEL
  60307. ><B.BODY><RBW-IDXTERM TERM1="code generation"></RBW-IDXTERM
  60308. >Typically, the ultimate goal of modeling an application is to produce code that implements the application. In ObjectTeam, you can generate a significant portion of the code automatically, then complete the code by adding the details that are not specified in the model.</B.BODY
  60309. ></LABEL
  60310. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60311. >Prerequisites</L.LABEL
  60312. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60313. ></RBW-AUTOGEN
  60314. ></RBW-MARKER
  60315. ><RBW-PARABODY>The ObjectTeam module <CX5FX5FEMPHASIS>Delphi Code generation</CX5FX5FEMPHASIS
  60316. > must be active from Object Design Phase and Implementation Phase level down.</RBW-PARABODY
  60317. ></LB.LIST.BULLET
  60318. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60319. ></RBW-AUTOGEN
  60320. ></RBW-MARKER
  60321. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="30937" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  60322. >.</RBW-PARABODY
  60323. ></LB.LIST.BULLET
  60324. ></LABEL
  60325. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60326. >Steps in code generation</L.LABEL
  60327. ><B.BODY>The following table provides an overview of the code generation process. This chapter describes each step in greater detail.</B.BODY
  60328. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  60329. ></ENTRY
  60330. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  60331. ></ENTRY
  60332. ></RBW-ROW
  60333. ></THEAD
  60334. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  60335. ></ENTRY
  60336. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configure the Delphi environment, copying required source files from the ObjectTeam installation directories to the appropriate user environment directories.</CELLBODY
  60337. ></ENTRY
  60338. ></RBW-ROW
  60339. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  60340. ></ENTRY
  60341. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate Delphi files. During this step, ObjectTeam creates Delphi source files — project (<CX5FX5FFILE.NAME>.dpr</CX5FX5FFILE.NAME
  60342. >), unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  60343. >), and form (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60344. >/<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60345. >) files — on System level in the Implementation phase.</CELLBODY
  60346. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  60347. > System level in the Implementation phase is fundamentally different than System level in other phases. The System files in the Implementation phase are source files, not diagram files.</CELLBODY
  60348. ></ENTRY
  60349. ></RBW-ROW
  60350. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  60351. ></ENTRY
  60352. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Convert ASCII form (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60353. >) files to Delphi form (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60354. >) files.</CELLBODY
  60355. ><CELLBODY>The code generator creates forms and data modules as ASCII (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60356. >) files. To open these files in Delphi, you must first convert them to Delphi form (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60357. >) files.</CELLBODY
  60358. ></ENTRY
  60359. ></RBW-ROW
  60360. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  60361. ></ENTRY
  60362. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit the source files in Delphi or in ObjectTeam. ObjectTeam generates a large portion of your application code, but not all of it. In this step, you finish writing the application code.<RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  60363. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  60364. ></CELLBODY
  60365. ><CELLBODY>Changes you make to the source files are not lost. When you regenerate the source files, the code generator recognizes your changes and transfers them to the newly generated files. </CELLBODY
  60366. ></ENTRY
  60367. ></RBW-ROW
  60368. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  60369. ></ENTRY
  60370. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>In the Delphi environment, test the application. If necessary, correct the generated source files, the ObjectTeam model, or both.</CELLBODY
  60371. ></ENTRY
  60372. ></RBW-ROW
  60373. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  60374. ></ENTRY
  60375. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Regenerate the Delphi files and return to step 3.</CELLBODY
  60376. ></ENTRY
  60377. ></RBW-ROW
  60378. ></TBODY
  60379. ></TGROUP
  60380. ></RBW-TABLE
  60381. ></LABEL
  60382. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60383. >Illustration of code generation</L.LABEL
  60384. ><BI.BODY.INTRO>The following illustration shows how ObjectTeam generates code, including the names of the Tcl scripts that it uses.</BI.BODY.INTRO
  60385. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00569.tif" origseq="2" origtype="I" origdoc="../../sources/delphi/dlphcodg.fm5.mif"></RBW-GRAPHIC
  60386. ></FAR.FIGURE.ANCHOR.RIGHT
  60387. ></LABEL
  60388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60389. >In this chapter</L.LABEL
  60390. ><B.BODY>This chapter contains the following sections:</B.BODY
  60391. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  60392. ></ENTRY
  60393. ></RBW-ROW
  60394. ></THEAD
  60395. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24328" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;2–3</RBW-XREF
  60396. ></SB.SECTION.BLOCK.TABLE
  60397. ></ENTRY
  60398. ></RBW-ROW
  60399. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10153" TYPE="XREF-TEXTCOPY">Configuring Your Delphi Environment&rbwtab;2–4</RBW-XREF
  60400. ></SB.SECTION.BLOCK.TABLE
  60401. ></ENTRY
  60402. ></RBW-ROW
  60403. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21382" TYPE="XREF-TEXTCOPY">Generating Delphi Source Files&rbwtab;2–7</RBW-XREF
  60404. ></SB.SECTION.BLOCK.TABLE
  60405. ></ENTRY
  60406. ></RBW-ROW
  60407. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16756" TYPE="XREF-TEXTCOPY">Editing Generated Unit (.pas) Files&rbwtab;2–10</RBW-XREF
  60408. ></SB.SECTION.BLOCK.TABLE
  60409. ></ENTRY
  60410. ></RBW-ROW
  60411. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files&rbwtab;2–12</RBW-XREF
  60412. ></SB.SECTION.BLOCK.TABLE
  60413. ></ENTRY
  60414. ></RBW-ROW
  60415. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24486" TYPE="XREF-TEXTCOPY">Editing Generated Project (.dpr) Files&rbwtab;2–14</RBW-XREF
  60416. ></SB.SECTION.BLOCK.TABLE
  60417. ></ENTRY
  60418. ></RBW-ROW
  60419. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12172" TYPE="XREF-TEXTCOPY">Regenerating Code&rbwtab;2–19</RBW-XREF
  60420. ></SB.SECTION.BLOCK.TABLE
  60421. ></ENTRY
  60422. ></RBW-ROW
  60423. ></TBODY
  60424. ></TGROUP
  60425. ></RBW-TABLE
  60426. ></LABEL
  60427. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="24328"></RBW-ANCHOR
  60428. >Components of Code Generation</S.SECTION.HEAD
  60429. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60430. >Generated Delphi files</L.LABEL
  60431. ><B.BODY>You use ObjectTeam to model classes and forms, as well as the associations among them. From that ObjectTeam model, you generate Delphi unit, form, data module, and project files. In Delphi, you open the project, complete the application, and test it.</B.BODY
  60432. ></LABEL
  60433. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60434. >OOPL Model</L.LABEL
  60435. ><B.BODY>When you generate code, ObjectTeam converts the CDs and CDMs of the Object Design phase into an intermediate model: the OOPL Model. The Delphi code generator then generates the Delphi source files based on the OOPL Model.</B.BODY
  60436. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60437. >For more information</SL.SUBLABEL
  60438. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  60439. ><CX5FX5FTITLE></CX5FX5FTITLE
  60440. > provides a detailed description of the classes in the OOPL Model.</B.BODY
  60441. ></LABEL
  60442. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60443. >Tcl scripts for code generation</L.LABEL
  60444. ><B.BODY>The Tcl script <CX5FX5FFILE.NAME>import.tcl</CX5FX5FFILE.NAME
  60445. > activates other Tcl scripts that contain Tcl procedures to retrieve information from internal models, format it and write it to Delphi files.</B.BODY
  60446. ><B.BODY>The default <RBW-IDXTERM TERM1="Tcl" TERM2="script files used for code generation"></RBW-IDXTERM
  60447. >Tcl scripts used to generate Delphi files can be found in the directory <CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  60448. >\<CX5FX5FFILE.NAME>delphi\tcl</CX5FX5FFILE.NAME
  60449. > under <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  60450. >.</B.BODY
  60451. ></LABEL
  60452. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60453. >Code <RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  60454. >regeneration</L.LABEL
  60455. ><B.BODY>Code generation is an automated process that generates Delphi files. ObjectTeam ensures that </B.BODY
  60456. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60457. ></RBW-AUTOGEN
  60458. ></RBW-MARKER
  60459. ><RBW-PARABODY>You can regenerate the Delphi files when you change your ObjectTeam model. </RBW-PARABODY
  60460. ></LB.LIST.BULLET
  60461. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60462. ></RBW-AUTOGEN
  60463. ></RBW-MARKER
  60464. ><RBW-PARABODY>Changes that you make to the generated files, even changes made in Delphi, are preserved when you regenerate them.</RBW-PARABODY
  60465. ></LB.LIST.BULLET
  60466. ><B.BODY>For more information, see <RBW-XREF REFID="16756" TYPE="XREF-TEXTCOPY">Editing Generated Unit (.pas) Files</RBW-XREF
  60467. > and <RBW-XREF REFID="12172" TYPE="XREF-TEXTCOPY">Regenerating Code</RBW-XREF
  60468. >.</B.BODY
  60469. ></LABEL
  60470. ></SECTION
  60471. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="10153"></RBW-ANCHOR
  60472. >Configuring Your Delphi Environment</S.SECTION.HEAD
  60473. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60474. >Four tasks</L.LABEL
  60475. ><B.BODY>In ObjectTeam, configuring your Delphi environment involves four tasks, which can be done in any order:</B.BODY
  60476. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60477. ></RBW-AUTOGEN
  60478. ></RBW-MARKER
  60479. ><RBW-PARABODY>Configure your Delphi environment in the Object Design phase.</RBW-PARABODY
  60480. ></LN.LIST.NUM
  60481. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60482. ></RBW-AUTOGEN
  60483. ></RBW-MARKER
  60484. ><RBW-PARABODY>Configure your Delphi environment in the Implementation phase.</RBW-PARABODY
  60485. ></LN.LIST.NUM
  60486. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  60487. ></RBW-AUTOGEN
  60488. ></RBW-MARKER
  60489. ><RBW-PARABODY>Rename Delphi’s <CX5FX5FFILE.NAME>convert.exe</CX5FX5FFILE.NAME
  60490. > file to <CX5FX5FFILE.NAME>formconv.exe</CX5FX5FFILE.NAME
  60491. >.</RBW-PARABODY
  60492. ></LN.LIST.NUM
  60493. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  60494. ></RBW-AUTOGEN
  60495. ></RBW-MARKER
  60496. ><RBW-PARABODY>Make sure the Delphi <CX5FX5FFILE.NAME>bin</CX5FX5FFILE.NAME
  60497. > directory is in your path.</RBW-PARABODY
  60498. ></LN.LIST.NUM
  60499. ></LABEL
  60500. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60501. >What happens in the Object Design phase</L.LABEL
  60502. ><B.BODY>When you configure your Delphi environment in the Object Design phase, ObjectTeam adds a new system to this phase of your project: the DelphiVCL system. This system defines the most commonly used classes in the Delphi Visual Component Library (VCL). You use these classes to model forms and their components.</B.BODY
  60503. ><B.BODY>For more information, see <RBW-XREF REFID="20051" TYPE="XREF-TEXTCOPY">Chapter 4, Modeling Forms and Data Modules</RBW-XREF
  60504. >, and <RBW-XREF REFID="36394" TYPE="XREF-TEXTCOPY">Chapter 6, Editing the DelphiVCL System</RBW-XREF
  60505. >.</B.BODY
  60506. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60507. >If you skip this task</SL.SUBLABEL
  60508. ><B.BODY>If you have no DelphiVCL system in the current Object Design phase, the ObjectTeam classes used for modeling Delphi forms are not defined. When you generate Delphi source files, forms and data modules are not generated. </B.BODY
  60509. ><B.BODY>A form is generated for each ObjectTeam class that is a subclass of the TForm class. A data module is generated for each ObjectTeam class that is a subclass of the TDataModule class. The TForm and TDataModule classes are defined in the DelphiVCL system. If these classes are not defined, no forms or data modules are generated.</B.BODY
  60510. ></LABEL
  60511. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60512. >How to configure the environment in Object Design</L.LABEL
  60513. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  60514. ></RBW-AUTOGEN
  60515. >This operation creates the DelphiVCL system. It can take a few minutes.</N.NOTE
  60516. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  60517. ></RBW-AUTOGEN
  60518. ></RBW-MARKER
  60519. ><RBW-PARABODY>To configure the Delphi environment in the Object Design phase:</RBW-PARABODY
  60520. ></P.PROCEDURE
  60521. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60522. ></RBW-AUTOGEN
  60523. ></RBW-MARKER
  60524. ><RBW-PARABODY>Move to Object Design Phase level, or System level in the Object Design phase.</RBW-PARABODY
  60525. ></LN.LIST.NUM
  60526. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60527. ></RBW-AUTOGEN
  60528. ></RBW-MARKER
  60529. ><RBW-PARABODY>Select Utilities | Configure Delphi Environment.</RBW-PARABODY
  60530. ></LN.LIST.NUM
  60531. ><LR.LIST.RESULT>ObjectTeam creates the DelphiVCL system in the Object Design phase.</LR.LIST.RESULT
  60532. ></LABEL
  60533. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60534. >What happens in the Implementation phase</L.LABEL
  60535. ><B.BODY>When you configure your Delphi environment in the Implementation phase, ObjectTeam copies the <CX5FX5FFILE.NAME>ClassDict.pas</CX5FX5FFILE.NAME
  60536. > file to the <CX5FX5FVARIABLE>user_environment\</CX5FX5FVARIABLE
  60537. >src directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  60538. > is the file path for your generated files. For more information on the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  60539. ><CX5FX5FTITLE></CX5FX5FTITLE
  60540. >.</B.BODY
  60541. ><B.BODY>The Delphi ClassDict class is automatically included in all generated Delphi projects. It is referenced in the Delphi code generated for qualified associations. For more information on how the ClassDict class is used, see <RBW-XREF REFID="24359" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations</RBW-XREF
  60542. >.</B.BODY
  60543. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60544. >If you skip this task</SL.SUBLABEL
  60545. ><B.BODY>If you have not configured your Delphi environment in the Implementation phase, when you compile the generated Delphi code, an error occurs because the ClassDict class is not available.</B.BODY
  60546. ></LABEL
  60547. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60548. >How to configure the environment in Implementation</L.LABEL
  60549. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  60550. ></RBW-AUTOGEN
  60551. ></RBW-MARKER
  60552. ><RBW-PARABODY>To configure the Delphi environment in the Implementation phase:</RBW-PARABODY
  60553. ></P.PROCEDURE
  60554. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60555. ></RBW-AUTOGEN
  60556. ></RBW-MARKER
  60557. ><RBW-PARABODY>Move to Implementation Phase level, or System level in the Implementation phase.</RBW-PARABODY
  60558. ></LN.LIST.NUM
  60559. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60560. ></RBW-AUTOGEN
  60561. ></RBW-MARKER
  60562. ><RBW-PARABODY>Select Utilities | Configure Delphi Environment.</RBW-PARABODY
  60563. ></LN.LIST.NUM
  60564. ><LR.LIST.RESULT>ObjectTeam copies the <CX5FX5FFILE.NAME>ClassDict.pas</CX5FX5FFILE.NAME
  60565. > file to the user_environment\<CX5FX5FFILE.NAME>src</CX5FX5FFILE.NAME
  60566. > directory.</LR.LIST.RESULT
  60567. ></LABEL
  60568. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60569. >Rename convert.exe to formconv.exe</L.LABEL
  60570. ><B.BODY>In Delphi, forms and data modules can be stored as ASCII (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60571. >) files or as Delphi form (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60572. >) files. The ObjectTeam code generator creates forms and data modules as ASCII (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60573. >) files. To open the forms and data modules in Delphi, you must first convert the ASCII (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60574. >) files to Delphi form (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60575. >) files.</B.BODY
  60576. ><B.BODY>Delphi provides a conversion utility (<CX5FX5FFILE.NAME>convert.exe</CX5FX5FFILE.NAME
  60577. >) to convert between <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60578. > and <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60579. > formats. In the Implementation phase of the Browser, two menu items (Delphi | Convert Text to Forms and Delphi | Convert Forms to Text) invoke the Delphi conversion utility.</B.BODY
  60580. ><B.BODY>Because <CX5FX5FFILE.NAME>convert.exe</CX5FX5FFILE.NAME
  60581. > is a common file name, it is possible to have other files of that name in your path. To avoid potential problems:</B.BODY
  60582. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60583. ></RBW-AUTOGEN
  60584. ></RBW-MARKER
  60585. ><RBW-PARABODY>Rename the <CX5FX5FFILE.NAME>convert.exe</CX5FX5FFILE.NAME
  60586. > file to <CX5FX5FFILE.NAME>formconv.exe</CX5FX5FFILE.NAME
  60587. >. The file is in the <CX5FX5FFILE.NAME>bin</CX5FX5FFILE.NAME
  60588. > subdirectory of your Delphi installation directory.</RBW-PARABODY
  60589. ></LN.LIST.NUM
  60590. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60591. ></RBW-AUTOGEN
  60592. ></RBW-MARKER
  60593. ><RBW-PARABODY>The ObjectTeam commands Delphi | Convert Text to Forms and Delphi | Convert Forms to Text invoke <CX5FX5FFILE.NAME>formconv.exe</CX5FX5FFILE.NAME
  60594. > instead of <CX5FX5FFILE.NAME>convert.exe</CX5FX5FFILE.NAME
  60595. >.</RBW-PARABODY
  60596. ></LN.LIST.NUM
  60597. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60598. >If you skip this task</SL.SUBLABEL
  60599. ><B.BODY>If you do not rename the <CX5FX5FFILE.NAME>convert.exe</CX5FX5FFILE.NAME
  60600. > file, the ObjectTeam commands display an error message indicating that the <CX5FX5FFILE.NAME>formconv.exe</CX5FX5FFILE.NAME
  60601. > file cannot be found.</B.BODY
  60602. ></LABEL
  60603. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60604. >Add the Delphi bin directory to your path</L.LABEL
  60605. ><B.BODY>In the Implementation phase of the Browser, the ObjectTeam commands Delphi | Run Delphi and Delphi | Run Delphi With Project start Delphi by invoking the Delphi executable. </B.BODY
  60606. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60607. >If you skip this task</SL.SUBLABEL
  60608. ><B.BODY>If the Delphi <CX5FX5FFILE.NAME>bin</CX5FX5FFILE.NAME
  60609. > directory is not in your path, the ObjectTeam commands display an error message indicating that the Delphi executable cannot be found.</B.BODY
  60610. ></LABEL
  60611. ></SECTION
  60612. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21382"></RBW-ANCHOR
  60613. >Generating Delphi Source Files</S.SECTION.HEAD
  60614. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60615. >Result of generating</L.LABEL
  60616. ><B.BODY>When you generate source files, the code generator uses the CDs and CDMs that are in the Object Design phase to create Delphi source files in the Implementation phase. At System level of the Implementation phase, you can then refine the source code and complete the application.</B.BODY
  60617. ></LABEL
  60618. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60619. >Implementation Phase is different</L.LABEL
  60620. ><B.BODY>The System level of the Implementation phase is fundamentally different from System level of any other phase. In the Implementation phase, the System files are Delphi files. In other phases, the System files are ObjectTeam diagrams.</B.BODY
  60621. ></LABEL
  60622. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60623. >Generate code on Phase or System level</L.LABEL
  60624. ><B.BODY>You can generate code on the Implementation Phase level or on the System level of the Implementation phase.</B.BODY
  60625. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60626. ></RBW-AUTOGEN
  60627. ></RBW-MARKER
  60628. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>Implementation Phase level</CX5FX5FBULLET.EMPHASIS
  60629. >, you can generate code for one or more systems. This creates a matching system in the Implementation Phase that contains the generated source files. To regenerate code for an existing system, use System level.</RBW-PARABODY
  60630. ></LB.LIST.BULLET
  60631. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60632. ></RBW-AUTOGEN
  60633. ></RBW-MARKER
  60634. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>System level of the Implementation phase</CX5FX5FBULLET.EMPHASIS
  60635. >, you can (re)generate code for the entire system, or regenerate selected source files.</RBW-PARABODY
  60636. ></LB.LIST.BULLET
  60637. ><B.BODY>Typically, you use Implementation Phase level to generate code for a system initially and System level to regenerate code subsequently.</B.BODY
  60638. ></LABEL
  60639. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60640. >How to generate code on Implementation Phase level</L.LABEL
  60641. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  60642. ></RBW-AUTOGEN
  60643. ></RBW-MARKER
  60644. ><RBW-PARABODY>To generate source files on the Implementation Phase level:</RBW-PARABODY
  60645. ></P.PROCEDURE
  60646. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60647. ></RBW-AUTOGEN
  60648. ></RBW-MARKER
  60649. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  60650. ></LN.LIST.NUM
  60651. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60652. ></RBW-AUTOGEN
  60653. ></RBW-MARKER
  60654. ><RBW-PARABODY>Select Utilities | Generate Delphi.</RBW-PARABODY
  60655. ></LN.LIST.NUM
  60656. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  60657. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  60658. ></RBW-AUTOGEN
  60659. ></RBW-MARKER
  60660. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  60661. ></LN.LIST.NUM
  60662. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  60663. ></RBW-MARKER
  60664. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  60665. > to generate code for all systems from the Object Design phase for which no code has been generated yet. Do <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  60666. > select this option unless you want to generate code for the DelphiVCL system.</RBW-PARABODY
  60667. ></LB2.LIST.BULLET.2
  60668. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  60669. ></RBW-MARKER
  60670. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  60671. > to generate code for one or more systems in the Object Design phase. You can select only systems that do not yet exist in the Implementation phase.</RBW-PARABODY
  60672. ></LB2.LIST.BULLET.2
  60673. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files.</LR.LIST.RESULT
  60674. ></LABEL
  60675. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60676. >How to generate code on System level</L.LABEL
  60677. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  60678. ></RBW-AUTOGEN
  60679. ></RBW-MARKER
  60680. ><RBW-PARABODY>To generate (selected) source files for a system from System level of the Implementation phase:</RBW-PARABODY
  60681. ></P.PROCEDURE
  60682. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60683. ></RBW-AUTOGEN
  60684. ></RBW-MARKER
  60685. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  60686. ></LN.LIST.NUM
  60687. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60688. ></RBW-AUTOGEN
  60689. ></RBW-MARKER
  60690. ><RBW-PARABODY>Select Utilities | Generate Delphi.</RBW-PARABODY
  60691. ></LN.LIST.NUM
  60692. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  60693. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  60694. ></RBW-AUTOGEN
  60695. ></RBW-MARKER
  60696. ><RBW-PARABODY>Select New, Selected, or All:</RBW-PARABODY
  60697. ></LN.LIST.NUM
  60698. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  60699. ></RBW-MARKER
  60700. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New</CX5FX5FBULLET.EMPHASIS
  60701. > to generate code for all classes that are defined in this system and that have not yet been generated into code.</RBW-PARABODY
  60702. ></LB2.LIST.BULLET.2
  60703. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  60704. ></RBW-MARKER
  60705. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Selected</CX5FX5FBULLET.EMPHASIS
  60706. > to regenerate the files that you have selected in the Information area of the browser.</RBW-PARABODY
  60707. ></LB2.LIST.BULLET.2
  60708. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  60709. ></RBW-MARKER
  60710. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>All</CX5FX5FBULLET.EMPHASIS
  60711. > to (re)generate code for all classes that are defined in this system.</RBW-PARABODY
  60712. ></LB2.LIST.BULLET.2
  60713. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files. </LR.LIST.RESULT
  60714. ></LABEL
  60715. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60716. >Location of the source files</L.LABEL
  60717. ><B.BODY>The Delphi files are stored in the repository as external files. They are also written to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  60718. >\<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  60719. > directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  60720. > is the file path for your generated files. For more information on the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  60721. ><CX5FX5FTITLE></CX5FX5FTITLE
  60722. >.</B.BODY
  60723. ><BI.BODY.INTRO>The following illustration shows how the source files appear in the Browser.</BI.BODY.INTRO
  60724. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00570.unk" origfile="pics/srcfiles.gif" origtype="X" origdoc="../../sources/delphi/dlphcodg.fm5.mif"></RBW-GRAPHIC
  60725. ></FAR.FIGURE.ANCHOR.RIGHT
  60726. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60727. ><RBW-IDXTERM TERM1="user environment" TERM2="updating"></RBW-IDXTERM
  60728. ><RBW-IDXTERM TERM1="Update User Environment (Utilities menu)"></RBW-IDXTERM
  60729. >Update user environment</SL.SUBLABEL
  60730. ><B.BODY>Utilities | Update User Environment synchronizes your user environment with the repository. </B.BODY
  60731. ><B.BODY>This can be particularly useful if you are working on two machines, and the user environment of each is set to a local drive. When you move between machines, you can use Utilities | Update User Environment to update the local drive of the current machine.</B.BODY
  60732. ></LABEL
  60733. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60734. >Generated files</L.LABEL
  60735. ><B.BODY>The Delphi code generator generates the following files:<RBW-IDXTERM TERM1="Visual Basic" TERM2="generating files"></RBW-IDXTERM
  60736. ><RBW-IDXTERM TERM1="generating Visual Basic files"></RBW-IDXTERM
  60737. ><RBW-IDXTERM TERM1=".bas file"></RBW-IDXTERM
  60738. ><RBW-IDXTERM TERM1=".frm file"></RBW-IDXTERM
  60739. ><RBW-IDXTERM TERM1=".vbp file"></RBW-IDXTERM
  60740. ><RBW-IDXTERM TERM1=".cls file"></RBW-IDXTERM
  60741. ><RBW-IDXTERM TERM1=".bas file"></RBW-IDXTERM
  60742. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  60743. ><RBW-IDXTERM TERM1=".cls file"></RBW-IDXTERM
  60744. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  60745. ><RBW-IDXTERM TERM1=".vbp file"></RBW-IDXTERM
  60746. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  60747. ><RBW-IDXTERM TERM1=".frm file"></RBW-IDXTERM
  60748. ></B.BODY
  60749. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File Type</CELLHEADING
  60750. ></ENTRY
  60751. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  60752. ></ENTRY
  60753. ></RBW-ROW
  60754. ></THEAD
  60755. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>systemname</CX5FX5FTERM
  60756. >.<CX5FX5FFILE.NAME>dpr</CX5FX5FFILE.NAME
  60757. > </CELLBODY
  60758. ></ENTRY
  60759. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>One per system. This is the Delphi project file, which lists all other files in the system.</CELLBODY
  60760. ></ENTRY
  60761. ></RBW-ROW
  60762. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>classname</CX5FX5FTERM
  60763. >Unit.pas </CELLBODY
  60764. ></ENTRY
  60765. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>One for each ObjectTeam class that represents a Delphi class, form unit, or data module container. Each file contains the code generated for the attributes, operations, and associations of the class.</CELLBODY
  60766. ></ENTRY
  60767. ></RBW-ROW
  60768. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>classname</CX5FX5FTERM
  60769. >Unit.txt (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60770. >)</CELLBODY
  60771. ></ENTRY
  60772. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>One for each ObjectTeam class that represents a Delphi form unit or data module container. Each file contains the definition of the form or data module.</CELLBODY
  60773. ><CELLBODY><CX5FX5FEMPHASIS>Note</CX5FX5FEMPHASIS
  60774. >: The code generator generates forms and data modules as ASCII (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60775. >) files. To open these files in Delphi, you must convert them to Delphi form (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60776. >) files. See <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  60777. >.</CELLBODY
  60778. ></ENTRY
  60779. ></RBW-ROW
  60780. ></TBODY
  60781. ></TGROUP
  60782. ></RBW-TABLE
  60783. ></LABEL
  60784. ></SECTION
  60785. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16756"></RBW-ANCHOR
  60786. >Editing Generated Unit (.pas) Files</S.SECTION.HEAD
  60787. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60788. >Introduction</L.LABEL
  60789. ><B.BODY>This section describes the changes you can make to generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  60790. >) files and how to edit the generated files.</B.BODY
  60791. ><B.BODY>See <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  60792. > and <RBW-XREF REFID="24486" TYPE="XREF-TEXTCOPY">Editing Generated Project (.dpr) Files</RBW-XREF
  60793. > for information about editing other types of generated files.</B.BODY
  60794. ></LABEL
  60795. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60796. >Changes to procedure bodies are preserved</L.LABEL
  60797. ><B.BODY>The procedures in the generated Delphi unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  60798. >) files reflect the information in the ObjectTeam model. They do not contain all of the code necessary for the application. Comments in the generated procedures indicate where you should add code to complete the application.</B.BODY
  60799. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60800. ></RBW-AUTOGEN
  60801. ></RBW-MARKER
  60802. ><RBW-PARABODY><RBW-IDXTERM TERM1="Visual Basic" TERM2="editing generated files"></RBW-IDXTERM
  60803. ><RBW-IDXTERM TERM1="editing generated files"></RBW-IDXTERM
  60804. ><RBW-IDXTERM TERM1="generated files" TERM2="editing"></RBW-IDXTERM
  60805. >A method is generated for each operation defined in an ObjectTeam class. You must add the code that implements the method. The body of each generated method contains the following comment. Add code below the comment.</RBW-PARABODY
  60806. ></LB.LIST.BULLET
  60807. ><EM.EXAMPLE.MONO>//Implement this function!</EM.EXAMPLE.MONO
  60808. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60809. ></RBW-AUTOGEN
  60810. ></RBW-MARKER
  60811. ><RBW-PARABODY>Most generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  60812. >) files include constructor and destructor methods. The body of the generated constructor and destructor method might contain generated code, as well as the following comments. Optionally, add code between the comments.</RBW-PARABODY
  60813. ></LB.LIST.BULLET
  60814. ><EM.EXAMPLE.MONO>//Start user section</EM.EXAMPLE.MONO
  60815. ><EM.EXAMPLE.MONO>//End user section</EM.EXAMPLE.MONO
  60816. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60817. ></RBW-AUTOGEN
  60818. ></RBW-MARKER
  60819. ><RBW-PARABODY>Other generated procedures (such as the Get, Set, Add and Remove methods that implement associations) contain generated code but no comments indicating where to add additional code. Changes you make to these procedures are lost when you regenerate the file.</RBW-PARABODY
  60820. ></LB.LIST.BULLET
  60821. ></LABEL
  60822. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60823. >Changes that change the model</L.LABEL
  60824. ><B.BODY>If you make the following changes to unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  60825. >) files, you must use round&truehy;trip engineering (see <RBW-XREF REFID="17037" TYPE="XREF-TEXTCOPY">Chapter 5, Reverse and Round&truehy;Trip Engineering</RBW-XREF
  60826. >) to update the matching attributes and operations in the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  60827. > regenerating the files.</B.BODY
  60828. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60829. ></RBW-AUTOGEN
  60830. ></RBW-MARKER
  60831. ><RBW-PARABODY>Add, modify, or delete variables</RBW-PARABODY
  60832. ></LB.LIST.BULLET
  60833. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60834. ></RBW-AUTOGEN
  60835. ></RBW-MARKER
  60836. ><RBW-PARABODY>Add and delete procedures</RBW-PARABODY
  60837. ></LB.LIST.BULLET
  60838. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60839. ></RBW-AUTOGEN
  60840. ></RBW-MARKER
  60841. ><RBW-PARABODY>Modify the header of a procedure</RBW-PARABODY
  60842. ></LB.LIST.BULLET
  60843. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60844. >Explanation</SL.SUBLABEL
  60845. ><B.BODY>The code generator generates code based on the ObjectTeam model. If you do not update the model, the regenerated code reflects the model. Your changes are not preserved. </B.BODY
  60846. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60847. >Example</SL.SUBLABEL
  60848. ><B.BODY>You add a variable to a generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  60849. >) file by editing the file. You do not add the matching attribute to the ObjectTeam model. When you regenerate the file, the code generator assumes that you deleted the matching attribute from the ObjectTeam model. This makes the Delphi variable obsolete, so ObjectTeam removes it from the generated source file.</B.BODY
  60850. ></LABEL
  60851. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60852. >Do not delete regeneration markers</L.LABEL
  60853. ><B.BODY><RBW-IDXTERM TERM1="code regeneration" TERM2="regeneration markers"></RBW-IDXTERM
  60854. ><RBW-IDXTERM TERM1="regeneration markers"></RBW-IDXTERM
  60855. >Generated files often contain special comments called <CX5FX5FTERM>regeneration markers:</CX5FX5FTERM
  60856. ></B.BODY
  60857. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; regeneration marker</EWM.EXAMPLEW.MONO
  60858. ><B.BODY>The code generator uses these comments to preserve the changes you have made to the generated file. Do not delete these comments.</B.BODY
  60859. ></LABEL
  60860. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60861. >Two ways to edit generated files</L.LABEL
  60862. ><B.BODY>You can edit the generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  60863. >) files in ObjectTeam or in Delphi.</B.BODY
  60864. ></LABEL
  60865. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60866. ><RBW-ANCHOR ID="26511"></RBW-ANCHOR
  60867. >How to edit generated files in ObjectTeam</L.LABEL
  60868. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  60869. ></RBW-AUTOGEN
  60870. ></RBW-MARKER
  60871. ><RBW-PARABODY>To edit the generated files in ObjectTeam:</RBW-PARABODY
  60872. ></P.PROCEDURE
  60873. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60874. ></RBW-AUTOGEN
  60875. ></RBW-MARKER
  60876. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  60877. ></LN.LIST.NUM
  60878. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60879. ></RBW-AUTOGEN
  60880. ></RBW-MARKER
  60881. ><RBW-PARABODY>In the Information area, double&truehy;click on the source file that you want to edit, or select the source file and then select File | Edit.</RBW-PARABODY
  60882. ></LN.LIST.NUM
  60883. ><LR.LIST.RESULT>ObjectTeam opens the file in your default text editor. When you save the file, ObjectTeam updates both the repository and the user environment.</LR.LIST.RESULT
  60884. ></LABEL
  60885. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60886. ><RBW-ANCHOR ID="35795"></RBW-ANCHOR
  60887. >How to edit generated files in Delphi</L.LABEL
  60888. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  60889. ></RBW-AUTOGEN
  60890. ></RBW-MARKER
  60891. ><RBW-PARABODY>To edit the generated files in Delphi:</RBW-PARABODY
  60892. ></P.PROCEDURE
  60893. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60894. ></RBW-AUTOGEN
  60895. ></RBW-MARKER
  60896. ><RBW-PARABODY>If you have generated forms or data modules, convert the <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60897. > files to <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60898. > files, as described in <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  60899. >.</RBW-PARABODY
  60900. ></LN.LIST.NUM
  60901. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60902. ></RBW-AUTOGEN
  60903. ></RBW-MARKER
  60904. ><RBW-PARABODY>Select Delphi | Run Delphi With Project, or select Delphi | Run Delphi and then open the project in Delphi.</RBW-PARABODY
  60905. ></LN.LIST.NUM
  60906. ><LR.LIST.RESULT>Editing the Delphi project updates the generated files.</LR.LIST.RESULT
  60907. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  60908. ></RBW-AUTOGEN
  60909. ></RBW-MARKER
  60910. ><RBW-PARABODY>After editing the Delphi project, convert the <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60911. > files to <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60912. > files, as described in <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  60913. >.</RBW-PARABODY
  60914. ></LN.LIST.NUM
  60915. ></LABEL
  60916. ></SECTION
  60917. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="24431"></RBW-ANCHOR
  60918. >Editing Generated Form (.txt/.dfm) Files</S.SECTION.HEAD
  60919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60920. >Introduction</L.LABEL
  60921. ><B.BODY>This section describes the changes you can make to generated form and data module (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60922. >/<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60923. >) files and how to edit the generated files.</B.BODY
  60924. ><B.BODY>See <RBW-XREF REFID="16756" TYPE="XREF-TEXTCOPY">Editing Generated Unit (.pas) Files</RBW-XREF
  60925. > and <RBW-XREF REFID="24486" TYPE="XREF-TEXTCOPY">Editing Generated Project (.dpr) Files</RBW-XREF
  60926. > for information about editing other types of generated files.</B.BODY
  60927. ></LABEL
  60928. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60929. >Two formats: .txt and .dfm</L.LABEL
  60930. ><B.BODY>Forms and data modules can be stored as ASCII (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60931. >) files or as Delphi form (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60932. >) files. ObjectTeam generates <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60933. > files.</B.BODY
  60934. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60935. ></RBW-AUTOGEN
  60936. ></RBW-MARKER
  60937. ><RBW-PARABODY>Convert from <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60938. > to <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60939. > when you have (re)generated forms or data modules and want to bring them into Delphi.</RBW-PARABODY
  60940. ></LB.LIST.BULLET
  60941. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  60942. ></RBW-AUTOGEN
  60943. ></RBW-MARKER
  60944. ><RBW-PARABODY>Convert from <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60945. > to <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60946. > when you have edited the forms or data modules in Delphi and want to work with them in ObjectTeam.</RBW-PARABODY
  60947. ></LB.LIST.BULLET
  60948. ></LABEL
  60949. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60950. >How to convert between formats</L.LABEL
  60951. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  60952. ></RBW-AUTOGEN
  60953. >Before converting files, you must have renamed <CX5FX5FFILE.NAME>convert.exe</CX5FX5FFILE.NAME
  60954. > to <CX5FX5FFILE.NAME>formconv.exe</CX5FX5FFILE.NAME
  60955. >, as described in <RBW-XREF REFID="10153" TYPE="XREF-TEXTCOPY">Configuring Your Delphi Environment</RBW-XREF
  60956. >.</N.NOTE
  60957. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  60958. ></RBW-AUTOGEN
  60959. ></RBW-MARKER
  60960. ><RBW-PARABODY>To convert from <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60961. > to <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60962. >:</RBW-PARABODY
  60963. ></P.PROCEDURE
  60964. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60965. ></RBW-AUTOGEN
  60966. ></RBW-MARKER
  60967. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  60968. ></LN.LIST.NUM
  60969. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60970. ></RBW-AUTOGEN
  60971. ></RBW-MARKER
  60972. ><RBW-PARABODY>Select Delphi | Convert Text to Forms | All.</RBW-PARABODY
  60973. ></LN.LIST.NUM
  60974. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>Alternative:</CX5FX5FBULLET.EMPHASIS
  60975. > Select one or more of the generated <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60976. > files and then select Delphi | Convert Text to Forms | Selected.</LT.LIST.TEXT
  60977. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  60978. ></RBW-AUTOGEN
  60979. ></RBW-MARKER
  60980. ><RBW-PARABODY>To convert from <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  60981. > to <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60982. >:</RBW-PARABODY
  60983. ></P.PROCEDURE
  60984. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  60985. ></RBW-AUTOGEN
  60986. ></RBW-MARKER
  60987. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  60988. ></LN.LIST.NUM
  60989. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  60990. ></RBW-AUTOGEN
  60991. ></RBW-MARKER
  60992. ><RBW-PARABODY>Select Delphi | Convert Forms to Text | All.</RBW-PARABODY
  60993. ></LN.LIST.NUM
  60994. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>Alternative:</CX5FX5FBULLET.EMPHASIS
  60995. > Select one or more of the generated <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  60996. > files and then select Delphi | Convert Forms to Text | Selected.</LT.LIST.TEXT
  60997. ></LABEL
  60998. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  60999. >Automatic conversion</L.LABEL
  61000. ><B.BODY>To make <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61001. >/<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61002. > conversion easier, Cayenne provides an automatic conversion option. When automatic conversion is enabled, ObjectTeam automatically converts between formats as follows:</B.BODY
  61003. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61004. ></RBW-AUTOGEN
  61005. ></RBW-MARKER
  61006. ><RBW-PARABODY><CX5FX5FFILE.NAME>(Re)generating</CX5FX5FFILE.NAME
  61007. >. If you are regenerating files, ObjectTeam converts <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61008. > files to <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61009. > files before generating. After generating files, ObjectTeam converts <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61010. > files to <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61011. > files.</RBW-PARABODY
  61012. ></LB.LIST.BULLET
  61013. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61014. ></RBW-AUTOGEN
  61015. ></RBW-MARKER
  61016. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Reverse engineering</CX5FX5FBULLET.EMPHASIS
  61017. >. After reverse engineering files (see <RBW-XREF REFID="21085" TYPE="XREF-TEXTCOPY">Reverse Engineering</RBW-XREF
  61018. >), ObjectTeam converts <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61019. > files to <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61020. > files.</RBW-PARABODY
  61021. ></LB.LIST.BULLET
  61022. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61023. ></RBW-AUTOGEN
  61024. ></RBW-MARKER
  61025. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Round&truehy;trip engineering</CX5FX5FBULLET.EMPHASIS
  61026. >. Before round&truehy;trip engineering (see <RBW-XREF REFID="15125" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  61027. >), ObjectTeam converts <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61028. > files to <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61029. > files. After round&truehy;trip engineering, ObjectTeam converts <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61030. > files to <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61031. > files.</RBW-PARABODY
  61032. ></LB.LIST.BULLET
  61033. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  61034. ></RBW-AUTOGEN
  61035. ></RBW-MARKER
  61036. ><RBW-PARABODY>To enable automatic conversion, select Delphi | Auto Form Convert.</RBW-PARABODY
  61037. ></P.PROCEDURE
  61038. ><LRS.LIST.RESULT.SINGLE>A check mark appears next to the menu item and automatic conversion is enabled.</LRS.LIST.RESULT.SINGLE
  61039. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  61040. ></RBW-AUTOGEN
  61041. ></RBW-MARKER
  61042. ><RBW-PARABODY>To disable automatic conversion, select Delphi | Auto Form Convert.</RBW-PARABODY
  61043. ></P.PROCEDURE
  61044. ><LRS.LIST.RESULT.SINGLE>The check mark disappears and automatic conversion is disabled.</LRS.LIST.RESULT.SINGLE
  61045. ></LABEL
  61046. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61047. >How to edit forms and data modules</L.LABEL
  61048. ><B.BODY>Typically, you edit generated forms and data modules in Delphi, as described in <RBW-XREF REFID="35795" TYPE="XREF-TEXTCOPY">How to edit generated files in Delphi</RBW-XREF
  61049. >. Alternatively, you can edit the <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61050. > files in ObjectTeam, as described in <RBW-XREF REFID="26511" TYPE="XREF-TEXTCOPY">How to edit generated files in ObjectTeam</RBW-XREF
  61051. >.</B.BODY
  61052. ></LABEL
  61053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61054. >Changes that are preserved</L.LABEL
  61055. ><B.BODY>Most changes that you make to a form or data module, such as repositioning elements or changing their properties, are preserved when you regenerate the file. </B.BODY
  61056. ></LABEL
  61057. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61058. >Changes that change the model</L.LABEL
  61059. ><B.BODY>If you add or remove elements from a generated form or data module, you must update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  61060. > regenerating the files. You can use round&truehy;trip engineering (see <RBW-XREF REFID="17037" TYPE="XREF-TEXTCOPY">Chapter 5, Reverse and Round&truehy;Trip Engineering</RBW-XREF
  61061. >) to add elements to the ObjectTeam model. You cannot use it to delete elements from the model.</B.BODY
  61062. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61063. >Explanation</SL.SUBLABEL
  61064. ><B.BODY>The code generator generates code based on the ObjectTeam model. If you do not update the model, the regenerated code reflects the model. Your changes are not preserved. </B.BODY
  61065. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61066. >Example</SL.SUBLABEL
  61067. ><B.BODY>You add an element to a generated form. You do not add the matching class to the ObjectTeam model. When you regenerate the file, the code generator assumes that you deleted the matching class from the ObjectTeam model. This makes the Delphi element obsolete, so ObjectTeam removes it from the generated source file.</B.BODY
  61068. ></LABEL
  61069. ></SECTION
  61070. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="24486"></RBW-ANCHOR
  61071. >Editing Generated Project (.dpr) Files</S.SECTION.HEAD
  61072. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61073. >Introduction</L.LABEL
  61074. ><B.BODY>This section describes how to edit generated project (<CX5FX5FFILE.NAME>.dpr</CX5FX5FFILE.NAME
  61075. >) files.</B.BODY
  61076. ><B.BODY>See <RBW-XREF REFID="16756" TYPE="XREF-TEXTCOPY">Editing Generated Unit (.pas) Files</RBW-XREF
  61077. > and <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  61078. > for information about editing other types of generated files.</B.BODY
  61079. ></LABEL
  61080. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61081. >Maintaining project files</L.LABEL
  61082. ><B.BODY>Each ObjectTeam system maps to a Delphi project. When you generate code for a system, the code generator also generates a Delphi project file, <CX5FX5FVARIABLE>systemName</CX5FX5FVARIABLE
  61083. >.<CX5FX5FFILE.NAME>dpr</CX5FX5FFILE.NAME
  61084. >.</B.BODY
  61085. ><B.BODY>If your Delphi project contains several ObjectTeam systems, you might find it easier to create and maintain a project file in Delphi, rather than using the generated project file.</B.BODY
  61086. ></LABEL
  61087. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61088. >Generated project file</L.LABEL
  61089. ><B.BODY>The code generator creates a project file by copying the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61090. > customization file to the <CX5FX5FVARIABLE>systemName</CX5FX5FVARIABLE
  61091. >.dpr file and then updating the <CX5FX5FVARIABLE>systemName</CX5FX5FVARIABLE
  61092. >.dpr file. The generated project file contains:</B.BODY
  61093. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61094. ></RBW-AUTOGEN
  61095. ></RBW-MARKER
  61096. ><RBW-PARABODY>The project type and name</RBW-PARABODY
  61097. ></LB.LIST.BULLET
  61098. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61099. ></RBW-AUTOGEN
  61100. ></RBW-MARKER
  61101. ><RBW-PARABODY>The <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  61102. > clauses</RBW-PARABODY
  61103. ></LB.LIST.BULLET
  61104. ><LT.LIST.TEXT>By default, the uses clause lists only the units generated from the current ObjectTeam system. If the current system references classes defined in other systems, you must add to the current project file the units generated from the other systems.</LT.LIST.TEXT
  61105. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61106. ></RBW-AUTOGEN
  61107. ></RBW-MARKER
  61108. ><RBW-PARABODY>The application initialize and run clauses</RBW-PARABODY
  61109. ></LB.LIST.BULLET
  61110. ><LT.LIST.TEXT>In Delphi, by default, all forms are automatically created. In ObjectTeam, only the main form is automatically created. The main form is the form that maps to the ObjectTeam class whose Main Form class property is set, as described in described in <RBW-XREF REFID="17659" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  61111. >. You cannot compile or run a Delphi project that does not have a main form.</LT.LIST.TEXT
  61112. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61113. ></RBW-AUTOGEN
  61114. ></RBW-MARKER
  61115. ><RBW-PARABODY>The regeneration marker block</RBW-PARABODY
  61116. ></LB.LIST.BULLET
  61117. ><LT.LIST.TEXT>This block contains the names of all units generated by the ObjectTeam code generator. It serves as a checklist for the code generator to remove obsolete units from the project.</LT.LIST.TEXT
  61118. ></LABEL
  61119. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61120. >How to edit a project file</L.LABEL
  61121. ><B.BODY>Typically, you edit a generated project file in Delphi, as described in <RBW-XREF REFID="35795" TYPE="XREF-TEXTCOPY">How to edit generated files in Delphi</RBW-XREF
  61122. >. Alternatively, you can edit the project file in ObjectTeam, as described in <RBW-XREF REFID="26511" TYPE="XREF-TEXTCOPY">How to edit generated files in ObjectTeam</RBW-XREF
  61123. >.</B.BODY
  61124. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61125. ><CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61126. > file</SL.SUBLABEL
  61127. ><B.BODY>You can edit the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61128. > customization file, as described in <RBW-XREF REFID="10944" TYPE="XREF-TEXTCOPY">Editing the default.dpr Customization File</RBW-XREF
  61129. >, but it is rarely necessary.</B.BODY
  61130. ></LABEL
  61131. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61132. >Changes that are preserved</L.LABEL
  61133. ><B.BODY>When you regenerate an existing project file, with the following exceptions, all changes are preserved.</B.BODY
  61134. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61135. ></RBW-AUTOGEN
  61136. ></RBW-MARKER
  61137. ><RBW-PARABODY>The code generator regenerates the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  61138. > clause. If you have added lines to the user&truehy;defined section of the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  61139. > clause, those additions are preserved.</RBW-PARABODY
  61140. ></LB.LIST.BULLET
  61141. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61142. ></RBW-AUTOGEN
  61143. ></RBW-MARKER
  61144. ><RBW-PARABODY>The code generator removes all <CX5FX5FPROCEDURE.NAME>Application.CreateForm</CX5FX5FPROCEDURE.NAME
  61145. > statements except the one defined for the main form.</RBW-PARABODY
  61146. ></LB.LIST.BULLET
  61147. ></LABEL
  61148. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10944"></RBW-ANCHOR
  61149. >Editing the default.dpr Customization File</SS.SUBSEC.HEAD
  61150. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61151. ><CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61152. > customization file</L.LABEL
  61153. ><B.BODY>When you install ObjectTeam, there is an <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61154. > customization file on Corporate level. You can edit the customization file on Corporate level, or create a new customization file on a lower level, as described in this section.</B.BODY
  61155. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61156. >For more information</SL.SUBLABEL
  61157. ><B.BODY>For general information about customization files, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  61158. ><CX5FX5FTITLE></CX5FX5FTITLE
  61159. >.</B.BODY
  61160. ></LABEL
  61161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61162. >Levels of customization</L.LABEL
  61163. ><B.BODY>From high to low, the levels for customization files are:</B.BODY
  61164. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61165. ></RBW-AUTOGEN
  61166. ></RBW-MARKER
  61167. ><RBW-PARABODY>Corporate</RBW-PARABODY
  61168. ></LB.LIST.BULLET
  61169. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61170. ></RBW-AUTOGEN
  61171. ></RBW-MARKER
  61172. ><RBW-PARABODY>Project</RBW-PARABODY
  61173. ></LB.LIST.BULLET
  61174. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61175. ></RBW-AUTOGEN
  61176. ></RBW-MARKER
  61177. ><RBW-PARABODY>Configuration</RBW-PARABODY
  61178. ></LB.LIST.BULLET
  61179. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61180. ></RBW-AUTOGEN
  61181. ></RBW-MARKER
  61182. ><RBW-PARABODY>Implementation Phase</RBW-PARABODY
  61183. ></LB.LIST.BULLET
  61184. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61185. ></RBW-AUTOGEN
  61186. ></RBW-MARKER
  61187. ><RBW-PARABODY>System in Implementation Phase</RBW-PARABODY
  61188. ></LB.LIST.BULLET
  61189. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  61190. ></RBW-AUTOGEN
  61191. >The <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61192. > customization file must be available when you generate the Delphi files. Therefore, creating this customization file at System level in a phase other than Implementation has no effect.</N2.NOTE.2
  61193. ></LABEL
  61194. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61195. >Which customization file is used</L.LABEL
  61196. ><B.BODY>If you have more than one <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61197. > customization file, the code generator uses the lowest&truehy;level customization file. For example, a System&truehy;level customization file is used before a Phase&truehy;level customization file.</B.BODY
  61198. ></LABEL
  61199. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61200. >How to create a new <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61201. > file</L.LABEL
  61202. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  61203. ></RBW-AUTOGEN
  61204. ></RBW-MARKER
  61205. ><RBW-PARABODY>To create a new <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61206. > customization file:</RBW-PARABODY
  61207. ></P.PROCEDURE
  61208. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  61209. ></RBW-AUTOGEN
  61210. ></RBW-MARKER
  61211. ><RBW-PARABODY>In Delphi, create the project file that you want to use:</RBW-PARABODY
  61212. ></LN.LIST.NUM
  61213. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  61214. ></RBW-AUTOGEN
  61215. ></RBW-MARKER
  61216. ><RBW-PARABODY>Create a new project.</RBW-PARABODY
  61217. ></LN2.LIST.NUM.2
  61218. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  61219. ></RBW-AUTOGEN
  61220. ></RBW-MARKER
  61221. ><RBW-PARABODY>Delete the form that is automatically added to the project.</RBW-PARABODY
  61222. ></LN2.LIST.NUM.2
  61223. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  61224. ></RBW-AUTOGEN
  61225. ></RBW-MARKER
  61226. ><RBW-PARABODY>Make the desired changes.</RBW-PARABODY
  61227. ></LN2.LIST.NUM.2
  61228. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>d&rbwtab;</CX5FX5FZLIST.NUMBER
  61229. ></RBW-AUTOGEN
  61230. ></RBW-MARKER
  61231. ><RBW-PARABODY>Save the project.</RBW-PARABODY
  61232. ></LN2.LIST.NUM.2
  61233. ><LR.LIST.RESULT>The project (<CX5FX5FFILE.NAME>.<RBWAUTO-0021>dpr</RBWAUTO-0021
  61234. ></CX5FX5FFILE.NAME
  61235. >) file created by Delphi is the project file that you want to use.</LR.LIST.RESULT
  61236. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  61237. ></RBW-AUTOGEN
  61238. ></RBW-MARKER
  61239. ><RBW-PARABODY>In ObjectTeam, create a <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61240. > customization file:</RBW-PARABODY
  61241. ></LN.LIST.NUM
  61242. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  61243. ></RBW-AUTOGEN
  61244. ></RBW-MARKER
  61245. ><RBW-PARABODY>Move to the level on which you want to create the customization file. For example, to create a Project&truehy;level customization file, move to Project level.</RBW-PARABODY
  61246. ></LN2.LIST.NUM.2
  61247. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  61248. ></RBW-AUTOGEN
  61249. ></RBW-MARKER
  61250. ><RBW-PARABODY>Select View | Pseudo and open the <customization files> pseudo object.</RBW-PARABODY
  61251. ></LN2.LIST.NUM.2
  61252. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  61253. ></RBW-AUTOGEN
  61254. ></RBW-MARKER
  61255. ><RBW-PARABODY>Select File | New | Customization File Version.</RBW-PARABODY
  61256. ></LN2.LIST.NUM.2
  61257. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>d&rbwtab;</CX5FX5FZLIST.NUMBER
  61258. ></RBW-AUTOGEN
  61259. ></RBW-MARKER
  61260. ><RBW-PARABODY>In the entry field, type <CX5FX5FINPUT>default.dpr</CX5FX5FINPUT
  61261. >.</RBW-PARABODY
  61262. ></LN2.LIST.NUM.2
  61263. ><N3.NOTE.3><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  61264. ></RBW-AUTOGEN
  61265. >You must type the name of this customization file in the entry field because the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61266. > customization file does not appear in the list of customization files.</N3.NOTE.3
  61267. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>e&rbwtab;</CX5FX5FZLIST.NUMBER
  61268. ></RBW-AUTOGEN
  61269. ></RBW-MARKER
  61270. ><RBW-PARABODY>Select Edit to create the customization file and open it for editing.</RBW-PARABODY
  61271. ></LN2.LIST.NUM.2
  61272. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  61273. ></RBW-AUTOGEN
  61274. ></RBW-MARKER
  61275. ><RBW-PARABODY>Edit the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61276. > customization file:</RBW-PARABODY
  61277. ></LN.LIST.NUM
  61278. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  61279. ></RBW-AUTOGEN
  61280. >In the previous step, if you selected OK instead of Edit, double&truehy;click on the <CX5FX5FFILE.NAME>default</CX5FX5FFILE.NAME
  61281. > customization file to open it.</T2.TIP.2
  61282. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  61283. ></RBW-AUTOGEN
  61284. ></RBW-MARKER
  61285. ><RBW-PARABODY>Open the project (<CX5FX5FFILE.NAME>.dpr</CX5FX5FFILE.NAME
  61286. >) file that you created in step 1.</RBW-PARABODY
  61287. ></LN2.LIST.NUM.2
  61288. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  61289. ></RBW-AUTOGEN
  61290. ></RBW-MARKER
  61291. ><RBW-PARABODY>Copy the contents of the project file into the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61292. > customization file.</RBW-PARABODY
  61293. ></LN2.LIST.NUM.2
  61294. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  61295. ></RBW-AUTOGEN
  61296. ></RBW-MARKER
  61297. ><RBW-PARABODY>Save the customization file.</RBW-PARABODY
  61298. ></LN2.LIST.NUM.2
  61299. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>d&rbwtab;</CX5FX5FZLIST.NUMBER
  61300. ></RBW-AUTOGEN
  61301. ></RBW-MARKER
  61302. ><RBW-PARABODY>Close both files.</RBW-PARABODY
  61303. ></LN2.LIST.NUM.2
  61304. ></LABEL
  61305. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61306. >How to edit an <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61307. > file</L.LABEL
  61308. ><B.BODY>Customization files, except those on Corporate level, are in the Cayenne repository. They are not available as files in the file system. Therefore, if you have an <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61309. > customization file and you want to modify it, use the following procedure.</B.BODY
  61310. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  61311. ></RBW-AUTOGEN
  61312. ></RBW-MARKER
  61313. ><RBW-PARABODY>To edit an existing <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61314. > customization file:</RBW-PARABODY
  61315. ></P.PROCEDURE
  61316. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  61317. ></RBW-AUTOGEN
  61318. ></RBW-MARKER
  61319. ><RBW-PARABODY>Open the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61320. > customization file and save it to a temporary project file; for example, <CX5FX5FFILE.NAME>tempproj.dpr</CX5FX5FFILE.NAME
  61321. >.</RBW-PARABODY
  61322. ></LN.LIST.NUM
  61323. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  61324. ></RBW-AUTOGEN
  61325. ></RBW-MARKER
  61326. ><RBW-PARABODY>Close the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61327. > customization file without saving it.</RBW-PARABODY
  61328. ></LN.LIST.NUM
  61329. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  61330. ></RBW-AUTOGEN
  61331. ></RBW-MARKER
  61332. ><RBW-PARABODY>In Delphi:</RBW-PARABODY
  61333. ></LN.LIST.NUM
  61334. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  61335. ></RBW-AUTOGEN
  61336. ></RBW-MARKER
  61337. ><RBW-PARABODY>Open the temporary project file.</RBW-PARABODY
  61338. ></LN2.LIST.NUM.2
  61339. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  61340. ></RBW-AUTOGEN
  61341. ></RBW-MARKER
  61342. ><RBW-PARABODY>Make the desired changes.</RBW-PARABODY
  61343. ></LN2.LIST.NUM.2
  61344. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  61345. ></RBW-AUTOGEN
  61346. ></RBW-MARKER
  61347. ><RBW-PARABODY>Save the project.</RBW-PARABODY
  61348. ></LN2.LIST.NUM.2
  61349. ><LR2.LIST.RESULT.2>The modified project file is the project file that you want to use.</LR2.LIST.RESULT.2
  61350. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  61351. ></RBW-AUTOGEN
  61352. ></RBW-MARKER
  61353. ><RBW-PARABODY>Open the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61354. > customization file.</RBW-PARABODY
  61355. ></LN.LIST.NUM
  61356. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  61357. ></RBW-AUTOGEN
  61358. ></RBW-MARKER
  61359. ><RBW-PARABODY>Replace the contents of the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61360. > customization file with the contents of the temporary project file.</RBW-PARABODY
  61361. ></LN.LIST.NUM
  61362. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  61363. ></RBW-AUTOGEN
  61364. ></RBW-MARKER
  61365. ><RBW-PARABODY>Save and close the <CX5FX5FFILE.NAME>default.dpr</CX5FX5FFILE.NAME
  61366. > customization file.</RBW-PARABODY
  61367. ></LN.LIST.NUM
  61368. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  61369. ></RBW-AUTOGEN
  61370. ></RBW-MARKER
  61371. ><RBW-PARABODY>Delete the temporary project file.</RBW-PARABODY
  61372. ></LN.LIST.NUM
  61373. ></LABEL
  61374. ></SUBSECTION
  61375. ></SECTION
  61376. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12172"></RBW-ANCHOR
  61377. >Regenerating Code</S.SECTION.HEAD
  61378. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61379. >Design changes and code changes</L.LABEL
  61380. ><B.BODY>ObjectTeam supports incremental development. You can generate code from your models, edit that code, and regenerate the code without losing your changes. You can work with ObjectTeam models or Delphi source files, shifting your focus between the two as necessary. It is, however, important that you make changes where appropriate.</B.BODY
  61381. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61382. ></RBW-AUTOGEN
  61383. ></RBW-MARKER
  61384. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the model</CX5FX5FBULLET.EMPHASIS
  61385. > when you are changing the structure of the model (for example, if you are changing the class hierarchy or class associations), or when you are making global changes to the code (for example, if you are changing the name of a class, attribute, or operation).</RBW-PARABODY
  61386. ></LB.LIST.BULLET
  61387. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61388. ></RBW-AUTOGEN
  61389. ></RBW-MARKER
  61390. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the code</CX5FX5FBULLET.EMPHASIS
  61391. > when you are adding code that is not generated by ObjectTeam (for example, adding method bodies), or when you are making local changes to the code (for example, adding a missing variable, procedure, or form element).</RBW-PARABODY
  61392. ></LB.LIST.BULLET
  61393. ></LABEL
  61394. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61395. >Editing the ObjectTeam model</L.LABEL
  61396. ><B.BODY>The ObjectTeam model is always used as the source for generating the Delphi files. If you change the ObjectTeam model, you generally want to regenerate the Delphi files.</B.BODY
  61397. ><B.BODY>If, in the model, you rename, delete, or change the declaration of an operation, the matching procedure in the generated file is no longer correct. ObjectTeam preserves the original method and you can choose whether to correct it, move it to another file, or delete it.</B.BODY
  61398. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61399. ></RBW-AUTOGEN
  61400. ></RBW-MARKER
  61401. ><RBW-PARABODY>When you rename or delete an operation, the code generator moves the original method to the end of the generated file and marks it as <CX5FX5FBULLET.EMPHASIS>OBSOLETE_CODE</CX5FX5FBULLET.EMPHASIS
  61402. >.</RBW-PARABODY
  61403. ></LB.LIST.BULLET
  61404. ><EM.EXAMPLE.MONO>// Obsolete code section</EM.EXAMPLE.MONO
  61405. ><EM.EXAMPLE.MONO>{$IFDEF OBSOLETE_CODE}</EM.EXAMPLE.MONO
  61406. ><EM.EXAMPLE.MONO>function account.quarterlyReport(): Integer;</EM.EXAMPLE.MONO
  61407. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  61408. ><EM.EXAMPLE.MONO>  // !! Implement this method !!</EM.EXAMPLE.MONO
  61409. ><EM.EXAMPLE.MONO>[ text that you added to the method body ]</EM.EXAMPLE.MONO
  61410. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  61411. ><EM.EXAMPLE.MONO>{$ENDIF}</EM.EXAMPLE.MONO
  61412. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61413. ></RBW-AUTOGEN
  61414. ></RBW-MARKER
  61415. ><RBW-PARABODY>When you change the declaration of an operation, the code generator leaves the method in place, but marks the method body as <CX5FX5FBULLET.EMPHASIS>OLD_CODE</CX5FX5FBULLET.EMPHASIS
  61416. >. </RBW-PARABODY
  61417. ></LB.LIST.BULLET
  61418. ><EM.EXAMPLE.MONO>procedure account.printAccount;</EM.EXAMPLE.MONO
  61419. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  61420. ><EM.EXAMPLE.MONO>{$IFDEF OLDCODE}</EM.EXAMPLE.MONO
  61421. ><EM.EXAMPLE.MONO>  // !! Implement this method !!</EM.EXAMPLE.MONO
  61422. ><EM.EXAMPLE.MONO>[ text that you added to the method body ]</EM.EXAMPLE.MONO
  61423. ><EM.EXAMPLE.MONO>{$ELSE}</EM.EXAMPLE.MONO
  61424. ><EM.EXAMPLE.MONO>  // !! Implement this method !!</EM.EXAMPLE.MONO
  61425. ><EM.EXAMPLE.MONO>{$ENDIF}</EM.EXAMPLE.MONO
  61426. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  61427. ></LABEL
  61428. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61429. >Editing generated files</L.LABEL
  61430. ><B.BODY>The generated Delphi files are framework files that you need to complete. Comments in the file indicate where you should add code.</B.BODY
  61431. ><B.BODY>Always edit the generated files in accordance with the guidelines described in <RBW-XREF REFID="16756" TYPE="XREF-TEXTCOPY">Editing Generated Unit (.pas) Files</RBW-XREF
  61432. >, <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  61433. >, and <RBW-XREF REFID="24486" TYPE="XREF-TEXTCOPY">Editing Generated Project (.dpr) Files</RBW-XREF
  61434. >. This ensures that your changes are preserved when you regenerate the Delphi files.</B.BODY
  61435. ></LABEL
  61436. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61437. >Before you begin</L.LABEL
  61438. ><B.BODY>Before you regenerate Delphi files:</B.BODY
  61439. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61440. ></RBW-AUTOGEN
  61441. ></RBW-MARKER
  61442. ><RBW-PARABODY>Remove any OBSOLETE_CODE or OLD_CODE sections.</RBW-PARABODY
  61443. ></LB.LIST.BULLET
  61444. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61445. ></RBW-AUTOGEN
  61446. ></RBW-MARKER
  61447. ><RBW-PARABODY>If necessary, update the ObjectTeam model to reflect changes that you have made to the generated files. See <RBW-XREF REFID="16756" TYPE="XREF-TEXTCOPY">Editing Generated Unit (.pas) Files</RBW-XREF
  61448. > and <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  61449. >.</RBW-PARABODY
  61450. ></LB.LIST.BULLET
  61451. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61452. ></RBW-AUTOGEN
  61453. ></RBW-MARKER
  61454. ><RBW-PARABODY>If necessary, convert <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61455. > files to <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61456. > files. See <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  61457. >.</RBW-PARABODY
  61458. ></LB.LIST.BULLET
  61459. ></LABEL
  61460. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61461. >How to regenerate code</L.LABEL
  61462. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  61463. ></RBW-AUTOGEN
  61464. ></RBW-MARKER
  61465. ><RBW-PARABODY>To regenerate Delphi source files:</RBW-PARABODY
  61466. ></P.PROCEDURE
  61467. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  61468. ></RBW-AUTOGEN
  61469. ></RBW-MARKER
  61470. ><RBW-PARABODY>In the Implementation phase, move to the System that contains the files that you want to regenerate.</RBW-PARABODY
  61471. ></LN.LIST.NUM
  61472. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  61473. ></RBW-AUTOGEN
  61474. ></RBW-MARKER
  61475. ><RBW-PARABODY>Select Utilities | Generate Delphi  | All.</RBW-PARABODY
  61476. ></LN.LIST.NUM
  61477. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>Alternative</CX5FX5FBULLET.EMPHASIS
  61478. >: Select one or more files and then select Utilities | Generate Delphi  | Selected.</LT.LIST.TEXT
  61479. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the files.</LR.LIST.RESULT
  61480. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61481. >For more information</SL.SUBLABEL
  61482. ><B.BODY>See <RBW-XREF REFID="21382" TYPE="XREF-TEXTCOPY">Generating Delphi Source Files</RBW-XREF
  61483. > for more information about the Generate Delphi command.</B.BODY
  61484. ><B.BODY></B.BODY
  61485. ><RBWAUTO-0001></RBWAUTO-0001
  61486. ><!--
  61487.  
  61488.  
  61489.  
  61490.  
  61491.  
  61492. CONVERTING SOURCE FILE ../../sources/delphi/dlphgen.fm5.mif
  61493.  
  61494.  
  61495. --><B.BODY></B.BODY
  61496. ><B.BODY></B.BODY
  61497. ><B.BODY></B.BODY
  61498. ><B.BODY></B.BODY
  61499. ><B.BODY></B.BODY
  61500. ></LABEL
  61501. ></SECTION
  61502. ></CHAPTER
  61503. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  61504. ></RBW-AUTOGEN
  61505. >Mapping <RBW-ANCHOR ID="33269"></RBW-ANCHOR
  61506. >Classes to Units<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  61507. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Delphi</RBW-TEXTFLD
  61508. ></RBW-SYSOBJ
  61509. ></C.CHAPTER.HEAD
  61510. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61511. >Units, forms, and data modules</L.LABEL
  61512. ><B.BODY>A Delphi project consists of separately compiled modules of code called <CX5FX5FEMPHASIS>units</CX5FX5FEMPHASIS
  61513. > (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61514. > files). Delphi <CX5FX5FEMPHASIS>form units</CX5FX5FEMPHASIS
  61515. > are units that have <CX5FX5FEMPHASIS>forms</CX5FX5FEMPHASIS
  61516. > (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61517. > files) associated with them. Delphi <CX5FX5FEMPHASIS>data module containers</CX5FX5FEMPHASIS
  61518. > are units that have <CX5FX5FEMPHASIS>data modules</CX5FX5FEMPHASIS
  61519. > (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61520. > files) associated with them. Delphi data modules are similar to forms, but contain only nonvisual components.</B.BODY
  61521. ></LABEL
  61522. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61523. >Two chapters of information</L.LABEL
  61524. ><B.BODY>You can use ObjectTeam to generate units, form units, and data module containers.</B.BODY
  61525. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61526. ></RBW-AUTOGEN
  61527. ></RBW-MARKER
  61528. ><RBW-PARABODY>This chapter describes the Delphi units generated by ObjectTeam. Unless otherwise noted, all of the information in this chapter applies to units, form units, and data module containers.</RBW-PARABODY
  61529. ></LB.LIST.BULLET
  61530. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61531. ></RBW-AUTOGEN
  61532. ></RBW-MARKER
  61533. ><RBW-PARABODY>Chapter 4, Modeling Forms and Data Modules, describes the forms and data modules generated by ObjectTeam.</RBW-PARABODY
  61534. ></LB.LIST.BULLET
  61535. ></LABEL
  61536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61537. >Examples</L.LABEL
  61538. ><B.BODY>For simplicity, the examples in this chapter generate units (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61539. > files) without forms or data modules.</B.BODY
  61540. ><B.BODY>Similar code is generated for a unit that has an associated form or data module. The form or data module (<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61541. > file) is generated in addition to the unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61542. > file). </B.BODY
  61543. ></LABEL
  61544. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61545. >In this chapter</L.LABEL
  61546. ><B.BODY>This chapter contains the following sections:</B.BODY
  61547. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  61548. ></ENTRY
  61549. ></RBW-ROW
  61550. ></THEAD
  61551. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11889" TYPE="XREF-TEXTCOPY">Mapping Classes&rbwtab;3–2</RBW-XREF
  61552. ></SB.SECTION.BLOCK.TABLE
  61553. ></ENTRY
  61554. ></RBW-ROW
  61555. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13392" TYPE="XREF-TEXTCOPY">Mapping Attributes&rbwtab;3–14</RBW-XREF
  61556. ></SB.SECTION.BLOCK.TABLE
  61557. ></ENTRY
  61558. ></RBW-ROW
  61559. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37299" TYPE="XREF-TEXTCOPY">Mapping Operations&rbwtab;3–25</RBW-XREF
  61560. ></SB.SECTION.BLOCK.TABLE
  61561. ></ENTRY
  61562. ></RBW-ROW
  61563. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40371" TYPE="XREF-TEXTCOPY">Mapping Inheritance&rbwtab;3–35</RBW-XREF
  61564. ></SB.SECTION.BLOCK.TABLE
  61565. ></ENTRY
  61566. ></RBW-ROW
  61567. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21676" TYPE="XREF-TEXTCOPY">Mapping Associations&rbwtab;3–36</RBW-XREF
  61568. ></SB.SECTION.BLOCK.TABLE
  61569. ></ENTRY
  61570. ></RBW-ROW
  61571. ></TBODY
  61572. ></TGROUP
  61573. ></RBW-TABLE
  61574. ></LABEL
  61575. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="11889"></RBW-ANCHOR
  61576. >Mapping Classes</S.SECTION.HEAD
  61577. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61578. >Introduction</L.LABEL
  61579. ><B.BODY>By default, an ObjectTeam class maps to a Delphi class. Depending on the supertype of the ObjectTeam class, it can instead map to a TForm class, a TDataModule class, or a TComponent.</B.BODY
  61580. ></LABEL
  61581. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61582. >DelphiVCL system</L.LABEL
  61583. ><B.BODY>In ObjectTeam, the classes in the DelphiVCL system represent commonly used Delphi classes, such as TForm and TDataModule. You can indicate the type of Delphi object that you want to create by making your ObjectTeam class a subclass of a DelphiVCL class. For example, to model a form, you create an ObjectTeam class that is a subclass of the TForm class.</B.BODY
  61584. ><B.BODY>The DelphiVCL system is added to the Object Design phase of your project when you configure your Delphi environment, as described in <RBW-XREF REFID="10153" TYPE="XREF-TEXTCOPY">Configuring Your Delphi Environment</RBW-XREF
  61585. >. You can add additional Delphi classes to the DelphiVCL system, as described in Chapter 6, Editing the Delphi VCL System.</B.BODY
  61586. ></LABEL
  61587. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61588. ><RBW-ANCHOR ID="17092"></RBW-ANCHOR
  61589. >Delphi classes</L.LABEL
  61590. ><B.BODY>An ObjectTeam class that is <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  61591. > a subclass of the TComponent class maps to a Delphi class. The code generator creates a unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61592. >) file to implement the class. The generated file includes:</B.BODY
  61593. ><Q.QUERY><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZQUERY.CHARACTER>+&rbwtab;</CX5FX5FZQUERY.CHARACTER
  61594. ></RBW-AUTOGEN
  61595. ></RBW-MARKER
  61596. ><RBW-PARABODY>Is it subclass of TComponent, or subclass of ANY class in the DelphiVCL system?</RBW-PARABODY
  61597. ></Q.QUERY
  61598. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61599. ></RBW-AUTOGEN
  61600. ></RBW-MARKER
  61601. ><RBW-PARABODY>Variable declarations and accessor methods (see <RBW-XREF REFID="13392" TYPE="XREF-TEXTCOPY">Mapping Attributes</RBW-XREF
  61602. > and <RBW-XREF REFID="21676" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  61603. >)</RBW-PARABODY
  61604. ></LB.LIST.BULLET
  61605. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61606. ></RBW-AUTOGEN
  61607. ></RBW-MARKER
  61608. ><RBW-PARABODY>Procedures and functions (see <RBW-XREF REFID="37299" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  61609. >)</RBW-PARABODY
  61610. ></LB.LIST.BULLET
  61611. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61612. ></RBW-AUTOGEN
  61613. ></RBW-MARKER
  61614. ><RBW-PARABODY>Constructors and destructors (see <RBW-XREF REFID="12004" TYPE="XREF-TEXTCOPY">Generating Class Constructors and Destructors</RBW-XREF
  61615. >)</RBW-PARABODY
  61616. ></LB.LIST.BULLET
  61617. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61618. ></RBW-AUTOGEN
  61619. ></RBW-MARKER
  61620. ><RBW-PARABODY>Inheritance information (see <RBW-XREF REFID="40371" TYPE="XREF-TEXTCOPY">Mapping Inheritance</RBW-XREF
  61621. >)</RBW-PARABODY
  61622. ></LB.LIST.BULLET
  61623. ></LABEL
  61624. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61625. >Delphi forms and data modules</L.LABEL
  61626. ><B.BODY>An ObjectTeam class that is a subclass of the TForm class maps to a Delphi form unit. An ObjectTeam class that is a subclass of the TDataModule class maps to a Delphi data module container. The TForm and TDataModule classes are subclass of TComponent; all three classes are defined in the DelphiVCL system.</B.BODY
  61627. ><B.BODY>To implement a form or data module, the code generator creates:</B.BODY
  61628. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61629. ></RBW-AUTOGEN
  61630. ></RBW-MARKER
  61631. ><RBW-PARABODY>A unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61632. >) file that is similar to the unit file for any other class</RBW-PARABODY
  61633. ></LB.LIST.BULLET
  61634. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61635. ></RBW-AUTOGEN
  61636. ></RBW-MARKER
  61637. ><RBW-PARABODY>A form (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61638. >/<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61639. >) file for the associated form or data module</RBW-PARABODY
  61640. ></LB.LIST.BULLET
  61641. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61642. >For more information</SL.SUBLABEL
  61643. ><B.BODY>See Chapter 4, Modeling Forms and Data Modules.</B.BODY
  61644. ></LABEL
  61645. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61646. ><RBW-ANCHOR ID="32628"></RBW-ANCHOR
  61647. >Delphi components</L.LABEL
  61648. ><B.BODY>An ObjectTeam class that is a subclass of the TComponent class maps to a Delphi component. Many of the TComponent subclasses, such as TRadioButton and TListBox, are defined in the DelphiVCL system.</B.BODY
  61649. ><B.BODY>Typically, a component is not generated as a separate class. Instead, the code generator defines the component in the <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61650. >/<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61651. > file that defines the form or data module that contains the component. If you want to generate the component as a separate class, you can do so by setting the class property Component Class Declaration (see <RBW-XREF REFID="17659" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  61652. >).</B.BODY
  61653. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61654. >For more information</SL.SUBLABEL
  61655. ><B.BODY>See Chapter 4, Modeling Forms and Data Modules.</B.BODY
  61656. ></LABEL
  61657. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61658. >Delphi type declarations</L.LABEL
  61659. ><B.BODY>An ObjectTeam class can also map to a Delphi type declaration, as described in <RBW-XREF REFID="31687" TYPE="XREF-TEXTCOPY">Mapping Special Classes</RBW-XREF
  61660. >. In this case, the code generator creates unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61661. >) files that contain only the type declaration sections.</B.BODY
  61662. ></LABEL
  61663. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61664. >Class names</L.LABEL
  61665. ><B.BODY>Cayenne <CX5FX5FEMPHASIS>strongly</CX5FX5FEMPHASIS
  61666. > recommends that you follow the Delphi convention of beginning each class name with a capital T. This is mandatory for forms and data models.</B.BODY
  61667. ></LABEL
  61668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61669. >In this section</L.LABEL
  61670. ><B.BODY>This section contains the following topics:</B.BODY
  61671. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  61672. ></ENTRY
  61673. ></RBW-ROW
  61674. ></THEAD
  61675. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12004" TYPE="XREF-TEXTCOPY">Generating Class Constructors and Destructors&rbwtab;3–4</RBW-XREF
  61676. ></SB.SECTION.BLOCK.TABLE
  61677. ></ENTRY
  61678. ></RBW-ROW
  61679. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17659" TYPE="XREF-TEXTCOPY">Editing Class Properties&rbwtab;3–7</RBW-XREF
  61680. ></SB.SECTION.BLOCK.TABLE
  61681. ></ENTRY
  61682. ></RBW-ROW
  61683. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22880" TYPE="XREF-TEXTCOPY">Sample Unit Files&rbwtab;3–9</RBW-XREF
  61684. ></SB.SECTION.BLOCK.TABLE
  61685. ></ENTRY
  61686. ></RBW-ROW
  61687. ></TBODY
  61688. ></TGROUP
  61689. ></RBW-TABLE
  61690. ></LABEL
  61691. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12004"></RBW-ANCHOR
  61692. >Generating Class Constructors and Destructors</SS.SUBSEC.HEAD
  61693. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61694. >Constructors and destructors</L.LABEL
  61695. ><B.BODY>The Delphi code generator includes a constructor and destructor in each unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61696. >) file that implements a Delphi class.</B.BODY
  61697. ></LABEL
  61698. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61699. >$create operation and constructor</L.LABEL
  61700. ><B.BODY>ObjectTeam uses the $create operation of a class to determine whether to create a default constructor or a user&truehy;defined constructor.</B.BODY
  61701. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  61702. ></RBW-AUTOGEN
  61703. >The name of the $create operation is case sensitive.</N.NOTE
  61704. ></LABEL
  61705. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61706. >Default constructor</L.LABEL
  61707. ><B.BODY>If the ObjectTeam class has no $create operation, or has a $create operation without parentheses or parameters, the code generator creates a default constructor named Create. ObjectTeam maintains the parameter list and body of a default constructor. Cayenne <CX5FX5FEMPHASIS>strongly</CX5FX5FEMPHASIS
  61708. > recommends that you use default constructors.</B.BODY
  61709. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61710. >Parameter list</SL.SUBLABEL
  61711. ><B.BODY>The parameter list of a default constructor contains the following:</B.BODY
  61712. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61713. ></RBW-AUTOGEN
  61714. ></RBW-MARKER
  61715. ><RBW-PARABODY>All key attributes (attributes prefixed with *).</RBW-PARABODY
  61716. ></LB.LIST.BULLET
  61717. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  61718. ></RBW-AUTOGEN
  61719. ></RBW-MARKER
  61720. ><RBW-PARABODY>The association attribute of each association that has, at the far end, a multiplicity of exactly one and a role name.</RBW-PARABODY
  61721. ></LB.LIST.BULLET
  61722. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61723. >Body</SL.SUBLABEL
  61724. ><B.BODY>ObjectTeam uses the body of a default constructor to initialize and maintain variables as necessary. Comments in the body of the constructor indicate where you can additional code.</B.BODY
  61725. ></LABEL
  61726. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61727. >User&truehy;defined constructors</L.LABEL
  61728. ><B.BODY>If the ObjectTeam class has a $create operation that includes a parameter list, even an empty parameter list, the code generator creates a user&truehy;defined constructor named Create. You are responsible for maintaining the parameter list and body of a user&truehy;defined constructor.</B.BODY
  61729. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61730. >Example</SL.SUBLABEL
  61731. ><B.BODY>The generated code that implements associations uses the constructor to initialize and maintain the association variables. If you use default constructors, ObjectTeam provides this code for you. If you use user&truehy;defined constructors, you must write it yourself.</B.BODY
  61732. ></LABEL
  61733. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61734. >Destructor</L.LABEL
  61735. ><B.BODY>The code generator creates a default destructor named Destroy. ObjectTeam uses the body of the default destructor to destroy objects and reset variables as necessary. Comments in the body of the destructor indicate where you can additional code.</B.BODY
  61736. ></LABEL
  61737. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61738. >Multiple constructors and destructors</L.LABEL
  61739. ><B.BODY>ObjectTeam generates one constructor and one destructor for each class. Delphi allows multiple constructors and destructors for each class. If you use Delphi to add additional constructors or destructors to the generated files, ObjectTeam preserves them when you regenerate the edited files.</B.BODY
  61740. ></LABEL
  61741. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61742. ><RBW-ANCHOR ID="26603"></RBW-ANCHOR
  61743. >Example</L.LABEL
  61744. ><B.BODY>The following code excerpt shows the default constructor and destructor created for the Customer class. </B.BODY
  61745. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00571.unk" origfile="pics/asscuni.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  61746. ></FA.FIGURE.ANCHOR
  61747. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  61748. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  61749. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  61750. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  61751. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  61752. ><EWM.EXAMPLEW.MONO>    // Default constructor/destructor</EWM.EXAMPLEW.MONO
  61753. ><EWM.EXAMPLEW.MONO>    constructor Create;</EWM.EXAMPLEW.MONO
  61754. ><EWM.EXAMPLEW.MONO>    destructor Destroy; override;</EWM.EXAMPLEW.MONO
  61755. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  61756. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  61757. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  61758. ><EWM.EXAMPLEW.MONO>constructor Customer.Create;</EWM.EXAMPLEW.MONO
  61759. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  61760. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  61761. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  61762. ><EWM.EXAMPLEW.MONO>  inherited Create;</EWM.EXAMPLEW.MONO
  61763. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  61764. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  61765. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  61766. ><EWM.EXAMPLEW.MONO>destructor Customer.Destroy;</EWM.EXAMPLEW.MONO
  61767. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  61768. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  61769. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  61770. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  61771. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  61772. ><EWM.EXAMPLEW.MONO>  inherited Destroy;</EWM.EXAMPLEW.MONO
  61773. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  61774. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  61775. ></LABEL
  61776. ></SUBSECTION
  61777. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17659"></RBW-ANCHOR
  61778. >Editing Class Properties</SS.SUBSEC.HEAD
  61779. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61780. >How to edit class properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for class"></RBW-IDXTERM
  61781. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  61782. ><RBW-IDXTERM TERM1="class property" TERM2="editing"></RBW-IDXTERM
  61783. ></L.LABEL
  61784. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  61785. ></RBW-AUTOGEN
  61786. ></RBW-MARKER
  61787. ><RBW-PARABODY>To edit properties of a class:</RBW-PARABODY
  61788. ></P.PROCEDURE
  61789. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  61790. ></RBW-AUTOGEN
  61791. ></RBW-MARKER
  61792. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  61793. ></LN.LIST.NUM
  61794. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  61795. ></RBW-AUTOGEN
  61796. ></RBW-MARKER
  61797. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  61798. ></LN.LIST.NUM
  61799. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  61800. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  61801. ></RBW-AUTOGEN
  61802. ></RBW-MARKER
  61803. ><RBW-PARABODY>Select the class name.</RBW-PARABODY
  61804. ></LN.LIST.NUM
  61805. ><LR.LIST.RESULT>The class properties appear on the right side of the dialog box.</LR.LIST.RESULT
  61806. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00572.unk" origfile="pics/clasprop.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  61807. ></FA2.FIGURE.ANCHOR.2
  61808. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  61809. ></RBW-AUTOGEN
  61810. ></RBW-MARKER
  61811. ><RBW-PARABODY>Select the desired properties:<RBWAUTO-0025></RBWAUTO-0025
  61812. ></RBW-PARABODY
  61813. ></LN.LIST.NUM
  61814. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="45p"><COLSPEC COLNAME="3" COLWIDTH="180p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  61815. ></ENTRY
  61816. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  61817. ></ENTRY
  61818. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  61819. ></ENTRY
  61820. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  61821. ></ENTRY
  61822. ></RBW-ROW
  61823. ></THEAD
  61824. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Type</CELLBODY
  61825. ></ENTRY
  61826. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  61827. ></ENTRY
  61828. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Maps the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  61829. ><RBWAUTO-0024> </RBWAUTO-0024
  61830. >class to <RBWAUTO-0024>a Delphi class (default) or type declaration.</RBWAUTO-0024
  61831. ></CELLBODY
  61832. ></ENTRY
  61833. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31687" TYPE="XREF-TEXTCOPY">Mapping Special Classes</RBW-XREF
  61834. ></CELLBODY
  61835. ></ENTRY
  61836. ></RBW-ROW
  61837. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Main Form</CELLBODY
  61838. ></ENTRY
  61839. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  61840. ></ENTRY
  61841. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>If set, generates this ObjectTeam class as the main form for the Delphi project. Set this property for exactly one subclass of TForm or TDataModule.</CELLBODY
  61842. ></ENTRY
  61843. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Chapter 4, Modeling Forms and Data Modules</CELLBODY
  61844. ></ENTRY
  61845. ></RBW-ROW
  61846. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Component Class Declaration</CELLBODY
  61847. ></ENTRY
  61848. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  61849. ></ENTRY
  61850. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>If set, generates this component as a Delphi class; otherwise, defines the component in the <RBWAUTO-0004>.txt</RBWAUTO-0004
  61851. >/<RBWAUTO-0004>.dfm</RBWAUTO-0004
  61852. > file that defines the form or data module that contains the component. Applies only to subclasses of TComponent.</CELLBODY
  61853. ></ENTRY
  61854. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Chapter 4, Modeling Forms and Data Modules</CELLBODY
  61855. ></ENTRY
  61856. ></RBW-ROW
  61857. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Library Unit</CELLBODY
  61858. ></ENTRY
  61859. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  61860. ></ENTRY
  61861. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Identifies the dynamic&truehy;linked library (DLL), if any, that contains this class.</CELLBODY
  61862. ></ENTRY
  61863. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="33960" TYPE="XREF-TEXTCOPY">Library units</RBW-XREF
  61864. ></CELLBODY
  61865. ></ENTRY
  61866. ></RBW-ROW
  61867. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface Identifier</CELLBODY
  61868. ></ENTRY
  61869. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  61870. ></ENTRY
  61871. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Identifier for the interface. Applies only when Class Type is Identifier.</CELLBODY
  61872. ></ENTRY
  61873. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31687" TYPE="XREF-TEXTCOPY">Mapping Special Classes</RBW-XREF
  61874. ></CELLBODY
  61875. ></ENTRY
  61876. ></RBW-ROW
  61877. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  61878. ></ENTRY
  61879. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  61880. ></ENTRY
  61881. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Comment that appears before the class declaration in the generated code.</CELLBODY
  61882. ></ENTRY
  61883. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  61884. ></ENTRY
  61885. ></RBW-ROW
  61886. ></TBODY
  61887. ></TGROUP
  61888. ></RBW-TABLE
  61889. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  61890. ></RBW-AUTOGEN
  61891. ></RBW-MARKER
  61892. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  61893. ></LN.LIST.NUM
  61894. ></LABEL
  61895. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61896. ><RBW-ANCHOR ID="33960"></RBW-ANCHOR
  61897. >Library units</L.LABEL
  61898. ><B.BODY>When one unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61899. > file) references another, the name of the referenced unit must appear in the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  61900. > clause of the referencing unit. The Library Unit property of the referenced class specifies the unit name that is added to the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  61901. > clause of the referencing unit. By default, Library Unit is None and the name added to the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  61902. > clause is <CX5FX5FVARIABLE>referenced&truehy;classname</CX5FX5FVARIABLE
  61903. >Unit.</B.BODY
  61904. ><B.BODY>The Library Unit property is most often used when you are adding classes to the DelphiVCL system. See Chapter 6, Editing the Delphi VCL System.</B.BODY
  61905. ></LABEL
  61906. ></SUBSECTION
  61907. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22880"></RBW-ANCHOR
  61908. >Sample Unit Files</SS.SUBSEC.HEAD
  61909. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61910. >Introduction</L.LABEL
  61911. ><B.BODY>This section shows the complete unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61912. >) file generated for a Delphi unit and for a form unit. For an example of a unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61913. >) file generated for a Delphi type declaration, see <RBW-XREF REFID="31687" TYPE="XREF-TEXTCOPY">Mapping Special Classes</RBW-XREF
  61914. >.</B.BODY
  61915. ></LABEL
  61916. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61917. >Class unit</L.LABEL
  61918. ><B.BODY>The following illustration shows an ObjectTeam class that represents a Delphi class. The generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61919. >) file follows the illustration.</B.BODY
  61920. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00573.unk" origfile="pics/custclas.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  61921. ></FA.FIGURE.ANCHOR
  61922. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  61923. ><EWM.EXAMPLEW.MONO>// File          : CustomerUnit.pas</EWM.EXAMPLEW.MONO
  61924. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  61925. ><EWM.EXAMPLEW.MONO>// Project       : DelphiProj</EWM.EXAMPLEW.MONO
  61926. ><EWM.EXAMPLEW.MONO>// Configuration : main 1</EWM.EXAMPLEW.MONO
  61927. ><EWM.EXAMPLEW.MONO>// Phase         : Implementation 1</EWM.EXAMPLEW.MONO
  61928. ><EWM.EXAMPLEW.MONO>// System        : AssocSystem 1</EWM.EXAMPLEW.MONO
  61929. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  61930. ><EWM.EXAMPLEW.MONO>unit CustomerUnit;</EWM.EXAMPLEW.MONO
  61931. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  61932. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  61933. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  61934. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  61935. ><EWM.EXAMPLEW.MONO>  Customer = class</EWM.EXAMPLEW.MONO
  61936. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  61937. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  61938. ><EWM.EXAMPLEW.MONO>    name: Char;</EWM.EXAMPLEW.MONO
  61939. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  61940. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  61941. ><EWM.EXAMPLEW.MONO>  protected</EWM.EXAMPLEW.MONO
  61942. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  61943. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  61944. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  61945. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  61946. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  61947. ><EWM.EXAMPLEW.MONO>    // Default constructor/destructor</EWM.EXAMPLEW.MONO
  61948. ><EWM.EXAMPLEW.MONO>    constructor Create;</EWM.EXAMPLEW.MONO
  61949. ><EWM.EXAMPLEW.MONO>    destructor Destroy; override;</EWM.EXAMPLEW.MONO
  61950. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  61951. ><EWM.EXAMPLEW.MONO>    // Access methods</EWM.EXAMPLEW.MONO
  61952. ><EWM.EXAMPLEW.MONO>    procedure setName(newName: Char);</EWM.EXAMPLEW.MONO
  61953. ><EWM.EXAMPLEW.MONO>    function getName: Char;</EWM.EXAMPLEW.MONO
  61954. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  61955. ><EWM.EXAMPLEW.MONO>  published</EWM.EXAMPLEW.MONO
  61956. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  61957. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  61958. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  61959. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  61960. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  61961. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  61962. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  61963. ><EWM.EXAMPLEW.MONO>constructor Customer.Create;</EWM.EXAMPLEW.MONO
  61964. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  61965. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  61966. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  61967. ><EWM.EXAMPLEW.MONO>  inherited Create;</EWM.EXAMPLEW.MONO
  61968. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  61969. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  61970. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  61971. ><EWM.EXAMPLEW.MONO>destructor Customer.Destroy;</EWM.EXAMPLEW.MONO
  61972. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  61973. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  61974. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  61975. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  61976. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  61977. ><EWM.EXAMPLEW.MONO>  inherited Destroy;</EWM.EXAMPLEW.MONO
  61978. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  61979. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; regeneration marker</EWM.EXAMPLEW.MONO
  61980. ><EWM.EXAMPLEW.MONO>procedure Customer.setName(newName: Char);</EWM.EXAMPLEW.MONO
  61981. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  61982. ><EWM.EXAMPLEW.MONO>  name := newName;</EWM.EXAMPLEW.MONO
  61983. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  61984. ><EWM.EXAMPLEW.MONO>function Customer.getName: Char;</EWM.EXAMPLEW.MONO
  61985. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  61986. ><EWM.EXAMPLEW.MONO>  getName := name;</EWM.EXAMPLEW.MONO
  61987. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  61988. ><EWM.EXAMPLEW.MONO>end.</EWM.EXAMPLEW.MONO
  61989. ></LABEL
  61990. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  61991. >Form</L.LABEL
  61992. ><B.BODY>The following illustration shows an ObjectTeam class that represents a Delphi form. The generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  61993. >) file follows the illustration. For an example of the associated form (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  61994. >/<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  61995. >) file, see Chapter 4, Modeling Forms and Data Modules.</B.BODY
  61996. ><B.BODY>The generated unit for the form is almost identical to the generated unit for the class. Bold text highlights where the generated form unit is different.</B.BODY
  61997. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00574.unk" origfile="pics/custform.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  61998. ></FA.FIGURE.ANCHOR
  61999. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  62000. ><EWM.EXAMPLEW.MONO>// File          : CustomerUnit.pas</EWM.EXAMPLEW.MONO
  62001. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  62002. ><EWM.EXAMPLEW.MONO>// Project       : DelphiProj</EWM.EXAMPLEW.MONO
  62003. ><EWM.EXAMPLEW.MONO>// Configuration : main 1</EWM.EXAMPLEW.MONO
  62004. ><EWM.EXAMPLEW.MONO>// Phase         : Implementation 1</EWM.EXAMPLEW.MONO
  62005. ><EWM.EXAMPLEW.MONO>// System        : AssocSystem 1</EWM.EXAMPLEW.MONO
  62006. ><EWM.EXAMPLEW.MONO>//</EWM.EXAMPLEW.MONO
  62007. ><EWM.EXAMPLEW.MONO>unit CustomerUnit;</EWM.EXAMPLEW.MONO
  62008. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  62009. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>uses</CX5FX5FBULLET.EMPHASIS
  62010. ></EWM.EXAMPLEW.MONO
  62011. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>  // Start user include section</CX5FX5FBULLET.EMPHASIS
  62012. ></EWM.EXAMPLEW.MONO
  62013. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>  // End user include section</CX5FX5FBULLET.EMPHASIS
  62014. ></EWM.EXAMPLEW.MONO
  62015. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>  Forms,</CX5FX5FBULLET.EMPHASIS
  62016. ></EWM.EXAMPLEW.MONO
  62017. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>  Classes;</CX5FX5FBULLET.EMPHASIS
  62018. ></EWM.EXAMPLEW.MONO
  62019. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  62020. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>  Customer = class(TForm)</CX5FX5FBULLET.EMPHASIS
  62021. ></EWM.EXAMPLEW.MONO
  62022. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    // Visual Components</CX5FX5FBULLET.EMPHASIS
  62023. ></EWM.EXAMPLEW.MONO
  62024. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    // Events methods</CX5FX5FBULLET.EMPHASIS
  62025. ></EWM.EXAMPLEW.MONO
  62026. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  62027. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  62028. ><EWM.EXAMPLEW.MONO>    name: Char;</EWM.EXAMPLEW.MONO
  62029. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  62030. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  62031. ><EWM.EXAMPLEW.MONO>  protected</EWM.EXAMPLEW.MONO
  62032. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  62033. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  62034. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  62035. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  62036. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  62037. ><EWM.EXAMPLEW.MONO>    // Default constructor/destructor</EWM.EXAMPLEW.MONO
  62038. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    constructor Create(AOwner: TComponent);</CX5FX5FBULLET.EMPHASIS
  62039. ></EWM.EXAMPLEW.MONO
  62040. ><EWM.EXAMPLEW.MONO>    destructor Destroy; override;</EWM.EXAMPLEW.MONO
  62041. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  62042. ><EWM.EXAMPLEW.MONO>    // Access methods</EWM.EXAMPLEW.MONO
  62043. ><EWM.EXAMPLEW.MONO>    procedure setName(newName: Char);</EWM.EXAMPLEW.MONO
  62044. ><EWM.EXAMPLEW.MONO>    function getName: Char;</EWM.EXAMPLEW.MONO
  62045. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  62046. ><EWM.EXAMPLEW.MONO>  published</EWM.EXAMPLEW.MONO
  62047. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  62048. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  62049. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  62050. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  62051. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>// Class feature attributes</CX5FX5FBULLET.EMPHASIS
  62052. ></EWM.EXAMPLEW.MONO
  62053. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>var</CX5FX5FBULLET.EMPHASIS
  62054. ></EWM.EXAMPLEW.MONO
  62055. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>  ustomer: Customer   (* Form attribute *);</CX5FX5FBULLET.EMPHASIS
  62056. ></EWM.EXAMPLEW.MONO
  62057. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  62058. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  62059. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  62060. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>{$R *.DFM}</CX5FX5FBULLET.EMPHASIS
  62061. ></EWM.EXAMPLEW.MONO
  62062. ><EWM.EXAMPLEW.MONO>constructor Customer.Create(<CX5FX5FBULLET.EMPHASIS>AOwner: TComponent</CX5FX5FBULLET.EMPHASIS
  62063. >);</EWM.EXAMPLEW.MONO
  62064. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  62065. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  62066. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  62067. ><EWM.EXAMPLEW.MONO>  inherited Create(AOwner);</EWM.EXAMPLEW.MONO
  62068. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  62069. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  62070. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  62071. ><EWM.EXAMPLEW.MONO>destructor Customer.Destroy;</EWM.EXAMPLEW.MONO
  62072. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  62073. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  62074. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  62075. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  62076. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  62077. ><EWM.EXAMPLEW.MONO>  inherited Destroy;</EWM.EXAMPLEW.MONO
  62078. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  62079. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; regeneration marker</EWM.EXAMPLEW.MONO
  62080. ><EWM.EXAMPLEW.MONO>procedure Customer.setName(newName: Char);</EWM.EXAMPLEW.MONO
  62081. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  62082. ><EWM.EXAMPLEW.MONO>  name := newName;</EWM.EXAMPLEW.MONO
  62083. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  62084. ><EWM.EXAMPLEW.MONO>function Customer.getName: Char;</EWM.EXAMPLEW.MONO
  62085. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  62086. ><EWM.EXAMPLEW.MONO>  getName := name;</EWM.EXAMPLEW.MONO
  62087. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  62088. ><EWM.EXAMPLEW.MONO>end.</EWM.EXAMPLEW.MONO
  62089. ></LABEL
  62090. ></SUBSECTION
  62091. ></SECTION
  62092. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="13392"></RBW-ANCHOR
  62093. >Mapping Attributes</S.SECTION.HEAD
  62094. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62095. >Attributes map to variables</L.LABEL
  62096. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="mapping of"></RBW-IDXTERM
  62097. ><RBW-IDXTERM TERM1="mapping" TERM2="attribute"></RBW-IDXTERM
  62098. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="variables"></RBW-IDXTERM
  62099. >ObjectTeam data attributes map to Delphi variables. Typically, accessor functions for the variables are also generated.</B.BODY
  62100. ></LABEL
  62101. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62102. >Attribute syntax</L.LABEL
  62103. ><B.BODY>Use the following syntax to specify data attributes for an ObjectTeam class:</B.BODY
  62104. ><E.EXAMPLE>[ * | $ | / ] name : type [ = initial&truehy;value ]</E.EXAMPLE
  62105. ><B.BODY>where</B.BODY
  62106. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62107. ></RBW-AUTOGEN
  62108. ></RBW-MARKER
  62109. ><RBW-PARABODY>* indicates a key attribute. A key attribute maps to a private variable. It is included in the parameter list of the default constructor. </RBW-PARABODY
  62110. ></LB.LIST.BULLET
  62111. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62112. ></RBW-AUTOGEN
  62113. ></RBW-MARKER
  62114. ><RBW-PARABODY>$ indicates a class attribute. A class attribute maps to a global variable.</RBW-PARABODY
  62115. ></LB.LIST.BULLET
  62116. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62117. ></RBW-AUTOGEN
  62118. ></RBW-MARKER
  62119. ><RBW-PARABODY>/ indicates a derived attribute. Delphi does not support derived attributes; therefore, the code generator ignores this indicator.<RBW-IDXTERM TERM1="derived attribute"></RBW-IDXTERM
  62120. ><RBW-IDXTERM TERM1="/ (derived attribute)"></RBW-IDXTERM
  62121. ></RBW-PARABODY
  62122. ></LB.LIST.BULLET
  62123. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62124. ></RBW-AUTOGEN
  62125. ></RBW-MARKER
  62126. ><RBW-PARABODY><CX5FX5FTERM>type</CX5FX5FTERM
  62127. > must be a standard type or the name of another class, as described in <RBW-XREF REFID="26856" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  62128. >.</RBW-PARABODY
  62129. ></LB.LIST.BULLET
  62130. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62131. ></RBW-AUTOGEN
  62132. ></RBW-MARKER
  62133. ><RBW-PARABODY><CX5FX5FTERM>initial&truehy;value</CX5FX5FTERM
  62134. >, if specified, is an initial value that is assigned to the variable in the default constructor.<RBW-IDXTERM TERM1="attribute" TERM2="default value"></RBW-IDXTERM
  62135. ><RBW-IDXTERM TERM1="default value, for attribute"></RBW-IDXTERM
  62136. ><RBW-IDXTERM TERM1="initial value, for attribute"></RBW-IDXTERM
  62137. ></RBW-PARABODY
  62138. ></LB.LIST.BULLET
  62139. ></LABEL
  62140. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62141. >How to edit attribute properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for attribute"></RBW-IDXTERM
  62142. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  62143. ><RBW-IDXTERM TERM1="attribute property" TERM2="editing"></RBW-IDXTERM
  62144. ></L.LABEL
  62145. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  62146. ></RBW-AUTOGEN
  62147. ></RBW-MARKER
  62148. ><RBW-PARABODY>To edit attribute properties:</RBW-PARABODY
  62149. ></P.PROCEDURE
  62150. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  62151. ></RBW-AUTOGEN
  62152. ></RBW-MARKER
  62153. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  62154. ></LN.LIST.NUM
  62155. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  62156. ></RBW-AUTOGEN
  62157. ></RBW-MARKER
  62158. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  62159. ></LN.LIST.NUM
  62160. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  62161. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  62162. ></RBW-AUTOGEN
  62163. ></RBW-MARKER
  62164. ><RBW-PARABODY>Select an attribute name from the list on the left side of the dialog box.</RBW-PARABODY
  62165. ></LN.LIST.NUM
  62166. ><LR.LIST.RESULT>The attribute properties appear on the right side of the dialog box.</LR.LIST.RESULT
  62167. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00575.unk" origfile="pics/attrprop.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  62168. ></FA2.FIGURE.ANCHOR.2
  62169. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  62170. ></RBW-AUTOGEN
  62171. ></RBW-MARKER
  62172. ><RBW-PARABODY>Select the desired properties:<RBWAUTO-0025></RBWAUTO-0025
  62173. ></RBW-PARABODY
  62174. ></LN.LIST.NUM
  62175. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="63p"><COLSPEC COLNAME="3" COLWIDTH="180p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  62176. ></ENTRY
  62177. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  62178. ></ENTRY
  62179. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  62180. ></ENTRY
  62181. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  62182. ></ENTRY
  62183. ></RBW-ROW
  62184. ></THEAD
  62185. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  62186. ></ENTRY
  62187. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62188. ></ENTRY
  62189. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies a type modifier for the variable in a typedef class. Applies only to the attribute in a typedef class. </CELLBODY
  62190. ></ENTRY
  62191. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31687" TYPE="XREF-TEXTCOPY">Mapping Special Classes</RBW-XREF
  62192. ></CELLBODY
  62193. ></ENTRY
  62194. ></RBW-ROW
  62195. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Visibility</CELLBODY
  62196. ></ENTRY
  62197. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62198. ></ENTRY
  62199. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies attribute visibility (public, private, protected, published).</CELLBODY
  62200. ></ENTRY
  62201. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40016" TYPE="XREF-TEXTCOPY">Specifying Visibility of a Variable</RBW-XREF
  62202. ></CELLBODY
  62203. ></ENTRY
  62204. ></RBW-ROW
  62205. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access Methods</CELLBODY
  62206. ></ENTRY
  62207. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62208. ></ENTRY
  62209. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies read and write access for the variable.</CELLBODY
  62210. ></ENTRY
  62211. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="16861" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Variables</RBW-XREF
  62212. ></CELLBODY
  62213. ></ENTRY
  62214. ></RBW-ROW
  62215. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property</CELLBODY
  62216. ><CELLBODY>Property Read Value</CELLBODY
  62217. ><CELLBODY>Property Write Value</CELLBODY
  62218. ><CELLBODY>Property Index</CELLBODY
  62219. ><CELLBODY>Property Default</CELLBODY
  62220. ><CELLBODY>Default Value</CELLBODY
  62221. ><CELLBODY>Property Storage</CELLBODY
  62222. ></ENTRY
  62223. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property</CELLBODY
  62224. ></ENTRY
  62225. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Maps the attribute to a property rather than to a variable.</CELLBODY
  62226. ></ENTRY
  62227. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  62228. ></CELLBODY
  62229. ></ENTRY
  62230. ></RBW-ROW
  62231. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  62232. ></ENTRY
  62233. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  62234. ></ENTRY
  62235. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Comment that appears before the attribute declaration in the generated file.</CELLBODY
  62236. ></ENTRY
  62237. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  62238. ></ENTRY
  62239. ></RBW-ROW
  62240. ></TBODY
  62241. ></TGROUP
  62242. ><RBW-ICONIZE></RBW-TABLE
  62243. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  62244. ></RBW-AUTOGEN
  62245. ></RBW-MARKER
  62246. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  62247. ></LN.LIST.NUM
  62248. ></LABEL
  62249. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62250. >In this section</L.LABEL
  62251. ><B.BODY>This section contains the following topics:</B.BODY
  62252. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  62253. ></ENTRY
  62254. ></RBW-ROW
  62255. ></THEAD
  62256. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26856" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types&rbwtab;3–17</RBW-XREF
  62257. ></SB.SECTION.BLOCK.TABLE
  62258. ></ENTRY
  62259. ></RBW-ROW
  62260. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40016" TYPE="XREF-TEXTCOPY">Specifying Visibility of a Variable&rbwtab;3–18</RBW-XREF
  62261. ></SB.SECTION.BLOCK.TABLE
  62262. ></ENTRY
  62263. ></RBW-ROW
  62264. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16861" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Variables&rbwtab;3–19</RBW-XREF
  62265. ></SB.SECTION.BLOCK.TABLE
  62266. ></ENTRY
  62267. ></RBW-ROW
  62268. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties&rbwtab;3–21</RBW-XREF
  62269. ></SB.SECTION.BLOCK.TABLE
  62270. ></ENTRY
  62271. ></RBW-ROW
  62272. ></TBODY
  62273. ></TGROUP
  62274. ></RBW-TABLE
  62275. ><B.BODY></B.BODY
  62276. ></LABEL
  62277. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26856"></RBW-ANCHOR
  62278. >Specifying Attribute Data Types</SS.SUBSEC.HEAD
  62279. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62280. >Data types</L.LABEL
  62281. ><B.BODY><RBW-IDXTERM TERM1="data type" TERM2="for attribute"></RBW-IDXTERM
  62282. ><RBW-IDXTERM TERM1="attribute" TERM2="data type"></RBW-IDXTERM
  62283. >Specify the data type of an attribute with either a standard data type, such as integer, or the name of another class. For example:</B.BODY
  62284. ><EM.EXAMPLE.MONO>attr:integer</EM.EXAMPLE.MONO
  62285. ></LABEL
  62286. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62287. >Standard data types</L.LABEL
  62288. ><B.BODY>The standard data types are defined by the <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="stand_types customization file"></RBW-IDXTERM
  62289. >etc\stand_types</CX5FX5FFILE.NAME
  62290. > customization file in the Delphi module directory. These are the data types that are valid in the Object Design phase.</B.BODY
  62291. ><B.BODY>The translation between standard data types and Delphi data types is defined by the <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="lang_types customization file"></RBW-IDXTERM
  62292. >etc\lang_types</CX5FX5FFILE.NAME
  62293. > customization file. These are the translations used by the Delphi code generator.</B.BODY
  62294. ></LABEL
  62295. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62296. >Customizing the standard data types</L.LABEL
  62297. ><B.BODY>You can add additional data types to the list of standard types by editing the <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  62298. > customization file. If you add additional standard types, you must also provide translations for those data types by editing the <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  62299. > customization file.</B.BODY
  62300. ><B.BODY>By default, the <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  62301. > and <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  62302. > customization files are defined on Corporate level. You can edit the customization files at Corporate level, or create and edit them at a lower level, such as Project level. The customization files at the lower level override the customization files at the higher level.</B.BODY
  62303. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62304. >For more information</SL.SUBLABEL
  62305. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  62306. ><CX5FX5FTITLE></CX5FX5FTITLE
  62307. > describes how to create and edit customization files. The <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  62308. > and <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  62309. > customization files are ASCII files that can be edited using any text editor.</B.BODY
  62310. ></LABEL
  62311. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62312. >Data structures and pointers</L.LABEL
  62313. ><B.BODY>To generate data structures and pointers, use special classes. See <RBW-XREF REFID="31687" TYPE="XREF-TEXTCOPY">Mapping Special Classes</RBW-XREF
  62314. >.</B.BODY
  62315. ></LABEL
  62316. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62317. >Arrays</L.LABEL
  62318. ><B.BODY>The Delphi code generator does not support specification of arrays in ObjectTeam; that is, you cannot use the ObjectTeam notation attrName:type[x]. However, variant variables can hold arrays in Delphi. To create a variable that can hold an array, use the Variant data type:</B.BODY
  62319. ><EM.EXAMPLE.MONO>attrName : variant</EM.EXAMPLE.MONO
  62320. ></LABEL
  62321. ></SUBSECTION
  62322. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40016"></RBW-ANCHOR
  62323. >Specifying Visibility of a Variable</SS.SUBSEC.HEAD
  62324. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62325. >Attribute Visibility property</L.LABEL
  62326. ><B.BODY>Use the Attribute Visibility property on the Misc tab of the Edit Properties dialog box to specify the visibility of the generated variable.</B.BODY
  62327. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62328. ></RBW-AUTOGEN
  62329. ></RBW-MARKER
  62330. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public</CX5FX5FBULLET.EMPHASIS
  62331. >. The variable has no special restrictions on its visibility.</RBW-PARABODY
  62332. ></LB.LIST.BULLET
  62333. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62334. ></RBW-AUTOGEN
  62335. ></RBW-MARKER
  62336. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  62337. >. The variable is visible to the class in which it is declared and to descendants of that class.</RBW-PARABODY
  62338. ></LB.LIST.BULLET
  62339. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62340. ></RBW-AUTOGEN
  62341. ></RBW-MARKER
  62342. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private (default)</CX5FX5FBULLET.EMPHASIS
  62343. >. The variable is visible only to the class in which it is declared.</RBW-PARABODY
  62344. ></LB.LIST.BULLET
  62345. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62346. ></RBW-AUTOGEN
  62347. ></RBW-MARKER
  62348. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Published</CX5FX5FBULLET.EMPHASIS
  62349. >. The variable has no special restrictions on its visibility. Delphi generates runtime type information for published components, but not for public components. See the Delphi documentation for more information.</RBW-PARABODY
  62350. ></LB.LIST.BULLET
  62351. ></LABEL
  62352. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62353. >Example</L.LABEL
  62354. ><B.BODY>The code excerpt below shows the variable declarations generated for the customerID and name attributes of the Customer class. The Attribute Visibility property is set to Public for customerID and to Private (the default) for name.</B.BODY
  62355. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  62356. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  62357. ><EWM.EXAMPLEW.MONO>   ...</EWM.EXAMPLEW.MONO
  62358. ><EWM.EXAMPLEW.MONO>   private</EWM.EXAMPLEW.MONO
  62359. ><EWM.EXAMPLEW.MONO>      // User defined attributes</EWM.EXAMPLEW.MONO
  62360. ><EWM.EXAMPLEW.MONO>      name: Char;</EWM.EXAMPLEW.MONO
  62361. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  62362. ><EWM.EXAMPLEW.MONO>   public</EWM.EXAMPLEW.MONO
  62363. ><EWM.EXAMPLEW.MONO>      // User defined attributes</EWM.EXAMPLEW.MONO
  62364. ><EWM.EXAMPLEW.MONO>      customerID: Integer;</EWM.EXAMPLEW.MONO
  62365. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  62366. ></LABEL
  62367. ></SUBSECTION
  62368. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="16861"></RBW-ANCHOR
  62369. >Specifying Access Methods for Variables</SS.SUBSEC.HEAD
  62370. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62371. >Attribute Access properties</L.LABEL
  62372. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="access method"></RBW-IDXTERM
  62373. ><RBW-IDXTERM TERM1="attribute property" TERM2="access method"></RBW-IDXTERM
  62374. ><RBW-IDXTERM TERM1="access property" TERM2="for attribute access method"></RBW-IDXTERM
  62375. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  62376. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="attribute access method"></RBW-IDXTERM
  62377. ><RBW-IDXTERM TERM1="attribute access method"></RBW-IDXTERM
  62378. ><RBW-IDXTERM TERM1="method" TERM2="attribute access"></RBW-IDXTERM
  62379. >An <CX5FX5FEMPHASIS>access method</CX5FX5FEMPHASIS
  62380. > is a special type of procedure that gets (reads) and sets (writes) an attribute’s value. Use the Attribute Access group box on the Misc tab of the Edit Properties dialog box to specify the visibility of the generated methods and to prevent access methods from being generated.</B.BODY
  62381. ></LABEL
  62382. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62383. >Read and Write fields</L.LABEL
  62384. ><B.BODY>The Attribute Access group box allows you to specify the access methods for both read and write. The setting you specify in the Read field affects the Get attribute access method. The setting you specify in the Write field affects the Set attribute access method.</B.BODY
  62385. ></LABEL
  62386. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62387. >Access functions</L.LABEL
  62388. ><B.BODY>The following values are allowed for both Read and Write fields. You can enter the same or different values in the two fields.</B.BODY
  62389. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62390. ></RBW-AUTOGEN
  62391. ></RBW-MARKER
  62392. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  62393. >. The generated method has no special restrictions on its visibility.</RBW-PARABODY
  62394. ></LB.LIST.BULLET
  62395. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62396. ></RBW-AUTOGEN
  62397. ></RBW-MARKER
  62398. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  62399. >. The generated method is accessible only to the class in which it is declared and to descendants of that class.</RBW-PARABODY
  62400. ></LB.LIST.BULLET
  62401. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62402. ></RBW-AUTOGEN
  62403. ></RBW-MARKER
  62404. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  62405. >. The generated method is accessible only to the class in which it is declared.</RBW-PARABODY
  62406. ></LB.LIST.BULLET
  62407. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62408. ></RBW-AUTOGEN
  62409. ></RBW-MARKER
  62410. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  62411. >. The method is not generated.</RBW-PARABODY
  62412. ></LB.LIST.BULLET
  62413. ></LABEL
  62414. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62415. >Example</L.LABEL
  62416. ><B.BODY>The code excerpt below shows the access methods generated for the name attribute of the Customer class. In the Attribute Access group box, the Write field is specified as Private and the Read field is specified as Public (the default).</B.BODY
  62417. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  62418. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  62419. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  62420. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  62421. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  62422. ><EWM.EXAMPLEW.MONO>    // Access methods</EWM.EXAMPLEW.MONO
  62423. ><EWM.EXAMPLEW.MONO>    procedure setName(newName: Char);</EWM.EXAMPLEW.MONO
  62424. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  62425. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  62426. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  62427. ><EWM.EXAMPLEW.MONO>    // Access methods</EWM.EXAMPLEW.MONO
  62428. ><EWM.EXAMPLEW.MONO>    function getName: Char;</EWM.EXAMPLEW.MONO
  62429. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  62430. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  62431. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  62432. ><EWM.EXAMPLEW.MONO>procedure Customer.setName(newName: Char);</EWM.EXAMPLEW.MONO
  62433. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  62434. ><EWM.EXAMPLEW.MONO>   name := newName;</EWM.EXAMPLEW.MONO
  62435. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  62436. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  62437. ><EWM.EXAMPLEW.MONO>function Customer.getName: Char;</EWM.EXAMPLEW.MONO
  62438. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  62439. ><EWM.EXAMPLEW.MONO>   getName := name;</EWM.EXAMPLEW.MONO
  62440. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  62441. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  62442. ></LABEL
  62443. ></SUBSECTION
  62444. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23727"></RBW-ANCHOR
  62445. >Mapping Attributes to Delphi Properties</SS.SUBSEC.HEAD
  62446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62447. >Two attributes to model a Delphi property</L.LABEL
  62448. ><B.BODY>In Delphi, you typically store property data in a class field. Therefore, in ObjectTeam, you generally model a property using two attributes:</B.BODY
  62449. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62450. ></RBW-AUTOGEN
  62451. ></RBW-MARKER
  62452. ><RBW-PARABODY>One attribute represents the property. </RBW-PARABODY
  62453. ></LB.LIST.BULLET
  62454. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62455. ></RBW-AUTOGEN
  62456. ></RBW-MARKER
  62457. ><RBW-PARABODY>The second attribute has the same data type as the property and maps to the class field that holds the property data.</RBW-PARABODY
  62458. ></LB.LIST.BULLET
  62459. ></LABEL
  62460. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62461. >Read and write specifiers</L.LABEL
  62462. ><B.BODY>In Delphi, the property declaration includes <CX5FX5FPROCEDURE.NAME>read</CX5FX5FPROCEDURE.NAME
  62463. > and <CX5FX5FPROCEDURE.NAME>write</CX5FX5FPROCEDURE.NAME
  62464. > specifiers that define how you read and write the property values.</B.BODY
  62465. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62466. ></RBW-AUTOGEN
  62467. ></RBW-MARKER
  62468. ><RBW-PARABODY>A field name in a <CX5FX5FPROCEDURE.NAME>read</CX5FX5FPROCEDURE.NAME
  62469. > or <CX5FX5FPROCEDURE.NAME>write</CX5FX5FPROCEDURE.NAME
  62470. > specifier indicates that you access the property value directly from the specified field.</RBW-PARABODY
  62471. ></LB.LIST.BULLET
  62472. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62473. ></RBW-AUTOGEN
  62474. ></RBW-MARKER
  62475. ><RBW-PARABODY>A method name in <CX5FX5FPROCEDURE.NAME>read</CX5FX5FPROCEDURE.NAME
  62476. > or <CX5FX5FPROCEDURE.NAME>write</CX5FX5FPROCEDURE.NAME
  62477. > specifier indicates that you access the property value using the specified method. The specified methods are generally private or public, virtual methods.</RBW-PARABODY
  62478. ></LB.LIST.BULLET
  62479. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  62480. ></RBW-MARKER
  62481. ><RBW-PARABODY>The read method must be a function that takes no parameters (or a single index value parameter) and returns a value of the same type as the property.</RBW-PARABODY
  62482. ></LB2.LIST.BULLET.2
  62483. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  62484. ></RBW-MARKER
  62485. ><RBW-PARABODY>The write method must be a procedure that takes a single parameter of the same type as the property (and, optionally, a second index value parameter).</RBW-PARABODY
  62486. ></LB2.LIST.BULLET.2
  62487. ><B.BODY>See the Delphi documentation for more information about reading and writing property values.</B.BODY
  62488. ></LABEL
  62489. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62490. >How to model a Delphi property</L.LABEL
  62491. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  62492. ></RBW-AUTOGEN
  62493. ></RBW-MARKER
  62494. ><RBW-PARABODY>To model a Delphi property in ObjectTeam:</RBW-PARABODY
  62495. ></P.PROCEDURE
  62496. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  62497. ></RBW-AUTOGEN
  62498. ></RBW-MARKER
  62499. ><RBW-PARABODY>Create two attributes, one for the property and one for the property value.</RBW-PARABODY
  62500. ></LN.LIST.NUM
  62501. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  62502. ></RBW-AUTOGEN
  62503. ></RBW-MARKER
  62504. ><RBW-PARABODY>Optionally, create operations for the read and write methods.</RBW-PARABODY
  62505. ></LN.LIST.NUM
  62506. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  62507. ></RBW-AUTOGEN
  62508. ></RBW-MARKER
  62509. ><RBW-PARABODY>Edit the attribute properties of the attribute that represents the Delphi property. Use the Property check box on the Property tab of the Edit Properties dialog box to specify that the attribute maps to a Delphi property. Use the remaining properties on the Property tab to specify additional information.<RBWAUTO-0025></RBWAUTO-0025
  62510. ></RBW-PARABODY
  62511. ></LN.LIST.NUM
  62512. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  62513. ></ENTRY
  62514. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  62515. ></ENTRY
  62516. ></RBW-ROW
  62517. ></THEAD
  62518. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property</CELLBODY
  62519. ></ENTRY
  62520. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Maps the attribute to a property rather than to a variable. </CELLBODY
  62521. ><CELLBODY><CX5FX5FEMPHASIS>Note</CX5FX5FEMPHASIS
  62522. >: ObjectTeam does not generate access methods for a property.</CELLBODY
  62523. ></ENTRY
  62524. ></RBW-ROW
  62525. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Read Property Value</CELLBODY
  62526. ></ENTRY
  62527. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Field or method for the <CX5FX5FBULLET.EMPHASIS>read</CX5FX5FBULLET.EMPHASIS
  62528. > specifier of the property declaration. Specify either the attribute that represents the class field that holds the property value or the operation that represents the read method.</CELLBODY
  62529. ></ENTRY
  62530. ></RBW-ROW
  62531. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Write Property Value</CELLBODY
  62532. ></ENTRY
  62533. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Field or method for the <CX5FX5FBULLET.EMPHASIS>write</CX5FX5FBULLET.EMPHASIS
  62534. > specifier of the property declaration. Specify either the attribute that represents the class field that holds the property value or the operation that represents the write method.</CELLBODY
  62535. ></ENTRY
  62536. ></RBW-ROW
  62537. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Index</CELLBODY
  62538. ></ENTRY
  62539. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Index specifier that is passed to the read and write property methods. Use index specifiers to create a read or write method that is shared by several properties. For more information, see the Delphi documentation.</CELLBODY
  62540. ></ENTRY
  62541. ></RBW-ROW
  62542. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Usage</CELLBODY
  62543. ></ENTRY
  62544. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether the property has a default value:</CELLBODY
  62545. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62546. ></RBW-AUTOGEN
  62547. ></RBW-MARKER
  62548. ><RBW-PARABODY>Default. Appends the <CX5FX5FPROCEDURE.NAME>default</CX5FX5FPROCEDURE.NAME
  62549. > directive to the property's declaration. Use the Property Default box to specify the default value.</RBW-PARABODY
  62550. ></CELLBULLET
  62551. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62552. ></RBW-AUTOGEN
  62553. ></RBW-MARKER
  62554. ><RBW-PARABODY>No Default. Appends the <CX5FX5FPROCEDURE.NAME>nodefault</CX5FX5FPROCEDURE.NAME
  62555. > directive to the property's declaration.</RBW-PARABODY
  62556. ></CELLBULLET
  62557. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62558. ></RBW-AUTOGEN
  62559. ></RBW-MARKER
  62560. ><RBW-PARABODY>None (default). Appends no directive to the property's declaration.</RBW-PARABODY
  62561. ></CELLBULLET
  62562. ></ENTRY
  62563. ></RBW-ROW
  62564. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property Default</CELLBODY
  62565. ></ENTRY
  62566. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default value for the property. Applies only when Default Usage is Default.</CELLBODY
  62567. ></ENTRY
  62568. ></RBW-ROW
  62569. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property Storage</CELLBODY
  62570. ></ENTRY
  62571. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether the property value is stored:</CELLBODY
  62572. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62573. ></RBW-AUTOGEN
  62574. ></RBW-MARKER
  62575. ><RBW-PARABODY>True. Appends the <CX5FX5FPROCEDURE.NAME>stored True</CX5FX5FPROCEDURE.NAME
  62576. > directive to the property's declaration.</RBW-PARABODY
  62577. ></CELLBULLET
  62578. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62579. ></RBW-AUTOGEN
  62580. ></RBW-MARKER
  62581. ><RBW-PARABODY>False. Appends the <CX5FX5FPROCEDURE.NAME>stored False</CX5FX5FPROCEDURE.NAME
  62582. > directive to the property's declaration.</RBW-PARABODY
  62583. ></CELLBULLET
  62584. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62585. ></RBW-AUTOGEN
  62586. ></RBW-MARKER
  62587. ><RBW-PARABODY>None (default). Appends no directive to the property's declaration.</RBW-PARABODY
  62588. ></CELLBULLET
  62589. ></ENTRY
  62590. ></RBW-ROW
  62591. ></TBODY
  62592. ></TGROUP
  62593. ></RBW-TABLE
  62594. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  62595. ></RBW-AUTOGEN
  62596. ></RBW-MARKER
  62597. ><RBW-PARABODY>Edit the attribute properties of the attribute that represents the class field that stores property value. On the Misc tab, set the Read and Write fields in the Attribute Access group box to None. This prevents ObjectTeam from generating read and write access methods for this attribute.</RBW-PARABODY
  62598. ></LN.LIST.NUM
  62599. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  62600. ></RBW-AUTOGEN
  62601. ></RBW-MARKER
  62602. ><RBW-PARABODY>Edit the operation properties of the operations that represent the read and write methods. Set the Method Visibility property to Private or Protected. Set the Method Modifier property to Virtual.</RBW-PARABODY
  62603. ></LN.LIST.NUM
  62604. ></LABEL
  62605. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62606. >Complete the read and write methods</L.LABEL
  62607. ><B.BODY>After generating the Delphi unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  62608. >) files, you must complete the read and write methods by filling in the method bodies.</B.BODY
  62609. ></LABEL
  62610. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62611. >Example</L.LABEL
  62612. ><B.BODY>The following example models a count property for the Book class. The class field that stores the property value is FCount. The property is read directly. It is written using the SetCount write method.</B.BODY
  62613. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62614. >Book class</SL.SUBLABEL
  62615. ><B.BODY></B.BODY
  62616. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00576.unk" origfile="pics/prpcd.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  62617. ></FA.FIGURE.ANCHOR
  62618. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62619. >Attribute properties for count</SL.SUBLABEL
  62620. ><B.BODY></B.BODY
  62621. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00577.unk" origfile="pics/prpprop.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  62622. ></FA.FIGURE.ANCHOR
  62623. ></LABEL
  62624. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62625. >Generated code</L.LABEL
  62626. ><B.BODY>Following are excerpts from the generated code. The highlighted text in the write method shows the text that you might add to complete the method.</B.BODY
  62627. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  62628. ><EWM.EXAMPLEW.MONO>  Book = class</EWM.EXAMPLEW.MONO
  62629. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  62630. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  62631. ><EWM.EXAMPLEW.MONO>    title: Char;</EWM.EXAMPLEW.MONO
  62632. ><EWM.EXAMPLEW.MONO>    FCount: Integer;</EWM.EXAMPLEW.MONO
  62633. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  62634. ><EWM.EXAMPLEW.MONO>    procedure setCount(cnt: Integer); virtual;</EWM.EXAMPLEW.MONO
  62635. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  62636. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  62637. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  62638. ><EWM.EXAMPLEW.MONO>    // Access methods</EWM.EXAMPLEW.MONO
  62639. ><EWM.EXAMPLEW.MONO>    function getTitle: Char;</EWM.EXAMPLEW.MONO
  62640. ><EWM.EXAMPLEW.MONO>    procedure setTitle(newTitle: Char);</EWM.EXAMPLEW.MONO
  62641. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  62642. ><EWM.EXAMPLEW.MONO>    property count: Integer read FCount write setCount;</EWM.EXAMPLEW.MONO
  62643. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  62644. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  62645. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  62646. ><EWM.EXAMPLEW.MONO>procedure Book.setCount(cnt: Integer);</EWM.EXAMPLEW.MONO
  62647. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  62648. ><EWM.EXAMPLEW.MONO>  // !! Implement this method !!</EWM.EXAMPLEW.MONO
  62649. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>if cnt <> FCount then</CX5FX5FBULLET.EMPHASIS
  62650. ></EWM.EXAMPLEW.MONO
  62651. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>  begin</CX5FX5FBULLET.EMPHASIS
  62652. ></EWM.EXAMPLEW.MONO
  62653. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    FCount := cnt;</CX5FX5FBULLET.EMPHASIS
  62654. ></EWM.EXAMPLEW.MONO
  62655. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>   Update;</CX5FX5FBULLET.EMPHASIS
  62656. ></EWM.EXAMPLEW.MONO
  62657. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>  end;</CX5FX5FBULLET.EMPHASIS
  62658. ></EWM.EXAMPLEW.MONO
  62659. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  62660. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  62661. ></LABEL
  62662. ></SUBSECTION
  62663. ></SECTION
  62664. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37299"></RBW-ANCHOR
  62665. >Mapping Operations</S.SECTION.HEAD
  62666. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62667. >Operation maps to event handler, function, or procedure</L.LABEL
  62668. ><B.BODY>An operation defined for an ObjectTeam class maps to an event handler, function, or procedure.</B.BODY
  62669. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62670. ></RBW-AUTOGEN
  62671. ></RBW-MARKER
  62672. ><RBW-PARABODY>If you select the Event property, the operation maps to an <CX5FX5FBULLET.EMPHASIS>event handler</CX5FX5FBULLET.EMPHASIS
  62673. >. An ObjectTeam class can contain events if the class represents a Delphi form, data module, or component; that is, if it is a subclass of TComponent.</RBW-PARABODY
  62674. ></LB.LIST.BULLET
  62675. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62676. ></RBW-AUTOGEN
  62677. ></RBW-MARKER
  62678. ><RBW-PARABODY>If you clear the Event property, and the operation has</RBW-PARABODY
  62679. ></LB.LIST.BULLET
  62680. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  62681. ></RBW-MARKER
  62682. ><RBW-PARABODY>a return type, the operation maps to a <CX5FX5FBULLET.EMPHASIS>function</CX5FX5FBULLET.EMPHASIS
  62683. >.</RBW-PARABODY
  62684. ></LB2.LIST.BULLET.2
  62685. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  62686. ></RBW-MARKER
  62687. ><RBW-PARABODY>no return type, the operation maps to a <CX5FX5FBULLET.EMPHASIS>procedure</CX5FX5FBULLET.EMPHASIS
  62688. >.</RBW-PARABODY
  62689. ></LB2.LIST.BULLET.2
  62690. ><LT.LIST.TEXT>An ObjectTeam class can contain functions and procedures if the class generates a unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  62691. >) file. An ObjectTeam class that represents a component does not generate a unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  62692. >) file unless you select the Component Class Declaration property (see <RBW-XREF REFID="17659" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  62693. >).</LT.LIST.TEXT
  62694. ></LABEL
  62695. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62696. >Operation syntax</L.LABEL
  62697. ><B.BODY>Use the following syntax to specify operations for an ObjectTeam class:</B.BODY
  62698. ><E.EXAMPLE>[ $ ] name ( [ parameter&truehy;list ] ) [ : return_type ] [ {abstract} ]</E.EXAMPLE
  62699. ><B.BODY>where</B.BODY
  62700. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62701. ></RBW-AUTOGEN
  62702. ></RBW-MARKER
  62703. ><RBW-PARABODY>$ indicates a class operation.</RBW-PARABODY
  62704. ></LB.LIST.BULLET
  62705. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62706. ></RBW-AUTOGEN
  62707. ></RBW-MARKER
  62708. ><RBW-PARABODY><CX5FX5FVARIABLE>name</CX5FX5FVARIABLE
  62709. > is the operation name.</RBW-PARABODY
  62710. ></LB.LIST.BULLET
  62711. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  62712. ></RBW-AUTOGEN
  62713. >Delphi does not support overloaded methods. If an ObjectTeam class has two operations with the same name, the code generator displays an error message.</T2.TIP.2
  62714. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62715. ></RBW-AUTOGEN
  62716. ></RBW-MARKER
  62717. ><RBW-PARABODY><CX5FX5FVARIABLE>parameter&truehy;list</CX5FX5FVARIABLE
  62718. > is a comma&truehy;separated list of parameters, where each parameter is specified as follows:</RBW-PARABODY
  62719. ></LB.LIST.BULLET
  62720. ><EM.EXAMPLE.MONO><CX5FX5FVARIABLE>parameter_name</CX5FX5FVARIABLE
  62721. >: <CX5FX5FVARIABLE>type</CX5FX5FVARIABLE
  62722. ></EM.EXAMPLE.MONO
  62723. ><LT.LIST.TEXT>The <CX5FX5FVARIABLE>type</CX5FX5FVARIABLE
  62724. > of a parameter must be either a standard type or a class modeled in the CD. Specifying the data type of a parameter is similar to specifying the data type of an attribute (see <RBW-XREF REFID="26856" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  62725. >).</LT.LIST.TEXT
  62726. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62727. ></RBW-AUTOGEN
  62728. ></RBW-MARKER
  62729. ><RBW-PARABODY><CX5FX5FVARIABLE>return_type</CX5FX5FVARIABLE
  62730. > is either a standard type or a class modeled in the CD. Specifying the return type for a procedure is similar to specifying the data type of an attribute (see <RBW-XREF REFID="26856" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  62731. >).</RBW-PARABODY
  62732. ></LB.LIST.BULLET
  62733. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62734. ></RBW-AUTOGEN
  62735. ></RBW-MARKER
  62736. ><RBW-PARABODY>{abstract} indicates an abstract operation.</RBW-PARABODY
  62737. ></LB.LIST.BULLET
  62738. ></LABEL
  62739. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62740. >How to edit operation properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for operation"></RBW-IDXTERM
  62741. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  62742. ><RBW-IDXTERM TERM1="operation property" TERM2="editing"></RBW-IDXTERM
  62743. ></L.LABEL
  62744. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  62745. ></RBW-AUTOGEN
  62746. ></RBW-MARKER
  62747. ><RBW-PARABODY>To edit operation properties:</RBW-PARABODY
  62748. ></P.PROCEDURE
  62749. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  62750. ></RBW-AUTOGEN
  62751. ></RBW-MARKER
  62752. ><RBW-PARABODY>Select one or more class symbols in the CD.</RBW-PARABODY
  62753. ></LN.LIST.NUM
  62754. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  62755. ></RBW-AUTOGEN
  62756. ></RBW-MARKER
  62757. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  62758. ></LN.LIST.NUM
  62759. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  62760. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  62761. ></RBW-AUTOGEN
  62762. ></RBW-MARKER
  62763. ><RBW-PARABODY>Select an operation from the list on the left side of the dialog box.</RBW-PARABODY
  62764. ></LN.LIST.NUM
  62765. ><LR.LIST.RESULT>The method properties appear on the right side of the dialog box.</LR.LIST.RESULT
  62766. ><Q.QUERY><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZQUERY.CHARACTER>+&rbwtab;</CX5FX5FZQUERY.CHARACTER
  62767. ></RBW-AUTOGEN
  62768. ></RBW-MARKER
  62769. ><RBW-PARABODY>New pic when Method Access changes to Method Visibility.</RBW-PARABODY
  62770. ></Q.QUERY
  62771. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00578.unk" origfile="pics/operprop.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  62772. ></FA2.FIGURE.ANCHOR.2
  62773. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  62774. ></RBW-AUTOGEN
  62775. ></RBW-MARKER
  62776. ><RBW-PARABODY>Select the desired properties:<RBWAUTO-0025></RBWAUTO-0025
  62777. ></RBW-PARABODY
  62778. ></LN.LIST.NUM
  62779. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="63p"><COLSPEC COLNAME="3" COLWIDTH="180p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  62780. ></ENTRY
  62781. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  62782. ></ENTRY
  62783. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  62784. ></ENTRY
  62785. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  62786. ></ENTRY
  62787. ></RBW-ROW
  62788. ></THEAD
  62789. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Visibility</CELLBODY
  62790. ></ENTRY
  62791. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62792. ></ENTRY
  62793. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies attribute visibility (public, private, protected, published). Ignored for class operations; class operations are always published.</CELLBODY
  62794. ></ENTRY
  62795. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40398" TYPE="XREF-TEXTCOPY">Specifying Method Visibility</RBW-XREF
  62796. ></CELLBODY
  62797. ></ENTRY
  62798. ></RBW-ROW
  62799. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Modifier</CELLBODY
  62800. ></ENTRY
  62801. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62802. ></ENTRY
  62803. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the dispatch mechanism for the method (static, vitural, dynamic, abstract).</CELLBODY
  62804. ></ENTRY
  62805. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24451" TYPE="XREF-TEXTCOPY">Specifying Method Dispatch</RBW-XREF
  62806. ></CELLBODY
  62807. ></ENTRY
  62808. ></RBW-ROW
  62809. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calling Convention</CELLBODY
  62810. ></ENTRY
  62811. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62812. ></ENTRY
  62813. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the calling convention for the method (register, pascal, cdecl, stdcall, safecall).</CELLBODY
  62814. ></ENTRY
  62815. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="36073" TYPE="XREF-TEXTCOPY">Specifying Method Calling Convention</RBW-XREF
  62816. ></CELLBODY
  62817. ></ENTRY
  62818. ></RBW-ROW
  62819. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  62820. ></ENTRY
  62821. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62822. ></ENTRY
  62823. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, generates the operation as an event.</CELLBODY
  62824. ></ENTRY
  62825. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Chapter 4, Modeling Forms and Data Modules</CELLBODY
  62826. ></ENTRY
  62827. ></RBW-ROW
  62828. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  62829. ></ENTRY
  62830. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  62831. ></ENTRY
  62832. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Comment that appears before the method implementation in the generated file.</CELLBODY
  62833. ></ENTRY
  62834. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  62835. ></ENTRY
  62836. ></RBW-ROW
  62837. ></TBODY
  62838. ></TGROUP
  62839. ><RBW-ICONIZE></RBW-TABLE
  62840. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  62841. ></RBW-AUTOGEN
  62842. ></RBW-MARKER
  62843. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  62844. ></LN.LIST.NUM
  62845. ></LABEL
  62846. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62847. >How to edit parameter properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for parameter"></RBW-IDXTERM
  62848. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  62849. ><RBW-IDXTERM TERM1="parameter property" TERM2="editing"></RBW-IDXTERM
  62850. ></L.LABEL
  62851. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  62852. ></RBW-AUTOGEN
  62853. ></RBW-MARKER
  62854. ><RBW-PARABODY>To edit parameter properties:</RBW-PARABODY
  62855. ></P.PROCEDURE
  62856. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  62857. ></RBW-AUTOGEN
  62858. ></RBW-MARKER
  62859. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  62860. ></LN.LIST.NUM
  62861. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  62862. ></RBW-AUTOGEN
  62863. ></RBW-MARKER
  62864. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  62865. ></LN.LIST.NUM
  62866. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  62867. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  62868. ></RBW-AUTOGEN
  62869. ></RBW-MARKER
  62870. ><RBW-PARABODY>Select a parameter from the list on the left side of the dialog box.</RBW-PARABODY
  62871. ></LN.LIST.NUM
  62872. ><LR.LIST.RESULT>The operation properties appear on the right side of the dialog box.</LR.LIST.RESULT
  62873. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00579.unk" origfile="pics/parmprop.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  62874. ></FA2.FIGURE.ANCHOR.2
  62875. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  62876. ></RBW-AUTOGEN
  62877. ></RBW-MARKER
  62878. ><RBW-PARABODY>Select the desired properties: <RBWAUTO-0025></RBWAUTO-0025
  62879. ></RBW-PARABODY
  62880. ></LN.LIST.NUM
  62881. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="63p"><COLSPEC COLNAME="3" COLWIDTH="180p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  62882. ></ENTRY
  62883. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  62884. ></ENTRY
  62885. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  62886. ></ENTRY
  62887. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  62888. ></ENTRY
  62889. ></RBW-ROW
  62890. ></THEAD
  62891. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Passing</CELLBODY
  62892. ></ENTRY
  62893. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62894. ></ENTRY
  62895. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the type of parameter (value, constant, variable, out).</CELLBODY
  62896. ></ENTRY
  62897. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="35664" TYPE="XREF-TEXTCOPY">Specifying Parameters</RBW-XREF
  62898. ></CELLBODY
  62899. ></ENTRY
  62900. ></RBW-ROW
  62901. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  62902. ></ENTRY
  62903. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  62904. ></ENTRY
  62905. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the type of array parameter (open&truehy;array, variant open&truehy;array).</CELLBODY
  62906. ></ENTRY
  62907. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="35664" TYPE="XREF-TEXTCOPY">Specifying Parameters</RBW-XREF
  62908. ></CELLBODY
  62909. ></ENTRY
  62910. ></RBW-ROW
  62911. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  62912. ></ENTRY
  62913. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  62914. ></ENTRY
  62915. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Comment that does not appear in the generated code.</CELLBODY
  62916. ></ENTRY
  62917. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  62918. ></ENTRY
  62919. ></RBW-ROW
  62920. ></TBODY
  62921. ></TGROUP
  62922. ><RBW-ICONIZE></RBW-TABLE
  62923. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  62924. ></RBW-AUTOGEN
  62925. ></RBW-MARKER
  62926. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  62927. ></LN.LIST.NUM
  62928. ></LABEL
  62929. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62930. >Special procedures</L.LABEL
  62931. ><B.BODY>The Delphi code generator generates the following special procedures, which you do not have to specify as operations in an ObjectTeam class:</B.BODY
  62932. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62933. ></RBW-AUTOGEN
  62934. ></RBW-MARKER
  62935. ><RBW-PARABODY>Class constructors and destructors, as described in <RBW-XREF REFID="12004" TYPE="XREF-TEXTCOPY">Generating Class Constructors and Destructors</RBW-XREF
  62936. >. Class constructors can be specified as $create operations on an ObjectTeam class, but do not have to be.</RBW-PARABODY
  62937. ></LB.LIST.BULLET
  62938. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62939. ></RBW-AUTOGEN
  62940. ></RBW-MARKER
  62941. ><RBW-PARABODY>Attribute access methods, as described in <RBW-XREF REFID="16861" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Variables</RBW-XREF
  62942. >. Do not specify access methods as operations on an ObjectTeam class.</RBW-PARABODY
  62943. ></LB.LIST.BULLET
  62944. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62945. ></RBW-AUTOGEN
  62946. ></RBW-MARKER
  62947. ><RBW-PARABODY>Association access methods, as described in <RBW-XREF REFID="20174" TYPE="XREF-TEXTCOPY">Mapping Unidirectional and Bidirectional Associations</RBW-XREF
  62948. >. Do not specify access methods as operations on an ObjectTeam class.</RBW-PARABODY
  62949. ></LB.LIST.BULLET
  62950. ></LABEL
  62951. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62952. >In this section</L.LABEL
  62953. ><B.BODY>This section contains the following topics:</B.BODY
  62954. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  62955. ></ENTRY
  62956. ></RBW-ROW
  62957. ></THEAD
  62958. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40398" TYPE="XREF-TEXTCOPY">Specifying Method Visibility&rbwtab;3–29</RBW-XREF
  62959. ></SB.SECTION.BLOCK.TABLE
  62960. ></ENTRY
  62961. ></RBW-ROW
  62962. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24451" TYPE="XREF-TEXTCOPY">Specifying Method Dispatch&rbwtab;3–31</RBW-XREF
  62963. ></SB.SECTION.BLOCK.TABLE
  62964. ></ENTRY
  62965. ></RBW-ROW
  62966. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36073" TYPE="XREF-TEXTCOPY">Specifying Method Calling Convention&rbwtab;3–32</RBW-XREF
  62967. ></SB.SECTION.BLOCK.TABLE
  62968. ></ENTRY
  62969. ></RBW-ROW
  62970. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35664" TYPE="XREF-TEXTCOPY">Specifying Parameters&rbwtab;3–33</RBW-XREF
  62971. ></SB.SECTION.BLOCK.TABLE
  62972. ></ENTRY
  62973. ></RBW-ROW
  62974. ></TBODY
  62975. ></TGROUP
  62976. ></RBW-TABLE
  62977. ></LABEL
  62978. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="40398"></RBW-ANCHOR
  62979. >Specifying Method Visibility</SS.SUBSEC.HEAD
  62980. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  62981. >Method Visibility property</L.LABEL
  62982. ><B.BODY>Use the Method Visibility property on the Misc tab of the Edit Properties dialog box to specify the visibility of the operation.</B.BODY
  62983. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62984. ></RBW-AUTOGEN
  62985. ></RBW-MARKER
  62986. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  62987. >. The operation has no special restrictions on its visibility.</RBW-PARABODY
  62988. ></LB.LIST.BULLET
  62989. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62990. ></RBW-AUTOGEN
  62991. ></RBW-MARKER
  62992. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  62993. >. The operation is visible only to the class in which it is declared.</RBW-PARABODY
  62994. ></LB.LIST.BULLET
  62995. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  62996. ></RBW-AUTOGEN
  62997. ></RBW-MARKER
  62998. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  62999. >. The operation is visible to the class in which it is declared and to descendants of that class.</RBW-PARABODY
  63000. ></LB.LIST.BULLET
  63001. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63002. ></RBW-AUTOGEN
  63003. ></RBW-MARKER
  63004. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Published</CX5FX5FBULLET.EMPHASIS
  63005. >. The operation has no special restrictions on its visibility. Delphi generates runtime type information for published components, but not for public components. See the Delphi documentation for more information.</RBW-PARABODY
  63006. ></LB.LIST.BULLET
  63007. ></LABEL
  63008. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63009. >Special characters</L.LABEL
  63010. ><B.BODY>You can display the visibility of methods in your diagram by checking Options | Show Visibility in the Class Diagram Editor. Method names will then be displayed with the following leading characters indicating the method’s access level:</B.BODY
  63011. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="318p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Special character</CELLHEADING
  63012. ></ENTRY
  63013. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  63014. ></ENTRY
  63015. ></RBW-ROW
  63016. ></THEAD
  63017. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>+</CELLBODY
  63018. ></ENTRY
  63019. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  63020. ></ENTRY
  63021. ></RBW-ROW
  63022. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>#</CELLBODY
  63023. ></ENTRY
  63024. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Protected</CELLBODY
  63025. ></ENTRY
  63026. ></RBW-ROW
  63027. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  63028. ></ENTRY
  63029. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private</CELLBODY
  63030. ></ENTRY
  63031. ></RBW-ROW
  63032. ></TBODY
  63033. ></TGROUP
  63034. ></RBW-TABLE
  63035. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  63036. ></RBW-AUTOGEN
  63037. >No leading character is displayed for methods with a visibility of <CX5FX5FBULLET.EMPHASIS>Published</CX5FX5FBULLET.EMPHASIS
  63038. >.</N.NOTE
  63039. ><B.BODY>These special characters can also be used to <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  63040. > the access level of methods. Typing a hatch sign (#) before a method name will set the access level of the method to Protected, for example. </B.BODY
  63041. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  63042. ></RBW-AUTOGEN
  63043. >The special characters only work if the menu entry Options | Show Visibility in the Class Diagram Editor has been checked. Otherwise, the special characters will just be regarded as part of the method name.</W.WARNING
  63044. ></LABEL
  63045. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63046. >Example</L.LABEL
  63047. ><B.BODY>The code excerpt below shows the operation declarations generated for the checkCredit and printCustomer operations of the Customer class. The Method Visibility property for checkCredit is set to Private. The same property for printCustomer is set to Public (the default).</B.BODY
  63048. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63049. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  63050. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63051. ><EWM.EXAMPLEW.MONO>   private</EWM.EXAMPLEW.MONO
  63052. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63053. ><EWM.EXAMPLEW.MONO>      // User defined methods</EWM.EXAMPLEW.MONO
  63054. ><EWM.EXAMPLEW.MONO>      procedure checkCredit();</EWM.EXAMPLEW.MONO
  63055. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63056. ><EWM.EXAMPLEW.MONO>   public</EWM.EXAMPLEW.MONO
  63057. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63058. ><EWM.EXAMPLEW.MONO>      // User defined methods</EWM.EXAMPLEW.MONO
  63059. ><EWM.EXAMPLEW.MONO>      procedure printCustomer(copies: Integer);</EWM.EXAMPLEW.MONO
  63060. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63061. ></LABEL
  63062. ></SUBSECTION
  63063. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24451"></RBW-ANCHOR
  63064. >Specifying Method Dispatch</SS.SUBSEC.HEAD
  63065. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63066. >Method Modifier property</L.LABEL
  63067. ><B.BODY>Use the Method Modifier property on the Misc tab of the Edit Properties dialog box to specify the dispatch mechanism for the method:</B.BODY
  63068. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63069. ></RBW-AUTOGEN
  63070. ></RBW-MARKER
  63071. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Static</CX5FX5FBULLET.EMPHASIS
  63072. > (None, the default). The compiler determines the exact address of the method and links the method at compile time. You cannot override static methods; if you declare a method in a derived class with the same name as a static method in the ancestor class, the new method replaces the inherited method.</RBW-PARABODY
  63073. ></LB.LIST.BULLET
  63074. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63075. ></RBW-AUTOGEN
  63076. ></RBW-MARKER
  63077. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Virtual</CX5FX5FBULLET.EMPHASIS
  63078. >. The address of a virtual method is stored in the Virtual Method Table (VMT) of the owner object. The address of the method is found at runtime.</RBW-PARABODY
  63079. ></LB.LIST.BULLET
  63080. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63081. ></RBW-AUTOGEN
  63082. ></RBW-MARKER
  63083. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Dynamic</CX5FX5FBULLET.EMPHASIS
  63084. >. Similar to virtual methods. Dynamic methods use less memory because their addresses are not stored in the VMT; they are dispatched more slowly because the address is found at runtime by searching the inheritance tree.</RBW-PARABODY
  63085. ></LB.LIST.BULLET
  63086. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63087. ></RBW-AUTOGEN
  63088. ></RBW-MARKER
  63089. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Abstract</CX5FX5FBULLET.EMPHASIS
  63090. >. A virtual or dynamic method whose implementation is deferred to descendant classes.</RBW-PARABODY
  63091. ></LB.LIST.BULLET
  63092. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63093. ></RBW-AUTOGEN
  63094. ></RBW-MARKER
  63095. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Override</CX5FX5FBULLET.EMPHASIS
  63096. >. Extends or redefines an inherited virtual or dynamic method.</RBW-PARABODY
  63097. ></LB.LIST.BULLET
  63098. ></LABEL
  63099. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63100. >Examples</L.LABEL
  63101. ><B.BODY>The following table shows how the Method Modifier property and the {abstract} keyword affect the generated method declaration:</B.BODY
  63102. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Method modifier</CELLHEADING
  63103. ></ENTRY
  63104. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Code Example</CELLHEADING
  63105. ></ENTRY
  63106. ></RBW-ROW
  63107. ></THEAD
  63108. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>None (default)</CELLBODY
  63109. ></ENTRY
  63110. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper();</CELLBODY
  63111. ></ENTRY
  63112. ></RBW-ROW
  63113. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Virtual</CELLBODY
  63114. ></ENTRY
  63115. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); virtual;</CELLBODY
  63116. ></ENTRY
  63117. ></RBW-ROW
  63118. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dynamic</CELLBODY
  63119. ></ENTRY
  63120. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); dynamic;</CELLBODY
  63121. ></ENTRY
  63122. ></RBW-ROW
  63123. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Virtual abstract</CELLBODY
  63124. ></ENTRY
  63125. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); virtual; abstract;</CELLBODY
  63126. ></ENTRY
  63127. ></RBW-ROW
  63128. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Dynamic abstract</CELLBODY
  63129. ></ENTRY
  63130. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); dynamic ; abstract;</CELLBODY
  63131. ></ENTRY
  63132. ></RBW-ROW
  63133. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Override</CELLBODY
  63134. ></ENTRY
  63135. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); override;</CELLBODY
  63136. ></ENTRY
  63137. ></RBW-ROW
  63138. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>{abstract}</CELLBODY
  63139. ></ENTRY
  63140. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); virtual; abstract;</CELLBODY
  63141. ></ENTRY
  63142. ></RBW-ROW
  63143. ></TBODY
  63144. ></TGROUP
  63145. ></RBW-TABLE
  63146. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  63147. ></RBW-AUTOGEN
  63148. >The Method Modifier property, unless specified as None, overrides the {abstract} keyword.</N.NOTE
  63149. ></LABEL
  63150. ></SUBSECTION
  63151. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36073"></RBW-ANCHOR
  63152. >Specifying Method Calling Convention</SS.SUBSEC.HEAD
  63153. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63154. >Calling Convention property</L.LABEL
  63155. ><B.BODY>Use the Calling Convention property on the Misc tab of the Edit Properties dialog box to specify the calling convention for the method. The calling convention determines how parameters are passed to the method:</B.BODY
  63156. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63157. ></RBW-AUTOGEN
  63158. ></RBW-MARKER
  63159. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Register</CX5FX5FBULLET.EMPHASIS
  63160. > (default). Parameters are passed left&truehy;to&truehy;right. The called method removes the parameters from the stack upon returning. This convention uses up to 3 registers to pass parameters; the remaining parameters are passed on the stack.</RBW-PARABODY
  63161. ></LB.LIST.BULLET
  63162. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63163. ></RBW-AUTOGEN
  63164. ></RBW-MARKER
  63165. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Pascal</CX5FX5FBULLET.EMPHASIS
  63166. >. Parameters are passed left&truehy;to&truehy;right. The called method removes the parameters from the stack before the call returns.</RBW-PARABODY
  63167. ></LB.LIST.BULLET
  63168. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63169. ></RBW-AUTOGEN
  63170. ></RBW-MARKER
  63171. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>CDecl</CX5FX5FBULLET.EMPHASIS
  63172. >. Parameters are passed right&truehy;to&truehy;left. The caller must remove the parametes from the stack when the call returns.</RBW-PARABODY
  63173. ></LB.LIST.BULLET
  63174. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63175. ></RBW-AUTOGEN
  63176. ></RBW-MARKER
  63177. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>StdCall</CX5FX5FBULLET.EMPHASIS
  63178. >. Parameters are passed right&truehy;to&truehy;left. The called method removes the parameters from the stack before the call returns.</RBW-PARABODY
  63179. ></LB.LIST.BULLET
  63180. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63181. ></RBW-AUTOGEN
  63182. ></RBW-MARKER
  63183. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>SafeCall</CX5FX5FBULLET.EMPHASIS
  63184. >. Parameters are passed right&truehy;to&truehy;left. The called method removes the parameters from the stack before the call returns.</RBW-PARABODY
  63185. ></LB.LIST.BULLET
  63186. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  63187. ></RBW-AUTOGEN
  63188. >Avaliable only in Delphi 3. Must be used to implement methods of dual interfaces.</N2.NOTE.2
  63189. ></LABEL
  63190. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63191. >Examples</L.LABEL
  63192. ><B.BODY>The following table shows how the Calling Convention property affects the generated method declaration:</B.BODY
  63193. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Calling Convention</CELLHEADING
  63194. ></ENTRY
  63195. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Code Example</CELLHEADING
  63196. ></ENTRY
  63197. ></RBW-ROW
  63198. ></THEAD
  63199. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Register (default)</CELLBODY
  63200. ></ENTRY
  63201. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper();</CELLBODY
  63202. ></ENTRY
  63203. ></RBW-ROW
  63204. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pascal</CELLBODY
  63205. ></ENTRY
  63206. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); pascal;</CELLBODY
  63207. ></ENTRY
  63208. ></RBW-ROW
  63209. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>CDecl</CELLBODY
  63210. ></ENTRY
  63211. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); cdecl;</CELLBODY
  63212. ></ENTRY
  63213. ></RBW-ROW
  63214. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>StdCall</CELLBODY
  63215. ></ENTRY
  63216. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); stdcall;</CELLBODY
  63217. ></ENTRY
  63218. ></RBW-ROW
  63219. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SafeCall</CELLBODY
  63220. ></ENTRY
  63221. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(); safecall;</CELLBODY
  63222. ></ENTRY
  63223. ></RBW-ROW
  63224. ></TBODY
  63225. ></TGROUP
  63226. ></RBW-TABLE
  63227. ><B.BODY></B.BODY
  63228. ></LABEL
  63229. ></SUBSECTION
  63230. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35664"></RBW-ANCHOR
  63231. >Specifying Parameters</SS.SUBSEC.HEAD
  63232. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63233. >Parameter properties</L.LABEL
  63234. ><B.BODY>Use the Parameter Passing and Type Modifier properties on the Misc tab of the Edit Properties dialog box for a parameter to specify the kind of parameter that you want to use.</B.BODY
  63235. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63236. >Parameter Passing property</SL.SUBLABEL
  63237. ><B.BODY></B.BODY
  63238. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63239. ></RBW-AUTOGEN
  63240. ></RBW-MARKER
  63241. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Value</CX5FX5FBULLET.EMPHASIS
  63242. > (default). Value parameters allow expressions to be passed into the method. Within the method, value parameters are similar to local variables.</RBW-PARABODY
  63243. ></LB.LIST.BULLET
  63244. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63245. ></RBW-AUTOGEN
  63246. ></RBW-MARKER
  63247. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Constant</CX5FX5FBULLET.EMPHASIS
  63248. >. Constant parameters allow expressions to be passed into the method. Within the method, constant parameters are similar to read&truehy;only local variables.</RBW-PARABODY
  63249. ></LB.LIST.BULLET
  63250. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63251. ></RBW-AUTOGEN
  63252. ></RBW-MARKER
  63253. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Variable</CX5FX5FBULLET.EMPHASIS
  63254. >. Variable parameters are passed by reference. The caller and the called method reference the same variable.</RBW-PARABODY
  63255. ></LB.LIST.BULLET
  63256. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63257. ></RBW-AUTOGEN
  63258. ></RBW-MARKER
  63259. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Out</CX5FX5FBULLET.EMPHASIS
  63260. >. Out parameters are used only to return data to the caller.</RBW-PARABODY
  63261. ></LB.LIST.BULLET
  63262. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63263. >Type Modifier property</SL.SUBLABEL
  63264. ><B.BODY></B.BODY
  63265. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63266. ></RBW-AUTOGEN
  63267. ></RBW-MARKER
  63268. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Default</CX5FX5FBULLET.EMPHASIS
  63269. > (default). Adds no directive to the parameter declaration.</RBW-PARABODY
  63270. ></LB.LIST.BULLET
  63271. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63272. ></RBW-AUTOGEN
  63273. ></RBW-MARKER
  63274. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Untyped</CX5FX5FBULLET.EMPHASIS
  63275. >. Adds no type information to the parameter declaration. This allows the actual parameter to be any variable or constant reference.</RBW-PARABODY
  63276. ></LB.LIST.BULLET
  63277. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63278. ></RBW-AUTOGEN
  63279. ></RBW-MARKER
  63280. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Open&truehy;array</CX5FX5FBULLET.EMPHASIS
  63281. >. Open&truehy;array parameters allow arrays of varying sizes to be passed into the method.</RBW-PARABODY
  63282. ></LB.LIST.BULLET
  63283. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63284. ></RBW-AUTOGEN
  63285. ></RBW-MARKER
  63286. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Variant open&truehy;array</CX5FX5FBULLET.EMPHASIS
  63287. >. Type variant open&truehy;array parameters allow arrays of varying sizes and types to be passed into the method.</RBW-PARABODY
  63288. ></LB.LIST.BULLET
  63289. ></LABEL
  63290. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63291. >Examples</L.LABEL
  63292. ><B.BODY>The following tables show how the Parameter Passing and Type Modifier properties effect the generated declaration for the following ObjectTeam operation:</B.BODY
  63293. ><EM.EXAMPLE.MONO>oper(test:integer)</EM.EXAMPLE.MONO
  63294. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63295. >Parameter Passing property</SL.SUBLABEL
  63296. ><B.BODY></B.BODY
  63297. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Parameter Passing</CELLHEADING
  63298. ></ENTRY
  63299. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Code Example</CELLHEADING
  63300. ></ENTRY
  63301. ></RBW-ROW
  63302. ></THEAD
  63303. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Value (default)</CELLBODY
  63304. ></ENTRY
  63305. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(test:integer);</CELLBODY
  63306. ></ENTRY
  63307. ></RBW-ROW
  63308. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant</CELLBODY
  63309. ></ENTRY
  63310. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(const test:integer);</CELLBODY
  63311. ></ENTRY
  63312. ></RBW-ROW
  63313. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Variable</CELLBODY
  63314. ></ENTRY
  63315. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(var test:integer);</CELLBODY
  63316. ></ENTRY
  63317. ></RBW-ROW
  63318. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Out</CELLBODY
  63319. ></ENTRY
  63320. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(out test:integer);</CELLBODY
  63321. ></ENTRY
  63322. ></RBW-ROW
  63323. ></TBODY
  63324. ></TGROUP
  63325. ></RBW-TABLE
  63326. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63327. >Type Modifier property</SL.SUBLABEL
  63328. ><B.BODY></B.BODY
  63329. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type Modifier</CELLHEADING
  63330. ></ENTRY
  63331. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Code Example</CELLHEADING
  63332. ></ENTRY
  63333. ></RBW-ROW
  63334. ></THEAD
  63335. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  63336. ></ENTRY
  63337. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(test:integer);</CELLBODY
  63338. ></ENTRY
  63339. ></RBW-ROW
  63340. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Untyped</CELLBODY
  63341. ></ENTRY
  63342. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(test);</CELLBODY
  63343. ></ENTRY
  63344. ></RBW-ROW
  63345. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Open&truehy;array</CELLBODY
  63346. ></ENTRY
  63347. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(test:array of integer);</CELLBODY
  63348. ></ENTRY
  63349. ></RBW-ROW
  63350. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Variant open&truehy;array</CELLBODY
  63351. ></ENTRY
  63352. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>procedure oper(test:array of const);</CELLBODY
  63353. ></ENTRY
  63354. ></RBW-ROW
  63355. ></TBODY
  63356. ></TGROUP
  63357. ></RBW-TABLE
  63358. ></LABEL
  63359. ></SUBSECTION
  63360. ></SECTION
  63361. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40371"></RBW-ANCHOR
  63362. >Mapping Inheritance</S.SECTION.HEAD
  63363. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63364. >Inheritance </L.LABEL
  63365. ><B.BODY>The Delphi code generator provides support for inheritance among ObjectTeam classes that represent class units, form units, and data module containers.</B.BODY
  63366. ></LABEL
  63367. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63368. >Disjoint and overlapping inheritance</L.LABEL
  63369. ><B.BODY><RBW-IDXTERM TERM1="disjoint inheritance"></RBW-IDXTERM
  63370. ><RBW-IDXTERM TERM1="overlapping inheritance"></RBW-IDXTERM
  63371. >In ObjectTeam, you can specify either disjoint or overlapping inheritance. The Delphi code generator does not distinguish between the two types of inheritance.</B.BODY
  63372. ></LABEL
  63373. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63374. >Multiple inheritance</L.LABEL
  63375. ><B.BODY>Delphi does not support multiple inheritance; therefore, the code generator displays an error if you attempt to generate code for a class that has more than one parent.</B.BODY
  63376. ></LABEL
  63377. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63378. >Example</L.LABEL
  63379. ><B.BODY>The following code excerpt shows how the code generated for the Rectangle subclass references the Shape superclass.</B.BODY
  63380. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00580.unk" origfile="pics/inher.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  63381. ></FA.FIGURE.ANCHOR
  63382. ><EM.EXAMPLE.MONO>unit RectangleUnit;</EM.EXAMPLE.MONO
  63383. ><EM.EXAMPLE.MONO>interface</EM.EXAMPLE.MONO
  63384. ><EM.EXAMPLE.MONO>uses</EM.EXAMPLE.MONO
  63385. ><EM.EXAMPLE.MONO>  // Start user include section</EM.EXAMPLE.MONO
  63386. ><EM.EXAMPLE.MONO>  // End user include section</EM.EXAMPLE.MONO
  63387. ><EM.EXAMPLE.MONO>  ShapeUnit;</EM.EXAMPLE.MONO
  63388. ><EM.EXAMPLE.MONO>type</EM.EXAMPLE.MONO
  63389. ><EM.EXAMPLE.MONO>  Rectangle = class(Shape)</EM.EXAMPLE.MONO
  63390. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  63391. ></LABEL
  63392. ></SECTION
  63393. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21676"></RBW-ANCHOR
  63394. >Mapping Associations</S.SECTION.HEAD
  63395. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63396. >Association maps to variable and methods</L.LABEL
  63397. ><B.BODY>An ObjectTeam association maps to a Delphi variable (the <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  63398. >) and a set of accessor methods (the <CX5FX5FEMPHASIS>association methods</CX5FX5FEMPHASIS
  63399. >). The association methods use the association attribute to implement and maintain the association.</B.BODY
  63400. ></LABEL
  63401. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63402. >Association properties</L.LABEL
  63403. ><B.BODY>Use the properties of an association to effect the </B.BODY
  63404. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63405. ></RBW-AUTOGEN
  63406. ></RBW-MARKER
  63407. ><RBW-PARABODY>Visibility and data type of the generated association attribute</RBW-PARABODY
  63408. ></LB.LIST.BULLET
  63409. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63410. ></RBW-AUTOGEN
  63411. ></RBW-MARKER
  63412. ><RBW-PARABODY>Visibility of the generated association methods</RBW-PARABODY
  63413. ></LB.LIST.BULLET
  63414. ><B.BODY>See <RBW-XREF REFID="31507" TYPE="XREF-TEXTCOPY">Specifying Association Properties</RBW-XREF
  63415. >.</B.BODY
  63416. ></LABEL
  63417. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63418. >Supported associations</L.LABEL
  63419. ><B.BODY><RBW-IDXTERM TERM1="mapping" TERM2="association"></RBW-IDXTERM
  63420. ><RBW-IDXTERM TERM1="association" TERM2="mapping of"></RBW-IDXTERM
  63421. >ObjectTeam and the Delphi code generator support the following:</B.BODY
  63422. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63423. ></RBW-AUTOGEN
  63424. ></RBW-MARKER
  63425. ><RBW-PARABODY>Binary association (associations between two classes)</RBW-PARABODY
  63426. ></LB.LIST.BULLET
  63427. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63428. ></RBW-AUTOGEN
  63429. ></RBW-MARKER
  63430. ><RBW-PARABODY>Qualified associations (associations that include a qualifier)</RBW-PARABODY
  63431. ></LB.LIST.BULLET
  63432. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63433. ></RBW-AUTOGEN
  63434. ></RBW-MARKER
  63435. ><RBW-PARABODY>Association classes (class used to define an association)</RBW-PARABODY
  63436. ></LB.LIST.BULLET
  63437. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  63438. ></RBW-AUTOGEN
  63439. >The Delphi code generator also supports OMT link attributes, which are similar to association classes.</N2.NOTE.2
  63440. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63441. ><RBW-IDXTERM TERM1="n-ary association"></RBW-IDXTERM
  63442. ><RBW-IDXTERM TERM1="association" TERM2="n-ary"></RBW-IDXTERM
  63443. >N&truehy;ary associations</SL.SUBLABEL
  63444. ><B.BODY>N&truehy;ary associations are ignored by the Delphi code generator. Code is generated for the classes involved, but no code is generated for the n&truehy;ary association.</B.BODY
  63445. ></LABEL
  63446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63447. >Aggregations</L.LABEL
  63448. ><B.BODY><RBW-IDXTERM TERM1="aggregation"></RBW-IDXTERM
  63449. >The Delphi code generator translates aggregations like associations, unless the aggregrations are being used to model forms or data module containers. See Chapter 4, Modeling Forms and Data Modules, for more information.</B.BODY
  63450. ></LABEL
  63451. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63452. >Ordered associations</L.LABEL
  63453. ><B.BODY>The {ordered} indicator on an association is ignored by the Delphi code generator. In lists of associations generated by the Delphi code generator, new elements are always added to the front of the list.</B.BODY
  63454. ><Q.QUERY><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZQUERY.CHARACTER>+&rbwtab;</CX5FX5FZQUERY.CHARACTER
  63455. ></RBW-AUTOGEN
  63456. ></RBW-MARKER
  63457. ><RBW-PARABODY>is this true?</RBW-PARABODY
  63458. ></Q.QUERY
  63459. ></LABEL
  63460. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63461. >In this section</L.LABEL
  63462. ><B.BODY>This section contains the following topics:</B.BODY
  63463. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  63464. ></ENTRY
  63465. ></RBW-ROW
  63466. ></THEAD
  63467. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20174" TYPE="XREF-TEXTCOPY">Mapping Unidirectional and Bidirectional Associations&rbwtab;3–38</RBW-XREF
  63468. ></SB.SECTION.BLOCK.TABLE
  63469. ></ENTRY
  63470. ></RBW-ROW
  63471. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39817" TYPE="XREF-TEXTCOPY">Mapping Associations Based on Multiplicity&rbwtab;3–43</RBW-XREF
  63472. ></SB.SECTION.BLOCK.TABLE
  63473. ></ENTRY
  63474. ></RBW-ROW
  63475. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24359" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations&rbwtab;3–49</RBW-XREF
  63476. ></SB.SECTION.BLOCK.TABLE
  63477. ></ENTRY
  63478. ></RBW-ROW
  63479. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18809" TYPE="XREF-TEXTCOPY">Mapping Association Classes&rbwtab;3–54</RBW-XREF
  63480. ></SB.SECTION.BLOCK.TABLE
  63481. ></ENTRY
  63482. ></RBW-ROW
  63483. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31507" TYPE="XREF-TEXTCOPY">Specifying Association Properties&rbwtab;3–61</RBW-XREF
  63484. ></SB.SECTION.BLOCK.TABLE
  63485. ></ENTRY
  63486. ></RBW-ROW
  63487. ></TBODY
  63488. ></TGROUP
  63489. ></RBW-TABLE
  63490. ></LABEL
  63491. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20174"></RBW-ANCHOR
  63492. >Mapping Unidirectional and Bidirectional Associations </SS.SUBSEC.HEAD
  63493. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63494. >Introduction</L.LABEL
  63495. ><B.BODY>This section describes how the Delphi code generator implements the following simple associations between the Customer class and the Book class.</B.BODY
  63496. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63497. >Unidirectional association</SL.SUBLABEL
  63498. ><B.BODY></B.BODY
  63499. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00581.unk" origfile="pics/asscuni.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  63500. ></FA.FIGURE.ANCHOR
  63501. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63502. >Bidirectional association</SL.SUBLABEL
  63503. ><B.BODY></B.BODY
  63504. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00582.unk" origfile="pics/asscbi.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  63505. ></FA.FIGURE.ANCHOR
  63506. ></LABEL
  63507. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63508. >Unidirectional and bidirectional</L.LABEL
  63509. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="unidirectional"></RBW-IDXTERM
  63510. ><RBW-IDXTERM TERM1="unidirectional association"></RBW-IDXTERM
  63511. ><RBW-IDXTERM TERM1="association" TERM2="bidirectional"></RBW-IDXTERM
  63512. ><RBW-IDXTERM TERM1="bidirectional association"></RBW-IDXTERM
  63513. ><RBW-IDXTERM TERM1="one-to-one association"></RBW-IDXTERM
  63514. ><RBW-IDXTERM TERM1="association" TERM2="one-to-one"></RBW-IDXTERM
  63515. >The direction of an association is defined by the role names on the association. A role name at the far end of the association indicates an association from the class at the near end to the class at the far end.</B.BODY
  63516. ><B.BODY>If an association has a role name at only one end, it is a <CX5FX5FEMPHASIS>unidirectional</CX5FX5FEMPHASIS
  63517. > association (implemented in one direction). If an association has role names at both ends, it is a <CX5FX5FEMPHASIS>bidirectional</CX5FX5FEMPHASIS
  63518. > association (implemented in both directions).</B.BODY
  63519. ></LABEL
  63520. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63521. >Mapping a unidirectional association</L.LABEL
  63522. ><B.BODY><RBW-IDXTERM TERM1="Visual Basic" TERM2="association attribute"></RBW-IDXTERM
  63523. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="association attribute access method"></RBW-IDXTERM
  63524. >The Delphi code generator implements a unidirectional association by adding an <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  63525. > and a set of <CX5FX5FEMPHASIS>association methods</CX5FX5FEMPHASIS
  63526. > to the code generated for the class at the near end of the association. This allows the class at the near end of the association (Customer) to access the class at the far end (Book); the class at the far end of the association cannot access the class at the near end.</B.BODY
  63527. ></LABEL
  63528. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63529. >Mapping a bidirectional association</L.LABEL
  63530. ><B.BODY>The Delphi code generator implements a bidirectional association by adding an <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  63531. > and a set of <CX5FX5FEMPHASIS>association methods</CX5FX5FEMPHASIS
  63532. > to the code generated for both classes. This allows each class to access the other. To ensure integrity of a bidirectional association, the update method for a bidirectional association always maintains the association in both directions.</B.BODY
  63533. ></LABEL
  63534. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63535. >Example of a unidirectional association</L.LABEL
  63536. ><B.BODY>Following is an excerpt from the code generated for the Customer class in the unidirectional association. Because this is a unidirectional association, the Book class does not contain any code related to the association.</B.BODY
  63537. ><B.BODY>Notice the following:</B.BODY
  63538. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63539. ></RBW-AUTOGEN
  63540. ></RBW-MARKER
  63541. ><RBW-PARABODY>The association attribute, Customer.possessionRef, implements the association between the Customer and the Book.</RBW-PARABODY
  63542. ></LB.LIST.BULLET
  63543. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63544. ></RBW-AUTOGEN
  63545. ></RBW-MARKER
  63546. ><RBW-PARABODY>The remove, set, and get methods manage the association:</RBW-PARABODY
  63547. ></LB.LIST.BULLET
  63548. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  63549. ></RBW-MARKER
  63550. ><RBW-PARABODY>The removePossession method can be used to remove the association — the Customer no longer owns the Book.</RBW-PARABODY
  63551. ></LB2.LIST.BULLET.2
  63552. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  63553. ></RBW-MARKER
  63554. ><RBW-PARABODY>The setPossession method can be used to add the association — the Customer purchases the Book.</RBW-PARABODY
  63555. ></LB2.LIST.BULLET.2
  63556. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  63557. ></RBW-MARKER
  63558. ><RBW-PARABODY>The getPossession method can be used to retrieve the association — which Book (if any) the Customer owns.</RBW-PARABODY
  63559. ></LB2.LIST.BULLET.2
  63560. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  63561. ><EM.EXAMPLE.MONO>type</EM.EXAMPLE.MONO
  63562. ><EM.EXAMPLE.MONO>  Customer = class</EM.EXAMPLE.MONO
  63563. ><EM.EXAMPLE.MONO>  private</EM.EXAMPLE.MONO
  63564. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  63565. ><EM.EXAMPLE.MONO>    // Association attributes</EM.EXAMPLE.MONO
  63566. ><EM.EXAMPLE.MONO>    possessionRef: Pointer;</EM.EXAMPLE.MONO
  63567. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  63568. ><EM.EXAMPLE.MONO>  public</EM.EXAMPLE.MONO
  63569. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  63570. ><EM.EXAMPLE.MONO>    // Association methods</EM.EXAMPLE.MONO
  63571. ><EM.EXAMPLE.MONO>    function getPossession: Pointer;</EM.EXAMPLE.MONO
  63572. ><EM.EXAMPLE.MONO>    procedure setPossession(newBook: Pointer);</EM.EXAMPLE.MONO
  63573. ><EM.EXAMPLE.MONO>    procedure removePossession;</EM.EXAMPLE.MONO
  63574. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  63575. ><EM.EXAMPLE.MONO>implementation</EM.EXAMPLE.MONO
  63576. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  63577. ><EM.EXAMPLE.MONO>function Customer.getPossession: Pointer;</EM.EXAMPLE.MONO
  63578. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  63579. ><EM.EXAMPLE.MONO>  getPossession := possessionRef;</EM.EXAMPLE.MONO
  63580. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  63581. ><EM.EXAMPLE.MONO>procedure Customer.setPossession(newBook: Pointer);</EM.EXAMPLE.MONO
  63582. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  63583. ><EM.EXAMPLE.MONO>  possessionRef := newBook;</EM.EXAMPLE.MONO
  63584. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  63585. ><EM.EXAMPLE.MONO>procedure Customer.removePossession;</EM.EXAMPLE.MONO
  63586. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  63587. ><EM.EXAMPLE.MONO>  possessionRef := NIL;</EM.EXAMPLE.MONO
  63588. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  63589. ><EM.EXAMPLE.MONO>end.</EM.EXAMPLE.MONO
  63590. ></LABEL
  63591. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63592. >Example of a bidirectional association</L.LABEL
  63593. ><B.BODY>Following is an excerpt from the code generated for the Customer class in the bidirectional association. Because this is a bidirectional association, the Book class contains similar code.</B.BODY
  63594. ><B.BODY>Notice the following:</B.BODY
  63595. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63596. ></RBW-AUTOGEN
  63597. ></RBW-MARKER
  63598. ><RBW-PARABODY>As in the previous example, the remove, set, and get methods update the association attribute Customer.possessionRef to reflect the association between the Customer and the Book.</RBW-PARABODY
  63599. ></LB.LIST.BULLET
  63600. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63601. ></RBW-AUTOGEN
  63602. ></RBW-MARKER
  63603. ><RBW-PARABODY>Because this is a bidirectional association, the remove and set methods <CX5FX5FEMPHASIS>also</CX5FX5FEMPHASIS
  63604. > update the complementary association between the Book and the Customer. To update the complementary association, the association methods defined in the Customer class use the association methods defined in the Book class.</RBW-PARABODY
  63605. ></LB.LIST.BULLET
  63606. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63607. ></RBW-AUTOGEN
  63608. ></RBW-MARKER
  63609. ><RBW-PARABODY>Because this is a bidirectional association, when a Customer is deleted, if the Customer is associated with a Book, the association between the Book and the Customer must also be deleted. The destructor for Customer removes that association.</RBW-PARABODY
  63610. ></LB.LIST.BULLET
  63611. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  63612. ><EM.EXAMPLE.MONO>type</EM.EXAMPLE.MONO
  63613. ><EM.EXAMPLE.MONO>  Customer = class</EM.EXAMPLE.MONO
  63614. ><EM.EXAMPLE.MONO>  private</EM.EXAMPLE.MONO
  63615. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  63616. ><EM.EXAMPLE.MONO>    // Association attributes</EM.EXAMPLE.MONO
  63617. ><EM.EXAMPLE.MONO>    possessionRef: Pointer;</EM.EXAMPLE.MONO
  63618. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  63619. ><EM.EXAMPLE.MONO>  public</EM.EXAMPLE.MONO
  63620. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  63621. ><EM.EXAMPLE.MONO>    // Association methods</EM.EXAMPLE.MONO
  63622. ><EM.EXAMPLE.MONO>    function getPossession: Pointer;</EM.EXAMPLE.MONO
  63623. ><EM.EXAMPLE.MONO>    procedure setPossession(newBook: Pointer);</EM.EXAMPLE.MONO
  63624. ><EM.EXAMPLE.MONO>    procedure removePossession;</EM.EXAMPLE.MONO
  63625. ><EM.EXAMPLE.MONO>    ...</EM.EXAMPLE.MONO
  63626. ><EM.EXAMPLE.MONO>implementation</EM.EXAMPLE.MONO
  63627. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  63628. ><EM.EXAMPLE.MONO>destructor Customer.Destroy;</EM.EXAMPLE.MONO
  63629. ><EM.EXAMPLE.MONO>  // Start user section</EM.EXAMPLE.MONO
  63630. ><EM.EXAMPLE.MONO>  // End user section</EM.EXAMPLE.MONO
  63631. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  63632. ><EM.EXAMPLE.MONO>  // Start user section</EM.EXAMPLE.MONO
  63633. ><EM.EXAMPLE.MONO>  // End user section</EM.EXAMPLE.MONO
  63634. ><EM.EXAMPLE.MONO>  removePossession;</EM.EXAMPLE.MONO
  63635. ><EM.EXAMPLE.MONO>  inherited Destroy;</EM.EXAMPLE.MONO
  63636. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  63637. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  63638. ><EM.EXAMPLE.MONO>function Customer.getPossession: Pointer;</EM.EXAMPLE.MONO
  63639. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  63640. ><EM.EXAMPLE.MONO>  getPossession := possessionRef;</EM.EXAMPLE.MONO
  63641. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  63642. ><EM.EXAMPLE.MONO>procedure Customer.setPossession(newBook: Pointer);</EM.EXAMPLE.MONO
  63643. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  63644. ><EM.EXAMPLE.MONO>  if (newBook <> NIL) then</EM.EXAMPLE.MONO
  63645. ><EM.EXAMPLE.MONO>  begin</EM.EXAMPLE.MONO
  63646. ><EM.EXAMPLE.MONO>    if (newBook <> possessionRef) then</EM.EXAMPLE.MONO
  63647. ><EM.EXAMPLE.MONO>    begin</EM.EXAMPLE.MONO
  63648. ><EM.EXAMPLE.MONO>      if (possessionRef <> NIL) then</EM.EXAMPLE.MONO
  63649. ><EM.EXAMPLE.MONO>      begin</EM.EXAMPLE.MONO
  63650. ><EM.EXAMPLE.MONO>        Book(possessionRef).removeOwner;</EM.EXAMPLE.MONO
  63651. ><EM.EXAMPLE.MONO>      end;</EM.EXAMPLE.MONO
  63652. ><EM.EXAMPLE.MONO>      possessionRef := newBook;</EM.EXAMPLE.MONO
  63653. ><EM.EXAMPLE.MONO>      Book(newBook).setOwner(SELF);</EM.EXAMPLE.MONO
  63654. ><EM.EXAMPLE.MONO>    end;</EM.EXAMPLE.MONO
  63655. ><EM.EXAMPLE.MONO>  end</EM.EXAMPLE.MONO
  63656. ><EM.EXAMPLE.MONO>  else</EM.EXAMPLE.MONO
  63657. ><EM.EXAMPLE.MONO>  begin</EM.EXAMPLE.MONO
  63658. ><EM.EXAMPLE.MONO>    removePossession;</EM.EXAMPLE.MONO
  63659. ><EM.EXAMPLE.MONO>  end;</EM.EXAMPLE.MONO
  63660. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  63661. ><EM.EXAMPLE.MONO>procedure Customer.removePossession;</EM.EXAMPLE.MONO
  63662. ><EM.EXAMPLE.MONO>var</EM.EXAMPLE.MONO
  63663. ><EM.EXAMPLE.MONO>  oldBook: Book;</EM.EXAMPLE.MONO
  63664. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  63665. ><EM.EXAMPLE.MONO>  if (possessionRef <> NIL) then</EM.EXAMPLE.MONO
  63666. ><EM.EXAMPLE.MONO>  begin</EM.EXAMPLE.MONO
  63667. ><EM.EXAMPLE.MONO>    oldBook := possessionRef;</EM.EXAMPLE.MONO
  63668. ><EM.EXAMPLE.MONO>    possessionRef := NIL;</EM.EXAMPLE.MONO
  63669. ><EM.EXAMPLE.MONO>    oldBook.removeOwner();</EM.EXAMPLE.MONO
  63670. ><EM.EXAMPLE.MONO>  end;</EM.EXAMPLE.MONO
  63671. ><EM.EXAMPLE.MONO>end;</EM.EXAMPLE.MONO
  63672. ><EM.EXAMPLE.MONO>end.</EM.EXAMPLE.MONO
  63673. ></LABEL
  63674. ></SUBSECTION
  63675. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39817"></RBW-ANCHOR
  63676. >Mapping Associations Based on Multiplicity</SS.SUBSEC.HEAD
  63677. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63678. >Introduction</L.LABEL
  63679. ><B.BODY>The code generated for an association depends on the multiplicity of the association. This section shows an example of the code generated for each type of association. For simplicity, all of the associations shown in this section are unidirectional associations.</B.BODY
  63680. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  63681. ></RBW-AUTOGEN
  63682. >The Delphi code generator does not support mandatory&truehy;mandatory bidirectional associations. Such associations cause a code generation error.</W.WARNING
  63683. ></LABEL
  63684. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63685. >Prerequisite</L.LABEL
  63686. ><B.BODY>This section assumes that you are familiar with the information in <RBW-XREF REFID="20174" TYPE="XREF-TEXTCOPY">Mapping Unidirectional and Bidirectional Associations</RBW-XREF
  63687. >.</B.BODY
  63688. ></LABEL
  63689. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63690. ><RBW-ANCHOR ID="19832"></RBW-ANCHOR
  63691. >Zero or one</L.LABEL
  63692. ><B.BODY>In the following example, each Customer can have zero or one Books:</B.BODY
  63693. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00583.unk" origfile="pics/asscuni.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  63694. ></FA.FIGURE.ANCHOR
  63695. ><B.BODY>Following is an excerpt from the code generated for this Customer class. Notice the following:</B.BODY
  63696. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63697. ></RBW-AUTOGEN
  63698. ></RBW-MARKER
  63699. ><RBW-PARABODY>The get method retrieves the association (if any).</RBW-PARABODY
  63700. ></LB.LIST.BULLET
  63701. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63702. ></RBW-AUTOGEN
  63703. ></RBW-MARKER
  63704. ><RBW-PARABODY>The set method creates an association between the Customer and a Book. A Customer can have at most one Book; therefore, if the Customer already has a Book, the set method replaces the old Book with the new one.</RBW-PARABODY
  63705. ></LB.LIST.BULLET
  63706. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63707. ></RBW-AUTOGEN
  63708. ></RBW-MARKER
  63709. ><RBW-PARABODY>The remove method removes the association (if any) between this Customer and a Book.</RBW-PARABODY
  63710. ></LB.LIST.BULLET
  63711. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  63712. ><EWM.EXAMPLEW.MONO>  Customer = class</EWM.EXAMPLEW.MONO
  63713. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  63714. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63715. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  63716. ><EWM.EXAMPLEW.MONO>    possessionRef: Pointer;</EWM.EXAMPLEW.MONO
  63717. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63718. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  63719. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63720. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  63721. ><EWM.EXAMPLEW.MONO>    function getPossession: Pointer;</EWM.EXAMPLEW.MONO
  63722. ><EWM.EXAMPLEW.MONO>    procedure setPossession(newBook: Pointer);</EWM.EXAMPLEW.MONO
  63723. ><EWM.EXAMPLEW.MONO>    procedure removePossession;</EWM.EXAMPLEW.MONO
  63724. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63725. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  63726. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63727. ><EWM.EXAMPLEW.MONO>function Customer.getPossession: Pointer;</EWM.EXAMPLEW.MONO
  63728. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63729. ><EWM.EXAMPLEW.MONO>  getPossession := possessionRef;</EWM.EXAMPLEW.MONO
  63730. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63731. ><EWM.EXAMPLEW.MONO>procedure Customer.setPossession(newBook: Pointer);</EWM.EXAMPLEW.MONO
  63732. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63733. ><EWM.EXAMPLEW.MONO>  possessionRef := newBook;</EWM.EXAMPLEW.MONO
  63734. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63735. ><EWM.EXAMPLEW.MONO>procedure Customer.removePossession;</EWM.EXAMPLEW.MONO
  63736. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63737. ><EWM.EXAMPLEW.MONO>  possessionRef := NIL;</EWM.EXAMPLEW.MONO
  63738. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63739. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63740. ></LABEL
  63741. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63742. >Exactly one</L.LABEL
  63743. ><B.BODY>In the following example, each Customer must have exactly one Book:</B.BODY
  63744. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00584.unk" origfile="pics/asscone.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  63745. ></FA.FIGURE.ANCHOR
  63746. ><B.BODY>Following is an excerpt from the code generated for this Customer class. Notice the following:</B.BODY
  63747. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63748. ></RBW-AUTOGEN
  63749. ></RBW-MARKER
  63750. ><RBW-PARABODY>A Customer must have a Book, therefore, the class constructor creates the association between the Customer and a Book.</RBW-PARABODY
  63751. ></LB.LIST.BULLET
  63752. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63753. ></RBW-AUTOGEN
  63754. ></RBW-MARKER
  63755. ><RBW-PARABODY>The get method retrieves the association (if any).</RBW-PARABODY
  63756. ></LB.LIST.BULLET
  63757. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63758. ></RBW-AUTOGEN
  63759. ></RBW-MARKER
  63760. ><RBW-PARABODY>The set method creates an association between the Customer and a Book. A Customer must have exactly one Book; therefore, the set method replaces the old Book with the new one.</RBW-PARABODY
  63761. ></LB.LIST.BULLET
  63762. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63763. ></RBW-AUTOGEN
  63764. ></RBW-MARKER
  63765. ><RBW-PARABODY>The association cannot be removed, therefore, no remove method is generated.</RBW-PARABODY
  63766. ></LB.LIST.BULLET
  63767. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63768. ></RBW-AUTOGEN
  63769. ></RBW-MARKER
  63770. ><RBW-PARABODY>The association attribute, Customer.possessionRef, is public rather than private. See <RBW-XREF REFID="30500" TYPE="XREF-TEXTCOPY">Visibility of an association attribute</RBW-XREF
  63771. >.</RBW-PARABODY
  63772. ></LB.LIST.BULLET
  63773. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  63774. ><EWM.EXAMPLEW.MONO>  Customer = class</EWM.EXAMPLEW.MONO
  63775. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  63776. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  63777. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63778. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  63779. ><EWM.EXAMPLEW.MONO>    possessionRef: Pointer;</EWM.EXAMPLEW.MONO
  63780. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63781. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  63782. ><EWM.EXAMPLEW.MONO>    function getPossession: Pointer;</EWM.EXAMPLEW.MONO
  63783. ><EWM.EXAMPLEW.MONO>    procedure setPossession(newBook: Pointer);</EWM.EXAMPLEW.MONO
  63784. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63785. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  63786. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63787. ><EWM.EXAMPLEW.MONO>constructor Customer.Create(newpossession: Book);</EWM.EXAMPLEW.MONO
  63788. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  63789. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  63790. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63791. ><EWM.EXAMPLEW.MONO>  if (newpossession <> NIL) then</EWM.EXAMPLEW.MONO
  63792. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  63793. ><EWM.EXAMPLEW.MONO>    possessionRef := newpossession;</EWM.EXAMPLEW.MONO
  63794. ><EWM.EXAMPLEW.MONO>  end</EWM.EXAMPLEW.MONO
  63795. ><EWM.EXAMPLEW.MONO>  else</EWM.EXAMPLEW.MONO
  63796. ><EWM.EXAMPLEW.MONO>    raise EInvalidOp.Create('Object newpossession has mandatory relation. NIL object reference not allowed.');</EWM.EXAMPLEW.MONO
  63797. ><EWM.EXAMPLEW.MONO>  inherited Create;</EWM.EXAMPLEW.MONO
  63798. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  63799. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  63800. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63801. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63802. ><EWM.EXAMPLEW.MONO>function Customer.getPossession: Pointer;</EWM.EXAMPLEW.MONO
  63803. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63804. ><EWM.EXAMPLEW.MONO>  getPossession := possessionRef;</EWM.EXAMPLEW.MONO
  63805. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63806. ><EWM.EXAMPLEW.MONO>procedure Customer.setPossession(newBook: Pointer);</EWM.EXAMPLEW.MONO
  63807. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63808. ><EWM.EXAMPLEW.MONO>  if (newBook <> NIL) then</EWM.EXAMPLEW.MONO
  63809. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  63810. ><EWM.EXAMPLEW.MONO>    possessionRef := newBook;</EWM.EXAMPLEW.MONO
  63811. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  63812. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63813. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63814. ></LABEL
  63815. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63816. >Many</L.LABEL
  63817. ><B.BODY>In the following example, each Customer can have zero or more Books:</B.BODY
  63818. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00585.unk" origfile="pics/asscmany.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  63819. ></FA.FIGURE.ANCHOR
  63820. ><B.BODY>Following is an excerpt from the code generated for this Customer class. Notice the following:</B.BODY
  63821. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63822. ></RBW-AUTOGEN
  63823. ></RBW-MARKER
  63824. ><RBW-PARABODY>The association attribute is a TList object, which allows the attribute to store and maintain the list of associated objects. The Customer class constructor creates the TList object; the class destructor destroys it.</RBW-PARABODY
  63825. ></LB.LIST.BULLET
  63826. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63827. ></RBW-AUTOGEN
  63828. ></RBW-MARKER
  63829. ><RBW-PARABODY>The add method adds an association to the set of associations. If the association is already in the set, the add method does nothing.</RBW-PARABODY
  63830. ></LB.LIST.BULLET
  63831. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63832. ></RBW-AUTOGEN
  63833. ></RBW-MARKER
  63834. ><RBW-PARABODY>The get method retrieves the set of associations.</RBW-PARABODY
  63835. ></LB.LIST.BULLET
  63836. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  63837. ></RBW-AUTOGEN
  63838. ></RBW-MARKER
  63839. ><RBW-PARABODY>The remove method removes an association from the set. If the association is not in the set, the remove method does nothing.</RBW-PARABODY
  63840. ></LB.LIST.BULLET
  63841. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  63842. ><EWM.EXAMPLEW.MONO>  Customer = class</EWM.EXAMPLEW.MONO
  63843. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  63844. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63845. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  63846. ><EWM.EXAMPLEW.MONO>    possessionSet: TList;</EWM.EXAMPLEW.MONO
  63847. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63848. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  63849. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63850. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  63851. ><EWM.EXAMPLEW.MONO>    procedure addPossession(newBook: Pointer);</EWM.EXAMPLEW.MONO
  63852. ><EWM.EXAMPLEW.MONO>    function getPossession: TList;</EWM.EXAMPLEW.MONO
  63853. ><EWM.EXAMPLEW.MONO>    procedure removePossession(oldBook: Pointer);</EWM.EXAMPLEW.MONO
  63854. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  63855. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  63856. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63857. ><EWM.EXAMPLEW.MONO>constructor Customer.Create;</EWM.EXAMPLEW.MONO
  63858. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  63859. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  63860. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63861. ><EWM.EXAMPLEW.MONO>  inherited Create;</EWM.EXAMPLEW.MONO
  63862. ><EWM.EXAMPLEW.MONO>  possessionSet := TList.Create;</EWM.EXAMPLEW.MONO
  63863. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  63864. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  63865. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63866. ><EWM.EXAMPLEW.MONO>destructor Customer.Destroy;</EWM.EXAMPLEW.MONO
  63867. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  63868. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  63869. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63870. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  63871. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  63872. ><EWM.EXAMPLEW.MONO>  possessionSet.Destroy;</EWM.EXAMPLEW.MONO
  63873. ><EWM.EXAMPLEW.MONO>  inherited Destroy;</EWM.EXAMPLEW.MONO
  63874. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63875. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63876. ><EWM.EXAMPLEW.MONO>procedure Customer.addPossession(newBook: Pointer);</EWM.EXAMPLEW.MONO
  63877. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63878. ><EWM.EXAMPLEW.MONO>  if (possessionSet.IndexOf(newBook) = &truehy;1) then</EWM.EXAMPLEW.MONO
  63879. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  63880. ><EWM.EXAMPLEW.MONO>    possessionSet.Add(newBook);</EWM.EXAMPLEW.MONO
  63881. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  63882. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63883. ><EWM.EXAMPLEW.MONO>function Customer.getPossession: TList;</EWM.EXAMPLEW.MONO
  63884. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63885. ><EWM.EXAMPLEW.MONO>  getPossession := possessionSet;</EWM.EXAMPLEW.MONO
  63886. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63887. ><EWM.EXAMPLEW.MONO>procedure Customer.removePossession(oldBook: Pointer);</EWM.EXAMPLEW.MONO
  63888. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  63889. ><EWM.EXAMPLEW.MONO>  if (possessionSet.IndexOf(oldBook) <> &truehy;1) then</EWM.EXAMPLEW.MONO
  63890. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  63891. ><EWM.EXAMPLEW.MONO>    possessionSet.Remove(oldBook);</EWM.EXAMPLEW.MONO
  63892. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  63893. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  63894. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  63895. ></LABEL
  63896. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63897. >Many, numerically specified</L.LABEL
  63898. ><BI.BODY.INTRO>In the following example, each Customer can have at most 10 Books. The Delphi code generator ignores the more specific value. The code generated for this association is the same as that shown above.</BI.BODY.INTRO
  63899. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00586.unk" origfile="pics/asscnum.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  63900. ></FA.FIGURE.ANCHOR
  63901. ></LABEL
  63902. ></SUBSECTION
  63903. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24359"></RBW-ANCHOR
  63904. >Mapping Qualified Associations</SS.SUBSEC.HEAD
  63905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63906. >Introduction</L.LABEL
  63907. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="qualified"></RBW-IDXTERM
  63908. ><RBW-IDXTERM TERM1="qualified association"></RBW-IDXTERM
  63909. ><RBW-IDXTERM TERM1="mapping" TERM2="qualified association"></RBW-IDXTERM
  63910. >The mapping of a qualified association, is similar to that of an association with multiplicity of many. For a qualified association, however, the qualifier (bookID, in the following example) is used to identify each association in the set of associations.</B.BODY
  63911. ></LABEL
  63912. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63913. >Prerequisite</L.LABEL
  63914. ><B.BODY>This section assumes that you are familiar with the information in <RBW-XREF REFID="39817" TYPE="XREF-TEXTCOPY">Mapping Associations Based on Multiplicity</RBW-XREF
  63915. >.</B.BODY
  63916. ></LABEL
  63917. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63918. >Qualified association</L.LABEL
  63919. ><B.BODY>This section describes how the Delphi code generator implements the following associations between the Customer class and the Book class. </B.BODY
  63920. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00587.unk" origfile="pics/asscqual.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  63921. ></FA.FIGURE.ANCHOR
  63922. ></LABEL
  63923. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63924. >Maintained from the qualified class</L.LABEL
  63925. ><B.BODY>A qualified association must be a bidirectional association. The association can be retrieved from either class. The association is created, deleted, and updated from the qualified class (in this example, the Customer class).</B.BODY
  63926. ></LABEL
  63927. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63928. >How to edit qualifier properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for qualifier"></RBW-IDXTERM
  63929. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  63930. ><RBW-IDXTERM TERM1="qualifier" TERM2="editing properties"></RBW-IDXTERM
  63931. ></L.LABEL
  63932. ><B.BODY>You must specify the data type of the qualifier by editing the association properties.</B.BODY
  63933. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  63934. ></RBW-AUTOGEN
  63935. ></RBW-MARKER
  63936. ><RBW-PARABODY>To specify the data type of the qualifier:</RBW-PARABODY
  63937. ></P.PROCEDURE
  63938. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  63939. ></RBW-AUTOGEN
  63940. ></RBW-MARKER
  63941. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  63942. ></LN.LIST.NUM
  63943. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  63944. ></RBW-AUTOGEN
  63945. ></RBW-MARKER
  63946. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  63947. ></LN.LIST.NUM
  63948. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  63949. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  63950. ></RBW-AUTOGEN
  63951. ></RBW-MARKER
  63952. ><RBW-PARABODY>Select a qualifier from the list on the left side of the dialog box.</RBW-PARABODY
  63953. ></LN.LIST.NUM
  63954. ><LR.LIST.RESULT>The qualifier properties appear on the right side of the dialog box.</LR.LIST.RESULT
  63955. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  63956. ></RBW-AUTOGEN
  63957. ></RBW-MARKER
  63958. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  63959. ></LN.LIST.NUM
  63960. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="63p"><COLSPEC COLNAME="3" COLWIDTH="243p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  63961. ></ENTRY
  63962. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  63963. ></ENTRY
  63964. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  63965. ></ENTRY
  63966. ></RBW-ROW
  63967. ></THEAD
  63968. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  63969. ></ENTRY
  63970. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  63971. ></ENTRY
  63972. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Mandatory. Data type of the qualifier.</CELLBODY
  63973. ></ENTRY
  63974. ></RBW-ROW
  63975. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  63976. ></ENTRY
  63977. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  63978. ></ENTRY
  63979. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Comment that does not appear in the generated code.</CELLBODY
  63980. ></ENTRY
  63981. ></RBW-ROW
  63982. ></TBODY
  63983. ></TGROUP
  63984. ></RBW-TABLE
  63985. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  63986. ></RBW-AUTOGEN
  63987. ></RBW-MARKER
  63988. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  63989. ></LN.LIST.NUM
  63990. ></LABEL
  63991. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  63992. >ClassDict class</L.LABEL
  63993. ><B.BODY>For a qualified association, the association attribute is a ClassDict object. The ClassDict class, which is supplied with the Delphi code generator, includes special methods for handling qualifiers. The association methods use the ClassDict methods to access the qualifier.</B.BODY
  63994. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  63995. ></RBW-AUTOGEN
  63996. >ObjectTeam copies the ClassDict class to your user environment when you configure your Implementation environment, as described in <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your PowerBuilder Environment</RBW-XREF
  63997. >.</N.NOTE
  63998. ></LABEL
  63999. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64000. >Generated Customer code</L.LABEL
  64001. ><BI.BODY.INTRO>Following is an excerpt from the code generated for the Customer class shown above. Notice the following:</BI.BODY.INTRO
  64002. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64003. ></RBW-AUTOGEN
  64004. ></RBW-MARKER
  64005. ><RBW-PARABODY>The Customer.possession association is managed using an association attribute of type ClassDict and the bookID index.</RBW-PARABODY
  64006. ></LB.LIST.BULLET
  64007. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64008. ></RBW-AUTOGEN
  64009. ></RBW-MARKER
  64010. ><RBW-PARABODY>The Customer class constructor creates the ClassDict object that is the association attribute.</RBW-PARABODY
  64011. ></LB.LIST.BULLET
  64012. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64013. ></RBW-AUTOGEN
  64014. ></RBW-MARKER
  64015. ><RBW-PARABODY>The Customer class destructor removes all associations from Books to this Customer class, then deletes the ClassDict object that is the association attribute.</RBW-PARABODY
  64016. ></LB.LIST.BULLET
  64017. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64018. ></RBW-AUTOGEN
  64019. ></RBW-MARKER
  64020. ><RBW-PARABODY>Because this is a bidirectional association, the add and remove methods update both the Customer&truehy;Book and Book&truehy;Customer associations.</RBW-PARABODY
  64021. ></LB.LIST.BULLET
  64022. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64023. ></RBW-AUTOGEN
  64024. ></RBW-MARKER
  64025. ><RBW-PARABODY>The get method uses the bookID index to retrieve the set of associated Books.</RBW-PARABODY
  64026. ></LB.LIST.BULLET
  64027. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64028. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64029. ><EWM.EXAMPLEW.MONO>  Customer = class</EWM.EXAMPLEW.MONO
  64030. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  64031. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64032. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  64033. ><EWM.EXAMPLEW.MONO>    possessionDict: TClassDict;</EWM.EXAMPLEW.MONO
  64034. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64035. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  64036. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64037. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  64038. ><EWM.EXAMPLEW.MONO>    procedure addPossession(bookID: Integer; newBook: Pointer);</EWM.EXAMPLEW.MONO
  64039. ><EWM.EXAMPLEW.MONO>    function getPossession(bookID: Integer): TList;</EWM.EXAMPLEW.MONO
  64040. ><EWM.EXAMPLEW.MONO>    procedure removePossession(bookID: Integer; oldBook: Pointer);</EWM.EXAMPLEW.MONO
  64041. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64042. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64043. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64044. ><EWM.EXAMPLEW.MONO>constructor Customer.Create;</EWM.EXAMPLEW.MONO
  64045. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64046. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64047. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64048. ><EWM.EXAMPLEW.MONO>  inherited Create;</EWM.EXAMPLEW.MONO
  64049. ><EWM.EXAMPLEW.MONO>  possessionDict := TClassDict.Create;</EWM.EXAMPLEW.MONO
  64050. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64051. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64052. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64053. ><EWM.EXAMPLEW.MONO>destructor Customer.Destroy;</EWM.EXAMPLEW.MONO
  64054. ><EWM.EXAMPLEW.MONO>var</EWM.EXAMPLEW.MONO
  64055. ><EWM.EXAMPLEW.MONO>  tmppossessionSet: TList;</EWM.EXAMPLEW.MONO
  64056. ><EWM.EXAMPLEW.MONO>  tmppossession: Book;</EWM.EXAMPLEW.MONO
  64057. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64058. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64059. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64060. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64061. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64062. ><EWM.EXAMPLEW.MONO>  while (possessionDict.Count <> 0) do</EWM.EXAMPLEW.MONO
  64063. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64064. ><EWM.EXAMPLEW.MONO>    tmppossessionSet := possessionDict.First;</EWM.EXAMPLEW.MONO
  64065. ><EWM.EXAMPLEW.MONO>    while (tmppossessionSet.Count > 0) do</EWM.EXAMPLEW.MONO
  64066. ><EWM.EXAMPLEW.MONO>    begin</EWM.EXAMPLEW.MONO
  64067. ><EWM.EXAMPLEW.MONO>      tmppossession := tmppossessionSet.First;</EWM.EXAMPLEW.MONO
  64068. ><EWM.EXAMPLEW.MONO>      tmppossession.ownerRef := NIL;</EWM.EXAMPLEW.MONO
  64069. ><EWM.EXAMPLEW.MONO>      tmppossessionSet.Remove(tmppossession);</EWM.EXAMPLEW.MONO
  64070. ><EWM.EXAMPLEW.MONO>    end;</EWM.EXAMPLEW.MONO
  64071. ><EWM.EXAMPLEW.MONO>    possessionDict.Remove(tmppossessionSet);</EWM.EXAMPLEW.MONO
  64072. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  64073. ><EWM.EXAMPLEW.MONO>  possessionDict.Destroy;</EWM.EXAMPLEW.MONO
  64074. ><EWM.EXAMPLEW.MONO>  inherited Destroy;</EWM.EXAMPLEW.MONO
  64075. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64076. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64077. ><EWM.EXAMPLEW.MONO>procedure Customer.addPossession(bookID: Integer; newBook: Pointer);</EWM.EXAMPLEW.MONO
  64078. ><EWM.EXAMPLEW.MONO>var</EWM.EXAMPLEW.MONO
  64079. ><EWM.EXAMPLEW.MONO>  temppossessionSet: TList;</EWM.EXAMPLEW.MONO
  64080. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64081. ><EWM.EXAMPLEW.MONO>  Book(newBook).ownerRef := SELF;</EWM.EXAMPLEW.MONO
  64082. ><EWM.EXAMPLEW.MONO>  if (possessionDict.Item(bookID) <> NIL) then</EWM.EXAMPLEW.MONO
  64083. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64084. ><EWM.EXAMPLEW.MONO>    temppossessionSet := possessionDict.Item(bookID);</EWM.EXAMPLEW.MONO
  64085. ><EWM.EXAMPLEW.MONO>  end</EWM.EXAMPLEW.MONO
  64086. ><EWM.EXAMPLEW.MONO>  else</EWM.EXAMPLEW.MONO
  64087. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64088. ><EWM.EXAMPLEW.MONO>    temppossessionSet := TList.Create;</EWM.EXAMPLEW.MONO
  64089. ><EWM.EXAMPLEW.MONO>    possessionDict.Add(bookID, temppossessionSet)</EWM.EXAMPLEW.MONO
  64090. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  64091. ><EWM.EXAMPLEW.MONO>  temppossessionSet.Add(newBook);</EWM.EXAMPLEW.MONO
  64092. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64093. ><EWM.EXAMPLEW.MONO>function Customer.getPossession(bookID: Integer): TList;</EWM.EXAMPLEW.MONO
  64094. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64095. ><EWM.EXAMPLEW.MONO>  getPossession := possessionDict.Item(bookID);</EWM.EXAMPLEW.MONO
  64096. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64097. ><EWM.EXAMPLEW.MONO>procedure Customer.removePossession(bookID: Integer; oldBook: Pointer);</EWM.EXAMPLEW.MONO
  64098. ><EWM.EXAMPLEW.MONO>var</EWM.EXAMPLEW.MONO
  64099. ><EWM.EXAMPLEW.MONO>  temppossessionSet: TList;</EWM.EXAMPLEW.MONO
  64100. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64101. ><EWM.EXAMPLEW.MONO>  temppossessionSet := possessionDict.Item(bookID);</EWM.EXAMPLEW.MONO
  64102. ><EWM.EXAMPLEW.MONO>  if temppossessionSet <> NIL then</EWM.EXAMPLEW.MONO
  64103. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64104. ><EWM.EXAMPLEW.MONO>    Book(oldBook).ownerRef := NIL;</EWM.EXAMPLEW.MONO
  64105. ><EWM.EXAMPLEW.MONO>    temppossessionSet.Remove(oldBook);</EWM.EXAMPLEW.MONO
  64106. ><EWM.EXAMPLEW.MONO>    if (temppossessionSet.Count = 0) then</EWM.EXAMPLEW.MONO
  64107. ><EWM.EXAMPLEW.MONO>    begin</EWM.EXAMPLEW.MONO
  64108. ><EWM.EXAMPLEW.MONO>      possessionDict.RemoveUsingKey(bookID);</EWM.EXAMPLEW.MONO
  64109. ><EWM.EXAMPLEW.MONO>    end;</EWM.EXAMPLEW.MONO
  64110. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  64111. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64112. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64113. ></LABEL
  64114. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64115. >Generated Book code</L.LABEL
  64116. ><BI.BODY.INTRO>Following is an excerpt from the code generated for the Book class shown above. Notice the following:</BI.BODY.INTRO
  64117. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64118. ></RBW-AUTOGEN
  64119. ></RBW-MARKER
  64120. ><RBW-PARABODY>The get method retrieves the owner of the Book.</RBW-PARABODY
  64121. ></LB.LIST.BULLET
  64122. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64123. ></RBW-AUTOGEN
  64124. ></RBW-MARKER
  64125. ><RBW-PARABODY>No add or remove methods are generated. The association is created, updated, and deleted from the Customer class.</RBW-PARABODY
  64126. ></LB.LIST.BULLET
  64127. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64128. ></RBW-AUTOGEN
  64129. ></RBW-MARKER
  64130. ><RBW-PARABODY>The association attribute, Book.ownerRef, is public rather than private. See <RBW-XREF REFID="30500" TYPE="XREF-TEXTCOPY">Visibility of an association attribute</RBW-XREF
  64131. >.</RBW-PARABODY
  64132. ></LB.LIST.BULLET
  64133. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64134. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64135. ><EWM.EXAMPLEW.MONO>  Book = class</EWM.EXAMPLEW.MONO
  64136. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  64137. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  64138. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64139. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  64140. ><EWM.EXAMPLEW.MONO>    ownerRef: Pointer;</EWM.EXAMPLEW.MONO
  64141. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64142. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  64143. ><EWM.EXAMPLEW.MONO>    function getOwner: Pointer;</EWM.EXAMPLEW.MONO
  64144. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64145. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64146. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64147. ><EWM.EXAMPLEW.MONO>function Book.getOwner: Pointer;</EWM.EXAMPLEW.MONO
  64148. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64149. ><EWM.EXAMPLEW.MONO>  getOwner := ownerRef;</EWM.EXAMPLEW.MONO
  64150. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64151. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64152. ></LABEL
  64153. ></SUBSECTION
  64154. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18809"></RBW-ANCHOR
  64155. >Mapping Association Classes</SS.SUBSEC.HEAD
  64156. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64157. ><RBW-ANCHOR ID="33544"></RBW-ANCHOR
  64158. >Classes on associations</L.LABEL
  64159. ><B.BODY>You can specify information about an association by linking a class to the association, as shown in the following diagram:</B.BODY
  64160. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00588.unk" origfile="pics/assclnk.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64161. ></FA.FIGURE.ANCHOR
  64162. ></LABEL
  64163. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64164. ><RBW-ANCHOR ID="19936"></RBW-ANCHOR
  64165. >Association mapped as two associations</L.LABEL
  64166. ><B.BODY>During code generation, an association with an association class is transformed (internally only, the model is not changed). The generated code is then based on the transformed association. The transformation replaces the original association with associations from the association class to the two other classes.</B.BODY
  64167. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00589.unk" origfile="pics/assccnv.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64168. ></FA.FIGURE.ANCHOR
  64169. ></LABEL
  64170. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64171. >Role names are required</L.LABEL
  64172. ><B.BODY>As with all associations, role names are required. If a role name is omitted, the association attributes and methods that would map to that role name are not generated.</B.BODY
  64173. ></LABEL
  64174. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64175. >OMT notation and link attributes</L.LABEL
  64176. ><B.BODY>If you are using OMT notation, you can use either an association class or link attributes. The code generated for a link attribute is similar to that generated for an association class.</B.BODY
  64177. ><B.BODY>When ObjectTeam transforms a link attribute association, it creates a new class for the link attributes. The name of the new class is the name of the association. Therefore, an association that has a link attribute must have an association name.</B.BODY
  64178. ></LABEL
  64179. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64180. >Generated Purchase code</L.LABEL
  64181. ><BI.BODY.INTRO>Following is the code generated for the Purchase class. The code reflects the transformed CD (<RBW-XREF REFID="19936" TYPE="XREF-TEXTCOPY">Association mapped as two associations</RBW-XREF
  64182. >).</BI.BODY.INTRO
  64183. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64184. ></RBW-AUTOGEN
  64185. ></RBW-MARKER
  64186. ><RBW-PARABODY>The Purchase class constructor creates the two mandatory associations: Purchase&truehy;to&truehy;Customer and Purchase&truehy;to&truehy;Book. Because the associations are bidirectional, it also creates the complementary associations: Customer&truehy;to&truehy;Purchase and Book&truehy;to&truehy;Purchase.</RBW-PARABODY
  64187. ></LB.LIST.BULLET
  64188. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64189. ></RBW-AUTOGEN
  64190. ></RBW-MARKER
  64191. ><RBW-PARABODY>The Purchase class destructor removes the Customer&truehy;to&truehy;Purchase and Book&truehy;to&truehy;Purchase associations.</RBW-PARABODY
  64192. ></LB.LIST.BULLET
  64193. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64194. ></RBW-AUTOGEN
  64195. ></RBW-MARKER
  64196. ><RBW-PARABODY>Two get methods retrieve the associated Customer and associated Book.</RBW-PARABODY
  64197. ></LB.LIST.BULLET
  64198. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64199. ></RBW-AUTOGEN
  64200. ></RBW-MARKER
  64201. ><RBW-PARABODY>Two set methods update the two mandatory associations: Purchase&truehy;to&truehy;Customer and Purchase&truehy;to&truehy;Book. Because the associations are bidirectional, they also update the complementary associations: Customer&truehy;to&truehy;Purchase and Book&truehy;to&truehy;Purchase.</RBW-PARABODY
  64202. ></LB.LIST.BULLET
  64203. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64204. ></RBW-AUTOGEN
  64205. ></RBW-MARKER
  64206. ><RBW-PARABODY>The associations are mandatory. They cannot be removed. Therefore, no remove methods are generated.</RBW-PARABODY
  64207. ></LB.LIST.BULLET
  64208. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64209. ></RBW-AUTOGEN
  64210. ></RBW-MARKER
  64211. ><RBW-PARABODY>The association attributes, ownerRef and possessionRef, are public rather than private. See <RBW-XREF REFID="30500" TYPE="XREF-TEXTCOPY">Visibility of an association attribute</RBW-XREF
  64212. >.</RBW-PARABODY
  64213. ></LB.LIST.BULLET
  64214. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64215. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64216. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  64217. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  64218. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64219. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  64220. ><EWM.EXAMPLEW.MONO>    ownerRef: Pointer;</EWM.EXAMPLEW.MONO
  64221. ><EWM.EXAMPLEW.MONO>    possessionRef: Pointer;</EWM.EXAMPLEW.MONO
  64222. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64223. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  64224. ><EWM.EXAMPLEW.MONO>    function getPossession: Pointer;</EWM.EXAMPLEW.MONO
  64225. ><EWM.EXAMPLEW.MONO>    procedure setPossession(newBook: Pointer);</EWM.EXAMPLEW.MONO
  64226. ><EWM.EXAMPLEW.MONO>    procedure setOwner(newCustomer: Pointer);</EWM.EXAMPLEW.MONO
  64227. ><EWM.EXAMPLEW.MONO>    function getOwner: Pointer;</EWM.EXAMPLEW.MONO
  64228. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64229. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64230. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64231. ><EWM.EXAMPLEW.MONO>constructor Purchase.Create(newowner: Customer; newpossession: Book);</EWM.EXAMPLEW.MONO
  64232. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64233. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64234. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64235. ><EWM.EXAMPLEW.MONO>  if (newowner <> NIL) then</EWM.EXAMPLEW.MONO
  64236. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64237. ><EWM.EXAMPLEW.MONO>    ownerRef := newowner;</EWM.EXAMPLEW.MONO
  64238. ><EWM.EXAMPLEW.MONO>    Customer(ownerRef).purchaseofpossessionSet.Add(SELF);</EWM.EXAMPLEW.MONO
  64239. ><EWM.EXAMPLEW.MONO>  end</EWM.EXAMPLEW.MONO
  64240. ><EWM.EXAMPLEW.MONO>  else</EWM.EXAMPLEW.MONO
  64241. ><EWM.EXAMPLEW.MONO>    raise EInvalidOp.Create('Object newowner has mandatory relation. NIL object reference not allowed.');</EWM.EXAMPLEW.MONO
  64242. ><EWM.EXAMPLEW.MONO>  if (newpossession <> NIL) then</EWM.EXAMPLEW.MONO
  64243. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64244. ><EWM.EXAMPLEW.MONO>    possessionRef := newpossession;</EWM.EXAMPLEW.MONO
  64245. ><EWM.EXAMPLEW.MONO>    Book(possessionRef).purchaseofownerRef := SELF;</EWM.EXAMPLEW.MONO
  64246. ><EWM.EXAMPLEW.MONO>  end</EWM.EXAMPLEW.MONO
  64247. ><EWM.EXAMPLEW.MONO>  else</EWM.EXAMPLEW.MONO
  64248. ><EWM.EXAMPLEW.MONO>    raise EInvalidOp.Create('Object newpossession has mandatory relation. NIL object reference not allowed.');</EWM.EXAMPLEW.MONO
  64249. ><EWM.EXAMPLEW.MONO>  inherited Create;</EWM.EXAMPLEW.MONO
  64250. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64251. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64252. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64253. ><EWM.EXAMPLEW.MONO>destructor Purchase.Destroy;</EWM.EXAMPLEW.MONO
  64254. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64255. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64256. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64257. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64258. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64259. ><EWM.EXAMPLEW.MONO>  Customer(ownerRef).purchaseofpossessionSet.Remove(SELF);</EWM.EXAMPLEW.MONO
  64260. ><EWM.EXAMPLEW.MONO>  Book(possessionRef).purchaseofownerRef := NIL;</EWM.EXAMPLEW.MONO
  64261. ><EWM.EXAMPLEW.MONO>  inherited Destroy;</EWM.EXAMPLEW.MONO
  64262. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64263. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64264. ><EWM.EXAMPLEW.MONO>function Purchase.getPossession: Pointer;</EWM.EXAMPLEW.MONO
  64265. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64266. ><EWM.EXAMPLEW.MONO>  getPossession := possessionRef;</EWM.EXAMPLEW.MONO
  64267. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64268. ><EWM.EXAMPLEW.MONO>procedure Purchase.setPossession(newBook: Pointer);</EWM.EXAMPLEW.MONO
  64269. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64270. ><EWM.EXAMPLEW.MONO>  if (newBook <> NIL) then</EWM.EXAMPLEW.MONO
  64271. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64272. ><EWM.EXAMPLEW.MONO>    if (Book(newBook).getPurchaseofowner = NIL) then</EWM.EXAMPLEW.MONO
  64273. ><EWM.EXAMPLEW.MONO>    begin</EWM.EXAMPLEW.MONO
  64274. ><EWM.EXAMPLEW.MONO>      Book(possessionRef).purchaseofownerRef := NIL;</EWM.EXAMPLEW.MONO
  64275. ><EWM.EXAMPLEW.MONO>      possessionRef := newBook;</EWM.EXAMPLEW.MONO
  64276. ><EWM.EXAMPLEW.MONO>      Book(newBook).purchaseofownerRef := SELF;</EWM.EXAMPLEW.MONO
  64277. ><EWM.EXAMPLEW.MONO>    end;</EWM.EXAMPLEW.MONO
  64278. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  64279. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64280. ><EWM.EXAMPLEW.MONO>procedure Purchase.setOwner(newCustomer: Pointer);</EWM.EXAMPLEW.MONO
  64281. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64282. ><EWM.EXAMPLEW.MONO>  if (newCustomer <> NIL) then</EWM.EXAMPLEW.MONO
  64283. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64284. ><EWM.EXAMPLEW.MONO>    if (newCustomer <> ownerRef) then</EWM.EXAMPLEW.MONO
  64285. ><EWM.EXAMPLEW.MONO>    begin</EWM.EXAMPLEW.MONO
  64286. ><EWM.EXAMPLEW.MONO>      if (ownerRef <> NIL) then</EWM.EXAMPLEW.MONO
  64287. ><EWM.EXAMPLEW.MONO>      begin</EWM.EXAMPLEW.MONO
  64288. ><EWM.EXAMPLEW.MONO>        Customer(ownerRef).purchaseofpossessionSet.Remove(SELF);</EWM.EXAMPLEW.MONO
  64289. ><EWM.EXAMPLEW.MONO>      end;</EWM.EXAMPLEW.MONO
  64290. ><EWM.EXAMPLEW.MONO>      ownerRef := newCustomer;</EWM.EXAMPLEW.MONO
  64291. ><EWM.EXAMPLEW.MONO>      Customer(newCustomer).addPurchaseofpossession(SELF);</EWM.EXAMPLEW.MONO
  64292. ><EWM.EXAMPLEW.MONO>    end;</EWM.EXAMPLEW.MONO
  64293. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  64294. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64295. ><EWM.EXAMPLEW.MONO>function Purchase.getOwner: Pointer;</EWM.EXAMPLEW.MONO
  64296. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64297. ><EWM.EXAMPLEW.MONO>  getOwner := ownerRef;</EWM.EXAMPLEW.MONO
  64298. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64299. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64300. ></LABEL
  64301. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64302. >Generated Customer code</L.LABEL
  64303. ><BI.BODY.INTRO>Following is the code generated for the Customer class. The code reflects the transformed CD (<RBW-XREF REFID="19936" TYPE="XREF-TEXTCOPY">Association mapped as two associations</RBW-XREF
  64304. >).</BI.BODY.INTRO
  64305. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64306. ></RBW-AUTOGEN
  64307. ></RBW-MARKER
  64308. ><RBW-PARABODY>The Customer class constructor creates the TList object that is the association attribute for the many association: Customer&truehy;to&truehy;Purchase. </RBW-PARABODY
  64309. ></LB.LIST.BULLET
  64310. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64311. ></RBW-AUTOGEN
  64312. ></RBW-MARKER
  64313. ><RBW-PARABODY>The Customer class destructor destroys the TList object. Because of the mandatory relationship from Purchase to Customer, the Customer class destructor raises an error if a Purchase has an association with this Customer.</RBW-PARABODY
  64314. ></LB.LIST.BULLET
  64315. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64316. ></RBW-AUTOGEN
  64317. ></RBW-MARKER
  64318. ><RBW-PARABODY>The get method retrieves the set of associated Purchases.</RBW-PARABODY
  64319. ></LB.LIST.BULLET
  64320. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64321. ></RBW-AUTOGEN
  64322. ></RBW-MARKER
  64323. ><RBW-PARABODY>The add method adds a Purchase to the set of associated Purchases. Because this is a bidirectional association, it also sets the complementary association: Purchase&truehy;to&truehy;Customer.</RBW-PARABODY
  64324. ></LB.LIST.BULLET
  64325. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64326. ></RBW-AUTOGEN
  64327. ></RBW-MARKER
  64328. ><RBW-PARABODY>No remove method is generated because a Purchase must have a Customer.</RBW-PARABODY
  64329. ></LB.LIST.BULLET
  64330. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64331. ></RBW-AUTOGEN
  64332. ></RBW-MARKER
  64333. ><RBW-PARABODY>The association attribute, Customer.purchaseofpossessionSet, is public rather than private. See <RBW-XREF REFID="30500" TYPE="XREF-TEXTCOPY">Visibility of an association attribute</RBW-XREF
  64334. >.</RBW-PARABODY
  64335. ></LB.LIST.BULLET
  64336. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64337. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64338. ><EWM.EXAMPLEW.MONO>  Customer = class</EWM.EXAMPLEW.MONO
  64339. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  64340. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  64341. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64342. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  64343. ><EWM.EXAMPLEW.MONO>    purchaseofpossessionSet: TList;</EWM.EXAMPLEW.MONO
  64344. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64345. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  64346. ><EWM.EXAMPLEW.MONO>    function getPurchaseofpossession: TList;</EWM.EXAMPLEW.MONO
  64347. ><EWM.EXAMPLEW.MONO>    procedure addPurchaseofpossession(newPurchase: Pointer);</EWM.EXAMPLEW.MONO
  64348. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64349. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64350. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64351. ><EWM.EXAMPLEW.MONO>constructor Customer.Create;</EWM.EXAMPLEW.MONO
  64352. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64353. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64354. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64355. ><EWM.EXAMPLEW.MONO>  inherited Create;</EWM.EXAMPLEW.MONO
  64356. ><EWM.EXAMPLEW.MONO>  purchaseofpossessionSet := TList.Create;</EWM.EXAMPLEW.MONO
  64357. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64358. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64359. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64360. ><EWM.EXAMPLEW.MONO>destructor Customer.Destroy;</EWM.EXAMPLEW.MONO
  64361. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64362. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64363. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64364. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64365. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64366. ><EWM.EXAMPLEW.MONO>  if (purchaseofpossessionSet.Count <> 0) then</EWM.EXAMPLEW.MONO
  64367. ><EWM.EXAMPLEW.MONO>    raise EInvalidOp.Create('Illegal object destruction. Mandatory relation purchaseofpossessionSet not empty.');</EWM.EXAMPLEW.MONO
  64368. ><EWM.EXAMPLEW.MONO>  purchaseofpossessionSet.Destroy;</EWM.EXAMPLEW.MONO
  64369. ><EWM.EXAMPLEW.MONO>  inherited Destroy;</EWM.EXAMPLEW.MONO
  64370. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64371. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64372. ><EWM.EXAMPLEW.MONO>function Customer.getPurchaseofpossession: TList;</EWM.EXAMPLEW.MONO
  64373. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64374. ><EWM.EXAMPLEW.MONO>  getPurchaseofpossession := purchaseofpossessionSet;</EWM.EXAMPLEW.MONO
  64375. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64376. ><EWM.EXAMPLEW.MONO>procedure Customer.addPurchaseofpossession(newPurchase: Pointer);</EWM.EXAMPLEW.MONO
  64377. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64378. ><EWM.EXAMPLEW.MONO>  if (purchaseofpossessionSet.IndexOf(newPurchase) = &truehy;1) then</EWM.EXAMPLEW.MONO
  64379. ><EWM.EXAMPLEW.MONO>  begin</EWM.EXAMPLEW.MONO
  64380. ><EWM.EXAMPLEW.MONO>    purchaseofpossessionSet.Add(newPurchase);</EWM.EXAMPLEW.MONO
  64381. ><EWM.EXAMPLEW.MONO>    Purchase(newPurchase).setOwner(SELF);</EWM.EXAMPLEW.MONO
  64382. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  64383. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64384. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64385. ></LABEL
  64386. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64387. >Generated Book code</L.LABEL
  64388. ><BI.BODY.INTRO>Following is the code generated for the Book class. The code reflects the transformed CD (<RBW-XREF REFID="19936" TYPE="XREF-TEXTCOPY">Association mapped as two associations</RBW-XREF
  64389. >).</BI.BODY.INTRO
  64390. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64391. ></RBW-AUTOGEN
  64392. ></RBW-MARKER
  64393. ><RBW-PARABODY>Because of the mandatory relationship from Purchase to Book, the Book class destructor raises an error if a Purchase has an association with this Book.</RBW-PARABODY
  64394. ></LB.LIST.BULLET
  64395. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64396. ></RBW-AUTOGEN
  64397. ></RBW-MARKER
  64398. ><RBW-PARABODY>The get method retrieves the associated Purchase.</RBW-PARABODY
  64399. ></LB.LIST.BULLET
  64400. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64401. ></RBW-AUTOGEN
  64402. ></RBW-MARKER
  64403. ><RBW-PARABODY>No remove method is generated because a Purchase must have a Book.</RBW-PARABODY
  64404. ></LB.LIST.BULLET
  64405. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64406. ></RBW-AUTOGEN
  64407. ></RBW-MARKER
  64408. ><RBW-PARABODY>No set method is generated because the association is maintained by the Purchase class.</RBW-PARABODY
  64409. ></LB.LIST.BULLET
  64410. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64411. ></RBW-AUTOGEN
  64412. ></RBW-MARKER
  64413. ><RBW-PARABODY>The association attribute, Book.purchaseofownerRef, is public rather than private. See <RBW-XREF REFID="30500" TYPE="XREF-TEXTCOPY">Visibility of an association attribute</RBW-XREF
  64414. >.</RBW-PARABODY
  64415. ></LB.LIST.BULLET
  64416. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64417. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64418. ><EWM.EXAMPLEW.MONO>  Book = class</EWM.EXAMPLEW.MONO
  64419. ><EWM.EXAMPLEW.MONO>  ...</EWM.EXAMPLEW.MONO
  64420. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  64421. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64422. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  64423. ><EWM.EXAMPLEW.MONO>    purchaseofownerRef: Pointer;</EWM.EXAMPLEW.MONO
  64424. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64425. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  64426. ><EWM.EXAMPLEW.MONO>    function getPurchaseofowner: Pointer;</EWM.EXAMPLEW.MONO
  64427. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64428. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64429. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64430. ><EWM.EXAMPLEW.MONO>destructor Book.Destroy;</EWM.EXAMPLEW.MONO
  64431. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64432. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64433. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64434. ><EWM.EXAMPLEW.MONO>  // Start user section</EWM.EXAMPLEW.MONO
  64435. ><EWM.EXAMPLEW.MONO>  // End user section</EWM.EXAMPLEW.MONO
  64436. ><EWM.EXAMPLEW.MONO>  if (purchaseofownerRef <> NIL) then</EWM.EXAMPLEW.MONO
  64437. ><EWM.EXAMPLEW.MONO>    raise EInvalidOp.Create('Illegal object destruction. Object purchaseofowner with mandatory relation exists.');</EWM.EXAMPLEW.MONO
  64438. ><EWM.EXAMPLEW.MONO>  inherited Destroy;</EWM.EXAMPLEW.MONO
  64439. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64440. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64441. ><EWM.EXAMPLEW.MONO>function Book.getPurchaseofowner: Pointer;</EWM.EXAMPLEW.MONO
  64442. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64443. ><EWM.EXAMPLEW.MONO>  getPurchaseofowner := purchaseofownerRef;</EWM.EXAMPLEW.MONO
  64444. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64445. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64446. ></LABEL
  64447. ></SUBSECTION
  64448. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31507"></RBW-ANCHOR
  64449. >Specifying Association Properties</SS.SUBSEC.HEAD
  64450. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64451. >Introduction</L.LABEL
  64452. ><B.BODY>Use the properties of an association to effect the visibility and data type of the generated association attribute, and the visibility of the generated association methods.</B.BODY
  64453. ></LABEL
  64454. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64455. >How to edit association attribute properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for association"></RBW-IDXTERM
  64456. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  64457. ><RBW-IDXTERM TERM1="association attribute property" TERM2="editing"></RBW-IDXTERM
  64458. ></L.LABEL
  64459. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  64460. ></RBW-AUTOGEN
  64461. ></RBW-MARKER
  64462. ><RBW-PARABODY>To edit association properties:</RBW-PARABODY
  64463. ></P.PROCEDURE
  64464. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  64465. ></RBW-AUTOGEN
  64466. ></RBW-MARKER
  64467. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  64468. ></LN.LIST.NUM
  64469. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  64470. ></RBW-AUTOGEN
  64471. ></RBW-MARKER
  64472. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  64473. ></LN.LIST.NUM
  64474. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  64475. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  64476. ></RBW-AUTOGEN
  64477. ></RBW-MARKER
  64478. ><RBW-PARABODY>Select a role name from the list on the left side of the dialog box.</RBW-PARABODY
  64479. ></LN.LIST.NUM
  64480. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  64481. ></RBW-AUTOGEN
  64482. >For a qualified attribute, you can select either a role name or the qualifier. <RBW-XREF REFID="24359" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations</RBW-XREF
  64483. > describes the qualifier properties.</N2.NOTE.2
  64484. ><LR.LIST.RESULT>The association properties appear on the right side of the dialog box.</LR.LIST.RESULT
  64485. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00590.unk" origfile="pics/asscprop.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64486. ></FA2.FIGURE.ANCHOR.2
  64487. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  64488. ></RBW-AUTOGEN
  64489. ></RBW-MARKER
  64490. ><RBW-PARABODY>Select the desired properties:<RBWAUTO-0025></RBWAUTO-0025
  64491. ></RBW-PARABODY
  64492. ></LN.LIST.NUM
  64493. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="63p"><COLSPEC COLNAME="3" COLWIDTH="180p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  64494. ></ENTRY
  64495. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  64496. ></ENTRY
  64497. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  64498. ></ENTRY
  64499. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  64500. ></ENTRY
  64501. ></RBW-ROW
  64502. ></THEAD
  64503. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Access</CELLBODY
  64504. ></ENTRY
  64505. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  64506. ></ENTRY
  64507. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies attribute visibility (public, private, protected, published).</CELLBODY
  64508. ></ENTRY
  64509. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="30500" TYPE="XREF-TEXTCOPY">Visibility of an association attribute</RBW-XREF
  64510. ></CELLBODY
  64511. ></ENTRY
  64512. ></RBW-ROW
  64513. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access Method</CELLBODY
  64514. ></ENTRY
  64515. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  64516. ></ENTRY
  64517. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies visibility of the association methods (public, private, protected, published).</CELLBODY
  64518. ></ENTRY
  64519. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="11796" TYPE="XREF-TEXTCOPY">Visibility of association methods</RBW-XREF
  64520. ></CELLBODY
  64521. ></ENTRY
  64522. ></RBW-ROW
  64523. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Implementation</CELLBODY
  64524. ></ENTRY
  64525. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  64526. ></ENTRY
  64527. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the data type of the association attribute (pointer, object reference). Ignored for qualified associations and associations with multiplicity of many.</CELLBODY
  64528. ></ENTRY
  64529. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="33250" TYPE="XREF-TEXTCOPY">Data type of an association attribute</RBW-XREF
  64530. ></CELLBODY
  64531. ></ENTRY
  64532. ></RBW-ROW
  64533. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  64534. ></ENTRY
  64535. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  64536. ></ENTRY
  64537. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Comment that does not appear in the generated code.</CELLBODY
  64538. ></ENTRY
  64539. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  64540. ></ENTRY
  64541. ></RBW-ROW
  64542. ></TBODY
  64543. ></TGROUP
  64544. ><RBW-ICONIZE></RBW-TABLE
  64545. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  64546. ></RBW-AUTOGEN
  64547. ></RBW-MARKER
  64548. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  64549. ></LN.LIST.NUM
  64550. ></LABEL
  64551. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64552. ><RBW-ANCHOR ID="30500"></RBW-ANCHOR
  64553. >Visibility of an association attribute</L.LABEL
  64554. ><B.BODY>By default, the code generator creates private association attributes. You can use the Association Access property to change the visibility of an association attribute. Changing the visibility of an association attribute is similar to changing the visibility of an attribute. See <RBW-XREF REFID="40016" TYPE="XREF-TEXTCOPY">Specifying Visibility of a Variable</RBW-XREF
  64555. >.</B.BODY
  64556. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64557. >Public association attributes</SL.SUBLABEL
  64558. ><B.BODY>In the following cases, the code generator ignores the Association Access property and creates public association attributes:</B.BODY
  64559. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64560. ></RBW-AUTOGEN
  64561. ></RBW-MARKER
  64562. ><RBW-PARABODY>Mandatory (exactly one) associations</RBW-PARABODY
  64563. ></LB.LIST.BULLET
  64564. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64565. ></RBW-AUTOGEN
  64566. ></RBW-MARKER
  64567. ><RBW-PARABODY>Qualified associations</RBW-PARABODY
  64568. ></LB.LIST.BULLET
  64569. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64570. ></RBW-AUTOGEN
  64571. ></RBW-MARKER
  64572. ><RBW-PARABODY>Class associations</RBW-PARABODY
  64573. ></LB.LIST.BULLET
  64574. ><B.BODY>In these cases, the current class does not include all the association methods; instead, the associated class updates the association attribute. The association attribute is public so that the associated class can update it.</B.BODY
  64575. ></LABEL
  64576. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64577. ><RBW-ANCHOR ID="11796"></RBW-ANCHOR
  64578. >Visibility of association methods</L.LABEL
  64579. ><B.BODY>By default, the code generator creates public association methods. You can use the Access Methods group box to specify the visibility of the generated methods and to prevent association methods from being generated. Changing the visibility of association methods is similar to changing the visibility of the access methods for an attribute. See <RBW-XREF REFID="16861" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Variables</RBW-XREF
  64580. >.</B.BODY
  64581. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64582. >Public association methods</SL.SUBLABEL
  64583. ><B.BODY>The association methods for bidirectional associations must be public. Therefore, for bidirectional associations, the code generator ignores the Access Methods group box and creates publc association methods.</B.BODY
  64584. ></LABEL
  64585. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64586. ><RBW-ANCHOR ID="33250"></RBW-ANCHOR
  64587. >Data type of an association attribute</L.LABEL
  64588. ><B.BODY>For an association that has a maximum multiplicity of one, you can generate the association attribute as a Pointer (default) or as an instance of the associated class. Use the Association Implementation property to select the data type that you want to use.</B.BODY
  64589. ><B.BODY>For an association with a multiplicity of many, the generated association attribute is a TList object (see <RBW-XREF REFID="39817" TYPE="XREF-TEXTCOPY">Mapping Associations Based on Multiplicity</RBW-XREF
  64590. >). The Association Implementation property of the association is ignored.</B.BODY
  64591. ><B.BODY>For a qualified association, the generated association attribute is a ClassDict object (see <RBW-XREF REFID="24359" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations</RBW-XREF
  64592. >). The Association Implementation property of the association is ignored.</B.BODY
  64593. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64594. >Example</SL.SUBLABEL
  64595. ><B.BODY>In the following example, the <RBWAUTO-0026>Association Implementation property</RBWAUTO-0026
  64596. > of the association is set to Object Reference. In code generated for the Customer class, the <RBWAUTO-0026>association attribute is a Book</RBWAUTO-0026
  64597. >. <RBWAUTO-0026><RBW-XREF REFID="19832" TYPE="XREF-TEXTCOPY">Zero or one</RBW-XREF
  64598. > shows the same example with the Association Implementation property</RBWAUTO-0026
  64599. > of the association set to Pointer (the default).</B.BODY
  64600. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00591.unk" origfile="pics/asscuni.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64601. ></FA.FIGURE.ANCHOR
  64602. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64603. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64604. ><EWM.EXAMPLEW.MONO>  Customer = class</EWM.EXAMPLEW.MONO
  64605. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  64606. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64607. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  64608. ><EWM.EXAMPLEW.MONO>    possessionRef: Book;</EWM.EXAMPLEW.MONO
  64609. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64610. ><EWM.EXAMPLEW.MONO>  public</EWM.EXAMPLEW.MONO
  64611. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64612. ><EWM.EXAMPLEW.MONO>    // Association methods</EWM.EXAMPLEW.MONO
  64613. ><EWM.EXAMPLEW.MONO>    function getPossession: Book;</EWM.EXAMPLEW.MONO
  64614. ><EWM.EXAMPLEW.MONO>    procedure setPossession(newBook: Book);</EWM.EXAMPLEW.MONO
  64615. ><EWM.EXAMPLEW.MONO>    procedure removePossession;</EWM.EXAMPLEW.MONO
  64616. ><EWM.EXAMPLEW.MONO>    ...</EWM.EXAMPLEW.MONO
  64617. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64618. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64619. ><EWM.EXAMPLEW.MONO>function Customer.getPossession: Book;</EWM.EXAMPLEW.MONO
  64620. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64621. ><EWM.EXAMPLEW.MONO>  getPossession := possessionRef;</EWM.EXAMPLEW.MONO
  64622. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64623. ><EWM.EXAMPLEW.MONO>procedure Customer.setPossession(newBook: Book);</EWM.EXAMPLEW.MONO
  64624. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64625. ><EWM.EXAMPLEW.MONO>  possessionRef := newBook;</EWM.EXAMPLEW.MONO
  64626. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64627. ><EWM.EXAMPLEW.MONO>procedure Customer.removePossession;</EWM.EXAMPLEW.MONO
  64628. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  64629. ><EWM.EXAMPLEW.MONO>  possessionRef := NIL;</EWM.EXAMPLEW.MONO
  64630. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64631. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64632. ></LABEL
  64633. ></SUBSECTION
  64634. ></SECTION
  64635. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="31687"></RBW-ANCHOR
  64636. >Mapping Special Classes</S.SECTION.HEAD
  64637. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64638. >Special classes</L.LABEL
  64639. ><B.BODY>Use special classes to generate type declarations for records, enumerated types, sets, pointers, and file pointers.</B.BODY
  64640. ></LABEL
  64641. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64642. >Generated unit file</L.LABEL
  64643. ><B.BODY>The generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  64644. >) file for a special class contains only a type declaration.</B.BODY
  64645. ></LABEL
  64646. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64647. >In this section</L.LABEL
  64648. ><B.BODY>This section contains the following topics:</B.BODY
  64649. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  64650. ></ENTRY
  64651. ></RBW-ROW
  64652. ></THEAD
  64653. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36406" TYPE="XREF-TEXTCOPY">Records&rbwtab;3–66</RBW-XREF
  64654. ></SB.SECTION.BLOCK.TABLE
  64655. ></ENTRY
  64656. ></RBW-ROW
  64657. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34171" TYPE="XREF-TEXTCOPY">Enumerated Types&rbwtab;3–68</RBW-XREF
  64658. ></SB.SECTION.BLOCK.TABLE
  64659. ></ENTRY
  64660. ></RBW-ROW
  64661. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20611" TYPE="XREF-TEXTCOPY">Sets&rbwtab;3–70</RBW-XREF
  64662. ></SB.SECTION.BLOCK.TABLE
  64663. ></ENTRY
  64664. ></RBW-ROW
  64665. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20063" TYPE="XREF-TEXTCOPY">Pointers&rbwtab;3–72</RBW-XREF
  64666. ></SB.SECTION.BLOCK.TABLE
  64667. ></ENTRY
  64668. ></RBW-ROW
  64669. ></TBODY
  64670. ></TGROUP
  64671. ></RBW-TABLE
  64672. ></LABEL
  64673. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36406"></RBW-ANCHOR
  64674. >Records</SS.SUBSEC.HEAD
  64675. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64676. >How to model a record</L.LABEL
  64677. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  64678. ></RBW-AUTOGEN
  64679. ></RBW-MARKER
  64680. ><RBW-PARABODY>To generate a record, in ObjectTeam:</RBW-PARABODY
  64681. ></P.PROCEDURE
  64682. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  64683. ></RBW-AUTOGEN
  64684. ></RBW-MARKER
  64685. ><RBW-PARABODY>Create an ObjectTeam class. The name of the class is the record name.</RBW-PARABODY
  64686. ></LN.LIST.NUM
  64687. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  64688. ></RBW-AUTOGEN
  64689. ></RBW-MARKER
  64690. ><RBW-PARABODY>Set the Class Type property to Record.</RBW-PARABODY
  64691. ></LN.LIST.NUM
  64692. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  64693. ></RBW-AUTOGEN
  64694. ></RBW-MARKER
  64695. ><RBW-PARABODY>Create an attribute to represent each field in the record.</RBW-PARABODY
  64696. ></LN.LIST.NUM
  64697. ><B.BODY>The class cannot have operations, associations, superclasses, or subclasses.</B.BODY
  64698. ></LABEL
  64699. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64700. >Example</L.LABEL
  64701. ><B.BODY>The following illustration shows the customerRecord class. The Class Type property is set to Record. The generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  64702. >) file follows the illustration.</B.BODY
  64703. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00592.unk" origfile="pics/cdrec.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64704. ></FA.FIGURE.ANCHOR
  64705. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64706. ><EWM.EXAMPLEW.MONO>unit customerRecordUnit;</EWM.EXAMPLEW.MONO
  64707. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  64708. ><EWM.EXAMPLEW.MONO>uses</EWM.EXAMPLEW.MONO
  64709. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  64710. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  64711. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64712. ><EWM.EXAMPLEW.MONO>  customerRecord = record</EWM.EXAMPLEW.MONO
  64713. ><EWM.EXAMPLEW.MONO>    name: String;</EWM.EXAMPLEW.MONO
  64714. ><EWM.EXAMPLEW.MONO>    address: String;</EWM.EXAMPLEW.MONO
  64715. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  64716. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64717. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  64718. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  64719. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; regeneration marker</EWM.EXAMPLEW.MONO
  64720. ><EWM.EXAMPLEW.MONO>end.</EWM.EXAMPLEW.MONO
  64721. ></LABEL
  64722. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64723. >Using the generated record</L.LABEL
  64724. ><B.BODY>Typically, you use a generated record by creating a variable of that record type. The code generator automatically adds the unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  64725. >) file for the record type declaration to the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  64726. > clause of the referencing unit.</B.BODY
  64727. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64728. >Example</SL.SUBLABEL
  64729. ><B.BODY>The following illustration shows a class that defines a customerRecord variable. An excerpt of the generated code follows the illustration.</B.BODY
  64730. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00593.unk" origfile="pics/cdrecu.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64731. ></FA.FIGURE.ANCHOR
  64732. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64733. ><EWM.EXAMPLEW.MONO>unit accountUnit;</EWM.EXAMPLEW.MONO
  64734. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  64735. ><EWM.EXAMPLEW.MONO>uses</EWM.EXAMPLEW.MONO
  64736. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  64737. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  64738. ><EWM.EXAMPLEW.MONO>  customerRecordUnit;</EWM.EXAMPLEW.MONO
  64739. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64740. ><EWM.EXAMPLEW.MONO>  account = class</EWM.EXAMPLEW.MONO
  64741. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  64742. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  64743. ><EWM.EXAMPLEW.MONO>    accountID: Integer;</EWM.EXAMPLEW.MONO
  64744. ><EWM.EXAMPLEW.MONO>    customer: customerRecord;</EWM.EXAMPLEW.MONO
  64745. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64746. ></LABEL
  64747. ></SUBSECTION
  64748. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34171"></RBW-ANCHOR
  64749. >Enumerated Types</SS.SUBSEC.HEAD
  64750. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64751. >Introduction</L.LABEL
  64752. ><B.BODY>Enumerated types are similar to sets.</B.BODY
  64753. ></LABEL
  64754. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64755. >How to model an enumerated type</L.LABEL
  64756. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  64757. ></RBW-AUTOGEN
  64758. ></RBW-MARKER
  64759. ><RBW-PARABODY>To generate an enumerated type:</RBW-PARABODY
  64760. ></P.PROCEDURE
  64761. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  64762. ></RBW-AUTOGEN
  64763. ></RBW-MARKER
  64764. ><RBW-PARABODY>Create an ObjectTeam class. The name of the class is the name of the enumerated type.</RBW-PARABODY
  64765. ></LN.LIST.NUM
  64766. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  64767. ></RBW-AUTOGEN
  64768. ></RBW-MARKER
  64769. ><RBW-PARABODY>For each member of the enumerated list, create a class attribute with data type enum.</RBW-PARABODY
  64770. ></LN.LIST.NUM
  64771. ><B.BODY>The class cannot have operations, associations, superclasses, or subclasses.</B.BODY
  64772. ></LABEL
  64773. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64774. >Example</L.LABEL
  64775. ><B.BODY>The following illustration shows the riskTolerance class. The generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  64776. >) file follows the illustration.</B.BODY
  64777. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00594.unk" origfile="pics/cdenum.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64778. ></FA.FIGURE.ANCHOR
  64779. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64780. ><EWM.EXAMPLEW.MONO>unit riskToleranceUnit;</EWM.EXAMPLEW.MONO
  64781. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  64782. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  64783. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  64784. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64785. ><EWM.EXAMPLEW.MONO>  riskTolerance = (high, medium, low);</EWM.EXAMPLEW.MONO
  64786. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64787. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  64788. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  64789. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; regeneration marker</EWM.EXAMPLEW.MONO
  64790. ><EWM.EXAMPLEW.MONO>end.</EWM.EXAMPLEW.MONO
  64791. ></LABEL
  64792. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64793. >Using the enumerated type</L.LABEL
  64794. ><B.BODY>Typically, you use an enumerated type by creating a variable of that type. The code generator automatically adds the unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  64795. >) file for the enumerated type to the uses clause of the referencing unit.</B.BODY
  64796. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00595.unk" origfile="pics/cdenumu.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64797. ></FA.FIGURE.ANCHOR
  64798. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64799. ><EWM.EXAMPLEW.MONO>unit accountUnit;</EWM.EXAMPLEW.MONO
  64800. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  64801. ><EWM.EXAMPLEW.MONO>uses</EWM.EXAMPLEW.MONO
  64802. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  64803. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  64804. ><EWM.EXAMPLEW.MONO>  riskToleranceUnit;</EWM.EXAMPLEW.MONO
  64805. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64806. ><EWM.EXAMPLEW.MONO>  account = class</EWM.EXAMPLEW.MONO
  64807. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  64808. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  64809. ><EWM.EXAMPLEW.MONO>    accountID: Integer;</EWM.EXAMPLEW.MONO
  64810. ><EWM.EXAMPLEW.MONO>    risk: riskTolerance;</EWM.EXAMPLEW.MONO
  64811. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64812. ><B.BODY>In the body of a procedure, you could then set the value of the risk variable as follows:</B.BODY
  64813. ><EM.EXAMPLE.MONO>risk:=high;</EM.EXAMPLE.MONO
  64814. ></LABEL
  64815. ></SUBSECTION
  64816. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20611"></RBW-ANCHOR
  64817. >Sets</SS.SUBSEC.HEAD
  64818. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64819. >Introduction</L.LABEL
  64820. ><B.BODY>Sets are similar to enumerated lists.</B.BODY
  64821. ></LABEL
  64822. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64823. >How to model a set</L.LABEL
  64824. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  64825. ></RBW-AUTOGEN
  64826. ></RBW-MARKER
  64827. ><RBW-PARABODY>To generate a set, in ObjectTeam:</RBW-PARABODY
  64828. ></P.PROCEDURE
  64829. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  64830. ></RBW-AUTOGEN
  64831. ></RBW-MARKER
  64832. ><RBW-PARABODY>Create an ObjectTeam class. The name of the class is the name of the set.</RBW-PARABODY
  64833. ></LN.LIST.NUM
  64834. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  64835. ></RBW-AUTOGEN
  64836. ></RBW-MARKER
  64837. ><RBW-PARABODY>Set the Class Type property to Set.</RBW-PARABODY
  64838. ></LN.LIST.NUM
  64839. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  64840. ></RBW-AUTOGEN
  64841. ></RBW-MARKER
  64842. ><RBW-PARABODY>For each member of the set, create a class attribute with data type enum.</RBW-PARABODY
  64843. ></LN.LIST.NUM
  64844. ><B.BODY>The class cannot have operations, associations, superclasses, or subclasses.</B.BODY
  64845. ></LABEL
  64846. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64847. >Example</L.LABEL
  64848. ><B.BODY>The following illustration shows the riskTolerance class. The Class Type property is set to Set. The generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  64849. >) file follows the illustration.</B.BODY
  64850. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00596.unk" origfile="pics/cdenum.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64851. ></FA.FIGURE.ANCHOR
  64852. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64853. ><EWM.EXAMPLEW.MONO>unit riskToleranceUnit;</EWM.EXAMPLEW.MONO
  64854. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  64855. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  64856. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  64857. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  64858. ><EWM.EXAMPLEW.MONO>  riskTolerance = set of (high, medium, low);</EWM.EXAMPLEW.MONO
  64859. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  64860. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  64861. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  64862. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; regeneration marker</EWM.EXAMPLEW.MONO
  64863. ><EWM.EXAMPLEW.MONO>end.</EWM.EXAMPLEW.MONO
  64864. ></LABEL
  64865. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64866. >Using the generated set</L.LABEL
  64867. ><B.BODY>Referencing a set is similar to referencing an enumerated type. You use a set by creating a variable of that type. The code generator automatically adds the unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  64868. >) file for the set to the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  64869. > clause of the referencing unit. See the example in <RBW-XREF REFID="34171" TYPE="XREF-TEXTCOPY">Enumerated Types</RBW-XREF
  64870. >.</B.BODY
  64871. ></LABEL
  64872. ></SUBSECTION
  64873. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20063"></RBW-ANCHOR
  64874. >Pointers</SS.SUBSEC.HEAD
  64875. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64876. >Two ways to model pointers</L.LABEL
  64877. ><B.BODY>You can model a pointer using an attribute or a class.</B.BODY
  64878. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64879. ></RBW-AUTOGEN
  64880. ></RBW-MARKER
  64881. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Attribute</CX5FX5FBULLET.EMPHASIS
  64882. >. Use an attribute to generate a pointer variable in the unit file generated for the owner class.</RBW-PARABODY
  64883. ></LB.LIST.BULLET
  64884. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  64885. ></RBW-AUTOGEN
  64886. ></RBW-MARKER
  64887. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Class</CX5FX5FBULLET.EMPHASIS
  64888. >. Use a class to generate a unit file that contains only the type declaration for the pointer.</RBW-PARABODY
  64889. ></LB.LIST.BULLET
  64890. ></LABEL
  64891. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64892. >How to model a pointer using an attribute</L.LABEL
  64893. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  64894. ></RBW-AUTOGEN
  64895. ></RBW-MARKER
  64896. ><RBW-PARABODY>To model a pointer using an attribute:</RBW-PARABODY
  64897. ></P.PROCEDURE
  64898. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  64899. ></RBW-AUTOGEN
  64900. ></RBW-MARKER
  64901. ><RBW-PARABODY>Create an attribute.</RBW-PARABODY
  64902. ></LN.LIST.NUM
  64903. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  64904. ></RBW-AUTOGEN
  64905. ></RBW-MARKER
  64906. ><RBW-PARABODY>Set the attribute’s Type Modifier property to Pointer (or File).</RBW-PARABODY
  64907. ></LN.LIST.NUM
  64908. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  64909. ></RBW-AUTOGEN
  64910. >Pointer or File are provided in a drop&truehy;down list. You can enter any other modifier by typing a value into the Type Modifier field.</N2.NOTE.2
  64911. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  64912. ></RBW-AUTOGEN
  64913. ></RBW-MARKER
  64914. ><RBW-PARABODY>Set both Attribute Access (Read and Write) fields to None. This prevents the code generator from generating the read and write access methods for the attribute.</RBW-PARABODY
  64915. ></LN.LIST.NUM
  64916. ><W2.WARNING.2><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  64917. ></RBW-AUTOGEN
  64918. >The code generator displays an error if you attempt to generate attribute access methods for a modified attribute.</W2.WARNING.2
  64919. ></LABEL
  64920. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64921. >Attribute examples</L.LABEL
  64922. ><B.BODY>The following table shows a few examples: </B.BODY
  64923. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="108p"><COLSPEC COLNAME="3" COLWIDTH="108p"><COLSPEC COLNAME="4" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Attribute</CELLHEADING
  64924. ></ENTRY
  64925. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Data Type</CELLHEADING
  64926. ></ENTRY
  64927. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>TYPE MODIFIER</CELLHEADING
  64928. ></ENTRY
  64929. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Declaration</CELLHEADING
  64930. ></ENTRY
  64931. ></RBW-ROW
  64932. ></THEAD
  64933. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ptr</CELLBODY
  64934. ></ENTRY
  64935. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Integer</CELLBODY
  64936. ></ENTRY
  64937. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pointer</CELLBODY
  64938. ></ENTRY
  64939. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>ptr: ^Integer;</CELLBODY
  64940. ></ENTRY
  64941. ></RBW-ROW
  64942. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>filePtr</CELLBODY
  64943. ></ENTRY
  64944. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Integer</CELLBODY
  64945. ></ENTRY
  64946. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>File</CELLBODY
  64947. ></ENTRY
  64948. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>filePtr: file of Integer;</CELLBODY
  64949. ></ENTRY
  64950. ></RBW-ROW
  64951. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>myAttribute</CELLBODY
  64952. ></ENTRY
  64953. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Integer</CELLBODY
  64954. ></ENTRY
  64955. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>mymodifier</CELLBODY
  64956. ></ENTRY
  64957. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>myAttribute: mymodifier;</CELLBODY
  64958. ></ENTRY
  64959. ></RBW-ROW
  64960. ></TBODY
  64961. ></TGROUP
  64962. ><RBW-ICONIZE></RBW-TABLE
  64963. ></LABEL
  64964. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64965. >How to model a pointer using a class</L.LABEL
  64966. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  64967. ></RBW-AUTOGEN
  64968. ></RBW-MARKER
  64969. ><RBW-PARABODY>To model a pointer using a class:</RBW-PARABODY
  64970. ></P.PROCEDURE
  64971. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  64972. ></RBW-AUTOGEN
  64973. ></RBW-MARKER
  64974. ><RBW-PARABODY>Create an ObjectTeam class. The name of the class does not matter.</RBW-PARABODY
  64975. ></LN.LIST.NUM
  64976. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  64977. ></RBW-AUTOGEN
  64978. ></RBW-MARKER
  64979. ><RBW-PARABODY>Create one attribute for the class.</RBW-PARABODY
  64980. ></LN.LIST.NUM
  64981. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  64982. ></RBW-AUTOGEN
  64983. ></RBW-MARKER
  64984. ><RBW-PARABODY>Set the attribute’s Type Modifier property to Pointer (or File).</RBW-PARABODY
  64985. ></LN.LIST.NUM
  64986. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  64987. ></RBW-AUTOGEN
  64988. >Pointer or File are provided in a drop&truehy;down list. You can enter any other modifier by typing a value into the Type Modifier field.</N2.NOTE.2
  64989. ><B.BODY>The class cannot have other attibutes, operations, associations, superclasses, or subclasses.</B.BODY
  64990. ></LABEL
  64991. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  64992. >Class example</L.LABEL
  64993. ><B.BODY>The following illustration shows a class that defines a pointer to a customerRecord. The Type Modifier property of the custPtr attribute is set to Pointer. The generated code follows the illustration.</B.BODY
  64994. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00597.unk" origfile="pics/cdptr.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  64995. ></FA.FIGURE.ANCHOR
  64996. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  64997. ><EWM.EXAMPLEW.MONO>unit customerPointerUnit;</EWM.EXAMPLEW.MONO
  64998. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  64999. ><EWM.EXAMPLEW.MONO>uses</EWM.EXAMPLEW.MONO
  65000. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  65001. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  65002. ><EWM.EXAMPLEW.MONO>  customerRecordUnit;</EWM.EXAMPLEW.MONO
  65003. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  65004. ><EWM.EXAMPLEW.MONO>  customerPointer = ^customerRecord;</EWM.EXAMPLEW.MONO
  65005. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  65006. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  65007. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  65008. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; regeneration marker</EWM.EXAMPLEW.MONO
  65009. ><EWM.EXAMPLEW.MONO>end.</EWM.EXAMPLEW.MONO
  65010. ></LABEL
  65011. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65012. >Using the generated pointer</L.LABEL
  65013. ><B.BODY>Typically, you use a generated pointer by creating a variable of that type. The code generator automatically adds the unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  65014. >) file for the pointer type declaration to the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  65015. > clause of the referencing unit.</B.BODY
  65016. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  65017. ></RBW-AUTOGEN
  65018. >In this example, the pointer points to a record. The unit file that defines the record (customerRecordUnit) is <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  65019. > automatically added to the <CX5FX5FPROCEDURE.NAME>uses</CX5FX5FPROCEDURE.NAME
  65020. > clause. You must add it to the user include section. In the following code excerpt, the bolded text was manually added to the generated code.</W.WARNING
  65021. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  65022. ><EWM.EXAMPLEW.MONO>unit accountUnit;</EWM.EXAMPLEW.MONO
  65023. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  65024. ><EWM.EXAMPLEW.MONO>uses</EWM.EXAMPLEW.MONO
  65025. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  65026. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>customerRecordUnit,</CX5FX5FBULLET.EMPHASIS
  65027. ></EWM.EXAMPLEW.MONO
  65028. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  65029. ><EWM.EXAMPLEW.MONO>  customerPointerUnit;</EWM.EXAMPLEW.MONO
  65030. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  65031. ><EWM.EXAMPLEW.MONO>  account = class</EWM.EXAMPLEW.MONO
  65032. ><EWM.EXAMPLEW.MONO>  private</EWM.EXAMPLEW.MONO
  65033. ><EWM.EXAMPLEW.MONO>    // User defined attributes</EWM.EXAMPLEW.MONO
  65034. ><EWM.EXAMPLEW.MONO>    accountID: Integer;</EWM.EXAMPLEW.MONO
  65035. ><EWM.EXAMPLEW.MONO>    customer: customerPointer;</EWM.EXAMPLEW.MONO
  65036. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  65037. ></LABEL
  65038. ></SUBSECTION
  65039. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34377"></RBW-ANCHOR
  65040. >Interfaces</SS.SUBSEC.HEAD
  65041. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65042. >Delphi 3.0</L.LABEL
  65043. ><B.BODY>Delphi 3.0 supports object interfaces; Delphi 2.0 does not.</B.BODY
  65044. ></LABEL
  65045. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65046. >How to model an interface</L.LABEL
  65047. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  65048. ></RBW-AUTOGEN
  65049. ></RBW-MARKER
  65050. ><RBW-PARABODY>To generate an interface, in ObjectTeam:</RBW-PARABODY
  65051. ></P.PROCEDURE
  65052. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  65053. ></RBW-AUTOGEN
  65054. ></RBW-MARKER
  65055. ><RBW-PARABODY>Create an ObjectTeam class. The name of the class is the name of the set.</RBW-PARABODY
  65056. ></LN.LIST.NUM
  65057. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  65058. ></RBW-AUTOGEN
  65059. ></RBW-MARKER
  65060. ><RBW-PARABODY>Set the Class Type property to Interface.</RBW-PARABODY
  65061. ></LN.LIST.NUM
  65062. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  65063. ></RBW-AUTOGEN
  65064. ></RBW-MARKER
  65065. ><RBW-PARABODY>Optionally, use the Interface Identifier property to specify the interface identifier.</RBW-PARABODY
  65066. ></LN.LIST.NUM
  65067. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  65068. ></RBW-AUTOGEN
  65069. ></RBW-MARKER
  65070. ><RBW-PARABODY>Create attributes and operations to represent the properties and methods of the interface. See <RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  65071. > and <RBW-XREF REFID="37299" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  65072. > for more information.</RBW-PARABODY
  65073. ></LN.LIST.NUM
  65074. ><B.BODY>The class cannot have associations, superclasses, or subclasses. All attributes of the class must represent properties.</B.BODY
  65075. ></LABEL
  65076. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65077. >Example</L.LABEL
  65078. ><B.BODY>The online help for Delphi 3 provides an example of mapping interface methods. The following illustration shows the ObjectTeam class that generates the IMalloc interface shown in that example. The properties are set as shown in the following table. The generated code follows the illustration.</B.BODY
  65079. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="144p"><COLSPEC COLNAME="3" COLWIDTH="198p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  65080. ></ENTRY
  65081. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  65082. ></ENTRY
  65083. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Value</CELLHEADING
  65084. ></ENTRY
  65085. ></RBW-ROW
  65086. ></THEAD
  65087. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>IMalloc</CELLBODY
  65088. ></ENTRY
  65089. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Type</CELLBODY
  65090. ></ENTRY
  65091. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface</CELLBODY
  65092. ></ENTRY
  65093. ></RBW-ROW
  65094. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  65095. ></ENTRY
  65096. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface Identifier</CELLBODY
  65097. ></ENTRY
  65098. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>00000002&truehy;...&truehy;000000000046</CELLBODY
  65099. ></ENTRY
  65100. ></RBW-ROW
  65101. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>All operations</CELLBODY
  65102. ></ENTRY
  65103. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calling Convention</CELLBODY
  65104. ></ENTRY
  65105. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY> StdCall</CELLBODY
  65106. ></ENTRY
  65107. ></RBW-ROW
  65108. ></TBODY
  65109. ></TGROUP
  65110. ></RBW-TABLE
  65111. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00598.unk" origfile="pics/cdintf.gif" origtype="X" origdoc="../../sources/delphi/dlphgen.fm5.mif"></RBW-GRAPHIC
  65112. ></FA.FIGURE.ANCHOR
  65113. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  65114. ><EWM.EXAMPLEW.MONO>unit IMallocUnit;</EWM.EXAMPLEW.MONO
  65115. ><EWM.EXAMPLEW.MONO>interface</EWM.EXAMPLEW.MONO
  65116. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  65117. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  65118. ><EWM.EXAMPLEW.MONO>type</EWM.EXAMPLEW.MONO
  65119. ><EWM.EXAMPLEW.MONO>  IMalloc = interface</EWM.EXAMPLEW.MONO
  65120. ><EWM.EXAMPLEW.MONO>    ['{00000002&truehy;0000&truehy;0000&truehy;C000&truehy;000000000046}']</EWM.EXAMPLEW.MONO
  65121. ><EWM.EXAMPLEW.MONO>    // User defined methods</EWM.EXAMPLEW.MONO
  65122. ><EWM.EXAMPLEW.MONO>    function Alloc(Size: Integer): Pointer; stdcall;</EWM.EXAMPLEW.MONO
  65123. ><EWM.EXAMPLEW.MONO>    function DidAlloc(P: Pointer): Integer; stdcall;</EWM.EXAMPLEW.MONO
  65124. ><EWM.EXAMPLEW.MONO>    procedure Free(P: Pointer); stdcall;</EWM.EXAMPLEW.MONO
  65125. ><EWM.EXAMPLEW.MONO>    function GetSize(P: Pointer): Integer; stdcall;</EWM.EXAMPLEW.MONO
  65126. ><EWM.EXAMPLEW.MONO>    procedure HeapMinimize; stdcall;</EWM.EXAMPLEW.MONO
  65127. ><EWM.EXAMPLEW.MONO>    function Realloc(P: Pointer; Size: Integer): Pointer; stdcall;</EWM.EXAMPLEW.MONO
  65128. ><EWM.EXAMPLEW.MONO>    // Properties</EWM.EXAMPLEW.MONO
  65129. ><EWM.EXAMPLEW.MONO>  end;</EWM.EXAMPLEW.MONO
  65130. ><EWM.EXAMPLEW.MONO>implementation</EWM.EXAMPLEW.MONO
  65131. ><EWM.EXAMPLEW.MONO>  // Start user include section</EWM.EXAMPLEW.MONO
  65132. ><EWM.EXAMPLEW.MONO>  // End user include section</EWM.EXAMPLEW.MONO
  65133. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; regeneration marker</EWM.EXAMPLEW.MONO
  65134. ><EWM.EXAMPLEW.MONO>end.</EWM.EXAMPLEW.MONO
  65135. ><B.BODY></B.BODY
  65136. ><RBWAUTO-0001></RBWAUTO-0001
  65137. ><!--
  65138.  
  65139.  
  65140.  
  65141.  
  65142.  
  65143. CONVERTING SOURCE FILE ../../sources/delphi/dlphgui.fm5.mif
  65144.  
  65145.  
  65146. --><B.BODY></B.BODY
  65147. ><B.BODY></B.BODY
  65148. ><B.BODY></B.BODY
  65149. ><B.BODY></B.BODY
  65150. ><B.BODY></B.BODY
  65151. ></LABEL
  65152. ></SUBSECTION
  65153. ></SECTION
  65154. ></CHAPTER
  65155. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  65156. ></RBW-AUTOGEN
  65157. >Modeling <RBW-ANCHOR ID="20051"></RBW-ANCHOR
  65158. >Forms and Data Modules<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  65159. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Delphi</RBW-TEXTFLD
  65160. ></RBW-SYSOBJ
  65161. ></C.CHAPTER.HEAD
  65162. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65163. >Forms</L.LABEL
  65164. ><B.BODY>A Delphi form is a Delphi unit that has an associated form (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  65165. >/<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  65166. > file). Forms can contain visual and nonvisual components. A form is a subclass of the VCL class TForm.</B.BODY
  65167. ><B.BODY>This chapter describes how to model forms. It provides examples of CDs and the results produced when you generate Delphi files.</B.BODY
  65168. ></LABEL
  65169. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65170. >Data module containers</L.LABEL
  65171. ><B.BODY>A Delphi data module container is a Delphi class that has an associated data module (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  65172. >/<CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  65173. > file). Data module containers can contain only nonvisual components.<RBWAUTO-0026> </RBWAUTO-0026
  65174. >A data module container is a subclass of the VCL class TDataModule.</B.BODY
  65175. ><B.BODY>Data module containers and forms are modeled in the same way. This chapter focuses on modeling forms, but the information also applies to modeling data module containers.</B.BODY
  65176. ></LABEL
  65177. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65178. >Attributes, operations, and associations</L.LABEL
  65179. ><B.BODY>Forms and data module containers are Delphi classes. ObjectTeam classes that represent forms and data modules can, therefore, have attributes, operations, and associations. The code generated for these features is described in <RBW-XREF REFID="33269" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Classes to Units</RBW-XREF
  65180. >.</B.BODY
  65181. ><B.BODY>For simplicity, the sample classes in this chapter have no attributes, operations, or associations (except those that are used to model the form).</B.BODY
  65182. ></LABEL
  65183. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65184. >Class names</L.LABEL
  65185. ><B.BODY>Cayenne <CX5FX5FEMPHASIS>strongly</CX5FX5FEMPHASIS
  65186. > recommends that you follow the Delphi convention of beginning each class name with a capital T. This is mandatory for forms and data models.</B.BODY
  65187. ></LABEL
  65188. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65189. >Prerequisite</L.LABEL
  65190. ><B.BODY>Before you can model forms and data module containers in ObjectTeam, you must add the DelphiVCL system to the Object Design phase of your project. This system defines ObjectTeam classes that represent the most commonly used classes in Delphi’s Visual Component Library (VCL).</B.BODY
  65191. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65192. >For more information</SL.SUBLABEL
  65193. ><B.BODY>See <RBW-XREF REFID="10153" TYPE="XREF-TEXTCOPY">Configuring Your Delphi Environment</RBW-XREF
  65194. > and <RBW-XREF REFID="36394" TYPE="XREF-TEXTCOPY">Chapter 6, Editing the DelphiVCL System</RBW-XREF
  65195. >.</B.BODY
  65196. ></LABEL
  65197. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65198. >In this chapter</L.LABEL
  65199. ><B.BODY>This chapter contains the following sections:</B.BODY
  65200. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  65201. ></ENTRY
  65202. ></RBW-ROW
  65203. ></THEAD
  65204. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33022" TYPE="XREF-TEXTCOPY">Basic Modeling Technique&rbwtab;4–3</RBW-XREF
  65205. ></SB.SECTION.BLOCK.TABLE
  65206. ></ENTRY
  65207. ></RBW-ROW
  65208. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27251" TYPE="XREF-TEXTCOPY">Modeling Forms&rbwtab;4–12</RBW-XREF
  65209. ></SB.SECTION.BLOCK.TABLE
  65210. ></ENTRY
  65211. ></RBW-ROW
  65212. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42492" TYPE="XREF-TEXTCOPY">Modeling Menus&rbwtab;4–13</RBW-XREF
  65213. ></SB.SECTION.BLOCK.TABLE
  65214. ></ENTRY
  65215. ></RBW-ROW
  65216. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16545" TYPE="XREF-TEXTCOPY">Modeling Components&rbwtab;4–16</RBW-XREF
  65217. ></SB.SECTION.BLOCK.TABLE
  65218. ></ENTRY
  65219. ></RBW-ROW
  65220. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16521" TYPE="XREF-TEXTCOPY">Reusing Menus and Container Components&rbwtab;4–18</RBW-XREF
  65221. ></SB.SECTION.BLOCK.TABLE
  65222. ></ENTRY
  65223. ></RBW-ROW
  65224. ></TBODY
  65225. ></TGROUP
  65226. ></RBW-TABLE
  65227. ></LABEL
  65228. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="33022"></RBW-ANCHOR
  65229. >Basic Modeling Technique</S.SECTION.HEAD
  65230. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65231. >Introduction</L.LABEL
  65232. ><B.BODY>This section describes the basic technique for modeling forms in ObjectTeam.</B.BODY
  65233. ></LABEL
  65234. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65235. ><RBW-ANCHOR ID="27817"></RBW-ANCHOR
  65236. >Sample form</L.LABEL
  65237. ><B.BODY>The following form, a TV console, is modeled as an example:</B.BODY
  65238. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00599.unk" origfile="pics/formend.gif" origtype="X" origdoc="../../sources/delphi/dlphgui.fm5.mif"></RBW-GRAPHIC
  65239. ></FA.FIGURE.ANCHOR
  65240. ></LABEL
  65241. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65242. ><RBW-ANCHOR ID="25036"></RBW-ANCHOR
  65243. >Sample CD</L.LABEL
  65244. ><BI.BODY.INTRO>The following CD models the TV console form:</BI.BODY.INTRO
  65245. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00600.unk" origfile="pics/formcad.gif" origtype="X" origdoc="../../sources/delphi/dlphgui.fm5.mif"></RBW-GRAPHIC
  65246. ></FAR.FIGURE.ANCHOR.RIGHT
  65247. ></LABEL
  65248. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65249. >In this section</L.LABEL
  65250. ><B.BODY>This section contains the following topics:</B.BODY
  65251. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  65252. ></ENTRY
  65253. ></RBW-ROW
  65254. ></THEAD
  65255. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42715" TYPE="XREF-TEXTCOPY">Modeling the Form&rbwtab;4–5</RBW-XREF
  65256. ></SB.SECTION.BLOCK.TABLE
  65257. ></ENTRY
  65258. ></RBW-ROW
  65259. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15442" TYPE="XREF-TEXTCOPY">Adding Events&rbwtab;4–8</RBW-XREF
  65260. ></SB.SECTION.BLOCK.TABLE
  65261. ></ENTRY
  65262. ></RBW-ROW
  65263. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27196" TYPE="XREF-TEXTCOPY">Completing the Form&rbwtab;4–9</RBW-XREF
  65264. ></SB.SECTION.BLOCK.TABLE
  65265. ></ENTRY
  65266. ></RBW-ROW
  65267. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28117" TYPE="XREF-TEXTCOPY">Alternative Technique&rbwtab;4–11</RBW-XREF
  65268. ></SB.SECTION.BLOCK.TABLE
  65269. ></ENTRY
  65270. ></RBW-ROW
  65271. ></TBODY
  65272. ></TGROUP
  65273. ></RBW-TABLE
  65274. ></LABEL
  65275. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="42715"></RBW-ANCHOR
  65276. >Modeling the Form</SS.SUBSEC.HEAD
  65277. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65278. >Introduction</L.LABEL
  65279. ><B.BODY>This section describes the construction of the CD shown at the beginning of this section (see <RBW-XREF REFID="25036" TYPE="XREF-TEXTCOPY">page 4–3</RBW-XREF
  65280. >).</B.BODY
  65281. ></LABEL
  65282. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65283. >DelphiVCL classes</L.LABEL
  65284. ><B.BODY><RBW-IDXTERM TERM1="vb_gui_lib system"></RBW-IDXTERM
  65285. >The folded classes in the CD (TImage, TGroupBox, TForm, TButton, and TLabel) are defined in the DelphiVCL system. Notice that every class used to model the form is a subclass of a class defined in the DelphiVCL system.</B.BODY
  65286. ><B.BODY>You create a class to represent each component that you want to create. You specify the type of component that you want to create by making your class a subclass of the appropriate DelphiVCL class. For example:</B.BODY
  65287. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65288. ></RBW-AUTOGEN
  65289. ></RBW-MARKER
  65290. ><RBW-PARABODY>The TConsole class represents a form, therefore, it is a subclass of the TForm class.</RBW-PARABODY
  65291. ></LB.LIST.BULLET
  65292. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65293. ></RBW-AUTOGEN
  65294. ></RBW-MARKER
  65295. ><RBW-PARABODY>The TMonitor class represents an image, therefore, it is a subclass of the TImage class.</RBW-PARABODY
  65296. ></LB.LIST.BULLET
  65297. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65298. ></RBW-AUTOGEN
  65299. ></RBW-MARKER
  65300. ><RBW-PARABODY>The TControls class represents a group box, therefore, it is a subclass of the TGroupBox class.</RBW-PARABODY
  65301. ></LB.LIST.BULLET
  65302. ></LABEL
  65303. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65304. >Steps for modeling the form</L.LABEL
  65305. ><B.BODY><RBW-IDXTERM TERM1="Visual Basic" TERM2="forms, modeling"></RBW-IDXTERM
  65306. ><RBW-IDXTERM TERM1="form" TERM2="basic modeling"></RBW-IDXTERM
  65307. >The following table summarizes the steps used to create the CD:</B.BODY
  65308. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="36p"><COLSPEC COLNAME="2" COLWIDTH="414p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  65309. ></ENTRY
  65310. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  65311. ></ENTRY
  65312. ></RBW-ROW
  65313. ></THEAD
  65314. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  65315. ></ENTRY
  65316. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the TConsole class to represent the form. Also, add the TForm class and make TConsole a subclass of TForm.</CELLBODY
  65317. ></ENTRY
  65318. ></RBW-ROW
  65319. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  65320. ></ENTRY
  65321. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set the Main Form property of the TConsole class. Optionally, add attributes and operations to the TConsole class.</CELLBODY
  65322. ></ENTRY
  65323. ></RBW-ROW
  65324. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  65325. ></ENTRY
  65326. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the TControls class to represent the group box that contains the TV controls (the TV monitor and channel buttons). Also, add the TGroupBox class and make TControls a subclass of TGroupBox.</CELLBODY
  65327. ></ENTRY
  65328. ></RBW-ROW
  65329. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  65330. ></ENTRY
  65331. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the TMonitor class to represent an image component that can be used as the TV screen. Add the TImage class and make TMonitor a subclass of TImage.</CELLBODY
  65332. ></ENTRY
  65333. ></RBW-ROW
  65334. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  65335. ></ENTRY
  65336. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the TUpBtn and TDownBtn classes to represent the command buttons. Add the TButton class and make TUpBtn and TDownBtn subclasses of TButton.</CELLBODY
  65337. ></ENTRY
  65338. ></RBW-ROW
  65339. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  65340. ></ENTRY
  65341. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the TChannel, TBrand, and TTime classes to represent the labels. Add the TLabel class and make TChannel, TBrand, and TTime subclasses of TLabel.</CELLBODY
  65342. ></ENTRY
  65343. ></RBW-ROW
  65344. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  65345. ></ENTRY
  65346. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The TControls group box contains four components: TMonitor, TChannel, TUpBtn, and TDownBtn. It is an <CX5FX5FTERM>aggregation</CX5FX5FTERM
  65347. > of these components. Create the four relationships that define the aggregation. </CELLBODY
  65348. ><CELLBODY>Each relationship must have a role name. The role name will be the component name in Delphi; for example, in Delphi, ChannelLbl will be the name of the TChannel component.</CELLBODY
  65349. ></ENTRY
  65350. ></RBW-ROW
  65351. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>8</CELLBODY
  65352. ></ENTRY
  65353. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The TConsole form is an aggregation of three components: the TControls group box and the TBrand and TTime labels. Create the three relationships that define the aggregation.</CELLBODY
  65354. ></ENTRY
  65355. ></RBW-ROW
  65356. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>9</CELLBODY
  65357. ></ENTRY
  65358. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Add Click events to the TUpBtn class and TDownBtn class. See <RBW-XREF REFID="15442" TYPE="XREF-TEXTCOPY">Adding Events</RBW-XREF
  65359. > for more information.</CELLBODY
  65360. ></ENTRY
  65361. ></RBW-ROW
  65362. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>10</CELLBODY
  65363. ></ENTRY
  65364. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each class that is not defined in the DelphiVCL system, select Item | Edit properties. If the Define item button is available, select it to define the class item. See <RBW-XREF REFID="36562" TYPE="XREF-TEXTCOPY">All classes must be defined items</RBW-XREF
  65365. > for more information.</CELLBODY
  65366. ></ENTRY
  65367. ></RBW-ROW
  65368. ></TBODY
  65369. ></TGROUP
  65370. ></RBW-TABLE
  65371. ></LABEL
  65372. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65373. >Forms</L.LABEL
  65374. ><B.BODY><RBW-IDXTERM TERM1="form" TERM2="representing in ObjectTeam"></RBW-IDXTERM
  65375. >A class that represents a form is similar to a class that represents a class module. It can contain the following features:</B.BODY
  65376. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65377. ></RBW-AUTOGEN
  65378. ></RBW-MARKER
  65379. ><RBW-PARABODY>Attributes, as described in <RBW-XREF REFID="13392" TYPE="XREF-TEXTCOPY">Mapping Attributes</RBW-XREF
  65380. ></RBW-PARABODY
  65381. ></LB.LIST.BULLET
  65382. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65383. ></RBW-AUTOGEN
  65384. ></RBW-MARKER
  65385. ><RBW-PARABODY>Operations, as described in <RBW-XREF REFID="37299" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  65386. > and <RBW-XREF REFID="15442" TYPE="XREF-TEXTCOPY">Adding Events</RBW-XREF
  65387. ></RBW-PARABODY
  65388. ></LB.LIST.BULLET
  65389. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65390. ></RBW-AUTOGEN
  65391. ></RBW-MARKER
  65392. ><RBW-PARABODY>Associations to other classes that represent either forms or class modules, as described in <RBW-XREF REFID="21676" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  65393. ></RBW-PARABODY
  65394. ></LB.LIST.BULLET
  65395. ></LABEL
  65396. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65397. >Components</L.LABEL
  65398. ><B.BODY><RBW-IDXTERM TERM1="controls" TERM2="representing in ObjectTeam"></RBW-IDXTERM
  65399. >A class that represents a component is a special type of class.</B.BODY
  65400. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65401. ></RBW-AUTOGEN
  65402. ></RBW-MARKER
  65403. ><RBW-PARABODY>It must not have attributes.</RBW-PARABODY
  65404. ></LB.LIST.BULLET
  65405. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65406. ></RBW-AUTOGEN
  65407. ></RBW-MARKER
  65408. ><RBW-PARABODY>It should not have associations, other than the aggregations used to model the form. If specified, they will be ignored by the code generator (or cause errors).</RBW-PARABODY
  65409. ></LB.LIST.BULLET
  65410. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65411. ></RBW-AUTOGEN
  65412. ></RBW-MARKER
  65413. ><RBW-PARABODY>Each of its operations must represent an event, as described <RBW-XREF REFID="37299" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  65414. > and <RBW-XREF REFID="15442" TYPE="XREF-TEXTCOPY">Adding Events</RBW-XREF
  65415. >.</RBW-PARABODY
  65416. ></LB.LIST.BULLET
  65417. ></LABEL
  65418. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65419. ><RBW-ANCHOR ID="36562"></RBW-ANCHOR
  65420. >All classes must be defined items</L.LABEL
  65421. ><B.BODY>ObjectTeam generates code for class items. It does not generate code for graphical elements that do not have associated class items.</B.BODY
  65422. ><B.BODY>When you create a class, ObjectTeam creates a graphical element. When you perform one of the following actions, ObjectTeam creates a class item:</B.BODY
  65423. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65424. ></RBW-AUTOGEN
  65425. ></RBW-MARKER
  65426. ><RBW-PARABODY>Add an attribute, operation, or association to the class</RBW-PARABODY
  65427. ></LB.LIST.BULLET
  65428. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65429. ></RBW-AUTOGEN
  65430. ></RBW-MARKER
  65431. ><RBW-PARABODY>Set a property on the class</RBW-PARABODY
  65432. ></LB.LIST.BULLET
  65433. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65434. ></RBW-AUTOGEN
  65435. ></RBW-MARKER
  65436. ><RBW-PARABODY>Open the Edit Properties dialog box for the class and select the Define item button.</RBW-PARABODY
  65437. ></LB.LIST.BULLET
  65438. ></LABEL
  65439. ></SUBSECTION
  65440. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15442"></RBW-ANCHOR
  65441. >Adding Events</SS.SUBSEC.HEAD
  65442. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65443. >Events in DelphiVCL</L.LABEL
  65444. ><B.BODY>Classes in the DelphiVCL system represent the VCL classes available in Delphi. The operations and operation parameters on the DelphiVCL classes represent the events and event parameters defined in the VCL classes.</B.BODY
  65445. ></LABEL
  65446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65447. >How to model the form</L.LABEL
  65448. ><B.BODY>As described in <RBW-XREF REFID="42715" TYPE="XREF-TEXTCOPY">Modeling the Form</RBW-XREF
  65449. >, you model a form in ObjectTeam by creating a class to represent each form and component that you want to create. You specify the type of component that you want to create by making each class a subclass of the appropriate DelphiVCL class.</B.BODY
  65450. ></LABEL
  65451. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65452. >How to model events</L.LABEL
  65453. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  65454. ></RBW-AUTOGEN
  65455. ></RBW-MARKER
  65456. ><RBW-PARABODY>To model an event for a form or component, add an operation to the ObjectTeam class that represents the form or component:</RBW-PARABODY
  65457. ></P.PROCEDURE
  65458. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65459. ></RBW-AUTOGEN
  65460. ></RBW-MARKER
  65461. ><RBW-PARABODY>Specify the operation name as the event name without the On prefix. </RBW-PARABODY
  65462. ></LB.LIST.BULLET
  65463. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65464. ></RBW-AUTOGEN
  65465. ></RBW-MARKER
  65466. ><RBW-PARABODY>Specify an empty parameter list.</RBW-PARABODY
  65467. ></LB.LIST.BULLET
  65468. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65469. ></RBW-AUTOGEN
  65470. ></RBW-MARKER
  65471. ><RBW-PARABODY>Set the Event property of the operation.</RBW-PARABODY
  65472. ></LB.LIST.BULLET
  65473. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65474. >Example</SL.SUBLABEL
  65475. ><B.BODY>Use the following ObjectTeam operation to model the OnClick event. Remember to set the Event property of the operation.</B.BODY
  65476. ><EM.EXAMPLE.MONO>Click()</EM.EXAMPLE.MONO
  65477. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65478. >Event parameters</SL.SUBLABEL
  65479. ><B.BODY>Event parameters are defined on the VCL classes in the DelphiVCL system. By specifying an empty parameter list, you indicate that ObjectTeam should use the event parameters defined for the event in the DelphiVCL system. If you specify parameters, ObjectTeam uses the specified parameters rather than those defined in the DelphiVCL system.</B.BODY
  65480. ></LABEL
  65481. ></SUBSECTION
  65482. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27196"></RBW-ANCHOR
  65483. >Completing the Form</SS.SUBSEC.HEAD
  65484. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65485. >Introduction</L.LABEL
  65486. ><B.BODY>In ObjectTeam, you model the form content, not the form layout. When ObjectTeam generates a form for the first time, the form contains all the specified components, but only default property values. </B.BODY
  65487. ></LABEL
  65488. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65489. >Edit the generated form</L.LABEL
  65490. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="form" TERM2="layout information"></RBW-IDXTERM
  65491. >When you open the generated project in Delphi, the form appears with all its components stacked in the upper left corner, as shown below. To complete the form, reposition the components and specify property values for the form and component properties.</BI.BODY.INTRO
  65492. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00601.unk" origfile="pics/formini.gif" origtype="X" origdoc="../../sources/delphi/dlphgui.fm5.mif"></RBW-GRAPHIC
  65493. ></FA.FIGURE.ANCHOR
  65494. ></LABEL
  65495. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65496. >Changes are preserved</L.LABEL
  65497. ><B.BODY><RBW-IDXTERM TERM1="form" TERM2="regenerating"></RBW-IDXTERM
  65498. >When you regenerate the form, ObjectTeam preserves the changes that you made to the form in Delphi.</B.BODY
  65499. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65500. ></RBW-AUTOGEN
  65501. ></RBW-MARKER
  65502. ><RBW-PARABODY>You can change the position and size of a form or component.</RBW-PARABODY
  65503. ></LB.LIST.BULLET
  65504. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65505. ></RBW-AUTOGEN
  65506. ></RBW-MARKER
  65507. ><RBW-PARABODY>You can change the properties of a form or component.</RBW-PARABODY
  65508. ></LB.LIST.BULLET
  65509. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  65510. ></RBW-AUTOGEN
  65511. >The Name property defines the name of the form or component. This information is also stored in ObjectTeam; therefore, it is recommended that you not change the Name property.</N2.NOTE.2
  65512. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65513. ></RBW-AUTOGEN
  65514. ></RBW-MARKER
  65515. ><RBW-PARABODY>You can add components to a form; however, you must then use round&truehy;trip engineering to add the components to the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  65516. > regenerating the form.</RBW-PARABODY
  65517. ></LB.LIST.BULLET
  65518. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  65519. ></RBW-AUTOGEN
  65520. >If you delete components from a form, you must manually update the ObjectTeam module. Round&truehy;trip engineering does not delete the components for you.</N2.NOTE.2
  65521. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65522. ></RBW-AUTOGEN
  65523. ></RBW-MARKER
  65524. ><RBW-PARABODY>You can add code to the body of a generated event.</RBW-PARABODY
  65525. ></LB.LIST.BULLET
  65526. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65527. ></RBW-AUTOGEN
  65528. ></RBW-MARKER
  65529. ><RBW-PARABODY>You can add new events; however, you must then use round&truehy;trip engineering to add those events to the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  65530. > regenerating the files.</RBW-PARABODY
  65531. ></LB.LIST.BULLET
  65532. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65533. >For more information</SL.SUBLABEL
  65534. ><B.BODY>See <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  65535. > and <RBW-XREF REFID="39943" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  65536. >.</B.BODY
  65537. ></LABEL
  65538. ></SUBSECTION
  65539. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28117"></RBW-ANCHOR
  65540. >Alternative Technique</SS.SUBSEC.HEAD
  65541. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65542. >Two ways to model forms</L.LABEL
  65543. ><B.BODY>ObjectTeam provides two ways to model forms:</B.BODY
  65544. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65545. ></RBW-AUTOGEN
  65546. ></RBW-MARKER
  65547. ><RBW-PARABODY>Model the form and component</RBW-PARABODY
  65548. ></LB.LIST.BULLET
  65549. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65550. ></RBW-AUTOGEN
  65551. ></RBW-MARKER
  65552. ><RBW-PARABODY>Model the form only</RBW-PARABODY
  65553. ></LB.LIST.BULLET
  65554. ></LABEL
  65555. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65556. >Model the form and components</L.LABEL
  65557. ><B.BODY>As described in the previous sections, you can use ObjectTeam to model forms and components, then use Delphi to complete the generated form. The benefit of this approach is that, while modeling the application, you remain focused on the functions of the application rather than becoming distracted by the details of the GUI.</B.BODY
  65558. ></LABEL
  65559. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65560. >Model the form only</L.LABEL
  65561. ><B.BODY>Alternatively, you can use the following approach:</B.BODY
  65562. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  65563. ></RBW-AUTOGEN
  65564. ></RBW-MARKER
  65565. ><RBW-PARABODY>In ObjectTeam, model only the form.</RBW-PARABODY
  65566. ></LN.LIST.NUM
  65567. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  65568. ></RBW-AUTOGEN
  65569. ></RBW-MARKER
  65570. ><RBW-PARABODY>Generate the form.</RBW-PARABODY
  65571. ></LN.LIST.NUM
  65572. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  65573. ></RBW-AUTOGEN
  65574. ></RBW-MARKER
  65575. ><RBW-PARABODY>In Delphi, add the components and events.</RBW-PARABODY
  65576. ></LN.LIST.NUM
  65577. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  65578. ></RBW-AUTOGEN
  65579. ></RBW-MARKER
  65580. ><RBW-PARABODY>In ObjectTeam, use round&truehy;trip engineering to add the components and events to the ObjectTeam model.</RBW-PARABODY
  65581. ></LN.LIST.NUM
  65582. ></LABEL
  65583. ></SUBSECTION
  65584. ></SECTION
  65585. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27251"></RBW-ANCHOR
  65586. >Modeling Forms</S.SECTION.HEAD
  65587. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65588. >TForm class</L.LABEL
  65589. ><B.BODY>To model a form in ObjectTeam, create a class that represents the form and make it a subclass of the TForm class. Every window in a Delphi application is a form.</B.BODY
  65590. ></LABEL
  65591. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65592. >FormStyle property</L.LABEL
  65593. ><B.BODY>In Delphi, the FormStyle property of a form determines whether the form is a normal form, an MDI form, an MDI child, or a stay&truehy;on&truehy;top form. When ObjectTeam generates a form, it sets the FormStyle property to fsNormal. You can modify the FormStyle property in Delphi.</B.BODY
  65594. ></LABEL
  65595. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65596. >Main form</L.LABEL
  65597. ><B.BODY>A Delphi project must have a main form to execute. To specify the main form in ObjectTeam, select the Main Form class property for exactly one ObjectTeam class that represents a form. (See <RBW-XREF REFID="17659" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  65598. >.)</B.BODY
  65599. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65600. ></RBW-AUTOGEN
  65601. ></RBW-MARKER
  65602. ><RBW-PARABODY>If you do not set this property for any class, ObjectTeam selects one form as the main form for the generated project.</RBW-PARABODY
  65603. ></LB.LIST.BULLET
  65604. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65605. ></RBW-AUTOGEN
  65606. ></RBW-MARKER
  65607. ><RBW-PARABODY>If you set this property for more than one class, or for a class that does not represent a form, the code generator displays an error message.</RBW-PARABODY
  65608. ></LB.LIST.BULLET
  65609. ></LABEL
  65610. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65611. >Example</L.LABEL
  65612. ><B.BODY>See <RBW-XREF REFID="33022" TYPE="XREF-TEXTCOPY">Basic Modeling Technique</RBW-XREF
  65613. > for an example of how to model a form.</B.BODY
  65614. ></LABEL
  65615. ></SECTION
  65616. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="42492"></RBW-ANCHOR
  65617. >Modeling Menus</S.SECTION.HEAD
  65618. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65619. >TMainMenu and TMenuItem classes</L.LABEL
  65620. ><B.BODY><RBW-IDXTERM TERM1="Menu class"></RBW-IDXTERM
  65621. >To model menus in ObjectTeam, create the following classes:</B.BODY
  65622. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65623. ></RBW-AUTOGEN
  65624. ></RBW-MARKER
  65625. ><RBW-PARABODY>A subclass of TMainMenu to represent the menu.</RBW-PARABODY
  65626. ></LB.LIST.BULLET
  65627. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65628. ></RBW-AUTOGEN
  65629. ></RBW-MARKER
  65630. ><RBW-PARABODY>A subclass of TMenuItem to represent each menu item.</RBW-PARABODY
  65631. ></LB.LIST.BULLET
  65632. ><B.BODY>TMainMenu and TMenuItem are defined in the DelphiVCL system.</B.BODY
  65633. ></LABEL
  65634. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65635. >Menu structure</L.LABEL
  65636. ><B.BODY>Use aggregations to define the menu structure.</B.BODY
  65637. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65638. ></RBW-AUTOGEN
  65639. ></RBW-MARKER
  65640. ><RBW-PARABODY>Attach the main menu to a form.</RBW-PARABODY
  65641. ></LB.LIST.BULLET
  65642. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65643. ></RBW-AUTOGEN
  65644. ></RBW-MARKER
  65645. ><RBW-PARABODY>Attach to the main menu the menu items that appear on the menu bar.</RBW-PARABODY
  65646. ></LB.LIST.BULLET
  65647. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65648. ></RBW-AUTOGEN
  65649. ></RBW-MARKER
  65650. ><RBW-PARABODY>Attach to each menu item its child menu items.</RBW-PARABODY
  65651. ></LB.LIST.BULLET
  65652. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  65653. ></RBW-AUTOGEN
  65654. >The role names become the component names in Delphi.</N.NOTE
  65655. ></LABEL
  65656. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65657. >Sample menu</L.LABEL
  65658. ><B.BODY>Following is a sample menu that might be used with the TV form:</B.BODY
  65659. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00602.unk" origfile="pics/tvmnuend.gif" origtype="X" origdoc="../../sources/delphi/dlphgui.fm5.mif"></RBW-GRAPHIC
  65660. ></FA.FIGURE.ANCHOR
  65661. ></LABEL
  65662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65663. >Sample CD</L.LABEL
  65664. ><BI.BODY.INTRO>The following CD models the menu shown above:</BI.BODY.INTRO
  65665. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00603.unk" origfile="pics/tvmnucad.gif" origtype="X" origdoc="../../sources/delphi/dlphgui.fm5.mif"></RBW-GRAPHIC
  65666. ></FAR.FIGURE.ANCHOR.RIGHT
  65667. ></LABEL
  65668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65669. >Separate CD for menus</L.LABEL
  65670. ><B.BODY>For clarity, the CD shown above defines only the menu items for the form; it does not define all the other components. Modeling your menus in a separate CD, as shown here, helps keep your CDs readable and makes your model easier to maintain.</B.BODY
  65671. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65672. >TConsole class</SL.SUBLABEL
  65673. ><B.BODY>The CD shown here assumes that the TConsole class is defined in another CD (the CD shown in <RBW-XREF REFID="33022" TYPE="XREF-TEXTCOPY">Basic Modeling Technique</RBW-XREF
  65674. >). The TForm superclass is not shown in this CD because the other CD defines the TConsole class as a subclass of TForm.</B.BODY
  65675. ></LABEL
  65676. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65677. >Complete the menu in Delphi</L.LABEL
  65678. ><B.BODY>When ObjectTeam generates a menu for the first time, it uses default property values. Therefore, when you open the generated project in Delphi, the menu is not attached to the form and the menu items do not have captions.</B.BODY
  65679. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00604.unk" origfile="pics/tvmnuini.gif" origtype="X" origdoc="../../sources/delphi/dlphgui.fm5.mif"></RBW-GRAPHIC
  65680. ></FA.FIGURE.ANCHOR
  65681. ><BI.BODY.INTRO>To complete the menu, in Delphi:</BI.BODY.INTRO
  65682. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65683. ></RBW-AUTOGEN
  65684. ></RBW-MARKER
  65685. ><RBW-PARABODY>Add the main menu to the form by editing the Menu property of the form.</RBW-PARABODY
  65686. ></LB.LIST.BULLET
  65687. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65688. ></RBW-AUTOGEN
  65689. ></RBW-MARKER
  65690. ><RBW-PARABODY>Edit the Caption property of each menu item to specify the text of the menu item. You can modify other properties, if desired.</RBW-PARABODY
  65691. ></LB.LIST.BULLET
  65692. ><B.BODY>ObjectTeam preserves these changes when you regenerate the Delphi files.</B.BODY
  65693. ></LABEL
  65694. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65695. >How to use menu templates</L.LABEL
  65696. ><B.BODY>Delphi provides menu templates for commonly used menus, such as File, Edit, and so on. If you plan to use Delphi’s menu templates, model only the main menu in ObjectTeam.</B.BODY
  65697. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  65698. ></RBW-AUTOGEN
  65699. ></RBW-MARKER
  65700. ><RBW-PARABODY>If you plan to use Delphi’s menu templates:</RBW-PARABODY
  65701. ></P.PROCEDURE
  65702. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  65703. ></RBW-AUTOGEN
  65704. ></RBW-MARKER
  65705. ><RBW-PARABODY>In ObjectTeam:</RBW-PARABODY
  65706. ></LN.LIST.NUM
  65707. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  65708. ></RBW-AUTOGEN
  65709. ></RBW-MARKER
  65710. ><RBW-PARABODY>Model a main menu and use an aggregation to attach it to your form. Do not model the menu items.</RBW-PARABODY
  65711. ></LN2.LIST.NUM.2
  65712. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  65713. ></RBW-AUTOGEN
  65714. ></RBW-MARKER
  65715. ><RBW-PARABODY>Generate the Delphi code.</RBW-PARABODY
  65716. ></LN2.LIST.NUM.2
  65717. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  65718. ></RBW-AUTOGEN
  65719. ></RBW-MARKER
  65720. ><RBW-PARABODY>In Delphi:</RBW-PARABODY
  65721. ></LN.LIST.NUM
  65722. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  65723. ></RBW-AUTOGEN
  65724. ></RBW-MARKER
  65725. ><RBW-PARABODY>Open the main menu and insert the desired menu templates.</RBW-PARABODY
  65726. ></LN2.LIST.NUM.2
  65727. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  65728. ></RBW-AUTOGEN
  65729. ></RBW-MARKER
  65730. ><RBW-PARABODY>Optionally, add additional menu items.</RBW-PARABODY
  65731. ></LN2.LIST.NUM.2
  65732. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  65733. ></RBW-AUTOGEN
  65734. ></RBW-MARKER
  65735. ><RBW-PARABODY>Save the project.</RBW-PARABODY
  65736. ></LN2.LIST.NUM.2
  65737. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  65738. ></RBW-AUTOGEN
  65739. ></RBW-MARKER
  65740. ><RBW-PARABODY>In ObjectTeam:</RBW-PARABODY
  65741. ></LN.LIST.NUM
  65742. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  65743. ></RBW-AUTOGEN
  65744. ></RBW-MARKER
  65745. ><RBW-PARABODY>If necessary, create a CDM for the main menu class. (Round&truehy;trip engineering ignores classes that do not have CDMs.)</RBW-PARABODY
  65746. ></LN2.LIST.NUM.2
  65747. ><T3.TIP.3><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  65748. ></RBW-AUTOGEN
  65749. >One way to create a CDM: add an operation to the class, save the diagram, delete the operation from the class, and save the diagram again.</T3.TIP.3
  65750. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  65751. ></RBW-AUTOGEN
  65752. ></RBW-MARKER
  65753. ><RBW-PARABODY>Use round&truehy;trip engineering to add the template menu items to your ObjectTeam model.</RBW-PARABODY
  65754. ></LN2.LIST.NUM.2
  65755. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>For more information:</CX5FX5FBULLET.EMPHASIS
  65756. > See <RBW-XREF REFID="15125" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  65757. >.</LT.LIST.TEXT
  65758. ></LABEL
  65759. ></SECTION
  65760. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16545"></RBW-ANCHOR
  65761. >Modeling Components</S.SECTION.HEAD
  65762. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65763. >Definitions</L.LABEL
  65764. ><B.BODY><CX5FX5FTERM>Container components</CX5FX5FTERM
  65765. > are components that can contain other components; for example, TGroupBox and TPanel.</B.BODY
  65766. ><B.BODY><CX5FX5FEMPHASIS>Leaf components</CX5FX5FEMPHASIS
  65767. > are components that cannot contain other components; for example, TButton and TImage.</B.BODY
  65768. ></LABEL
  65769. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65770. >All components must be part of a form</L.LABEL
  65771. ><B.BODY>Every component must be part of a form. Leaf components can be part of a form, or part of a container component that is part of a form. If a component is not part of a form, no code is generated for that component.</B.BODY
  65772. ></LABEL
  65773. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65774. >How to model components</L.LABEL
  65775. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  65776. ></RBW-AUTOGEN
  65777. ></RBW-MARKER
  65778. ><RBW-PARABODY>To model a component in ObjectTeam:</RBW-PARABODY
  65779. ></P.PROCEDURE
  65780. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  65781. ></RBW-AUTOGEN
  65782. ></RBW-MARKER
  65783. ><RBW-PARABODY>Create a class to represent the component. For example, create a class to represent a group box or command button.</RBW-PARABODY
  65784. ></LN.LIST.NUM
  65785. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  65786. ></RBW-AUTOGEN
  65787. ></RBW-MARKER
  65788. ><RBW-PARABODY>Make it a subclass of the appropriate class in the DelphiVCL system. For example, make your class a subclass of TGroupBox or TButton.</RBW-PARABODY
  65789. ></LN.LIST.NUM
  65790. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  65791. ></RBW-AUTOGEN
  65792. ></RBW-MARKER
  65793. ><RBW-PARABODY>Use an aggregation to place the component on a form, or to place a leaf component in a container component. The role name becomes the name of the component in Delphi.</RBW-PARABODY
  65794. ></LN.LIST.NUM
  65795. ></LABEL
  65796. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65797. >Example</L.LABEL
  65798. ><B.BODY>See <RBW-XREF REFID="33022" TYPE="XREF-TEXTCOPY">Basic Modeling Technique</RBW-XREF
  65799. > for examples of how to model both container components and leaf components.</B.BODY
  65800. ></LABEL
  65801. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65802. >How to model new component types</L.LABEL
  65803. ><B.BODY>In the VCL, Delphi provides a rich library of component types. Delphi also allows you to create component types. New component types must be derived from existing component types.</B.BODY
  65804. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  65805. ></RBW-AUTOGEN
  65806. ></RBW-MARKER
  65807. ><RBW-PARABODY>To model a new type of component in ObjectTeam:</RBW-PARABODY
  65808. ></P.PROCEDURE
  65809. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  65810. ></RBW-AUTOGEN
  65811. ></RBW-MARKER
  65812. ><RBW-PARABODY>Create a class to represent the new component.</RBW-PARABODY
  65813. ></LN.LIST.NUM
  65814. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  65815. ></RBW-AUTOGEN
  65816. ></RBW-MARKER
  65817. ><RBW-PARABODY>Make the new component a subclass of the appropriate class in the DelphiVCL system. </RBW-PARABODY
  65818. ></LN.LIST.NUM
  65819. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  65820. ></RBW-AUTOGEN
  65821. ></RBW-MARKER
  65822. ><RBW-PARABODY>Set the Class Component Declaration class property of the new component class.</RBW-PARABODY
  65823. ></LN.LIST.NUM
  65824. ><LR.LIST.RESULT>When you generate code, ObjectTeam creates a unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  65825. >) file that defines the component.</LR.LIST.RESULT
  65826. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65827. >Using the new component type</SL.SUBLABEL
  65828. ><B.BODY>Add a component of the new type to a form in the same way you add a component of any other type. Create a class to represent the component, make it a subclass of the new component type, and use an aggregation to place the component on a form.</B.BODY
  65829. ></LABEL
  65830. ></SECTION
  65831. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16521"></RBW-ANCHOR
  65832. >Reusing Menus and Container Components</S.SECTION.HEAD
  65833. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65834. >Reuse</L.LABEL
  65835. ><B.BODY>Menus and container components modeled for one form can be reused on other forms.</B.BODY
  65836. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  65837. ></RBW-AUTOGEN
  65838. >You might want to create an ObjectTeam system that defines commonly used menus and components. Adding such a system to the Object Design phase of a project allows you to reuse the menus and components on any form in that project.</T.TIP
  65839. ></LABEL
  65840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65841. >Example of reuse</L.LABEL
  65842. ><BI.BODY.INTRO>If the TControls group box is defined in a shared system, the CD used to define the TConsole form can reuse that group box. Compare the following CD with the CD shown in <RBW-XREF REFID="33022" TYPE="XREF-TEXTCOPY">Basic Modeling Technique</RBW-XREF
  65843. >.</BI.BODY.INTRO
  65844. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00605.unk" origfile="pics/reusecad.gif" origtype="X" origdoc="../../sources/delphi/dlphgui.fm5.mif"></RBW-GRAPHIC
  65845. ></FA.FIGURE.ANCHOR
  65846. ><B.BODY></B.BODY
  65847. ><RBWAUTO-0001></RBWAUTO-0001
  65848. ><!--
  65849.  
  65850.  
  65851.  
  65852.  
  65853.  
  65854. CONVERTING SOURCE FILE ../../sources/delphi/dlpheng.fm5.mif
  65855.  
  65856.  
  65857. --><B.BODY></B.BODY
  65858. ><B.BODY></B.BODY
  65859. ><B.BODY></B.BODY
  65860. ><B.BODY></B.BODY
  65861. ><B.BODY></B.BODY
  65862. ></LABEL
  65863. ></SECTION
  65864. ></CHAPTER
  65865. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  65866. ></RBW-AUTOGEN
  65867. >Reverse <RBW-ANCHOR ID="17037"></RBW-ANCHOR
  65868. >and Round&truehy;Trip Engineering<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  65869. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Delphi</RBW-TEXTFLD
  65870. ></RBW-SYSOBJ
  65871. ></C.CHAPTER.HEAD
  65872. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65873. >Introduction</L.LABEL
  65874. ><B.BODY>This chapter describes how to use reverse engineering and round&truehy;trip engineering with the Delphi code generator.</B.BODY
  65875. ></LABEL
  65876. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65877. >Reverse engineering</L.LABEL
  65878. ><B.BODY><CX5FX5FEMPHASIS>Reverse engineering</CX5FX5FEMPHASIS
  65879. > Delphi code makes the classes, forms, data structures, and procedures visible in ObjectTeam. This facilitates your understanding of the existing code, thus giving you more opportunity for reusing the code.</B.BODY
  65880. ></LABEL
  65881. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65882. >Round&truehy;trip engineering</L.LABEL
  65883. ><B.BODY><CX5FX5FTERM>Round&truehy;trip engineering</CX5FX5FTERM
  65884. > updates the ObjectTeam model based on the changes you have made to the generated Delphi source files (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  65885. > and <CX5FX5FFILE.NAME>.txt/.dfm</CX5FX5FFILE.NAME
  65886. >). Use round&truehy;trip engineering to update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  65887. > you regenerate the source files. If you add an attribute, procedure, event, or component to the generated source file, but do not add it to the ObjectTeam model, that attribute, procedure, event, or component is lost when you regenerate the source files.</B.BODY
  65888. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65889. >Explanation</SL.SUBLABEL
  65890. ><B.BODY>The code generator generates code based on the ObjectTeam model. When you regenerate the source file, only the attributes, operations, and form components defined in the model appear in the generated source file.</B.BODY
  65891. ></LABEL
  65892. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65893. >In this chapter</L.LABEL
  65894. ><B.BODY>This chapter contains the following sections:</B.BODY
  65895. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  65896. ></ENTRY
  65897. ></RBW-ROW
  65898. ></THEAD
  65899. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21085" TYPE="XREF-TEXTCOPY">Reverse Engineering&rbwtab;5–2</RBW-XREF
  65900. ></SB.SECTION.BLOCK.TABLE
  65901. ></ENTRY
  65902. ></RBW-ROW
  65903. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15125" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering&rbwtab;5–12</RBW-XREF
  65904. ></SB.SECTION.BLOCK.TABLE
  65905. ></ENTRY
  65906. ></RBW-ROW
  65907. ></TBODY
  65908. ></TGROUP
  65909. ></RBW-TABLE
  65910. ></LABEL
  65911. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21085"></RBW-ANCHOR
  65912. >Reverse Engineering</S.SECTION.HEAD
  65913. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65914. >Introduction</L.LABEL
  65915. ><B.BODY><RBW-IDXTERM TERM1="project" TERM2="using data from other sources"></RBW-IDXTERM
  65916. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  65917. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  65918. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  65919. ><RBW-IDXTERM TERM1="class library, reverse engineering"></RBW-IDXTERM
  65920. >Reverse engineering parses Delphi unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  65921. >) files and builds CDs and CDMs that show the classes and forms defined in those files. It can be particularly useful if you have access to a class library and want to better understand its contents.</B.BODY
  65922. ></LABEL
  65923. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65924. >Purpose </L.LABEL
  65925. ><B.BODY>Use reverse engineering to capture and display the classes defined in your Delphi files. This serves two primary purposes:</B.BODY
  65926. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65927. ></RBW-AUTOGEN
  65928. ></RBW-MARKER
  65929. ><RBW-PARABODY>Makes the forms and classes available in ObjectTeam as external classes.</RBW-PARABODY
  65930. ></LB.LIST.BULLET
  65931. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65932. ></RBW-AUTOGEN
  65933. ></RBW-MARKER
  65934. ><RBW-PARABODY>Helps you to understand the structure and functionality of the forms and classes.</RBW-PARABODY
  65935. ></LB.LIST.BULLET
  65936. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65937. >Not an import utility</SL.SUBLABEL
  65938. ><B.BODY>Reverse engineering is not designed to capture all the information in a Delphi file. Therefore, do not use reverse engineering to import forms or classes <CX5FX5FEMPHASIS>in order to maintain them in ObjectTeam</CX5FX5FEMPHASIS
  65939. ><CX5FX5FEMPHASIS></CX5FX5FEMPHASIS
  65940. >. If you generate Delphi files from the CDs and CDMs created by reverse engineering, they will not match the files you used to create those CDs and CDMs.</B.BODY
  65941. ></LABEL
  65942. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65943. >Reverse engineering forms</L.LABEL
  65944. ><B.BODY>If the form (and data module) files are in <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  65945. > format, ObjectTeam reverse engineers the forms without reverse engineering their components or events. If the form and data module files are in <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  65946. > format, ObjectTeam reverse engineers the forms, their components, and their events.</B.BODY
  65947. ><B.BODY>For the clearest view of the code, reverse engineering forms (and data modules) without reverse engineering their components and events.</B.BODY
  65948. ></LABEL
  65949. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65950. >What happens during reverse engineering</L.LABEL
  65951. ><B.BODY>Reverse engineering uses the following steps to translate Delphi files into CDs and CDMs:</B.BODY
  65952. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  65953. ></RBW-AUTOGEN
  65954. ></RBW-MARKER
  65955. ><RBW-PARABODY>Parses the Delphi unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  65956. >) files, then maps the Delphi elements to ObjectTeam elements.</RBW-PARABODY
  65957. ></LN.LIST.NUM
  65958. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  65959. ></RBW-AUTOGEN
  65960. ></RBW-MARKER
  65961. ><RBW-PARABODY>Creates CDs and CDMs that define the ObjectTeam elements.</RBW-PARABODY
  65962. ></LN.LIST.NUM
  65963. ></LABEL
  65964. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65965. >In this section</L.LABEL
  65966. ><B.BODY>This section contains the following topics:</B.BODY
  65967. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  65968. ></ENTRY
  65969. ></RBW-ROW
  65970. ></THEAD
  65971. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12643" TYPE="XREF-TEXTCOPY">Parsing the Files&rbwtab;5–4</RBW-XREF
  65972. ></SB.SECTION.BLOCK.TABLE
  65973. ></ENTRY
  65974. ></RBW-ROW
  65975. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18753" TYPE="XREF-TEXTCOPY">Creating the Diagrams&rbwtab;5–6</RBW-XREF
  65976. ></SB.SECTION.BLOCK.TABLE
  65977. ></ENTRY
  65978. ></RBW-ROW
  65979. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23706" TYPE="XREF-TEXTCOPY">Running Reverse Engineering&rbwtab;5–11</RBW-XREF
  65980. ></SB.SECTION.BLOCK.TABLE
  65981. ></ENTRY
  65982. ></RBW-ROW
  65983. ></TBODY
  65984. ></TGROUP
  65985. ></RBW-TABLE
  65986. ></LABEL
  65987. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12643"></RBW-ANCHOR
  65988. >Parsing the Files</SS.SUBSEC.HEAD
  65989. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  65990. >Parsing the Delphi files</L.LABEL
  65991. ><B.BODY>The parser recognizes the following elements in the Delphi files:</B.BODY
  65992. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65993. ></RBW-AUTOGEN
  65994. ></RBW-MARKER
  65995. ><RBW-PARABODY>Classes, variables, constants, procedures, functions, constructors, and destructors</RBW-PARABODY
  65996. ></LB.LIST.BULLET
  65997. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  65998. ></RBW-AUTOGEN
  65999. ></RBW-MARKER
  66000. ><RBW-PARABODY>Forms, components, and events</RBW-PARABODY
  66001. ></LB.LIST.BULLET
  66002. ></LABEL
  66003. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66004. >Mapping the elements<RBW-IDXTERM TERM1="Visual Basic" TERM2="reverse engineering"></RBW-IDXTERM
  66005. ><RBW-IDXTERM TERM1="mapping" TERM2="in reverse engineering"></RBW-IDXTERM
  66006. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="mapping"></RBW-IDXTERM
  66007. ></L.LABEL
  66008. ><B.BODY>After parsing the Delphi files, reverse engineering maps the Delphi constructs to ObjectTeam elements, as shown in the following table:</B.BODY
  66009. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Delphi Construction</CELLHEADING
  66010. ></ENTRY
  66011. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam Element</CELLHEADING
  66012. ></ENTRY
  66013. ></RBW-ROW
  66014. ></THEAD
  66015. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  66016. ></ENTRY
  66017. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with default class properties.</CELLBODY
  66018. ></ENTRY
  66019. ></RBW-ROW
  66020. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant</CELLBODY
  66021. ></ENTRY
  66022. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>As for Variable. The default value of the attribute is set to the value of the constant.</CELLBODY
  66023. ></ENTRY
  66024. ></RBW-ROW
  66025. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Enumerated type</CELLBODY
  66026. ></ENTRY
  66027. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with default class properties. Members of the enumerated type are mapped to class attributes of the class. All attributes have a data type of enum.</CELLBODY
  66028. ></ENTRY
  66029. ></RBW-ROW
  66030. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  66031. ><CELLBODY>(<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  66032. > files only)</CELLBODY
  66033. ></ENTRY
  66034. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation and parameters. The Event operation property is set. Parameter properties are set appropriately.</CELLBODY
  66035. ></ENTRY
  66036. ></RBW-ROW
  66037. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Form</CELLBODY
  66038. ></ENTRY
  66039. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Subclass of TForm. Default class properties are set.</CELLBODY
  66040. ></ENTRY
  66041. ></RBW-ROW
  66042. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Form component</CELLBODY
  66043. ><CELLBODY>(<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  66044. > files only)</CELLBODY
  66045. ></ENTRY
  66046. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Subclass of the appropriate TComponent subclass. Default class properties are set. An aggregation association from the component to the class that represents the owner form is created. The class name of the component and the role name of the aggregation association are the same: the name of the Delphi component.</CELLBODY
  66047. ></ENTRY
  66048. ></RBW-ROW
  66049. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface</CELLBODY
  66050. ></ENTRY
  66051. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with Class Type property set to Interface. Properties and methods are mapped to attributes and operations of the class.</CELLBODY
  66052. ></ENTRY
  66053. ></RBW-ROW
  66054. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Procedure or function</CELLBODY
  66055. ></ENTRY
  66056. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation and parameters. Operation and parameter properties are set appropriately.</CELLBODY
  66057. ></ENTRY
  66058. ></RBW-ROW
  66059. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property</CELLBODY
  66060. ></ENTRY
  66061. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute. Properties on the Property tab of the attribute’s Edit Properties dialog box are set appropriately.</CELLBODY
  66062. ></ENTRY
  66063. ></RBW-ROW
  66064. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Record</CELLBODY
  66065. ></ENTRY
  66066. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with Class Type property set to Record. Fields are mapped to attributes of the class.</CELLBODY
  66067. ></ENTRY
  66068. ></RBW-ROW
  66069. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set of</CELLBODY
  66070. ></ENTRY
  66071. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with Class Type property set to Set. Members of the set are mapped to class attributes of the class. All attributes have a data type of enum.</CELLBODY
  66072. ></ENTRY
  66073. ></RBW-ROW
  66074. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Variable</CELLBODY
  66075. ></ENTRY
  66076. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute and data type. Default attribute properties are set.</CELLBODY
  66077. ></ENTRY
  66078. ></RBW-ROW
  66079. ></TBODY
  66080. ></TGROUP
  66081. ></RBW-TABLE
  66082. ></LABEL
  66083. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66084. >Customizing reverse engineering</L.LABEL
  66085. ><B.BODY>The customization file <CX5FX5FFILE.NAME>tcl\rev_assoc.tcl</CX5FX5FFILE.NAME
  66086. > file in the Delphi module defines the reverse engineering rules used to detect associations and attribute accessors. You can modify reverse engineering by editing this customization file, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  66087. ><CX5FX5FTITLE></CX5FX5FTITLE
  66088. >.</B.BODY
  66089. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  66090. ></RBW-AUTOGEN
  66091. >This customization file is not used unless you select the Reverse Engineer Associations option during reverse engineering.</W.WARNING
  66092. ><B.BODY></B.BODY
  66093. ></LABEL
  66094. ></SUBSECTION
  66095. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18753"></RBW-ANCHOR
  66096. >Creating the Diagrams</SS.SUBSEC.HEAD
  66097. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66098. >Creating diagrams<RBW-IDXTERM TERM1="diagrams" TERM2="draft, in reverse engineering"></RBW-IDXTERM
  66099. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="draft diagrams"></RBW-IDXTERM
  66100. ></L.LABEL
  66101. ><BI.BODY.INTRO>After mapping the Delphi constructs to ObjectTeam elements, reverse engineering creates the CDs and CDMs that define the ObjectTeam elements. It creates the following CDs:</BI.BODY.INTRO
  66102. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66103. ></RBW-AUTOGEN
  66104. ></RBW-MARKER
  66105. ><RBW-PARABODY>One or more CDs to show the class hierarchy</RBW-PARABODY
  66106. ></LB.LIST.BULLET
  66107. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66108. ></RBW-AUTOGEN
  66109. ></RBW-MARKER
  66110. ><RBW-PARABODY>One or more CDs to show the associations among the classes</RBW-PARABODY
  66111. ></LB.LIST.BULLET
  66112. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66113. >Naming conventions for CDs</SL.SUBLABEL
  66114. ><B.BODY>Each CD is named for the primary class in the CD; for example, Class1. The word Tree is appended to the name of each CD that defines part of the class hierarchy; for example, SuperClass1Tree.</B.BODY
  66115. ></LABEL
  66116. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66117. >How many diagrams are created</L.LABEL
  66118. ><B.BODY>The number and complexity of the CDs created by reverse engineering depend largely on the following:</B.BODY
  66119. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66120. ></RBW-AUTOGEN
  66121. ></RBW-MARKER
  66122. ><RBW-PARABODY>The files that you select for reverse engineering, particularly the number and complexity of classes defined in the files.</RBW-PARABODY
  66123. ></LB.LIST.BULLET
  66124. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66125. ></RBW-AUTOGEN
  66126. ></RBW-MARKER
  66127. ><RBW-PARABODY>The reverse engineering options that you select, particularly whether you choose to reverse engineer associations.</RBW-PARABODY
  66128. ></LB.LIST.BULLET
  66129. ></LABEL
  66130. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66131. ><RBW-ANCHOR ID="18986"></RBW-ANCHOR
  66132. >Options for reverse engineering</L.LABEL
  66133. ><BI.BODY.INTRO>During reverse engineering, ObjectTeam displays the following dialog box prompting you to select the options that you want to use:</BI.BODY.INTRO
  66134. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00606.unk" origfile="pics/reoption.gif" origtype="X" origdoc="../../sources/delphi/dlpheng.fm5.mif"></RBW-GRAPHIC
  66135. ></FA.FIGURE.ANCHOR
  66136. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering" TERM2="configuring options"></RBW-IDXTERM
  66137. >The following table describes each option (default values are as shown in the dialog box):</B.BODY
  66138. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  66139. ></ENTRY
  66140. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Descriptions</CELLHEADING
  66141. ></ENTRY
  66142. ></RBW-ROW
  66143. ></THEAD
  66144. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diagram</CELLBODY
  66145. ></ENTRY
  66146. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Prefix used to name each generated CD.</CELLBODY
  66147. ></ENTRY
  66148. ></RBW-ROW
  66149. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate</CELLBODY
  66150. ></ENTRY
  66151. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether to generate CDs, CDMs, or both:</CELLBODY
  66152. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66153. ></RBW-AUTOGEN
  66154. ></RBW-MARKER
  66155. ><RBW-PARABODY>CDs and CDMs</RBW-PARABODY
  66156. ></CELLBULLET
  66157. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66158. ></RBW-AUTOGEN
  66159. ></RBW-MARKER
  66160. ><RBW-PARABODY>Only CDs (only class structure is generated)</RBW-PARABODY
  66161. ></CELLBULLET
  66162. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66163. ></RBW-AUTOGEN
  66164. ></RBW-MARKER
  66165. ><RBW-PARABODY>Only CDMs (only class features are generated)</RBW-PARABODY
  66166. ></CELLBULLET
  66167. ></ENTRY
  66168. ></RBW-ROW
  66169. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overwrite Existing Diagrams</CELLBODY
  66170. ></ENTRY
  66171. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, existing CDs are replaced.</CELLBODY
  66172. ></ENTRY
  66173. ></RBW-ROW
  66174. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Reference Diagrams</CELLBODY
  66175. ></ENTRY
  66176. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering creates a separate reference CD for each class that exceeds the maximum size. The class is folded in all diagrams other than the reference diagram.</CELLBODY
  66177. ></ENTRY
  66178. ></RBW-ROW
  66179. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Class Width & Height</CELLBODY
  66180. ></ENTRY
  66181. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class. When a class exceeds this size, it is folded.</CELLBODY
  66182. ></ENTRY
  66183. ></RBW-ROW
  66184. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Tree Width & Height</CELLBODY
  66185. ></ENTRY
  66186. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class tree. When a class hierarchy exceeds this size, it is split.</CELLBODY
  66187. ></ENTRY
  66188. ></RBW-ROW
  66189. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Screen Width & Height</CELLBODY
  66190. ></ENTRY
  66191. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a diagram. When a diagram exceeds this size, it is split.</CELLBODY
  66192. ></ENTRY
  66193. ></RBW-ROW
  66194. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Placement Algorithm</CELLBODY
  66195. ></ENTRY
  66196. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Reverse Engineering Associations is selected</CX5FX5FBULLET.EMPHASIS
  66197. >, specifies the algorithm reverse engineering uses to create the CDs that show the associations:</CELLBODY
  66198. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66199. ></RBW-AUTOGEN
  66200. ></RBW-MARKER
  66201. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Simple.</CX5FX5FBULLET.EMPHASIS
  66202. > Creates a CD for each class that has associations.</RBW-PARABODY
  66203. ></CELLBULLET
  66204. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66205. ></RBW-AUTOGEN
  66206. ></RBW-MARKER
  66207. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Grid.</CX5FX5FBULLET.EMPHASIS
  66208. > Creates a CD for each <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  66209. > unfolded classes, where <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  66210. > is the number specified in the Number of Classes per CD field.</RBW-PARABODY
  66211. ></CELLBULLET
  66212. ></ENTRY
  66213. ></RBW-ROW
  66214. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Number of Classes per CD</CELLBODY
  66215. ></ENTRY
  66216. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Placement Algorithm is Grid</CX5FX5FBULLET.EMPHASIS
  66217. >, specifies the number of unfolded classes per CD.</CELLBODY
  66218. ></ENTRY
  66219. ></RBW-ROW
  66220. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Case</CELLBODY
  66221. ></ENTRY
  66222. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delphi almost always uses lowercase and ObjectTeam is case sensitive. Use this field to specify which case should be used in ObjectTeam.</CELLBODY
  66223. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66224. ></RBW-AUTOGEN
  66225. ></RBW-MARKER
  66226. ><RBW-PARABODY>FirstCase. For each identifier, use the case that is first encountered. (When reverse engineering multiple files, use this option with caution.)</RBW-PARABODY
  66227. ></CELLBULLET
  66228. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66229. ></RBW-AUTOGEN
  66230. ></RBW-MARKER
  66231. ><RBW-PARABODY>UpperCase. Always use uppercase characters.</RBW-PARABODY
  66232. ></CELLBULLET
  66233. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66234. ></RBW-AUTOGEN
  66235. ></RBW-MARKER
  66236. ><RBW-PARABODY>LowerCase. Always use lowercase characters.</RBW-PARABODY
  66237. ></CELLBULLET
  66238. ></ENTRY
  66239. ></RBW-ROW
  66240. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reverse Engineer Associations</CELLBODY
  66241. ></ENTRY
  66242. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering examines the attributes and accessor methods defined on each class to determine the associations among classes. It then creates CDs that show those associations.</CELLBODY
  66243. ></ENTRY
  66244. ></RBW-ROW
  66245. ></TBODY
  66246. ></TGROUP
  66247. ></RBW-TABLE
  66248. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66249. >GUI aggregations</SL.SUBLABEL
  66250. ><B.BODY>Reverse engineering always creates CDs that show the aggregations that define the GUI, even if you have not selected the Reverse Engineer Associations option. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box.</B.BODY
  66251. ></LABEL
  66252. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66253. >CDs that show the class hierarchy</L.LABEL
  66254. ><BI.BODY.INTRO>Following are the guidelines used to draw the CDs that show the class hierarchy:</BI.BODY.INTRO
  66255. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66256. ></RBW-AUTOGEN
  66257. ></RBW-MARKER
  66258. ><RBW-PARABODY>Reverse engineering creates a CD for each top&truehy;level parent class. The CD contains the parent class and all subclasses.</RBW-PARABODY
  66259. ></LB.LIST.BULLET
  66260. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66261. ></RBW-AUTOGEN
  66262. ></RBW-MARKER
  66263. ><RBW-PARABODY>If a class has multiple parent classes, reverse engineering creates a CD for each parent. The CD for the first parent class contains the parent class, the child class, and all subclasses of the child class. The CD for each of the other parent classes contains only the parent class and the child class; in these diagrams, the child class is folded.</RBW-PARABODY
  66264. ></LB.LIST.BULLET
  66265. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00607.tif" origseq="2" origtype="I" origdoc="../../sources/delphi/dlpheng.fm5.mif"></RBW-GRAPHIC
  66266. ></FA2.FIGURE.ANCHOR.2
  66267. ></LABEL
  66268. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66269. >CDs that show associations</L.LABEL
  66270. ><B.BODY>If you select the Reverse Engineer Associations option in the Reverse Engineer dialog box, reverse engineering creates CDs that show the associations. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box. Both algorithms are described below.</B.BODY
  66271. ><B.BODY>If you do not select the Reverse Engineer Associations option, reverse engineering shows associations only as attributes and accessor methods in the appropriate classes.</B.BODY
  66272. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  66273. ></RBW-AUTOGEN
  66274. >Bidirectional associations are reverse engineered as two unidirectional associations.</N.NOTE
  66275. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66276. >GUI aggregations</SL.SUBLABEL
  66277. ><B.BODY>Reverse engineering always creates CDs that show the aggregations that define the GUI, even if you have not selected the Reverse Engineer Associations option. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box.</B.BODY
  66278. ></LABEL
  66279. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66280. >Simple algorithm</L.LABEL
  66281. ><B.BODY>If you select Simple in the Placement Algorithm field of the Reverse Engineer dialog box, reverse engineering draws the CDs as follows:</B.BODY
  66282. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  66283. ></RBW-AUTOGEN
  66284. ></RBW-MARKER
  66285. ><RBW-PARABODY>Creates a CD for each class that has one or more associations. </RBW-PARABODY
  66286. ></LN.LIST.NUM
  66287. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  66288. ></RBW-AUTOGEN
  66289. ></RBW-MARKER
  66290. ><RBW-PARABODY>Unfolds the main class in each CD and folds all associated classes.</RBW-PARABODY
  66291. ></LN.LIST.NUM
  66292. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66293. >Example</SL.SUBLABEL
  66294. ><B.BODY>Reverse engineering a number of related classes using the simple algorithm creates multiple CDs, as shown below.</B.BODY
  66295. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00608.unk" origfile="pics/resimp1.gif" origtype="X" origdoc="../../sources/delphi/dlpheng.fm5.mif"></RBW-GRAPHIC
  66296. ></FA.FIGURE.ANCHOR
  66297. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00609.unk" origfile="pics/resimp2.gif" origtype="X" origdoc="../../sources/delphi/dlpheng.fm5.mif"></RBW-GRAPHIC
  66298. ></FA.FIGURE.ANCHOR
  66299. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00610.unk" origfile="pics/resimp3.gif" origtype="X" origdoc="../../sources/delphi/dlpheng.fm5.mif"></RBW-GRAPHIC
  66300. ></FA.FIGURE.ANCHOR
  66301. ></LABEL
  66302. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66303. >Grid algorithm</L.LABEL
  66304. ><B.BODY>If you select Grid in the Placement Algorithm field of the Reverse Engineer dialog box, reverse engineering draws the CDs as follows:</B.BODY
  66305. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  66306. ></RBW-AUTOGEN
  66307. ></RBW-MARKER
  66308. ><RBW-PARABODY>Divides all classes into groups of <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  66309. >, where <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  66310. > is the number specified by the Number of Classes per CD field of the Reverse Engineer dialog box. The algorithm attempts to group associated classes.</RBW-PARABODY
  66311. ></LN.LIST.NUM
  66312. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  66313. ></RBW-AUTOGEN
  66314. >To create a diagram that contains all classes, specify <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  66315. > as the number of classes being reverse engineered (or greater).</T2.TIP.2
  66316. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  66317. ></RBW-AUTOGEN
  66318. ></RBW-MARKER
  66319. ><RBW-PARABODY>For each group of classes, creates a CD and adds the classes (unfolded) to the CD. To position the classes, reverse engineering uses a uniform grid whose squares are the size of the largest class in the group and its longest association.</RBW-PARABODY
  66320. ></LN.LIST.NUM
  66321. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  66322. ></RBW-AUTOGEN
  66323. ></RBW-MARKER
  66324. ><RBW-PARABODY>For each class in each CD, draws all associations from the class to all associated classes. If an associated class is not in the CD, reverse engineering adds it (folded) to the CD.</RBW-PARABODY
  66325. ></LN.LIST.NUM
  66326. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66327. >Example</SL.SUBLABEL
  66328. ><B.BODY>Reverse engineering a number of related classes using the grid algorithm creates one CD, as shown below. (The classes have been rearranged to fit more easily on the page.)</B.BODY
  66329. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00611.unk" origfile="pics/regrid.gif" origtype="X" origdoc="../../sources/delphi/dlpheng.fm5.mif"></RBW-GRAPHIC
  66330. ></FA.FIGURE.ANCHOR
  66331. ></LABEL
  66332. ></SUBSECTION
  66333. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23706"></RBW-ANCHOR
  66334. >Running Reverse Engineering</SS.SUBSEC.HEAD
  66335. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66336. >Introduction</L.LABEL
  66337. ><B.BODY>This section describes how to run reverse engineering.</B.BODY
  66338. ></LABEL
  66339. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66340. >How to reverse engineer</L.LABEL
  66341. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  66342. ></RBW-AUTOGEN
  66343. ></RBW-MARKER
  66344. ><RBW-PARABODY>To reverse engineer Delphi files:</RBW-PARABODY
  66345. ></P.PROCEDURE
  66346. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  66347. ></RBW-AUTOGEN
  66348. ></RBW-MARKER
  66349. ><RBW-PARABODY>Move to System level in Object Design phase.</RBW-PARABODY
  66350. ></LN.LIST.NUM
  66351. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  66352. ></RBW-AUTOGEN
  66353. >Typically, you reverse engineer into an empty system. However, name conflicts can still occur since classes are created with scope Phase.</N2.NOTE.2
  66354. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  66355. ></RBW-AUTOGEN
  66356. ></RBW-MARKER
  66357. ><RBW-PARABODY>Select Utilities | Reverse Engineer Delphi.</RBW-PARABODY
  66358. ></LN.LIST.NUM
  66359. ><LR.LIST.RESULT>The Reverse Engineer Delphi dialog box appears, prompting you to select the files to be reverse engineered.</LR.LIST.RESULT
  66360. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  66361. ></RBW-AUTOGEN
  66362. >Reverse engineering creates CDs and CDMs based on the files that you select. Therefore, you generally want to reverse engineer all related files at the same time.</T2.TIP.2
  66363. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  66364. ></RBW-AUTOGEN
  66365. ></RBW-MARKER
  66366. ><RBW-PARABODY>Select the files that you want to reverse engineer, then select Open.</RBW-PARABODY
  66367. ></LN.LIST.NUM
  66368. ><LR.LIST.RESULT>A second Reverse Engineer Delphi dialog box appears (see <RBW-XREF REFID="18986" TYPE="XREF-TEXTCOPY">Options for reverse engineering</RBW-XREF
  66369. >), prompting you to select the options that you want to use. </LR.LIST.RESULT
  66370. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  66371. ></RBW-AUTOGEN
  66372. ></RBW-MARKER
  66373. ><RBW-PARABODY>Select the options, then select OK.</RBW-PARABODY
  66374. ></LN.LIST.NUM
  66375. ><LR.LIST.RESULT>ObjectTeam reverse engineers the selected file, reporting the results in a Monitoring window.</LR.LIST.RESULT
  66376. ></LABEL
  66377. ></SUBSECTION
  66378. ></SECTION
  66379. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="15125"></RBW-ANCHOR
  66380. >Round&truehy;Trip Engineering</S.SECTION.HEAD
  66381. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66382. >Introduction</L.LABEL
  66383. ><B.BODY>Round&truehy;trip engineering updates the ObjectTeam model based on the changes you have made to the generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  66384. >) files and generated form or data module (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  66385. >) files. Use round&truehy;trip engineering to update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  66386. > you regenerate the source files.</B.BODY
  66387. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66388. >.txt/.dfm</SL.SUBLABEL
  66389. ><B.BODY>Forms and data modules can be stored in <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  66390. > or <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  66391. > files. Round&truehy;trip engineering examines <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  66392. > files. It does not examine <CX5FX5FFILE.NAME>.dfm </CX5FX5FFILE.NAME
  66393. >files.</B.BODY
  66394. ></LABEL
  66395. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66396. >Purpose</L.LABEL
  66397. ><B.BODY>The code generator generates code based on the ObjectTeam model. If you do not update the ObjectTeam model before regenerating the source files, the new source files do not include your changes. </B.BODY
  66398. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66399. >Example</SL.SUBLABEL
  66400. ><B.BODY>You generate Delphi files. You then edit the generated source file, adding a new event to a component on a form. If you do not update the ObjectTeam model, the model does not contain the operation that corresponds to the event. When you regenerate the source file, the code generator assumes that you <CX5FX5FEMPHASIS>deleted</CX5FX5FEMPHASIS
  66401. > the operation from ObjectTeam and, therefore, does not include the <CX5FX5FEMPHASIS>obsolete</CX5FX5FEMPHASIS
  66402. > event in the newly generated source file.</B.BODY
  66403. ></LABEL
  66404. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66405. >Changes captured by round&truehy;trip engineering</L.LABEL
  66406. ><B.BODY>If you have made the following types of changes to the generated Delphi source, round&truehy;trip engineering updates the ObjectTeam model based on those changes:</B.BODY
  66407. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66408. ></RBW-AUTOGEN
  66409. ></RBW-MARKER
  66410. ><RBW-PARABODY>Added or deleted attributes, or edited attribute declarations</RBW-PARABODY
  66411. ></LB.LIST.BULLET
  66412. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66413. ></RBW-AUTOGEN
  66414. ></RBW-MARKER
  66415. ><RBW-PARABODY>Added or deleted methods or events, or edited method or event declarations</RBW-PARABODY
  66416. ></LB.LIST.BULLET
  66417. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66418. ></RBW-AUTOGEN
  66419. ></RBW-MARKER
  66420. ><RBW-PARABODY>Added components to a form</RBW-PARABODY
  66421. ></LB.LIST.BULLET
  66422. ></LABEL
  66423. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66424. >Changes not captured by round&truehy;trip engineering</L.LABEL
  66425. ><B.BODY>Round&truehy;trip engineering ignores the following types of changes that you might have made to the generated source files. If you have made these types of changes, you must update the ObjectTeam model manually:</B.BODY
  66426. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66427. ></RBW-AUTOGEN
  66428. ></RBW-MARKER
  66429. ><RBW-PARABODY>Deleted components from a form</RBW-PARABODY
  66430. ></LB.LIST.BULLET
  66431. ></LABEL
  66432. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66433. >What happens during round&truehy;trip engineering</L.LABEL
  66434. ><B.BODY>The following table shows the steps that occur during round&truehy;trip engineering:</B.BODY
  66435. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  66436. ></ENTRY
  66437. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  66438. ></ENTRY
  66439. ></RBW-ROW
  66440. ></THEAD
  66441. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  66442. ></ENTRY
  66443. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>You select the generated (edited) unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  66444. >) files that you are interested in and start round&truehy;trip engineering.</CELLBODY
  66445. ></ENTRY
  66446. ></RBW-ROW
  66447. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  66448. ></ENTRY
  66449. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam parses the selected unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  66450. >) files and accompanying form or data module (<CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  66451. >) files, if any. It compares the information in the files with the information in the ObjectTeam model.</CELLBODY
  66452. ></ENTRY
  66453. ></RBW-ROW
  66454. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  66455. ></ENTRY
  66456. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each difference it finds, ObjectTeam proposes an action and prompts you for confirmation. For example:</CELLBODY
  66457. ><CELLBODY><CX5FX5FINPUT>In class Account : delete attribute Address?</CX5FX5FINPUT
  66458. ></CELLBODY
  66459. ></ENTRY
  66460. ></RBW-ROW
  66461. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  66462. ></ENTRY
  66463. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Based on your answers, ObjectTeam updates the ObjectTeam model.</CELLBODY
  66464. ></ENTRY
  66465. ></RBW-ROW
  66466. ></TBODY
  66467. ></TGROUP
  66468. ></RBW-TABLE
  66469. ></LABEL
  66470. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66471. >In this section</L.LABEL
  66472. ><B.BODY>This section contains the following topics:</B.BODY
  66473. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  66474. ></ENTRY
  66475. ></RBW-ROW
  66476. ></THEAD
  66477. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38092" TYPE="XREF-TEXTCOPY">Parsing the Generated (Edited) Source Files&rbwtab;5–14</RBW-XREF
  66478. ></SB.SECTION.BLOCK.TABLE
  66479. ></ENTRY
  66480. ></RBW-ROW
  66481. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35484" TYPE="XREF-TEXTCOPY">Running Round&truehy;Trip Engineering&rbwtab;5–16</RBW-XREF
  66482. ></SB.SECTION.BLOCK.TABLE
  66483. ></ENTRY
  66484. ></RBW-ROW
  66485. ></TBODY
  66486. ></TGROUP
  66487. ></RBW-TABLE
  66488. ></LABEL
  66489. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38092"></RBW-ANCHOR
  66490. >Parsing the Generated (Edited) Source Files</SS.SUBSEC.HEAD
  66491. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66492. >Introduction</L.LABEL
  66493. ><B.BODY>This section describes which changes to the generated source files are captured by round&truehy;trip engineering. </B.BODY
  66494. ></LABEL
  66495. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66496. >Changes to attributes</L.LABEL
  66497. ><B.BODY>You can add, delete, and modify attribute declaration statements in a generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  66498. >) file. However, all attribute declaration statements must be specified beneath the following comment in the generated source file:</B.BODY
  66499. ><EM.EXAMPLE.MONO>// User defined attributes</EM.EXAMPLE.MONO
  66500. ><B.BODY>Attribute declarations not in this section of the generated source file are ignored by round&truehy;trip engineering.</B.BODY
  66501. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66502. >Attribute Access property</SL.SUBLABEL
  66503. ><B.BODY>Round&truehy;trip engineering determines the value of an attribute’s Attribute Access property based on the methods specified beneath the following comment in the generated source file:</B.BODY
  66504. ><EM.EXAMPLE.MONO>// Access methods</EM.EXAMPLE.MONO
  66505. ><B.BODY>For example, if you add an attribute declaration to the source file but do not add attribute access methods, round&truehy;trip engineerings sets the Read and Write values of the attribute’s Attribute Access property to None.</B.BODY
  66506. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66507. >Class constructor</SL.SUBLABEL
  66508. ><B.BODY>The parameter list of the class constructor (Create) includes key attributes. In the CD, a key attribute is prefixed with an asterisk (*).</B.BODY
  66509. ><B.BODY>If you remove an attribute from the parameter list of the constructor, round&truehy;trip engineering removes the asterisk (*) from the attribute name in the CD. If you add an attribute to the parameter list of the constructor, round&truehy;trip engineering adds an asterisk (*) to the attribute name in the CD.</B.BODY
  66510. ></LABEL
  66511. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66512. >Changes to functions</L.LABEL
  66513. ><BI.BODY.INTRO>You can add, delete, and modify function declaration statements in a generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  66514. >) file. However, all such declaration statements must be specified beneath the following comment in the generated source file:</BI.BODY.INTRO
  66515. ><EM.EXAMPLE.MONO>// User defined methods</EM.EXAMPLE.MONO
  66516. ><B.BODY>Function declarations not in this section of the generated source file are ignored by round&truehy;trip engineering.</B.BODY
  66517. ><B.BODY>You can change the code in the body of any function. Such changes are ignored by round&truehy;trip engineering, but are preserved by the code generator when you regenerate the source files.</B.BODY
  66518. ></LABEL
  66519. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66520. >Changes to events</L.LABEL
  66521. ><B.BODY>You can add, delete, and modify event declaration statements in a generated unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  66522. > file).</B.BODY
  66523. ><B.BODY>You can change the code in the body of any event. Such changes are ignored by round&truehy;trip engineering, but are preserved by the code generator when you regenerate the source files.</B.BODY
  66524. ></LABEL
  66525. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66526. >Changes to components</L.LABEL
  66527. ><B.BODY>You can add components to a generated form. However, <CX5FX5FEMPHASIS>if you delete a component, you must edit the ObjectTeam</CX5FX5FEMPHASIS
  66528. ><CX5FX5FEMPHASIS> model manually</CX5FX5FEMPHASIS
  66529. >. Round&truehy;trip engineering does not delete components from the ObjectTeam model.</B.BODY
  66530. ><B.BODY>If you add a component to a generated form, round&truehy;trip engineering updates the ObjectTeam model. Round&truehy;trip engineering does not modify existing CDs. It creates the following CDs to hold the classes that represent the new components:</B.BODY
  66531. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66532. ></RBW-AUTOGEN
  66533. ></RBW-MARKER
  66534. ><RBW-PARABODY>A CD for each type of component; these CDs show the superclass of each new component class</RBW-PARABODY
  66535. ></LB.LIST.BULLET
  66536. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  66537. ></RBW-AUTOGEN
  66538. ></RBW-MARKER
  66539. ><RBW-PARABODY>A CD for each modified form; these CDs show the associations between the new components and their forms</RBW-PARABODY
  66540. ></LB.LIST.BULLET
  66541. ></LABEL
  66542. ></SUBSECTION
  66543. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35484"></RBW-ANCHOR
  66544. >Running Round&truehy;Trip Engineering</SS.SUBSEC.HEAD
  66545. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66546. >Customizing round&truehy;trip engineering</L.LABEL
  66547. ><B.BODY>The customization file <CX5FX5FFILE.NAME>roundtrip.roundtrip</CX5FX5FFILE.NAME
  66548. > in the <CX5FX5FVARIABLE>M4_home\</CX5FX5FVARIABLE
  66549. >etc directory controls what actions round&truehy;trip engineering proposes, as well as the default answers it supplies. To examine or modify the current behavior of round&truehy;trip engineering, examine or modify the customization file.</B.BODY
  66550. ></LABEL
  66551. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66552. >Before you begin</L.LABEL
  66553. ><B.BODY>Round&truehy;trip engineering examines <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  66554. > files, not <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  66555. > files. Therefore, before running round&truehy;trip engineering, convert all forms and data modules from <CX5FX5FFILE.NAME>.dfm</CX5FX5FFILE.NAME
  66556. > to <CX5FX5FFILE.NAME>.txt</CX5FX5FFILE.NAME
  66557. > format, as described in <RBW-XREF REFID="24431" TYPE="XREF-TEXTCOPY">Editing Generated Form (.txt/.dfm) Files</RBW-XREF
  66558. >. </B.BODY
  66559. ></LABEL
  66560. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66561. >How to run round&truehy;trip engineering</L.LABEL
  66562. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  66563. ></RBW-AUTOGEN
  66564. ></RBW-MARKER
  66565. ><RBW-PARABODY>To run round&truehy;trip engineering:</RBW-PARABODY
  66566. ></P.PROCEDURE
  66567. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  66568. ></RBW-AUTOGEN
  66569. ></RBW-MARKER
  66570. ><RBW-PARABODY>Move to System level of the Implementation phase.</RBW-PARABODY
  66571. ></LN.LIST.NUM
  66572. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  66573. ></RBW-AUTOGEN
  66574. ></RBW-MARKER
  66575. ><RBW-PARABODY>Select the Delphi unit (<CX5FX5FFILE.NAME>.pas</CX5FX5FFILE.NAME
  66576. >) files on which you want to run round&truehy;trip engineering.</RBW-PARABODY
  66577. ></LN.LIST.NUM
  66578. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  66579. ></RBW-AUTOGEN
  66580. ></RBW-MARKER
  66581. ><RBW-PARABODY>Select Utilities | Round Trip Selected.</RBW-PARABODY
  66582. ></LN.LIST.NUM
  66583. ><LR.LIST.RESULT>The following dialog window appears.</LR.LIST.RESULT
  66584. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00612.unk" origfile="pics/rndtrip1.gif" origtype="X" origdoc="../../sources/delphi/dlpheng.fm5.mif"></RBW-GRAPHIC
  66585. ></FA2.FIGURE.ANCHOR.2
  66586. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  66587. ></RBW-AUTOGEN
  66588. ></RBW-MARKER
  66589. ><RBW-PARABODY>Optionally, enter a prefix to be used in naming any CDs created by round&truehy;trip engineering, then select OK. If you do not enter a prefix, round&truehy;trip engineering uses the prefix <CX5FX5FINPUT>NewRT</CX5FX5FINPUT
  66590. >.</RBW-PARABODY
  66591. ></LN.LIST.NUM
  66592. ><LR.LIST.RESULT>ObjectTeam opens the Roundtrip Selected Files dialog box, compares the classes in the Delphi files to the classes in the Object Design phase, and then begins proposing actions and prompting you for confirmation.</LR.LIST.RESULT
  66593. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00613.unk" origfile="pics/rndtrip2.gif" origtype="X" origdoc="../../sources/delphi/dlpheng.fm5.mif"></RBW-GRAPHIC
  66594. ></FA2.FIGURE.ANCHOR.2
  66595. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  66596. ></RBW-AUTOGEN
  66597. ></RBW-MARKER
  66598. ><RBW-PARABODY>Use the buttons to respond to the proposed actions:</RBW-PARABODY
  66599. ></LN.LIST.NUM
  66600. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Button</CELLHEADING
  66601. ></ENTRY
  66602. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  66603. ></ENTRY
  66604. ></RBW-ROW
  66605. ></THEAD
  66606. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  66607. ></ENTRY
  66608. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make the proposed change.</CELLBODY
  66609. ></ENTRY
  66610. ></RBW-ROW
  66611. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>No</CELLBODY
  66612. ></ENTRY
  66613. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Do not make the proposed change.</CELLBODY
  66614. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  66615. > When you regenerate the Delphi file, the change to the Delphi file will be lost.</CELLBODY
  66616. ></ENTRY
  66617. ></RBW-ROW
  66618. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default to All</CELLBODY
  66619. ></ENTRY
  66620. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use the default response for all remaining questions.</CELLBODY
  66621. ></ENTRY
  66622. ></RBW-ROW
  66623. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Stop</CELLBODY
  66624. ></ENTRY
  66625. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cancel round&truehy;trip engineering. Changes that you have already saved are not backed out.</CELLBODY
  66626. ></ENTRY
  66627. ></RBW-ROW
  66628. ></TBODY
  66629. ></TGROUP
  66630. ></RBW-TABLE
  66631. ><LR.LIST.RESULT>ObjectTeam updates the model based on your responses.</LR.LIST.RESULT
  66632. ><RBWAUTO-0001></RBWAUTO-0001
  66633. ><!--
  66634.  
  66635.  
  66636.  
  66637.  
  66638.  
  66639. CONVERTING SOURCE FILE ../../sources/delphi/dlphprop.fm5.mif
  66640.  
  66641.  
  66642. --><B.BODY></B.BODY
  66643. ><B.BODY></B.BODY
  66644. ><B.BODY></B.BODY
  66645. ><B.BODY></B.BODY
  66646. ><B.BODY></B.BODY
  66647. ></LABEL
  66648. ></SUBSECTION
  66649. ></SECTION
  66650. ></CHAPTER
  66651. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  66652. ></RBW-AUTOGEN
  66653. >Properties<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  66654. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Delphi</RBW-TEXTFLD
  66655. ></RBW-SYSOBJ
  66656. ></A.APPENDIX.HEAD
  66657. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  66658. >Delphi code generation properties</L.LABEL
  66659. ><B.BODY>The following table lists the properties that effect Delphi code generation. These are available in the CD in the Object Design phase.</B.BODY
  66660. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="99p"><COLSPEC COLNAME="3" COLWIDTH="126p"><COLSPEC COLNAME="4" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  66661. ></ENTRY
  66662. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  66663. ></ENTRY
  66664. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  66665. ><CELLHEADING>Value</CELLHEADING
  66666. ></ENTRY
  66667. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>For More Information</CELLHEADING
  66668. ></ENTRY
  66669. ></RBW-ROW
  66670. ></THEAD
  66671. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access Methods</CELLBODY
  66672. ></ENTRY
  66673. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  66674. ></ENTRY
  66675. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Published</CELLBODY
  66676. ><CELLBODY>Public</CELLBODY
  66677. ><CELLBODY>Private</CELLBODY
  66678. ><CELLBODY>Protected</CELLBODY
  66679. ><CELLBODY>None</CELLBODY
  66680. ></ENTRY
  66681. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31507" TYPE="XREF-TEXTCOPY">Specifying Association Properties</RBW-XREF
  66682. ></CELLBODY
  66683. ></ENTRY
  66684. ></RBW-ROW
  66685. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Access</CELLBODY
  66686. ></ENTRY
  66687. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  66688. ></ENTRY
  66689. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Published</CELLBODY
  66690. ><CELLBODY>Public</CELLBODY
  66691. ><CELLBODY>Private</CELLBODY
  66692. ><CELLBODY>Protected</CELLBODY
  66693. ><CELLBODY>None</CELLBODY
  66694. ></ENTRY
  66695. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31507" TYPE="XREF-TEXTCOPY">Specifying Association Properties</RBW-XREF
  66696. ></CELLBODY
  66697. ></ENTRY
  66698. ></RBW-ROW
  66699. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Implementation</CELLBODY
  66700. ></ENTRY
  66701. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  66702. ></ENTRY
  66703. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pointer </CELLBODY
  66704. ><CELLBODY>Object reference</CELLBODY
  66705. ></ENTRY
  66706. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31507" TYPE="XREF-TEXTCOPY">Specifying Association Properties</RBW-XREF
  66707. ></CELLBODY
  66708. ></ENTRY
  66709. ></RBW-ROW
  66710. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Access</CELLBODY
  66711. ></ENTRY
  66712. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66713. ></ENTRY
  66714. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Published</CELLBODY
  66715. ><CELLBODY>Public</CELLBODY
  66716. ><CELLBODY>Private</CELLBODY
  66717. ><CELLBODY>Protected</CELLBODY
  66718. ><CELLBODY>None</CELLBODY
  66719. ></ENTRY
  66720. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="16861" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Variables</RBW-XREF
  66721. ></CELLBODY
  66722. ></ENTRY
  66723. ></RBW-ROW
  66724. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Modifier</CELLBODY
  66725. ></ENTRY
  66726. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66727. ></ENTRY
  66728. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default </CELLBODY
  66729. ><CELLBODY>Pointer </CELLBODY
  66730. ><CELLBODY>File </CELLBODY
  66731. ></ENTRY
  66732. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="20063" TYPE="XREF-TEXTCOPY">Pointers</RBW-XREF
  66733. ></CELLBODY
  66734. ></ENTRY
  66735. ></RBW-ROW
  66736. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Visibility</CELLBODY
  66737. ></ENTRY
  66738. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66739. ></ENTRY
  66740. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Published</CELLBODY
  66741. ><CELLBODY>Public</CELLBODY
  66742. ><CELLBODY>Private</CELLBODY
  66743. ><CELLBODY>Protected</CELLBODY
  66744. ><CELLBODY>None</CELLBODY
  66745. ></ENTRY
  66746. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40016" TYPE="XREF-TEXTCOPY">Specifying Visibility of a Variable</RBW-XREF
  66747. ></CELLBODY
  66748. ></ENTRY
  66749. ></RBW-ROW
  66750. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calling Convention</CELLBODY
  66751. ></ENTRY
  66752. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  66753. ></ENTRY
  66754. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Register </CELLBODY
  66755. ><CELLBODY>Pascal </CELLBODY
  66756. ><CELLBODY>CDecl </CELLBODY
  66757. ><CELLBODY>StdCall </CELLBODY
  66758. ><CELLBODY>SafeCall</CELLBODY
  66759. ></ENTRY
  66760. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="36073" TYPE="XREF-TEXTCOPY">Specifying Method Calling Convention</RBW-XREF
  66761. ></CELLBODY
  66762. ></ENTRY
  66763. ></RBW-ROW
  66764. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Type</CELLBODY
  66765. ></ENTRY
  66766. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  66767. ></ENTRY
  66768. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  66769. ><CELLBODY>Interface</CELLBODY
  66770. ><CELLBODY>Record</CELLBODY
  66771. ><CELLBODY>Set</CELLBODY
  66772. ></ENTRY
  66773. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="11889" TYPE="XREF-TEXTCOPY">Mapping Classes</RBW-XREF
  66774. > and <RBW-XREF REFID="31687" TYPE="XREF-TEXTCOPY">Mapping Special Classes</RBW-XREF
  66775. ></CELLBODY
  66776. ></ENTRY
  66777. ></RBW-ROW
  66778. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Component Class Declaration</CELLBODY
  66779. ></ENTRY
  66780. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  66781. ></ENTRY
  66782. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  66783. ></ENTRY
  66784. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="32628" TYPE="XREF-TEXTCOPY">Delphi components</RBW-XREF
  66785. ></CELLBODY
  66786. ></ENTRY
  66787. ></RBW-ROW
  66788. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  66789. ></ENTRY
  66790. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  66791. ></ENTRY
  66792. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66793. ></ENTRY
  66794. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24359" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations</RBW-XREF
  66795. ></CELLBODY
  66796. ></ENTRY
  66797. ></RBW-ROW
  66798. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Usage</CELLBODY
  66799. ></ENTRY
  66800. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66801. ></ENTRY
  66802. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66803. ></ENTRY
  66804. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  66805. ></CELLBODY
  66806. ></ENTRY
  66807. ></RBW-ROW
  66808. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  66809. ></ENTRY
  66810. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Opeation</CELLBODY
  66811. ></ENTRY
  66812. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  66813. ></ENTRY
  66814. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="37299" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  66815. ></CELLBODY
  66816. ></ENTRY
  66817. ></RBW-ROW
  66818. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Index</CELLBODY
  66819. ></ENTRY
  66820. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66821. ></ENTRY
  66822. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66823. ></ENTRY
  66824. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  66825. ></CELLBODY
  66826. ></ENTRY
  66827. ></RBW-ROW
  66828. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface Identifier</CELLBODY
  66829. ></ENTRY
  66830. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  66831. ></ENTRY
  66832. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66833. ></ENTRY
  66834. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34377" TYPE="XREF-TEXTCOPY">Interfaces</RBW-XREF
  66835. ></CELLBODY
  66836. ></ENTRY
  66837. ></RBW-ROW
  66838. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Library Unit</CELLBODY
  66839. ></ENTRY
  66840. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  66841. ></ENTRY
  66842. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66843. ></ENTRY
  66844. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="33960" TYPE="XREF-TEXTCOPY">Library units</RBW-XREF
  66845. ></CELLBODY
  66846. ></ENTRY
  66847. ></RBW-ROW
  66848. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Main Form</CELLBODY
  66849. ></ENTRY
  66850. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  66851. ></ENTRY
  66852. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  66853. ></ENTRY
  66854. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="20051" TYPE="XREF-TEXTCOPY">Chapter 4, Modeling Forms and Data Modules</RBW-XREF
  66855. ></CELLBODY
  66856. ></ENTRY
  66857. ></RBW-ROW
  66858. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Modifier</CELLBODY
  66859. ></ENTRY
  66860. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  66861. ></ENTRY
  66862. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>None</CELLBODY
  66863. ><CELLBODY>Virtual</CELLBODY
  66864. ><CELLBODY>Dynamic</CELLBODY
  66865. ><CELLBODY>Virtual Abstract</CELLBODY
  66866. ><CELLBODY>Dynamic Abstract</CELLBODY
  66867. ><CELLBODY>Override</CELLBODY
  66868. ></ENTRY
  66869. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24451" TYPE="XREF-TEXTCOPY">Specifying Method Dispatch</RBW-XREF
  66870. ></CELLBODY
  66871. ></ENTRY
  66872. ></RBW-ROW
  66873. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Visibility</CELLBODY
  66874. ></ENTRY
  66875. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  66876. ></ENTRY
  66877. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Published</CELLBODY
  66878. ><CELLBODY>Public</CELLBODY
  66879. ><CELLBODY>Private</CELLBODY
  66880. ><CELLBODY>Protected</CELLBODY
  66881. ></ENTRY
  66882. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40398" TYPE="XREF-TEXTCOPY">Specifying Method Visibility</RBW-XREF
  66883. ></CELLBODY
  66884. ></ENTRY
  66885. ></RBW-ROW
  66886. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter Passing</CELLBODY
  66887. ></ENTRY
  66888. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  66889. ></ENTRY
  66890. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Value</CELLBODY
  66891. ><CELLBODY>Constant</CELLBODY
  66892. ><CELLBODY>Variable</CELLBODY
  66893. ><CELLBODY>Out</CELLBODY
  66894. ></ENTRY
  66895. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="35664" TYPE="XREF-TEXTCOPY">Specifying Parameters</RBW-XREF
  66896. ></CELLBODY
  66897. ></ENTRY
  66898. ></RBW-ROW
  66899. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property</CELLBODY
  66900. ></ENTRY
  66901. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66902. ></ENTRY
  66903. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66904. ></ENTRY
  66905. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  66906. ></CELLBODY
  66907. ></ENTRY
  66908. ></RBW-ROW
  66909. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property Default</CELLBODY
  66910. ></ENTRY
  66911. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66912. ></ENTRY
  66913. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66914. ></ENTRY
  66915. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  66916. ></CELLBODY
  66917. ></ENTRY
  66918. ></RBW-ROW
  66919. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property Storage</CELLBODY
  66920. ></ENTRY
  66921. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66922. ></ENTRY
  66923. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66924. ></ENTRY
  66925. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  66926. ></CELLBODY
  66927. ></ENTRY
  66928. ></RBW-ROW
  66929. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Read Property</CELLBODY
  66930. ></ENTRY
  66931. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66932. ></ENTRY
  66933. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66934. ></ENTRY
  66935. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  66936. ></CELLBODY
  66937. ></ENTRY
  66938. ></RBW-ROW
  66939. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text </CELLBODY
  66940. ></ENTRY
  66941. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  66942. ></ENTRY
  66943. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66944. ></ENTRY
  66945. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66946. ></ENTRY
  66947. ></RBW-ROW
  66948. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66949. ></ENTRY
  66950. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  66951. ></ENTRY
  66952. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66953. ></ENTRY
  66954. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66955. ></ENTRY
  66956. ></RBW-ROW
  66957. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66958. ></ENTRY
  66959. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  66960. ></ENTRY
  66961. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66962. ></ENTRY
  66963. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66964. ></ENTRY
  66965. ></RBW-ROW
  66966. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66967. ></ENTRY
  66968. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  66969. ></ENTRY
  66970. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66971. ></ENTRY
  66972. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66973. ></ENTRY
  66974. ></RBW-ROW
  66975. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66976. ></ENTRY
  66977. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  66978. ></ENTRY
  66979. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66980. ></ENTRY
  66981. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  66982. ></ENTRY
  66983. ></RBW-ROW
  66984. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  66985. ></ENTRY
  66986. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  66987. ></ENTRY
  66988. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default </CELLBODY
  66989. ><CELLBODY>Untyped</CELLBODY
  66990. ><CELLBODY>Open&truehy;Array</CELLBODY
  66991. ><CELLBODY>Variant Open&truehy;Array</CELLBODY
  66992. ></ENTRY
  66993. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="35664" TYPE="XREF-TEXTCOPY">Specifying Parameters</RBW-XREF
  66994. ></CELLBODY
  66995. ></ENTRY
  66996. ></RBW-ROW
  66997. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Write Property</CELLBODY
  66998. ></ENTRY
  66999. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  67000. ></ENTRY
  67001. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  67002. ></ENTRY
  67003. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23727" TYPE="XREF-TEXTCOPY">Mapping Attributes to Delphi Properties</RBW-XREF
  67004. ></CELLBODY
  67005. ></ENTRY
  67006. ></RBW-ROW
  67007. ></TBODY
  67008. ></TGROUP
  67009. ><RBW-ICONIZE></RBW-TABLE
  67010. ><B.BODY></B.BODY
  67011. ><RBWAUTO-0001></RBWAUTO-0001
  67012. ><!--
  67013.  
  67014.  
  67015.  
  67016.  
  67017.  
  67018. CONVERTING SOURCE FILE ../../sources/forte/fortebk.mif
  67019.  
  67020.  
  67021. --><B.BODY></B.BODY
  67022. ><B.BODY></B.BODY
  67023. ><B.BODY></B.BODY
  67024. ><B.BODY></B.BODY
  67025. ><B.BODY></B.BODY
  67026. ></LABEL
  67027. ></APPENDIX
  67028. ></BOOK
  67029. ><BOOK><BH.BOOK.HEAD>Forte Generation Guide</BH.BOOK.HEAD
  67030. ><!--
  67031.  
  67032.  
  67033.  
  67034.  
  67035.  
  67036. CONVERTING SOURCE FILE ../../sources/forte/fortpref.fm5.mif
  67037.  
  67038.  
  67039. --><B.BODY></B.BODY
  67040. ><B.BODY></B.BODY
  67041. ><B.BODY></B.BODY
  67042. ><B.BODY></B.BODY
  67043. ><B.BODY></B.BODY
  67044. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  67045. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Fort\x8e </RBW-TEXTFLD
  67046. ></RBW-SYSOBJ
  67047. ></CN.CHAPTER.NOX23
  67048. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67049. >About this manual</L.LABEL
  67050. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Code Generation Guide for Forté</CX5FX5FTITLE
  67051. > contains information specific to the Forté TOOL programming language. This manual includes all the information that you need to generate Forté TOOL code from ObjectTeam. </B.BODY
  67052. ></LABEL
  67053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67054. >Prerequisites</L.LABEL
  67055. ><B.BODY>This guide is intended for experienced users of ObjectTeam and the analysis and design method it supports. This guide gives you information on how to map ObjectTeam diagrams to Forté TOOL code; it does not teach you the Forté TOOL language.</B.BODY
  67056. ><B.BODY>To customize or extend the capabilities of the Forté code generator, you must have a thorough understanding of the ObjectTeam Shell, the Object&truehy;Oriented Programming Language (OOPL) model structure, and the Tool Command Language (Tcl) commands.</B.BODY
  67057. ><B.BODY><RBW-IDXTERM SEE="method" TERM1="operation"></RBW-IDXTERM
  67058. ><RBW-IDXTERM SEE="access property" TERM1="public"></RBW-IDXTERM
  67059. ><RBW-IDXTERM SEE="access property" TERM1="private"></RBW-IDXTERM
  67060. ><RBW-IDXTERM SEE="access" TERM1="protected"></RBW-IDXTERM
  67061. > <RBW-IDXTERM SEE="access property" TERM1="private protected"></RBW-IDXTERM
  67062. > <RBW-IDXTERM SEE="access property" TERM1="read access"></RBW-IDXTERM
  67063. ><RBW-IDXTERM SEE="access property" TERM1="write access"></RBW-IDXTERM
  67064. ><RBW-IDXTERM SEE="access property" SEEALSO="attribute property" TERM1="attribute"></RBW-IDXTERM
  67065. ><RBW-IDXTERM SEE="access property" SEEALSO="attribute property" TERM1=""></RBW-IDXTERM
  67066. > <RBW-IDXTERM SEEALSO="class property" TERM1="class"></RBW-IDXTERM
  67067. ><RBW-IDXTERM SEEALSO="class property" TERM1=""></RBW-IDXTERM
  67068. ><RBW-IDXTERM SEEALSO="association attribute property" TERM1="association"></RBW-IDXTERM
  67069. ><RBW-IDXTERM SEEALSO="association attribute property" TERM1=""></RBW-IDXTERM
  67070. ><RBW-IDXTERM SEEALSO="method" TERM1="method"></RBW-IDXTERM
  67071. > <RBW-IDXTERM SEE="inheritance" TERM1="generalization"></RBW-IDXTERM
  67072. ><RBW-IDXTERM SEE="inheritance" SEEALSO="interface property" TERM1="interface"></RBW-IDXTERM
  67073. ><RBW-IDXTERM SEE="inheritance" SEEALSO="interface property" TERM1=""></RBW-IDXTERM
  67074. ><RBW-IDXTERM SEE="code" SEEALSO="interface property" TERM1="source file"></RBW-IDXTERM
  67075. > <RBW-IDXTERM SEE="mapping" TERM1="translation"></RBW-IDXTERM
  67076. ><RBW-IDXTERM SEE="code" TERM1="generated source file"></RBW-IDXTERM
  67077. ><RBW-IDXTERM SEE="code" SEEALSO="code" TERM1=".java file"></RBW-IDXTERM
  67078. ></B.BODY
  67079. ><RBWAUTO-0001></RBWAUTO-0001
  67080. ><!--
  67081.  
  67082.  
  67083.  
  67084.  
  67085.  
  67086. CONVERTING SOURCE FILE ../../sources/forte/fortobjd.fm5.mif
  67087.  
  67088.  
  67089. --><B.BODY></B.BODY
  67090. ><B.BODY></B.BODY
  67091. ><B.BODY></B.BODY
  67092. ><B.BODY></B.BODY
  67093. ><B.BODY></B.BODY
  67094. ></LABEL
  67095. ></CHAPTERNONUM
  67096. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  67097. ></RBW-AUTOGEN
  67098. ><RBW-ANCHOR ID="11405"></RBW-ANCHOR
  67099. >Preparing Your ObjectTeam Model for Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  67100. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Fort\x8e </RBW-TEXTFLD
  67101. ></RBW-SYSOBJ
  67102. ></C.CHAPTER.HEAD
  67103. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67104. >Introduction</L.LABEL
  67105. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  67106. ><CX5FX5FTITLE></CX5FX5FTITLE
  67107. >, you model the system without regard to the implementation environment.</B.BODY
  67108. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  67109. ></LABEL
  67110. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67111. >Forté module required</L.LABEL
  67112. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>Forte Code Generation</CX5FX5FEMPHASIS
  67113. > provides the menu items, the properties and the Tcl code required to use the Forte Code Generator. Therefore, before moving to the Object Design phase, make sure this module is active.</B.BODY
  67114. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  67115. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67116. >For more information</SL.SUBLABEL
  67117. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  67118. ><CX5FX5FTITLE></CX5FX5FTITLE
  67119. > for details on how to activate a module.</B.BODY
  67120. ></LABEL
  67121. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67122. >Object Design and Implementation</L.LABEL
  67123. ><B.BODY>This chapter describes the tasks of the Object Design phase. <RBW-XREF REFID="40110" TYPE="XREF-TEXTCOPY">Chapter 2, Building a Forté Application</RBW-XREF
  67124. >, describes the tasks of the Implementation phase. You work iteratively in these two phases to generate code and complete your application.</B.BODY
  67125. ></LABEL
  67126. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67127. >Purpose of object design</L.LABEL
  67128. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  67129. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  67130. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  67131. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use oter diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  67132. ></LABEL
  67133. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67134. >In this chapter</L.LABEL
  67135. ><B.BODY>This chapter contains the following sections:</B.BODY
  67136. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  67137. ></ENTRY
  67138. ></RBW-ROW
  67139. ></THEAD
  67140. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23233" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;1–3</RBW-XREF
  67141. ></SB.SECTION.BLOCK.TABLE
  67142. ></ENTRY
  67143. ></RBW-ROW
  67144. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11506" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;1–6</RBW-XREF
  67145. ></SB.SECTION.BLOCK.TABLE
  67146. ></ENTRY
  67147. ></RBW-ROW
  67148. ></TBODY
  67149. ></TGROUP
  67150. ></RBW-TABLE
  67151. ></LABEL
  67152. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  67153. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  67154. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  67155. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  67156. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  67157. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  67158. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  67159. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  67160. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  67161. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  67162. >Refining the Class Diagrams</S.SECTION.HEAD
  67163. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67164. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  67165. ></L.LABEL
  67166. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  67167. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  67168. ></LABEL
  67169. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67170. >Using data from diagrams other than CDs</L.LABEL
  67171. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  67172. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  67173. ></ENTRY
  67174. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  67175. ></ENTRY
  67176. ></RBW-ROW
  67177. ></THEAD
  67178. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  67179. ></ENTRY
  67180. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  67181. ><CELLBODY>STD class</CELLBODY
  67182. ><CELLBODY>UCD actor</CELLBODY
  67183. ></ENTRY
  67184. ></RBW-ROW
  67185. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  67186. ></ENTRY
  67187. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  67188. ><CELLBODY>STD event or event message</CELLBODY
  67189. ><CELLBODY>UCD communication association</CELLBODY
  67190. ></ENTRY
  67191. ></RBW-ROW
  67192. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  67193. ></ENTRY
  67194. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  67195. ><CELLBODY>STD condition on an event</CELLBODY
  67196. ></ENTRY
  67197. ></RBW-ROW
  67198. ></TBODY
  67199. ></TGROUP
  67200. ></RBW-TABLE
  67201. ></LABEL
  67202. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67203. >Classes</L.LABEL
  67204. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  67205. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions and procedures of the class type. </B.BODY
  67206. ></LABEL
  67207. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67208. >External classes</L.LABEL
  67209. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  67210. ></LABEL
  67211. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67212. >Associations</L.LABEL
  67213. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  67214. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  67215. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67216. >Role names in Analysis and System Design</SL.SUBLABEL
  67217. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  67218. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00614.tif" origseq="1" origtype="I" origdoc="../../sources/forte/fortobjd.fm5.mif"></RBW-GRAPHIC
  67219. ></FA.FIGURE.ANCHOR
  67220. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67221. >Role names in Object Design and Implementation</SL.SUBLABEL
  67222. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods  for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  67223. ></LABEL
  67224. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67225. >Attributes</L.LABEL
  67226. ><B.BODY>You must specify each attribute completely, including its data type. The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  67227. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  67228. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67229. >Data types</SL.SUBLABEL
  67230. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and derived types. Types are abstracted from the data types recognized by the database system and the OOPL environment. The code generator translates the standard types to the target types. </B.BODY
  67231. ><B.BODY>Take care when customizing the files that define standard types. Any additions you make must conform to the target language or the generated code may not be usable.</B.BODY
  67232. ></LABEL
  67233. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67234. >Operations</L.LABEL
  67235. ><BI.BODY.INTRO>You must specify each operation completely.  This includes specifying such aspects as:</BI.BODY.INTRO
  67236. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67237. ></RBW-AUTOGEN
  67238. ></RBW-MARKER
  67239. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  67240. ></LB.LIST.BULLET
  67241. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67242. ></RBW-AUTOGEN
  67243. ></RBW-MARKER
  67244. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  67245. ></LB.LIST.BULLET
  67246. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67247. ></RBW-AUTOGEN
  67248. ></RBW-MARKER
  67249. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  67250. ></LB.LIST.BULLET
  67251. ></LABEL
  67252. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67253. >Properties</L.LABEL
  67254. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  67255. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  67256. >These details are incorporated in the final code.</BI.BODY.INTRO
  67257. ></LABEL
  67258. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67259. >Checking</L.LABEL
  67260. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  67261. ><CX5FX5FTITLE></CX5FX5FTITLE
  67262. > for more information about the Check utility.</B.BODY
  67263. ></LABEL
  67264. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67265. >For more information</L.LABEL
  67266. ><B.BODY><RBW-XREF REFID="22643" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to Forté</RBW-XREF
  67267. >, describes how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  67268. ></LABEL
  67269. ></SECTION
  67270. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  67271. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  67272. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  67273. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  67274. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  67275. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  67276. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  67277. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  67278. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  67279. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  67280. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  67281. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67282. >Introduction</L.LABEL
  67283. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  67284. ></LABEL
  67285. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67286. >Understanding the translations</L.LABEL
  67287. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  67288. ></LABEL
  67289. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67290. >Naming conventions</L.LABEL
  67291. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, bear in mind that spaces between words (in class names, for instance) are deleted by ObjectTeam code generators.</B.BODY
  67292. ></LABEL
  67293. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67294. >Customizing code generation</L.LABEL
  67295. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own.. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  67296. ></LABEL
  67297. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67298. >Using multiple languages in a single application</L.LABEL
  67299. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  67300. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  67301. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  67302. ></RBW-AUTOGEN
  67303. ></RBW-MARKER
  67304. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  67305. ></LN.LIST.NUM
  67306. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  67307. ></RBW-AUTOGEN
  67308. ></RBW-MARKER
  67309. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  67310. ></LN.LIST.NUM
  67311. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  67312. ></RBW-AUTOGEN
  67313. ></RBW-MARKER
  67314. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  67315. ></LN.LIST.NUM
  67316. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  67317. ></RBW-AUTOGEN
  67318. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  67319. ></LABEL
  67320. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67321. ></L.LABEL
  67322. ><B.BODY></B.BODY
  67323. ><!--
  67324.  
  67325.  
  67326.  
  67327.  
  67328.  
  67329. CONVERTING SOURCE FILE ../../sources/forte/fortcodg.fm5.mif
  67330.  
  67331.  
  67332. --><B.BODY></B.BODY
  67333. ><B.BODY></B.BODY
  67334. ><B.BODY></B.BODY
  67335. ><B.BODY></B.BODY
  67336. ><B.BODY></B.BODY
  67337. ></LABEL
  67338. ></SECTION
  67339. ></CHAPTER
  67340. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  67341. ></RBW-AUTOGEN
  67342. ><RBW-ANCHOR ID="40110"></RBW-ANCHOR
  67343. >Building a Forté Application<RBWAUTO-0028><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  67344. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Fort\x8e </RBW-TEXTFLD
  67345. ></RBW-SYSOBJ
  67346. ></RBWAUTO-0028
  67347. ></C.CHAPTER.HEAD
  67348. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67349. >Introduction</L.LABEL
  67350. ><B.BODY><RBW-IDXTERM TERM1="code generation"></RBW-IDXTERM
  67351. >Typically, the ultimate goal of modeling an application is to produce code that implements the application. In ObjectTeam, you can generate a significant portion of the code automatically, then complete the code by adding the details that are not specified in the model.</B.BODY
  67352. ></LABEL
  67353. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67354. >Prerequisites</L.LABEL
  67355. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67356. ></RBW-AUTOGEN
  67357. ></RBW-MARKER
  67358. ><RBW-PARABODY>The ObjectTeam module <CX5FX5FEMPHASIS>Forte Code generation</CX5FX5FEMPHASIS
  67359. > must be active from Object Design Phase and Implementation Phase level down.</RBW-PARABODY
  67360. ></LB.LIST.BULLET
  67361. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67362. ></RBW-AUTOGEN
  67363. ></RBW-MARKER
  67364. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="11405" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  67365. >.</RBW-PARABODY
  67366. ></LB.LIST.BULLET
  67367. ></LABEL
  67368. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67369. >Steps for code generation</L.LABEL
  67370. ><B.BODY>The following table provides an overview of the code generation process. This chapter describes each step in greater detail.</B.BODY
  67371. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="34p"><COLSPEC COLNAME="2" COLWIDTH="414p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  67372. ></ENTRY
  67373. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  67374. ></ENTRY
  67375. ></RBW-ROW
  67376. ></THEAD
  67377. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  67378. ></ENTRY
  67379. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configure the Forté environment, installing the required systems in the Object Design Phase of your ObjectTeam Project.</CELLBODY
  67380. ></ENTRY
  67381. ></RBW-ROW
  67382. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  67383. ></ENTRY
  67384. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate code. During this step, ObjectTeam runs the Tcl scripts that generate the Forté source files.</CELLBODY
  67385. ></ENTRY
  67386. ></RBW-ROW
  67387. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  67388. ></ENTRY
  67389. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Import the generated classes into a Forté Project, fill in the method bodies, and export the classes back to ObjectTeam.</CELLBODY
  67390. ></ENTRY
  67391. ></RBW-ROW
  67392. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  67393. ></ENTRY
  67394. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Add or delete operations and attributes and regenerate the code.</CELLBODY
  67395. ></ENTRY
  67396. ></RBW-ROW
  67397. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  67398. ></ENTRY
  67399. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Go back to step 2 to regenerate your classes.</CELLBODY
  67400. ></ENTRY
  67401. ></RBW-ROW
  67402. ></TBODY
  67403. ></TGROUP
  67404. ></RBW-TABLE
  67405. ></LABEL
  67406. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67407. >In this chapter</L.LABEL
  67408. ><B.BODY>This chapter contains the following sections:</B.BODY
  67409. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  67410. ></ENTRY
  67411. ></RBW-ROW
  67412. ></THEAD
  67413. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30832" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;2–2</RBW-XREF
  67414. ></SB.SECTION.BLOCK.TABLE
  67415. ></ENTRY
  67416. ></RBW-ROW
  67417. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30552" TYPE="XREF-TEXTCOPY">Configuring Your Forté Environment&rbwtab;2–3</RBW-XREF
  67418. ></SB.SECTION.BLOCK.TABLE
  67419. ></ENTRY
  67420. ></RBW-ROW
  67421. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20421" TYPE="XREF-TEXTCOPY">Generating Forté Code&rbwtab;2–8</RBW-XREF
  67422. ></SB.SECTION.BLOCK.TABLE
  67423. ></ENTRY
  67424. ></RBW-ROW
  67425. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40657" TYPE="XREF-TEXTCOPY">Editing Generated Source Files in Forté&rbwtab;2–12</RBW-XREF
  67426. ></SB.SECTION.BLOCK.TABLE
  67427. ></ENTRY
  67428. ></RBW-ROW
  67429. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14517" TYPE="XREF-TEXTCOPY">Regenerating Code&rbwtab;2–14</RBW-XREF
  67430. ></SB.SECTION.BLOCK.TABLE
  67431. ></ENTRY
  67432. ></RBW-ROW
  67433. ></TBODY
  67434. ></TGROUP
  67435. ></RBW-TABLE
  67436. ></LABEL
  67437. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="30832"></RBW-ANCHOR
  67438. >Components of Code Generation</S.SECTION.HEAD
  67439. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67440. >Tcl scripts for code generation</L.LABEL
  67441. ><B.BODY>The Tcl script <CX5FX5FFILE.NAME>import.tcl</CX5FX5FFILE.NAME
  67442. > activates, among other things, the Tcl script <CX5FX5FFILE.NAME>forteimpor.tcl</CX5FX5FFILE.NAME
  67443. >, which contains Tcl code to retrieve information from internal models, format it and write it to Forté files. <CX5FX5FFILE.NAME>forteimpor.tcl</CX5FX5FFILE.NAME
  67444. > uses other Tcl scripts that use other Tcl scripts as well, and so on.</B.BODY
  67445. ><B.BODY>The default <RBW-IDXTERM TERM1="Tcl" TERM2="script files used for code generation"></RBW-IDXTERM
  67446. >Tcl scripts used to generate Forté files can be found under the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  67447. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  67448. >\<CX5FX5FFILE.NAME>forte</CX5FX5FFILE.NAME
  67449. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  67450. > directory tree. </B.BODY
  67451. ></LABEL
  67452. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67453. >OOPL model</L.LABEL
  67454. ><B.BODY>When you generate code, ObjectTeam converts the CDs and CDMs of the Object Design phase into an intermediate model: the OOPL model. The Forté code generator then generates the Forté source files based on the OOPL model.</B.BODY
  67455. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67456. >For more information</SL.SUBLABEL
  67457. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  67458. ><CX5FX5FTITLE></CX5FX5FTITLE
  67459. > provides a detailed description of the classes in the OOPL model.</B.BODY
  67460. ></LABEL
  67461. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67462. ><RBW-IDXTERM TERM1="VisualWorks"></RBW-IDXTERM
  67463. >Forté files</L.LABEL
  67464. ><B.BODY>You use ObjectTeam to model objects, as well as the associations among them. From the ObjectTeam model, you generate a <CX5FX5FFILE.NAME>.pex</CX5FX5FFILE.NAME
  67465. > file that can be imported into a Forté workspace. Typically, a Forté project is created for each ObjectTeam system.</B.BODY
  67466. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67467. >For more information</SL.SUBLABEL
  67468. ><B.BODY>See <RBW-XREF REFID="20421" TYPE="XREF-TEXTCOPY">Generating Forté Code</RBW-XREF
  67469. > and <RBW-XREF REFID="40657" TYPE="XREF-TEXTCOPY">Editing Generated Source Files in Forté</RBW-XREF
  67470. >.</B.BODY
  67471. ></LABEL
  67472. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67473. ><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  67474. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  67475. >Code <RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  67476. >regeneration</L.LABEL
  67477. ><B.BODY>Code generation is an automated process that generates Forté files. ObjectTeam ensures that </B.BODY
  67478. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67479. ></RBW-AUTOGEN
  67480. ></RBW-MARKER
  67481. ><RBW-PARABODY>You can regenerate the Forté files when you change your ObjectTeam model.</RBW-PARABODY
  67482. ></LB.LIST.BULLET
  67483. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67484. ></RBW-AUTOGEN
  67485. ></RBW-MARKER
  67486. ><RBW-PARABODY>If you make changes to the generated files in Forté and then export those changes, your changes are preserved when you regenerate the files.</RBW-PARABODY
  67487. ></LB.LIST.BULLET
  67488. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67489. >For more information</SL.SUBLABEL
  67490. ><B.BODY>See <RBW-XREF REFID="14517" TYPE="XREF-TEXTCOPY">Regenerating Code</RBW-XREF
  67491. >.</B.BODY
  67492. ></LABEL
  67493. ></SECTION
  67494. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="30552"></RBW-ANCHOR
  67495. >Configuring Your Forté Environment</S.SECTION.HEAD
  67496. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67497. >What is the Forté environment?</L.LABEL
  67498. ><B.BODY>Configuring your Forté environment involves the creation of the following two ObjectTeam System Versions:</B.BODY
  67499. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67500. ></RBW-AUTOGEN
  67501. ></RBW-MARKER
  67502. ><RBW-PARABODY>Framework</RBW-PARABODY
  67503. ></LB.LIST.BULLET
  67504. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67505. ></RBW-AUTOGEN
  67506. ></RBW-MARKER
  67507. ><RBW-PARABODY>DisplayProject</RBW-PARABODY
  67508. ></LB.LIST.BULLET
  67509. ><B.BODY>You can configure your Forté environment in the following phases:</B.BODY
  67510. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67511. ></RBW-AUTOGEN
  67512. ></RBW-MARKER
  67513. ><RBW-PARABODY><RBW-XREF REFID="26207" TYPE="XREF-TEXTCOPY">Object Design Phase</RBW-XREF
  67514. ></RBW-PARABODY
  67515. ></LB.LIST.BULLET
  67516. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67517. ></RBW-AUTOGEN
  67518. ></RBW-MARKER
  67519. ><RBW-PARABODY><RBW-XREF REFID="39280" TYPE="XREF-TEXTCOPY">Implementation Phase</RBW-XREF
  67520. ></RBW-PARABODY
  67521. ></LB.LIST.BULLET
  67522. ></LABEL
  67523. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26207"></RBW-ANCHOR
  67524. >Object Design Phase</SS.SUBSEC.HEAD
  67525. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67526. >What is configured</L.LABEL
  67527. ><B.BODY>The following actions are carried out when the Forté environment is configured in the Object Design phase:</B.BODY
  67528. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67529. ></RBW-AUTOGEN
  67530. ></RBW-MARKER
  67531. ><RBW-PARABODY>Creation of the ObjectTeam System Versions Framework and DisplayProject</RBW-PARABODY
  67532. ></LB.LIST.BULLET
  67533. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67534. ></RBW-AUTOGEN
  67535. ></RBW-MARKER
  67536. ><RBW-PARABODY>Creation of the DCDs and CDMs representing the classes in the Forté class libraries Framework and DisplayProject. Bear in mind that his action involves the creation of a few hundred CDMs.</RBW-PARABODY
  67537. ></LB.LIST.BULLET
  67538. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  67539. ></RBW-AUTOGEN
  67540. >Only the Forté <CX5FX5FEMPHASIS>class hierarchy </CX5FX5FEMPHASIS
  67541. >is made available in ObjectTeam, not the methods of the classes involved. Each class in the Framework and DisplayProject systems only contains a name and a <CX5FX5FINPUT>$create</CX5FX5FINPUT
  67542. > method.</N.NOTE
  67543. ></LABEL
  67544. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67545. >Configuring your Forté environment automatically </L.LABEL
  67546. ><B.BODY>Each custom class you draw in ObjectTeam must be derived from a Forté prefabricated class. The advantage of Forté classes being defined as external classes in ObjectTeam is that you can indicate in ObjectTeam from which Forté class you derive a custom class, without having to recreate the entire class hierarchy of the Forté class in ObjectTeam. </B.BODY
  67547. ><B.BODY>In other words, if you derive custom classes from a lot of different prefabricated Forté classes, configuring your Forté environment will save you time.</B.BODY
  67548. ><B.BODY>If you derive your custom classes only from a limited set of Forté classes, configuring your Forté environment is not recommendable, since hundreds of classes will be created unnecessarily. </B.BODY
  67549. ></LABEL
  67550. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67551. >How to configure your Forté environment automatically</L.LABEL
  67552. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  67553. ></RBW-AUTOGEN
  67554. ></RBW-MARKER
  67555. ><RBW-PARABODY>To configure your Forté environment automatically:</RBW-PARABODY
  67556. ></P.PROCEDURE
  67557. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  67558. ></RBW-AUTOGEN
  67559. ></RBW-MARKER
  67560. ><RBW-PARABODY>Make sure the ObjectTeam Browser is on Object Design Phase level.</RBW-PARABODY
  67561. ></LN.LIST.NUM
  67562. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  67563. ></RBW-AUTOGEN
  67564. ></RBW-MARKER
  67565. ><RBW-PARABODY>Select Utilities | Configure Forte Environment.</RBW-PARABODY
  67566. ></LN.LIST.NUM
  67567. ><LR.LIST.RESULT>The appropriate System Versions are created on the current level. The appropriate CDs and CDMs are created in these System Versions.</LR.LIST.RESULT
  67568. ><LT.LIST.TEXT>This action may take a while.</LT.LIST.TEXT
  67569. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  67570. ></RBW-AUTOGEN
  67571. >For an overview of the classes created in the Framework and DisplayProject systems, open the system of your choice on Object Design level. Alternatively, you can use Utilities | Reports | On Classes to generate a report of the classes in the system, or use Utilities | Class Browser to start the ObjectTeam class browser.</T.TIP
  67572. ></LABEL
  67573. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67574. >Configuring your Forté environment manually </L.LABEL
  67575. ><B.BODY>If you do not configure your Forté environment automatically, you must create the new systems manually and populate them with the appropriate Forté classes. </B.BODY
  67576. ><B.BODY>The name and the number of the CDs in these systems are unimportant for the Forté code generator. What does matter is the following:</B.BODY
  67577. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67578. ></RBW-AUTOGEN
  67579. ></RBW-MARKER
  67580. ><RBW-PARABODY>A CDM with the name of the Forté class exists in a system that has the name of the corresponding Forté library.</RBW-PARABODY
  67581. ></LB.LIST.BULLET
  67582. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67583. ></RBW-AUTOGEN
  67584. ></RBW-MARKER
  67585. ><RBW-PARABODY>The top class the Forté class is derived from.</RBW-PARABODY
  67586. ></LB.LIST.BULLET
  67587. ><B.BODY>The Forté code generator qualifies a class with the name of the ObjectTeam system it is defined in, so when a generated <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67588. > file is imported into Forté, it will recognize the super class as being the prefabricated Forté class from the Forté library. </B.BODY
  67589. ></LABEL
  67590. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67591. >How to configure your Forté environment manually</L.LABEL
  67592. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  67593. ></RBW-AUTOGEN
  67594. ></RBW-MARKER
  67595. ><RBW-PARABODY>To configure your Forté environment manually:</RBW-PARABODY
  67596. ></P.PROCEDURE
  67597. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  67598. ></RBW-AUTOGEN
  67599. ></RBW-MARKER
  67600. ><RBW-PARABODY>Create in the Object Design phase the systems Framework and DisplayProject.</RBW-PARABODY
  67601. ></LN.LIST.NUM
  67602. ><LT.LIST.TEXT>If you are going to use classes from other Forté libraries, create corresponding ObjectTeam systems for these libraries as well.</LT.LIST.TEXT
  67603. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  67604. ></RBW-AUTOGEN
  67605. >To avoid potential problems, it is recommended that you name the ObjectTeam systems <CX5FX5FEMPHASIS>exactly</CX5FX5FEMPHASIS
  67606. > after the Forté class libraries, so with preservation of case.</N2.NOTE.2
  67607. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  67608. ></RBW-AUTOGEN
  67609. ></RBW-MARKER
  67610. ><RBW-PARABODY>Open the system Framework and create a new CD.</RBW-PARABODY
  67611. ></LN.LIST.NUM
  67612. ><LT.LIST.TEXT>The name of this CD is not important.</LT.LIST.TEXT
  67613. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  67614. ></RBW-AUTOGEN
  67615. ></RBW-MARKER
  67616. ><RBW-PARABODY>Draw the class Object and add the operation <CX5FX5FINPUT>$create</CX5FX5FINPUT
  67617. > to this class.</RBW-PARABODY
  67618. ></LN.LIST.NUM
  67619. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  67620. ></RBW-AUTOGEN
  67621. ></RBW-MARKER
  67622. ><RBW-PARABODY>Do the same for every other class from the Forté library Framework that you want to use in your model. </RBW-PARABODY
  67623. ></LN.LIST.NUM
  67624. ><LT.LIST.TEXT>Make sure the hierarchy is in synch with the class hierarchy within the Framework library.</LT.LIST.TEXT
  67625. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  67626. ></RBW-AUTOGEN
  67627. ></RBW-MARKER
  67628. ><RBW-PARABODY>Open the system DisplayProject and create a new CD.</RBW-PARABODY
  67629. ></LN.LIST.NUM
  67630. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  67631. ></RBW-AUTOGEN
  67632. ></RBW-MARKER
  67633. ><RBW-PARABODY>Draw the class UserWindow and add the operation <CX5FX5FINPUT>$create</CX5FX5FINPUT
  67634. > to this class.</RBW-PARABODY
  67635. ></LN.LIST.NUM
  67636. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  67637. ></RBW-AUTOGEN
  67638. ></RBW-MARKER
  67639. ><RBW-PARABODY>Do the same for every other class from the Forté library DisplayProject that you want to use in your model.</RBW-PARABODY
  67640. ></LN.LIST.NUM
  67641. ><LT.LIST.TEXT>Make sure the hierarchy is in synch with the class hierarchy within the DisplayProject library.</LT.LIST.TEXT
  67642. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  67643. ></RBW-AUTOGEN
  67644. ></RBW-MARKER
  67645. ><RBW-PARABODY>If you have created other systems corresponding to Forté libraries, add the appropriate classes to these systems as well.</RBW-PARABODY
  67646. ></LN.LIST.NUM
  67647. ></LABEL
  67648. ></SUBSECTION
  67649. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39280"></RBW-ANCHOR
  67650. >Implementation Phase</SS.SUBSEC.HEAD
  67651. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67652. >What is configured</L.LABEL
  67653. ><B.BODY>When the Forté environment is configured in the Implementation phase, the following empty ObjectTeam System Versions are created:</B.BODY
  67654. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67655. ></RBW-AUTOGEN
  67656. ></RBW-MARKER
  67657. ><RBW-PARABODY>Framework </RBW-PARABODY
  67658. ></LB.LIST.BULLET
  67659. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67660. ></RBW-AUTOGEN
  67661. ></RBW-MARKER
  67662. ><RBW-PARABODY>DisplayProject</RBW-PARABODY
  67663. ></LB.LIST.BULLET
  67664. ></LABEL
  67665. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67666. >Why configuring the Forté environment</L.LABEL
  67667. ><B.BODY>If you configure your Forté environment in the Object Design phase (see <RBW-XREF REFID="26207" TYPE="XREF-TEXTCOPY">Object Design Phase</RBW-XREF
  67668. >) the ObjectTeam System Versions Framework and DisplayProject in the Object Design Phase are populated with CADs and CDMs representing classes from the Forté class libraries.</B.BODY
  67669. ><B.BODY>The classes in these systems serve as external classes; no code should be generated. However, if you do not configure your Forté environment in the Implementation Phase and select Utilities | Generate Forte | New Systems in this phase, the code generator detects the systems FrameWork and DisplayProject in the ObjectDesign phase, and attempts to generate code for the classes defined in these systems. </B.BODY
  67670. ><B.BODY>The code generator can be prevented from doing this by creating the System Versions in the Implementation phase before code is generated. Utilities | Configure Forté Environment on Implementation Phase level does that for you.</B.BODY
  67671. ></LABEL
  67672. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67673. >How to configure your Forté environment</L.LABEL
  67674. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  67675. ></RBW-AUTOGEN
  67676. ></RBW-MARKER
  67677. ><RBW-PARABODY>To configure your Forté environment:</RBW-PARABODY
  67678. ></P.PROCEDURE
  67679. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  67680. ></RBW-AUTOGEN
  67681. ></RBW-MARKER
  67682. ><RBW-PARABODY>Make sure the ObjectTeam Browser is on Implementation Phase level.</RBW-PARABODY
  67683. ></LN.LIST.NUM
  67684. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  67685. ></RBW-AUTOGEN
  67686. ></RBW-MARKER
  67687. ><RBW-PARABODY>Select Utilities | Configure Forte Environment.</RBW-PARABODY
  67688. ></LN.LIST.NUM
  67689. ><LR.LIST.RESULT>The appropriate empty System Versions are created on the current level. </LR.LIST.RESULT
  67690. ><B.BODY>You can now generate code for the user&truehy;defined System Versions.</B.BODY
  67691. ></LABEL
  67692. ></SUBSECTION
  67693. ></SECTION
  67694. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="20421"></RBW-ANCHOR
  67695. >Generating Forté Code</S.SECTION.HEAD
  67696. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67697. >Result of generating</L.LABEL
  67698. ><B.BODY>When you generate source files, the code generator uses the CDs and CDMs that are in the Object Design phase to create Forté source files in the Implementation phase. At System level of the Implementation phase, you can then refine the source code and complete the application.</B.BODY
  67699. ></LABEL
  67700. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67701. >Implementation Phase is different</L.LABEL
  67702. ><B.BODY>The System level of the Implementation phase is fundamentally different from System level of any other phase. In the Implementation phase, the System files are Forté source files. In other phases, the System files are ObjectTeam diagrams.</B.BODY
  67703. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00615.tif" origseq="24" origtype="I" origdoc="../../sources/forte/fortcodg.fm5.mif"></RBW-GRAPHIC
  67704. ></FAR.FIGURE.ANCHOR.RIGHT
  67705. ></LABEL
  67706. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67707. >Generate code on Phase or System level</L.LABEL
  67708. ><B.BODY>You can generate code on the Implementation Phase level or on the System level of the Implementation phase.</B.BODY
  67709. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67710. ></RBW-AUTOGEN
  67711. ></RBW-MARKER
  67712. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>Implementation Phase level</CX5FX5FBULLET.EMPHASIS
  67713. >, you can generate code for one or more systems. This creates a matching system in the Implementation Phase that contains the generated source files. To regenerate code for an existing system, use System level.</RBW-PARABODY
  67714. ></LB.LIST.BULLET
  67715. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67716. ></RBW-AUTOGEN
  67717. ></RBW-MARKER
  67718. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>System level of the Implementation phase</CX5FX5FBULLET.EMPHASIS
  67719. >, you can (re)generate code for the entire system, or regenerate selected source files.</RBW-PARABODY
  67720. ></LB.LIST.BULLET
  67721. ><B.BODY>Typically, you use Implementation Phase level to generate code for a system initially and System level to regenerate code subsequently.</B.BODY
  67722. ></LABEL
  67723. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67724. >How to generate code on Implementation Phase level</L.LABEL
  67725. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  67726. ></RBW-AUTOGEN
  67727. ></RBW-MARKER
  67728. ><RBW-PARABODY>To generate code on the Implementation Phase level:</RBW-PARABODY
  67729. ></P.PROCEDURE
  67730. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  67731. ></RBW-AUTOGEN
  67732. ></RBW-MARKER
  67733. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  67734. ></LN.LIST.NUM
  67735. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  67736. ></RBW-AUTOGEN
  67737. ></RBW-MARKER
  67738. ><RBW-PARABODY>Select Utilities | Generate Forté.</RBW-PARABODY
  67739. ></LN.LIST.NUM
  67740. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  67741. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  67742. ></RBW-AUTOGEN
  67743. ></RBW-MARKER
  67744. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  67745. ></LN.LIST.NUM
  67746. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  67747. ></RBW-MARKER
  67748. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  67749. > to generate code for all systems from the Object Design phase for which no code has been generated yet.</RBW-PARABODY
  67750. ></LB2.LIST.BULLET.2
  67751. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  67752. ></RBW-MARKER
  67753. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  67754. > to generate code for one or more systems in the Object Design phase. You can select only systems that do not yet exist in the Implementation phase.</RBW-PARABODY
  67755. ></LB2.LIST.BULLET.2
  67756. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the code.</LR.LIST.RESULT
  67757. ></LABEL
  67758. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67759. >How to (re)generate code on System level</L.LABEL
  67760. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  67761. ></RBW-AUTOGEN
  67762. ></RBW-MARKER
  67763. ><RBW-PARABODY>To (re)generate code for a system, or selected system files on System level:</RBW-PARABODY
  67764. ></P.PROCEDURE
  67765. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  67766. ></RBW-AUTOGEN
  67767. ></RBW-MARKER
  67768. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  67769. ></LN.LIST.NUM
  67770. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  67771. ></RBW-AUTOGEN
  67772. ></RBW-MARKER
  67773. ><RBW-PARABODY>Select Utilities | Generate Forté.</RBW-PARABODY
  67774. ></LN.LIST.NUM
  67775. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  67776. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  67777. ></RBW-AUTOGEN
  67778. ></RBW-MARKER
  67779. ><RBW-PARABODY>Select New, Selected, or All:</RBW-PARABODY
  67780. ></LN.LIST.NUM
  67781. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  67782. ></RBW-MARKER
  67783. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New</CX5FX5FBULLET.EMPHASIS
  67784. > to generate code for all classes that are defined in this system and that have not yet been generated into code.</RBW-PARABODY
  67785. ></LB2.LIST.BULLET.2
  67786. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  67787. ></RBW-MARKER
  67788. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Selected</CX5FX5FBULLET.EMPHASIS
  67789. > to regenerate the files that you have selected in the Information area of the browser.</RBW-PARABODY
  67790. ></LB2.LIST.BULLET.2
  67791. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  67792. ></RBW-MARKER
  67793. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>All</CX5FX5FBULLET.EMPHASIS
  67794. > to (re)generate code for all classes that are defined in this system.</RBW-PARABODY
  67795. ></LB2.LIST.BULLET.2
  67796. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then (re)generates the files. The following illustration shows the Monitor window after generating code for a system.</LR.LIST.RESULT
  67797. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00616.unk" origfile="pics/import.gif" origtype="X" origdoc="../../sources/forte/fortcodg.fm5.mif"></RBW-GRAPHIC
  67798. ></FA2.FIGURE.ANCHOR.2
  67799. ></LABEL
  67800. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67801. >Generated source files</L.LABEL
  67802. ><B.BODY>When you generate code, the Forté code generator generates the following ASCII files:</B.BODY
  67803. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67804. ><CX5FX5FFILE.NAME>.cex file</CX5FX5FFILE.NAME
  67805. ></SL.SUBLABEL
  67806. ><B.BODY>Component EXport file, the file format used by Forté to export data from the Forté repository and import data into it. One <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67807. > file is generated for each ObjectTeam class.</B.BODY
  67808. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67809. ><CX5FX5FFILE.NAME>.hex file</CX5FX5FFILE.NAME
  67810. ></SL.SUBLABEL
  67811. ><B.BODY>These files contain the same information as <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67812. > files, except for the method implementations. <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  67813. > files are generated to avoid conflicts in bidirectional associations (see <RBW-XREF REFID="21654" TYPE="XREF-TEXTCOPY">Mapping a bidirectional association</RBW-XREF
  67814. >). One <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  67815. > file is generated for each ObjectTeam class.</B.BODY
  67816. ></LABEL
  67817. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67818. >Location of the source files</L.LABEL
  67819. ><B.BODY>Source files are stored in the repository as external files. They are also written to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  67820. >\<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  67821. > directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  67822. > is the file path for your generated files. For more information on the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  67823. ><CX5FX5FTITLE></CX5FX5FTITLE
  67824. >. </B.BODY
  67825. ><B.BODY>The following illustration shows how the source files appear in the Browser.</B.BODY
  67826. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00617.unk" origfile="pics/ftfiles.gif" origtype="X" origdoc="../../sources/forte/fortcodg.fm5.mif"></RBW-GRAPHIC
  67827. ></FAR.FIGURE.ANCHOR.RIGHT
  67828. ></LABEL
  67829. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67830. ><RBW-IDXTERM TERM1="user environment" TERM2="updating"></RBW-IDXTERM
  67831. ><RBW-IDXTERM TERM1="Update User Environment (Utilities menu)"></RBW-IDXTERM
  67832. >Updating user environment</L.LABEL
  67833. ><B.BODY>Use Utilities | Update User Environment in ObjectTeam to update your user environment based on the repository. </B.BODY
  67834. ><B.BODY>This can be particularly useful if you are working on two machines, and the user environment of each is set to a local drive. When you move between machines, you can use Utilities | Update User Environment to update the local drive of the current machine.</B.BODY
  67835. ></LABEL
  67836. ></SECTION
  67837. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40657"></RBW-ANCHOR
  67838. >Editing Generated Source Files in Forté</S.SECTION.HEAD
  67839. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67840. >Introduction</L.LABEL
  67841. ><B.BODY>In ObjectTeam you can generate a <CX5FX5FFILE.NAME>.pex</CX5FX5FFILE.NAME
  67842. > file containing all the source files in the System or only the selected ones. This <CX5FX5FFILE.NAME>.pex</CX5FX5FFILE.NAME
  67843. > file can be imported in the Forté Project Workshop.</B.BODY
  67844. ></LABEL
  67845. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67846. >How to export source files to Forté</L.LABEL
  67847. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  67848. ></RBW-AUTOGEN
  67849. ></RBW-MARKER
  67850. ><RBW-PARABODY>To export source files:</RBW-PARABODY
  67851. ></P.PROCEDURE
  67852. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  67853. ></RBW-AUTOGEN
  67854. ></RBW-MARKER
  67855. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  67856. ></LN.LIST.NUM
  67857. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  67858. ></RBW-AUTOGEN
  67859. ></RBW-MARKER
  67860. ><RBW-PARABODY>Make sure no files are selected in the Information Area of the Browser.</RBW-PARABODY
  67861. ></LN.LIST.NUM
  67862. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  67863. ></RBW-AUTOGEN
  67864. ></RBW-MARKER
  67865. ><RBW-PARABODY>Select Forte | Generate pex File | From cex Files</RBW-PARABODY
  67866. ></LN.LIST.NUM
  67867. ><LR.LIST.RESULT>A Monitoring Window appears, reporting on the export action.</LR.LIST.RESULT
  67868. ><LT.LIST.TEXT>All files (<CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67869. > and <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  67870. >) from the system are packed into a pex file, named <RBWAUTO-0027>systemName<RBWAUTO-0021>.pex</RBWAUTO-0021
  67871. ></RBWAUTO-0027
  67872. >. This file is stored in your user environment.</LT.LIST.TEXT
  67873. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  67874. ></RBW-AUTOGEN
  67875. ></RBW-MARKER
  67876. ><RBW-PARABODY>In a Forté workspace, select Plan | Import.</RBW-PARABODY
  67877. ></LN.LIST.NUM
  67878. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  67879. ></RBW-AUTOGEN
  67880. ></RBW-MARKER
  67881. ><RBW-PARABODY>Select the <CX5FX5FFILE.NAME>.pex</CX5FX5FFILE.NAME
  67882. > file generated by ObjectTeam.</RBW-PARABODY
  67883. ></LN.LIST.NUM
  67884. ><LR.LIST.RESULT>A Forté project with the same name as the ObjectTeam system will be created and filled with class components.</LR.LIST.RESULT
  67885. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  67886. ></RBW-AUTOGEN
  67887. ></RBW-MARKER
  67888. ><RBW-PARABODY>Edit the objects as you would any other Forté object.</RBW-PARABODY
  67889. ></LN.LIST.NUM
  67890. ><LT.LIST.TEXT>Comments in the files indicate where you should add code.</LT.LIST.TEXT
  67891. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  67892. ></RBW-AUTOGEN
  67893. ></RBW-MARKER
  67894. ><RBW-PARABODY>When you have finished editing the objects in Forté, export the objects to the ObjectTeam user environment, overwriting the originally generated files.</RBW-PARABODY
  67895. ></LN.LIST.NUM
  67896. ><LT.LIST.TEXT>You can export classes to <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67897. > files using Component | Export Class in the Project Workshop.</LT.LIST.TEXT
  67898. ><LR.LIST.RESULT>The generated files now reflect the changes that you made in Forté.</LR.LIST.RESULT
  67899. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  67900. ></RBW-AUTOGEN
  67901. >The <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67902. > files that are exported from Forté may contain many more properties than the originally generated <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67903. > files. Class properties are preserved when you regenerate code in ObjectTeam; component properties are not.</N.NOTE
  67904. ></LABEL
  67905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67906. >Exporting selected files</L.LABEL
  67907. ><B.BODY>Instead of packing all <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67908. > and <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  67909. > files, you can decide to include only selected files in a <CX5FX5FFILE.NAME>.pex</CX5FX5FFILE.NAME
  67910. > file. </B.BODY
  67911. ><B.BODY>To do this, first select the files of your choice in the Information Area of the Browser and then select Forte | Generate pex File | From cex Files.</B.BODY
  67912. ></LABEL
  67913. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67914. >Exporting .hex files only</L.LABEL
  67915. ><B.BODY>In some situations, when dependencies exist across systems, for example, simply generating a <CX5FX5FFILE.NAME>.pex</CX5FX5FFILE.NAME
  67916. > file may not work. You then may have to export the <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  67917. > files first, in order to make certain classes known to Forté.</B.BODY
  67918. ><B.BODY>To do this, use Forte | Generate pex File | From hex Files followed by Forte | Generate pex File | From cex Files.</B.BODY
  67919. ></LABEL
  67920. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67921. >Changes are preserved</L.LABEL
  67922. ><B.BODY>Changes you make to generated Forté files are preserved when you regenerate the files, provided that you adhere to the following guidelines:</B.BODY
  67923. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67924. ></RBW-AUTOGEN
  67925. ></RBW-MARKER
  67926. ><RBW-PARABODY>Add code only where indicated by the following comments:</RBW-PARABODY
  67927. ></LB.LIST.BULLET
  67928. ><E.EXAMPLE>&truehy;&truehy; !! Implement this method !!</E.EXAMPLE
  67929. ><LT.LIST.TEXT>or</LT.LIST.TEXT
  67930. ><E.EXAMPLE>&truehy;&truehy; Start constructor user section</E.EXAMPLE
  67931. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67932. ></RBW-AUTOGEN
  67933. ></RBW-MARKER
  67934. ><RBW-PARABODY>If you have added, deleted, or modified Forté attributes or methods, use round&truehy;trip engineering (see <RBW-XREF REFID="21358" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  67935. >) to update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  67936. > regenerating the Forté files.</RBW-PARABODY
  67937. ></LB.LIST.BULLET
  67938. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  67939. ></RBW-AUTOGEN
  67940. >The code generator generates code based on the ObjectTeam model. If you do not add the new Forté objects to the ObjectTeam model, the code generator assumes that you deleted them from ObjectTeam. This makes the Forté objects obsolete, so ObjectTeam removes them from the generated source files.</N2.NOTE.2
  67941. ></LABEL
  67942. ></SECTION
  67943. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="14517"></RBW-ANCHOR
  67944. >Regenerating Code<RBW-IDXTERM TERM1="code regeneration" TERM2="edited C++ source file"></RBW-IDXTERM
  67945. ></S.SECTION.HEAD
  67946. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67947. >Design changes and code changes</L.LABEL
  67948. ><B.BODY>ObjectTeam supports incremental development. You can generate code from your models, edit that code, and regenerate the code without losing your changes. You can work with models during design and with code during implementation, shifting your focus between the two as necessary.</B.BODY
  67949. ></LABEL
  67950. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67951. >Code regeneration</L.LABEL
  67952. ><B.BODY>The code regeneration process can be depicted as follows:</B.BODY
  67953. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00618.tif" origseq="2" origtype="I" origdoc="../../sources/forte/fortcodg.fm5.mif"></RBW-GRAPHIC
  67954. ></FA.FIGURE.ANCHOR
  67955. ></LABEL
  67956. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67957. >Editing guidelines</L.LABEL
  67958. ><B.BODY>The Forté code generator preserves your changes as long as you remember the following:</B.BODY
  67959. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67960. ></RBW-AUTOGEN
  67961. ></RBW-MARKER
  67962. ><RBW-PARABODY>Use the Forté Project Workshop to edit the <CX5FX5FEMPHASIS>bodies</CX5FX5FEMPHASIS
  67963. > of methods that were generated by ObjectTeam. When you export the class back to the ObjectTeam user environment, and you then regenerate the corresponding class, these method bodies are preserved.</RBW-PARABODY
  67964. ></LB.LIST.BULLET
  67965. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  67966. ></RBW-AUTOGEN
  67967. ></RBW-MARKER
  67968. ><RBW-PARABODY>If you use the Forté Project Workshop to add or delete <CX5FX5FEMPHASIS>methods</CX5FX5FEMPHASIS
  67969. > and <CX5FX5FEMPHASIS>attributes</CX5FX5FEMPHASIS
  67970. >, make sure you add them to or delete them from your ObjectTeam model as well. You can use roundtrip engineering to do this. </RBW-PARABODY
  67971. ></LB.LIST.BULLET
  67972. ><LT.LIST.TEXT>See <RBW-XREF REFID="21358" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  67973. > for details.</LT.LIST.TEXT
  67974. ></LABEL
  67975. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67976. >Obsolete code sections</L.LABEL
  67977. ><B.BODY>If, in the model, you rename, delete, or change the signature of an operation, the matching method in the generated Forté file is no longer correct. When you regenerate the file, ObjectTeam displays a message warning you that the method is being moved to the obsolete code section. It then appends the original method to the end of the generated file, as shown in the following example:</B.BODY
  67978. ><E.EXAMPLE>/* OBSOLETE_CODE *</E.EXAMPLE
  67979. ><E.EXAMPLE>....</E.EXAMPLE
  67980. ><E.EXAMPLE>* OBSOLETE_CODE */</E.EXAMPLE
  67981. ><B.BODY>You must delete the obsolete code before you can regenerate the Forté file.</B.BODY
  67982. ></LABEL
  67983. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  67984. >How to regenerate code</L.LABEL
  67985. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  67986. ></RBW-AUTOGEN
  67987. ></RBW-MARKER
  67988. ><RBW-PARABODY>To regenerate one or more Forté files:</RBW-PARABODY
  67989. ></P.PROCEDURE
  67990. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  67991. ></RBW-AUTOGEN
  67992. ></RBW-MARKER
  67993. ><RBW-PARABODY>In the Implementation phase, move to the System that contains the files that you want to regenerate.</RBW-PARABODY
  67994. ></LN.LIST.NUM
  67995. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  67996. ></RBW-AUTOGEN
  67997. ></RBW-MARKER
  67998. ><RBW-PARABODY>Select the <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  67999. > files that you want to regenerate.</RBW-PARABODY
  68000. ></LN.LIST.NUM
  68001. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  68002. ></RBW-AUTOGEN
  68003. >Both the <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  68004. > and <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  68005. > files are regenerated.</N2.NOTE.2
  68006. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  68007. ></RBW-AUTOGEN
  68008. ></RBW-MARKER
  68009. ><RBW-PARABODY>Select Utilities | Generate Forte | Selected.</RBW-PARABODY
  68010. ></LN.LIST.NUM
  68011. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then imports the files.</LR.LIST.RESULT
  68012. ></LABEL
  68013. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68014. >Preserving previous versions</L.LABEL
  68015. ><B.BODY>If you want to save the previously generated files, you can, before changing the ObjectTeam model, freeze both the model and the generated Forté files. This ensures that you have a stable version of the model and generated files to return to should your changes to the model not give the desired results.</B.BODY
  68016. ><RBWAUTO-0001></RBWAUTO-0001
  68017. ><!--
  68018.  
  68019.  
  68020.  
  68021.  
  68022.  
  68023. CONVERTING SOURCE FILE ../../sources/forte/fortegen.fm5.mif
  68024.  
  68025.  
  68026. --><B.BODY></B.BODY
  68027. ><B.BODY></B.BODY
  68028. ><B.BODY></B.BODY
  68029. ><B.BODY></B.BODY
  68030. ><B.BODY></B.BODY
  68031. ></LABEL
  68032. ></SECTION
  68033. ></CHAPTER
  68034. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  68035. ></RBW-AUTOGEN
  68036. >Mapping <RBW-ANCHOR ID="22643"></RBW-ANCHOR
  68037. >Modeling Data to <RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  68038. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Fort\x8e </RBW-TEXTFLD
  68039. ></RBW-SYSOBJ
  68040. >Forté</C.CHAPTER.HEAD
  68041. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68042. >Introduction</L.LABEL
  68043. ><B.BODY>This chapter describes how ObjectTeam model information maps to Forté code. It provides examples of CDs and the results produced when you generate Forté code.</B.BODY
  68044. ></LABEL
  68045. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68046. >In this chapter</L.LABEL
  68047. ><B.BODY>This chapter contains the following sections:</B.BODY
  68048. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  68049. ></ENTRY
  68050. ></RBW-ROW
  68051. ></THEAD
  68052. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26569" TYPE="XREF-TEXTCOPY">Mapping ObjectTeam Classes&rbwtab;3–2</RBW-XREF
  68053. ></SB.SECTION.BLOCK.TABLE
  68054. ></ENTRY
  68055. ></RBW-ROW
  68056. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11407" TYPE="XREF-TEXTCOPY">Mapping Attributes&rbwtab;3–11</RBW-XREF
  68057. ></SB.SECTION.BLOCK.TABLE
  68058. ></ENTRY
  68059. ></RBW-ROW
  68060. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29516" TYPE="XREF-TEXTCOPY">Mapping Operations&rbwtab;3–24</RBW-XREF
  68061. ></SB.SECTION.BLOCK.TABLE
  68062. ></ENTRY
  68063. ></RBW-ROW
  68064. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25351" TYPE="XREF-TEXTCOPY">Mapping Inheritance&rbwtab;3–44</RBW-XREF
  68065. ></SB.SECTION.BLOCK.TABLE
  68066. ></ENTRY
  68067. ></RBW-ROW
  68068. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34926" TYPE="XREF-TEXTCOPY">Mapping Associations&rbwtab;3–46</RBW-XREF
  68069. ></SB.SECTION.BLOCK.TABLE
  68070. ></ENTRY
  68071. ></RBW-ROW
  68072. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40407" TYPE="XREF-TEXTCOPY">Handling Special Classes&rbwtab;3–64</RBW-XREF
  68073. ></SB.SECTION.BLOCK.TABLE
  68074. ></ENTRY
  68075. ></RBW-ROW
  68076. ></TBODY
  68077. ></TGROUP
  68078. ></RBW-TABLE
  68079. ></LABEL
  68080. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26569"></RBW-ANCHOR
  68081. >Mapping ObjectTeam Classes</S.SECTION.HEAD
  68082. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68083. >Types of Forté classes</L.LABEL
  68084. ><B.BODY>An ObjectTeam class symbol can be used to model the following types of Forté classes:</B.BODY
  68085. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="207p"><COLSPEC COLNAME="2" COLWIDTH="241p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>class</CELLHEADING
  68086. ></ENTRY
  68087. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>see for details</CELLHEADING
  68088. ></ENTRY
  68089. ></RBW-ROW
  68090. ></THEAD
  68091. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Normal (non&truehy;window) class</CELLBODY
  68092. ></ENTRY
  68093. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> <RBW-XREF REFID="18828" TYPE="XREF-TEXTCOPY">Non&truehy;Window Class</RBW-XREF
  68094. ></CELLBODY
  68095. ></ENTRY
  68096. ></RBW-ROW
  68097. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Window class</CELLBODY
  68098. ></ENTRY
  68099. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="15994" TYPE="XREF-TEXTCOPY">Window Class</RBW-XREF
  68100. ></CELLBODY
  68101. ></ENTRY
  68102. ></RBW-ROW
  68103. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Domain class</CELLBODY
  68104. ></ENTRY
  68105. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="14039" TYPE="XREF-TEXTCOPY">Domain Class</RBW-XREF
  68106. ></CELLBODY
  68107. ></ENTRY
  68108. ></RBW-ROW
  68109. ></TBODY
  68110. ></TGROUP
  68111. ></RBW-TABLE
  68112. ><B.BODY>All classes are (indirectly) derived from the Forté root class Framework.Object.</B.BODY
  68113. ></LABEL
  68114. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68115. >Special Forté constructions</L.LABEL
  68116. ><B.BODY>ObjectTeam classes can also be used to model the following special Forté constructions:</B.BODY
  68117. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="163p"><COLSPEC COLNAME="2" COLWIDTH="285p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>forté element</CELLHEADING
  68118. ></ENTRY
  68119. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>see for details</CELLHEADING
  68120. ></ENTRY
  68121. ></RBW-ROW
  68122. ></THEAD
  68123. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Service Object</CELLBODY
  68124. ></ENTRY
  68125. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="30243" TYPE="XREF-TEXTCOPY">Service Object Class</RBW-XREF
  68126. ></CELLBODY
  68127. ></ENTRY
  68128. ></RBW-ROW
  68129. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cursor</CELLBODY
  68130. ></ENTRY
  68131. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="33517" TYPE="XREF-TEXTCOPY">Cursor Class</RBW-XREF
  68132. ></CELLBODY
  68133. ></ENTRY
  68134. ></RBW-ROW
  68135. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant</CELLBODY
  68136. ></ENTRY
  68137. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="27793" TYPE="XREF-TEXTCOPY">Constant Class</RBW-XREF
  68138. ></CELLBODY
  68139. ></ENTRY
  68140. ></RBW-ROW
  68141. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface</CELLBODY
  68142. ></ENTRY
  68143. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="14514" TYPE="XREF-TEXTCOPY">Interface</RBW-XREF
  68144. ></CELLBODY
  68145. ></ENTRY
  68146. ></RBW-ROW
  68147. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Derived C Data Type:</CELLBODY
  68148. ></ENTRY
  68149. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  68150. ></ENTRY
  68151. ></RBW-ROW
  68152. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68153. ></RBW-AUTOGEN
  68154. ></RBW-MARKER
  68155. ><RBW-PARABODY>typedef</RBW-PARABODY
  68156. ></CELLBULLET
  68157. ></ENTRY
  68158. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24618" TYPE="XREF-TEXTCOPY">Typedef Class</RBW-XREF
  68159. ></CELLBODY
  68160. ><CELLBODY><RBW-XREF REFID="12612" TYPE="XREF-TEXTCOPY">Generic Typedef Class</RBW-XREF
  68161. ></CELLBODY
  68162. ></ENTRY
  68163. ></RBW-ROW
  68164. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68165. ></RBW-AUTOGEN
  68166. ></RBW-MARKER
  68167. ><RBW-PARABODY>enum</RBW-PARABODY
  68168. ></CELLBULLET
  68169. ></ENTRY
  68170. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13941" TYPE="XREF-TEXTCOPY">Enum Class</RBW-XREF
  68171. ></CELLBODY
  68172. ></ENTRY
  68173. ></RBW-ROW
  68174. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68175. ></RBW-AUTOGEN
  68176. ></RBW-MARKER
  68177. ><RBW-PARABODY>struct</RBW-PARABODY
  68178. ></CELLBULLET
  68179. ></ENTRY
  68180. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="15593" TYPE="XREF-TEXTCOPY">Struct Class</RBW-XREF
  68181. ></CELLBODY
  68182. ></ENTRY
  68183. ></RBW-ROW
  68184. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68185. ></RBW-AUTOGEN
  68186. ></RBW-MARKER
  68187. ><RBW-PARABODY>union</RBW-PARABODY
  68188. ></CELLBULLET
  68189. ></ENTRY
  68190. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39931" TYPE="XREF-TEXTCOPY">Union Class</RBW-XREF
  68191. ></CELLBODY
  68192. ></ENTRY
  68193. ></RBW-ROW
  68194. ></TBODY
  68195. ></TGROUP
  68196. ></RBW-TABLE
  68197. ><B.BODY>These constructions can be enforced by setting the Class Type property to the appropriate value and by following certain rules, which are discussed in the sections listed above.</B.BODY
  68198. ></LABEL
  68199. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68200. >Initializing attributes</L.LABEL
  68201. ><B.BODY>For every Forté class, a method <CX5FX5FINPUT>Init()</CX5FX5FINPUT
  68202. > is generated. This method is used for the initialization of public attributes of the class. It is automatically invoked on an object immediately after it is constructed. </B.BODY
  68203. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68204. >For more information</SL.SUBLABEL
  68205. ><B.BODY>See <RBW-XREF REFID="10437" TYPE="XREF-TEXTCOPY">The Init Method</RBW-XREF
  68206. >.</B.BODY
  68207. ></LABEL
  68208. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68209. >In this section</L.LABEL
  68210. ><B.BODY>This section contains the following topics:</B.BODY
  68211. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  68212. ></ENTRY
  68213. ></RBW-ROW
  68214. ></THEAD
  68215. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18828" TYPE="XREF-TEXTCOPY">Non&truehy;Window Class&rbwtab;3–4</RBW-XREF
  68216. ></SB.SECTION.BLOCK.TABLE
  68217. ></ENTRY
  68218. ></RBW-ROW
  68219. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15994" TYPE="XREF-TEXTCOPY">Window Class&rbwtab;3–6</RBW-XREF
  68220. ></SB.SECTION.BLOCK.TABLE
  68221. ></ENTRY
  68222. ></RBW-ROW
  68223. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14039" TYPE="XREF-TEXTCOPY">Domain Class&rbwtab;3–8</RBW-XREF
  68224. ></SB.SECTION.BLOCK.TABLE
  68225. ></ENTRY
  68226. ></RBW-ROW
  68227. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33655" TYPE="XREF-TEXTCOPY">Editing Class Properties&rbwtab;3–10</RBW-XREF
  68228. ></SB.SECTION.BLOCK.TABLE
  68229. ></ENTRY
  68230. ></RBW-ROW
  68231. ></TBODY
  68232. ></TGROUP
  68233. ></RBW-TABLE
  68234. ></LABEL
  68235. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18828"></RBW-ANCHOR
  68236. >Non&truehy;Window Class</SS.SUBSEC.HEAD
  68237. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68238. >Introduction</L.LABEL
  68239. ><B.BODY>A non&truehy;window class is a class that is derived from the Forté root class Framework.Object.</B.BODY
  68240. ></LABEL
  68241. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68242. >How to model a non&truehy;window class </L.LABEL
  68243. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  68244. ></RBW-AUTOGEN
  68245. ></RBW-MARKER
  68246. ><RBW-PARABODY>To model a non&truehy;window class:</RBW-PARABODY
  68247. ></P.PROCEDURE
  68248. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  68249. ></RBW-AUTOGEN
  68250. ></RBW-MARKER
  68251. ><RBW-PARABODY>Draw the non&truehy;window class and give it a name.</RBW-PARABODY
  68252. ></LN.LIST.NUM
  68253. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  68254. ></RBW-AUTOGEN
  68255. ></RBW-MARKER
  68256. ><RBW-PARABODY>Specify its data attributes and operations.</RBW-PARABODY
  68257. ></LN.LIST.NUM
  68258. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  68259. ></RBW-AUTOGEN
  68260. ></RBW-MARKER
  68261. ><RBW-PARABODY>Draw another class named Object.</RBW-PARABODY
  68262. ></LN.LIST.NUM
  68263. ><LT.LIST.TEXT>This Forté root class, which is defined in the system Framework, is an external class. The system Framework is added to your ObjectTeam project when you configure your Forte environment.</LT.LIST.TEXT
  68264. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  68265. ></RBW-AUTOGEN
  68266. ></RBW-MARKER
  68267. ><RBW-PARABODY>Make the first class a subclass of class Object using the Generalization symbol.</RBW-PARABODY
  68268. ></LN.LIST.NUM
  68269. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  68270. ></RBW-AUTOGEN
  68271. >Here, the non&truehy;window class is explicitly derived from the Forté root class Framework.Object. However, since every class that is not derived from any other class is considered a subclass of Framework.Object by the Forté code generator, it is not necessary to do so.</N.NOTE
  68272. ></LABEL
  68273. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68274. >Example</L.LABEL
  68275. ><B.BODY>The Class Type property of this example class is set to Class, which is the default. The example class is explicitly derived from the class Framework.Object.</B.BODY
  68276. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00619.unk" origfile="pics/nwclas.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  68277. ></FA.FIGURE.ANCHOR
  68278. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68279. >Author.cex (generated file)</SL.SUBLABEL
  68280. ><B.BODY></B.BODY
  68281. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  68282. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  68283. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; START FORWARD CLASS DECLARATIONS</EWM.EXAMPLEW.MONO
  68284. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>forward TextData;</CX5FX5FBULLET.EMPHASIS
  68285. ></EWM.EXAMPLEW.MONO
  68286. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; END FORWARD CLASS DECLARATIONS</EWM.EXAMPLEW.MONO
  68287. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68288. ><EWM.EXAMPLEW.MONO><CX5FX5FFILE.NAME>class Author inherits from Framework.Object</CX5FX5FFILE.NAME
  68289. ></EWM.EXAMPLEW.MONO
  68290. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68291. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; User&truehy;defined attributes</EWM.EXAMPLEW.MONO
  68292. ><EWM.EXAMPLEW.MONO>has private attribute name: Framework.TextData;</EWM.EXAMPLEW.MONO
  68293. ><EWM.EXAMPLEW.MONO>has private attribute age: short;</EWM.EXAMPLEW.MONO
  68294. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68295. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; User&truehy;defined methods</EWM.EXAMPLEW.MONO
  68296. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  68297. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68298. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Attribute accessor methods</EWM.EXAMPLEW.MONO
  68299. ><EWM.EXAMPLEW.MONO>has public  method getName: copy Framework.TextData;</EWM.EXAMPLEW.MONO
  68300. ><EWM.EXAMPLEW.MONO>has public  method setName(copy input newName: Framework.TextData);</EWM.EXAMPLEW.MONO
  68301. ><EWM.EXAMPLEW.MONO>has public  method getAge: short;</EWM.EXAMPLEW.MONO
  68302. ><EWM.EXAMPLEW.MONO>has public  method setAge(input newAge: short);</EWM.EXAMPLEW.MONO
  68303. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68304. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  68305. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  68306. ><EWM.EXAMPLEW.MONO>end CLASS;</EWM.EXAMPLEW.MONO
  68307. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68308. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68309. ></LABEL
  68310. ></SUBSECTION
  68311. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15994"></RBW-ANCHOR
  68312. >Window Class</SS.SUBSEC.HEAD
  68313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68314. >Introduction</L.LABEL
  68315. ><B.BODY>A window class is a class that is directly or indirectly derived from the Forté class UserWindow. This abstract class is part of the Forté DisplayProject library.</B.BODY
  68316. ><B.BODY>A window class provides you with an empty window, which you can further specify using the Forté Window Workshop.</B.BODY
  68317. ></LABEL
  68318. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68319. >How to model a window class </L.LABEL
  68320. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  68321. ></RBW-AUTOGEN
  68322. ></RBW-MARKER
  68323. ><RBW-PARABODY>To model a window class:</RBW-PARABODY
  68324. ></P.PROCEDURE
  68325. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  68326. ></RBW-AUTOGEN
  68327. ></RBW-MARKER
  68328. ><RBW-PARABODY>Draw the window class and give it a name.</RBW-PARABODY
  68329. ></LN.LIST.NUM
  68330. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  68331. ></RBW-AUTOGEN
  68332. ></RBW-MARKER
  68333. ><RBW-PARABODY>Specify its data attributes and operations, if desired.</RBW-PARABODY
  68334. ></LN.LIST.NUM
  68335. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  68336. ></RBW-AUTOGEN
  68337. ></RBW-MARKER
  68338. ><RBW-PARABODY>Draw another class named UserWindow.</RBW-PARABODY
  68339. ></LN.LIST.NUM
  68340. ><LT.LIST.TEXT>This Forté class, which is defined in the system DisplayProject, is an external class. The system DisplayProject is added to your ObjectTeam project when you configure your Forté environment.</LT.LIST.TEXT
  68341. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  68342. ></RBW-AUTOGEN
  68343. ></RBW-MARKER
  68344. ><RBW-PARABODY>Make the first class a subclass of class UserWindow.</RBW-PARABODY
  68345. ></LN.LIST.NUM
  68346. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  68347. ></RBW-AUTOGEN
  68348. >You cannot model window and menu definitions in ObjectTeam. The idea behind modeling window classes in ObjectTeam is to generate basic GUI classes, which can be imported into Forté and further refined using the Forté Window Workshop.</N.NOTE
  68349. ></LABEL
  68350. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68351. >What is generated</L.LABEL
  68352. ><B.BODY>Every window class that is successfully generated contains:</B.BODY
  68353. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68354. ></RBW-AUTOGEN
  68355. ></RBW-MARKER
  68356. ><RBW-PARABODY>One Init method</RBW-PARABODY
  68357. ></LB.LIST.BULLET
  68358. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68359. ></RBW-AUTOGEN
  68360. ></RBW-MARKER
  68361. ><RBW-PARABODY>One Display method</RBW-PARABODY
  68362. ></LB.LIST.BULLET
  68363. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68364. ></RBW-AUTOGEN
  68365. ></RBW-MARKER
  68366. ><RBW-PARABODY>A GUI part in a compiled format (binary ASCII encoded)</RBW-PARABODY
  68367. ></LB.LIST.BULLET
  68368. ></LABEL
  68369. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68370. >Example</L.LABEL
  68371. ><B.BODY>The Class Type property of this example class is set to Class, which is the default. The example class is derived from the class UserWindow.</B.BODY
  68372. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00620.unk" origfile="pics/wdclas.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  68373. ></FA.FIGURE.ANCHOR
  68374. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68375. >myWindowClass.cex</SL.SUBLABEL
  68376. ><B.BODY></B.BODY
  68377. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  68378. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68379. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; generated by ObjectTeam Forte code generator</EWM.EXAMPLEW.MONO
  68380. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  68381. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; START FORWARD CLASS DECLARATIONS</EWM.EXAMPLEW.MONO
  68382. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>forward UserWindow is mapped;</CX5FX5FBULLET.EMPHASIS
  68383. ></EWM.EXAMPLEW.MONO
  68384. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; END FORWARD CLASS DECLARATIONS</EWM.EXAMPLEW.MONO
  68385. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68386. ><EWM.EXAMPLEW.MONO>class myWindowClass <CX5FX5FBULLET.EMPHASIS>is mapped</CX5FX5FBULLET.EMPHASIS
  68387. > inherits from <CX5FX5FBULLET.EMPHASIS>DisplayProject.UserWindow</CX5FX5FBULLET.EMPHASIS
  68388. ></EWM.EXAMPLEW.MONO
  68389. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68390. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  68391. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method Display;</CX5FX5FBULLET.EMPHASIS
  68392. ></EWM.EXAMPLEW.MONO
  68393. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68394. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has</CX5FX5FBULLET.EMPHASIS
  68395. ></EWM.EXAMPLEW.MONO
  68396. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+5151463100000111000000ec9fe4010100002101020000000002020600940800</CX5FX5FBULLET.EMPHASIS
  68397. ></EWM.EXAMPLEW.MONO
  68398. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+1d009fff010104210f1011120101011700009fff000000000900000bb80fa000</CX5FX5FBULLET.EMPHASIS
  68399. ></EWM.EXAMPLEW.MONO
  68400. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+000000000000000000010160600000000000000000009d0bb89d0fa000000105</CX5FX5FBULLET.EMPHASIS
  68401. ></EWM.EXAMPLEW.MONO
  68402. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+030301fffd0000000000000c0405000600000201000100000b000001000b0300</CX5FX5FBULLET.EMPHASIS
  68403. ></EWM.EXAMPLEW.MONO
  68404. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+0021010200000000050400001c01000506007a08004d009fff010101010f1011</CX5FX5FBULLET.EMPHASIS
  68405. ></EWM.EXAMPLEW.MONO
  68406. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+120101011700009fff0100000009000007d007d0000000000303030300020202</CX5FX5FBULLET.EMPHASIS
  68407. ></EWM.EXAMPLEW.MONO
  68408. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+a0a00000000000000000009d07d09d07d000000105066b010000000000000000</CX5FX5FBULLET.EMPHASIS
  68409. ></EWM.EXAMPLEW.MONO
  68410. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+060006000021000200000000061a7e898f9ce29cec12191a385e5f6b7e88898d</CX5FX5FBULLET.EMPHASIS
  68411. ></EWM.EXAMPLEW.MONO
  68412. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>+8f9cad9cd39cd49ce09ce29cec9cec0000</CX5FX5FBULLET.EMPHASIS
  68413. ></EWM.EXAMPLEW.MONO
  68414. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&truehy;001e986b</CX5FX5FBULLET.EMPHASIS
  68415. ></EWM.EXAMPLEW.MONO
  68416. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68417. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  68418. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  68419. ><EWM.EXAMPLEW.MONO>end CLASS;</EWM.EXAMPLEW.MONO
  68420. ></LABEL
  68421. ></SUBSECTION
  68422. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14039"></RBW-ANCHOR
  68423. >Domain Class</SS.SUBSEC.HEAD
  68424. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68425. >Introduction</L.LABEL
  68426. ><B.BODY>A Domain Class is a class that is a subclass of a Forté nullable DataValue subclass. </B.BODY
  68427. ><B.BODY>The following nullable DataValue subclasses classes are defined in the system Framework. This system is added to your ObjectTeam project when you configure your Forte environment: </B.BODY
  68428. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>BinaryNullable</CELLBODY
  68429. ></ENTRY
  68430. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ImageNullable</CELLBODY
  68431. ></ENTRY
  68432. ></RBW-ROW
  68433. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>BooleanNullable</CELLBODY
  68434. ></ENTRY
  68435. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>IntegerNullable</CELLBODY
  68436. ></ENTRY
  68437. ></RBW-ROW
  68438. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DateTimeNullable</CELLBODY
  68439. ></ENTRY
  68440. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>IntervalNullable</CELLBODY
  68441. ></ENTRY
  68442. ></RBW-ROW
  68443. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DecimalNullable</CELLBODY
  68444. ></ENTRY
  68445. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>TextNullable</CELLBODY
  68446. ></ENTRY
  68447. ></RBW-ROW
  68448. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DoubleNullable</CELLBODY
  68449. ></ENTRY
  68450. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  68451. ></ENTRY
  68452. ></RBW-ROW
  68453. ></TBODY
  68454. ></TGROUP
  68455. ></RBW-TABLE
  68456. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68457. >For more information</SL.SUBLABEL
  68458. ><B.BODY>Refer to your Forté documentation for more information on these classes.</B.BODY
  68459. ></LABEL
  68460. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68461. >Importing and exporting domain classes</L.LABEL
  68462. ><B.BODY>A domain class is not very different from a non&truehy;domain class as far as the Forté code generation in ObjectTeam is concerned. However, in Forté, domain classes have many special properties, which are set when you import a generated <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  68463. > file containing a domain class.</B.BODY
  68464. ><B.BODY>When you export a domain class from Forté, import it into ObjectTeam, and regenerate the <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  68465. > file, properties that were set by Forté are preserved.</B.BODY
  68466. ></LABEL
  68467. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68468. >How to model a domain class </L.LABEL
  68469. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  68470. ></RBW-AUTOGEN
  68471. ></RBW-MARKER
  68472. ><RBW-PARABODY>To model a domain class:</RBW-PARABODY
  68473. ></P.PROCEDURE
  68474. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  68475. ></RBW-AUTOGEN
  68476. ></RBW-MARKER
  68477. ><RBW-PARABODY>Draw the domain class and give it a name.</RBW-PARABODY
  68478. ></LN.LIST.NUM
  68479. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  68480. ></RBW-AUTOGEN
  68481. ></RBW-MARKER
  68482. ><RBW-PARABODY>Specify its data attributes and operations, if desired.</RBW-PARABODY
  68483. ></LN.LIST.NUM
  68484. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  68485. ></RBW-AUTOGEN
  68486. ></RBW-MARKER
  68487. ><RBW-PARABODY>Draw another class and name it after the desired Forté nullable DataValue subclass.</RBW-PARABODY
  68488. ></LN.LIST.NUM
  68489. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  68490. ></RBW-AUTOGEN
  68491. ></RBW-MARKER
  68492. ><RBW-PARABODY>Make the first class a subclass of the DataValue class.</RBW-PARABODY
  68493. ></LN.LIST.NUM
  68494. ></LABEL
  68495. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68496. >Example</L.LABEL
  68497. ><B.BODY>The Class Type property of this example class is set to Class, which is the default. The example class is derived from the class TextNullable.</B.BODY
  68498. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00621.unk" origfile="pics/domclas.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  68499. ></FA.FIGURE.ANCHOR
  68500. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68501. >myDomainClass.cex</SL.SUBLABEL
  68502. ><B.BODY></B.BODY
  68503. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  68504. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68505. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; generated by ObjectTeam Forte code generator</EWM.EXAMPLEW.MONO
  68506. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  68507. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; START FORWARD CLASS DECLARATIONS</EWM.EXAMPLEW.MONO
  68508. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>forward TextNullable;</CX5FX5FBULLET.EMPHASIS
  68509. ></EWM.EXAMPLEW.MONO
  68510. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>forward TextData;</CX5FX5FBULLET.EMPHASIS
  68511. ></EWM.EXAMPLEW.MONO
  68512. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; END FORWARD CLASS DECLARATIONS</EWM.EXAMPLEW.MONO
  68513. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68514. ><EWM.EXAMPLEW.MONO>class myDomainClass inherits from <CX5FX5FBULLET.EMPHASIS>Framework.TextNullable</CX5FX5FBULLET.EMPHASIS
  68515. ></EWM.EXAMPLEW.MONO
  68516. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68517. ><EWM.EXAMPLEW.MONO>has private attribute id: short;</EWM.EXAMPLEW.MONO
  68518. ><EWM.EXAMPLEW.MONO>has private attribute name: Framework.TextData;</EWM.EXAMPLEW.MONO
  68519. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68520. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  68521. ><EWM.EXAMPLEW.MONO>has public  method getId: short;</EWM.EXAMPLEW.MONO
  68522. ><EWM.EXAMPLEW.MONO>has public  method setId(input newId: short);</EWM.EXAMPLEW.MONO
  68523. ><EWM.EXAMPLEW.MONO>has public  method getName: copy Framework.TextData;</EWM.EXAMPLEW.MONO
  68524. ><EWM.EXAMPLEW.MONO>has public  method setName(copy input newName: Framework.TextData);</EWM.EXAMPLEW.MONO
  68525. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  68526. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  68527. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  68528. ><EWM.EXAMPLEW.MONO>end CLASS;</EWM.EXAMPLEW.MONO
  68529. ></LABEL
  68530. ></SUBSECTION
  68531. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33655"></RBW-ANCHOR
  68532. >Editing Class Properties</SS.SUBSEC.HEAD
  68533. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68534. >Introduction</L.LABEL
  68535. ><B.BODY>In the Object Design phase, you define properties of a class that control its implementation and accessibility within Forté. The code generated for a class is based on its properties. </B.BODY
  68536. ></LABEL
  68537. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68538. >How to edit class properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for class"></RBW-IDXTERM
  68539. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  68540. ><RBW-IDXTERM TERM1="class property" TERM2="editing"></RBW-IDXTERM
  68541. ></L.LABEL
  68542. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  68543. ></RBW-AUTOGEN
  68544. ></RBW-MARKER
  68545. ><RBW-PARABODY>To edit properties of a class:</RBW-PARABODY
  68546. ></P.PROCEDURE
  68547. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  68548. ></RBW-AUTOGEN
  68549. ></RBW-MARKER
  68550. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  68551. ></LN.LIST.NUM
  68552. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  68553. ></RBW-AUTOGEN
  68554. ></RBW-MARKER
  68555. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  68556. ></LN.LIST.NUM
  68557. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  68558. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  68559. ></RBW-AUTOGEN
  68560. ></RBW-MARKER
  68561. ><RBW-PARABODY>Select the class name.</RBW-PARABODY
  68562. ></LN.LIST.NUM
  68563. ><LR.LIST.RESULT>The class properties appear on the right side of the dialog box.</LR.LIST.RESULT
  68564. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00622.unk" origfile="pics/dbedprcl.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  68565. ></FA2.FIGURE.ANCHOR.2
  68566. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  68567. ></RBW-AUTOGEN
  68568. ></RBW-MARKER
  68569. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  68570. ></LN.LIST.NUM
  68571. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="88p"><COLSPEC COLNAME="2" COLWIDTH="45p"><COLSPEC COLNAME="3" COLWIDTH="190p"><COLSPEC COLNAME="4" COLWIDTH="105p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>property</CELLHEADING
  68572. ></ENTRY
  68573. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>tab</CELLHEADING
  68574. ></ENTRY
  68575. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>specifies</CELLHEADING
  68576. ></ENTRY
  68577. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>see for details</CELLHEADING
  68578. ></ENTRY
  68579. ></RBW-ROW
  68580. ></THEAD
  68581. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Type</CELLBODY
  68582. ></ENTRY
  68583. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  68584. ></ENTRY
  68585. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>If the ObjectTeam class must be generated into a special Forté construction (such as a constant or service object) rather than a Forté class</CELLBODY
  68586. ></ENTRY
  68587. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40407" TYPE="XREF-TEXTCOPY">Handling Special Classes</RBW-XREF
  68588. ></CELLBODY
  68589. ></ENTRY
  68590. ></RBW-ROW
  68591. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  68592. ></ENTRY
  68593. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  68594. ></ENTRY
  68595. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional class comments, which do not appear in generated code</CELLBODY
  68596. ></ENTRY
  68597. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  68598. ></ENTRY
  68599. ></RBW-ROW
  68600. ></TBODY
  68601. ></TGROUP
  68602. ></RBW-TABLE
  68603. ></LABEL
  68604. ></SUBSECTION
  68605. ></SECTION
  68606. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="11407"></RBW-ANCHOR
  68607. >Mapping Attributes</S.SECTION.HEAD
  68608. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68609. >Introduction</L.LABEL
  68610. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="mapping of"></RBW-IDXTERM
  68611. ><RBW-IDXTERM TERM1="mapping" TERM2="attribute"></RBW-IDXTERM
  68612. ><RBW-IDXTERM TERM1="Java, generated" TERM2="attribute"></RBW-IDXTERM
  68613. >ObjectTeam maps data attributes of normal ObjectTeam classes to Forté private or public attributes. You can determine the accessibility (private or public) through the attribute property Access.</B.BODY
  68614. ></LABEL
  68615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68616. >Attribute syntax</L.LABEL
  68617. ><B.BODY>In ObjectTeam, the following syntax is used to specify data attributes for a class:</B.BODY
  68618. ><E.EXAMPLE>[ / | $ | *] name : type = initial&truehy;value</E.EXAMPLE
  68619. ><B.BODY>where</B.BODY
  68620. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="61p"><COLSPEC COLNAME="2" COLWIDTH="123p"><COLSPEC COLNAME="3" COLWIDTH="262p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>special </CELLHEADING
  68621. ><CELLHEADING>CHAR</CELLHEADING
  68622. ></ENTRY
  68623. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>indicates</CELLHEADING
  68624. ></ENTRY
  68625. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>details</CELLHEADING
  68626. ></ENTRY
  68627. ></RBW-ROW
  68628. ></THEAD
  68629. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>/</CELLBODY
  68630. ></ENTRY
  68631. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> a virtual attribute</CELLBODY
  68632. ></ENTRY
  68633. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>See <RBW-XREF REFID="39515" TYPE="XREF-TEXTCOPY">Modeling Virtual Attributes</RBW-XREF
  68634. ></CELLBODY
  68635. ></ENTRY
  68636. ></RBW-ROW
  68637. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$</CELLBODY
  68638. ></ENTRY
  68639. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> a class attribute</CELLBODY
  68640. ></ENTRY
  68641. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Ignored by the Forté code generator</CELLBODY
  68642. ></ENTRY
  68643. ></RBW-ROW
  68644. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>*</CELLBODY
  68645. ></ENTRY
  68646. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> a key attribute</CELLBODY
  68647. ></ENTRY
  68648. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Ignored by the Forté code generator</CELLBODY
  68649. ></ENTRY
  68650. ></RBW-ROW
  68651. ></TBODY
  68652. ></TGROUP
  68653. ></RBW-TABLE
  68654. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  68655. ></RBW-AUTOGEN
  68656. >In Enum classes (see <RBW-XREF REFID="13941" TYPE="XREF-TEXTCOPY">Enum Class</RBW-XREF
  68657. >), leading dollar signs are not ignored.</N.NOTE
  68658. ></LABEL
  68659. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68660. >Data types</L.LABEL
  68661. ><B.BODY>You must specify the data type of each attribute.</B.BODY
  68662. ><B.BODY>See <RBW-XREF REFID="19914" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  68663. > for more information.</B.BODY
  68664. ></LABEL
  68665. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68666. >Initial values</L.LABEL
  68667. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="default value"></RBW-IDXTERM
  68668. ><RBW-IDXTERM TERM1="default value, for attribute"></RBW-IDXTERM
  68669. ><RBW-IDXTERM TERM1="initial value, for attribute"></RBW-IDXTERM
  68670. >You can specify a default value for any attribute. You <CX5FX5FEMPHASIS>must</CX5FX5FEMPHASIS
  68671. > specify a default value for any ObjectTeam attribute that has the Constant property turned on. </B.BODY
  68672. ><B.BODY>See <RBW-XREF REFID="18919" TYPE="XREF-TEXTCOPY">Modeling Constants</RBW-XREF
  68673. > for more information.</B.BODY
  68674. ></LABEL
  68675. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68676. >Attribute properties</L.LABEL
  68677. ><B.BODY>You use attribute properties to provide input to the code generator, such as a special kind of data type and the accessibility of data attributes. </B.BODY
  68678. ><B.BODY>This section describes how to edit attribute properties, and the effect of each property.</B.BODY
  68679. ></LABEL
  68680. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68681. >In this section</L.LABEL
  68682. ><B.BODY>This section contains the following topics:</B.BODY
  68683. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  68684. ></ENTRY
  68685. ></RBW-ROW
  68686. ></THEAD
  68687. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19914" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types&rbwtab;3–13</RBW-XREF
  68688. ></SB.SECTION.BLOCK.TABLE
  68689. ></ENTRY
  68690. ></RBW-ROW
  68691. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29362" TYPE="XREF-TEXTCOPY">Editing Attribute Properties&rbwtab;3–14</RBW-XREF
  68692. ></SB.SECTION.BLOCK.TABLE
  68693. ></ENTRY
  68694. ></RBW-ROW
  68695. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34064" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Data Attributes&rbwtab;3–16</RBW-XREF
  68696. ></SB.SECTION.BLOCK.TABLE
  68697. ></ENTRY
  68698. ></RBW-ROW
  68699. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24666" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes&rbwtab;3–17</RBW-XREF
  68700. ></SB.SECTION.BLOCK.TABLE
  68701. ></ENTRY
  68702. ></RBW-ROW
  68703. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39515" TYPE="XREF-TEXTCOPY">Modeling Virtual Attributes&rbwtab;3–18</RBW-XREF
  68704. ></SB.SECTION.BLOCK.TABLE
  68705. ></ENTRY
  68706. ></RBW-ROW
  68707. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18919" TYPE="XREF-TEXTCOPY">Modeling Constants&rbwtab;3–20</RBW-XREF
  68708. ></SB.SECTION.BLOCK.TABLE
  68709. ></ENTRY
  68710. ></RBW-ROW
  68711. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17574" TYPE="XREF-TEXTCOPY">Modifying Types&rbwtab;3–21</RBW-XREF
  68712. ></SB.SECTION.BLOCK.TABLE
  68713. ></ENTRY
  68714. ></RBW-ROW
  68715. ></TBODY
  68716. ></TGROUP
  68717. ></RBW-TABLE
  68718. ></LABEL
  68719. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19914"></RBW-ANCHOR
  68720. >Specifying Attribute Data Types</SS.SUBSEC.HEAD
  68721. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68722. >Data types</L.LABEL
  68723. ><B.BODY><RBW-IDXTERM TERM1="data type" TERM2="for attribute"></RBW-IDXTERM
  68724. ><RBW-IDXTERM TERM1="attribute" TERM2="data type"></RBW-IDXTERM
  68725. >Specify the data type of an attribute with either a standard data type, such as short or char, or the name of another class. For example:</B.BODY
  68726. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="150p"><COLSPEC COLNAME="2" COLWIDTH="298p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attr:short</CELLBODY
  68727. ></ENTRY
  68728. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>(Forté standard type)</CELLBODY
  68729. ></ENTRY
  68730. ></RBW-ROW
  68731. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attr:TextData</CELLBODY
  68732. ></ENTRY
  68733. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>(Forté class)</CELLBODY
  68734. ></ENTRY
  68735. ></RBW-ROW
  68736. ></TBODY
  68737. ></TGROUP
  68738. ></RBW-TABLE
  68739. ></LABEL
  68740. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68741. >Standard data types</L.LABEL
  68742. ><B.BODY>The standard data types are defined in the <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="stand_types customization file"></RBW-IDXTERM
  68743. >stand_types</CX5FX5FFILE.NAME
  68744. > customization file. These are the data types that are valid in the Object Design phase.</B.BODY
  68745. ><B.BODY>The translation between standard data types and Forté data types is defined by the <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="lang_types customization file"></RBW-IDXTERM
  68746. >lang_types</CX5FX5FFILE.NAME
  68747. > customization file. These are the translations used by the Forté code generator.</B.BODY
  68748. ></LABEL
  68749. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68750. >Modifying data types</L.LABEL
  68751. ><B.BODY>Attribute data types can be modified through the attribute property Type Modifier. </B.BODY
  68752. ><B.BODY>See <RBW-XREF REFID="17574" TYPE="XREF-TEXTCOPY">Modifying Types</RBW-XREF
  68753. > for details.</B.BODY
  68754. ></LABEL
  68755. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68756. >Customizing the standard data types</L.LABEL
  68757. ><B.BODY>You can add additional data types to the list of standard types by editing the <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  68758. > customization file. If you add additional standard types, you must also provide translations for those data types by editing the <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  68759. > customization file.</B.BODY
  68760. ><B.BODY>By default, the <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  68761. > and <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  68762. > customization files are defined on Corporate level. You can edit the customization files at Corporate level, or create and edit them at a lower level, such as Project level. (The customization files at the lower level override the customization files at the higher level.)</B.BODY
  68763. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68764. >For more information</SL.SUBLABEL
  68765. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  68766. ><CX5FX5FTITLE></CX5FX5FTITLE
  68767. > describes how to create and edit customization files. The <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  68768. > and <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  68769. > customization files are ASCII files that can be edited using any text editor.</B.BODY
  68770. ></LABEL
  68771. ></SUBSECTION
  68772. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29362"></RBW-ANCHOR
  68773. >Editing Attribute Properties</SS.SUBSEC.HEAD
  68774. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68775. >Introduction</L.LABEL
  68776. ><B.BODY>In the Object Design phase, you define properties of the data attributes. These properties define the accessibility of the attribute, as well as the behavior of the attributes. The code generated for a data attribute is based on its properties.</B.BODY
  68777. ></LABEL
  68778. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68779. >How to edit attribute properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for attribute"></RBW-IDXTERM
  68780. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  68781. ><RBW-IDXTERM TERM1="attribute property" TERM2="editing"></RBW-IDXTERM
  68782. ></L.LABEL
  68783. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  68784. ></RBW-AUTOGEN
  68785. ></RBW-MARKER
  68786. ><RBW-PARABODY>To edit attribute properties:</RBW-PARABODY
  68787. ></P.PROCEDURE
  68788. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  68789. ></RBW-AUTOGEN
  68790. ></RBW-MARKER
  68791. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  68792. ></LN.LIST.NUM
  68793. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  68794. ></RBW-AUTOGEN
  68795. ></RBW-MARKER
  68796. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  68797. ></LN.LIST.NUM
  68798. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  68799. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  68800. ></RBW-AUTOGEN
  68801. ></RBW-MARKER
  68802. ><RBW-PARABODY>Select an attribute name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  68803. ></LN.LIST.NUM
  68804. ><LR.LIST.RESULT>The attribute properties appear on the right side of the dialog box.</LR.LIST.RESULT
  68805. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00623.unk" origfile="pics/dbedprat.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  68806. ></FA2.FIGURE.ANCHOR.2
  68807. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  68808. ></RBW-AUTOGEN
  68809. ></RBW-MARKER
  68810. ><RBW-PARABODY>Select the desired properties. (The following subsections describe each property in greater detail.)</RBW-PARABODY
  68811. ></LN.LIST.NUM
  68812. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="75p"><COLSPEC COLNAME="2" COLWIDTH="51p"><COLSPEC COLNAME="3" COLWIDTH="195p"><COLSPEC COLNAME="4" COLWIDTH="108p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>property</CELLHEADING
  68813. ></ENTRY
  68814. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>tab</CELLHEADING
  68815. ></ENTRY
  68816. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>specifies</CELLHEADING
  68817. ></ENTRY
  68818. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>see for details</CELLHEADING
  68819. ></ENTRY
  68820. ></RBW-ROW
  68821. ></THEAD
  68822. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type </CELLBODY
  68823. ><CELLBODY>Modifier</CELLBODY
  68824. ></ENTRY
  68825. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  68826. ></ENTRY
  68827. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>A particular kind of data type for the attribute, such as an array or a pointer, or a user&truehy;defined type modifier</CELLBODY
  68828. ></ENTRY
  68829. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17574" TYPE="XREF-TEXTCOPY">Modifying Types</RBW-XREF
  68830. ></CELLBODY
  68831. ></ENTRY
  68832. ></RBW-ROW
  68833. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant</CELLBODY
  68834. ></ENTRY
  68835. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  68836. ></ENTRY
  68837. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>An ObjectTeam data attribute to be a Forté constant</CELLBODY
  68838. ></ENTRY
  68839. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="18919" TYPE="XREF-TEXTCOPY">Modeling Constants</RBW-XREF
  68840. ></CELLBODY
  68841. ></ENTRY
  68842. ></RBW-ROW
  68843. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access </CELLBODY
  68844. ></ENTRY
  68845. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  68846. ></ENTRY
  68847. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The accessibility of the data attribute</CELLBODY
  68848. ></ENTRY
  68849. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34064" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Data Attributes</RBW-XREF
  68850. ></CELLBODY
  68851. ></ENTRY
  68852. ></RBW-ROW
  68853. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access </CELLBODY
  68854. ><CELLBODY>Methods</CELLBODY
  68855. ></ENTRY
  68856. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  68857. ></ENTRY
  68858. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The access methods for the data attribute</CELLBODY
  68859. ></ENTRY
  68860. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24666" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes</RBW-XREF
  68861. ></CELLBODY
  68862. ></ENTRY
  68863. ></RBW-ROW
  68864. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Get </CELLBODY
  68865. ><CELLBODY>Expression</CELLBODY
  68866. ></ENTRY
  68867. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Virtual</CELLBODY
  68868. ></ENTRY
  68869. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The Get Expression of a virtual attribute</CELLBODY
  68870. ></ENTRY
  68871. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39515" TYPE="XREF-TEXTCOPY">Modeling Virtual Attributes</RBW-XREF
  68872. ></CELLBODY
  68873. ></ENTRY
  68874. ></RBW-ROW
  68875. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set </CELLBODY
  68876. ><CELLBODY>Expression</CELLBODY
  68877. ></ENTRY
  68878. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Virtual</CELLBODY
  68879. ></ENTRY
  68880. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The Set Expression of a virtual attribute</CELLBODY
  68881. ></ENTRY
  68882. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39515" TYPE="XREF-TEXTCOPY">Modeling Virtual Attributes</RBW-XREF
  68883. ></CELLBODY
  68884. ></ENTRY
  68885. ></RBW-ROW
  68886. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  68887. ></ENTRY
  68888. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  68889. ></ENTRY
  68890. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional attribute comments, which do not appear in generated code</CELLBODY
  68891. ></ENTRY
  68892. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  68893. ></ENTRY
  68894. ></RBW-ROW
  68895. ></TBODY
  68896. ></TGROUP
  68897. ></RBW-TABLE
  68898. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  68899. ></RBW-AUTOGEN
  68900. ></RBW-MARKER
  68901. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  68902. ></LN.LIST.NUM
  68903. ></LABEL
  68904. ></SUBSECTION
  68905. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34064"></RBW-ANCHOR
  68906. >Specifying Accessibility of Data Attributes</SS.SUBSEC.HEAD
  68907. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68908. >Introduction</L.LABEL
  68909. ><B.BODY><RBW-IDXTERM TERM1="attribute property" TERM2="access"></RBW-IDXTERM
  68910. ><RBW-IDXTERM TERM1="access property" TERM2="for attribute"></RBW-IDXTERM
  68911. >Edit the Access property to specify the accessibility of a data attribute. You find this property on the Misc tab in the Edit Properties dialog box when the Attribute Name is selected.</B.BODY
  68912. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68913. ></RBW-AUTOGEN
  68914. ></RBW-MARKER
  68915. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public</CX5FX5FBULLET.EMPHASIS
  68916. >. The attribute is accessible anywhere that the class name is accessible.</RBW-PARABODY
  68917. ></LB.LIST.BULLET
  68918. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68919. ></RBW-AUTOGEN
  68920. ></RBW-MARKER
  68921. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private (default)</CX5FX5FBULLET.EMPHASIS
  68922. >. The attribute is accessible only within the class body of the class in which the attribute is declared.</RBW-PARABODY
  68923. ></LB.LIST.BULLET
  68924. ></LABEL
  68925. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68926. >Example</L.LABEL
  68927. ><B.BODY>The code excerpts below show how this property affects code generation for the Amount attribute of the Account class.</B.BODY
  68928. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68929. >Private</SL.SUBLABEL
  68930. ><B.BODY></B.BODY
  68931. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  68932. ><EM.EXAMPLE.MONO>class Account inherits from Framework.Object</EM.EXAMPLE.MONO
  68933. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  68934. ><EM.EXAMPLE.MONO>has <CX5FX5FBULLET.EMPHASIS>private</CX5FX5FBULLET.EMPHASIS
  68935. > attribute amount: int;</EM.EXAMPLE.MONO
  68936. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  68937. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68938. >Public </SL.SUBLABEL
  68939. ><B.BODY></B.BODY
  68940. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  68941. ><EM.EXAMPLE.MONO>class Account inherits from Framework.Object</EM.EXAMPLE.MONO
  68942. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  68943. ><EM.EXAMPLE.MONO>has <CX5FX5FBULLET.EMPHASIS>public</CX5FX5FBULLET.EMPHASIS
  68944. > attribute amount: int;</EM.EXAMPLE.MONO
  68945. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  68946. ></LABEL
  68947. ></SUBSECTION
  68948. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24666"></RBW-ANCHOR
  68949. >Specifying Access Methods for Data Attributes</SS.SUBSEC.HEAD
  68950. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68951. >Introduction</L.LABEL
  68952. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="access method"></RBW-IDXTERM
  68953. ><RBW-IDXTERM TERM1="attribute property" TERM2="access method"></RBW-IDXTERM
  68954. ><RBW-IDXTERM TERM1="access property" TERM2="for attribute access method"></RBW-IDXTERM
  68955. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  68956. ><RBW-IDXTERM TERM1="Java, generated" TERM2="attribute access method"></RBW-IDXTERM
  68957. ><RBW-IDXTERM TERM1="attribute access method"></RBW-IDXTERM
  68958. ><RBW-IDXTERM TERM1="method" TERM2="attribute access"></RBW-IDXTERM
  68959. >An <CX5FX5FEMPHASIS>attribute access method</CX5FX5FEMPHASIS
  68960. > is a special type of method that gets (reads) and sets (writes) an attribute’s value. </B.BODY
  68961. ><B.BODY>Use the Attribute Access Methods group box on the Access tab of the Edit Properties dialog box to specify what accessors are generated for the data attribute. You find this group box on the Misc tab in the Edit Properties dialog box when the Attribute Name is selected.</B.BODY
  68962. ></LABEL
  68963. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68964. >Read and Write fields</L.LABEL
  68965. ><B.BODY>The Attribute Access Methods group box allows you to specify the access method for both read and write. The setting you specify in the Read field affects the Get attribute access method. The setting you specify in the Write field affects the Set attribute access method.</B.BODY
  68966. ></LABEL
  68967. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68968. >Access methods</L.LABEL
  68969. ><B.BODY>The following values are allowed for both Read and Write fields. You can enter the same or different values in the two fields.</B.BODY
  68970. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68971. ></RBW-AUTOGEN
  68972. ></RBW-MARKER
  68973. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  68974. >. The generated method is accessible anywhere the class name is accessible.</RBW-PARABODY
  68975. ></LB.LIST.BULLET
  68976. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68977. ></RBW-AUTOGEN
  68978. ></RBW-MARKER
  68979. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  68980. >. The generated method is only accessible in the body of the class in which the attribute is declared.</RBW-PARABODY
  68981. ></LB.LIST.BULLET
  68982. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  68983. ></RBW-AUTOGEN
  68984. ></RBW-MARKER
  68985. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  68986. >. The method is not generated.</RBW-PARABODY
  68987. ></LB.LIST.BULLET
  68988. ></LABEL
  68989. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  68990. >Example</L.LABEL
  68991. ><B.BODY>The code excerpt below shows the code generated for the Account class, which has one attribute, Amount. The attribute’s Read and Write access methods are both specified as Public (the default).</B.BODY
  68992. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  68993. ><EM.EXAMPLE.MONO>class Account inherits from Framework.Object</EM.EXAMPLE.MONO
  68994. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  68995. ><EM.EXAMPLE.MONO>has private attribute amount: int;</EM.EXAMPLE.MONO
  68996. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  68997. ><EM.EXAMPLE.MONO>has <CX5FX5FBULLET.EMPHASIS>public  method getAmount</CX5FX5FBULLET.EMPHASIS
  68998. >: int;</EM.EXAMPLE.MONO
  68999. ><EM.EXAMPLE.MONO>has <CX5FX5FBULLET.EMPHASIS>public  method setAmount</CX5FX5FBULLET.EMPHASIS
  69000. >(input newAmount: int);</EM.EXAMPLE.MONO
  69001. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69002. ></LABEL
  69003. ></SUBSECTION
  69004. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39515"></RBW-ANCHOR
  69005. >Modeling Virtual Attributes</SS.SUBSEC.HEAD
  69006. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69007. >Introduction</L.LABEL
  69008. ><B.BODY>Virtual attributes in Forté are attributes that are based on a calculation rather than a value or a point to an object. A virtual attribute consists of two expressions: one that is evaluated when the program sets the value of the attribute and another that is evaluated when the program gets the value of the attribute.</B.BODY
  69009. ></LABEL
  69010. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69011. >How to model a virtual attribute</L.LABEL
  69012. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  69013. ></RBW-AUTOGEN
  69014. ></RBW-MARKER
  69015. ><RBW-PARABODY>To model a virtual attribute in ObjectTeam:</RBW-PARABODY
  69016. ></P.PROCEDURE
  69017. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  69018. ></RBW-AUTOGEN
  69019. ></RBW-MARKER
  69020. ><RBW-PARABODY>Prefix the attribute of your choice with a forward slash (/), for example:</RBW-PARABODY
  69021. ></LN.LIST.NUM
  69022. ><EM.EXAMPLE.MONO>/IDisNull:boolean</EM.EXAMPLE.MONO
  69023. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  69024. ></RBW-AUTOGEN
  69025. >The forward slash is used in ObjectTeam to indicate a derived attribute.</N2.NOTE.2
  69026. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  69027. ></RBW-AUTOGEN
  69028. ></RBW-MARKER
  69029. ><RBW-PARABODY>Enter a Get Expression property for this attribute, for example:</RBW-PARABODY
  69030. ></LN.LIST.NUM
  69031. ><EM.EXAMPLE.MONO>CheckIDNullValue</EM.EXAMPLE.MONO
  69032. ><LT.LIST.TEXT>You find the Get Expression field on the Virtual tab in the Edit Properties dialog box.</LT.LIST.TEXT
  69033. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00624.unk" origfile="pics/edvirtpr.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  69034. ></FA2.FIGURE.ANCHOR.2
  69035. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  69036. ></RBW-AUTOGEN
  69037. ></RBW-MARKER
  69038. ><RBW-PARABODY>Enter a Set Expression property for this attribute.</RBW-PARABODY
  69039. ></LN.LIST.NUM
  69040. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  69041. ></RBW-AUTOGEN
  69042. ></RBW-MARKER
  69043. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  69044. ></LN.LIST.NUM
  69045. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69046. >Example (ObjectTeam)</SL.SUBLABEL
  69047. ><B.BODY></B.BODY
  69048. ><B.BODY>The following expression is specified as value for the ObjectTeam property Set Expression:</B.BODY
  69049. ><EM.EXAMPLE.MONO>SetIDNullValue(isNull)</EM.EXAMPLE.MONO
  69050. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69051. >Generated .cex file</SL.SUBLABEL
  69052. ><B.BODY></B.BODY
  69053. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69054. ><EWM.EXAMPLEW.MONO>has private <CX5FX5FBULLET.EMPHASIS>virtual</CX5FX5FBULLET.EMPHASIS
  69055. > attribute IDisNull: boolean = (<CX5FX5FBULLET.EMPHASIS>get =CheckIDNullValue, set =SetIDNullValue(isNull)</CX5FX5FBULLET.EMPHASIS
  69056. >);</EWM.EXAMPLEW.MONO
  69057. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69058. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  69059. ></RBW-AUTOGEN
  69060. >Initial values for virtual attributes are ignored by the Forté code generator.</N.NOTE
  69061. ></LABEL
  69062. ></SUBSECTION
  69063. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18919"></RBW-ANCHOR
  69064. >Modeling Constants</SS.SUBSEC.HEAD
  69065. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69066. >Introduction</L.LABEL
  69067. ><B.BODY>A constant is a string or numeric value with a name. This name can be used throughout the Forté code.</B.BODY
  69068. ></LABEL
  69069. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69070. >How to model a constant</L.LABEL
  69071. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  69072. ></RBW-AUTOGEN
  69073. ></RBW-MARKER
  69074. ><RBW-PARABODY>To model a constant in ObjectTeam:</RBW-PARABODY
  69075. ></P.PROCEDURE
  69076. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  69077. ></RBW-AUTOGEN
  69078. ></RBW-MARKER
  69079. ><RBW-PARABODY>Specify a data attribute with an initial value, for example:</RBW-PARABODY
  69080. ></LN.LIST.NUM
  69081. ><EM.EXAMPLE.MONO>size:int=300</EM.EXAMPLE.MONO
  69082. ><LT.LIST.TEXT>The name of the attribute will become the name of the constant and the initial value will become the constant value. </LT.LIST.TEXT
  69083. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  69084. ></RBW-AUTOGEN
  69085. >The type of the attribute is not important, but must be provided.</N2.NOTE.2
  69086. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  69087. ></RBW-AUTOGEN
  69088. ></RBW-MARKER
  69089. ><RBW-PARABODY>Turn on the property Constant for the attribute.</RBW-PARABODY
  69090. ></LN.LIST.NUM
  69091. ><LT.LIST.TEXT>You find the Constant check box on the Misc tab in the Edit Properties dialog box when you select the Attribute Name.</LT.LIST.TEXT
  69092. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  69093. ></RBW-AUTOGEN
  69094. ></RBW-MARKER
  69095. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  69096. ></LN.LIST.NUM
  69097. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69098. >Example (ObjectTeam)</SL.SUBLABEL
  69099. ><B.BODY></B.BODY
  69100. ><B.BODY>The attribute size in this example is an example of a constant:</B.BODY
  69101. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00625.unk" origfile="pics/constatt.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  69102. ></FA.FIGURE.ANCHOR
  69103. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69104. >Generated .cex file</SL.SUBLABEL
  69105. ><B.BODY></B.BODY
  69106. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69107. ><EM.EXAMPLE.MONO>has private <CX5FX5FBULLET.EMPHASIS>constant</CX5FX5FBULLET.EMPHASIS
  69108. > size = 300;</EM.EXAMPLE.MONO
  69109. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69110. ></LABEL
  69111. ></SUBSECTION
  69112. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17574"></RBW-ANCHOR
  69113. >Modifying Types</SS.SUBSEC.HEAD
  69114. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69115. >Introduction</L.LABEL
  69116. ><B.BODY>You can use the Type Modifier property, which can be found on the Misc tab in the Edit Properties dialog box, to modify the type of:</B.BODY
  69117. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69118. ></RBW-AUTOGEN
  69119. ></RBW-MARKER
  69120. ><RBW-PARABODY>a data attribute</RBW-PARABODY
  69121. ></LB.LIST.BULLET
  69122. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69123. ></RBW-AUTOGEN
  69124. ></RBW-MARKER
  69125. ><RBW-PARABODY>a parameter</RBW-PARABODY
  69126. ></LB.LIST.BULLET
  69127. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69128. ></RBW-AUTOGEN
  69129. ></RBW-MARKER
  69130. ><RBW-PARABODY>a method (return type)</RBW-PARABODY
  69131. ></LB.LIST.BULLET
  69132. ><B.BODY>The following types can be modeled in ObjectTeam:</B.BODY
  69133. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69134. ></RBW-AUTOGEN
  69135. ></RBW-MARKER
  69136. ><RBW-PARABODY><RBW-XREF REFID="16736" TYPE="XREF-TEXTCOPY">Modifying Forté Array types</RBW-XREF
  69137. ></RBW-PARABODY
  69138. ></LB.LIST.BULLET
  69139. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69140. ></RBW-AUTOGEN
  69141. ></RBW-MARKER
  69142. ><RBW-PARABODY><RBW-XREF REFID="26519" TYPE="XREF-TEXTCOPY">Modifying simple C&truehy;style array types</RBW-XREF
  69143. ></RBW-PARABODY
  69144. ></LB.LIST.BULLET
  69145. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69146. ></RBW-AUTOGEN
  69147. ></RBW-MARKER
  69148. ><RBW-PARABODY><RBW-XREF REFID="26586" TYPE="XREF-TEXTCOPY">Modifying pointer types</RBW-XREF
  69149. ></RBW-PARABODY
  69150. ></LB.LIST.BULLET
  69151. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69152. ></RBW-AUTOGEN
  69153. ></RBW-MARKER
  69154. ><RBW-PARABODY><RBW-XREF REFID="34638" TYPE="XREF-TEXTCOPY">Modifying user&truehy;defined attribute types</RBW-XREF
  69155. ></RBW-PARABODY
  69156. ></LB.LIST.BULLET
  69157. ></LABEL
  69158. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69159. ><RBW-ANCHOR ID="16736"></RBW-ANCHOR
  69160. >Modifying Forté Array types</L.LABEL
  69161. ><B.BODY>In Forté, you can use the prefabricated classes Array and LargeArray for type definition.</B.BODY
  69162. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  69163. ></RBW-AUTOGEN
  69164. ></RBW-MARKER
  69165. ><RBW-PARABODY>To model a Forté Array as type:</RBW-PARABODY
  69166. ></P.PROCEDURE
  69167. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  69168. ></RBW-AUTOGEN
  69169. ></RBW-MARKER
  69170. ><RBW-PARABODY>Specify a data attribute, a parameter or a method with a class as type, for example:</RBW-PARABODY
  69171. ></LN.LIST.NUM
  69172. ><EM.EXAMPLE.MONO>name:TextData</EM.EXAMPLE.MONO
  69173. ><LT.LIST.TEXT>The class must exist in a system of the current phase.</LT.LIST.TEXT
  69174. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  69175. ></RBW-AUTOGEN
  69176. ></RBW-MARKER
  69177. ><RBW-PARABODY>Set the Type Modifier property for the attribute, the parameter or the method to Array or LargeArray.</RBW-PARABODY
  69178. ></LN.LIST.NUM
  69179. ><LT.LIST.TEXT>You find the Type Modifier property on the Misc tab in the Edit Properties dialog box. Use Array for arrays smaller than 256 entries, and LargeArray for arrays beyond this limit. </LT.LIST.TEXT
  69180. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  69181. ></RBW-AUTOGEN
  69182. ></RBW-MARKER
  69183. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  69184. ></LN.LIST.NUM
  69185. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69186. >Example (ObjectTeam)</SL.SUBLABEL
  69187. ><B.BODY></B.BODY
  69188. ><B.BODY>The Type Modifier of the data attribute type TextData in the following example has been set to LargeArray:</B.BODY
  69189. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00626.unk" origfile="pics/array.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  69190. ></FA.FIGURE.ANCHOR
  69191. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69192. >Generated .cex file</SL.SUBLABEL
  69193. ><B.BODY></B.BODY
  69194. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69195. ><EWM.EXAMPLEW.MONO>has private attribute name: <CX5FX5FBULLET.EMPHASIS>Framework.LargeArray of Framework.TextData</CX5FX5FBULLET.EMPHASIS
  69196. >;</EWM.EXAMPLEW.MONO
  69197. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69198. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  69199. ></LABEL
  69200. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69201. ><RBW-ANCHOR ID="26519"></RBW-ANCHOR
  69202. >Modifying simple C&truehy;style array types</L.LABEL
  69203. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  69204. ></RBW-AUTOGEN
  69205. ></RBW-MARKER
  69206. ><RBW-PARABODY>To model a simple C&truehy;style array as type, specify a standard type for the attribute, the parameter or the method, and use an integer between square brackets to indicate the upper bounds of the array.</RBW-PARABODY
  69207. ></P.PROCEDURE
  69208. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69209. >Example (ObjectTeam data attribute)</SL.SUBLABEL
  69210. ><B.BODY></B.BODY
  69211. ><EM.EXAMPLE.MONO>name:char[20]</EM.EXAMPLE.MONO
  69212. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69213. >Generated .cex file</SL.SUBLABEL
  69214. ><B.BODY></B.BODY
  69215. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69216. ><EM.EXAMPLE.MONO>has private attribute name: <CX5FX5FBULLET.EMPHASIS>array[20] of char</CX5FX5FBULLET.EMPHASIS
  69217. >;</EM.EXAMPLE.MONO
  69218. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69219. ></LABEL
  69220. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69221. ><RBW-ANCHOR ID="26586"></RBW-ANCHOR
  69222. >Modifying pointer types</L.LABEL
  69223. ><B.BODY>In Forté, a pointer to a specific data type or a specific class can be used for attribute type definition. You can model such an attribute type in ObjectTeam by setting the Type Modifier property to Pointer.</B.BODY
  69224. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  69225. ></RBW-AUTOGEN
  69226. ></RBW-MARKER
  69227. ><RBW-PARABODY>To model a pointer to a data type as attribute type:</RBW-PARABODY
  69228. ></P.PROCEDURE
  69229. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  69230. ></RBW-AUTOGEN
  69231. ></RBW-MARKER
  69232. ><RBW-PARABODY>Specify a standard type or a class as attribute type.</RBW-PARABODY
  69233. ></LN.LIST.NUM
  69234. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  69235. ></RBW-AUTOGEN
  69236. ></RBW-MARKER
  69237. ><RBW-PARABODY>Set the Type Modifier property for this attribute on Pointer.</RBW-PARABODY
  69238. ></LN.LIST.NUM
  69239. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  69240. ></RBW-AUTOGEN
  69241. ></RBW-MARKER
  69242. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  69243. ></LN.LIST.NUM
  69244. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69245. >Example (ObjectTeam data attribute)</SL.SUBLABEL
  69246. ><B.BODY></B.BODY
  69247. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam data attribute</CELLHEADING
  69248. ></ENTRY
  69249. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>type</CELLHEADING
  69250. ></ENTRY
  69251. ></RBW-ROW
  69252. ></THEAD
  69253. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>name:char[20]</CELLBODY
  69254. ></ENTRY
  69255. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Standard type</CELLBODY
  69256. ></ENTRY
  69257. ></RBW-ROW
  69258. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>name:TextData</CELLBODY
  69259. ></ENTRY
  69260. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class type</CELLBODY
  69261. ></ENTRY
  69262. ></RBW-ROW
  69263. ></TBODY
  69264. ></TGROUP
  69265. ></RBW-TABLE
  69266. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69267. >Generated .cex file (for standard type)</SL.SUBLABEL
  69268. ><B.BODY></B.BODY
  69269. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69270. ><EWM.EXAMPLEW.MONO>has private attribute name: <CX5FX5FBULLET.EMPHASIS>pointer to array[20] of char</CX5FX5FBULLET.EMPHASIS
  69271. >;</EWM.EXAMPLEW.MONO
  69272. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69273. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69274. >Generated .cex file (for class type)</SL.SUBLABEL
  69275. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  69276. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69277. ><EWM.EXAMPLEW.MONO>has private attribute address: <CX5FX5FBULLET.EMPHASIS>pointer to Framework.TextData</CX5FX5FBULLET.EMPHASIS
  69278. >;</EWM.EXAMPLEW.MONO
  69279. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69280. ></LABEL
  69281. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69282. ><RBW-ANCHOR ID="34638"></RBW-ANCHOR
  69283. >Modifying user&truehy;defined attribute types</L.LABEL
  69284. ><B.BODY>In Forté you can define a variety of attribute types; class types as well as (derived) C&truehy;data types. The most common types can be modified in ObjectTeam by selecting the appropriate Type Modifier.</B.BODY
  69285. ><B.BODY>However, you can modify your own attribute type in ObjectTeam by entering the required Forté code in the Type Modifier field.</B.BODY
  69286. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  69287. ></RBW-AUTOGEN
  69288. >Since the Forté code generator does not check whether the code you enter is valid, illegal Forté code may be generated.</W.WARNING
  69289. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69290. >Example</SL.SUBLABEL
  69291. ><B.BODY>To generate a construction like the following in Forté:</B.BODY
  69292. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69293. ><EM.EXAMPLE.MONO>has private attribute name: <CX5FX5FBULLET.EMPHASIS>array[5] [3..10] of char</CX5FX5FBULLET.EMPHASIS
  69294. >;</EM.EXAMPLE.MONO
  69295. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69296. ><B.BODY>Enter the following Forté code in the Type Modifier field:</B.BODY
  69297. ><EM.EXAMPLE.MONO>array [5] [3..10] of $name</EM.EXAMPLE.MONO
  69298. ><B.BODY>During code generation, the variable <CX5FX5FINPUT>$name</CX5FX5FINPUT
  69299. > is substituted by the attribute’s data type, which is <CX5FX5FINPUT>char</CX5FX5FINPUT
  69300. > in this example. The generated attribute type is the type you wanted to generate.</B.BODY
  69301. ><B.BODY>Strictly speaking, the addition <CX5FX5FINPUT>$name</CX5FX5FINPUT
  69302. > is not required if a data type has been provided. However, it makes the code more readable.</B.BODY
  69303. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  69304. ></RBW-AUTOGEN
  69305. >In this example a special form of a C&truehy;style array is specified, but you can use the Type Modifier field to enter any Forté code in order to specify the attribute’s type. </N.NOTE
  69306. ></LABEL
  69307. ></SUBSECTION
  69308. ></SECTION
  69309. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="29516"></RBW-ANCHOR
  69310. >Mapping Operations</S.SECTION.HEAD
  69311. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69312. ><RBW-ANCHOR ID="31495"></RBW-ANCHOR
  69313. >Introduction</L.LABEL
  69314. ><B.BODY>An operation defined for an ObjectTeam class can be generated in the following Forté elements:</B.BODY
  69315. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="304p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>forte element</CELLHEADING
  69316. ></ENTRY
  69317. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>details</CELLHEADING
  69318. ></ENTRY
  69319. ></RBW-ROW
  69320. ></THEAD
  69321. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method (default)</CELLBODY
  69322. ></ENTRY
  69323. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="26111" TYPE="XREF-TEXTCOPY">Modeling Methods</RBW-XREF
  69324. ></CELLBODY
  69325. ></ENTRY
  69326. ></RBW-ROW
  69327. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  69328. ></ENTRY
  69329. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12760" TYPE="XREF-TEXTCOPY">Modeling Events</RBW-XREF
  69330. ></CELLBODY
  69331. ></ENTRY
  69332. ></RBW-ROW
  69333. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event Handler</CELLBODY
  69334. ></ENTRY
  69335. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12454" TYPE="XREF-TEXTCOPY">Modeling Event Handlers</RBW-XREF
  69336. ></CELLBODY
  69337. ></ENTRY
  69338. ></RBW-ROW
  69339. ></TBODY
  69340. ></TGROUP
  69341. ></RBW-TABLE
  69342. ><B.BODY>You indicate through the operation property Operation Type into which Forté element your operation must be generated. The way you model your operation and the set of properties you can specify depend on this property.</B.BODY
  69343. ></LABEL
  69344. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69345. >Operation syntax</L.LABEL
  69346. ><B.BODY>In ObjectTeam, you use the following syntax to specify operations for a class:</B.BODY
  69347. ><E.EXAMPLE>[ $ ] name ( [ parameter&truehy;list ] ) [ : return_type ] [ {abstract} ]</E.EXAMPLE
  69348. ><B.BODY>where</B.BODY
  69349. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69350. ></RBW-AUTOGEN
  69351. ></RBW-MARKER
  69352. ><RBW-PARABODY>$ indicates a class feature.</RBW-PARABODY
  69353. ></LB.LIST.BULLET
  69354. ><LT.LIST.TEXT>Forté does not support class features; therefore, this indicator is ignored by the code generator. It is only meaningful in the method<CX5FX5FINPUT> $create</CX5FX5FINPUT
  69355. >.</LT.LIST.TEXT
  69356. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69357. ></RBW-AUTOGEN
  69358. ></RBW-MARKER
  69359. ><RBW-PARABODY><CX5FX5FVARIABLE>name</CX5FX5FVARIABLE
  69360. > is the operation name</RBW-PARABODY
  69361. ></LB.LIST.BULLET
  69362. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  69363. ></RBW-AUTOGEN
  69364. >You can enter a new name here, or, if you want to overload or override a method, the name of the method you want to overload or override.</T2.TIP.2
  69365. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69366. ></RBW-AUTOGEN
  69367. ></RBW-MARKER
  69368. ><RBW-PARABODY><CX5FX5FVARIABLE>parameter&truehy;list</CX5FX5FVARIABLE
  69369. > is a comma&truehy;separated list of parameters, where each parameter is specified as follows:</RBW-PARABODY
  69370. ></LB.LIST.BULLET
  69371. ><EM.EXAMPLE.MONO>parameter_name:data_type</EM.EXAMPLE.MONO
  69372. ><LT.LIST.TEXT>For more information on parameters, refer to <RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Defining Parameters</RBW-XREF
  69373. >.</LT.LIST.TEXT
  69374. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69375. ></RBW-AUTOGEN
  69376. ></RBW-MARKER
  69377. ><RBW-PARABODY><CX5FX5FVARIABLE>return_type</CX5FX5FVARIABLE
  69378. > is either a standard type or a class. </RBW-PARABODY
  69379. ></LB.LIST.BULLET
  69380. ><LT.LIST.TEXT>For more information on return types, refer to <RBW-XREF REFID="26111" TYPE="XREF-TEXTCOPY">Modeling Methods</RBW-XREF
  69381. >.</LT.LIST.TEXT
  69382. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69383. ></RBW-AUTOGEN
  69384. ></RBW-MARKER
  69385. ><RBW-PARABODY><CX5FX5FINPUT>{abstract}</CX5FX5FINPUT
  69386. > indicates an abstract operation. Forté does not support abstract operations; therefore, this indicator is ignored by the code generator.</RBW-PARABODY
  69387. ></LB.LIST.BULLET
  69388. ></LABEL
  69389. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69390. >In this section</L.LABEL
  69391. ><B.BODY>This section contains the following topics:</B.BODY
  69392. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  69393. ></ENTRY
  69394. ></RBW-ROW
  69395. ></THEAD
  69396. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10729" TYPE="XREF-TEXTCOPY">Editing Operation Properties&rbwtab;3–26</RBW-XREF
  69397. ></SB.SECTION.BLOCK.TABLE
  69398. ></ENTRY
  69399. ></RBW-ROW
  69400. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28435" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Operations&rbwtab;3–28</RBW-XREF
  69401. ></SB.SECTION.BLOCK.TABLE
  69402. ></ENTRY
  69403. ></RBW-ROW
  69404. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Defining Parameters&rbwtab;3–30</RBW-XREF
  69405. ></SB.SECTION.BLOCK.TABLE
  69406. ></ENTRY
  69407. ></RBW-ROW
  69408. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26111" TYPE="XREF-TEXTCOPY">Modeling Methods&rbwtab;3–34</RBW-XREF
  69409. ></SB.SECTION.BLOCK.TABLE
  69410. ></ENTRY
  69411. ></RBW-ROW
  69412. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12760" TYPE="XREF-TEXTCOPY">Modeling Events&rbwtab;3–39</RBW-XREF
  69413. ></SB.SECTION.BLOCK.TABLE
  69414. ></ENTRY
  69415. ></RBW-ROW
  69416. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12454" TYPE="XREF-TEXTCOPY">Modeling Event Handlers&rbwtab;3–40</RBW-XREF
  69417. ></SB.SECTION.BLOCK.TABLE
  69418. ></ENTRY
  69419. ></RBW-ROW
  69420. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10437" TYPE="XREF-TEXTCOPY">The Init Method&rbwtab;3–41</RBW-XREF
  69421. ></SB.SECTION.BLOCK.TABLE
  69422. ></ENTRY
  69423. ></RBW-ROW
  69424. ></TBODY
  69425. ></TGROUP
  69426. ></RBW-TABLE
  69427. ></LABEL
  69428. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10729"></RBW-ANCHOR
  69429. >Editing Operation Properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for method"></RBW-IDXTERM
  69430. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  69431. ><RBW-IDXTERM TERM1="method property" TERM2="editing"></RBW-IDXTERM
  69432. ></SS.SUBSEC.HEAD
  69433. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69434. >Introduction</L.LABEL
  69435. ><B.BODY>You use operation properties to provide input to the code generator. The code generated for an operation is based on its properties.</B.BODY
  69436. ></LABEL
  69437. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69438. ><RBW-ANCHOR ID="16670"></RBW-ANCHOR
  69439. >How to specify operation properties</L.LABEL
  69440. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  69441. ></RBW-AUTOGEN
  69442. ></RBW-MARKER
  69443. ><RBW-PARABODY>To edit operation properties:</RBW-PARABODY
  69444. ></P.PROCEDURE
  69445. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  69446. ></RBW-AUTOGEN
  69447. ></RBW-MARKER
  69448. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  69449. ></LN.LIST.NUM
  69450. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  69451. ></RBW-AUTOGEN
  69452. ></RBW-MARKER
  69453. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  69454. ></LN.LIST.NUM
  69455. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  69456. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  69457. ></RBW-AUTOGEN
  69458. ></RBW-MARKER
  69459. ><RBW-PARABODY>Select a method name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  69460. ></LN.LIST.NUM
  69461. ><LR.LIST.RESULT>The operation properties appear on the right side of the dialog box.</LR.LIST.RESULT
  69462. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00627.unk" origfile="pics/dbedprmt.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  69463. ></FA2.FIGURE.ANCHOR.2
  69464. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  69465. ></RBW-AUTOGEN
  69466. ></RBW-MARKER
  69467. ><RBW-PARABODY>Select the desired properties. (The following subsections describe each property in greater detail).</RBW-PARABODY
  69468. ></LN.LIST.NUM
  69469. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="73p"><COLSPEC COLNAME="2" COLWIDTH="37p"><COLSPEC COLNAME="3" COLWIDTH="156p"><COLSPEC COLNAME="4" COLWIDTH="162p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  69470. ></ENTRY
  69471. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  69472. ></ENTRY
  69473. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  69474. ></ENTRY
  69475. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  69476. ></ENTRY
  69477. ></RBW-ROW
  69478. ></THEAD
  69479. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access</CELLBODY
  69480. ></ENTRY
  69481. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69482. ></ENTRY
  69483. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The accessibility of the generated method, event or event handler</CELLBODY
  69484. ></ENTRY
  69485. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="28435" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Operations</RBW-XREF
  69486. ></CELLBODY
  69487. ></ENTRY
  69488. ></RBW-ROW
  69489. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type </CELLBODY
  69490. ><CELLBODY>Modifier</CELLBODY
  69491. ></ENTRY
  69492. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69493. ></ENTRY
  69494. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The return type of a method</CELLBODY
  69495. ></ENTRY
  69496. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24050" TYPE="XREF-TEXTCOPY">Modifying a method’s return type</RBW-XREF
  69497. ></CELLBODY
  69498. ></ENTRY
  69499. ></RBW-ROW
  69500. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Copy</CELLBODY
  69501. ></ENTRY
  69502. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69503. ></ENTRY
  69504. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Whether a reference to a copy of the class type object, or the reference to the class type object itself must be passed (only applicable to methods with a class return type)</CELLBODY
  69505. ></ENTRY
  69506. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17071" TYPE="XREF-TEXTCOPY">Specifying the return type as copy</RBW-XREF
  69507. ></CELLBODY
  69508. ></ENTRY
  69509. ></RBW-ROW
  69510. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation </CELLBODY
  69511. ><CELLBODY>Type</CELLBODY
  69512. ></ENTRY
  69513. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69514. ></ENTRY
  69515. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>If the ObjectTeam operation must be generated into a Method, an Event or an Event Handler</CELLBODY
  69516. ></ENTRY
  69517. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="31495" TYPE="XREF-TEXTCOPY">Introduction</RBW-XREF
  69518. ></CELLBODY
  69519. ></ENTRY
  69520. ></RBW-ROW
  69521. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  69522. ></ENTRY
  69523. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  69524. ></ENTRY
  69525. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional operation comments, which do not appear in generated code. </CELLBODY
  69526. ></ENTRY
  69527. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  69528. ></ENTRY
  69529. ></RBW-ROW
  69530. ></TBODY
  69531. ></TGROUP
  69532. ></RBW-TABLE
  69533. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  69534. ></RBW-AUTOGEN
  69535. ></RBW-MARKER
  69536. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  69537. ></LN.LIST.NUM
  69538. ></LABEL
  69539. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69540. >Parameter and return type properties</L.LABEL
  69541. ><B.BODY>You can also specify properties for parameters, as described in <RBW-XREF REFID="15651" TYPE="XREF-TEXTCOPY">Editing parameter properties</RBW-XREF
  69542. >, and for the return type of an operation, as described in <RBW-XREF REFID="18091" TYPE="XREF-TEXTCOPY">Editing method properties</RBW-XREF
  69543. >.</B.BODY
  69544. ><B.BODY>Besides for operations as a whole, you can specify properties for the return type of an operation, and for parameters within an operation.</B.BODY
  69545. ></LABEL
  69546. ></SUBSECTION
  69547. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28435"></RBW-ANCHOR
  69548. >Specifying Accessibility of Operations</SS.SUBSEC.HEAD
  69549. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69550. >Introduction</L.LABEL
  69551. ><B.BODY><RBW-IDXTERM TERM1="method property" TERM2="access"></RBW-IDXTERM
  69552. ><RBW-IDXTERM TERM1="access property" TERM2="for method"></RBW-IDXTERM
  69553. >While in Object Design, use the Access field on the Misc tab in the Edit Properties dialog box to define the extent to which other classes can access a method, an event or an event handler of a class. </B.BODY
  69554. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69555. ></RBW-AUTOGEN
  69556. ></RBW-MARKER
  69557. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  69558. >. The operation is accessible anywhere the class name is accessible.</RBW-PARABODY
  69559. ></LB.LIST.BULLET
  69560. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69561. ></RBW-AUTOGEN
  69562. ></RBW-MARKER
  69563. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  69564. >. The operation is accessible anywhere the class name is accessible. Protected is effectively identical to Public.</RBW-PARABODY
  69565. ></LB.LIST.BULLET
  69566. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69567. ></RBW-AUTOGEN
  69568. ></RBW-MARKER
  69569. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  69570. >. The operation is accessible only in the body of the class in which it is declared.</RBW-PARABODY
  69571. ></LB.LIST.BULLET
  69572. ></LABEL
  69573. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69574. >Example</L.LABEL
  69575. ><B.BODY>The code excerpts below show how this property affects code generation for the Get_Employee_ID method of the Employee class.</B.BODY
  69576. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Public:</CX5FX5FBULLET.EMPHASIS
  69577. ></B.BODY
  69578. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69579. ><EM.EXAMPLE.MONO>class Employee inherits from Framework.Object</EM.EXAMPLE.MONO
  69580. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69581. ><EM.EXAMPLE.MONO>has <CX5FX5FBULLET.EMPHASIS>public</CX5FX5FBULLET.EMPHASIS
  69582. >  method Get_Employee_ID;</EM.EXAMPLE.MONO
  69583. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69584. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Protected:</CX5FX5FBULLET.EMPHASIS
  69585. ></B.BODY
  69586. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69587. ><EM.EXAMPLE.MONO>class Employee inherits from Framework.Object</EM.EXAMPLE.MONO
  69588. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69589. ><EM.EXAMPLE.MONO>has <CX5FX5FBULLET.EMPHASIS>public</CX5FX5FBULLET.EMPHASIS
  69590. >  method Get_Employee_ID;</EM.EXAMPLE.MONO
  69591. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69592. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Private:</CX5FX5FBULLET.EMPHASIS
  69593. ></B.BODY
  69594. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69595. ><EM.EXAMPLE.MONO>class Employee inherits from Framework.Object</EM.EXAMPLE.MONO
  69596. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69597. ><EM.EXAMPLE.MONO>has <CX5FX5FBULLET.EMPHASIS>private</CX5FX5FBULLET.EMPHASIS
  69598. > method Get_Employee_ID;</EM.EXAMPLE.MONO
  69599. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  69600. ></LABEL
  69601. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69602. ><RBW-ANCHOR ID="31329"></RBW-ANCHOR
  69603. >Visibility</L.LABEL
  69604. ><B.BODY>You can display the access level of methods in your diagram by checking Options | Show Visibility in the Class Diagram Editor. Method names will then be displayed with the following leading characters indicating the method’s access level:</B.BODY
  69605. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="318p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Special character</CELLHEADING
  69606. ></ENTRY
  69607. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  69608. ></ENTRY
  69609. ></RBW-ROW
  69610. ></THEAD
  69611. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>+</CELLBODY
  69612. ></ENTRY
  69613. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  69614. ></ENTRY
  69615. ></RBW-ROW
  69616. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>#</CELLBODY
  69617. ></ENTRY
  69618. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Protected</CELLBODY
  69619. ></ENTRY
  69620. ></RBW-ROW
  69621. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  69622. ></ENTRY
  69623. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private</CELLBODY
  69624. ></ENTRY
  69625. ></RBW-ROW
  69626. ></TBODY
  69627. ></TGROUP
  69628. ></RBW-TABLE
  69629. ><B.BODY>These special characters can also be used to <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  69630. > the access level of methods. Typing a minus sign (&truehy;) before a method name will set the access level of the method to Private, for example. </B.BODY
  69631. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  69632. ></RBW-AUTOGEN
  69633. >The special characters only work if the menu entry Options | Show Visibility in the Class Diagram Editor has been checked. Otherwise, the special characters will just be regarded as part of the method name.</W.WARNING
  69634. ></LABEL
  69635. ></SUBSECTION
  69636. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24200"></RBW-ANCHOR
  69637. >Defining Parameters</SS.SUBSEC.HEAD
  69638. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69639. >Introduction</L.LABEL
  69640. ><B.BODY>Parameters can optionally be added to Methods, Events, and Event Handlers. </B.BODY
  69641. ><B.BODY>Method parameters are used by the caller of the method to provide input values to the method, to hold output values from the method or both. </B.BODY
  69642. ><B.BODY>Event Handler parameters are only used to provide input values to the event handler, such as the object for which the events are being handled.</B.BODY
  69643. ></LABEL
  69644. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69645. >Syntax</L.LABEL
  69646. ><B.BODY>The parameters in the parameter list are separated by commas. Every parameter needs to have a type, which can either be a standard type or a (prefabricated or custom) class:</B.BODY
  69647. ><E.EXAMPLE>(par_name:par_type, par_name:par_type, ...)</E.EXAMPLE
  69648. ></LABEL
  69649. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69650. ><RBW-ANCHOR ID="15651"></RBW-ANCHOR
  69651. >Editing parameter properties</L.LABEL
  69652. ><B.BODY>The following properties can be set for a parameter:</B.BODY
  69653. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00628.unk" origfile="pics/dbedprpm.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  69654. ></FA.FIGURE.ANCHOR
  69655. ><B.BODY>With these properties you can specify the following:</B.BODY
  69656. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="78p"><COLSPEC COLNAME="2" COLWIDTH="37p"><COLSPEC COLNAME="3" COLWIDTH="151p"><COLSPEC COLNAME="4" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  69657. ></ENTRY
  69658. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  69659. ></ENTRY
  69660. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  69661. ></ENTRY
  69662. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  69663. ></ENTRY
  69664. ></RBW-ROW
  69665. ></THEAD
  69666. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type </CELLBODY
  69667. ><CELLBODY>Modifier</CELLBODY
  69668. ></ENTRY
  69669. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69670. ></ENTRY
  69671. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The type of a parameter</CELLBODY
  69672. ></ENTRY
  69673. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="27150" TYPE="XREF-TEXTCOPY">Modifying the type of a parameter</RBW-XREF
  69674. ></CELLBODY
  69675. ></ENTRY
  69676. ></RBW-ROW
  69677. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Copy</CELLBODY
  69678. ></ENTRY
  69679. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69680. ></ENTRY
  69681. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Whether a reference to a copy of the class type object, or the reference to the class type object itself must be passed</CELLBODY
  69682. ></ENTRY
  69683. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="27277" TYPE="XREF-TEXTCOPY">Specifying the parameter type as copy</RBW-XREF
  69684. ></CELLBODY
  69685. ></ENTRY
  69686. ></RBW-ROW
  69687. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Mechanism</CELLBODY
  69688. ></ENTRY
  69689. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69690. ></ENTRY
  69691. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The input/output mechanism of a parameter</CELLBODY
  69692. ></ENTRY
  69693. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="22972" TYPE="XREF-TEXTCOPY">Specifying the Input Output mechanism</RBW-XREF
  69694. ></CELLBODY
  69695. ></ENTRY
  69696. ></RBW-ROW
  69697. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default </CELLBODY
  69698. ><CELLBODY>Value</CELLBODY
  69699. ></ENTRY
  69700. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69701. ></ENTRY
  69702. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The default value of a parameter</CELLBODY
  69703. ></ENTRY
  69704. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="15392" TYPE="XREF-TEXTCOPY">Specifying a default value</RBW-XREF
  69705. ></CELLBODY
  69706. ></ENTRY
  69707. ></RBW-ROW
  69708. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  69709. ></ENTRY
  69710. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  69711. ></ENTRY
  69712. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional operation comments, which do not appear in generated code. </CELLBODY
  69713. ></ENTRY
  69714. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  69715. ></ENTRY
  69716. ></RBW-ROW
  69717. ></TBODY
  69718. ></TGROUP
  69719. ></RBW-TABLE
  69720. ></LABEL
  69721. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69722. ><RBW-ANCHOR ID="22972"></RBW-ANCHOR
  69723. >Specifying the Input Output mechanism</L.LABEL
  69724. ><B.BODY>The property Mechanism gives you control over the input/output mechanism of parameters in Forté.</B.BODY
  69725. ><B.BODY>By default, a parameter is for input only. The caller specifies a parameter value when invoking the method. The method uses that value for processing.</B.BODY
  69726. ><B.BODY>You can use the parameter property Mechanism to change the default input/output behavior. The available values are:</B.BODY
  69727. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69728. ></RBW-AUTOGEN
  69729. ></RBW-MARKER
  69730. ><RBW-PARABODY>Input (default)</RBW-PARABODY
  69731. ></LB.LIST.BULLET
  69732. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69733. ></RBW-AUTOGEN
  69734. ></RBW-MARKER
  69735. ><RBW-PARABODY>Output</RBW-PARABODY
  69736. ></LB.LIST.BULLET
  69737. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69738. ></RBW-AUTOGEN
  69739. ></RBW-MARKER
  69740. ><RBW-PARABODY>Input Output</RBW-PARABODY
  69741. ></LB.LIST.BULLET
  69742. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69743. >Example (ObjectTeam)</SL.SUBLABEL
  69744. ><B.BODY></B.BODY
  69745. ><B.BODY>The Mechanism property for the parameter par1 in the following example has not been touched (i.e is set to Input), whereas for par2 it has been set to Output, and for par3 to Input Output:</B.BODY
  69746. ><EM.EXAMPLE.MONO>myMethod(par1:Textdata,par2:TextData,par3:short)</EM.EXAMPLE.MONO
  69747. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69748. >Generated .cex file</SL.SUBLABEL
  69749. ><B.BODY></B.BODY
  69750. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69751. ><EWM.EXAMPLEW.MONO>has public  method myMethod(<CX5FX5FBULLET.EMPHASIS>input</CX5FX5FBULLET.EMPHASIS
  69752. > par1: Framework.TextData,</EWM.EXAMPLEW.MONO
  69753. ><EWM.EXAMPLEW.MONO>    <CX5FX5FBULLET.EMPHASIS>output</CX5FX5FBULLET.EMPHASIS
  69754. > par2: Framework.TextData,</EWM.EXAMPLEW.MONO
  69755. ><EWM.EXAMPLEW.MONO>    <CX5FX5FBULLET.EMPHASIS>input output</CX5FX5FBULLET.EMPHASIS
  69756. > par3: short);</EWM.EXAMPLEW.MONO
  69757. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69758. ></LABEL
  69759. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69760. ><RBW-ANCHOR ID="27150"></RBW-ANCHOR
  69761. >Modifying the type of a parameter</L.LABEL
  69762. ><B.BODY>You can use the parameter property Type Modifier to modify the type of a parameter. This is similar to modifying the type of an attribute (see <RBW-XREF REFID="17574" TYPE="XREF-TEXTCOPY">Modifying Types</RBW-XREF
  69763. >). </B.BODY
  69764. ><B.BODY>You can modify it to be an Array, a LargeArray, or a Pointer. You can also provide a user&truehy;defined type modifier.</B.BODY
  69765. ></LABEL
  69766. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69767. ><RBW-ANCHOR ID="27277"></RBW-ANCHOR
  69768. >Specifying the parameter type as copy</L.LABEL
  69769. ><B.BODY>When the type of a parameter in Forté is a class, Forté passes a reference to the object, instead of the object itself. The copy option allows you to prevent the calling and called method from referencing the same object. When you specify copy for a class parameter, Forté makes a copy of the object and passes a reference to that copy as the parameter.</B.BODY
  69770. ><B.BODY>You can indicate that you want to use the copy option for a parameter in ObjectTeam by turning on the parameter property Copy. This property is turned off by default.</B.BODY
  69771. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69772. >Example (ObjectTeam)</SL.SUBLABEL
  69773. ><B.BODY></B.BODY
  69774. ><EM.EXAMPLE.MONO>myMethod(par1:IntegerData,par2:TextData)</EM.EXAMPLE.MONO
  69775. ><B.BODY>The property Copy for the parameter par1 in this example has not been touched (i.e is turned off), whereas for par2 it has been switched on.</B.BODY
  69776. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69777. >Generated .cex file</SL.SUBLABEL
  69778. ><B.BODY></B.BODY
  69779. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69780. ><EWM.EXAMPLEW.MONO>has public  method myMethod(input par1: Framework.IntegerData,</EWM.EXAMPLEW.MONO
  69781. ><EWM.EXAMPLEW.MONO>    <CX5FX5FBULLET.EMPHASIS>copy</CX5FX5FBULLET.EMPHASIS
  69782. > input par2: Framework.TextData);</EWM.EXAMPLEW.MONO
  69783. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69784. ></LABEL
  69785. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69786. ><RBW-ANCHOR ID="15392"></RBW-ANCHOR
  69787. >Specifying a default value</L.LABEL
  69788. ><B.BODY>In a call to a method, valid values for the method’s parameters <CX5FX5FEMPHASIS>must</CX5FX5FEMPHASIS
  69789. > be supplied, unless a default value has been specified. If a parameter has a default value, the parameter value <CX5FX5FEMPHASIS>can</CX5FX5FEMPHASIS
  69790. > be specified in the call, overriding the default value. </B.BODY
  69791. ><B.BODY>Parameters with a default value are usually referred to as optional parameters; parameters without a default value as required parameters.</B.BODY
  69792. ><B.BODY>In ObjectTeam you can specify the default value of a parameter through the parameter property Default Value. </B.BODY
  69793. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  69794. ></RBW-AUTOGEN
  69795. >When your parameter type is a standard type, you can specify anything as default type, as long as it is compatible with the type of the parameter. In the case of a class type, the only default value you can specify is NIL, indicating “no object”.</N.NOTE
  69796. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69797. >Example (ObjectTeam)</SL.SUBLABEL
  69798. ><B.BODY></B.BODY
  69799. ><EM.EXAMPLE.MONO>myMethod(par1:TextData,par2:short)</EM.EXAMPLE.MONO
  69800. ><B.BODY>The Default Value for par2 has been set to 42.</B.BODY
  69801. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69802. >Generated .cex file</SL.SUBLABEL
  69803. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  69804. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69805. ><EWM.EXAMPLEW.MONO>has public  method myMethod(input par1: Framework.TextData,</EWM.EXAMPLEW.MONO
  69806. ><EWM.EXAMPLEW.MONO>    input par2: short = <CX5FX5FBULLET.EMPHASIS>42</CX5FX5FBULLET.EMPHASIS
  69807. >);</EWM.EXAMPLEW.MONO
  69808. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69809. ></LABEL
  69810. ></SUBSECTION
  69811. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="26111"></RBW-ANCHOR
  69812. >Modeling Methods</SS.SUBSEC.HEAD
  69813. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69814. >Introduction</L.LABEL
  69815. ><B.BODY>In Forté, all methods consist of a name and the Forté source code that is executed when the method is called. The Forté code generator generates the method name and everything else that can be determined from your ObjectTeam model. The Forté source code you have to provide yourself. The following generated comment line reminds you of this:</B.BODY
  69816. ><EM.EXAMPLE.MONO>&truehy;&truehy; !! Implement this method !!</EM.EXAMPLE.MONO
  69817. ><B.BODY>Most methods include parameters, which allow the caller to pass information to and from the object that the method is manipulating. See <RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Defining Parameters</RBW-XREF
  69818. > for details on parameters.</B.BODY
  69819. ></LABEL
  69820. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69821. ><RBW-ANCHOR ID="30419"></RBW-ANCHOR
  69822. >Special methods</L.LABEL
  69823. ><B.BODY>The Forté code generator also generates the following special methods automatically; you do not have to specify them as operations in an ObjectTeam class:</B.BODY
  69824. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69825. ></RBW-AUTOGEN
  69826. ></RBW-MARKER
  69827. ><RBW-PARABODY><CX5FX5FINPUT>Init() </CX5FX5FINPUT
  69828. ></RBW-PARABODY
  69829. ></LB.LIST.BULLET
  69830. ><LT.LIST.TEXT>This Forté method is generated by default for all classes; that is, all ObjectTeam classes that have the Class Type Class specified.</LT.LIST.TEXT
  69831. ><LT.LIST.TEXT>See <RBW-XREF REFID="10437" TYPE="XREF-TEXTCOPY">The Init Method</RBW-XREF
  69832. > for details.</LT.LIST.TEXT
  69833. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69834. ></RBW-AUTOGEN
  69835. ></RBW-MARKER
  69836. ><RBW-PARABODY><CX5FX5FINPUT>Display()</CX5FX5FINPUT
  69837. ></RBW-PARABODY
  69838. ></LB.LIST.BULLET
  69839. ><LT.LIST.TEXT>This Forté method is only generated for window classes; that is, ObjectTeam classes that are derived from the prefabricated Forté class UserWindow.</LT.LIST.TEXT
  69840. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69841. ></RBW-AUTOGEN
  69842. ></RBW-MARKER
  69843. ><RBW-PARABODY>Attribute access methods, as described in <RBW-XREF REFID="24666" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes</RBW-XREF
  69844. >.</RBW-PARABODY
  69845. ></LB.LIST.BULLET
  69846. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  69847. ></RBW-AUTOGEN
  69848. ></RBW-MARKER
  69849. ><RBW-PARABODY>Association access methods, as described in <RBW-XREF REFID="10004" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  69850. >.</RBW-PARABODY
  69851. ></LB.LIST.BULLET
  69852. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  69853. ></RBW-AUTOGEN
  69854. >The ObjectTeam methods <CX5FX5FINPUT>$create</CX5FX5FINPUT
  69855. > and <CX5FX5FINPUT>$create()</CX5FX5FINPUT
  69856. > are ignored by the Forté code generator. However, sometimes you need them to prevent an ObjectTeam class from being generated as a (generic) typedef (see <RBW-XREF REFID="24618" TYPE="XREF-TEXTCOPY">Typedef Class</RBW-XREF
  69857. >).</N.NOTE
  69858. ></LABEL
  69859. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69860. ><RBW-ANCHOR ID="18091"></RBW-ANCHOR
  69861. >Editing method properties</L.LABEL
  69862. ><B.BODY>The following properties can be set for a method:</B.BODY
  69863. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00629.unk" origfile="pics/dbedprmt.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  69864. ></FA.FIGURE.ANCHOR
  69865. ><B.BODY>With these properties you can specify the following:</B.BODY
  69866. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="70p"><COLSPEC COLNAME="2" COLWIDTH="60p"><COLSPEC COLNAME="3" COLWIDTH="138p"><COLSPEC COLNAME="4" COLWIDTH="175p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  69867. ></ENTRY
  69868. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tab</CELLHEADING
  69869. ></ENTRY
  69870. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Specifies</CELLHEADING
  69871. ></ENTRY
  69872. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See For Details</CELLHEADING
  69873. ></ENTRY
  69874. ></RBW-ROW
  69875. ></THEAD
  69876. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type </CELLBODY
  69877. ><CELLBODY>Modifier</CELLBODY
  69878. ></ENTRY
  69879. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69880. ></ENTRY
  69881. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The return type of the method</CELLBODY
  69882. ></ENTRY
  69883. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24050" TYPE="XREF-TEXTCOPY">Modifying a method’s return type</RBW-XREF
  69884. ></CELLBODY
  69885. ></ENTRY
  69886. ></RBW-ROW
  69887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Copy</CELLBODY
  69888. ></ENTRY
  69889. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  69890. ></ENTRY
  69891. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Whether a reference to a copy of the class type object, or the reference to the class type object itself must be passed</CELLBODY
  69892. ></ENTRY
  69893. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17071" TYPE="XREF-TEXTCOPY">Specifying the return type as copy</RBW-XREF
  69894. ></CELLBODY
  69895. ></ENTRY
  69896. ></RBW-ROW
  69897. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Return </CELLBODY
  69898. ><CELLBODY>Event</CELLBODY
  69899. ></ENTRY
  69900. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  69901. ></ENTRY
  69902. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>A return event for a method</CELLBODY
  69903. ></ENTRY
  69904. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="14000" TYPE="XREF-TEXTCOPY">Specifying a return event</RBW-XREF
  69905. ></CELLBODY
  69906. ></ENTRY
  69907. ></RBW-ROW
  69908. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Exception </CELLBODY
  69909. ><CELLBODY>Event</CELLBODY
  69910. ></ENTRY
  69911. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  69912. ></ENTRY
  69913. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>An exception event for a method</CELLBODY
  69914. ></ENTRY
  69915. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19136" TYPE="XREF-TEXTCOPY">Specifying an exception event</RBW-XREF
  69916. ></CELLBODY
  69917. ></ENTRY
  69918. ></RBW-ROW
  69919. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  69920. ></ENTRY
  69921. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  69922. ></ENTRY
  69923. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional method comments, which do not appear in generated code. </CELLBODY
  69924. ></ENTRY
  69925. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  69926. ></ENTRY
  69927. ></RBW-ROW
  69928. ></TBODY
  69929. ></TGROUP
  69930. ></RBW-TABLE
  69931. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  69932. ></RBW-AUTOGEN
  69933. >The properties Access and Operation Type are described in <RBW-XREF REFID="16670" TYPE="XREF-TEXTCOPY">How to specify operation properties</RBW-XREF
  69934. >. All properties specific to methods are described below.</N.NOTE
  69935. ></LABEL
  69936. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69937. ><RBW-ANCHOR ID="24050"></RBW-ANCHOR
  69938. >Modifying a method’s return type</L.LABEL
  69939. ><B.BODY>Specifying a return type for a method is optional. The return type is the data type of the value that is passed back to the caller by a <CX5FX5FINPUT>return</CX5FX5FINPUT
  69940. > statement in the method. </B.BODY
  69941. ><B.BODY>The return type of a method can be a standard data type or a class type. Both these types can be modified using the method property Type Modifier, whose usage is similar to the attribute property Type Modifier (See <RBW-XREF REFID="17574" TYPE="XREF-TEXTCOPY">Modifying Types</RBW-XREF
  69942. >).</B.BODY
  69943. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  69944. ></RBW-AUTOGEN
  69945. >Defining a return type is optional. However, if you do not specify a return type, you cannot use the <CX5FX5FINPUT>return</CX5FX5FINPUT
  69946. > statement in the body of the method to pass a value back to the caller of the method.</N.NOTE
  69947. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69948. >Example (ObjectTeam)</SL.SUBLABEL
  69949. ><B.BODY></B.BODY
  69950. ><EM.EXAMPLE.MONO>myMethod(par1:TextData,par2:short):IntegerData</EM.EXAMPLE.MONO
  69951. ><B.BODY>The Type Modifier for IntegerData has been set to Array.</B.BODY
  69952. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69953. >Generated .cex file</SL.SUBLABEL
  69954. ><B.BODY></B.BODY
  69955. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69956. ><EWM.EXAMPLEW.MONO>has public  method myMethod(input par1: Framework.TextData,</EWM.EXAMPLEW.MONO
  69957. ><EWM.EXAMPLEW.MONO>    input par2: short): <CX5FX5FBULLET.EMPHASIS>Framework.Array of Framework.IntegerData</CX5FX5FBULLET.EMPHASIS
  69958. >;</EWM.EXAMPLEW.MONO
  69959. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69960. ></LABEL
  69961. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69962. ><RBW-ANCHOR ID="14000"></RBW-ANCHOR
  69963. >Specifying a return event</L.LABEL
  69964. ><B.BODY>In Forté, you can use the <CX5FX5FINPUT>start task</CX5FX5FINPUT
  69965. > statement in combination with a return event to call a method as a separate task and receive a notification when the task completes. </B.BODY
  69966. ><B.BODY>To make this mechanism work, you must define a return event for the method, which you can do in ObjectTeam through the method property Return Event. You find this property on the Method tab in the Edit Properties dialog box.</B.BODY
  69967. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00630.unk" origfile="pics/rtexevt.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  69968. ></FA.FIGURE.ANCHOR
  69969. ><B.BODY>When you call the method with the <CX5FX5FINPUT>start task</CX5FX5FINPUT
  69970. > statement and you request the return event, the method automatically produces a return event when it completes. This return event uses the output and input&truehy;output parameters defined for the method (see <RBW-XREF REFID="22972" TYPE="XREF-TEXTCOPY">Specifying the Input Output mechanism</RBW-XREF
  69971. >).</B.BODY
  69972. ><B.BODY>If a return type has been defined for the method, the last parameter of the event is a return value called <CX5FX5FINPUT>return</CX5FX5FINPUT
  69973. >.</B.BODY
  69974. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  69975. ></RBW-AUTOGEN
  69976. >If you override a method, you must not define a return event, since only the original method can define a return event.</W.WARNING
  69977. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69978. >Example (ObjectTeam)</SL.SUBLABEL
  69979. ><B.BODY></B.BODY
  69980. ><EM.EXAMPLE.MONO>myMethod(par1:TextData,par2:short):IntegerData</EM.EXAMPLE.MONO
  69981. ><B.BODY><CX5FX5FINPUT>myReturnEvent</CX5FX5FINPUT
  69982. > is specified as Return Event for myMethod.</B.BODY
  69983. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69984. >Generated .cex file</SL.SUBLABEL
  69985. ><B.BODY></B.BODY
  69986. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69987. ><EWM.EXAMPLEW.MONO>has public  method myMethod(input par1: Framework.TextData,</EWM.EXAMPLEW.MONO
  69988. ><EWM.EXAMPLEW.MONO>    input par2: short): Framework.IntegerData <CX5FX5FBULLET.EMPHASIS>where completion = (return = myReturnEvent)</CX5FX5FBULLET.EMPHASIS
  69989. >;</EWM.EXAMPLEW.MONO
  69990. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  69991. ></LABEL
  69992. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  69993. ><RBW-ANCHOR ID="19136"></RBW-ANCHOR
  69994. >Specifying an exception event</L.LABEL
  69995. ><B.BODY>The <CX5FX5FINPUT>start task</CX5FX5FINPUT
  69996. > statement in Forté can also be used in combination with an exception event to call a method as a separate task and receive a notification when the task terminates due to an unhandled exception.</B.BODY
  69997. ><B.BODY>To make this mechanism work, you must define an exception event, which you can do in ObjectTeam through the method property Exception Event. You find this property on the Method tab in the Edit Properties dialog box.</B.BODY
  69998. ><B.BODY>When you use <CX5FX5FINPUT>start task</CX5FX5FINPUT
  69999. > statement with the exception event on to call the method, the method automatically produces an exception event when it is terminated. This exception event has one parameter called <CX5FX5FINPUT>exception</CX5FX5FINPUT
  70000. >.</B.BODY
  70001. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70002. >Example (ObjectTeam)</SL.SUBLABEL
  70003. ><B.BODY></B.BODY
  70004. ><EM.EXAMPLE.MONO>myMethod(par1:TextData,par2:short):IntegerData</EM.EXAMPLE.MONO
  70005. ><B.BODY><CX5FX5FINPUT>myExceptionEvent</CX5FX5FINPUT
  70006. > is specified as Exception Event for myMethod.</B.BODY
  70007. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70008. >Generated .cex file</SL.SUBLABEL
  70009. ><B.BODY></B.BODY
  70010. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70011. ><EWM.EXAMPLEW.MONO>has public  method myMethod(input par1: Framework.TextData,</EWM.EXAMPLEW.MONO
  70012. ><EWM.EXAMPLEW.MONO>    input par2: short): Framework.IntegerData <CX5FX5FBULLET.EMPHASIS>where completion = (exception = myExceptionEvent)</CX5FX5FBULLET.EMPHASIS
  70013. >;</EWM.EXAMPLEW.MONO
  70014. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70015. ></LABEL
  70016. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70017. ><RBW-ANCHOR ID="17071"></RBW-ANCHOR
  70018. >Specifying the return type as copy</L.LABEL
  70019. ><B.BODY>If your return type is a class, you can prevent the calling and the called method from referencing the same object in Forté by using the copy option. In ObjectTeam you can indicate that you want to use the copy option through the method property Copy. The way this property works is similar to how it works for parameter types (see <RBW-XREF REFID="27277" TYPE="XREF-TEXTCOPY">Specifying the parameter type as copy</RBW-XREF
  70020. >).</B.BODY
  70021. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70022. >Example (ObjectTeam)</SL.SUBLABEL
  70023. ><B.BODY></B.BODY
  70024. ><EM.EXAMPLE.MONO>myMethod(par1:TextData,par2:short):IntegerData</EM.EXAMPLE.MONO
  70025. ><B.BODY>The Copy option for IntegerData has been turned on.</B.BODY
  70026. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70027. >Generated .cex file</SL.SUBLABEL
  70028. ><B.BODY></B.BODY
  70029. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70030. ><EWM.EXAMPLEW.MONO>has public  method myMethod(input par1: Framework.TextData,</EWM.EXAMPLEW.MONO
  70031. ><EWM.EXAMPLEW.MONO>    input par2: short): <CX5FX5FBULLET.EMPHASIS>copy</CX5FX5FBULLET.EMPHASIS
  70032. > Framework.IntegerData;</EWM.EXAMPLEW.MONO
  70033. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70034. ></LABEL
  70035. ></SUBSECTION
  70036. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12760"></RBW-ANCHOR
  70037. >Modeling Events</SS.SUBSEC.HEAD
  70038. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70039. >Introduction</L.LABEL
  70040. ><B.BODY>You mark an operation in ObjectTeam as event by setting the operation property Operation Type to Event. This property can be found on the Misc tab in the Edit Properties dialog box.</B.BODY
  70041. ></LABEL
  70042. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70043. >Events in Forté</L.LABEL
  70044. ><B.BODY>An event is a notification that something significant has happened. In Forté, an object as well as a method that is operating on an object can trigger an event. When such an event is triggered, other parts of the application that are watching for that event can react to it.</B.BODY
  70045. ></LABEL
  70046. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70047. >Event parameters</L.LABEL
  70048. ><B.BODY>Like methods, events can have parameters that allow the method that is triggering the event to provide information to any objects responding to the event. However, after the event is triggered, no communication takes place between the method triggering the event and the object or method responding to the event.</B.BODY
  70049. ><B.BODY>See <RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Defining Parameters</RBW-XREF
  70050. > for more information.</B.BODY
  70051. ></LABEL
  70052. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70053. >Return type</L.LABEL
  70054. ><B.BODY>Since return types for events have no meaning in Forté, they are ignored by the Forté code generator.</B.BODY
  70055. ></LABEL
  70056. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70057. >Example</L.LABEL
  70058. ><B.BODY>Suppose the following operation is defined in an ObjectTeam class:</B.BODY
  70059. ><EM.EXAMPLE.MONO>ItemOut(ItemSKU:double,OrdersNo:integer)</EM.EXAMPLE.MONO
  70060. ><B.BODY>If the operation property Operation Type is set to Event, then the following Forté code is generated for the operation ItemOut:</B.BODY
  70061. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70062. ><EWM.EXAMPLEW.MONO>has public  <CX5FX5FBULLET.EMPHASIS>event</CX5FX5FBULLET.EMPHASIS
  70063. > ItemOut(ItemSKU: double, OrdersNo: integer);</EWM.EXAMPLEW.MONO
  70064. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70065. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  70066. ></RBW-AUTOGEN
  70067. >No bodies are generated for Events.</N.NOTE
  70068. ></LABEL
  70069. ></SUBSECTION
  70070. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12454"></RBW-ANCHOR
  70071. >Modeling Event Handlers</SS.SUBSEC.HEAD
  70072. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70073. >Introduction</L.LABEL
  70074. ><B.BODY>You mark an operation in ObjectTeam as event handler by setting the operation property Operation Type to Event Handler. This property can be found on the Misc tab in the Edit Properties dialog box.</B.BODY
  70075. ></LABEL
  70076. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70077. >Event handlers in Forté</L.LABEL
  70078. ><B.BODY>An event handler in Forté is a piece of TOOL code with a name. It is executed in response to one or more events. The event handler provides code that can be included in any number of event statements.</B.BODY
  70079. ></LABEL
  70080. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70081. >Event handler parameters </L.LABEL
  70082. ><B.BODY>Like events, event handlers can have parameters. The mechanism used for these parameters is always <CX5FX5FEMPHASIS>input</CX5FX5FEMPHASIS
  70083. >. Other values specified in ObjectTeam will be ignored by the Forté code generator.</B.BODY
  70084. ><B.BODY>See <RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Defining Parameters</RBW-XREF
  70085. > for more information.</B.BODY
  70086. ></LABEL
  70087. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70088. >Return type</L.LABEL
  70089. ><B.BODY>Since return types for events have no meaning in Forté, they are ignored by the Forté code generator.</B.BODY
  70090. ></LABEL
  70091. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70092. >Example</L.LABEL
  70093. ><B.BODY>Suppose the following operation is defined in an ObjectTeam class:</B.BODY
  70094. ><EM.EXAMPLE.MONO>GlueHandler(GlueAmount:float)</EM.EXAMPLE.MONO
  70095. ><B.BODY>If the operation property Operation Type is set to Event Handler, then the following Forté code is generated for the operation GlueHandler:</B.BODY
  70096. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70097. ><EWM.EXAMPLEW.MONO>has public  <CX5FX5FBULLET.EMPHASIS>event handler</CX5FX5FBULLET.EMPHASIS
  70098. > GlueHandler(input GlueAmount: float);</EWM.EXAMPLEW.MONO
  70099. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70100. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>event handler</CX5FX5FBULLET.EMPHASIS
  70101. > myEvent.GlueHandler(input GlueAmount: float)</EWM.EXAMPLEW.MONO
  70102. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70103. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; !! Implement this event handler !!</EWM.EXAMPLEW.MONO
  70104. ><EWM.EXAMPLEW.MONO>end event;</EWM.EXAMPLEW.MONO
  70105. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70106. ><B.BODY>The generated comment line reminds you to insert the actual event handler source between the <CX5FX5FINPUT>begin</CX5FX5FINPUT
  70107. > and <CX5FX5FINPUT>end event</CX5FX5FINPUT
  70108. > markers.</B.BODY
  70109. ></LABEL
  70110. ></SUBSECTION
  70111. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10437"></RBW-ANCHOR
  70112. >The Init Method</SS.SUBSEC.HEAD
  70113. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70114. >Introduction</L.LABEL
  70115. ><B.BODY>In Forté, a default Init method is provided for every class. The Init method is automatically invoked on an object immediately after it is constructed. The default Init method simply invokes the Init method from the class’s superclass.</B.BODY
  70116. ><B.BODY>The Forté generator adds the default Init method to every Forté class. It also adds comment lines, indicating where you should initialize public attributes, for example:</B.BODY
  70117. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  70118. ><EM.EXAMPLE.MONO>method Customer.Init</EM.EXAMPLE.MONO
  70119. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  70120. ><EM.EXAMPLE.MONO>    super.Init();</EM.EXAMPLE.MONO
  70121. ><EM.EXAMPLE.MONO>    &truehy;&truehy; Start constructor user section</EM.EXAMPLE.MONO
  70122. ><EM.EXAMPLE.MONO>    &truehy;&truehy; End constructor user section</EM.EXAMPLE.MONO
  70123. ><EM.EXAMPLE.MONO>end method;</EM.EXAMPLE.MONO
  70124. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  70125. ><B.BODY>The Forté generator generates a framework for Init methods and initializes the public attributes it is able to initialize. Other initializations you can do yourself. </B.BODY
  70126. ></LABEL
  70127. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70128. >Public attributes</L.LABEL
  70129. ><B.BODY>If the data type of a public attribute in a class is a class itself, the Forté code generator generates a <CX5FX5FINPUT>new</CX5FX5FINPUT
  70130. > statement for this attribute in the body of the Init method. </B.BODY
  70131. ><B.BODY>If the data type is a standard type, which is provided with an initial value, the attribute is initialized with this value.</B.BODY
  70132. ><B.BODY>For example:</B.BODY
  70133. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70134. >Example (ObjectTeam)</SL.SUBLABEL
  70135. ><B.BODY></B.BODY
  70136. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00631.unk" origfile="pics/init.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70137. ></FA.FIGURE.ANCHOR
  70138. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70139. >Customer.cex</SL.SUBLABEL
  70140. ><B.BODY></B.BODY
  70141. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  70142. ><EM.EXAMPLE.MONO>method Customer.Init</EM.EXAMPLE.MONO
  70143. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  70144. ><EM.EXAMPLE.MONO>    super.Init();</EM.EXAMPLE.MONO
  70145. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    name = new;</CX5FX5FBULLET.EMPHASIS
  70146. ></EM.EXAMPLE.MONO
  70147. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    id = 9;</CX5FX5FBULLET.EMPHASIS
  70148. ></EM.EXAMPLE.MONO
  70149. ><EM.EXAMPLE.MONO>    &truehy;&truehy; Start constructor user section</EM.EXAMPLE.MONO
  70150. ><EM.EXAMPLE.MONO>    &truehy;&truehy; End constructor user section</EM.EXAMPLE.MONO
  70151. ><EM.EXAMPLE.MONO>end method;</EM.EXAMPLE.MONO
  70152. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  70153. ></LABEL
  70154. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70155. >The Init method in “many” associations</L.LABEL
  70156. ><B.BODY>In associations with a multiplicity of many, the Forté code generator adds an extra statement to the default Init method of the class at the other side of the many association. In this statement, an attribute with the name <CX5FX5FEMPHASIS>role_name</CX5FX5FEMPHASIS
  70157. >Set is initialized.</B.BODY
  70158. ><B.BODY>For example:</B.BODY
  70159. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70160. >Example (ObjectTeam)</SL.SUBLABEL
  70161. ><B.BODY></B.BODY
  70162. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00632.unk" origfile="pics/initmany.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70163. ></FA.FIGURE.ANCHOR
  70164. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70165. >School.cex</SL.SUBLABEL
  70166. ><B.BODY></B.BODY
  70167. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  70168. ><EM.EXAMPLE.MONO>method School.Init</EM.EXAMPLE.MONO
  70169. ><EM.EXAMPLE.MONO>begin</EM.EXAMPLE.MONO
  70170. ><EM.EXAMPLE.MONO>    super.Init();</EM.EXAMPLE.MONO
  70171. ><EM.EXAMPLE.MONO>    <CX5FX5FBULLET.EMPHASIS>pupilSet = new;</CX5FX5FBULLET.EMPHASIS
  70172. ></EM.EXAMPLE.MONO
  70173. ><EM.EXAMPLE.MONO>    &truehy;&truehy; Start constructor user section</EM.EXAMPLE.MONO
  70174. ><EM.EXAMPLE.MONO>    &truehy;&truehy; End constructor user section</EM.EXAMPLE.MONO
  70175. ><EM.EXAMPLE.MONO>end method;</EM.EXAMPLE.MONO
  70176. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  70177. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70178. >For more information</SL.SUBLABEL
  70179. ><B.BODY>See <RBW-XREF REFID="14505" TYPE="XREF-TEXTCOPY">Mapping Associations With Multiplicity of Many</RBW-XREF
  70180. >.</B.BODY
  70181. ></LABEL
  70182. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70183. ><RBW-ANCHOR ID="28842"></RBW-ANCHOR
  70184. >The Init method in qualified associations</L.LABEL
  70185. ><B.BODY>The extra attribute that is initialized in qualified associations is of the type HashTable. You must explicitly initialize this hash table in the body of the Init method using Setup. An extra comment in the Init method reminds you of this.</B.BODY
  70186. ><B.BODY>For example:</B.BODY
  70187. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70188. >Example (ObjectTeam)</SL.SUBLABEL
  70189. ><B.BODY></B.BODY
  70190. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00633.unk" origfile="pics/hashtbl.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70191. ></FA.FIGURE.ANCHOR
  70192. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70193. >School.cex</SL.SUBLABEL
  70194. ><B.BODY></B.BODY
  70195. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70196. ><EWM.EXAMPLEW.MONO>method School.Init</EWM.EXAMPLEW.MONO
  70197. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70198. ><EWM.EXAMPLEW.MONO>    super.Init();</EWM.EXAMPLEW.MONO
  70199. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    pupilSet = new;</CX5FX5FBULLET.EMPHASIS
  70200. ></EWM.EXAMPLEW.MONO
  70201. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    &truehy;&truehy; ! the user should initialize HashTable ‘pupilSet’ properly</CX5FX5FBULLET.EMPHASIS
  70202. ></EWM.EXAMPLEW.MONO
  70203. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    &truehy;&truehy; ! by calling ``pupilSet.Setup(...)’’ in the user section</CX5FX5FBULLET.EMPHASIS
  70204. ></EWM.EXAMPLEW.MONO
  70205. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy;</EWM.EXAMPLEW.MONO
  70206. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; Start constructor user section</EWM.EXAMPLEW.MONO
  70207. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; End constructor user section</EWM.EXAMPLEW.MONO
  70208. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70209. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70210. ><B.BODY>The following is an example of a user&truehy;defined hash table initialization:</B.BODY
  70211. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; Start constructor user section</EWM.EXAMPLEW.MONO
  70212. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>       intFuncs : HashFuncs = new(keyType = SP_KT_INTEGER);</CX5FX5FBULLET.EMPHASIS
  70213. ></EWM.EXAMPLEW.MONO
  70214. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>       pupilSet.Setup(size = 1000, functions = intFuncs, uniqueKey = FALSE);</CX5FX5FBULLET.EMPHASIS
  70215. ></EWM.EXAMPLEW.MONO
  70216. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; End constructor user section</EWM.EXAMPLEW.MONO
  70217. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70218. >For more information</SL.SUBLABEL
  70219. ><B.BODY>See <RBW-XREF REFID="32807" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations</RBW-XREF
  70220. >.</B.BODY
  70221. ></LABEL
  70222. ></SUBSECTION
  70223. ></SECTION
  70224. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25351"></RBW-ANCHOR
  70225. >Mapping Inheritance</S.SECTION.HEAD
  70226. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70227. >Introduction</L.LABEL
  70228. ><B.BODY>The Forté code generator supports single inheritance for classes. Multiple inheritance is not supported.</B.BODY
  70229. ></LABEL
  70230. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70231. >What is generated</L.LABEL
  70232. ><B.BODY>In Forté, every class is a subclass of another class, with Framework.Object as root class. Every custom class you draw in ObjectTeam is part of an inheritance hierarchy. Even if you do not draw a superclass for a custom class, the class is assumed to be a subclass of Framework.Object.</B.BODY
  70233. ><B.BODY>In the <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  70234. > file that is generated for a custom class, the class’s superclass is always included in the class definition.</B.BODY
  70235. ></LABEL
  70236. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70237. >Example</L.LABEL
  70238. ><B.BODY>The following picture shows a simple inheritance hierarchy:</B.BODY
  70239. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00634.unk" origfile="pics/inherit.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70240. ></FA.FIGURE.ANCHOR
  70241. ><B.BODY>The definitions of the classes that are generated are as follows:</B.BODY
  70242. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70243. >DialogBox.cex</SL.SUBLABEL
  70244. ><B.BODY></B.BODY
  70245. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70246. ><EWM.EXAMPLEW.MONO>class DialogBox is mapped <CX5FX5FBULLET.EMPHASIS>inherits from DisplayProject.UserWindow</CX5FX5FBULLET.EMPHASIS
  70247. ></EWM.EXAMPLEW.MONO
  70248. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70249. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70250. >MessageDB.cex</SL.SUBLABEL
  70251. ><B.BODY></B.BODY
  70252. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70253. ><EWM.EXAMPLEW.MONO>class MessageDB is mapped <CX5FX5FBULLET.EMPHASIS>inherits from mySystem.DialogBox</CX5FX5FBULLET.EMPHASIS
  70254. ></EWM.EXAMPLEW.MONO
  70255. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70256. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70257. >NoteBookDB.cex</SL.SUBLABEL
  70258. ><B.BODY></B.BODY
  70259. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70260. ><EWM.EXAMPLEW.MONO>class NoteBookDB is mapped <CX5FX5FBULLET.EMPHASIS>inherits from mySystem.DialogBox</CX5FX5FBULLET.EMPHASIS
  70261. ></EWM.EXAMPLEW.MONO
  70262. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70263. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70264. >ListDB.cex</SL.SUBLABEL
  70265. ><B.BODY></B.BODY
  70266. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70267. ><EWM.EXAMPLEW.MONO>class ListDB is mapped <CX5FX5FBULLET.EMPHASIS>inherits from mySystem.DialogBox</CX5FX5FBULLET.EMPHASIS
  70268. ></EWM.EXAMPLEW.MONO
  70269. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70270. ></LABEL
  70271. ></SECTION
  70272. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="34926"></RBW-ANCHOR
  70273. >Mapping Associations</S.SECTION.HEAD
  70274. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70275. >Introduction</L.LABEL
  70276. ><B.BODY><RBW-IDXTERM TERM1="mapping" TERM2="association"></RBW-IDXTERM
  70277. ><RBW-IDXTERM TERM1="association" TERM2="mapping of"></RBW-IDXTERM
  70278. >ObjectTeam supports the following types of associations between classes:</B.BODY
  70279. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  70280. ></RBW-AUTOGEN
  70281. ></RBW-MARKER
  70282. ><RBW-PARABODY>Binary association (association between two classes)</RBW-PARABODY
  70283. ></LB.LIST.BULLET
  70284. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  70285. ></RBW-AUTOGEN
  70286. ></RBW-MARKER
  70287. ><RBW-PARABODY>Qualified association (association that include a qualifier)</RBW-PARABODY
  70288. ></LB.LIST.BULLET
  70289. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  70290. ></RBW-AUTOGEN
  70291. ></RBW-MARKER
  70292. ><RBW-PARABODY>Link attribute (attributes used to define the association)</RBW-PARABODY
  70293. ></LB.LIST.BULLET
  70294. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  70295. ></RBW-AUTOGEN
  70296. ></RBW-MARKER
  70297. ><RBW-PARABODY>Association as class (class used to define the association)</RBW-PARABODY
  70298. ></LB.LIST.BULLET
  70299. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70300. >Mandatory associations</SL.SUBLABEL
  70301. ><B.BODY>The Forté code generator does not discriminate between mandatory and optional associations; it handles both as optional associtions.</B.BODY
  70302. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70303. ><RBW-IDXTERM TERM1="n-ary association"></RBW-IDXTERM
  70304. ><RBW-IDXTERM TERM1="association" TERM2="n-ary"></RBW-IDXTERM
  70305. >N&truehy;ary associations</SL.SUBLABEL
  70306. ><B.BODY>N&truehy;ary associations are ignored by the Forté code generator. Code is generated for the classes involved, but no code is generated for the association itself.</B.BODY
  70307. ></LABEL
  70308. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70309. >Aggregations</L.LABEL
  70310. ><B.BODY><RBW-IDXTERM TERM1="aggregation"></RBW-IDXTERM
  70311. >The Forté code generator translates aggregations like associations.</B.BODY
  70312. ></LABEL
  70313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70314. ><RBW-ANCHOR ID="32778"></RBW-ANCHOR
  70315. >Association attribute properties</L.LABEL
  70316. ><B.BODY>Association attributes and accessors, like data attributes and accessors, have associated ObjectTeam properties. You can effect the code generated for any association by specifying these properties in ObjectTeam.</B.BODY
  70317. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  70318. ></RBW-AUTOGEN
  70319. ></RBW-MARKER
  70320. ><RBW-PARABODY>To edit association properties:</RBW-PARABODY
  70321. ></P.PROCEDURE
  70322. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  70323. ></RBW-AUTOGEN
  70324. ></RBW-MARKER
  70325. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  70326. ></LN.LIST.NUM
  70327. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  70328. ></RBW-AUTOGEN
  70329. ></RBW-MARKER
  70330. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  70331. ></LN.LIST.NUM
  70332. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  70333. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  70334. ></RBW-AUTOGEN
  70335. ></RBW-MARKER
  70336. ><RBW-PARABODY>Select a role name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  70337. ></LN.LIST.NUM
  70338. ><LR.LIST.RESULT>The association attribute properties appear on the right side of the dialog box.</LR.LIST.RESULT
  70339. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00635.unk" origfile="pics/dbedacpr.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70340. ></FA2.FIGURE.ANCHOR.2
  70341. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  70342. ></RBW-AUTOGEN
  70343. ></RBW-MARKER
  70344. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  70345. ></LN.LIST.NUM
  70346. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="75p"><COLSPEC COLNAME="2" COLWIDTH="51p"><COLSPEC COLNAME="3" COLWIDTH="195p"><COLSPEC COLNAME="4" COLWIDTH="108p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>property</CELLHEADING
  70347. ></ENTRY
  70348. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>tab</CELLHEADING
  70349. ></ENTRY
  70350. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>specifies</CELLHEADING
  70351. ></ENTRY
  70352. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>see for details</CELLHEADING
  70353. ></ENTRY
  70354. ></RBW-ROW
  70355. ></THEAD
  70356. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access </CELLBODY
  70357. ></ENTRY
  70358. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  70359. ></ENTRY
  70360. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The accessibility of the association attribute</CELLBODY
  70361. ></ENTRY
  70362. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34064" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Data Attributes</RBW-XREF
  70363. ></CELLBODY
  70364. ></ENTRY
  70365. ></RBW-ROW
  70366. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access </CELLBODY
  70367. ><CELLBODY>Methods</CELLBODY
  70368. ></ENTRY
  70369. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  70370. ></ENTRY
  70371. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The access methods for the association attribute</CELLBODY
  70372. ></ENTRY
  70373. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24666" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes</RBW-XREF
  70374. ></CELLBODY
  70375. ></ENTRY
  70376. ></RBW-ROW
  70377. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Maximum</CELLBODY
  70378. ><CELLBODY>Volume</CELLBODY
  70379. ></ENTRY
  70380. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Misc</CELLBODY
  70381. ></ENTRY
  70382. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>The (expected) maximum number of entries in your many association (only applicable to associations with a multiplicity of many).</CELLBODY
  70383. ></ENTRY
  70384. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21308" TYPE="XREF-TEXTCOPY">Specifying the maximum volume</RBW-XREF
  70385. ></CELLBODY
  70386. ></ENTRY
  70387. ></RBW-ROW
  70388. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Free Text</CELLBODY
  70389. ></ENTRY
  70390. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text</CELLBODY
  70391. ></ENTRY
  70392. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optional attribute comments, which do not appear in generated code</CELLBODY
  70393. ></ENTRY
  70394. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  70395. ></ENTRY
  70396. ></RBW-ROW
  70397. ></TBODY
  70398. ></TGROUP
  70399. ></RBW-TABLE
  70400. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  70401. ></RBW-AUTOGEN
  70402. ></RBW-MARKER
  70403. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  70404. ></LN.LIST.NUM
  70405. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  70406. ></RBW-AUTOGEN
  70407. >The accessibility of association attributes for <CX5FX5FEMPHASIS>bidirectional</CX5FX5FEMPHASIS
  70408. > associations are <CX5FX5FEMPHASIS>always</CX5FX5FEMPHASIS
  70409. > Public. Hence, the code generator ignores the setting of the properties Access and Access Methods in biderectional associations.</N.NOTE
  70410. ></LABEL
  70411. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70412. >In this section</L.LABEL
  70413. ><B.BODY>This section contains the following topics:</B.BODY
  70414. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  70415. ></ENTRY
  70416. ></RBW-ROW
  70417. ></THEAD
  70418. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10004" TYPE="XREF-TEXTCOPY">Mapping Simple Associations&rbwtab;3–48</RBW-XREF
  70419. ></SB.SECTION.BLOCK.TABLE
  70420. ></ENTRY
  70421. ></RBW-ROW
  70422. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14505" TYPE="XREF-TEXTCOPY">Mapping Associations With Multiplicity of Many&rbwtab;3–52</RBW-XREF
  70423. ></SB.SECTION.BLOCK.TABLE
  70424. ></ENTRY
  70425. ></RBW-ROW
  70426. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19223" TYPE="XREF-TEXTCOPY">Mapping Ordered Associations&rbwtab;3–55</RBW-XREF
  70427. ></SB.SECTION.BLOCK.TABLE
  70428. ></ENTRY
  70429. ></RBW-ROW
  70430. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32807" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations&rbwtab;3–57</RBW-XREF
  70431. ></SB.SECTION.BLOCK.TABLE
  70432. ></ENTRY
  70433. ></RBW-ROW
  70434. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38957" TYPE="XREF-TEXTCOPY">Mapping Link Attributes and Classes as Associations&rbwtab;3–61</RBW-XREF
  70435. ></SB.SECTION.BLOCK.TABLE
  70436. ></ENTRY
  70437. ></RBW-ROW
  70438. ></TBODY
  70439. ></TGROUP
  70440. ></RBW-TABLE
  70441. ></LABEL
  70442. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10004"></RBW-ANCHOR
  70443. >Mapping Simple Associations</SS.SUBSEC.HEAD
  70444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70445. >Introduction</L.LABEL
  70446. ><B.BODY>This section describes how the Forté code generator implements the following simple associations between the Customer class and the Book class.</B.BODY
  70447. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70448. >Unidirectional association</SL.SUBLABEL
  70449. ><B.BODY></B.BODY
  70450. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00636.unk" origfile="pics/assuni.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70451. ></FA.FIGURE.ANCHOR
  70452. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70453. >Bidirectional association</SL.SUBLABEL
  70454. ><B.BODY></B.BODY
  70455. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00637.unk" origfile="pics/assbin.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70456. ></FA.FIGURE.ANCHOR
  70457. ></LABEL
  70458. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70459. >Unidirectional and bidirectional</L.LABEL
  70460. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="unidirectional"></RBW-IDXTERM
  70461. ><RBW-IDXTERM TERM1="unidirectional association"></RBW-IDXTERM
  70462. ><RBW-IDXTERM TERM1="association" TERM2="bidirectional"></RBW-IDXTERM
  70463. ><RBW-IDXTERM TERM1="bidirectional association"></RBW-IDXTERM
  70464. ><RBW-IDXTERM TERM1="one-to-one association"></RBW-IDXTERM
  70465. ><RBW-IDXTERM TERM1="association" TERM2="one-to-one"></RBW-IDXTERM
  70466. >The direction of an association is defined by the role names on the association. A role name at the far end of the association indicates an association from the class at the near end to the class at the far end.</B.BODY
  70467. ><B.BODY>If an association has a role name at only one end, it is a <CX5FX5FEMPHASIS>unidirectional</CX5FX5FEMPHASIS
  70468. > association (implemented in one direction). If an association has role names at both ends, it is a <CX5FX5FEMPHASIS>bidirectional</CX5FX5FEMPHASIS
  70469. > association (implemented in both directions).</B.BODY
  70470. ></LABEL
  70471. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70472. >Mapping a unidirectional association</L.LABEL
  70473. ><B.BODY><RBW-IDXTERM TERM1="Java, generated" TERM2="association attribute"></RBW-IDXTERM
  70474. ><RBW-IDXTERM TERM1="Java, generated" TERM2="association attribute access method"></RBW-IDXTERM
  70475. >The Forté code generator implements a unidirectional association by adding an <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  70476. > and a set of <CX5FX5FEMPHASIS>association attribute accessor methods</CX5FX5FEMPHASIS
  70477. > to the code generated for the class at the near end of the association. This allows the class at the near of the association (Customer) to access the class at the far end (Book); the class at the far end of the association cannot access the class at the near end.</B.BODY
  70478. ></LABEL
  70479. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70480. ><RBW-ANCHOR ID="21654"></RBW-ANCHOR
  70481. >Mapping a bidirectional association</L.LABEL
  70482. ><B.BODY>The Forté code generator implements a bidirectional association by adding an <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  70483. > and a set of <CX5FX5FEMPHASIS>association attribute accessor methods </CX5FX5FEMPHASIS
  70484. >to the code generated for both classes. This allows each class to access the other. To ensure integrity of a bidirectional association, the update method for a bidirectional association always maintains the association in both directions.</B.BODY
  70485. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  70486. ></RBW-AUTOGEN
  70487. >In bidirectional associations, the accesibility of association attributes and association attribute accessors is always Public. Hence, the association properties Access and Access Methods are ignored by the code generator.</N.NOTE
  70488. ></LABEL
  70489. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70490. >Bidirectional associations and .hex files</L.LABEL
  70491. ><B.BODY>Since both classes (class A and class B) in a bidirectional association use accessor methods to one another, class A should be known to Forté before class B, and class B should be known to Forté before class A. </B.BODY
  70492. ><B.BODY>To avoid conflicts on this, the Forté generator generates <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  70493. > files, which are equal to <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  70494. > files, except that the method bodies are lacking. These <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  70495. > files need to be imported in Forté first.</B.BODY
  70496. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70497. >For more information</SL.SUBLABEL
  70498. ><B.BODY>See <RBW-XREF REFID="20421" TYPE="XREF-TEXTCOPY">Generating Forté Code</RBW-XREF
  70499. >.</B.BODY
  70500. ></LABEL
  70501. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70502. >Example of a unidirectional association</L.LABEL
  70503. ><B.BODY>Following is an excerpt from the code generated for the Customer class in the unidirectional association. Because this is a unidirectional association, the Book class does not contain any code related to the association.</B.BODY
  70504. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  70505. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70506. ><EWM.EXAMPLEW.MONO>class Customer inherits from Framework.Object</EWM.EXAMPLEW.MONO
  70507. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70508. ><EWM.EXAMPLEW.MONO>has private attribute name: string;</EWM.EXAMPLEW.MONO
  70509. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has private attribute book: gen.Book;</CX5FX5FBULLET.EMPHASIS
  70510. ></EWM.EXAMPLEW.MONO
  70511. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70512. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  70513. ><EWM.EXAMPLEW.MONO>has public  method getName: string;</EWM.EXAMPLEW.MONO
  70514. ><EWM.EXAMPLEW.MONO>has public  method setName(input newName: string);</EWM.EXAMPLEW.MONO
  70515. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method getBook: gen.Book;</CX5FX5FBULLET.EMPHASIS
  70516. ></EWM.EXAMPLEW.MONO
  70517. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method setBook(input newBook: gen.Book);</CX5FX5FBULLET.EMPHASIS
  70518. ></EWM.EXAMPLEW.MONO
  70519. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70520. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  70521. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70522. ><EWM.EXAMPLEW.MONO>method Customer.getBook: gen.Book</EWM.EXAMPLEW.MONO
  70523. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70524. ><EWM.EXAMPLEW.MONO>    return book;</EWM.EXAMPLEW.MONO
  70525. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70526. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70527. ><EWM.EXAMPLEW.MONO>method Customer.setBook(input newBook: gen.Book)</EWM.EXAMPLEW.MONO
  70528. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70529. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    book = newBook;</CX5FX5FBULLET.EMPHASIS
  70530. ></EWM.EXAMPLEW.MONO
  70531. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70532. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70533. ><EWM.EXAMPLEW.MONO>end CLASS;</EWM.EXAMPLEW.MONO
  70534. ></LABEL
  70535. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70536. >Example of a bidirectional association</L.LABEL
  70537. ><B.BODY>Following is an excerpt from the code generated for the Customer class in the bidirectional association. Because this is a bidirectional association, the Book class contains similar code to implement the association in the other direction.</B.BODY
  70538. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  70539. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70540. ><EWM.EXAMPLEW.MONO>class Customer inherits from Framework.Object</EWM.EXAMPLEW.MONO
  70541. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70542. ><EWM.EXAMPLEW.MONO>has private attribute name: string;</EWM.EXAMPLEW.MONO
  70543. ><EWM.EXAMPLEW.MONO>has <CX5FX5FBULLET.EMPHASIS>public</CX5FX5FBULLET.EMPHASIS
  70544. >  attribute book: gen.Book;</EWM.EXAMPLEW.MONO
  70545. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70546. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  70547. ><EWM.EXAMPLEW.MONO>has public  method getName: string;</EWM.EXAMPLEW.MONO
  70548. ><EWM.EXAMPLEW.MONO>has public  method setName(input newName: string);</EWM.EXAMPLEW.MONO
  70549. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method getBook: gen.Book;</CX5FX5FBULLET.EMPHASIS
  70550. ></EWM.EXAMPLEW.MONO
  70551. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method setBook(input newBook: gen.Book);</CX5FX5FBULLET.EMPHASIS
  70552. ></EWM.EXAMPLEW.MONO
  70553. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70554. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  70555. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70556. ><EWM.EXAMPLEW.MONO>method Customer.getBook: gen.Book</EWM.EXAMPLEW.MONO
  70557. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70558. ><EWM.EXAMPLEW.MONO>    return book;</EWM.EXAMPLEW.MONO
  70559. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70560. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70561. ><EWM.EXAMPLEW.MONO>method Customer.setBook(input newBook: gen.Book)</EWM.EXAMPLEW.MONO
  70562. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70563. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (book != NIL) then</CX5FX5FBULLET.EMPHASIS
  70564. ></EWM.EXAMPLEW.MONO
  70565. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        book.cust = NIL;</CX5FX5FBULLET.EMPHASIS
  70566. ></EWM.EXAMPLEW.MONO
  70567. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70568. ></EWM.EXAMPLEW.MONO
  70569. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (newBook != NIL) then</CX5FX5FBULLET.EMPHASIS
  70570. ></EWM.EXAMPLEW.MONO
  70571. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        newBook.setCust(NIL);</CX5FX5FBULLET.EMPHASIS
  70572. ></EWM.EXAMPLEW.MONO
  70573. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        newBook.cust = self;</CX5FX5FBULLET.EMPHASIS
  70574. ></EWM.EXAMPLEW.MONO
  70575. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70576. ></EWM.EXAMPLEW.MONO
  70577. ><EWM.EXAMPLEW.MONO>    book = newBook;</EWM.EXAMPLEW.MONO
  70578. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70579. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70580. ><EWM.EXAMPLEW.MONO>end CLASS;</EWM.EXAMPLEW.MONO
  70581. ></LABEL
  70582. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70583. >Association attributes</L.LABEL
  70584. ><B.BODY><RBW-IDXTERM TERM1="association attribute"></RBW-IDXTERM
  70585. ><RBW-IDXTERM TERM1="attribute" TERM2="association attribute"></RBW-IDXTERM
  70586. ><RBW-IDXTERM TERM1="association attribute access method"></RBW-IDXTERM
  70587. ><RBW-IDXTERM TERM1="method" TERM2="association attribute access"></RBW-IDXTERM
  70588. >The ObjectTeam documentation use the term <CX5FX5FTERM>association attribute</CX5FX5FTERM
  70589. > to refer to data attributes generated to support ObjectTeam associations (as opposed to data attributes generated from ObjectTeam attributes). In Forté, an association attribute is simply another data attribute and association accessors are simply data attribute accessors.</B.BODY
  70590. ></LABEL
  70591. ></SUBSECTION
  70592. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14505"></RBW-ANCHOR
  70593. >Mapping Associations With Multiplicity of Many</SS.SUBSEC.HEAD
  70594. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70595. >Prerequisite</L.LABEL
  70596. ><B.BODY><RBW-XREF REFID="10004" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  70597. > describes the mapping of an ObjectTeam association with a multiplicity of one. This section assumes that you are familiar with that information.</B.BODY
  70598. ></LABEL
  70599. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70600. >Multiplicity of many</L.LABEL
  70601. ><B.BODY><RBW-IDXTERM TERM1="one-to-many association"></RBW-IDXTERM
  70602. ><RBW-IDXTERM TERM1="many-to-one association"></RBW-IDXTERM
  70603. ><RBW-IDXTERM TERM1="many-to-many association"></RBW-IDXTERM
  70604. ><RBW-IDXTERM TERM1="association" TERM2="one-to-many"></RBW-IDXTERM
  70605. ><RBW-IDXTERM TERM1="association" TERM2="many-to-many"></RBW-IDXTERM
  70606. >This section describes how the Forté code generator implements the following association between the Customer class and the Book class. </B.BODY
  70607. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00638.unk" origfile="pics/assmany.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70608. ></FA.FIGURE.ANCHOR
  70609. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  70610. ></RBW-AUTOGEN
  70611. >The generated code is the same, regardless of whether you have specified an explicit number for the multiplicity.</N.NOTE
  70612. ></LABEL
  70613. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70614. >Mapping a many association</L.LABEL
  70615. ><B.BODY><RBW-IDXTERM TERM1="Vector class"></RBW-IDXTERM
  70616. >The mapping of an association with a multiplicity of many is similar to that of an association with a multiplicity of one; however, the type of the association attribute is different. </B.BODY
  70617. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  70618. ></RBW-AUTOGEN
  70619. ></RBW-MARKER
  70620. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>One</CX5FX5FBULLET.EMPHASIS
  70621. >. For an association with a multiplicity of one, the type of the association attribute is the associated class.</RBW-PARABODY
  70622. ></LB.LIST.BULLET
  70623. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  70624. ></RBW-AUTOGEN
  70625. ></RBW-MARKER
  70626. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Many</CX5FX5FBULLET.EMPHASIS
  70627. >. For an association with a multiplicity of many, the type of the association attribute is the Array class. </RBW-PARABODY
  70628. ></LB.LIST.BULLET
  70629. ><LT.LIST.TEXT>The Array class uses a slightly different set of attribute access methods. For read access, it uses a get method. For write access, however, it uses two methods: add and remove. All three attribute access methods are shown in the following example.</LT.LIST.TEXT
  70630. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  70631. ></RBW-AUTOGEN
  70632. >The Array class is part of the Forté Framework library.</N2.NOTE.2
  70633. ></LABEL
  70634. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70635. ><RBW-ANCHOR ID="21308"></RBW-ANCHOR
  70636. >Specifying the maximum volume</L.LABEL
  70637. ><B.BODY>Two types of array classes exist in the Forté Framework library:</B.BODY
  70638. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  70639. ></RBW-AUTOGEN
  70640. ></RBW-MARKER
  70641. ><RBW-PARABODY>Array</RBW-PARABODY
  70642. ></LB.LIST.BULLET
  70643. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  70644. ></RBW-AUTOGEN
  70645. ></RBW-MARKER
  70646. ><RBW-PARABODY>LargeArray</RBW-PARABODY
  70647. ></LB.LIST.BULLET
  70648. ><B.BODY>The Array class is used for arrays smaller than 256 entries, whereas the LargeArray class is used for arrays beyond this limit. </B.BODY
  70649. ><B.BODY>You can use the Association property Maximum Volume to specify the (expected) maximum number of entries in your many association. Depending on this number, the Forté generator uses the Array or the LargeArray class.</B.BODY
  70650. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  70651. ></RBW-AUTOGEN
  70652. >If you do not specify a value for the Maximum Volume property, the Forté code generator uses the Array class.</N.NOTE
  70653. ></LABEL
  70654. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70655. >Example</L.LABEL
  70656. ><B.BODY>Following is an excerpt from the code generated for the Customer class shown above. (This association is unidirectional; therefore, the Book class does not contain any code related to the association.)</B.BODY
  70657. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  70658. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70659. ><EWM.EXAMPLEW.MONO>class Customer inherits from Framework.Object</EWM.EXAMPLEW.MONO
  70660. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70661. ><EWM.EXAMPLEW.MONO>has private attribute name: string;</EWM.EXAMPLEW.MONO
  70662. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has private attribute bookSet: Framework.Array of mySystem.Book;</CX5FX5FBULLET.EMPHASIS
  70663. ></EWM.EXAMPLEW.MONO
  70664. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70665. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  70666. ><EWM.EXAMPLEW.MONO>has public  method getName: string;</EWM.EXAMPLEW.MONO
  70667. ><EWM.EXAMPLEW.MONO>has public  method setName(input newName: string);</EWM.EXAMPLEW.MONO
  70668. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method addBook(input newBook: mySystem.Book);</CX5FX5FBULLET.EMPHASIS
  70669. ></EWM.EXAMPLEW.MONO
  70670. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method removeBook(input oldBook: mySystem.Book);</CX5FX5FBULLET.EMPHASIS
  70671. ></EWM.EXAMPLEW.MONO
  70672. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method getBookSet: Framework.Array of mySystem.Book;</CX5FX5FBULLET.EMPHASIS
  70673. ></EWM.EXAMPLEW.MONO
  70674. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70675. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  70676. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70677. ><EWM.EXAMPLEW.MONO>method Customer.Init</EWM.EXAMPLEW.MONO
  70678. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70679. ><EWM.EXAMPLEW.MONO>    super.Init();</EWM.EXAMPLEW.MONO
  70680. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    bookSet = new;</CX5FX5FBULLET.EMPHASIS
  70681. ></EWM.EXAMPLEW.MONO
  70682. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; Start constructor user section</EWM.EXAMPLEW.MONO
  70683. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; End constructor user section</EWM.EXAMPLEW.MONO
  70684. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70685. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70686. ><EWM.EXAMPLEW.MONO>method Customer.<CX5FX5FBULLET.EMPHASIS>addBook</CX5FX5FBULLET.EMPHASIS
  70687. >(input newBook: mySystem.Book)</EWM.EXAMPLEW.MONO
  70688. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70689. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (newBook == NIL) then</CX5FX5FBULLET.EMPHASIS
  70690. ></EWM.EXAMPLEW.MONO
  70691. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        return;</CX5FX5FBULLET.EMPHASIS
  70692. ></EWM.EXAMPLEW.MONO
  70693. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70694. ></EWM.EXAMPLEW.MONO
  70695. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (bookSet.FindRowForObject(newBook) == 0) then</CX5FX5FBULLET.EMPHASIS
  70696. ></EWM.EXAMPLEW.MONO
  70697. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        bookSet.AppendRow(newBook);</CX5FX5FBULLET.EMPHASIS
  70698. ></EWM.EXAMPLEW.MONO
  70699. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70700. ></EWM.EXAMPLEW.MONO
  70701. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70702. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70703. ><EWM.EXAMPLEW.MONO>method Customer.<CX5FX5FBULLET.EMPHASIS>removeBook</CX5FX5FBULLET.EMPHASIS
  70704. >(input oldBook: mySystem.Book)</EWM.EXAMPLEW.MONO
  70705. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70706. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (oldBook == NIL) then</CX5FX5FBULLET.EMPHASIS
  70707. ></EWM.EXAMPLEW.MONO
  70708. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        return;</CX5FX5FBULLET.EMPHASIS
  70709. ></EWM.EXAMPLEW.MONO
  70710. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70711. ></EWM.EXAMPLEW.MONO
  70712. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    bookSet.DeleteRow(object = oldBook);</CX5FX5FBULLET.EMPHASIS
  70713. ></EWM.EXAMPLEW.MONO
  70714. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70715. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70716. ><EWM.EXAMPLEW.MONO>end CLASS;</EWM.EXAMPLEW.MONO
  70717. ></LABEL
  70718. ></SUBSECTION
  70719. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19223"></RBW-ANCHOR
  70720. >Mapping Ordered Associations</SS.SUBSEC.HEAD
  70721. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70722. >Prerequisite</L.LABEL
  70723. ><B.BODY><RBW-XREF REFID="14505" TYPE="XREF-TEXTCOPY">Mapping Associations With Multiplicity of Many</RBW-XREF
  70724. > describes the mapping of an ObjectTeam association with multiplicity of many. This section assumes that you are familiar with that information.</B.BODY
  70725. ></LABEL
  70726. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70727. >Ordered association</L.LABEL
  70728. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="ordered"></RBW-IDXTERM
  70729. ><RBW-IDXTERM TERM1="ordered association"></RBW-IDXTERM
  70730. ><RBW-IDXTERM TERM1="mapping" TERM2="ordered association"></RBW-IDXTERM
  70731. >This section describes how the Forté code generator implements the following ordered association between the Customer class and the Book class. </B.BODY
  70732. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00639.unk" origfile="pics/assord.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70733. ></FA.FIGURE.ANCHOR
  70734. ></LABEL
  70735. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70736. >Mapping an ordered association</L.LABEL
  70737. ><B.BODY><RBW-IDXTERM TERM1="Queue class" TERM2="and ordered association"></RBW-IDXTERM
  70738. >The mapping of an ordered association, is similar to that of an association with an unordered multiplicity of many; however, the method that is generated for adding elements to the list is different.</B.BODY
  70739. ><B.BODY>For ordered associations, the method <CX5FX5FINPUT>append</CX5FX5FINPUT
  70740. ><CX5FX5FVARIABLE>class_name</CX5FX5FVARIABLE
  70741. > is generated. In the implementation of this method, the list is considered an array. For unordered associations, the method <CX5FX5FINPUT>add<RBWAUTO-0007>class_name </RBWAUTO-0007
  70742. ></CX5FX5FINPUT
  70743. >is generated, which considers the list a set.</B.BODY
  70744. ></LABEL
  70745. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70746. >Example</L.LABEL
  70747. ><B.BODY>Following is an excerpt from the code generated for the Customer class shown above. (This association is unidirectional; therefore, the Book class does not contain any code related to the association.)</B.BODY
  70748. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  70749. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70750. ><EWM.EXAMPLEW.MONO>class Customer inherits from Framework.Object</EWM.EXAMPLEW.MONO
  70751. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70752. ><EWM.EXAMPLEW.MONO>has private attribute name: string;</EWM.EXAMPLEW.MONO
  70753. ><EWM.EXAMPLEW.MONO>has private attribute bookSet: Framework.Array of mySystem.Book;</EWM.EXAMPLEW.MONO
  70754. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70755. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  70756. ><EWM.EXAMPLEW.MONO>has public  method getName: string;</EWM.EXAMPLEW.MONO
  70757. ><EWM.EXAMPLEW.MONO>has public  method setName(input newName: string);</EWM.EXAMPLEW.MONO
  70758. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method appendBook(input newBook: mySystem.Book);</CX5FX5FBULLET.EMPHASIS
  70759. ></EWM.EXAMPLEW.MONO
  70760. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method removeBook(input oldBook: mySystem.Book);</CX5FX5FBULLET.EMPHASIS
  70761. ></EWM.EXAMPLEW.MONO
  70762. ><EWM.EXAMPLEW.MONO>has public  method getBookSet: Framework.Array of mySystem.Book;</EWM.EXAMPLEW.MONO
  70763. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70764. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  70765. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70766. ><EWM.EXAMPLEW.MONO>method Customer.<CX5FX5FBULLET.EMPHASIS>appendBook</CX5FX5FBULLET.EMPHASIS
  70767. >(input newBook: mySystem.Book)</EWM.EXAMPLEW.MONO
  70768. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70769. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (newBook == NIL) then</CX5FX5FBULLET.EMPHASIS
  70770. ></EWM.EXAMPLEW.MONO
  70771. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        return;</CX5FX5FBULLET.EMPHASIS
  70772. ></EWM.EXAMPLEW.MONO
  70773. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70774. ></EWM.EXAMPLEW.MONO
  70775. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    bookSet.AppendRow(newBook);</CX5FX5FBULLET.EMPHASIS
  70776. ></EWM.EXAMPLEW.MONO
  70777. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70778. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70779. ></LABEL
  70780. ></SUBSECTION
  70781. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32807"></RBW-ANCHOR
  70782. >Mapping Qualified Associations</SS.SUBSEC.HEAD
  70783. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70784. >Prerequisite</L.LABEL
  70785. ><B.BODY><RBW-XREF REFID="14505" TYPE="XREF-TEXTCOPY">Mapping Associations With Multiplicity of Many</RBW-XREF
  70786. > describes the mapping of an ObjectTeam association with multiplicity of many. This section assumes that you are familiar with that information.</B.BODY
  70787. ></LABEL
  70788. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70789. >Qualified association</L.LABEL
  70790. ><B.BODY>This section describes how the Forté code generator implements the following association between the Customer class and the Book class. </B.BODY
  70791. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00640.unk" origfile="pics/quass.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70792. ></FA.FIGURE.ANCHOR
  70793. ></LABEL
  70794. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70795. >Mapping a qualified association</L.LABEL
  70796. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="qualified"></RBW-IDXTERM
  70797. ><RBW-IDXTERM TERM1="qualified association"></RBW-IDXTERM
  70798. ><RBW-IDXTERM TERM1="mapping" TERM2="qualified association"></RBW-IDXTERM
  70799. ><RBW-IDXTERM TERM1="Hashtable class"></RBW-IDXTERM
  70800. >The mapping of a qualified associations, is similar to that of an association with multiplicity of many; however, the type of the association attribute is different.</B.BODY
  70801. ><B.BODY>For a qualified association, the type of the association attribute is the class Framework.HashTable. The qualifier (bookID, in the CD above) is used as a key into the hashtable for storage and retrieval.</B.BODY
  70802. ></LABEL
  70803. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70804. >Initializing the hash table</L.LABEL
  70805. ><B.BODY><RBW-IDXTERM TERM1="hashCode method"></RBW-IDXTERM
  70806. ><RBW-IDXTERM TERM1="equals method"></RBW-IDXTERM
  70807. >If the qualified association has a multiplicity greater than 1, you must initialize the hash table using the Setup method. A comment in the generated code reminds you to provide code for this method.</B.BODY
  70808. ><B.BODY>For an example of such an initialization, see <RBW-XREF REFID="28842" TYPE="XREF-TEXTCOPY">The Init method in qualified associations</RBW-XREF
  70809. >.</B.BODY
  70810. ></LABEL
  70811. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70812. >Role names at the side of the qualifier</L.LABEL
  70813. ><B.BODY>In the example depicted above, every Book object keeps track of the Customer object it is associated with, or, if the multiplicity at the qualifier side is many, the <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  70814. > of associated Customer objects. Hence, the associated Customer object(s) can always be retrieved from a Book object.</B.BODY
  70815. ><B.BODY>Bear in mind, however, that if you put a role name at the side of the qualifier, Book objects do not keep track of the qualifier, or the set of qualifiers used to establish the association with Customer object(s). The attribute <CX5FX5FVARIABLE>roleName</CX5FX5FVARIABLE
  70816. > (or, in the case of a many association <CX5FX5FVARIABLE>roleNameSet</CX5FX5FVARIABLE
  70817. >) that is generated for Book will not contain the qualifier, and will return the same as in a non&truehy;qualified association.</B.BODY
  70818. ></LABEL
  70819. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70820. >How to edit qualifier properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for qualifier"></RBW-IDXTERM
  70821. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  70822. ><RBW-IDXTERM TERM1="qualifier" TERM2="editing properties"></RBW-IDXTERM
  70823. ></L.LABEL
  70824. ><B.BODY>The only properties available for a qualifier are the data type and comments. You can, of course, also edit other properties of the association, as described in <RBW-XREF REFID="32778" TYPE="XREF-TEXTCOPY">Association attribute properties</RBW-XREF
  70825. >.</B.BODY
  70826. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  70827. ></RBW-AUTOGEN
  70828. ></RBW-MARKER
  70829. ><RBW-PARABODY>To edit qualifier properties:</RBW-PARABODY
  70830. ></P.PROCEDURE
  70831. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  70832. ></RBW-AUTOGEN
  70833. ></RBW-MARKER
  70834. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  70835. ></LN.LIST.NUM
  70836. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  70837. ></RBW-AUTOGEN
  70838. ></RBW-MARKER
  70839. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  70840. ></LN.LIST.NUM
  70841. ><LR.LIST.RESULT>The Edit Properties dialog appears</LR.LIST.RESULT
  70842. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  70843. ></RBW-AUTOGEN
  70844. ></RBW-MARKER
  70845. ><RBW-PARABODY>Select a qualifier from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  70846. ></LN.LIST.NUM
  70847. ><LR.LIST.RESULT>The qualifier properties appear on the right side of the dialog box.</LR.LIST.RESULT
  70848. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  70849. ></RBW-AUTOGEN
  70850. ></RBW-MARKER
  70851. ><RBW-PARABODY>Select the desired properties. </RBW-PARABODY
  70852. ></LN.LIST.NUM
  70853. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  70854. ></RBW-MARKER
  70855. ><RBW-PARABODY><RBW-IDXTERM TERM1="qualifier" TERM2="data type"></RBW-IDXTERM
  70856. ><RBW-IDXTERM TERM1="data type" TERM2="for qualifier"></RBW-IDXTERM
  70857. >Use the Misc tab to specify a (mandatory) data type for the qualifier.</RBW-PARABODY
  70858. ></LB2.LIST.BULLET.2
  70859. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  70860. ></RBW-MARKER
  70861. ><RBW-PARABODY><RBW-IDXTERM TERM1="comment" TERM2="for qualifier"></RBW-IDXTERM
  70862. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  70863. ><RBW-IDXTERM TERM1="qualifier" TERM2="comment for"></RBW-IDXTERM
  70864. ><RBW-IDXTERM TERM1="Java, generated" TERM2="comment, for qualifier"></RBW-IDXTERM
  70865. >Use the Text tab to attach comments to the qualified association. Note that these comments do not appear in the generated code.</RBW-PARABODY
  70866. ></LB2.LIST.BULLET.2
  70867. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  70868. ></RBW-AUTOGEN
  70869. ></RBW-MARKER
  70870. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  70871. ></LN.LIST.NUM
  70872. ></LABEL
  70873. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70874. >Example</L.LABEL
  70875. ><B.BODY>Following is an excerpt from the code generated for the Customer class shown above. (The association is unidirectional; therefore, the Book class does not contain any code related to the association.)</B.BODY
  70876. ><B.BODY>The data type of the bookID qualifier is specified as integer, which is a Forté standard data type. The comment in the code reminds you to initialize the hash table for bookID.</B.BODY
  70877. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  70878. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70879. ><EWM.EXAMPLEW.MONO>class Customer inherits from Framework.Object</EWM.EXAMPLEW.MONO
  70880. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70881. ><EWM.EXAMPLEW.MONO>has private attribute name: string;</EWM.EXAMPLEW.MONO
  70882. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has private attribute bookSet: Framework.HashTable;</CX5FX5FBULLET.EMPHASIS
  70883. ></EWM.EXAMPLEW.MONO
  70884. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70885. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  70886. ><EWM.EXAMPLEW.MONO>has public  method getName: string;</EWM.EXAMPLEW.MONO
  70887. ><EWM.EXAMPLEW.MONO>has public  method setName(input newName: string);</EWM.EXAMPLEW.MONO
  70888. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method getBookSet(input bookIDKey: integer): Framework.Array of mySystem.Book;</CX5FX5FBULLET.EMPHASIS
  70889. ></EWM.EXAMPLEW.MONO
  70890. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method addBook(input bookIDKey: integer,</CX5FX5FBULLET.EMPHASIS
  70891. ></EWM.EXAMPLEW.MONO
  70892. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    input newBook: mySystem.Book);</CX5FX5FBULLET.EMPHASIS
  70893. ></EWM.EXAMPLEW.MONO
  70894. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method removeBook(input bookIDKey: integer,</CX5FX5FBULLET.EMPHASIS
  70895. ></EWM.EXAMPLEW.MONO
  70896. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    input oldBook: mySystem.Book);</CX5FX5FBULLET.EMPHASIS
  70897. ></EWM.EXAMPLEW.MONO
  70898. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70899. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  70900. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70901. ><EWM.EXAMPLEW.MONO>method Customer.Init</EWM.EXAMPLEW.MONO
  70902. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70903. ><EWM.EXAMPLEW.MONO>    super.Init();</EWM.EXAMPLEW.MONO
  70904. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    bookSet = new;</CX5FX5FBULLET.EMPHASIS
  70905. ></EWM.EXAMPLEW.MONO
  70906. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    &truehy;&truehy; ! the user should initialize HashTable ‘bookSet’ properly</CX5FX5FBULLET.EMPHASIS
  70907. ></EWM.EXAMPLEW.MONO
  70908. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    &truehy;&truehy; ! by calling ``bookSet.Setup(...)’’ in the user section</CX5FX5FBULLET.EMPHASIS
  70909. ></EWM.EXAMPLEW.MONO
  70910. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy;</EWM.EXAMPLEW.MONO
  70911. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; Start constructor user section</EWM.EXAMPLEW.MONO
  70912. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; End constructor user section</EWM.EXAMPLEW.MONO
  70913. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70914. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  70915. ><EWM.EXAMPLEW.MONO>method Customer.<CX5FX5FBULLET.EMPHASIS>getBookSet</CX5FX5FBULLET.EMPHASIS
  70916. >(input bookIDKey: integer): Framework.Array of mySystem.Book</EWM.EXAMPLEW.MONO
  70917. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70918. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    obj : Framework.Object = bookSet.Find(bookIDKey);</CX5FX5FBULLET.EMPHASIS
  70919. ></EWM.EXAMPLEW.MONO
  70920. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (obj != NIL) then</CX5FX5FBULLET.EMPHASIS
  70921. ></EWM.EXAMPLEW.MONO
  70922. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        return (Framework.Array of mySystem.Book) (obj);</CX5FX5FBULLET.EMPHASIS
  70923. ></EWM.EXAMPLEW.MONO
  70924. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70925. ></EWM.EXAMPLEW.MONO
  70926. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    return NIL;</CX5FX5FBULLET.EMPHASIS
  70927. ></EWM.EXAMPLEW.MONO
  70928. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70929. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70930. ><EWM.EXAMPLEW.MONO>method Customer.addBook(input bookIDKey: integer,</EWM.EXAMPLEW.MONO
  70931. ><EWM.EXAMPLEW.MONO>    input newBook: mySystem.Book)</EWM.EXAMPLEW.MONO
  70932. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70933. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (newBook == NIL) then</CX5FX5FBULLET.EMPHASIS
  70934. ></EWM.EXAMPLEW.MONO
  70935. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        return;</CX5FX5FBULLET.EMPHASIS
  70936. ></EWM.EXAMPLEW.MONO
  70937. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70938. ></EWM.EXAMPLEW.MONO
  70939. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    theSet : Framework.Array of mySystem.Book;</CX5FX5FBULLET.EMPHASIS
  70940. ></EWM.EXAMPLEW.MONO
  70941. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    obj : Framework.Object = bookSet.Find(bookIDKey);</CX5FX5FBULLET.EMPHASIS
  70942. ></EWM.EXAMPLEW.MONO
  70943. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (obj == NIL) then</CX5FX5FBULLET.EMPHASIS
  70944. ></EWM.EXAMPLEW.MONO
  70945. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        theSet = new;</CX5FX5FBULLET.EMPHASIS
  70946. ></EWM.EXAMPLEW.MONO
  70947. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        bookSet.Enter(bookIDKey, theSet);</CX5FX5FBULLET.EMPHASIS
  70948. ></EWM.EXAMPLEW.MONO
  70949. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    else</CX5FX5FBULLET.EMPHASIS
  70950. ></EWM.EXAMPLEW.MONO
  70951. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        theSet = (Framework.Array of mySystem.Book) (obj);</CX5FX5FBULLET.EMPHASIS
  70952. ></EWM.EXAMPLEW.MONO
  70953. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70954. ></EWM.EXAMPLEW.MONO
  70955. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (theSet.FindRowForObject(newBook) == 0) then</CX5FX5FBULLET.EMPHASIS
  70956. ></EWM.EXAMPLEW.MONO
  70957. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        theSet.AppendRow(newBook);</CX5FX5FBULLET.EMPHASIS
  70958. ></EWM.EXAMPLEW.MONO
  70959. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70960. ></EWM.EXAMPLEW.MONO
  70961. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70962. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70963. ><EWM.EXAMPLEW.MONO>method Customer.<CX5FX5FBULLET.EMPHASIS>removeBook</CX5FX5FBULLET.EMPHASIS
  70964. >(input bookIDKey: integer,</EWM.EXAMPLEW.MONO
  70965. ><EWM.EXAMPLEW.MONO>    input oldBook: mySystem.Book)</EWM.EXAMPLEW.MONO
  70966. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  70967. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (oldBook == NIL) then</CX5FX5FBULLET.EMPHASIS
  70968. ></EWM.EXAMPLEW.MONO
  70969. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        return;</CX5FX5FBULLET.EMPHASIS
  70970. ></EWM.EXAMPLEW.MONO
  70971. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70972. ></EWM.EXAMPLEW.MONO
  70973. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    obj : Framework.Object = bookSet.Find(bookIDKey);</CX5FX5FBULLET.EMPHASIS
  70974. ></EWM.EXAMPLEW.MONO
  70975. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    if (obj != NIL) then</CX5FX5FBULLET.EMPHASIS
  70976. ></EWM.EXAMPLEW.MONO
  70977. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        theSet : Framework.Array of mySystem.Book = (Framework.Array of mySystem.Book) (obj);</CX5FX5FBULLET.EMPHASIS
  70978. ></EWM.EXAMPLEW.MONO
  70979. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>        theSet.DeleteRow(object = oldBook);</CX5FX5FBULLET.EMPHASIS
  70980. ></EWM.EXAMPLEW.MONO
  70981. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    end if;</CX5FX5FBULLET.EMPHASIS
  70982. ></EWM.EXAMPLEW.MONO
  70983. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  70984. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70985. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  70986. ><EWM.EXAMPLEW.MONO>end CLASS;</EWM.EXAMPLEW.MONO
  70987. ></LABEL
  70988. ></SUBSECTION
  70989. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38957"></RBW-ANCHOR
  70990. >Mapping Link Attributes and Classes as Associations</SS.SUBSEC.HEAD
  70991. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70992. >Prerequisite</L.LABEL
  70993. ><B.BODY>This section assumes that you are familiar with the mapping of various types of associations, as described in the previous sections.</B.BODY
  70994. ></LABEL
  70995. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  70996. >Attributes and classes on associations</L.LABEL
  70997. ><B.BODY>ObjectTeam allows you to specify information about an association by linking attributes, or a class, to the association. The following diagram shows a link attribute symbol; a class symbol could be used in the same location.</B.BODY
  70998. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00641.unk" origfile="pics/asslatr.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  70999. ></FA.FIGURE.ANCHOR
  71000. ></LABEL
  71001. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71002. >Association mapped as two associations</L.LABEL
  71003. ><B.BODY>An association that includes a link attribute or a class is transformed before code generation. The link attribute or class becomes a separate class, with appropriate associations to the original classes. The generated code is then based on the transformed association.</B.BODY
  71004. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71005. >Example</SL.SUBLABEL
  71006. ><B.BODY>The code generated for the CD shown above is actually based on the following CD:</B.BODY
  71007. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00642.unk" origfile="pics/assascl.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71008. ></FA.FIGURE.ANCHOR
  71009. ></LABEL
  71010. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71011. >Name used for the third class</L.LABEL
  71012. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="and link attribute"></RBW-IDXTERM
  71013. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  71014. ><RBW-IDXTERM TERM1="link attribute"></RBW-IDXTERM
  71015. ><RBW-IDXTERM TERM1="mapping" TERM2="link attribute"></RBW-IDXTERM
  71016. >If the association includes a link attribute, the new class is assigned the name of the association. Therefore, an association that has a link attribute must have an association name.</B.BODY
  71017. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="and class"></RBW-IDXTERM
  71018. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  71019. ><RBW-IDXTERM TERM1="class" TERM2="as association"></RBW-IDXTERM
  71020. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  71021. ><RBW-IDXTERM TERM1="mapping" TERM2="class, as association"></RBW-IDXTERM
  71022. >If the association includes a class, that class is used as the third class. Therefore, an association that includes a class does not need an association name.</B.BODY
  71023. ></LABEL
  71024. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71025. >Role names are required</L.LABEL
  71026. ><B.BODY>As with all associations, role names are required. If a role name is omitted, the association attributes and methods that would map to that role name are not generated.</B.BODY
  71027. ></LABEL
  71028. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71029. >Example</L.LABEL
  71030. ><BI.BODY.INTRO>Following is the code generated for each of the three Forté classes produced by the CD shown above.</BI.BODY.INTRO
  71031. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71032. >purchase.cex</SL.SUBLABEL
  71033. ><BI.BODY.INTRO></BI.BODY.INTRO
  71034. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  71035. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71036. ><EWM.EXAMPLEW.MONO>class purchase inherits from Framework.Object</EWM.EXAMPLEW.MONO
  71037. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71038. ><EWM.EXAMPLEW.MONO>has private attribute date: string;</EWM.EXAMPLEW.MONO
  71039. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  attribute cust: mySystem.Customer;</CX5FX5FBULLET.EMPHASIS
  71040. ></EWM.EXAMPLEW.MONO
  71041. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  attribute book: mySystem.Book;</CX5FX5FBULLET.EMPHASIS
  71042. ></EWM.EXAMPLEW.MONO
  71043. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71044. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  71045. ><EWM.EXAMPLEW.MONO>has public  method getDate: string;</EWM.EXAMPLEW.MONO
  71046. ><EWM.EXAMPLEW.MONO>has public  method setDate(input newDate: string);</EWM.EXAMPLEW.MONO
  71047. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method getCust: mySystem.Customer;</CX5FX5FBULLET.EMPHASIS
  71048. ></EWM.EXAMPLEW.MONO
  71049. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method getBook: mySystem.Book;</CX5FX5FBULLET.EMPHASIS
  71050. ></EWM.EXAMPLEW.MONO
  71051. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71052. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  71053. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71054. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71055. >Customer.cex</SL.SUBLABEL
  71056. ><BI.BODY.INTRO></BI.BODY.INTRO
  71057. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  71058. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71059. ><EWM.EXAMPLEW.MONO>class Customer inherits from Framework.Object</EWM.EXAMPLEW.MONO
  71060. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71061. ><EWM.EXAMPLEW.MONO>has private attribute name: string;</EWM.EXAMPLEW.MONO
  71062. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  attribute purchaseOfBookSet: Framework.Array of mySystem.purchase;</CX5FX5FBULLET.EMPHASIS
  71063. ></EWM.EXAMPLEW.MONO
  71064. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71065. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  71066. ><EWM.EXAMPLEW.MONO>has public  method getName: string;</EWM.EXAMPLEW.MONO
  71067. ><EWM.EXAMPLEW.MONO>has public  method setName(input newName: string);</EWM.EXAMPLEW.MONO
  71068. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method getPurchaseOfBookSet: Framework.Array of mySystem.purchase;</CX5FX5FBULLET.EMPHASIS
  71069. ></EWM.EXAMPLEW.MONO
  71070. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71071. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  71072. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71073. ><EWM.EXAMPLEW.MONO>method Customer.Init</EWM.EXAMPLEW.MONO
  71074. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  71075. ><EWM.EXAMPLEW.MONO>    super.Init();</EWM.EXAMPLEW.MONO
  71076. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>    purchaseOfBookSet = new;</CX5FX5FBULLET.EMPHASIS
  71077. ></EWM.EXAMPLEW.MONO
  71078. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; Start constructor user section</EWM.EXAMPLEW.MONO
  71079. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; End constructor user section</EWM.EXAMPLEW.MONO
  71080. ><EWM.EXAMPLEW.MONO>end method;</EWM.EXAMPLEW.MONO
  71081. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71082. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71083. >Book.cex</SL.SUBLABEL
  71084. ><BI.BODY.INTRO></BI.BODY.INTRO
  71085. ><EWM.EXAMPLEW.MONO>begin CLASS;</EWM.EXAMPLEW.MONO
  71086. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71087. ><EWM.EXAMPLEW.MONO>class Book inherits from Framework.Object</EWM.EXAMPLEW.MONO
  71088. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71089. ><EWM.EXAMPLEW.MONO>has private attribute title: string;</EWM.EXAMPLEW.MONO
  71090. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  attribute purchaseOfCust: mySystem.purchase;</CX5FX5FBULLET.EMPHASIS
  71091. ></EWM.EXAMPLEW.MONO
  71092. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71093. ><EWM.EXAMPLEW.MONO>has public  method Init;</EWM.EXAMPLEW.MONO
  71094. ><EWM.EXAMPLEW.MONO>has public  method getTitle: string;</EWM.EXAMPLEW.MONO
  71095. ><EWM.EXAMPLEW.MONO>has public  method setTitle(input newTitle: string);</EWM.EXAMPLEW.MONO
  71096. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>has public  method getPurchaseOfCust: mySystem.purchase;</CX5FX5FBULLET.EMPHASIS
  71097. ></EWM.EXAMPLEW.MONO
  71098. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  71099. ><EWM.EXAMPLEW.MONO>end class;</EWM.EXAMPLEW.MONO
  71100. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71101. ></LABEL
  71102. ></SUBSECTION
  71103. ></SECTION
  71104. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40407"></RBW-ANCHOR
  71105. >Handling Special Classes</S.SECTION.HEAD
  71106. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71107. >Introduction</L.LABEL
  71108. ><B.BODY>There are several special constructions in Forté that can be modeled in ObjectTeam.</B.BODY
  71109. ><B.BODY>The following special classes are discussed in this section:</B.BODY
  71110. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  71111. ></ENTRY
  71112. ></RBW-ROW
  71113. ></THEAD
  71114. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24618" TYPE="XREF-TEXTCOPY">Typedef Class&rbwtab;3–65</RBW-XREF
  71115. ></SB.SECTION.BLOCK.TABLE
  71116. ></ENTRY
  71117. ></RBW-ROW
  71118. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12612" TYPE="XREF-TEXTCOPY">Generic Typedef Class&rbwtab;3–67</RBW-XREF
  71119. ></SB.SECTION.BLOCK.TABLE
  71120. ></ENTRY
  71121. ></RBW-ROW
  71122. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27793" TYPE="XREF-TEXTCOPY">Constant Class&rbwtab;3–71</RBW-XREF
  71123. ></SB.SECTION.BLOCK.TABLE
  71124. ></ENTRY
  71125. ></RBW-ROW
  71126. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13941" TYPE="XREF-TEXTCOPY">Enum Class&rbwtab;3–75</RBW-XREF
  71127. ></SB.SECTION.BLOCK.TABLE
  71128. ></ENTRY
  71129. ></RBW-ROW
  71130. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15593" TYPE="XREF-TEXTCOPY">Struct Class&rbwtab;3–77</RBW-XREF
  71131. ></SB.SECTION.BLOCK.TABLE
  71132. ></ENTRY
  71133. ></RBW-ROW
  71134. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39931" TYPE="XREF-TEXTCOPY">Union Class&rbwtab;3–78</RBW-XREF
  71135. ></SB.SECTION.BLOCK.TABLE
  71136. ></ENTRY
  71137. ></RBW-ROW
  71138. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30243" TYPE="XREF-TEXTCOPY">Service Object Class&rbwtab;3–79</RBW-XREF
  71139. ></SB.SECTION.BLOCK.TABLE
  71140. ></ENTRY
  71141. ></RBW-ROW
  71142. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33517" TYPE="XREF-TEXTCOPY">Cursor Class&rbwtab;3–81</RBW-XREF
  71143. ></SB.SECTION.BLOCK.TABLE
  71144. ></ENTRY
  71145. ></RBW-ROW
  71146. ></TBODY
  71147. ></TGROUP
  71148. ></RBW-TABLE
  71149. ></LABEL
  71150. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71151. >.hex files</L.LABEL
  71152. ><B.BODY>As with any ObjectTeam class, the Forté code generator generates a <CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  71153. > and a <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  71154. > file for every special class. However, since no Forté classes are generated for special classes, the <CX5FX5FFILE.NAME>.hex</CX5FX5FFILE.NAME
  71155. > files are redundant. They only contain the following line:</B.BODY
  71156. ><EM.EXAMPLE.MONO>&truehy;&truehy;empty</EM.EXAMPLE.MONO
  71157. ></LABEL
  71158. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24618"></RBW-ANCHOR
  71159. >Typedef Class</SS.SUBSEC.HEAD
  71160. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71161. >Introduction</L.LABEL
  71162. ><B.BODY><RBW-IDXTERM TERM1="enumeration"></RBW-IDXTERM
  71163. >The Typedef class is a standard construct to specify the Forté derived C data type <CX5FX5FINPUT>typedef</CX5FX5FINPUT
  71164. >: a synonym for a specific data type or user&truehy;defined class.</B.BODY
  71165. ><B.BODY>A Typedef class is a class with only one data attribute and no methods. It is generated into the following Forté typedef construction:</B.BODY
  71166. ><EM.EXAMPLE.MONO>typedef <CX5FX5FVARIABLE>data_type</CX5FX5FVARIABLE
  71167. > <CX5FX5FVARIABLE>type_name;</CX5FX5FVARIABLE
  71168. ></EM.EXAMPLE.MONO
  71169. ><B.BODY>This is how it maps to the Forté typedef construction:</B.BODY
  71170. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>forté</CELLHEADING
  71171. ></ENTRY
  71172. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam</CELLHEADING
  71173. ></ENTRY
  71174. ></RBW-ROW
  71175. ></THEAD
  71176. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>data_type</CX5FX5FVARIABLE
  71177. ></CELLBODY
  71178. ></ENTRY
  71179. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>class name</CELLBODY
  71180. ></ENTRY
  71181. ></RBW-ROW
  71182. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>type_name</CX5FX5FVARIABLE
  71183. ></CELLBODY
  71184. ></ENTRY
  71185. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>data type of attribute</CELLBODY
  71186. ></ENTRY
  71187. ></RBW-ROW
  71188. ></TBODY
  71189. ></TGROUP
  71190. ></RBW-TABLE
  71191. ></LABEL
  71192. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71193. >How to specify a typedef class</L.LABEL
  71194. ><B.BODY>To specify a typedef class:</B.BODY
  71195. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71196. ></RBW-AUTOGEN
  71197. ></RBW-MARKER
  71198. ><RBW-PARABODY>Draw a class with only one data attribute that represents the source type.</RBW-PARABODY
  71199. ></LN.LIST.NUM
  71200. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  71201. ></RBW-AUTOGEN
  71202. >The name of the data attribute is not important, but must be provided.</N2.NOTE.2
  71203. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71204. ></RBW-AUTOGEN
  71205. ></RBW-MARKER
  71206. ><RBW-PARABODY>Make sure the class does not have any of the following:</RBW-PARABODY
  71207. ></LN.LIST.NUM
  71208. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71209. ></RBW-MARKER
  71210. ><RBW-PARABODY>associations resulting in code generation</RBW-PARABODY
  71211. ></LB2.LIST.BULLET.2
  71212. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71213. ></RBW-MARKER
  71214. ><RBW-PARABODY>operations</RBW-PARABODY
  71215. ></LB2.LIST.BULLET.2
  71216. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71217. ></RBW-MARKER
  71218. ><RBW-PARABODY>superclasses</RBW-PARABODY
  71219. ></LB2.LIST.BULLET.2
  71220. ></LABEL
  71221. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71222. >Example</L.LABEL
  71223. ><B.BODY>The following figure shows two typedef classes. </B.BODY
  71224. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00643.unk" origfile="pics/specex12.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71225. ></FA.FIGURE.ANCHOR
  71226. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71227. >TypedefEx1.cex</SL.SUBLABEL
  71228. ><E.EXAMPLE></E.EXAMPLE
  71229. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71230. ><EM.EXAMPLE.MONO>typedef TypedefEx1 : char;</EM.EXAMPLE.MONO
  71231. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71232. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71233. >TypedefEx1.cex</SL.SUBLABEL
  71234. ><E.EXAMPLE></E.EXAMPLE
  71235. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71236. ><EM.EXAMPLE.MONO>typedef TypedefEx2 : Date;</EM.EXAMPLE.MONO
  71237. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71238. ></LABEL
  71239. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71240. >How to avoid generating a typedef class</L.LABEL
  71241. ><B.BODY>For every class that has only one data attribute and no methods, the Forté code generator generates a typedef construction.</B.BODY
  71242. ><B.BODY>However, you may have such classes in your model for which you do not want to generate a typedef. The way of getting around this is to add the following method to the class:</B.BODY
  71243. ><EM.EXAMPLE.MONO>$create</EM.EXAMPLE.MONO
  71244. ><B.BODY>This method signals the Forté generator to handle the class as a regular class, but does not appear in the generated code.</B.BODY
  71245. ></LABEL
  71246. ></SUBSECTION
  71247. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="12612"></RBW-ANCHOR
  71248. >Generic Typedef Class</SS.SUBSEC.HEAD
  71249. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71250. >Introduction</L.LABEL
  71251. ><B.BODY>Generic typedef constructions are typedefs through which you can define a synonym for the following data types that are supported by Forté:</B.BODY
  71252. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>data type</CELLHEADING
  71253. ></ENTRY
  71254. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>kind of data type</CELLHEADING
  71255. ></ENTRY
  71256. ></RBW-ROW
  71257. ></THEAD
  71258. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer to <CX5FX5FVARIABLE>data_type</CX5FX5FVARIABLE
  71259. ></CELLBODY
  71260. ></ENTRY
  71261. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>derived C data type</CELLBODY
  71262. ></ENTRY
  71263. ></RBW-ROW
  71264. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Array </CELLBODY
  71265. ></ENTRY
  71266. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>TOOL data type</CELLBODY
  71267. ></ENTRY
  71268. ></RBW-ROW
  71269. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>HashTable</CELLBODY
  71270. ></ENTRY
  71271. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>TOOL data type</CELLBODY
  71272. ></ENTRY
  71273. ></RBW-ROW
  71274. ></TBODY
  71275. ></TGROUP
  71276. ></RBW-TABLE
  71277. ></LABEL
  71278. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71279. >How to specify a generic typedef class</L.LABEL
  71280. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  71281. ></RBW-AUTOGEN
  71282. ></RBW-MARKER
  71283. ><RBW-PARABODY>To specify a generic typedef class:</RBW-PARABODY
  71284. ></P.PROCEDURE
  71285. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71286. ></RBW-AUTOGEN
  71287. ></RBW-MARKER
  71288. ><RBW-PARABODY>Draw a class and give it a name.</RBW-PARABODY
  71289. ></LN.LIST.NUM
  71290. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71291. ></RBW-AUTOGEN
  71292. ></RBW-MARKER
  71293. ><RBW-PARABODY>Make sure the class does not have any of the following:</RBW-PARABODY
  71294. ></LN.LIST.NUM
  71295. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71296. ></RBW-MARKER
  71297. ><RBW-PARABODY>data attributes</RBW-PARABODY
  71298. ></LB2.LIST.BULLET.2
  71299. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71300. ></RBW-MARKER
  71301. ><RBW-PARABODY>operations</RBW-PARABODY
  71302. ></LB2.LIST.BULLET.2
  71303. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71304. ></RBW-MARKER
  71305. ><RBW-PARABODY>superclasses</RBW-PARABODY
  71306. ></LB2.LIST.BULLET.2
  71307. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71308. ></RBW-MARKER
  71309. ><RBW-PARABODY>subclasses</RBW-PARABODY
  71310. ></LB2.LIST.BULLET.2
  71311. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  71312. ></RBW-AUTOGEN
  71313. ></RBW-MARKER
  71314. ><RBW-PARABODY>Draw an association between the class you have just drawn (class A) and the class for which you want to generate the generic typedef (class B).</RBW-PARABODY
  71315. ></LN.LIST.NUM
  71316. ><LT.LIST.TEXT>The multiplicity at the side of class B determines which generic typedef is generated:</LT.LIST.TEXT
  71317. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="216p"><COLSPEC COLNAME="2" COLWIDTH="216p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>multiplicity</CELLHEADING
  71318. ></ENTRY
  71319. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>generic typedef</CELLHEADING
  71320. ></ENTRY
  71321. ></RBW-ROW
  71322. ></THEAD
  71323. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional</CELLBODY
  71324. ></ENTRY
  71325. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pointer</CELLBODY
  71326. ></ENTRY
  71327. ></RBW-ROW
  71328. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  71329. ></ENTRY
  71330. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>array</CELLBODY
  71331. ></ENTRY
  71332. ></RBW-ROW
  71333. ></TBODY
  71334. ></TGROUP
  71335. ></RBW-TABLE
  71336. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  71337. ></RBW-AUTOGEN
  71338. ></RBW-MARKER
  71339. ><RBW-PARABODY>Supply a role at the side of class B.</RBW-PARABODY
  71340. ></LN.LIST.NUM
  71341. ><LT.LIST.TEXT>The name of the role is not important, but must be provided.</LT.LIST.TEXT
  71342. ></LABEL
  71343. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71344. >Example (multiplicity: optional)</L.LABEL
  71345. ><B.BODY><RBW-IDXTERM TERM1="generic typedef class" TERM2="example of generated C++ code"></RBW-IDXTERM
  71346. ><RBW-IDXTERM TERM1="C++" TERM2="code from generic typedef class"></RBW-IDXTERM
  71347. >The following overview shows generic typedef classes and the most significant part of the resulting Forté code:</B.BODY
  71348. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00644.unk" origfile="pics/gentypop.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71349. ></FA.FIGURE.ANCHOR
  71350. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71351. >GenTyEx2.cex</SL.SUBLABEL
  71352. ><B.BODY></B.BODY
  71353. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71354. ><EWM.EXAMPLEW.MONO>typedef GenTyEx2 : <CX5FX5FBULLET.EMPHASIS>pointer to mySystem.Ex2</CX5FX5FBULLET.EMPHASIS
  71355. >;</EWM.EXAMPLEW.MONO
  71356. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71357. ></LABEL
  71358. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71359. >Example (multiplicity: many)</L.LABEL
  71360. ><B.BODY>Here are three examples of generic typedef constructions:</B.BODY
  71361. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  71362. ></RBW-AUTOGEN
  71363. ></RBW-MARKER
  71364. ><RBW-PARABODY>a typedef class associated with a non&truehy;window class</RBW-PARABODY
  71365. ></LB.LIST.BULLET
  71366. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  71367. ></RBW-AUTOGEN
  71368. ></RBW-MARKER
  71369. ><RBW-PARABODY>a typedef class associated with a non&truehy;window class, with a Maximum Volume specified</RBW-PARABODY
  71370. ></LB.LIST.BULLET
  71371. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  71372. ></RBW-AUTOGEN
  71373. ></RBW-MARKER
  71374. ><RBW-PARABODY>a typedef class associated with an Enum class.</RBW-PARABODY
  71375. ></LB.LIST.BULLET
  71376. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71377. >Associated with a non&truehy;window class</SL.SUBLABEL
  71378. ><B.BODY></B.BODY
  71379. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00645.unk" origfile="pics/gntypenm.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71380. ></FA.FIGURE.ANCHOR
  71381. ><B.BODY>The following Forté code is generated for the class GenTyEx3:</B.BODY
  71382. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71383. ><EWM.EXAMPLEW.MONO>typedef GenTyEx3 : <CX5FX5FBULLET.EMPHASIS>Framework.Array of mySystem.Ex3</CX5FX5FBULLET.EMPHASIS
  71384. >;</EWM.EXAMPLEW.MONO
  71385. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71386. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71387. >Maximum Volume specified</SL.SUBLABEL
  71388. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71389. ><B.BODY>If the association property Maximum Volume is set to anything beyond 255, the class Framework.LargeArray will be used instead of Framework.Array.</B.BODY
  71390. ><B.BODY>If in the previous example the property Maximum Volume for role x is set to 300, for example, the following Forté code is generated for the class GenTyEx3:</B.BODY
  71391. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71392. ><EWM.EXAMPLEW.MONO>typedef GenTyEx3 : <CX5FX5FBULLET.EMPHASIS>Framework.LargeArray of mySystem.Ex3</CX5FX5FBULLET.EMPHASIS
  71393. >;</EWM.EXAMPLEW.MONO
  71394. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71395. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71396. >Associated with an Enum class</SL.SUBLABEL
  71397. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71398. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00646.unk" origfile="pics/gntypenm.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71399. ></FA.FIGURE.ANCHOR
  71400. ><B.BODY>The following Forté code is generated for the class GenTyEx5, which is associated with an Enum class (see <RBW-XREF REFID="13941" TYPE="XREF-TEXTCOPY">Enum Class</RBW-XREF
  71401. > for details):</B.BODY
  71402. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71403. ><EWM.EXAMPLEW.MONO>typedef GenTyEx5 : <CX5FX5FBULLET.EMPHASIS>array[255] of mySystem.myEnumClass</CX5FX5FBULLET.EMPHASIS
  71404. >;</EWM.EXAMPLEW.MONO
  71405. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71406. ></LABEL
  71407. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71408. >Example (multiplicity: one)</L.LABEL
  71409. ><B.BODY>If the multiplicity of the association at the side of class B is mandatory, a normal, non&truehy;generic typedef is created to class B (see <RBW-XREF REFID="24618" TYPE="XREF-TEXTCOPY">Typedef Class</RBW-XREF
  71410. >):</B.BODY
  71411. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00647.unk" origfile="pics/gentypmd.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71412. ></FA2.FIGURE.ANCHOR.2
  71413. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71414. >GenTyEx1.cex</SL.SUBLABEL
  71415. ><LT.LIST.TEXT></LT.LIST.TEXT
  71416. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71417. ><EWM.EXAMPLEW.MONO>typedef GenTyEx1 : <CX5FX5FBULLET.EMPHASIS>mySystem.Ex1</CX5FX5FBULLET.EMPHASIS
  71418. >;</EWM.EXAMPLEW.MONO
  71419. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71420. ></LABEL
  71421. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71422. >Hash table</L.LABEL
  71423. ><B.BODY>Besides pointer and array typedefs, you can model hash table typedefs in ObjectTeam. You must then specify a qualified association instead of a normal association, and the multiplicity must be optional (e.g. many).</B.BODY
  71424. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71425. >Multiplicity: qualified&truehy;many</SL.SUBLABEL
  71426. ><B.BODY></B.BODY
  71427. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00648.unk" origfile="pics/gentypql.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71428. ></FA2.FIGURE.ANCHOR.2
  71429. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71430. >GenTyEx4.cex</SL.SUBLABEL
  71431. ><LT.LIST.TEXT></LT.LIST.TEXT
  71432. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71433. ><EWM.EXAMPLEW.MONO>typedef GenTyEx4 : <CX5FX5FBULLET.EMPHASIS>Framework.HashTable</CX5FX5FBULLET.EMPHASIS
  71434. >;</EWM.EXAMPLEW.MONO
  71435. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71436. ></LABEL
  71437. ></SUBSECTION
  71438. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27793"></RBW-ANCHOR
  71439. >Constant Class</SS.SUBSEC.HEAD
  71440. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71441. >Introduction</L.LABEL
  71442. ><B.BODY>A constant is a literal string or numeric value that has a name. You can model the name and the value of a constant in ObjectTeam through a data attribute in a special Constant class.</B.BODY
  71443. ></LABEL
  71444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71445. >How to specify a constant class</L.LABEL
  71446. ><B.BODY>To specify a Constant class:</B.BODY
  71447. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71448. ></RBW-AUTOGEN
  71449. ></RBW-MARKER
  71450. ><RBW-PARABODY>Draw a class.</RBW-PARABODY
  71451. ></LN.LIST.NUM
  71452. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71453. ></RBW-AUTOGEN
  71454. ></RBW-MARKER
  71455. ><RBW-PARABODY>Set the property Class Type of this class to Constant.</RBW-PARABODY
  71456. ></LN.LIST.NUM
  71457. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  71458. ></RBW-AUTOGEN
  71459. ></RBW-MARKER
  71460. ><RBW-PARABODY>Specify a data attribute and assign a value to it. </RBW-PARABODY
  71461. ></LN.LIST.NUM
  71462. ><LT.LIST.TEXT>The value you assign to the data attribute becomes the value of the constant.</LT.LIST.TEXT
  71463. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  71464. ></RBW-AUTOGEN
  71465. >The name and the type of the data attribute are not important, but must be provided.</N2.NOTE.2
  71466. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  71467. ></RBW-AUTOGEN
  71468. ></RBW-MARKER
  71469. ><RBW-PARABODY>Make sure the class does not have any of the following:</RBW-PARABODY
  71470. ></LN.LIST.NUM
  71471. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71472. ></RBW-MARKER
  71473. ><RBW-PARABODY>associations resulting in code generation</RBW-PARABODY
  71474. ></LB2.LIST.BULLET.2
  71475. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71476. ></RBW-MARKER
  71477. ><RBW-PARABODY>operations</RBW-PARABODY
  71478. ></LB2.LIST.BULLET.2
  71479. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71480. ></RBW-MARKER
  71481. ><RBW-PARABODY>superclasses</RBW-PARABODY
  71482. ></LB2.LIST.BULLET.2
  71483. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71484. ></RBW-MARKER
  71485. ><RBW-PARABODY>subclasses </RBW-PARABODY
  71486. ></LB2.LIST.BULLET.2
  71487. ></LABEL
  71488. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71489. >Example</L.LABEL
  71490. ><B.BODY>The next figure shows an example of a constant class. The property Class Type has been set to Constant.</B.BODY
  71491. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00649.unk" origfile="pics/const.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71492. ></FA.FIGURE.ANCHOR
  71493. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71494. >myConstant.cex</SL.SUBLABEL
  71495. ><B.BODY></B.BODY
  71496. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71497. ><EM.EXAMPLE.MONO>constant myConstant = 31;</EM.EXAMPLE.MONO
  71498. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71499. ></LABEL
  71500. ></SUBSECTION
  71501. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14514"></RBW-ANCHOR
  71502. >Interface</SS.SUBSEC.HEAD
  71503. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71504. >Introduction</L.LABEL
  71505. ><B.BODY>A class usually consists of a class definition and the code that implements the class, such as method bodies. An interface only consists of a definition; the method bodies are implemented somewhere else.</B.BODY
  71506. ><B.BODY>Therefore, an interface does not have the following components:</B.BODY
  71507. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  71508. ></RBW-AUTOGEN
  71509. ></RBW-MARKER
  71510. ><RBW-PARABODY>attributes (except virtual ones)</RBW-PARABODY
  71511. ></LB.LIST.BULLET
  71512. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  71513. ></RBW-AUTOGEN
  71514. ></RBW-MARKER
  71515. ><RBW-PARABODY>method bodies</RBW-PARABODY
  71516. ></LB.LIST.BULLET
  71517. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  71518. ></RBW-AUTOGEN
  71519. ></RBW-MARKER
  71520. ><RBW-PARABODY>event handler bodies</RBW-PARABODY
  71521. ></LB.LIST.BULLET
  71522. ><B.BODY>Interfaces are generally used as an aid for modeling multiple inheritance.</B.BODY
  71523. ></LABEL
  71524. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71525. >Class hierarchy</L.LABEL
  71526. ><B.BODY>An interface can be derived from at most one other interface. Make sure that if there are multiple interfaces in the class hierarchy of a user&truehy;defined class, all the methods from these interfaces are included in the user&truehy;defined class.</B.BODY
  71527. ></LABEL
  71528. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71529. >How to specify an interface</L.LABEL
  71530. ><B.BODY>To specify an interface class:</B.BODY
  71531. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71532. ></RBW-AUTOGEN
  71533. ></RBW-MARKER
  71534. ><RBW-PARABODY>Draw a class.</RBW-PARABODY
  71535. ></LN.LIST.NUM
  71536. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71537. ></RBW-AUTOGEN
  71538. ></RBW-MARKER
  71539. ><RBW-PARABODY>Set the property Class Type of this class to Interface.</RBW-PARABODY
  71540. ></LN.LIST.NUM
  71541. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  71542. ></RBW-AUTOGEN
  71543. ></RBW-MARKER
  71544. ><RBW-PARABODY>Specify the operations of your choice.</RBW-PARABODY
  71545. ></LN.LIST.NUM
  71546. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  71547. ></RBW-AUTOGEN
  71548. ></RBW-MARKER
  71549. ><RBW-PARABODY>Make sure the class does not have any of the following:</RBW-PARABODY
  71550. ></LN.LIST.NUM
  71551. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71552. ></RBW-MARKER
  71553. ><RBW-PARABODY>Attributes</RBW-PARABODY
  71554. ></LB2.LIST.BULLET.2
  71555. ><LT2.LIST.TEXT.2>Virtual attributes, however, are allowed</LT2.LIST.TEXT.2
  71556. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71557. ></RBW-MARKER
  71558. ><RBW-PARABODY>Multiple superclasses</RBW-PARABODY
  71559. ></LB2.LIST.BULLET.2
  71560. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  71561. ></RBW-AUTOGEN
  71562. ></RBW-MARKER
  71563. ><RBW-PARABODY>Derive a user&truehy;defined class from the Interface class.</RBW-PARABODY
  71564. ></LN.LIST.NUM
  71565. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  71566. ></RBW-AUTOGEN
  71567. ></RBW-MARKER
  71568. ><RBW-PARABODY>Make sure the user&truehy;defined class is also derived from a Forté class. If it is not, the code generator assumes that Framework.Object is its super class.</RBW-PARABODY
  71569. ></LN.LIST.NUM
  71570. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  71571. ></RBW-AUTOGEN
  71572. ></RBW-MARKER
  71573. ><RBW-PARABODY>Copy the method definitions of the Interface superclass to the new class.</RBW-PARABODY
  71574. ></LN.LIST.NUM
  71575. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  71576. ></RBW-AUTOGEN
  71577. >The methods of all Interface classes in the new class’s hierarchy must be copied to the new class.</N2.NOTE.2
  71578. ><B.BODY>Method <CX5FX5FEMPHASIS>definitions</CX5FX5FEMPHASIS
  71579. > are generated for both the Interface class and the user&truehy;defined class that is derived from the Interface class. However, only the user&truehy;defined class will contain method <CX5FX5FEMPHASIS>bodies</CX5FX5FEMPHASIS
  71580. >. Therefore, the following comment line reminding you of implementing the method is only added to the user&truehy;defined class:</B.BODY
  71581. ><EM.EXAMPLE.MONO>&truehy;&truehy; !! Implement this method !!</EM.EXAMPLE.MONO
  71582. ></LABEL
  71583. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71584. >Example</L.LABEL
  71585. ><B.BODY>The next figure shows an example of an interface and a user&truehy;defined class which is derived from this interface. The property Interface has been turned on for the class MyInterface.</B.BODY
  71586. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00650.unk" origfile="pics/intface.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71587. ></FA.FIGURE.ANCHOR
  71588. ><B.BODY><CX5FX5FFILE.NAME>MyInterface.cex:</CX5FX5FFILE.NAME
  71589. ></B.BODY
  71590. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71591. ><EM.EXAMPLE.MONO>begin INTERFACE;</EM.EXAMPLE.MONO
  71592. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71593. ><EM.EXAMPLE.MONO>&truehy;&truehy; START FORWARD CLASS DECLARATIONS</EM.EXAMPLE.MONO
  71594. ><EM.EXAMPLE.MONO>&truehy;&truehy; END FORWARD CLASS DECLARATIONS</EM.EXAMPLE.MONO
  71595. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71596. ><EM.EXAMPLE.MONO>interface MyInterface </EM.EXAMPLE.MONO
  71597. ><EM.EXAMPLE.MONO>&truehy;&truehy; User&truehy;defined methods</EM.EXAMPLE.MONO
  71598. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>has public  method myMethod(input par1: int): int;</CX5FX5FBULLET.EMPHASIS
  71599. ></EM.EXAMPLE.MONO
  71600. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71601. ><EM.EXAMPLE.MONO>end interface;</EM.EXAMPLE.MONO
  71602. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71603. ><EM.EXAMPLE.MONO>end INTERFACE;</EM.EXAMPLE.MONO
  71604. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71605. ><B.BODY><CX5FX5FFILE.NAME>Person.cex:</CX5FX5FFILE.NAME
  71606. ></B.BODY
  71607. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71608. ><EM.EXAMPLE.MONO>begin CLASS;</EM.EXAMPLE.MONO
  71609. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71610. ><EM.EXAMPLE.MONO>&truehy;&truehy; START FORWARD CLASS DECLARATIONS</EM.EXAMPLE.MONO
  71611. ><EM.EXAMPLE.MONO>forward TextData;</EM.EXAMPLE.MONO
  71612. ><EM.EXAMPLE.MONO>forward interface MyInterface;</EM.EXAMPLE.MONO
  71613. ><EM.EXAMPLE.MONO>&truehy;&truehy; END FORWARD CLASS DECLARATIONS</EM.EXAMPLE.MONO
  71614. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71615. ><EM.EXAMPLE.MONO>class Person inherits from Framework.Object</EM.EXAMPLE.MONO
  71616. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71617. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>implements&rbwtab;MySystem.MyInterface;</CX5FX5FBULLET.EMPHASIS
  71618. ></EM.EXAMPLE.MONO
  71619. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71620. ><EM.EXAMPLE.MONO>end class;</EM.EXAMPLE.MONO
  71621. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71622. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>method Person.myMethod(input par1: int): int</CX5FX5FBULLET.EMPHASIS
  71623. ></EM.EXAMPLE.MONO
  71624. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>begin</CX5FX5FBULLET.EMPHASIS
  71625. ></EM.EXAMPLE.MONO
  71626. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>    &truehy;&truehy; !! Implement this method !!</CX5FX5FBULLET.EMPHASIS
  71627. ></EM.EXAMPLE.MONO
  71628. ><EM.EXAMPLE.MONO><CX5FX5FBULLET.EMPHASIS>end method;</CX5FX5FBULLET.EMPHASIS
  71629. ></EM.EXAMPLE.MONO
  71630. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71631. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71632. ><EM.EXAMPLE.MONO>end CLASS;</EM.EXAMPLE.MONO
  71633. ></LABEL
  71634. ></SUBSECTION
  71635. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13941"></RBW-ANCHOR
  71636. >Enum Class</SS.SUBSEC.HEAD
  71637. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71638. >Introduction</L.LABEL
  71639. ><B.BODY><RBW-IDXTERM TERM1="enumeration"></RBW-IDXTERM
  71640. >The enumeration class is a standard construct to specify the Forté derived C data type <CX5FX5FINPUT>enum</CX5FX5FINPUT
  71641. >: a definition of a set of integer values with identifiers as elements of the set.</B.BODY
  71642. ><B.BODY>An Enum class contains only static data attributes of type enum. The attributes are generated into the elements of the set.</B.BODY
  71643. ></LABEL
  71644. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71645. >How to specify an enumeration class</L.LABEL
  71646. ><B.BODY>To specify an enumeration class:</B.BODY
  71647. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71648. ></RBW-AUTOGEN
  71649. ></RBW-MARKER
  71650. ><RBW-PARABODY>Draw a class.</RBW-PARABODY
  71651. ></LN.LIST.NUM
  71652. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71653. ></RBW-AUTOGEN
  71654. ></RBW-MARKER
  71655. ><RBW-PARABODY>Specify the members of the enumeration as data attributes of this class.</RBW-PARABODY
  71656. ></LN.LIST.NUM
  71657. ><LT.LIST.TEXT>These data attributes must:</LT.LIST.TEXT
  71658. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71659. ></RBW-MARKER
  71660. ><RBW-PARABODY>be specified as static attributes; that is, with a leading dollar sign ($)</RBW-PARABODY
  71661. ></LB2.LIST.BULLET.2
  71662. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71663. ></RBW-MARKER
  71664. ><RBW-PARABODY>have data type <CX5FX5FEMPHASIS>enum</CX5FX5FEMPHASIS
  71665. ></RBW-PARABODY
  71666. ></LB2.LIST.BULLET.2
  71667. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  71668. ></RBW-AUTOGEN
  71669. >You can specify a default value for these data attributes, but it is not required.</N2.NOTE.2
  71670. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  71671. ></RBW-AUTOGEN
  71672. ></RBW-MARKER
  71673. ><RBW-PARABODY>Make sure the class does not have any of the following:</RBW-PARABODY
  71674. ></LN.LIST.NUM
  71675. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71676. ></RBW-MARKER
  71677. ><RBW-PARABODY>associations resulting in code generation</RBW-PARABODY
  71678. ></LB2.LIST.BULLET.2
  71679. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71680. ></RBW-MARKER
  71681. ><RBW-PARABODY>operations</RBW-PARABODY
  71682. ></LB2.LIST.BULLET.2
  71683. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71684. ></RBW-MARKER
  71685. ><RBW-PARABODY>superclasses</RBW-PARABODY
  71686. ></LB2.LIST.BULLET.2
  71687. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71688. ></RBW-MARKER
  71689. ><RBW-PARABODY>subclasses </RBW-PARABODY
  71690. ></LB2.LIST.BULLET.2
  71691. ></LABEL
  71692. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71693. >Example</L.LABEL
  71694. ><B.BODY>The next figure shows two classes conforming to the enumeration class construct guidelines. The first one has data attributes without default values, the second one has data attributes with default values:</B.BODY
  71695. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71696. >Data attributes without default values</SL.SUBLABEL
  71697. ><B.BODY></B.BODY
  71698. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00651.unk" origfile="pics/enumex1.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71699. ></FA2.FIGURE.ANCHOR.2
  71700. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71701. >EnumEx1.cex</SL.SUBLABEL
  71702. ><LT.LIST.TEXT></LT.LIST.TEXT
  71703. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71704. ><EM.EXAMPLE.MONO>enum EnumEx1</EM.EXAMPLE.MONO
  71705. ><EM.EXAMPLE.MONO>    a,</EM.EXAMPLE.MONO
  71706. ><EM.EXAMPLE.MONO>    b</EM.EXAMPLE.MONO
  71707. ><EM.EXAMPLE.MONO>end enum;</EM.EXAMPLE.MONO
  71708. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71709. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71710. >Data attributes with default values</SL.SUBLABEL
  71711. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  71712. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00652.unk" origfile="pics/enumex2.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71713. ></FA2.FIGURE.ANCHOR.2
  71714. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71715. >EnumEx2.cex</SL.SUBLABEL
  71716. ><LT.LIST.TEXT></LT.LIST.TEXT
  71717. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71718. ><EM.EXAMPLE.MONO>enum EnumEx2</EM.EXAMPLE.MONO
  71719. ><EM.EXAMPLE.MONO>    x = 34,</EM.EXAMPLE.MONO
  71720. ><EM.EXAMPLE.MONO>    y = 47,</EM.EXAMPLE.MONO
  71721. ><EM.EXAMPLE.MONO>    z</EM.EXAMPLE.MONO
  71722. ><EM.EXAMPLE.MONO>end enum;</EM.EXAMPLE.MONO
  71723. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71724. ></LABEL
  71725. ></SUBSECTION
  71726. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15593"></RBW-ANCHOR
  71727. >Struct Class</SS.SUBSEC.HEAD
  71728. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71729. >Introduction</L.LABEL
  71730. ><B.BODY><RBW-IDXTERM TERM1="enumeration"></RBW-IDXTERM
  71731. >The Struct class is a standard way to declare the Forté derived C data type <CX5FX5FINPUT>struct</CX5FX5FINPUT
  71732. >: a data structure that contains one or more members.</B.BODY
  71733. ><B.BODY>A Struct class contains only data attributes. These attributes are generated into the members of the struct.</B.BODY
  71734. ></LABEL
  71735. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71736. >How to specify a structure class</L.LABEL
  71737. ><B.BODY>To specify a structure class:</B.BODY
  71738. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71739. ></RBW-AUTOGEN
  71740. ></RBW-MARKER
  71741. ><RBW-PARABODY>Draw a class.</RBW-PARABODY
  71742. ></LN.LIST.NUM
  71743. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71744. ></RBW-AUTOGEN
  71745. ></RBW-MARKER
  71746. ><RBW-PARABODY>Set the property Class Type of this class to Structure.</RBW-PARABODY
  71747. ></LN.LIST.NUM
  71748. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  71749. ></RBW-AUTOGEN
  71750. ></RBW-MARKER
  71751. ><RBW-PARABODY>Specify one or more data attributes.</RBW-PARABODY
  71752. ></LN.LIST.NUM
  71753. ><LT.LIST.TEXT>These data attributes are generated into struct members. Note that default values of attributes are ignored.</LT.LIST.TEXT
  71754. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  71755. ></RBW-AUTOGEN
  71756. ></RBW-MARKER
  71757. ><RBW-PARABODY>Make sure the class does not have any of the following:</RBW-PARABODY
  71758. ></LN.LIST.NUM
  71759. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71760. ></RBW-MARKER
  71761. ><RBW-PARABODY>associations resulting in code generation</RBW-PARABODY
  71762. ></LB2.LIST.BULLET.2
  71763. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71764. ></RBW-MARKER
  71765. ><RBW-PARABODY>operations</RBW-PARABODY
  71766. ></LB2.LIST.BULLET.2
  71767. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71768. ></RBW-MARKER
  71769. ><RBW-PARABODY>superclasses</RBW-PARABODY
  71770. ></LB2.LIST.BULLET.2
  71771. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71772. ></RBW-MARKER
  71773. ><RBW-PARABODY>subclasses </RBW-PARABODY
  71774. ></LB2.LIST.BULLET.2
  71775. ></LABEL
  71776. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71777. >Example</L.LABEL
  71778. ><B.BODY>The next figure shows an example of a structure class. The property Class Type has been set to Structure.</B.BODY
  71779. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00653.unk" origfile="pics/struct.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71780. ></FA.FIGURE.ANCHOR
  71781. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71782. >Struct1.cex</SL.SUBLABEL
  71783. ><B.BODY></B.BODY
  71784. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71785. ><EM.EXAMPLE.MONO>struct Struct1</EM.EXAMPLE.MONO
  71786. ><EM.EXAMPLE.MONO>    CustomerNo: ui2;</EM.EXAMPLE.MONO
  71787. ><EM.EXAMPLE.MONO>    AccountType: short</EM.EXAMPLE.MONO
  71788. ><EM.EXAMPLE.MONO>end struct;</EM.EXAMPLE.MONO
  71789. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71790. ></LABEL
  71791. ></SUBSECTION
  71792. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39931"></RBW-ANCHOR
  71793. >Union Class</SS.SUBSEC.HEAD
  71794. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71795. >Introduction</L.LABEL
  71796. ><B.BODY><RBW-IDXTERM TERM1="enumeration"></RBW-IDXTERM
  71797. >The Union class is a standard construct to specify the Forté derived C data type <CX5FX5FINPUT>union</CX5FX5FINPUT
  71798. >: a definition of a set of alternative values, or members, that can be stored in the same space in memory.</B.BODY
  71799. ><B.BODY>A Union class contains only data attributes. These attributes are generated into the members of the union.</B.BODY
  71800. ></LABEL
  71801. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71802. >How to specify a union class</L.LABEL
  71803. ><B.BODY>To specify a union class:</B.BODY
  71804. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71805. ></RBW-AUTOGEN
  71806. ></RBW-MARKER
  71807. ><RBW-PARABODY>Draw a class.</RBW-PARABODY
  71808. ></LN.LIST.NUM
  71809. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71810. ></RBW-AUTOGEN
  71811. ></RBW-MARKER
  71812. ><RBW-PARABODY>Set the property Class Type of this class to Union.</RBW-PARABODY
  71813. ></LN.LIST.NUM
  71814. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  71815. ></RBW-AUTOGEN
  71816. ></RBW-MARKER
  71817. ><RBW-PARABODY>Specify one or more data attributes.</RBW-PARABODY
  71818. ></LN.LIST.NUM
  71819. ><LT.LIST.TEXT>These data attributes are generated into union members. Note that default values of attributes are ignored.</LT.LIST.TEXT
  71820. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  71821. ></RBW-AUTOGEN
  71822. ></RBW-MARKER
  71823. ><RBW-PARABODY>Make sure the class does not have any of the following:</RBW-PARABODY
  71824. ></LN.LIST.NUM
  71825. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71826. ></RBW-MARKER
  71827. ><RBW-PARABODY>associations resulting in code generation</RBW-PARABODY
  71828. ></LB2.LIST.BULLET.2
  71829. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71830. ></RBW-MARKER
  71831. ><RBW-PARABODY>operations</RBW-PARABODY
  71832. ></LB2.LIST.BULLET.2
  71833. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71834. ></RBW-MARKER
  71835. ><RBW-PARABODY>superclasses</RBW-PARABODY
  71836. ></LB2.LIST.BULLET.2
  71837. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71838. ></RBW-MARKER
  71839. ><RBW-PARABODY>subclasses </RBW-PARABODY
  71840. ></LB2.LIST.BULLET.2
  71841. ></LABEL
  71842. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71843. >Example</L.LABEL
  71844. ><B.BODY>The next figure shows an example of a union class. The property Class Type has been set to Union.</B.BODY
  71845. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00654.unk" origfile="pics/union.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71846. ></FA.FIGURE.ANCHOR
  71847. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71848. >Union1.cex</SL.SUBLABEL
  71849. ><B.BODY></B.BODY
  71850. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71851. ><EM.EXAMPLE.MONO>union Union1</EM.EXAMPLE.MONO
  71852. ><EM.EXAMPLE.MONO>    CustomerNo: ui2;</EM.EXAMPLE.MONO
  71853. ><EM.EXAMPLE.MONO>    AccountType: short</EM.EXAMPLE.MONO
  71854. ><EM.EXAMPLE.MONO>end union;</EM.EXAMPLE.MONO
  71855. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  71856. ></LABEL
  71857. ></SUBSECTION
  71858. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="30243"></RBW-ANCHOR
  71859. >Service Object Class</SS.SUBSEC.HEAD
  71860. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71861. >Introduction</L.LABEL
  71862. ><B.BODY>A Service Object in Forté is an instance of a class that is located on a specific partition. All of the distributed services with which an application interacts are represented by service objects.</B.BODY
  71863. ><B.BODY>A Service Object can be modeled in ObjectTeam by a special class with only one method.</B.BODY
  71864. ></LABEL
  71865. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71866. >How to specify a service object class</L.LABEL
  71867. ><B.BODY>To specify a service object class:</B.BODY
  71868. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71869. ></RBW-AUTOGEN
  71870. ></RBW-MARKER
  71871. ><RBW-PARABODY>Draw a class.</RBW-PARABODY
  71872. ></LN.LIST.NUM
  71873. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71874. ></RBW-AUTOGEN
  71875. ></RBW-MARKER
  71876. ><RBW-PARABODY>Set the property Class Type of this class to Service Object.</RBW-PARABODY
  71877. ></LN.LIST.NUM
  71878. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  71879. ></RBW-AUTOGEN
  71880. ></RBW-MARKER
  71881. ><RBW-PARABODY>Decide of which class the Service Object must be an instance.</RBW-PARABODY
  71882. ></LN.LIST.NUM
  71883. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  71884. ></RBW-AUTOGEN
  71885. ></RBW-MARKER
  71886. ><RBW-PARABODY>Specify a method through which the Service Object must be constructed:</RBW-PARABODY
  71887. ></LN.LIST.NUM
  71888. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71889. ></RBW-MARKER
  71890. ><RBW-PARABODY>The name of the method is not important, but must be provided.</RBW-PARABODY
  71891. ></LB2.LIST.BULLET.2
  71892. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71893. ></RBW-MARKER
  71894. ><RBW-PARABODY>The parameters of this method are a selection of the set of public data attributes of the referred class.</RBW-PARABODY
  71895. ></LB2.LIST.BULLET.2
  71896. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71897. ></RBW-MARKER
  71898. ><RBW-PARABODY>The types of these parameters are not important, but must be provided.</RBW-PARABODY
  71899. ></LB2.LIST.BULLET.2
  71900. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71901. ></RBW-MARKER
  71902. ><RBW-PARABODY>Every parameter must have a default value, which can be provided through the Default Value property. Parameters without a default value are not generated.</RBW-PARABODY
  71903. ></LB2.LIST.BULLET.2
  71904. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71905. ></RBW-MARKER
  71906. ><RBW-PARABODY>The return type of the method must be the referred class.</RBW-PARABODY
  71907. ></LB2.LIST.BULLET.2
  71908. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  71909. ></RBW-AUTOGEN
  71910. ></RBW-MARKER
  71911. ><RBW-PARABODY>Make sure the Service Object class does not have any of the following:</RBW-PARABODY
  71912. ></LN.LIST.NUM
  71913. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71914. ></RBW-MARKER
  71915. ><RBW-PARABODY>associations resulting in code generation</RBW-PARABODY
  71916. ></LB2.LIST.BULLET.2
  71917. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71918. ></RBW-MARKER
  71919. ><RBW-PARABODY>data attributes</RBW-PARABODY
  71920. ></LB2.LIST.BULLET.2
  71921. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71922. ></RBW-MARKER
  71923. ><RBW-PARABODY>superclasses</RBW-PARABODY
  71924. ></LB2.LIST.BULLET.2
  71925. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  71926. ></RBW-MARKER
  71927. ><RBW-PARABODY>subclasses</RBW-PARABODY
  71928. ></LB2.LIST.BULLET.2
  71929. ></LABEL
  71930. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71931. >Example</L.LABEL
  71932. ><B.BODY>The following properties have been set for this example class:</B.BODY
  71933. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="150p"><COLSPEC COLNAME="2" COLWIDTH="142p"><COLSPEC COLNAME="3" COLWIDTH="154p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  71934. ></ENTRY
  71935. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  71936. ></ENTRY
  71937. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Value</CELLHEADING
  71938. ></ENTRY
  71939. ></RBW-ROW
  71940. ></THEAD
  71941. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>srvObject</CX5FX5FEMPHASIS
  71942. ></CELLBODY
  71943. ></ENTRY
  71944. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Type</CELLBODY
  71945. ></ENTRY
  71946. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Service Object</CELLBODY
  71947. ></ENTRY
  71948. ></RBW-ROW
  71949. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>att1</CX5FX5FEMPHASIS
  71950. ></CELLBODY
  71951. ></ENTRY
  71952. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  71953. ></ENTRY
  71954. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>‘This is a string’</CELLBODY
  71955. ></ENTRY
  71956. ></RBW-ROW
  71957. ></TBODY
  71958. ></TGROUP
  71959. ></RBW-TABLE
  71960. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00655.unk" origfile="pics/srvobj.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  71961. ></FA.FIGURE.ANCHOR
  71962. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71963. >srvObject.cex</SL.SUBLABEL
  71964. ><B.BODY></B.BODY
  71965. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71966. ><EWM.EXAMPLEW.MONO>service srvObject : mySystem.A = (att1 = ‘This is a string’);</EWM.EXAMPLEW.MONO
  71967. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  71968. ><B.BODY>The class name (<CX5FX5FINPUT>A</CX5FX5FINPUT
  71969. >) in this code is qualified by the name of the ObjectTeam System Version (<CX5FX5FINPUT>mySystem</CX5FX5FINPUT
  71970. >).</B.BODY
  71971. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  71972. ></RBW-AUTOGEN
  71973. >The following alternative method is also valid in the ObjectTeam class:</N.NOTE
  71974. ><EM.EXAMPLE.MONO>A(att1:string)</EM.EXAMPLE.MONO
  71975. ><B.BODY>However, class A will then not be qualified by the ObjectTeam System Version name.</B.BODY
  71976. ></LABEL
  71977. ></SUBSECTION
  71978. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33517"></RBW-ANCHOR
  71979. >Cursor Class</SS.SUBSEC.HEAD
  71980. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71981. >Introduction</L.LABEL
  71982. ><B.BODY>A Cursor in Forté is a row marker that is used for selecting and working with a set of rows from a database. It can be modeled in ObjectTeam by a special class with only one method.</B.BODY
  71983. ></LABEL
  71984. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  71985. >How to specify a cursor class</L.LABEL
  71986. ><B.BODY>To specify a cursor class:</B.BODY
  71987. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  71988. ></RBW-AUTOGEN
  71989. ></RBW-MARKER
  71990. ><RBW-PARABODY>Draw a class.</RBW-PARABODY
  71991. ></LN.LIST.NUM
  71992. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  71993. ></RBW-AUTOGEN
  71994. ></RBW-MARKER
  71995. ><RBW-PARABODY>Set the property Class Type of this class to Cursor.</RBW-PARABODY
  71996. ></LN.LIST.NUM
  71997. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  71998. ></RBW-AUTOGEN
  71999. ></RBW-MARKER
  72000. ><RBW-PARABODY>Specify a method for the cursor:</RBW-PARABODY
  72001. ></LN.LIST.NUM
  72002. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  72003. ></RBW-MARKER
  72004. ><RBW-PARABODY>The name of the method is not important, but must be provided.</RBW-PARABODY
  72005. ></LB2.LIST.BULLET.2
  72006. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  72007. ></RBW-MARKER
  72008. ><RBW-PARABODY>Specify one or more parameters for this methods.</RBW-PARABODY
  72009. ></LB2.LIST.BULLET.2
  72010. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  72011. ></RBW-MARKER
  72012. ><RBW-PARABODY>Providing a default value for a parameter is optional.</RBW-PARABODY
  72013. ></LB2.LIST.BULLET.2
  72014. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  72015. ></RBW-MARKER
  72016. ><RBW-PARABODY>The return type of a method is ignored.</RBW-PARABODY
  72017. ></LB2.LIST.BULLET.2
  72018. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  72019. ></RBW-AUTOGEN
  72020. ></RBW-MARKER
  72021. ><RBW-PARABODY>Make sure the Cursor class does not have any of the following:</RBW-PARABODY
  72022. ></LN.LIST.NUM
  72023. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  72024. ></RBW-MARKER
  72025. ><RBW-PARABODY>associations resulting in code generation</RBW-PARABODY
  72026. ></LB2.LIST.BULLET.2
  72027. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  72028. ></RBW-MARKER
  72029. ><RBW-PARABODY>data attributes</RBW-PARABODY
  72030. ></LB2.LIST.BULLET.2
  72031. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  72032. ></RBW-MARKER
  72033. ><RBW-PARABODY>superclasses</RBW-PARABODY
  72034. ></LB2.LIST.BULLET.2
  72035. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  72036. ></RBW-MARKER
  72037. ><RBW-PARABODY>subclasses</RBW-PARABODY
  72038. ></LB2.LIST.BULLET.2
  72039. ><B.BODY>After you generate code for this class, a Forté cursor construction is generated. Comment lines remind you to fill in the body of the cursor.</B.BODY
  72040. ></LABEL
  72041. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72042. >Example</L.LABEL
  72043. ><B.BODY>The following properties have been set for this example class:</B.BODY
  72044. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="150p"><COLSPEC COLNAME="2" COLWIDTH="142p"><COLSPEC COLNAME="3" COLWIDTH="154p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object</CELLHEADING
  72045. ></ENTRY
  72046. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  72047. ></ENTRY
  72048. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Value</CELLHEADING
  72049. ></ENTRY
  72050. ></RBW-ROW
  72051. ></THEAD
  72052. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>cursor</CX5FX5FEMPHASIS
  72053. ></CELLBODY
  72054. ></ENTRY
  72055. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Type</CELLBODY
  72056. ></ENTRY
  72057. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cursor</CELLBODY
  72058. ></ENTRY
  72059. ></RBW-ROW
  72060. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>par1</CX5FX5FEMPHASIS
  72061. ></CELLBODY
  72062. ></ENTRY
  72063. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  72064. ></ENTRY
  72065. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>‘myString’</CELLBODY
  72066. ></ENTRY
  72067. ></RBW-ROW
  72068. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FEMPHASIS>par2</CX5FX5FEMPHASIS
  72069. ></CELLBODY
  72070. ></ENTRY
  72071. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  72072. ></ENTRY
  72073. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;&truehy;</CELLBODY
  72074. ></ENTRY
  72075. ></RBW-ROW
  72076. ></TBODY
  72077. ></TGROUP
  72078. ></RBW-TABLE
  72079. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00656.unk" origfile="pics/cursor.gif" origtype="X" origdoc="../../sources/forte/fortegen.fm5.mif"></RBW-GRAPHIC
  72080. ></FA.FIGURE.ANCHOR
  72081. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72082. >myCursor.cex</SL.SUBLABEL
  72083. ><B.BODY></B.BODY
  72084. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  72085. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>cursor myCursor(par1: string = 'myString', par2: short)</CX5FX5FBULLET.EMPHASIS
  72086. ></EWM.EXAMPLEW.MONO
  72087. ><EWM.EXAMPLEW.MONO>begin</EWM.EXAMPLEW.MONO
  72088. ><EWM.EXAMPLEW.MONO>    &truehy;&truehy; !! Implement this cursor !!</EWM.EXAMPLEW.MONO
  72089. ><EWM.EXAMPLEW.MONO>end;</EWM.EXAMPLEW.MONO
  72090. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  72091. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  72092. ><RBWAUTO-0011></RBWAUTO-0011
  72093. ><!--
  72094.  
  72095.  
  72096.  
  72097.  
  72098.  
  72099. CONVERTING SOURCE FILE ../../sources/forte/forteeng.fm5.mif
  72100.  
  72101.  
  72102. --><B.BODY></B.BODY
  72103. ><B.BODY></B.BODY
  72104. ><B.BODY></B.BODY
  72105. ><B.BODY></B.BODY
  72106. ><B.BODY></B.BODY
  72107. ></LABEL
  72108. ></SUBSECTION
  72109. ></SECTION
  72110. ></CHAPTER
  72111. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  72112. ></RBW-AUTOGEN
  72113. >Reverse and Round&truehy;Trip Engineering<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  72114. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Forte</RBW-TEXTFLD
  72115. ></RBW-SYSOBJ
  72116. ></C.CHAPTER.HEAD
  72117. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72118. >Introduction</L.LABEL
  72119. ><B.BODY><RBW-IDXTERM TERM1="project" TERM2="using data from other sources"></RBW-IDXTERM
  72120. >This chapter describes how to use reverse engineering and round&truehy;trip engineering with the Forté code generator.</B.BODY
  72121. ></LABEL
  72122. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72123. >Reverse engineering</L.LABEL
  72124. ><B.BODY><CX5FX5FEMPHASIS>Reverse engineering</CX5FX5FEMPHASIS
  72125. > Forté code makes the structures and functions of the code visible in ObjectTeam. This facilitates your understanding of the existing code, thus giving you more opportunity for reusing the code.</B.BODY
  72126. ></LABEL
  72127. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72128. >Round&truehy;trip engineering</L.LABEL
  72129. ><B.BODY><CX5FX5FTERM>Round&truehy;trip engineering</CX5FX5FTERM
  72130. > updates the ObjectTeam model based on the changes you have made to the generated Forté source files. Use round&truehy;trip engineering to update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  72131. > you regenerate the source files. If you add an attribute or operation to the generated source file, but do not add it to the ObjectTeam model, that attribute or operation is lost when you regenerate the source files.</B.BODY
  72132. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72133. >Explanation</SL.SUBLABEL
  72134. ><B.BODY>The code generator generates code based on the ObjectTeam model. When you regenerate the source file, only the attributes and operations defined in the model appear in the generated source file.</B.BODY
  72135. ></LABEL
  72136. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72137. >In this chapter</L.LABEL
  72138. ><B.BODY>This chapter contains the following sections:</B.BODY
  72139. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  72140. ></ENTRY
  72141. ></RBW-ROW
  72142. ></THEAD
  72143. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25473" TYPE="XREF-TEXTCOPY">Reverse Engineering&rbwtab;4–2</RBW-XREF
  72144. ></SB.SECTION.BLOCK.TABLE
  72145. ></ENTRY
  72146. ></RBW-ROW
  72147. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21358" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering&rbwtab;4–12</RBW-XREF
  72148. ></SB.SECTION.BLOCK.TABLE
  72149. ></ENTRY
  72150. ></RBW-ROW
  72151. ></TBODY
  72152. ></TGROUP
  72153. ></RBW-TABLE
  72154. ></LABEL
  72155. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25473"></RBW-ANCHOR
  72156. >Reverse Engineering</S.SECTION.HEAD
  72157. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72158. >Introduction</L.LABEL
  72159. ><B.BODY><RBW-IDXTERM TERM1="project" TERM2="using data from other sources"></RBW-IDXTERM
  72160. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  72161. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  72162. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  72163. ><RBW-IDXTERM TERM1="class library" TERM2="reverse engineering"></RBW-IDXTERM
  72164. >Reverse engineering parses Forté files and builds CDs and CDMs that show the classes defined in those files.</B.BODY
  72165. ></LABEL
  72166. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72167. >Purpose </L.LABEL
  72168. ><B.BODY>Use reverse engineering to capture and display the classes defined in your Forté files. This serves two purposes:</B.BODY
  72169. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72170. ></RBW-AUTOGEN
  72171. ></RBW-MARKER
  72172. ><RBW-PARABODY>Makes the classes available in ObjectTeam as external classes.</RBW-PARABODY
  72173. ></LB.LIST.BULLET
  72174. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72175. ></RBW-AUTOGEN
  72176. ></RBW-MARKER
  72177. ><RBW-PARABODY>Helps you to understand the structure and functionality of classes.</RBW-PARABODY
  72178. ></LB.LIST.BULLET
  72179. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72180. >Not an import utility</SL.SUBLABEL
  72181. ><B.BODY>Reverse engineering is not designed to capture all the information in a Forté file. Therefore, do not use reverse engineering to import classes <CX5FX5FEMPHASIS>in order to maintain them in ObjectTeam</CX5FX5FEMPHASIS
  72182. ><CX5FX5FEMPHASIS></CX5FX5FEMPHASIS
  72183. >. If you generate Forté files from the CDs and CDMs created by reverse engineering, they will not match the files you used to create those CDs and CDMs.</B.BODY
  72184. ></LABEL
  72185. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72186. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="class library"></RBW-IDXTERM
  72187. ><RBW-IDXTERM TERM1="translating" TERM2="c++ header files to Class Association Diagrams"></RBW-IDXTERM
  72188. >What happens during reverse engineering</L.LABEL
  72189. ><B.BODY>Reverse engineering uses the following steps to translate Forté<CX5FX5FFILE.NAME> </CX5FX5FFILE.NAME
  72190. >files into CDs and CDMs that show the class hierarchy:</B.BODY
  72191. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  72192. ></RBW-AUTOGEN
  72193. ></RBW-MARKER
  72194. ><RBW-PARABODY>Parses the Forté files, then maps the Forté elements to ObjectTeam elements.</RBW-PARABODY
  72195. ></LN.LIST.NUM
  72196. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  72197. ></RBW-AUTOGEN
  72198. ></RBW-MARKER
  72199. ><RBW-PARABODY>Creates CDs and CDMs that define the ObjectTeam element.</RBW-PARABODY
  72200. ></LN.LIST.NUM
  72201. ></LABEL
  72202. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72203. >In this section</L.LABEL
  72204. ><B.BODY>This section contains the following topics:</B.BODY
  72205. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  72206. ></ENTRY
  72207. ></RBW-ROW
  72208. ></THEAD
  72209. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14541" TYPE="XREF-TEXTCOPY">Parsing the Files&rbwtab;4–3</RBW-XREF
  72210. ></SB.SECTION.BLOCK.TABLE
  72211. ></ENTRY
  72212. ></RBW-ROW
  72213. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27607" TYPE="XREF-TEXTCOPY">Creating the Diagrams&rbwtab;4–5</RBW-XREF
  72214. ></SB.SECTION.BLOCK.TABLE
  72215. ></ENTRY
  72216. ></RBW-ROW
  72217. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28134" TYPE="XREF-TEXTCOPY">Running Reverse Engineering&rbwtab;4–10</RBW-XREF
  72218. ></SB.SECTION.BLOCK.TABLE
  72219. ></ENTRY
  72220. ></RBW-ROW
  72221. ></TBODY
  72222. ></TGROUP
  72223. ></RBW-TABLE
  72224. ></LABEL
  72225. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14541"></RBW-ANCHOR
  72226. >Parsing the Files</SS.SUBSEC.HEAD
  72227. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72228. >Parsing the Forté files</L.LABEL
  72229. ><B.BODY>The parser processes the Forté files as follows:</B.BODY
  72230. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72231. ></RBW-AUTOGEN
  72232. ></RBW-MARKER
  72233. ><RBW-PARABODY>It recognizes class declarations, including attributes and methods.</RBW-PARABODY
  72234. ></LB.LIST.BULLET
  72235. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  72236. ></RBW-AUTOGEN
  72237. >When declaring an attribute or method, the keywords <CX5FX5FEMPHASIS>attribute</CX5FX5FEMPHASIS
  72238. > and <CX5FX5FEMPHASIS>method</CX5FX5FEMPHASIS
  72239. > are required.</N2.NOTE.2
  72240. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72241. ></RBW-AUTOGEN
  72242. ></RBW-MARKER
  72243. ><RBW-PARABODY>It detects associations according to a heuristic process. The associations can be transformed either into graphical associations or into attributes and methods.</RBW-PARABODY
  72244. ></LB.LIST.BULLET
  72245. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72246. ></RBW-AUTOGEN
  72247. ></RBW-MARKER
  72248. ><RBW-PARABODY>It does not check data types; therefore, data types do not have to be known to the parser.</RBW-PARABODY
  72249. ></LB.LIST.BULLET
  72250. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72251. >Identifiers</SL.SUBLABEL
  72252. ><B.BODY>Reverse engineering assumes that the first character of an identifier is an alphabetic character of either case or one of the following special characters: _ “ $. It assumes each subsequent character in the identifier is an alphanumeric character or one of three special characters listed previously.</B.BODY
  72253. ></LABEL
  72254. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72255. >Mapping the elements<RBW-IDXTERM TERM1="C++" TERM2="reverse engineering"></RBW-IDXTERM
  72256. ><RBW-IDXTERM TERM1="mapping" TERM2="in reverse engineering"></RBW-IDXTERM
  72257. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="mapping"></RBW-IDXTERM
  72258. ></L.LABEL
  72259. ><B.BODY>After parsing the header file, reverse engineering maps the Forté constructs to ObjectTeam elements, as shown in the following table:</B.BODY
  72260. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Forté Construction</CELLHEADING
  72261. ></ENTRY
  72262. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam Element</CELLHEADING
  72263. ></ENTRY
  72264. ></RBW-ROW
  72265. ></THEAD
  72266. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  72267. ></ENTRY
  72268. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute and data type. The following attribute properties are set:</CELLBODY
  72269. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72270. ></RBW-AUTOGEN
  72271. ></RBW-MARKER
  72272. ><RBW-PARABODY>Access</RBW-PARABODY
  72273. ></CELLBULLET
  72274. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72275. ></RBW-AUTOGEN
  72276. ></RBW-MARKER
  72277. ><RBW-PARABODY>Access Methods</RBW-PARABODY
  72278. ></CELLBULLET
  72279. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72280. ></RBW-AUTOGEN
  72281. ></RBW-MARKER
  72282. ><RBW-PARABODY>Type Modifier</RBW-PARABODY
  72283. ></CELLBULLET
  72284. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72285. ></RBW-AUTOGEN
  72286. ></RBW-MARKER
  72287. ><RBW-PARABODY>Constant, if the attribute is a constant</RBW-PARABODY
  72288. ></CELLBULLET
  72289. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72290. ></RBW-AUTOGEN
  72291. ></RBW-MARKER
  72292. ><RBW-PARABODY>Get Expression and Set Expression, if the attribute is a virtual attribute</RBW-PARABODY
  72293. ></CELLBULLET
  72294. ></ENTRY
  72295. ></RBW-ROW
  72296. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  72297. ></ENTRY
  72298. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with the Class Type property set to Class. Class hierarchy is created, if necessary.</CELLBODY
  72299. ></ENTRY
  72300. ></RBW-ROW
  72301. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant</CELLBODY
  72302. ></ENTRY
  72303. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with the Class Type property set to Constant.</CELLBODY
  72304. ></ENTRY
  72305. ></RBW-ROW
  72306. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cursor</CELLBODY
  72307. ></ENTRY
  72308. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with the Class Type property set to Cursor.</CELLBODY
  72309. ></ENTRY
  72310. ></RBW-ROW
  72311. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Enum</CELLBODY
  72312. ></ENTRY
  72313. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with one or more attributes. All attributes have data type <CX5FX5FEMPHASIS>enum</CX5FX5FEMPHASIS
  72314. >.</CELLBODY
  72315. ></ENTRY
  72316. ></RBW-ROW
  72317. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  72318. ></ENTRY
  72319. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation (and parameters) with Operation Type property set to Event. The following operation property is also set:</CELLBODY
  72320. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72321. ></RBW-AUTOGEN
  72322. ></RBW-MARKER
  72323. ><RBW-PARABODY>Access</RBW-PARABODY
  72324. ></CELLBULLET
  72325. ></ENTRY
  72326. ></RBW-ROW
  72327. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event Handler</CELLBODY
  72328. ></ENTRY
  72329. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation (and parameters) with Operation Type property set to Event Handler. The following operation property is also set:</CELLBODY
  72330. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72331. ></RBW-AUTOGEN
  72332. ></RBW-MARKER
  72333. ><RBW-PARABODY>Access</RBW-PARABODY
  72334. ></CELLBULLET
  72335. ></ENTRY
  72336. ></RBW-ROW
  72337. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface</CELLBODY
  72338. ></ENTRY
  72339. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with the Class Type property set to Interface.</CELLBODY
  72340. ></ENTRY
  72341. ></RBW-ROW
  72342. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  72343. ></ENTRY
  72344. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation (and parameters) with Operation Type property set to Method. The following operation properties are also set:</CELLBODY
  72345. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72346. ></RBW-AUTOGEN
  72347. ></RBW-MARKER
  72348. ><RBW-PARABODY>Access</RBW-PARABODY
  72349. ></CELLBULLET
  72350. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72351. ></RBW-AUTOGEN
  72352. ></RBW-MARKER
  72353. ><RBW-PARABODY>Type Modifier</RBW-PARABODY
  72354. ></CELLBULLET
  72355. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72356. ></RBW-AUTOGEN
  72357. ></RBW-MARKER
  72358. ><RBW-PARABODY>Copy, if appropriate</RBW-PARABODY
  72359. ></CELLBULLET
  72360. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  72361. > Reverse engineering ignores the Init method.</CELLBODY
  72362. ></ENTRY
  72363. ></RBW-ROW
  72364. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Service Object</CELLBODY
  72365. ></ENTRY
  72366. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with the Class Type property set to Service Object.</CELLBODY
  72367. ></ENTRY
  72368. ></RBW-ROW
  72369. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Struct</CELLBODY
  72370. ></ENTRY
  72371. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with the Class Type property set to Struct.</CELLBODY
  72372. ></ENTRY
  72373. ></RBW-ROW
  72374. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Typedef</CELLBODY
  72375. ></ENTRY
  72376. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with one attribute.</CELLBODY
  72377. ></ENTRY
  72378. ></RBW-ROW
  72379. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Union</CELLBODY
  72380. ></ENTRY
  72381. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with the Class Type property set to Union.</CELLBODY
  72382. ></ENTRY
  72383. ></RBW-ROW
  72384. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Virtual Attribute</CELLBODY
  72385. ></ENTRY
  72386. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>See Attribute.</CELLBODY
  72387. ></ENTRY
  72388. ></RBW-ROW
  72389. ></TBODY
  72390. ></TGROUP
  72391. ></RBW-TABLE
  72392. ></LABEL
  72393. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72394. >Customizing reverse engineering</L.LABEL
  72395. ><B.BODY>The customization file <CX5FX5FFILE.NAME>tcl\rev_assoc.tcl</CX5FX5FFILE.NAME
  72396. > file in the Forté module defines the reverse engineering rules used to detect associations and attribute accessors. You can modify reverse engineering by editing this customization file, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  72397. ><CX5FX5FTITLE></CX5FX5FTITLE
  72398. >.</B.BODY
  72399. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  72400. ></RBW-AUTOGEN
  72401. >This customization file is not used unless you select the Reverse Engineer Associations option during reverse engineering.</W.WARNING
  72402. ></LABEL
  72403. ></SUBSECTION
  72404. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27607"></RBW-ANCHOR
  72405. >Creating the Diagrams<RBW-IDXTERM TERM1="diagrams" TERM2="draft, in reverse engineering"></RBW-IDXTERM
  72406. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="draft diagrams"></RBW-IDXTERM
  72407. ></SS.SUBSEC.HEAD
  72408. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72409. >Introduction</L.LABEL
  72410. ><BI.BODY.INTRO>After mapping the Forté constructs to ObjectTeam elements, reverse engineering creates the CDs and CDMs that define the ObjectTeam elements. It creates the following CDs:</BI.BODY.INTRO
  72411. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72412. ></RBW-AUTOGEN
  72413. ></RBW-MARKER
  72414. ><RBW-PARABODY>One or more CDs to show the class hierarchy</RBW-PARABODY
  72415. ></LB.LIST.BULLET
  72416. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72417. ></RBW-AUTOGEN
  72418. ></RBW-MARKER
  72419. ><RBW-PARABODY>One or more CDs to show the associations among the classes</RBW-PARABODY
  72420. ></LB.LIST.BULLET
  72421. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72422. >Naming conventions for CDs</SL.SUBLABEL
  72423. ><B.BODY>Each CD is named for the primary class in the CD; for example, Class1. The word Tree is appended to the name of each CD that defines part of the class hierarchy; for example, ObjectTree.</B.BODY
  72424. ></LABEL
  72425. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72426. >How many diagrams are created</L.LABEL
  72427. ><B.BODY>The number and complexity of the CDs created by reverse engineering depend largely on the following:</B.BODY
  72428. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72429. ></RBW-AUTOGEN
  72430. ></RBW-MARKER
  72431. ><RBW-PARABODY>The files that you select for reverse engineering, particularly the number and complexity of classes defined in the files.</RBW-PARABODY
  72432. ></LB.LIST.BULLET
  72433. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72434. ></RBW-AUTOGEN
  72435. ></RBW-MARKER
  72436. ><RBW-PARABODY>The reverse engineering options that you select, particularly whether you choose to reverse engineer associations.</RBW-PARABODY
  72437. ></LB.LIST.BULLET
  72438. ></LABEL
  72439. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72440. ><RBW-ANCHOR ID="26227"></RBW-ANCHOR
  72441. >Options for reverse engineering</L.LABEL
  72442. ><BI.BODY.INTRO>During reverse engineering, ObjectTeam displays the following dialog box prompting you to select the options that you want to use:</BI.BODY.INTRO
  72443. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00657.unk" origfile="pics/reoption.gif" origtype="X" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72444. ></FA.FIGURE.ANCHOR
  72445. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering" TERM2="configuring options"></RBW-IDXTERM
  72446. >The following table describes each option (default values are as shown in the dialog box):</B.BODY
  72447. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  72448. ></ENTRY
  72449. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Descriptions</CELLHEADING
  72450. ></ENTRY
  72451. ></RBW-ROW
  72452. ></THEAD
  72453. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diagram</CELLBODY
  72454. ></ENTRY
  72455. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Prefix used to name each generated CD.</CELLBODY
  72456. ></ENTRY
  72457. ></RBW-ROW
  72458. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate</CELLBODY
  72459. ></ENTRY
  72460. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether to generate CDs, CDMs, or both:</CELLBODY
  72461. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72462. ></RBW-AUTOGEN
  72463. ></RBW-MARKER
  72464. ><RBW-PARABODY>CDs and CDMs</RBW-PARABODY
  72465. ></CELLBULLET
  72466. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72467. ></RBW-AUTOGEN
  72468. ></RBW-MARKER
  72469. ><RBW-PARABODY>Only CDs (only class structure is generated)</RBW-PARABODY
  72470. ></CELLBULLET
  72471. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72472. ></RBW-AUTOGEN
  72473. ></RBW-MARKER
  72474. ><RBW-PARABODY>Only CDMs (only class features are generated)</RBW-PARABODY
  72475. ></CELLBULLET
  72476. ></ENTRY
  72477. ></RBW-ROW
  72478. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overwrite Existing Diagrams</CELLBODY
  72479. ></ENTRY
  72480. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, existing CDs are replaced.</CELLBODY
  72481. ></ENTRY
  72482. ></RBW-ROW
  72483. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Reference Diagrams</CELLBODY
  72484. ></ENTRY
  72485. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering creates a separate reference CD for each class that exceeds the maximum size. The class is folded in all diagrams other than the reference diagram.</CELLBODY
  72486. ></ENTRY
  72487. ></RBW-ROW
  72488. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Class Width & Height</CELLBODY
  72489. ></ENTRY
  72490. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class. When a class exceeds this size, it is folded.</CELLBODY
  72491. ></ENTRY
  72492. ></RBW-ROW
  72493. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Tree Width & Height</CELLBODY
  72494. ></ENTRY
  72495. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class tree. When a class hierarchy exceeds this size, it is split.</CELLBODY
  72496. ></ENTRY
  72497. ></RBW-ROW
  72498. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Screen Width & Height</CELLBODY
  72499. ></ENTRY
  72500. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a diagram. When a diagram exceeds this size, it is split.</CELLBODY
  72501. ></ENTRY
  72502. ></RBW-ROW
  72503. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Placement Algorithm</CELLBODY
  72504. ></ENTRY
  72505. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Reverse Engineering Associations is selected</CX5FX5FBULLET.EMPHASIS
  72506. >, specifies the algorithm reverse engineering uses to create the CDs that show the associations:</CELLBODY
  72507. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72508. ></RBW-AUTOGEN
  72509. ></RBW-MARKER
  72510. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Simple.</CX5FX5FBULLET.EMPHASIS
  72511. > Creates a CD for each class that has associations.</RBW-PARABODY
  72512. ></CELLBULLET
  72513. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72514. ></RBW-AUTOGEN
  72515. ></RBW-MARKER
  72516. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Grid.</CX5FX5FBULLET.EMPHASIS
  72517. > Creates a CD for each <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  72518. > classes, where <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  72519. > is the number specified in the Number of Classes per CD field.</RBW-PARABODY
  72520. ></CELLBULLET
  72521. ></ENTRY
  72522. ></RBW-ROW
  72523. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Number of Classes per CD</CELLBODY
  72524. ></ENTRY
  72525. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Placement Algorithm is Grid</CX5FX5FBULLET.EMPHASIS
  72526. >, specifies the number of unfolded classes per CD.</CELLBODY
  72527. ></ENTRY
  72528. ></RBW-ROW
  72529. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Case</CELLBODY
  72530. ></ENTRY
  72531. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Forté is not case sensitive; however, ObjectTeam is case sensitive. Use this field to specify which case should be used in ObjectTeam.</CELLBODY
  72532. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72533. ></RBW-AUTOGEN
  72534. ></RBW-MARKER
  72535. ><RBW-PARABODY>FirstCase. For each identifier, use the case that is first encountered. (When reverse engineering multiple files, use this option with caution.)</RBW-PARABODY
  72536. ></CELLBULLET
  72537. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72538. ></RBW-AUTOGEN
  72539. ></RBW-MARKER
  72540. ><RBW-PARABODY>UpperCase. Always use uppercase characters.</RBW-PARABODY
  72541. ></CELLBULLET
  72542. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72543. ></RBW-AUTOGEN
  72544. ></RBW-MARKER
  72545. ><RBW-PARABODY>LowerCase. Always use lowercase characters.</RBW-PARABODY
  72546. ></CELLBULLET
  72547. ></ENTRY
  72548. ></RBW-ROW
  72549. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reverse Engineer Associations</CELLBODY
  72550. ></ENTRY
  72551. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering examines the attributes and accessor methods defined on each class to determine the associations among classes. It then creates CDs that show those associations.</CELLBODY
  72552. ></ENTRY
  72553. ></RBW-ROW
  72554. ></TBODY
  72555. ></TGROUP
  72556. ></RBW-TABLE
  72557. ></LABEL
  72558. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72559. >CDs that show the class hierarchy</L.LABEL
  72560. ><B.BODY>Following are the guidelines used to draw the CDs that show the class hierarchy:</B.BODY
  72561. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72562. ></RBW-AUTOGEN
  72563. ></RBW-MARKER
  72564. ><RBW-PARABODY>Reverse engineering creates a CD for each top&truehy;level parent class. The CD contains the parent class and all subclasses.</RBW-PARABODY
  72565. ></LB.LIST.BULLET
  72566. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72567. ></RBW-AUTOGEN
  72568. ></RBW-MARKER
  72569. ><RBW-PARABODY>If a class has multiple parent classes, reverse engineering creates a CD for each parent. The CD for the first parent class contains the parent class, the child class, and all subclasses of the child class. The CD for each of the other parent classes contains only the parent class and the child class; in these diagrams, the child class is folded.</RBW-PARABODY
  72570. ></LB.LIST.BULLET
  72571. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00658.tif" origseq="5" origtype="I" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72572. ></FA2.FIGURE.ANCHOR.2
  72573. ></LABEL
  72574. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72575. >CDs that show associations</L.LABEL
  72576. ><B.BODY>If you select the Reverse Engineer Associations option in the Reverse Engineer dialog box, reverse engineering creates CDs that show the associations. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box. Both algorithms are described below.</B.BODY
  72577. ><B.BODY>If you do not select the Reverse Engineer Associations option, reverse engineering shows associations only as attributes and accessor methods in the appropriate classes.</B.BODY
  72578. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  72579. ></RBW-AUTOGEN
  72580. >Bidirectional associations are reverse engineered as two unidirectional associations.</N.NOTE
  72581. ></LABEL
  72582. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72583. >Simple algorithm</L.LABEL
  72584. ><BI.BODY.INTRO>If you select Simple in the Placement Algorithm field of the Reverse Engineer dialog box, reverse engineering draws the CDs as follows:</BI.BODY.INTRO
  72585. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  72586. ></RBW-AUTOGEN
  72587. ></RBW-MARKER
  72588. ><RBW-PARABODY>Creates a CD for each class that has one or more associations. </RBW-PARABODY
  72589. ></LN.LIST.NUM
  72590. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  72591. ></RBW-AUTOGEN
  72592. ></RBW-MARKER
  72593. ><RBW-PARABODY>Unfolds the main class in each CD and folds all associated classes.</RBW-PARABODY
  72594. ></LN.LIST.NUM
  72595. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72596. >Example</SL.SUBLABEL
  72597. ><BI.BODY.INTRO>The following CDs, created by the simple algorithm, show the associations among three classes.</BI.BODY.INTRO
  72598. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00659.unk" origfile="pics/simppers.gif" origtype="X" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72599. ></FA.FIGURE.ANCHOR
  72600. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00660.unk" origfile="pics/simpsong.gif" origtype="X" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72601. ></FA.FIGURE.ANCHOR
  72602. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00661.unk" origfile="pics/simpaud.gif" origtype="X" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72603. ></FA.FIGURE.ANCHOR
  72604. ></LABEL
  72605. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72606. >Grid algorithm</L.LABEL
  72607. ><B.BODY>If you select Grid in the Placement Algorithm field of the Reverse Engineer dialog box, reverse engineering draws the CDs as follows:</B.BODY
  72608. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  72609. ></RBW-AUTOGEN
  72610. ></RBW-MARKER
  72611. ><RBW-PARABODY>Divides all classes into groups of <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  72612. >, where <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  72613. > is the number specified by the Number of Classes per CD field of the Reverse Engineer dialog box. The algorithm attempts to group associated classes.</RBW-PARABODY
  72614. ></LN.LIST.NUM
  72615. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  72616. ></RBW-AUTOGEN
  72617. >To create a diagram that contains all classes, specify <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  72618. > as the number of classes being reverse engineered (or greater).</T2.TIP.2
  72619. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  72620. ></RBW-AUTOGEN
  72621. ></RBW-MARKER
  72622. ><RBW-PARABODY>For each group of classes, creates a CD and adds the classes (unfolded) to the CD. To position the classes, reverse engineering uses a uniform grid whose squares are the size of the largest class in the group and its longest association.</RBW-PARABODY
  72623. ></LN.LIST.NUM
  72624. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  72625. ></RBW-AUTOGEN
  72626. ></RBW-MARKER
  72627. ><RBW-PARABODY>For each class in each CD, draws all associations from the class to all associated classes. If an associated class is not in the CD, reverse engineering adds it (folded) to the CD.</RBW-PARABODY
  72628. ></LN.LIST.NUM
  72629. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72630. >Example</SL.SUBLABEL
  72631. ><BI.BODY.INTRO>The following CD, created by the grid algorithm, shows all of the associations among three classes. (The classes in the generated CD were repositioned so this illustration would fit on the page.)</BI.BODY.INTRO
  72632. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00662.unk" origfile="pics/grid.gif" origtype="X" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72633. ></FAR.FIGURE.ANCHOR.RIGHT
  72634. ></LABEL
  72635. ></SUBSECTION
  72636. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28134"></RBW-ANCHOR
  72637. >Running Reverse Engineering</SS.SUBSEC.HEAD
  72638. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72639. >Introduction</L.LABEL
  72640. ><B.BODY>This section describes how to run reverse engineering.</B.BODY
  72641. ></LABEL
  72642. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72643. >How to reverse engineer</L.LABEL
  72644. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  72645. ></RBW-AUTOGEN
  72646. ></RBW-MARKER
  72647. ><RBW-PARABODY>To reverse engineer Forté files:</RBW-PARABODY
  72648. ></P.PROCEDURE
  72649. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  72650. ></RBW-AUTOGEN
  72651. ></RBW-MARKER
  72652. ><RBW-PARABODY>Move to System level in Object Design phase.</RBW-PARABODY
  72653. ></LN.LIST.NUM
  72654. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  72655. ></RBW-AUTOGEN
  72656. >Typically, you reverse engineer into an empty system. However, name conflicts can still occur since classes are created with scope Phase.</N2.NOTE.2
  72657. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  72658. ></RBW-AUTOGEN
  72659. ></RBW-MARKER
  72660. ><RBW-PARABODY>Select Utilities | Reverse Engineer Forté.</RBW-PARABODY
  72661. ></LN.LIST.NUM
  72662. ><LR.LIST.RESULT>The Reverse Engineer Forté dialog box appears (see <RBW-XREF REFID="21197" TYPE="XREF-TEXTCOPY">Files for reverse engineering</RBW-XREF
  72663. >), prompting you to select the files to be reverse engineered.</LR.LIST.RESULT
  72664. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  72665. ></RBW-AUTOGEN
  72666. ></RBW-MARKER
  72667. ><RBW-PARABODY>Select the files (<CX5FX5FFILE.NAME>.cex</CX5FX5FFILE.NAME
  72668. > or <CX5FX5FFILE.NAME>.pex</CX5FX5FFILE.NAME
  72669. >) that you want to reverse engineer, then select OK.</RBW-PARABODY
  72670. ></LN.LIST.NUM
  72671. ><LR.LIST.RESULT>A second Reverse Engineer Forté dialog box appears (see <RBW-XREF REFID="26227" TYPE="XREF-TEXTCOPY">Options for reverse engineering</RBW-XREF
  72672. >), prompting you to select the options that you want to use. </LR.LIST.RESULT
  72673. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  72674. ></RBW-AUTOGEN
  72675. ></RBW-MARKER
  72676. ><RBW-PARABODY>Select the options, then select OK.</RBW-PARABODY
  72677. ></LN.LIST.NUM
  72678. ><LR.LIST.RESULT>ObjectTeam reverse engineers the selected file, reporting the results in a Monitoring window. The generated CDs display the class hierarchy defined in the selected files, as well as the attributes, operations, and (if the Reverse Engineer Associations option is selected) associations of each class.</LR.LIST.RESULT
  72679. ></LABEL
  72680. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72681. ><RBW-ANCHOR ID="21197"></RBW-ANCHOR
  72682. >Files for reverse engineering</L.LABEL
  72683. ><BI.BODY.INTRO>During reverse engineering, ObjectTeam prompts you to select the Forté files that you want to reverse engineer. The following illustrations show the Windows and UNIX dialog boxes.</BI.BODY.INTRO
  72684. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  72685. ></RBW-AUTOGEN
  72686. >Reverse engineering creates CDs and CDMs based on the files that you select. Therefore, you generally want to reverse engineer all related files at the same time.</T.TIP
  72687. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72688. >Windows</SL.SUBLABEL
  72689. ><BI.BODY.INTRO>In Windows, use the File Name and Files of Type fields to filter the list of files displayed.</BI.BODY.INTRO
  72690. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00663.unk" origfile="pics/refilew.gif" origtype="X" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72691. ></FA.FIGURE.ANCHOR
  72692. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72693. >UNIX</SL.SUBLABEL
  72694. ><BI.BODY.INTRO>In UNIX, use the Filter field and Filter button to filter the list of files displayed.</BI.BODY.INTRO
  72695. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00664.unk" origfile="pics/refileu.gif" origtype="X" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72696. ></FA.FIGURE.ANCHOR
  72697. ><B.BODY></B.BODY
  72698. ></LABEL
  72699. ></SUBSECTION
  72700. ></SECTION
  72701. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21358"></RBW-ANCHOR
  72702. >Round&truehy;Trip Engineering</S.SECTION.HEAD
  72703. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72704. >Introduction</L.LABEL
  72705. ><B.BODY>Round&truehy;trip engineering updates the ObjectTeam model based on the changes you have made to the generated source files. Use round&truehy;trip engineering to update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  72706. > you regenerate the source files.</B.BODY
  72707. ></LABEL
  72708. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72709. >Purpose</L.LABEL
  72710. ><B.BODY>The code generator generates code based on the ObjectTeam model. If you do not update the ObjectTeam model before regenerating the source files, the new source files do not include your changes. </B.BODY
  72711. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72712. >Example</SL.SUBLABEL
  72713. ><B.BODY>You generate Forté files. You then add a new method to a generated source file. If you do not update the ObjectTeam model, the model does not contain the operation that corresponds to the method. When you regenerate the source file, the code generator assumes that you <CX5FX5FEMPHASIS>deleted</CX5FX5FEMPHASIS
  72714. > the operation from ObjectTeam and, therefore, does not include the <CX5FX5FEMPHASIS>obsolete</CX5FX5FEMPHASIS
  72715. > method in the newly generated source file.</B.BODY
  72716. ></LABEL
  72717. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72718. >Changes captured by round&truehy;trip engineering</L.LABEL
  72719. ><B.BODY>If you have made the following types of changes to the generated source file, round&truehy;trip engineering updates the ObjectTeam model based on those changes:</B.BODY
  72720. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72721. ></RBW-AUTOGEN
  72722. ></RBW-MARKER
  72723. ><RBW-PARABODY>Added, deleted, or edited attributes</RBW-PARABODY
  72724. ></LB.LIST.BULLET
  72725. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72726. ></RBW-AUTOGEN
  72727. ></RBW-MARKER
  72728. ><RBW-PARABODY>Added, deleted, or edited the declarations of methods, events, or event handlers</RBW-PARABODY
  72729. ></LB.LIST.BULLET
  72730. ></LABEL
  72731. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72732. >What happens during round&truehy;trip engineering</L.LABEL
  72733. ><B.BODY>The following table shows the steps that occur during round&truehy;trip engineering:</B.BODY
  72734. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  72735. ></ENTRY
  72736. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  72737. ></ENTRY
  72738. ></RBW-ROW
  72739. ></THEAD
  72740. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  72741. ></ENTRY
  72742. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>You select the generated (edited) source files that you are interested in and start round&truehy;trip engineering.</CELLBODY
  72743. ></ENTRY
  72744. ></RBW-ROW
  72745. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  72746. ></ENTRY
  72747. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam parses the selected files and compares the information in the files with the information in the ObjectTeam model.</CELLBODY
  72748. ></ENTRY
  72749. ></RBW-ROW
  72750. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  72751. ></ENTRY
  72752. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each difference it finds, ObjectTeam proposes an action and prompts you for confirmation. For example:</CELLBODY
  72753. ><CELLBODY><CX5FX5FINPUT>In class “Account”: delete attribute “Address”?</CX5FX5FINPUT
  72754. ></CELLBODY
  72755. ></ENTRY
  72756. ></RBW-ROW
  72757. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  72758. ></ENTRY
  72759. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Based on your answers, ObjectTeam updates the ObjectTeam model.</CELLBODY
  72760. ></ENTRY
  72761. ></RBW-ROW
  72762. ></TBODY
  72763. ></TGROUP
  72764. ></RBW-TABLE
  72765. ></LABEL
  72766. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72767. >In this section</L.LABEL
  72768. ><B.BODY>This section contains the following topics:</B.BODY
  72769. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  72770. ></ENTRY
  72771. ></RBW-ROW
  72772. ></THEAD
  72773. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35896" TYPE="XREF-TEXTCOPY">Parsing the Generated (Edited) Source Files&rbwtab;4–14</RBW-XREF
  72774. ></SB.SECTION.BLOCK.TABLE
  72775. ></ENTRY
  72776. ></RBW-ROW
  72777. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41410" TYPE="XREF-TEXTCOPY">Running Round&truehy;Trip Engineering&rbwtab;4–16</RBW-XREF
  72778. ></SB.SECTION.BLOCK.TABLE
  72779. ></ENTRY
  72780. ></RBW-ROW
  72781. ></TBODY
  72782. ></TGROUP
  72783. ></RBW-TABLE
  72784. ></LABEL
  72785. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35896"></RBW-ANCHOR
  72786. >Parsing the Generated (Edited) Source Files</SS.SUBSEC.HEAD
  72787. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72788. >Introduction</L.LABEL
  72789. ><B.BODY>This section describes which changes to the generated source files are captured by round&truehy;trip engineering. </B.BODY
  72790. ></LABEL
  72791. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72792. >Changes to attributes</L.LABEL
  72793. ><B.BODY>You can use Forté to add, delete, and modify attributes, virtual attributes, and constants in a generated Forté file. Round&truehy;trip engineering updates the attributes in the ObjectTeam model based on your changes. Do <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  72794. > delete or modify the attributes that ObjectTeam generates to implement associations.</B.BODY
  72795. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72796. >Attribute Access property</SL.SUBLABEL
  72797. ><B.BODY>Round&truehy;trip engineering sets an attribute’s Attribute Access property based on which attribute accessor methods are specified. When you add an attribute, no attribute accessor methods are specified; therefore, the round&truehy;trip engineering sets the Read and Write values of the attribute’s Attribute Access property to None.</B.BODY
  72798. ><B.BODY>In ObjectTeam, change the Read and Write values of the attribute’s Attribute Access property to Public (or other appropriate values). When you regenerate the Forté file, ObjectTeam generates the attribute accessor methods.</B.BODY
  72799. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72800. >Delete attribute accessors</SL.SUBLABEL
  72801. ><B.BODY>If you delete an attribute, round&truehy;trip engineering identifies the attribute’s accessor methods as new methods and asks if you want to add them to the ObjectTeam model. Do <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  72802. > add them to the model.</B.BODY
  72803. ></LABEL
  72804. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72805. >Changes to methods</L.LABEL
  72806. ><BI.BODY.INTRO>You can add, delete, and modify the declarations of methods, events, and event handlers in Forté. Round&truehy;trip engineering updates the operations in the ObjectTeam model based on your changes. Do <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  72807. > delete or modify the attribute accessor methods generated by ObjectTeam.</BI.BODY.INTRO
  72808. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  72809. ></RBW-AUTOGEN
  72810. >You can change the code in the body of any method, event, or event handler. Such changes are ignored by round&truehy;trip engineering, but are preserved by the code generator when you regenerate the source files. </N.NOTE
  72811. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72812. >Overloaded methods</SL.SUBLABEL
  72813. ><B.BODY>If you have multiple methods with the same name, do not delete one and change the declaration of another at the same time. Delete one, run round&truehy;trip engineering, change the declaration of the other, and run round&truehy;trip engineering. This approach prevents potential errors in round&truehy;trip engineering.</B.BODY
  72814. ></LABEL
  72815. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72816. >Customizing round&truehy;trip engineering</L.LABEL
  72817. ><B.BODY>The customization file <CX5FX5FFILE.NAME>tcl\rt_forte.tcl</CX5FX5FFILE.NAME
  72818. > file in the Forté module defines the round&truehy;trip engineering rules used to identify attributes and methods during round&truehy;trip engineering. You can modify round&truehy;trip engineering by editing this customization file, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  72819. ><CX5FX5FTITLE></CX5FX5FTITLE
  72820. >.</B.BODY
  72821. ></LABEL
  72822. ></SUBSECTION
  72823. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="41410"></RBW-ANCHOR
  72824. >Running Round&truehy;Trip Engineering</SS.SUBSEC.HEAD
  72825. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72826. >Customizing round&truehy;trip engineering</L.LABEL
  72827. ><B.BODY>The customization file <CX5FX5FFILE.NAME>roundtrip.roundtrip</CX5FX5FFILE.NAME
  72828. > in the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  72829. >/etc directory controls what actions round&truehy;trip engineering proposes, as well as the default answers it supplies. To examine or modify the behavior of round&truehy;trip engineering, examine or modify the customization file. For more information, see the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  72830. ><CX5FX5FTITLE></CX5FX5FTITLE
  72831. >.</B.BODY
  72832. ></LABEL
  72833. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72834. >How to run round&truehy;trip engineering</L.LABEL
  72835. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  72836. ></RBW-AUTOGEN
  72837. ></RBW-MARKER
  72838. ><RBW-PARABODY>To run round&truehy;trip engineering:</RBW-PARABODY
  72839. ></P.PROCEDURE
  72840. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  72841. ></RBW-AUTOGEN
  72842. ></RBW-MARKER
  72843. ><RBW-PARABODY>Move to the System level of the Implementation phase.</RBW-PARABODY
  72844. ></LN.LIST.NUM
  72845. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  72846. ></RBW-AUTOGEN
  72847. ></RBW-MARKER
  72848. ><RBW-PARABODY>Select the Forté files on which you want to run round&truehy;trip engineering.</RBW-PARABODY
  72849. ></LN.LIST.NUM
  72850. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  72851. ></RBW-AUTOGEN
  72852. ></RBW-MARKER
  72853. ><RBW-PARABODY>Select Utilities | Round Trip Selected.</RBW-PARABODY
  72854. ></LN.LIST.NUM
  72855. ><LR.LIST.RESULT>ObjectTeam opens the Roundtrip Selected Files dialog box, compares the classes in the generated files to the classes in the Object Design phase, and then begins proposing actions and prompting you for confirmation.</LR.LIST.RESULT
  72856. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00665.unk" origfile="pics/rndtrip2.gif" origtype="X" origdoc="../../sources/forte/forteeng.fm5.mif"></RBW-GRAPHIC
  72857. ></FA2.FIGURE.ANCHOR.2
  72858. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  72859. ></RBW-AUTOGEN
  72860. ></RBW-MARKER
  72861. ><RBW-PARABODY>Use the buttons to respond to the proposed actions:</RBW-PARABODY
  72862. ></LN.LIST.NUM
  72863. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Button</CELLHEADING
  72864. ></ENTRY
  72865. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  72866. ></ENTRY
  72867. ></RBW-ROW
  72868. ></THEAD
  72869. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  72870. ></ENTRY
  72871. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make the proposed change.</CELLBODY
  72872. ></ENTRY
  72873. ></RBW-ROW
  72874. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>No</CELLBODY
  72875. ></ENTRY
  72876. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Do not make the proposed change.</CELLBODY
  72877. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  72878. > When you regenerate the Forté file, the change to the file will be lost.</CELLBODY
  72879. ></ENTRY
  72880. ></RBW-ROW
  72881. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default to All</CELLBODY
  72882. ></ENTRY
  72883. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use the default response for all remaining questions.</CELLBODY
  72884. ></ENTRY
  72885. ></RBW-ROW
  72886. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Stop</CELLBODY
  72887. ></ENTRY
  72888. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cancel all changes</CELLBODY
  72889. ></ENTRY
  72890. ></RBW-ROW
  72891. ></TBODY
  72892. ></TGROUP
  72893. ></RBW-TABLE
  72894. ><LR.LIST.RESULT>ObjectTeam updates the model based on your responses.</LR.LIST.RESULT
  72895. ><RBWAUTO-0001></RBWAUTO-0001
  72896. ><!--
  72897.  
  72898.  
  72899.  
  72900.  
  72901.  
  72902. CONVERTING SOURCE FILE ../../sources/forte/fortetcl.fm5.mif
  72903.  
  72904.  
  72905. --><B.BODY></B.BODY
  72906. ><B.BODY></B.BODY
  72907. ><B.BODY></B.BODY
  72908. ><B.BODY></B.BODY
  72909. ><B.BODY></B.BODY
  72910. ></LABEL
  72911. ></SUBSECTION
  72912. ></SECTION
  72913. ></CHAPTER
  72914. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  72915. ></RBW-AUTOGEN
  72916. ><RBW-ANCHOR ID="22956"></RBW-ANCHOR
  72917. >Customizing Forté Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  72918. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Fort\x8e </RBW-TEXTFLD
  72919. ></RBW-SYSOBJ
  72920. ></C.CHAPTER.HEAD
  72921. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72922. >Introduction</L.LABEL
  72923. ><B.BODY>Expert users can extend the Forté code generator by modifying the Tcl scripts that are supplied in the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  72924. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  72925. >\<CX5FX5FFILE.NAME>l_forte</CX5FX5FFILE.NAME
  72926. > directory. </B.BODY
  72927. ><B.BODY>Editing these Tcl scripts, or writing new ones that add functionality to the code generator, requires a thorough knowledge of the OOPL model structure, Tcl commands, and the ObjectTeam Shell.</B.BODY
  72928. ></LABEL
  72929. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72930. >Modifying Tcl procedures</L.LABEL
  72931. ><B.BODY>You can adapt existing methods of Object Tcl classes that are used in the code generation by redefining them in a user&truehy;defined Tcl file.</B.BODY
  72932. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  72933. ></RBW-AUTOGEN
  72934. >Cayenne Software cannot support any provided Tcl scripts that you modify. Therefore, the scripts and their structures are not documented. If you choose to modify any Tcl scripts or procedures, you must have a thorough knowledge of the script’s structures to avoid introducing errors. </W.WARNING
  72935. ></LABEL
  72936. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72937. >In this chapter</L.LABEL
  72938. ><B.BODY>This chapter contains the following sections:</B.BODY
  72939. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  72940. ></ENTRY
  72941. ></RBW-ROW
  72942. ></THEAD
  72943. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22291" TYPE="XREF-TEXTCOPY">How Tcl is Used in the Code Generation&rbwtab;5–20</RBW-XREF
  72944. ></SB.SECTION.BLOCK.TABLE
  72945. ></ENTRY
  72946. ></RBW-ROW
  72947. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15580" TYPE="XREF-TEXTCOPY">Customizing Tcl Scripts Used for Code Generation&rbwtab;5–23</RBW-XREF
  72948. ></SB.SECTION.BLOCK.TABLE
  72949. ></ENTRY
  72950. ></RBW-ROW
  72951. ></TBODY
  72952. ></TGROUP
  72953. ></RBW-TABLE
  72954. ></LABEL
  72955. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22291"></RBW-ANCHOR
  72956. >How Tcl is Used in the <RBW-IDXTERM TERM1="Tcl" TERM2="in ObjectTeam environment"></RBW-IDXTERM
  72957. >Code Generation<RBW-IDXTERM SEE="Tcl" TERM1="Tool Command Language"></RBW-IDXTERM
  72958. ></S.SECTION.HEAD
  72959. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72960. >Introduction</L.LABEL
  72961. ><B.BODY>This chapter provides information on the use of Tcl (Tool command language) in ObjectTeam. It does not provide an introduction to Tcl itself. If you want to become familiar with Tcl, try the following introductory book:</B.BODY
  72962. ><LT.LIST.TEXT>John K. Ousterhout, <CX5FX5FTITLE>Tcl and the Tk Toolkit</CX5FX5FTITLE
  72963. >. (Reading, Massachusetts: Addison--&truehy;Wesley Publishing Company, 1994).</LT.LIST.TEXT
  72964. ></LABEL
  72965. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  72966. >What is Tcl?</L.LABEL
  72967. ><B.BODY>Tcl (Tool command language) is an interpretive command language that resembles C. By default all arguments are passed as strings. These strings are C&truehy;compatible. Tcl consists of:</B.BODY
  72968. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72969. ></RBW-AUTOGEN
  72970. ></RBW-MARKER
  72971. ><RBW-PARABODY>A library of C procedures</RBW-PARABODY
  72972. ></LB.LIST.BULLET
  72973. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72974. ></RBW-AUTOGEN
  72975. ></RBW-MARKER
  72976. ><RBW-PARABODY>An interpreter</RBW-PARABODY
  72977. ></LB.LIST.BULLET
  72978. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72979. ></RBW-AUTOGEN
  72980. ></RBW-MARKER
  72981. ><RBW-PARABODY>The Tcl core</RBW-PARABODY
  72982. ></LB.LIST.BULLET
  72983. ><B.BODY>The Tcl core is a simple language that can be completely programmed. It provides a collection of commonly used features such as these:</B.BODY
  72984. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72985. ></RBW-AUTOGEN
  72986. ></RBW-MARKER
  72987. ><RBW-PARABODY>Variables</RBW-PARABODY
  72988. ></LB.LIST.BULLET
  72989. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72990. ></RBW-AUTOGEN
  72991. ></RBW-MARKER
  72992. ><RBW-PARABODY>Conditional and looping commands</RBW-PARABODY
  72993. ></LB.LIST.BULLET
  72994. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  72995. ></RBW-AUTOGEN
  72996. ></RBW-MARKER
  72997. ><RBW-PARABODY>Procedures</RBW-PARABODY
  72998. ></LB.LIST.BULLET
  72999. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73000. ></RBW-AUTOGEN
  73001. ></RBW-MARKER
  73002. ><RBW-PARABODY>Associative arrays</RBW-PARABODY
  73003. ></LB.LIST.BULLET
  73004. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73005. ></RBW-AUTOGEN
  73006. ></RBW-MARKER
  73007. ><RBW-PARABODY>Lists</RBW-PARABODY
  73008. ></LB.LIST.BULLET
  73009. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73010. ></RBW-AUTOGEN
  73011. ></RBW-MARKER
  73012. ><RBW-PARABODY>Expressions</RBW-PARABODY
  73013. ></LB.LIST.BULLET
  73014. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73015. ></RBW-AUTOGEN
  73016. ></RBW-MARKER
  73017. ><RBW-PARABODY>File manipulation</RBW-PARABODY
  73018. ></LB.LIST.BULLET
  73019. ></LABEL
  73020. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73021. >How is Tcl used in the code generation?</L.LABEL
  73022. ><BI.BODY.INTRO>When the ObjectTeam shell executes a Tcl script file, it translates information from the repository, internal models, and <RBW-IDXTERM TERM1="code generation model" TERM2="and Tcl"></RBW-IDXTERM
  73023. ><RBW-IDXTERM TERM1="model" TERM2="code generation"></RBW-IDXTERM
  73024. >code generation models into source code. The following illustration shows this process schematically:</BI.BODY.INTRO
  73025. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00666.tif" origseq="1" origtype="I" origdoc="../../sources/forte/fortetcl.fm5.mif"></RBW-GRAPHIC
  73026. ></FA.FIGURE.ANCHOR
  73027. ></LABEL
  73028. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73029. >Types of Tcl used</L.LABEL
  73030. ><B.BODY>The methods in the default Tcl script files used for code generation use different levels of Tcl.</B.BODY
  73031. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="168p"><COLSPEC COLNAME="2" COLWIDTH="280p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  73032. ></ENTRY
  73033. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>description</CELLHEADING
  73034. ></ENTRY
  73035. ></RBW-ROW
  73036. ></THEAD
  73037. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Standard Tcl</CELLBODY
  73038. ></ENTRY
  73039. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Refer to general Tcl documentation for details.</CELLBODY
  73040. ></ENTRY
  73041. ></RBW-ROW
  73042. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calls to Tcl </CELLBODY
  73043. ><CELLBODY>procedures</CELLBODY
  73044. ></ENTRY
  73045. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These procedures are stored in Tcl files. They become available when the file in which the procedure is defined is sourced.</CELLBODY
  73046. ></ENTRY
  73047. ></RBW-ROW
  73048. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calls to methods of classes</CELLBODY
  73049. ><CELLBODY>in the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  73050. ><RBWAUTO-0024></RBWAUTO-0024
  73051. > </CELLBODY
  73052. ><CELLBODY>models</CELLBODY
  73053. ></ENTRY
  73054. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The classes of the ObjectTeam models (including the OOPL model and SQL model) are documented in <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  73055. ><CX5FX5FTITLE></CX5FX5FTITLE
  73056. >. </CELLBODY
  73057. ></ENTRY
  73058. ></RBW-ROW
  73059. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Built&truehy;in classes</CELLBODY
  73060. ></ENTRY
  73061. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Besides methods of classes belonging to the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  73062. ><RBWAUTO-0024></RBWAUTO-0024
  73063. > models, methods belonging to other built&truehy;in classes can also be called. Refer to the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  73064. ><CX5FX5FTITLE></CX5FX5FTITLE
  73065. > for details.</CELLBODY
  73066. ></ENTRY
  73067. ></RBW-ROW
  73068. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Built&truehy;in </CELLBODY
  73069. ><CELLBODY><RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  73070. ><RBWAUTO-0024></RBWAUTO-0024
  73071. > </CELLBODY
  73072. ><CELLBODY>commands</CELLBODY
  73073. ></ENTRY
  73074. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These commands are built&truehy;in to otsh and otk. You can use these commands, but you cannot edit or view them like Tcl procedures. Refer to the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  73075. ><CX5FX5FTITLE></CX5FX5FTITLE
  73076. > for details. </CELLBODY
  73077. ></ENTRY
  73078. ></RBW-ROW
  73079. ></TBODY
  73080. ></TGROUP
  73081. ></RBW-TABLE
  73082. ></LABEL
  73083. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73084. ><RBW-ANCHOR ID="35220"></RBW-ANCHOR
  73085. >Which Tcl files are used?</L.LABEL
  73086. ><B.BODY>Tcl procedures used for code generation are stored in Object Tcl script files. During code generation, these scripts are interpreted and executed by the ObjectTeam shell (otsh). When you use Utilities | Import From Previous Phase in the Browser at the system level of the Implementation phase, otsh interprets the Object Tcl code in the Tcl file tcl\l_forte\forteimpor.tcl. In the implementation of these methods, Tcl methods from other classes are called.</B.BODY
  73087. ><B.BODY>Most of the Tcl script files that the Forté code generator uses are located under the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  73088. > directory in tcl\l_forte\*.tcl. The Tcl script files fstorage.tcl and caynutil.tcl in the tcl directory contain utility procedures that are also used.</B.BODY
  73089. ></LABEL
  73090. ></SECTION
  73091. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="15580"></RBW-ANCHOR
  73092. >Customizing Tcl Scripts Used for <RBW-IDXTERM TERM1="code generation" TERM2="adapting"></RBW-IDXTERM
  73093. >Code Generation</S.SECTION.HEAD
  73094. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73095. >User&truehy;defined Tcl files</L.LABEL
  73096. ><B.BODY>Because of the open character of Tcl, you can redefine the existing Object Tcl methods of the Tcl scripts, if you want to adapt the code generation to your needs and circumstances. You can include your own properties, control flow keywords, and section keywords in the code generation this way. You can even build your own code generator by creating your own Tcl scripts. </B.BODY
  73097. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  73098. ></RBW-AUTOGEN
  73099. >Note that existing Object Tcl classes cannot be redefined. However, you can add new, user&truehy;defined Object Tcl classes.</W.WARNING
  73100. ></LABEL
  73101. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73102. ><RBW-ANCHOR ID="37212"></RBW-ANCHOR
  73103. >Where to store user&truehy;defined Tcl procedures</L.LABEL
  73104. ><B.BODY>The Tcl script files used for the default code generation are stored in the file system. They can be found in the following directory:</B.BODY
  73105. ><E.EXAMPLE><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  73106. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  73107. > </E.EXAMPLE
  73108. ><B.BODY>If you want to adapt the default code generation, you can edit the Tcl files in this directory, but it is better to modify copies of the original files. There are several ways available to make otsh use user&truehy;defined files. These ways are briefly discussed in this section. </B.BODY
  73109. ><B.BODY>You can overrule existing Tcl files or you can extend them by creating new Tcl files with new user&truehy;defined Tcl procedures and methods, or redefinitions of existing methods. The ways to do that are also covered in this section.</B.BODY
  73110. ></LABEL
  73111. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73112. >Storing Tcl files in the same System as where the code is generated</L.LABEL
  73113. ><B.BODY>One of the available file types on the system level of the Implementation phase is Tcl. You can create new files of this type and redefine methods of existing Object Tcl classes in such a file. During code generation, otsh sources all files of the type Tcl in the current system, regardless of their names.</B.BODY
  73114. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  73115. ></RBW-AUTOGEN
  73116. ></RBW-MARKER
  73117. ><RBW-PARABODY>To create such a Tcl file:</RBW-PARABODY
  73118. ></P.PROCEDURE
  73119. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  73120. ></RBW-AUTOGEN
  73121. ></RBW-MARKER
  73122. ><RBW-PARABODY>Open the implementation system.</RBW-PARABODY
  73123. ></LN.LIST.NUM
  73124. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  73125. ></RBW-AUTOGEN
  73126. ></RBW-MARKER
  73127. ><RBW-PARABODY>Select File | New | External File Version.</RBW-PARABODY
  73128. ></LN.LIST.NUM
  73129. ><LR.LIST.RESULT>A dialog box of file types appears.</LR.LIST.RESULT
  73130. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  73131. ></RBW-AUTOGEN
  73132. ></RBW-MARKER
  73133. ><RBW-PARABODY>Select Tcl as the file type, specify a name for the Tcl file (without the extension .tcl), and click OK.</RBW-PARABODY
  73134. ></LN.LIST.NUM
  73135. ><LT.LIST.TEXT>You can enter the name of an existing Tcl file used for code generation or any other name. If you enter an existing name, the original Tcl file is replaced by this new file during code generation.</LT.LIST.TEXT
  73136. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  73137. ></RBW-AUTOGEN
  73138. ></RBW-MARKER
  73139. ><RBW-PARABODY>Edit and save the new Tcl file.</RBW-PARABODY
  73140. ></LN.LIST.NUM
  73141. ><LR.LIST.RESULT>The next time you generate code (by using Utilities | Import From Previous Phase) the new Tcl file is sourced by otsh.</LR.LIST.RESULT
  73142. ></LABEL
  73143. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73144. >Storing Tcl files in a system Tcl</L.LABEL
  73145. ><B.BODY>If you do not want to store user&truehy;defined Tcl files in the same system in which your code is generated, you can create a system called Tcl and store your user&truehy;defined Tcl files in there. Any Tcl file that is defined in such a system is sourced during code generation. You can use this mechanism for user&truehy;defined Tcl files or for user&truehy;defined Tcl files that are meant to replace existing ones.</B.BODY
  73146. ><B.BODY>To store files in a Tcl system:</B.BODY
  73147. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  73148. ></RBW-AUTOGEN
  73149. ></RBW-MARKER
  73150. ><RBW-PARABODY>Make sure the Browser is on the Implementation phase level.</RBW-PARABODY
  73151. ></LN.LIST.NUM
  73152. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  73153. ></RBW-AUTOGEN
  73154. ></RBW-MARKER
  73155. ><RBW-PARABODY>Select File | New | System Version.</RBW-PARABODY
  73156. ></LN.LIST.NUM
  73157. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  73158. ></RBW-AUTOGEN
  73159. ></RBW-MARKER
  73160. ><RBW-PARABODY>Type <CX5FX5FINPUT>Tcl</CX5FX5FINPUT
  73161. > as the system name, being sure to use a capital T.</RBW-PARABODY
  73162. ></LN.LIST.NUM
  73163. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  73164. ></RBW-AUTOGEN
  73165. ></RBW-MARKER
  73166. ><RBW-PARABODY>Open the system Tcl.</RBW-PARABODY
  73167. ></LN.LIST.NUM
  73168. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  73169. ></RBW-AUTOGEN
  73170. ></RBW-MARKER
  73171. ><RBW-PARABODY>Select File | New | External File Version.</RBW-PARABODY
  73172. ></LN.LIST.NUM
  73173. ><LR.LIST.RESULT>A dialog box of file types appears.</LR.LIST.RESULT
  73174. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  73175. ></RBW-AUTOGEN
  73176. ></RBW-MARKER
  73177. ><RBW-PARABODY>Select Tcl as the file type, specify a name for the Tcl file (without the extension <CX5FX5FFILE.NAME>.tcl</CX5FX5FFILE.NAME
  73178. >), and click OK.</RBW-PARABODY
  73179. ></LN.LIST.NUM
  73180. ><LT.LIST.TEXT>You can enter the name of an existing Tcl file used for code generation or any other name. If you enter an existing name, the original Tcl file is replaced by this new file during code generation.</LT.LIST.TEXT
  73181. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  73182. ></RBW-AUTOGEN
  73183. ></RBW-MARKER
  73184. ><RBW-PARABODY>Edit and save the new Tcl file.</RBW-PARABODY
  73185. ></LN.LIST.NUM
  73186. ><LR.LIST.RESULT>The next time you generate code, the new Tcl file is sourced by otsh.</LR.LIST.RESULT
  73187. ></LABEL
  73188. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73189. ><RBW-IDXTERM TERM1="Tcl" TERM2="script files, testing"></RBW-IDXTERM
  73190. >Testing Tcl files</L.LABEL
  73191. ><B.BODY>If you want to test a customized Tcl file before you add it to a system in ObjectTeam, you can create the Tcl file in your file system and feed it to otsh outside the ObjectTeam environment. </B.BODY
  73192. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  73193. ><CX5FX5FTITLE></CX5FX5FTITLE
  73194. > for details on how to start otsh from the command line.</B.BODY
  73195. ><B.BODY>When the Tcl file has reached its final state, you can decide to add it to a system in ObjectTeam, as described above. </B.BODY
  73196. ></LABEL
  73197. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73198. ></L.LABEL
  73199. ><!--
  73200.  
  73201.  
  73202.  
  73203.  
  73204.  
  73205. CONVERTING SOURCE FILE ../../sources/forte/fortprop.fm5.mif
  73206.  
  73207.  
  73208. --><B.BODY></B.BODY
  73209. ><B.BODY></B.BODY
  73210. ><B.BODY></B.BODY
  73211. ><B.BODY></B.BODY
  73212. ><B.BODY></B.BODY
  73213. ></LABEL
  73214. ></SECTION
  73215. ></CHAPTER
  73216. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  73217. ></RBW-AUTOGEN
  73218. >Properties<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  73219. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Fort\x8e </RBW-TEXTFLD
  73220. ></RBW-SYSOBJ
  73221. ></A.APPENDIX.HEAD
  73222. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73223. >Forté code generation properties</L.LABEL
  73224. ><B.BODY>The following table lists the properties that effect Forté code generation. These are available in the CD in the Object Design phase.</B.BODY
  73225. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="99p"><COLSPEC COLNAME="3" COLWIDTH="126p"><COLSPEC COLNAME="4" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  73226. ></ENTRY
  73227. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  73228. ></ENTRY
  73229. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  73230. ><CELLHEADING>Value</CELLHEADING
  73231. ></ENTRY
  73232. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>For More Information</CELLHEADING
  73233. ></ENTRY
  73234. ></RBW-ROW
  73235. ></THEAD
  73236. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access</CELLBODY
  73237. ></ENTRY
  73238. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  73239. ></ENTRY
  73240. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  73241. ><CELLBODY>Private</CELLBODY
  73242. ></ENTRY
  73243. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34926" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  73244. ></CELLBODY
  73245. ></ENTRY
  73246. ></RBW-ROW
  73247. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73248. ></ENTRY
  73249. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  73250. ></ENTRY
  73251. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  73252. ></ENTRY
  73253. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34064" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Data Attributes</RBW-XREF
  73254. ></CELLBODY
  73255. ></ENTRY
  73256. ></RBW-ROW
  73257. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73258. ></ENTRY
  73259. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  73260. ></ENTRY
  73261. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  73262. ><CELLBODY>Protected</CELLBODY
  73263. ><CELLBODY>Private</CELLBODY
  73264. ></ENTRY
  73265. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="28435" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Operations</RBW-XREF
  73266. ></CELLBODY
  73267. ></ENTRY
  73268. ></RBW-ROW
  73269. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access Method</CELLBODY
  73270. ></ENTRY
  73271. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  73272. ></ENTRY
  73273. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  73274. ><CELLBODY>Private</CELLBODY
  73275. ><CELLBODY>None</CELLBODY
  73276. ></ENTRY
  73277. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34926" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  73278. ></CELLBODY
  73279. ></ENTRY
  73280. ></RBW-ROW
  73281. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73282. ></ENTRY
  73283. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  73284. ></ENTRY
  73285. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  73286. ></ENTRY
  73287. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24666" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes</RBW-XREF
  73288. ></CELLBODY
  73289. ></ENTRY
  73290. ></RBW-ROW
  73291. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class Type</CELLBODY
  73292. ></ENTRY
  73293. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  73294. ></ENTRY
  73295. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant</CELLBODY
  73296. ><CELLBODY>Cursor</CELLBODY
  73297. ><CELLBODY>Interface</CELLBODY
  73298. ><CELLBODY>Servie Object</CELLBODY
  73299. ><CELLBODY>Structure</CELLBODY
  73300. ><CELLBODY>Union</CELLBODY
  73301. ></ENTRY
  73302. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40407" TYPE="XREF-TEXTCOPY">Handling Special Classes</RBW-XREF
  73303. ></CELLBODY
  73304. ></ENTRY
  73305. ></RBW-ROW
  73306. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant</CELLBODY
  73307. ></ENTRY
  73308. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  73309. ></ENTRY
  73310. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  73311. ></ENTRY
  73312. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="18919" TYPE="XREF-TEXTCOPY">Modeling Constants</RBW-XREF
  73313. ></CELLBODY
  73314. ></ENTRY
  73315. ></RBW-ROW
  73316. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Copy</CELLBODY
  73317. ></ENTRY
  73318. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  73319. ></ENTRY
  73320. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  73321. ></ENTRY
  73322. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17071" TYPE="XREF-TEXTCOPY">Specifying the return type as copy</RBW-XREF
  73323. ></CELLBODY
  73324. ></ENTRY
  73325. ></RBW-ROW
  73326. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73327. ></ENTRY
  73328. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  73329. ></ENTRY
  73330. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  73331. ></ENTRY
  73332. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="27277" TYPE="XREF-TEXTCOPY">Specifying the parameter type as copy</RBW-XREF
  73333. ></CELLBODY
  73334. ></ENTRY
  73335. ></RBW-ROW
  73336. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  73337. ></ENTRY
  73338. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  73339. ></ENTRY
  73340. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73341. ></ENTRY
  73342. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="32807" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations</RBW-XREF
  73343. ></CELLBODY
  73344. ></ENTRY
  73345. ></RBW-ROW
  73346. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  73347. ></ENTRY
  73348. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  73349. ></ENTRY
  73350. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73351. ></ENTRY
  73352. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="15392" TYPE="XREF-TEXTCOPY">Specifying a default value</RBW-XREF
  73353. ></CELLBODY
  73354. ></ENTRY
  73355. ></RBW-ROW
  73356. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Exception Event</CELLBODY
  73357. ></ENTRY
  73358. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  73359. ></ENTRY
  73360. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73361. ></ENTRY
  73362. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19136" TYPE="XREF-TEXTCOPY">Specifying an exception event</RBW-XREF
  73363. ></CELLBODY
  73364. ></ENTRY
  73365. ></RBW-ROW
  73366. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Get Expression</CELLBODY
  73367. ></ENTRY
  73368. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  73369. ></ENTRY
  73370. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73371. ></ENTRY
  73372. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39515" TYPE="XREF-TEXTCOPY">Modeling Virtual Attributes</RBW-XREF
  73373. ></CELLBODY
  73374. ></ENTRY
  73375. ></RBW-ROW
  73376. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface</CELLBODY
  73377. ></ENTRY
  73378. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  73379. ></ENTRY
  73380. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Checkbox</CELLBODY
  73381. ></ENTRY
  73382. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="14514" TYPE="XREF-TEXTCOPY">Interface</RBW-XREF
  73383. ></CELLBODY
  73384. ></ENTRY
  73385. ></RBW-ROW
  73386. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Maximum Volume</CELLBODY
  73387. ></ENTRY
  73388. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  73389. ></ENTRY
  73390. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73391. ></ENTRY
  73392. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21308" TYPE="XREF-TEXTCOPY">Specifying the maximum volume</RBW-XREF
  73393. ></CELLBODY
  73394. ></ENTRY
  73395. ></RBW-ROW
  73396. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Mechanism</CELLBODY
  73397. ></ENTRY
  73398. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  73399. ></ENTRY
  73400. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Input</CELLBODY
  73401. ><CELLBODY>Output</CELLBODY
  73402. ><CELLBODY>Input Output</CELLBODY
  73403. ></ENTRY
  73404. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="22972" TYPE="XREF-TEXTCOPY">Specifying the Input Output mechanism</RBW-XREF
  73405. ></CELLBODY
  73406. ></ENTRY
  73407. ></RBW-ROW
  73408. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation Type</CELLBODY
  73409. ></ENTRY
  73410. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  73411. ></ENTRY
  73412. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  73413. ><CELLBODY>Event</CELLBODY
  73414. ><CELLBODY>Event Handler</CELLBODY
  73415. ></ENTRY
  73416. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="29516" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  73417. ></CELLBODY
  73418. ></ENTRY
  73419. ></RBW-ROW
  73420. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Return Event</CELLBODY
  73421. ></ENTRY
  73422. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  73423. ></ENTRY
  73424. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73425. ></ENTRY
  73426. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="14000" TYPE="XREF-TEXTCOPY">Specifying a return event</RBW-XREF
  73427. ></CELLBODY
  73428. ></ENTRY
  73429. ></RBW-ROW
  73430. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Set Expression</CELLBODY
  73431. ></ENTRY
  73432. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  73433. ></ENTRY
  73434. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73435. ></ENTRY
  73436. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39515" TYPE="XREF-TEXTCOPY">Modeling Virtual Attributes</RBW-XREF
  73437. ></CELLBODY
  73438. ></ENTRY
  73439. ></RBW-ROW
  73440. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text </CELLBODY
  73441. ></ENTRY
  73442. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  73443. ></ENTRY
  73444. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73445. ></ENTRY
  73446. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34926" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  73447. ></CELLBODY
  73448. ></ENTRY
  73449. ></RBW-ROW
  73450. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73451. ></ENTRY
  73452. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  73453. ></ENTRY
  73454. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73455. ></ENTRY
  73456. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="29362" TYPE="XREF-TEXTCOPY">Editing Attribute Properties</RBW-XREF
  73457. ></CELLBODY
  73458. ></ENTRY
  73459. ></RBW-ROW
  73460. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73461. ></ENTRY
  73462. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  73463. ></ENTRY
  73464. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73465. ></ENTRY
  73466. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="33655" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  73467. ></CELLBODY
  73468. ></ENTRY
  73469. ></RBW-ROW
  73470. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73471. ></ENTRY
  73472. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  73473. ></ENTRY
  73474. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73475. ></ENTRY
  73476. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="10729" TYPE="XREF-TEXTCOPY">Editing Operation Properties</RBW-XREF
  73477. ></CELLBODY
  73478. ></ENTRY
  73479. ></RBW-ROW
  73480. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73481. ></ENTRY
  73482. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  73483. ></ENTRY
  73484. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73485. ></ENTRY
  73486. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24200" TYPE="XREF-TEXTCOPY">Defining Parameters</RBW-XREF
  73487. ></CELLBODY
  73488. ></ENTRY
  73489. ></RBW-ROW
  73490. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Type Modifier</CELLBODY
  73491. ></ENTRY
  73492. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  73493. ></ENTRY
  73494. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Array</CELLBODY
  73495. ><CELLBODY>LargeArray</CELLBODY
  73496. ><CELLBODY>Pointer</CELLBODY
  73497. ><CELLBODY><CX5FX5FVARIABLE>user&truehy;defined</CX5FX5FVARIABLE
  73498. ></CELLBODY
  73499. ></ENTRY
  73500. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17574" TYPE="XREF-TEXTCOPY">Modifying Types</RBW-XREF
  73501. ></CELLBODY
  73502. ></ENTRY
  73503. ></RBW-ROW
  73504. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73505. ></ENTRY
  73506. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  73507. ></ENTRY
  73508. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  73509. ></ENTRY
  73510. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="24050" TYPE="XREF-TEXTCOPY">Modifying a method’s return type</RBW-XREF
  73511. ></CELLBODY
  73512. ></ENTRY
  73513. ></RBW-ROW
  73514. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  73515. ></ENTRY
  73516. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  73517. ></ENTRY
  73518. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  73519. ></ENTRY
  73520. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="27150" TYPE="XREF-TEXTCOPY">Modifying the type of a parameter</RBW-XREF
  73521. ></CELLBODY
  73522. ></ENTRY
  73523. ></RBW-ROW
  73524. ></TBODY
  73525. ></TGROUP
  73526. ><RBW-ICONIZE></RBW-TABLE
  73527. ><B.BODY></B.BODY
  73528. ><RBWAUTO-0001></RBWAUTO-0001
  73529. ><!--
  73530.  
  73531.  
  73532.  
  73533.  
  73534.  
  73535. CONVERTING SOURCE FILE ../../sources/java/javabk.mif
  73536.  
  73537.  
  73538. --><B.BODY></B.BODY
  73539. ><B.BODY></B.BODY
  73540. ><B.BODY></B.BODY
  73541. ><B.BODY></B.BODY
  73542. ><B.BODY></B.BODY
  73543. ></LABEL
  73544. ></APPENDIX
  73545. ></BOOK
  73546. ><BOOK><BH.BOOK.HEAD>Java Generation Guide</BH.BOOK.HEAD
  73547. ><!--
  73548.  
  73549.  
  73550.  
  73551.  
  73552.  
  73553. CONVERTING SOURCE FILE ../../sources/java/javapref.fm5.mif
  73554.  
  73555.  
  73556. --><B.BODY></B.BODY
  73557. ><B.BODY></B.BODY
  73558. ><B.BODY></B.BODY
  73559. ><B.BODY></B.BODY
  73560. ><B.BODY></B.BODY
  73561. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  73562. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Java</RBW-TEXTFLD
  73563. ></RBW-SYSOBJ
  73564. ></CN.CHAPTER.NOX23
  73565. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73566. >About this manual</L.LABEL
  73567. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Code Generation Guide for Java</CX5FX5FTITLE
  73568. > contains information specific to the Java<CX5FX5FSUPERSCRIPT>™</CX5FX5FSUPERSCRIPT
  73569. > programming language. This manual includes all the information that you need to generate Java code from ObjectTeam. </B.BODY
  73570. ></LABEL
  73571. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73572. >Prerequisites</L.LABEL
  73573. ><B.BODY>This guide is intended for experienced users of ObjectTeam and the analysis and design method it supports. This guide explains how to map ObjectTeam diagrams to Java code; it does not teach you the Java language.</B.BODY
  73574. ><B.BODY>To customize or extend the capabilities of the Java code generator, you must have a thorough understanding of the ObjectTeam Shell, the Object&truehy;Oriented Programming Language (OOPL) model structure, and the Tool Command Language (Tcl) commands.</B.BODY
  73575. ><B.BODY><RBW-IDXTERM SEE="method" TERM1="operation"></RBW-IDXTERM
  73576. ><RBW-IDXTERM SEE="access property" TERM1="public"></RBW-IDXTERM
  73577. ><RBW-IDXTERM SEE="access property" TERM1="private"></RBW-IDXTERM
  73578. ><RBW-IDXTERM SEE="access" TERM1="protected"></RBW-IDXTERM
  73579. > <RBW-IDXTERM SEE="access property" TERM1="private protected"></RBW-IDXTERM
  73580. > <RBW-IDXTERM SEE="access property" TERM1="read access"></RBW-IDXTERM
  73581. ><RBW-IDXTERM SEE="access property" TERM1="write access"></RBW-IDXTERM
  73582. ><RBW-IDXTERM SEE="access property" SEEALSO="attribute property" TERM1="attribute"></RBW-IDXTERM
  73583. ><RBW-IDXTERM SEE="access property" SEEALSO="attribute property" TERM1=""></RBW-IDXTERM
  73584. > <RBW-IDXTERM SEEALSO="class property" TERM1="class"></RBW-IDXTERM
  73585. ><RBW-IDXTERM SEEALSO="class property" TERM1=""></RBW-IDXTERM
  73586. ><RBW-IDXTERM SEEALSO="association attribute property" TERM1="association"></RBW-IDXTERM
  73587. ><RBW-IDXTERM SEEALSO="association attribute property" TERM1=""></RBW-IDXTERM
  73588. ><RBW-IDXTERM SEEALSO="method" TERM1="method"></RBW-IDXTERM
  73589. > <RBW-IDXTERM SEE="inheritance" TERM1="generalization"></RBW-IDXTERM
  73590. ><RBW-IDXTERM SEE="inheritance" SEEALSO="interface property" TERM1="interface"></RBW-IDXTERM
  73591. ><RBW-IDXTERM SEE="inheritance" SEEALSO="interface property" TERM1=""></RBW-IDXTERM
  73592. ><RBW-IDXTERM SEE="code" SEEALSO="interface property" TERM1="source file"></RBW-IDXTERM
  73593. > <RBW-IDXTERM SEE="mapping" TERM1="translation"></RBW-IDXTERM
  73594. ><RBW-IDXTERM SEE="code" TERM1="generated source file"></RBW-IDXTERM
  73595. ><RBW-IDXTERM SEE="code" SEEALSO="code" TERM1=".java file"></RBW-IDXTERM
  73596. ></B.BODY
  73597. ><RBWAUTO-0001></RBWAUTO-0001
  73598. ><!--
  73599.  
  73600.  
  73601.  
  73602.  
  73603.  
  73604. CONVERTING SOURCE FILE ../../sources/java/javaobjd.fm5.mif
  73605.  
  73606.  
  73607. --><B.BODY></B.BODY
  73608. ><B.BODY></B.BODY
  73609. ><B.BODY></B.BODY
  73610. ><B.BODY></B.BODY
  73611. ><B.BODY></B.BODY
  73612. ></LABEL
  73613. ></CHAPTERNONUM
  73614. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  73615. ></RBW-AUTOGEN
  73616. ><RBW-ANCHOR ID="31423"></RBW-ANCHOR
  73617. >Preparing Your ObjectTeam Model for Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  73618. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Java</RBW-TEXTFLD
  73619. ></RBW-SYSOBJ
  73620. ></C.CHAPTER.HEAD
  73621. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73622. >Introduction</L.LABEL
  73623. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  73624. ><CX5FX5FTITLE></CX5FX5FTITLE
  73625. >, you model the system without regard to the implementation environment.</B.BODY
  73626. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  73627. ></LABEL
  73628. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73629. >Java module required</L.LABEL
  73630. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>Java Code Generation</CX5FX5FEMPHASIS
  73631. > provides the menu items, the properties and the Tcl code required to use the Java Code Generator. Therefore, before moving to the Object Design phase, make sure this module is active.</B.BODY
  73632. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  73633. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73634. >For more information</SL.SUBLABEL
  73635. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  73636. ><CX5FX5FTITLE></CX5FX5FTITLE
  73637. > for details on how to activate a module.</B.BODY
  73638. ></LABEL
  73639. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73640. >Object Design and Implementation</L.LABEL
  73641. ><B.BODY>This chapter describes the tasks of the Object Design phase. <RBW-XREF REFID="30750" TYPE="XREF-TEXTCOPY">Chapter 2, Generating Code</RBW-XREF
  73642. >, describes the tasks of the Implementation phase. You work iteratively in these two phases to generate code and complete your application.</B.BODY
  73643. ></LABEL
  73644. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73645. >Purpose of object design</L.LABEL
  73646. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  73647. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  73648. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  73649. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use oter diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  73650. ></LABEL
  73651. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73652. >In this chapter</L.LABEL
  73653. ><B.BODY>This chapter contains the following sections:</B.BODY
  73654. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  73655. ></ENTRY
  73656. ></RBW-ROW
  73657. ></THEAD
  73658. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36358" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;1–3</RBW-XREF
  73659. ></SB.SECTION.BLOCK.TABLE
  73660. ></ENTRY
  73661. ></RBW-ROW
  73662. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15189" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;1–6</RBW-XREF
  73663. ></SB.SECTION.BLOCK.TABLE
  73664. ></ENTRY
  73665. ></RBW-ROW
  73666. ></TBODY
  73667. ></TGROUP
  73668. ></RBW-TABLE
  73669. ></LABEL
  73670. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  73671. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  73672. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  73673. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  73674. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  73675. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  73676. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  73677. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  73678. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  73679. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  73680. >Refining the Class Diagrams</S.SECTION.HEAD
  73681. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73682. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  73683. ></L.LABEL
  73684. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  73685. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  73686. ></LABEL
  73687. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73688. >Using data from diagrams other than CDs</L.LABEL
  73689. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  73690. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  73691. ></ENTRY
  73692. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  73693. ></ENTRY
  73694. ></RBW-ROW
  73695. ></THEAD
  73696. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  73697. ></ENTRY
  73698. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  73699. ><CELLBODY>STD class</CELLBODY
  73700. ><CELLBODY>UCD actor</CELLBODY
  73701. ></ENTRY
  73702. ></RBW-ROW
  73703. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  73704. ></ENTRY
  73705. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  73706. ><CELLBODY>STD event or event message</CELLBODY
  73707. ><CELLBODY>UCD communication association</CELLBODY
  73708. ></ENTRY
  73709. ></RBW-ROW
  73710. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  73711. ></ENTRY
  73712. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  73713. ><CELLBODY>STD condition on an event</CELLBODY
  73714. ></ENTRY
  73715. ></RBW-ROW
  73716. ></TBODY
  73717. ></TGROUP
  73718. ></RBW-TABLE
  73719. ></LABEL
  73720. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73721. >Classes</L.LABEL
  73722. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  73723. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions and procedures of the class type. </B.BODY
  73724. ></LABEL
  73725. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73726. >External classes</L.LABEL
  73727. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  73728. ></LABEL
  73729. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73730. >Associations</L.LABEL
  73731. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  73732. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  73733. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73734. >Role names in Analysis and System Design</SL.SUBLABEL
  73735. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  73736. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00667.tif" origseq="1" origtype="I" origdoc="../../sources/java/javaobjd.fm5.mif"></RBW-GRAPHIC
  73737. ></FA.FIGURE.ANCHOR
  73738. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73739. >Role names in Object Design and Implementation</SL.SUBLABEL
  73740. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods  for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  73741. ></LABEL
  73742. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73743. >Attributes</L.LABEL
  73744. ><B.BODY>You must specify each attribute completely, including its data type. The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  73745. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  73746. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73747. >Data types</SL.SUBLABEL
  73748. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and derived types. </B.BODY
  73749. ></LABEL
  73750. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73751. >Operations</L.LABEL
  73752. ><BI.BODY.INTRO>You must specify each operation completely.  This includes specifying such aspects as:</BI.BODY.INTRO
  73753. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73754. ></RBW-AUTOGEN
  73755. ></RBW-MARKER
  73756. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  73757. ></LB.LIST.BULLET
  73758. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73759. ></RBW-AUTOGEN
  73760. ></RBW-MARKER
  73761. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  73762. ></LB.LIST.BULLET
  73763. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73764. ></RBW-AUTOGEN
  73765. ></RBW-MARKER
  73766. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  73767. ></LB.LIST.BULLET
  73768. ></LABEL
  73769. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73770. >Properties</L.LABEL
  73771. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  73772. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  73773. >These details are incorporated in the final code.</BI.BODY.INTRO
  73774. ></LABEL
  73775. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73776. >Checking</L.LABEL
  73777. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  73778. ><CX5FX5FTITLE></CX5FX5FTITLE
  73779. > for more information about the Check utility.</B.BODY
  73780. ></LABEL
  73781. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73782. >For more information</L.LABEL
  73783. ><B.BODY><RBW-XREF REFID="10890" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to Java</RBW-XREF
  73784. >, describes how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  73785. ></LABEL
  73786. ></SECTION
  73787. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  73788. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  73789. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  73790. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  73791. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  73792. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  73793. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  73794. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  73795. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  73796. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  73797. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  73798. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73799. >Introduction</L.LABEL
  73800. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  73801. ></LABEL
  73802. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73803. >Understanding the translations</L.LABEL
  73804. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  73805. ></LABEL
  73806. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73807. >Naming conventions</L.LABEL
  73808. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, bear in mind that spaces between words (in class names, for instance) are deleted by ObjectTeam code generators.</B.BODY
  73809. ></LABEL
  73810. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73811. >Customizing code generation</L.LABEL
  73812. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own.. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  73813. ></LABEL
  73814. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73815. >Using multiple languages in a single application</L.LABEL
  73816. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  73817. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  73818. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  73819. ></RBW-AUTOGEN
  73820. ></RBW-MARKER
  73821. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  73822. ></LN.LIST.NUM
  73823. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  73824. ></RBW-AUTOGEN
  73825. ></RBW-MARKER
  73826. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  73827. ></LN.LIST.NUM
  73828. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  73829. ></RBW-AUTOGEN
  73830. ></RBW-MARKER
  73831. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  73832. ></LN.LIST.NUM
  73833. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  73834. ></RBW-AUTOGEN
  73835. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  73836. ></LABEL
  73837. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73838. ></L.LABEL
  73839. ><B.BODY></B.BODY
  73840. ><!--
  73841.  
  73842.  
  73843.  
  73844.  
  73845.  
  73846. CONVERTING SOURCE FILE ../../sources/java/javacodg.fm5.mif
  73847.  
  73848.  
  73849. --><B.BODY></B.BODY
  73850. ><B.BODY></B.BODY
  73851. ><B.BODY></B.BODY
  73852. ><B.BODY></B.BODY
  73853. ><B.BODY></B.BODY
  73854. ></LABEL
  73855. ></SECTION
  73856. ></CHAPTER
  73857. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  73858. ></RBW-AUTOGEN
  73859. >Generating <RBW-ANCHOR ID="30750"></RBW-ANCHOR
  73860. >Code<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  73861. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Java</RBW-TEXTFLD
  73862. ></RBW-SYSOBJ
  73863. ></C.CHAPTER.HEAD
  73864. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73865. >Introduction</L.LABEL
  73866. ><B.BODY>The ultimate goal of modeling an application is to produce code that implements it. In ObjectTeam, you can generate a significant portion of the code automatically, and then complete it by adding the details that are not specified in the model.</B.BODY
  73867. ></LABEL
  73868. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73869. >Prerequisites</L.LABEL
  73870. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73871. ></RBW-AUTOGEN
  73872. ></RBW-MARKER
  73873. ><RBW-PARABODY>The ObjectTeam module <CX5FX5FEMPHASIS>Java Code generation</CX5FX5FEMPHASIS
  73874. > must be active from Object Design Phase and Implementation Phase level down.</RBW-PARABODY
  73875. ></LB.LIST.BULLET
  73876. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73877. ></RBW-AUTOGEN
  73878. ></RBW-MARKER
  73879. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="31423" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  73880. >.</RBW-PARABODY
  73881. ></LB.LIST.BULLET
  73882. ></LABEL
  73883. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73884. >Conversion from previous versions</L.LABEL
  73885. ><B.BODY>If you have systems in the Object Design phase that have been used with version 5.x of the Java code generator, you can use them with version 6.x also. No conversion is necessary.</B.BODY
  73886. ><B.BODY>If you have systems in the Object Design phase that have been used with version 4.x , you must upgrade them to version 5.x. You can then use them with either version 5.x or version 6.x. The upgrade utility is available with version 5.x of the Java code generator and is described in the documentation for that version.</B.BODY
  73887. ></LABEL
  73888. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73889. >Steps in code generation</L.LABEL
  73890. ><B.BODY>The following table provides an overview of the code generation process. This chapter describes each step in greater detail.</B.BODY
  73891. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  73892. ></ENTRY
  73893. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  73894. ></ENTRY
  73895. ></RBW-ROW
  73896. ></THEAD
  73897. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  73898. ></ENTRY
  73899. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate Java files. During this step, ObjectTeam generates Java source files on System level in the Implementation phase. </CELLBODY
  73900. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  73901. > System level in the Implementation phase is fundamentally different than system level in other phases. The system files in the Implementation phase are source files, not diagram files.</CELLBODY
  73902. ></ENTRY
  73903. ></RBW-ROW
  73904. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  73905. ></ENTRY
  73906. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configure the Java environment, copying required source files from the ObjectTeam installation directories to the appropriate user environment directories.</CELLBODY
  73907. ></ENTRY
  73908. ></RBW-ROW
  73909. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  73910. ></ENTRY
  73911. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit the source files. ObjectTeam generates a large portion of your application code, but not all of it. In this stage, you finish writing the application code.</CELLBODY
  73912. ><CELLBODY>Changes you make to the source files are not lost. When you regenerate the source files, the code generator recognizes your changes and transfers them to the newly generated files. </CELLBODY
  73913. ></ENTRY
  73914. ></RBW-ROW
  73915. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  73916. ></ENTRY
  73917. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Compile the source files.</CELLBODY
  73918. ></ENTRY
  73919. ></RBW-ROW
  73920. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  73921. ></ENTRY
  73922. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Run the application and test it. If necessary, correct the source files, the model, or both; regenerate the files and return to step 3.</CELLBODY
  73923. ></ENTRY
  73924. ></RBW-ROW
  73925. ></TBODY
  73926. ></TGROUP
  73927. ></RBW-TABLE
  73928. ></LABEL
  73929. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73930. >Illustration of code generation</L.LABEL
  73931. ><BI.BODY.INTRO>The following illustration shows how ObjectTeam generates code, including the names of the Tcl scripts that it uses. The CDs and CDMs shown at the top are in the Object Design phase. The .class files shown at the bottom can be run as Java applications or applets.</BI.BODY.INTRO
  73932. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00668.tif" origseq="1" origtype="I" origdoc="../../sources/java/javacodg.fm5.mif"></RBW-GRAPHIC
  73933. ></FAR.FIGURE.ANCHOR.RIGHT
  73934. ></LABEL
  73935. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73936. >In this chapter</L.LABEL
  73937. ><B.BODY>This chapter contains the following sections:</B.BODY
  73938. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  73939. ></ENTRY
  73940. ></RBW-ROW
  73941. ></THEAD
  73942. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27962" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;2–4</RBW-XREF
  73943. ></SB.SECTION.BLOCK.TABLE
  73944. ></ENTRY
  73945. ></RBW-ROW
  73946. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22683" TYPE="XREF-TEXTCOPY">Generating Java Source Files</RBW-XREF
  73947. ></SB.SECTION.BLOCK.TABLE
  73948. ></ENTRY
  73949. ></RBW-ROW
  73950. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27027" TYPE="XREF-TEXTCOPY">Configuring the Java Environment&rbwtab;2–9</RBW-XREF
  73951. ></SB.SECTION.BLOCK.TABLE
  73952. ></ENTRY
  73953. ></RBW-ROW
  73954. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25511" TYPE="XREF-TEXTCOPY">Editing Generated Source Files&rbwtab;2–11</RBW-XREF
  73955. ></SB.SECTION.BLOCK.TABLE
  73956. ></ENTRY
  73957. ></RBW-ROW
  73958. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39005" TYPE="XREF-TEXTCOPY">Compiling and Running Generated Files&rbwtab;2–16</RBW-XREF
  73959. ></SB.SECTION.BLOCK.TABLE
  73960. ></ENTRY
  73961. ></RBW-ROW
  73962. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12832" TYPE="XREF-TEXTCOPY">Regenerating Code&rbwtab;2–19</RBW-XREF
  73963. ></SB.SECTION.BLOCK.TABLE
  73964. ></ENTRY
  73965. ></RBW-ROW
  73966. ></TBODY
  73967. ></TGROUP
  73968. ></RBW-TABLE
  73969. ></LABEL
  73970. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27962"></RBW-ANCHOR
  73971. >Components of Code Generation</S.SECTION.HEAD
  73972. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73973. >Tcl scripts for code generation</L.LABEL
  73974. ><B.BODY>The scripts written for code generation retrieve information from the code generation models, format this information, and write the results to source code files. Code generation models are built from the CDs in the Object Design phase.</B.BODY
  73975. ></LABEL
  73976. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73977. >Code regeneration</L.LABEL
  73978. ><B.BODY>Code generation is an automated process that generates Java source files. ObjectTeam ensures that </B.BODY
  73979. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73980. ></RBW-AUTOGEN
  73981. ></RBW-MARKER
  73982. ><RBW-PARABODY>You can regenerate these files when you change your model.</RBW-PARABODY
  73983. ></LB.LIST.BULLET
  73984. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  73985. ></RBW-AUTOGEN
  73986. ></RBW-MARKER
  73987. ><RBW-PARABODY>Changes that you make to the generated files are preserved when you regenerate the files.</RBW-PARABODY
  73988. ></LB.LIST.BULLET
  73989. ><B.BODY>For more information, see <RBW-XREF REFID="12832" TYPE="XREF-TEXTCOPY">Regenerating Code</RBW-XREF
  73990. >.</B.BODY
  73991. ></LABEL
  73992. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73993. >Java program structure </L.LABEL
  73994. ><B.BODY>You can control the structure of your Java program by editing class properties in ObjectTeam. This allows you to import from external Java packages such as those included in the Java Development Kit (JDK) 1.1.</B.BODY
  73995. ><B.BODY>For more information, see <RBW-XREF REFID="38413" TYPE="XREF-TEXTCOPY">Defining Java Program Structure</RBW-XREF
  73996. >.</B.BODY
  73997. ></LABEL
  73998. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  73999. >Compiling and running Java code</L.LABEL
  74000. ><B.BODY>After generating and editing your Java source files, you can compile and run them from within ObjectTeam. You can run the compiled Java files as either applications or applets.</B.BODY
  74001. ><B.BODY>For more information, see <RBW-XREF REFID="39005" TYPE="XREF-TEXTCOPY">Compiling and Running Generated Files</RBW-XREF
  74002. >.</B.BODY
  74003. ></LABEL
  74004. ></SECTION
  74005. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22683"></RBW-ANCHOR
  74006. >Generating Java Source Files</S.SECTION.HEAD
  74007. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74008. >Result of generating</L.LABEL
  74009. ><B.BODY>When you generate source files, the code generator uses the CDs and CDMs that are in the Object Design phase to create Java source files in the Implementation phase. At System level of the Implementation phase, you can then refine the source code and complete the application.</B.BODY
  74010. ></LABEL
  74011. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74012. >Implementation Phase is different</L.LABEL
  74013. ><B.BODY>The System level of the Implementation phase is fundamentally different from System level of any other phase. In the Implementation phase, the System files are Java files. In other phases, the System files are ObjectTeam diagrams.</B.BODY
  74014. ></LABEL
  74015. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74016. >Generate code on Phase or System level</L.LABEL
  74017. ><B.BODY>You can generate code on the Implementation Phase level or on the System level of the Implementation phase.</B.BODY
  74018. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74019. ></RBW-AUTOGEN
  74020. ></RBW-MARKER
  74021. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>Implementation Phase level</CX5FX5FBULLET.EMPHASIS
  74022. >, you can generate code for one or more systems. This creates a matching system in the Implementation Phase that contains the generated source files. To regenerate code for an existing system, use System level.</RBW-PARABODY
  74023. ></LB.LIST.BULLET
  74024. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74025. ></RBW-AUTOGEN
  74026. ></RBW-MARKER
  74027. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>System level of the Implementation phase</CX5FX5FBULLET.EMPHASIS
  74028. >, you can (re)generate code for the entire system, or regenerate selected source files.</RBW-PARABODY
  74029. ></LB.LIST.BULLET
  74030. ><B.BODY>Typically, you use Implementation Phase level to generate code for a system initially and System level to regenerate code subsequently.</B.BODY
  74031. ></LABEL
  74032. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74033. >How to generate code on Implementation Phase level</L.LABEL
  74034. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74035. ></RBW-AUTOGEN
  74036. ></RBW-MARKER
  74037. ><RBW-PARABODY>To generate source files on the Implementation Phase level:</RBW-PARABODY
  74038. ></P.PROCEDURE
  74039. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74040. ></RBW-AUTOGEN
  74041. ></RBW-MARKER
  74042. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  74043. ></LN.LIST.NUM
  74044. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74045. ></RBW-AUTOGEN
  74046. ></RBW-MARKER
  74047. ><RBW-PARABODY>Select Utilities | Generate Java.</RBW-PARABODY
  74048. ></LN.LIST.NUM
  74049. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  74050. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  74051. ></RBW-AUTOGEN
  74052. ></RBW-MARKER
  74053. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  74054. ></LN.LIST.NUM
  74055. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74056. ></RBW-MARKER
  74057. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  74058. > to generate code for all systems from the Object Design phase for which no code has been generated yet.</RBW-PARABODY
  74059. ></LB2.LIST.BULLET.2
  74060. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74061. ></RBW-MARKER
  74062. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  74063. > to generate code for one or more systems in the Object Design phase. You can select only systems that do not yet exist in the Implementation phase.</RBW-PARABODY
  74064. ></LB2.LIST.BULLET.2
  74065. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files.</LR.LIST.RESULT
  74066. ></LABEL
  74067. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74068. >How to generate code on System level</L.LABEL
  74069. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74070. ></RBW-AUTOGEN
  74071. ></RBW-MARKER
  74072. ><RBW-PARABODY>To generate (selected) source files for a system from System level of the Implementation phase:</RBW-PARABODY
  74073. ></P.PROCEDURE
  74074. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74075. ></RBW-AUTOGEN
  74076. ></RBW-MARKER
  74077. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  74078. ></LN.LIST.NUM
  74079. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74080. ></RBW-AUTOGEN
  74081. ></RBW-MARKER
  74082. ><RBW-PARABODY>Select Utilities | Generate Java.</RBW-PARABODY
  74083. ></LN.LIST.NUM
  74084. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  74085. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  74086. ></RBW-AUTOGEN
  74087. ></RBW-MARKER
  74088. ><RBW-PARABODY>Select New, Selected, or All:</RBW-PARABODY
  74089. ></LN.LIST.NUM
  74090. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74091. ></RBW-MARKER
  74092. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New</CX5FX5FBULLET.EMPHASIS
  74093. > to generate code for all classes that are defined in this system and that have not yet been generated into code.</RBW-PARABODY
  74094. ></LB2.LIST.BULLET.2
  74095. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74096. ></RBW-MARKER
  74097. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Selected</CX5FX5FBULLET.EMPHASIS
  74098. > to regenerate the files that you have selected in the Information area of the browser.</RBW-PARABODY
  74099. ></LB2.LIST.BULLET.2
  74100. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74101. ></RBW-MARKER
  74102. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>All</CX5FX5FBULLET.EMPHASIS
  74103. > to (re)generate code for all classes that are defined in this system.</RBW-PARABODY
  74104. ></LB2.LIST.BULLET.2
  74105. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files. The following illustration shows the Monitor window after importing a system.</LR.LIST.RESULT
  74106. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00669.unk" origfile="pics/imp_impl.gif" origtype="X" origdoc="../../sources/java/javacodg.fm5.mif"></RBW-GRAPHIC
  74107. ></FA2.FIGURE.ANCHOR.2
  74108. ></LABEL
  74109. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74110. >Location of the source files</L.LABEL
  74111. ><B.BODY><RBW-IDXTERM TERM1="code" TERM2="location of generated files"></RBW-IDXTERM
  74112. >Source files are stored in the repository as external files. They are also written to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  74113. >\<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  74114. > directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  74115. > is the file path for your generated files. For more information on the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  74116. ><CX5FX5FTITLE></CX5FX5FTITLE
  74117. >.</B.BODY
  74118. ><B.BODY>The following illustration shows how the source files appear in the Browser.</B.BODY
  74119. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00670.unk" origfile="pics/sf_oopl.gif" origtype="X" origdoc="../../sources/java/javacodg.fm5.mif"></RBW-GRAPHIC
  74120. ></FAR.FIGURE.ANCHOR.RIGHT
  74121. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74122. ><RBW-IDXTERM TERM1="user environment" TERM2="updating"></RBW-IDXTERM
  74123. ><RBW-IDXTERM TERM1="Update User Environment (Utilities menu)"></RBW-IDXTERM
  74124. >Update user environment</SL.SUBLABEL
  74125. ><B.BODY>Utilities | Update User Environment synchronizes your user environment with the repository. This can be particularly useful if you are working on two machines, and the user environment of each is set to a local drive. When you move between machines, you can use Utilities | Update User Environment to update the local drive of the current machine.</B.BODY
  74126. ></LABEL
  74127. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24771"></RBW-ANCHOR
  74128. >Importing the OOPL Model</SS.SUBSEC.HEAD
  74129. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74130. >Introduction</L.LABEL
  74131. ><B.BODY><RBW-XREF REFID="22683" TYPE="XREF-TEXTCOPY">Generating Java Source Files</RBW-XREF
  74132. > describes how to generate code for systems in the Implementation phase.</B.BODY
  74133. ><B.BODY>When you generate code for a system in the Implementation phase, the Java code generator imports the Object Oriented Programming Language (OOPL) model and translates the information into Java source code files. This section describes that process.<RBW-IDXTERM TERM1="code" TERM2="generating"></RBW-IDXTERM
  74134. ><RBW-IDXTERM TERM1="generating code"></RBW-IDXTERM
  74135. ></B.BODY
  74136. ></LABEL
  74137. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74138. >OOPL Model</L.LABEL
  74139. ><B.BODY>The OOPL Model, which is generated from the CDs in the Object Design phase, contains information used to generate code. The objects in this model are organized in such a way that code can be generated easily.</B.BODY
  74140. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74141. >For more information</SL.SUBLABEL
  74142. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  74143. ><CX5FX5FTITLE></CX5FX5FTITLE
  74144. > provides a detailed description of the classes in the OOPL Model.</B.BODY
  74145. ></LABEL
  74146. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74147. >How ObjectTeam converts the OOPL Model</L.LABEL
  74148. ><B.BODY>To convert an OOPL Model, the ObjectTeam Shell (otsh) executes the Tcl script <RBW-IDXTERM TERM1="import.tcl"></RBW-IDXTERM
  74149. >import.tcl. It loads the OOPL model into memory and translates the information into source code. The ObjectTeam shell recognizes elements such as classes, data types, associations and methods. </B.BODY
  74150. ><B.BODY>The Tcl script import.tcl activates, the Tcl script javimport.tcl, which contains Tcl procedures to retrieve information from the OOPL model and other internal models, format the file, and write it to the appropriate source files. javimport.tcl uses other Tcl scripts that use other Tcl scripts as well, and so on.</B.BODY
  74151. ></LABEL
  74152. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74153. >Generated files</L.LABEL
  74154. ><B.BODY>By default, the Java code generator generates a classname<CX5FX5FFILE.NAME>.</CX5FX5FFILE.NAME
  74155. >java file for each class imported into the Implementation phase. You can override this default using ObjectTeam’s class properties, as described in <RBW-XREF REFID="26371" TYPE="XREF-TEXTCOPY">Mapping Classes</RBW-XREF
  74156. >.</B.BODY
  74157. ></LABEL
  74158. ></SUBSECTION
  74159. ></SECTION
  74160. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27027"></RBW-ANCHOR
  74161. >Configuring the Java Environment</S.SECTION.HEAD
  74162. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74163. >Introduction</L.LABEL
  74164. ><B.BODY>Configuring the Java environment for ObjectTeam involves two steps:</B.BODY
  74165. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74166. ></RBW-AUTOGEN
  74167. ></RBW-MARKER
  74168. ><RBW-PARABODY>Configuring your user environment, which copies to your user environment the files needed to run the generated Java code.</RBW-PARABODY
  74169. ></LN.LIST.NUM
  74170. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74171. ></RBW-AUTOGEN
  74172. ></RBW-MARKER
  74173. ><RBW-PARABODY>Configuring your Java development environment, which ensures that you can compile and run Java applications on your machine.</RBW-PARABODY
  74174. ></LN.LIST.NUM
  74175. ></LABEL
  74176. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74177. >User environment files<RBW-IDXTERM TERM1="Queue class" TERM2="copying to user environment"></RBW-IDXTERM
  74178. ><RBW-IDXTERM TERM1="example.html" TERM2="copying to user environment"></RBW-IDXTERM
  74179. ></L.LABEL
  74180. ><B.BODY>Configuring your user environment copies the following files into the user_environment folder (this is the path for generated files, as described in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  74181. ><CX5FX5FTITLE></CX5FX5FTITLE
  74182. >):</B.BODY
  74183. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74184. ></RBW-AUTOGEN
  74185. ></RBW-MARKER
  74186. ><RBW-PARABODY><CX5FX5FFILE.NAME>Queue.java</CX5FX5FFILE.NAME
  74187. >. The Java code generated for an ordered association in ObjectTeam references the Queue class. The Queue.java file contains the source code for the Queue class.</RBW-PARABODY
  74188. ></LB.LIST.BULLET
  74189. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74190. ></RBW-AUTOGEN
  74191. ></RBW-MARKER
  74192. ><RBW-PARABODY><CX5FX5FFILE.NAME>example.html</CX5FX5FFILE.NAME
  74193. >. To run a compiled Java file as an applet, you need an HTML file that invokes the Java file. The example.html file provides the necessary HTML code.</RBW-PARABODY
  74194. ></LB.LIST.BULLET
  74195. ></LABEL
  74196. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74197. >How to configure the user environment<RBW-IDXTERM TERM1="user environment" TERM2="configuring"></RBW-IDXTERM
  74198. ><RBW-IDXTERM TERM1="configuring" TERM2="user environment"></RBW-IDXTERM
  74199. ></L.LABEL
  74200. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74201. ></RBW-AUTOGEN
  74202. ></RBW-MARKER
  74203. ><RBW-PARABODY>To configure the ObjectTeam user environment for Java:</RBW-PARABODY
  74204. ></P.PROCEDURE
  74205. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74206. ></RBW-AUTOGEN
  74207. ></RBW-MARKER
  74208. ><RBW-PARABODY>Move to the system level in the Implementation phase.</RBW-PARABODY
  74209. ></LN.LIST.NUM
  74210. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74211. ></RBW-AUTOGEN
  74212. ></RBW-MARKER
  74213. ><RBW-PARABODY>Select Utilities | Configure Java Environment.</RBW-PARABODY
  74214. ></LN.LIST.NUM
  74215. ><LR.LIST.RESULT>The Execution window appears and the files described above are copied to the <CX5FX5FFILE.NAME>system&truehy;name</CX5FX5FFILE.NAME
  74216. > folder of the <CX5FX5FFILE.NAME>user_environment</CX5FX5FFILE.NAME
  74217. > folder.</LR.LIST.RESULT
  74218. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00671.unk" origfile="pics/confjava.gif" origtype="X" origdoc="../../sources/java/javacodg.fm5.mif"></RBW-GRAPHIC
  74219. ></FAR.FIGURE.ANCHOR.RIGHT
  74220. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  74221. ></RBW-AUTOGEN
  74222. ></RBW-MARKER
  74223. ><RBW-PARABODY>To close the Execution window, type <CX5FX5FINPUT>e</CX5FX5FINPUT
  74224. >.</RBW-PARABODY
  74225. ></LN.LIST.NUM
  74226. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  74227. ></RBW-AUTOGEN
  74228. ></RBW-MARKER
  74229. ><RBW-PARABODY>Repeat this procedure for every system in the Implementation phase that contains Java source files.</RBW-PARABODY
  74230. ></LN.LIST.NUM
  74231. ></LABEL
  74232. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74233. >How to set up the Java development environment<RBW-IDXTERM TERM1="configuring" TERM2="Java environment"></RBW-IDXTERM
  74234. ><RBW-IDXTERM TERM1="Java Development Kit, installing"></RBW-IDXTERM
  74235. ></L.LABEL
  74236. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74237. ></RBW-AUTOGEN
  74238. ></RBW-MARKER
  74239. ><RBW-PARABODY>To set up the Java development environment: </RBW-PARABODY
  74240. ></P.PROCEDURE
  74241. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74242. ></RBW-AUTOGEN
  74243. ></RBW-MARKER
  74244. ><RBW-PARABODY>Install the Java Development Kit (JDK) 1.0 on your machine.</RBW-PARABODY
  74245. ></LN.LIST.NUM
  74246. ><LT.LIST.TEXT>The JDK is available from the following sources: </LT.LIST.TEXT
  74247. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74248. ></RBW-MARKER
  74249. ><RBW-PARABODY><CX5FX5FFILE.NAME>www.javasoft.com</CX5FX5FFILE.NAME
  74250. > internet site</RBW-PARABODY
  74251. ></LB2.LIST.BULLET.2
  74252. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74253. ></RBW-MARKER
  74254. ><RBW-PARABODY>Any Integrated Development Environment (IDE) for the Java programming language, such as Symantec Cafe, Sun’s Java WorkShop (JWS), and Borland C++</RBW-PARABODY
  74255. ></LB2.LIST.BULLET.2
  74256. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74257. ></RBW-AUTOGEN
  74258. ></RBW-MARKER
  74259. ><RBW-PARABODY>Add the <CX5FX5FFILE.NAME>java\bin</CX5FX5FFILE.NAME
  74260. > directory to your path.</RBW-PARABODY
  74261. ></LN.LIST.NUM
  74262. ></LABEL
  74263. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74264. >CLASSPATH variable</L.LABEL
  74265. ><B.BODY>Depending on how you have installed the JDK, you may also need to set the <RBW-IDXTERM TERM1="CLASSPATH environment variable"></RBW-IDXTERM
  74266. >CLASSPATH environment variable. This variable establishes the path that the Java interpreter, compiler, and browser use to import classes. </B.BODY
  74267. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74268. ></RBW-AUTOGEN
  74269. ></RBW-MARKER
  74270. ><RBW-PARABODY>Setting the variable to include your current working directory and the directory containing the JAVA API packages allows you to use any of the classes you have designed in the current system with the JAVA API packages. </RBW-PARABODY
  74271. ></LB.LIST.BULLET
  74272. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74273. ></RBW-AUTOGEN
  74274. ></RBW-MARKER
  74275. ><RBW-PARABODY>If you have created your own classes in other folders or want to access classes in other ObjectTeam systems, you must also add these directory paths to the CLASSPATH variable. Setting these paths enables the Java class loader to access and import these classes. </RBW-PARABODY
  74276. ></LB.LIST.BULLET
  74277. ></LABEL
  74278. ></SECTION
  74279. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25511"></RBW-ANCHOR
  74280. >Editing Generated Source Files</S.SECTION.HEAD
  74281. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74282. >Introduction</L.LABEL
  74283. ><B.BODY>When code generation is successful, you can relate each generated Java file to a specific class in a CD of the Object Design phase.</B.BODY
  74284. ></LABEL
  74285. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74286. >Editing .java files</L.LABEL
  74287. ><B.BODY>The generated .java files serve as framework files. They contain the code that implements the classes as defined in the ObjectTeam model. However, the ObjectTeam model does not define the application completely, so you must edit the .java files to complete the application.</B.BODY
  74288. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74289. ></RBW-AUTOGEN
  74290. ></RBW-MARKER
  74291. ><RBW-PARABODY><RBW-IDXTERM TERM1="method" TERM2="body of"></RBW-IDXTERM
  74292. >A method declaration is generated for each operation defined for the ObjectTeam class. The method body is empty and a regeneration marker appears at the end of the method. Code that you enter in the method body is preserved when you regenerate the .java file.</RBW-PARABODY
  74293. ></LB.LIST.BULLET
  74294. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74295. ></RBW-AUTOGEN
  74296. ></RBW-MARKER
  74297. ><RBW-PARABODY>A default constructor is generated for each class. The method body may contain generated statements, as well as the following comments:</RBW-PARABODY
  74298. ></LB.LIST.BULLET
  74299. ><EM.EXAMPLE.MONO>//Start user code section</EM.EXAMPLE.MONO
  74300. ><EM.EXAMPLE.MONO>//End user code section</EM.EXAMPLE.MONO
  74301. ><LT.LIST.TEXT>Code that you enter between the comments is preserved when you regenerate the .java file.</LT.LIST.TEXT
  74302. ></LABEL
  74303. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74304. ><RBW-IDXTERM TERM1="code" TERM2="editing"></RBW-IDXTERM
  74305. >How to edit source files</L.LABEL
  74306. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74307. ></RBW-AUTOGEN
  74308. ></RBW-MARKER
  74309. ><RBW-PARABODY>To edit source files:</RBW-PARABODY
  74310. ></P.PROCEDURE
  74311. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74312. ></RBW-AUTOGEN
  74313. ></RBW-MARKER
  74314. ><RBW-PARABODY>Move to the system level in the Implementation phase.</RBW-PARABODY
  74315. ></LN.LIST.NUM
  74316. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74317. ></RBW-AUTOGEN
  74318. ></RBW-MARKER
  74319. ><RBW-PARABODY>In the information area, double&truehy;click the source file that you want to edit, or select the source file and then select File | Edit.</RBW-PARABODY
  74320. ></LN.LIST.NUM
  74321. ><LR.LIST.RESULT>ObjectTeam creates a temporary file containing the <CX5FX5FTITLE>working</CX5FX5FTITLE
  74322. > version of the selected .java file and opens that file in your default text editor. After you have edited, saved, and closed the text file, ObjectTeam stores the updated text file back in the repository and the user environment, and then deletes the temporary file.</LR.LIST.RESULT
  74323. ></LABEL
  74324. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74325. >Update diagrams</L.LABEL
  74326. ><B.BODY>Depending on the type of additions you have made to the source files, you may need to edit the CDs to reflect your changes. For example, if you add a method to the code, you must add the same operation to the class in the ObjectTeam model. If you modify the model, be sure to use Check | Global Model to check the updated diagrams before regenerating the source files.</B.BODY
  74327. ></LABEL
  74328. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74329. >In this section</L.LABEL
  74330. ><B.BODY>You can generate code for a Java application or applet. This section provides examples of edited code for each.</B.BODY
  74331. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  74332. ></ENTRY
  74333. ></RBW-ROW
  74334. ></THEAD
  74335. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24098" TYPE="XREF-TEXTCOPY">Sample Application&rbwtab;2–13</RBW-XREF
  74336. ></SB.SECTION.BLOCK.TABLE
  74337. ></ENTRY
  74338. ></RBW-ROW
  74339. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30089" TYPE="XREF-TEXTCOPY">Sample Applet&rbwtab;2–14</RBW-XREF
  74340. ></SB.SECTION.BLOCK.TABLE
  74341. ></ENTRY
  74342. ></RBW-ROW
  74343. ></TBODY
  74344. ></TGROUP
  74345. ></RBW-TABLE
  74346. ></LABEL
  74347. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="24098"></RBW-ANCHOR
  74348. >Sample Application</SS.SUBSEC.HEAD
  74349. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74350. >CD for an application</L.LABEL
  74351. ><B.BODY><RBW-IDXTERM TERM1="code" TERM2="application example"></RBW-IDXTERM
  74352. ><RBW-IDXTERM TERM1="application" TERM2="example"></RBW-IDXTERM
  74353. >The following ObjectTeam class generates a simple Java application that displays a “Hello World” text string. A Java application requires a static method named main, as defined in this class.</B.BODY
  74354. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00672.unk" origfile="pics/appcad.gif" origtype="X" origdoc="../../sources/java/javacodg.fm5.mif"></RBW-GRAPHIC
  74355. ></FA.FIGURE.ANCHOR
  74356. ></LABEL
  74357. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74358. >Generated code</L.LABEL
  74359. ><B.BODY>Following is the generated Java code for the class. The highlighted text shows the edits you make to complete the code.</B.BODY
  74360. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; Start Class Declarations</EWM.EXAMPLEW.MONO
  74361. ><EWM.EXAMPLEW.MONO>public class MyApplication extends Object {</EWM.EXAMPLEW.MONO
  74362. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  74363. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  74364. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  74365. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  74366. ><EWM.EXAMPLEW.MONO>    // Constructors</EWM.EXAMPLEW.MONO
  74367. ><EWM.EXAMPLEW.MONO>    public MyApplication() {</EWM.EXAMPLEW.MONO
  74368. ><EWM.EXAMPLEW.MONO>        // Start user code section</EWM.EXAMPLEW.MONO
  74369. ><EWM.EXAMPLEW.MONO>        // End user code section</EWM.EXAMPLEW.MONO
  74370. ><EWM.EXAMPLEW.MONO>    } // default constructor MyApplication</EWM.EXAMPLEW.MONO
  74371. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  74372. ><EWM.EXAMPLEW.MONO>    // Methods</EWM.EXAMPLEW.MONO
  74373. ><EWM.EXAMPLEW.MONO>    public static void main(String argv[]) {</EWM.EXAMPLEW.MONO
  74374. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;System.out.println(“Hello World!”)</CX5FX5FBULLET.EMPHASIS
  74375. >;</EWM.EXAMPLEW.MONO
  74376. ><EWM.EXAMPLEW.MONO>    } // method main</EWM.EXAMPLEW.MONO
  74377. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  74378. ><EWM.EXAMPLEW.MONO>    // Do not delete this line &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  74379. ><EWM.EXAMPLEW.MONO>    // Attribute accessors</EWM.EXAMPLEW.MONO
  74380. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  74381. ><EWM.EXAMPLEW.MONO>    // Association accessors</EWM.EXAMPLEW.MONO
  74382. ><EWM.EXAMPLEW.MONO>} // class MyApplication</EWM.EXAMPLEW.MONO
  74383. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; End Class Declarations</EWM.EXAMPLEW.MONO
  74384. ></LABEL
  74385. ></SUBSECTION
  74386. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="30089"></RBW-ANCHOR
  74387. >Sample Applet</SS.SUBSEC.HEAD
  74388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74389. >CD for an applet</L.LABEL
  74390. ><B.BODY><RBW-IDXTERM TERM1="code" TERM2="applet example"></RBW-IDXTERM
  74391. ><RBW-IDXTERM TERM1="applet" TERM2="example"></RBW-IDXTERM
  74392. >The following ObjectTeam CD generates a simple Java applet that displays a “Hello World” text string. A Java applet requires that the class being executed be a subclass of the Applet class, as shown here.</B.BODY
  74393. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00673.unk" origfile="pics/applcad.gif" origtype="X" origdoc="../../sources/java/javacodg.fm5.mif"></RBW-GRAPHIC
  74394. ></FA.FIGURE.ANCHOR
  74395. ></LABEL
  74396. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74397. >Applet class properties </L.LABEL
  74398. ><B.BODY>The Applet class is an external class; it is defined in the Java Development Kit (JDK) 1.0. Therefore, you edit the Applet class properties to indicate that it is an external class.</B.BODY
  74399. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00674.unk" origfile="pics/prpclas.gif" origtype="X" origdoc="../../sources/java/javacodg.fm5.mif"></RBW-GRAPHIC
  74400. ></FA.FIGURE.ANCHOR
  74401. ></LABEL
  74402. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74403. >MyApplet class properties</L.LABEL
  74404. ><B.BODY>The generated code for MyApplet references two classes from the Java Development Kit (JDK) 1.0:</B.BODY
  74405. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74406. ></RBW-AUTOGEN
  74407. ></RBW-MARKER
  74408. ><RBW-PARABODY>The Applet class, because the MyApplet class is a subclass of Applet.</RBW-PARABODY
  74409. ></LB.LIST.BULLET
  74410. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74411. ></RBW-AUTOGEN
  74412. ></RBW-MARKER
  74413. ><RBW-PARABODY>The Graphics class, because the parameter of the paint operation uses that class as its data type.</RBW-PARABODY
  74414. ></LB.LIST.BULLET
  74415. ><B.BODY>You edit the MyApplet class properties to import these two classes from the Java Development Kit (JDK) 1.1.</B.BODY
  74416. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00675.unk" origfile="pics/prppack1.gif" origtype="X" origdoc="../../sources/java/javacodg.fm5.mif"></RBW-GRAPHIC
  74417. ></FA.FIGURE.ANCHOR
  74418. ></LABEL
  74419. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74420. >Generated code</L.LABEL
  74421. ><B.BODY>Following is the generated Java code for the MyApplet class. The highlighted text shows the edits you make to complete the code.</B.BODY
  74422. ><EWM.EXAMPLEW.MONO>import java.awt.Graphics;</EWM.EXAMPLEW.MONO
  74423. ><EWM.EXAMPLEW.MONO>import java.applet.Applet;</EWM.EXAMPLEW.MONO
  74424. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; Start Class Declarations</EWM.EXAMPLEW.MONO
  74425. ><EWM.EXAMPLEW.MONO>public class MyApplet extends Applet {</EWM.EXAMPLEW.MONO
  74426. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  74427. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  74428. ><EWM.EXAMPLEW.MONO>    // Constructors</EWM.EXAMPLEW.MONO
  74429. ><EWM.EXAMPLEW.MONO>    public MyApplet() {</EWM.EXAMPLEW.MONO
  74430. ><EWM.EXAMPLEW.MONO>        // Start user code section</EWM.EXAMPLEW.MONO
  74431. ><EWM.EXAMPLEW.MONO>        // End user code section</EWM.EXAMPLEW.MONO
  74432. ><EWM.EXAMPLEW.MONO>    } // default constructor MyApplet</EWM.EXAMPLEW.MONO
  74433. ><EWM.EXAMPLEW.MONO>    // Methods</EWM.EXAMPLEW.MONO
  74434. ><EWM.EXAMPLEW.MONO>    public void paint(Graphics g) {</EWM.EXAMPLEW.MONO
  74435. ><EWM.EXAMPLEW.MONO><CX5FX5FBULLET.EMPHASIS>&rbwtab;g.drawString (“Hello World”, 50, 25)</CX5FX5FBULLET.EMPHASIS
  74436. >;</EWM.EXAMPLEW.MONO
  74437. ><EWM.EXAMPLEW.MONO>    } // method paint &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  74438. ><EWM.EXAMPLEW.MONO>    // Do not delete this line &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  74439. ><EWM.EXAMPLEW.MONO>    // Attribute accessors</EWM.EXAMPLEW.MONO
  74440. ><EWM.EXAMPLEW.MONO>    // Association accessors</EWM.EXAMPLEW.MONO
  74441. ><EWM.EXAMPLEW.MONO>} // class MyApplet</EWM.EXAMPLEW.MONO
  74442. ><EWM.EXAMPLEW.MONO>// Do not delete this line &truehy;&truehy; End Class Declarations</EWM.EXAMPLEW.MONO
  74443. ></LABEL
  74444. ></SUBSECTION
  74445. ></SECTION
  74446. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="39005"></RBW-ANCHOR
  74447. >Compiling and Running Generated Files</S.SECTION.HEAD
  74448. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74449. >Prerequisites</L.LABEL
  74450. ><B.BODY>To compile and run the generated .java files, you must do the following:</B.BODY
  74451. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74452. ></RBW-AUTOGEN
  74453. ></RBW-MARKER
  74454. ><RBW-PARABODY>Make sure that the environment is properly configured for Java. see <RBW-XREF REFID="27027" TYPE="XREF-TEXTCOPY">Configuring the Java Environment</RBW-XREF
  74455. >.</RBW-PARABODY
  74456. ></LB.LIST.BULLET
  74457. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74458. ></RBW-AUTOGEN
  74459. ></RBW-MARKER
  74460. ><RBW-PARABODY>Obtain the source code files. See <RBW-XREF REFID="24771" TYPE="XREF-TEXTCOPY">Importing the OOPL Model</RBW-XREF
  74461. >.</RBW-PARABODY
  74462. ></LB.LIST.BULLET
  74463. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74464. ></RBW-AUTOGEN
  74465. ></RBW-MARKER
  74466. ><RBW-PARABODY>Completely define all procedural code. See <RBW-XREF REFID="25511" TYPE="XREF-TEXTCOPY">Editing Generated Source Files</RBW-XREF
  74467. >.</RBW-PARABODY
  74468. ></LB.LIST.BULLET
  74469. ></LABEL
  74470. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74471. ><RBW-IDXTERM TERM1="code" TERM2="compiling"></RBW-IDXTERM
  74472. ><RBW-IDXTERM TERM1="application" TERM2="compiling"></RBW-IDXTERM
  74473. ><RBW-IDXTERM TERM1="applet" TERM2="compiling"></RBW-IDXTERM
  74474. ><RBW-IDXTERM TERM1="compiling"></RBW-IDXTERM
  74475. >How to compile a file</L.LABEL
  74476. ><B.BODY>You can compile one selected file or all files in a system.</B.BODY
  74477. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74478. ></RBW-AUTOGEN
  74479. ></RBW-MARKER
  74480. ><RBW-PARABODY>To compile a .java file:</RBW-PARABODY
  74481. ></P.PROCEDURE
  74482. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74483. ></RBW-AUTOGEN
  74484. ></RBW-MARKER
  74485. ><RBW-PARABODY>Move to the system level in the Implementation phase.</RBW-PARABODY
  74486. ></LN.LIST.NUM
  74487. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74488. ></RBW-AUTOGEN
  74489. ></RBW-MARKER
  74490. ><RBW-PARABODY>Optionally, select one .java file.</RBW-PARABODY
  74491. ></LN.LIST.NUM
  74492. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  74493. ></RBW-AUTOGEN
  74494. ></RBW-MARKER
  74495. ><RBW-PARABODY>Select one of the following:</RBW-PARABODY
  74496. ></LN.LIST.NUM
  74497. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74498. ></RBW-MARKER
  74499. ><RBW-PARABODY>Target | Compile | All (or Target | Compile | Selected)</RBW-PARABODY
  74500. ></LB2.LIST.BULLET.2
  74501. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74502. ></RBW-MARKER
  74503. ><RBW-PARABODY>Target | Compile With Options | All (or Target | Compile With Options | Selected), and then specify the compiler options in the dialog box that appears</RBW-PARABODY
  74504. ></LB2.LIST.BULLET.2
  74505. ><LR.LIST.RESULT>ObjectTeam opens an execution window and compiles the files.</LR.LIST.RESULT
  74506. ></LABEL
  74507. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74508. >Two ways to run a compiled file</L.LABEL
  74509. ><B.BODY>You can run a compiled file in two ways:</B.BODY
  74510. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74511. ></RBW-AUTOGEN
  74512. ></RBW-MARKER
  74513. ><RBW-PARABODY>As an application (<RBW-XREF REFID="24098" TYPE="XREF-TEXTCOPY">Sample Application</RBW-XREF
  74514. > shows a CD and generated code for a simple application)</RBW-PARABODY
  74515. ></LB.LIST.BULLET
  74516. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74517. ></RBW-AUTOGEN
  74518. ></RBW-MARKER
  74519. ><RBW-PARABODY>As a Java applet (<RBW-XREF REFID="30089" TYPE="XREF-TEXTCOPY">Sample Applet</RBW-XREF
  74520. > shows a CD and generated code for a simple applet)</RBW-PARABODY
  74521. ></LB.LIST.BULLET
  74522. ></LABEL
  74523. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74524. >How to run an application</L.LABEL
  74525. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74526. ></RBW-AUTOGEN
  74527. ></RBW-MARKER
  74528. ><RBW-PARABODY><RBW-IDXTERM TERM1="application" TERM2="running"></RBW-IDXTERM
  74529. ><RBW-IDXTERM TERM1="running" TERM2="an application"></RBW-IDXTERM
  74530. >To run an application:</RBW-PARABODY
  74531. ></P.PROCEDURE
  74532. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74533. ></RBW-AUTOGEN
  74534. ></RBW-MARKER
  74535. ><RBW-PARABODY>Select the compiled .java file in the information area.</RBW-PARABODY
  74536. ></LN.LIST.NUM
  74537. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74538. ></RBW-AUTOGEN
  74539. ></RBW-MARKER
  74540. ><RBW-PARABODY>Select Target | Run | Application.</RBW-PARABODY
  74541. ></LN.LIST.NUM
  74542. ><LR.LIST.RESULT>ObjectTeam opens an execution window and runs the file.</LR.LIST.RESULT
  74543. ></LABEL
  74544. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74545. >How to run an applet</L.LABEL
  74546. ><B.BODY><RBW-IDXTERM TERM1="applet" TERM2="running"></RBW-IDXTERM
  74547. ><RBW-IDXTERM TERM1="running" TERM2="an applet"></RBW-IDXTERM
  74548. ><RBW-IDXTERM TERM1="example.html" TERM2="editing"></RBW-IDXTERM
  74549. >To run an applet, you edit and run the file example.html provided with ObjectTeam. (This file is copied into your user environment when you configure your ObjectTeam environment for Java, as described in <RBW-XREF REFID="27027" TYPE="XREF-TEXTCOPY">Configuring the Java Environment</RBW-XREF
  74550. >.)</B.BODY
  74551. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74552. ></RBW-AUTOGEN
  74553. ></RBW-MARKER
  74554. ><RBW-PARABODY>To run an applet:</RBW-PARABODY
  74555. ></P.PROCEDURE
  74556. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74557. ></RBW-AUTOGEN
  74558. ></RBW-MARKER
  74559. ><RBW-PARABODY>In the Implementation phase, move to the system that contains your compiled Java file.</RBW-PARABODY
  74560. ></LN.LIST.NUM
  74561. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74562. ></RBW-AUTOGEN
  74563. ></RBW-MARKER
  74564. ><RBW-PARABODY>Select File | New | External File Version.</RBW-PARABODY
  74565. ></LN.LIST.NUM
  74566. ><LR.LIST.RESULT>The New External File Version dialog box appears.</LR.LIST.RESULT
  74567. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  74568. ></RBW-AUTOGEN
  74569. ></RBW-MARKER
  74570. ><RBW-PARABODY>Select html from the Type list, type <CX5FX5FINPUT>example</CX5FX5FINPUT
  74571. > in the Name field, and then click OK.</RBW-PARABODY
  74572. ></LN.LIST.NUM
  74573. ><LR.LIST.RESULT>ObjectTeam imports example.html into your system and displays it in the Information area of the Browser.</LR.LIST.RESULT
  74574. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  74575. ></RBW-AUTOGEN
  74576. ></RBW-MARKER
  74577. ><RBW-PARABODY>Edit example.html:</RBW-PARABODY
  74578. ></LN.LIST.NUM
  74579. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  74580. ></RBW-AUTOGEN
  74581. ></RBW-MARKER
  74582. ><RBW-PARABODY>Double&truehy;click the file to open it in your default editor.</RBW-PARABODY
  74583. ></LN2.LIST.NUM.2
  74584. ><T3.TIP.3><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  74585. ></RBW-AUTOGEN
  74586. >If the file is empty, you may have forgotten to configure your Java environment for this system. See the instructions in <RBW-XREF REFID="27027" TYPE="XREF-TEXTCOPY">Configuring the Java Environment</RBW-XREF
  74587. >.</T3.TIP.3
  74588. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  74589. ></RBW-AUTOGEN
  74590. ></RBW-MARKER
  74591. ><RBW-PARABODY>Edit the following line to specify the name of the class that is in the compiled Java file (a compiled .java file is a .class file).</RBW-PARABODY
  74592. ></LN2.LIST.NUM.2
  74593. ><E.EXAMPLE><APPLET CODE=”<CX5FX5FTERM>classname</CX5FX5FTERM
  74594. >.class” WIDTH=230 HEIGHT=190></APPLET></E.EXAMPLE
  74595. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  74596. ></RBW-AUTOGEN
  74597. ></RBW-MARKER
  74598. ><RBW-PARABODY>Save the file example.html and close the editor.</RBW-PARABODY
  74599. ></LN2.LIST.NUM.2
  74600. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  74601. ></RBW-AUTOGEN
  74602. ></RBW-MARKER
  74603. ><RBW-PARABODY>Select the edited file <CX5FX5FFILE.NAME>example.html</CX5FX5FFILE.NAME
  74604. >.</RBW-PARABODY
  74605. ></LN.LIST.NUM
  74606. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  74607. ></RBW-AUTOGEN
  74608. ></RBW-MARKER
  74609. ><RBW-PARABODY>Select Target | Run | Applet Viewer. </RBW-PARABODY
  74610. ></LN.LIST.NUM
  74611. ><LR.LIST.RESULT>ObjectTeam opens an execution window and starts the appletviewer with the selected html file, which runs your compiled .java file.</LR.LIST.RESULT
  74612. ></LABEL
  74613. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74614. >Sample example.html file</L.LABEL
  74615. ><B.BODY>Following is the text of the file example.html. The highlighted text shows the changes you would make.</B.BODY
  74616. ><EW.EXAMPLEW><HTML></EW.EXAMPLEW
  74617. ><EW.EXAMPLEW><HEAD></EW.EXAMPLEW
  74618. ><EW.EXAMPLEW><TITLE> A simple program </TITLE></EW.EXAMPLEW
  74619. ><EW.EXAMPLEW></HEAD></EW.EXAMPLEW
  74620. ><EW.EXAMPLEW><BODY></EW.EXAMPLEW
  74621. ><EW.EXAMPLEW></EW.EXAMPLEW
  74622. ><EW.EXAMPLEW><APPLET CODE=”<CX5FX5FFILE.NAME>MyApplet</CX5FX5FFILE.NAME
  74623. >.class” WIDTH=230 HEIGHT=190></APPLET></EW.EXAMPLEW
  74624. ><EW.EXAMPLEW></EW.EXAMPLEW
  74625. ><EW.EXAMPLEW></BODY></EW.EXAMPLEW
  74626. ><EW.EXAMPLEW></HTML></EW.EXAMPLEW
  74627. ></LABEL
  74628. ></SECTION
  74629. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12832"></RBW-ANCHOR
  74630. >Regenerating Code<RBW-IDXTERM TERM1="code" TERM2="regenerating"></RBW-IDXTERM
  74631. ><RBW-IDXTERM TERM1="regenerating code"></RBW-IDXTERM
  74632. ></S.SECTION.HEAD
  74633. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74634. >Design changes and code changes</L.LABEL
  74635. ><B.BODY>ObjectTeam supports incremental development. You can generate code from your models, edit that code, and regenerate the code without losing your changes. You can work with models during design and with code during implementation, shifting your focus between the two as necessary.</B.BODY
  74636. ><B.BODY>It is important that you make changes where appropriate.</B.BODY
  74637. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74638. ></RBW-AUTOGEN
  74639. ></RBW-MARKER
  74640. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the code</CX5FX5FBULLET.EMPHASIS
  74641. > when you are adding code that is not generated by ObjectTeam (for example, method bodies) or when you are making local changes to the code (for example, adding a missing attribute or operation to a class).</RBW-PARABODY
  74642. ></LB.LIST.BULLET
  74643. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74644. ></RBW-AUTOGEN
  74645. ></RBW-MARKER
  74646. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the model</CX5FX5FBULLET.EMPHASIS
  74647. > when you are changing the structure of the model (for example, changing the class hierarchy or class associations) or when you are making global changes to the code (for example, changing the name of a class, attribute, or operation).</RBW-PARABODY
  74648. ></LB.LIST.BULLET
  74649. ></LABEL
  74650. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74651. >Editing generated files</L.LABEL
  74652. ><B.BODY>The generated Java files are framework files that need some additions before they can be compiled and run. Comments in the file indicate where to add code, as described in <RBW-XREF REFID="25511" TYPE="XREF-TEXTCOPY">Editing Generated Source Files</RBW-XREF
  74653. >. When you regenerate a Java file, the code generator transfers the user&truehy;edited sections from the old file to the newly generated file. </B.BODY
  74654. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  74655. ></RBW-AUTOGEN
  74656. >The code generator preserves only the comment&truehy;delimited areas of the generated Java file. Changes you make to other areas of the generated Java file are lost when you regenerate the file.</N.NOTE
  74657. ></LABEL
  74658. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74659. >Editing the ObjectTeam model</L.LABEL
  74660. ><B.BODY><RBW-IDXTERM TERM1="obsolete code"></RBW-IDXTERM
  74661. ><RBW-IDXTERM TERM1="code" TERM2="obsolete"></RBW-IDXTERM
  74662. >If you modify the ObjectTeam model, you typically regenerate the Java source files. As described above, regenerating the files preserves your changes to the original file.</B.BODY
  74663. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74664. >Obsolete code sections</SL.SUBLABEL
  74665. ><B.BODY>If you rename, delete, or change the signature of an operation in the model, the matching method in the generated Java file is no longer correct. When you regenerate the file, ObjectTeam displays a message warning you that the method is being moved to the obsolete code section. It then appends the original method to the end of the generated file, as shown in the following example:</B.BODY
  74666. ><EW.EXAMPLEW>// Start obsolete code section &truehy;&truehy; Remove this line</EW.EXAMPLEW
  74667. ><EW.EXAMPLEW>    public void paint(Graphics g) {</EW.EXAMPLEW
  74668. ><EW.EXAMPLEW>    &rbwtab;g.drawString(“Hello World”, 50, 25);</EW.EXAMPLEW
  74669. ><EW.EXAMPLEW>    } // method paint</EW.EXAMPLEW
  74670. ><EW.EXAMPLEW>// End obsolete code section &truehy;&truehy; Remove this line</EW.EXAMPLEW
  74671. ></LABEL
  74672. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74673. >How to regenerate source code files</L.LABEL
  74674. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  74675. ></RBW-AUTOGEN
  74676. >You must remove obsolete code sections before you can regenerate the file.</W.WARNING
  74677. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74678. ></RBW-AUTOGEN
  74679. ></RBW-MARKER
  74680. ><RBW-PARABODY>To regenerate one or more Java files:</RBW-PARABODY
  74681. ></P.PROCEDURE
  74682. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74683. ></RBW-AUTOGEN
  74684. ></RBW-MARKER
  74685. ><RBW-PARABODY>In the Implementation phase, move to the system that contains the files that you want to regenerate.</RBW-PARABODY
  74686. ></LN.LIST.NUM
  74687. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74688. ></RBW-AUTOGEN
  74689. ></RBW-MARKER
  74690. ><RBW-PARABODY>Select the files.</RBW-PARABODY
  74691. ></LN.LIST.NUM
  74692. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  74693. ></RBW-AUTOGEN
  74694. ></RBW-MARKER
  74695. ><RBW-PARABODY>Select Utilities | Generate Java | Selected.</RBW-PARABODY
  74696. ></LN.LIST.NUM
  74697. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window to display log messages, and then imports the files.</LR.LIST.RESULT
  74698. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74699. >For more information</SL.SUBLABEL
  74700. ><B.BODY>See <RBW-XREF REFID="22683" TYPE="XREF-TEXTCOPY">Generating Java Source Files</RBW-XREF
  74701. > for more information about the Utilities | Generate Java command.</B.BODY
  74702. ><B.BODY></B.BODY
  74703. ><RBWAUTO-0001></RBWAUTO-0001
  74704. ><!--
  74705.  
  74706.  
  74707.  
  74708.  
  74709.  
  74710. CONVERTING SOURCE FILE ../../sources/java/javagen.fm5.mif
  74711.  
  74712.  
  74713. --><B.BODY></B.BODY
  74714. ><B.BODY></B.BODY
  74715. ><B.BODY></B.BODY
  74716. ><B.BODY></B.BODY
  74717. ><B.BODY></B.BODY
  74718. ></LABEL
  74719. ></SECTION
  74720. ></CHAPTER
  74721. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  74722. ></RBW-AUTOGEN
  74723. >Mapping <RBW-ANCHOR ID="10890"></RBW-ANCHOR
  74724. >Modeling Data to Java<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  74725. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Java</RBW-TEXTFLD
  74726. ></RBW-SYSOBJ
  74727. ></C.CHAPTER.HEAD
  74728. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74729. >Introduction</L.LABEL
  74730. ><B.BODY>This chapter describes how ObjectTeam model information maps to Java code. It provides examples of CDs and the results produced when you generate Java code.</B.BODY
  74731. ></LABEL
  74732. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74733. >In this chapter</L.LABEL
  74734. ><B.BODY>This chapter contains the following sections:</B.BODY
  74735. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  74736. ></ENTRY
  74737. ></RBW-ROW
  74738. ></THEAD
  74739. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26371" TYPE="XREF-TEXTCOPY">Mapping Classes&rbwtab;3–2</RBW-XREF
  74740. ></SB.SECTION.BLOCK.TABLE
  74741. ></ENTRY
  74742. ></RBW-ROW
  74743. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26809" TYPE="XREF-TEXTCOPY">Mapping Attributes&rbwtab;3–14</RBW-XREF
  74744. ></SB.SECTION.BLOCK.TABLE
  74745. ></ENTRY
  74746. ></RBW-ROW
  74747. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31230" TYPE="XREF-TEXTCOPY">Mapping Operations&rbwtab;3–23</RBW-XREF
  74748. ></SB.SECTION.BLOCK.TABLE
  74749. ></ENTRY
  74750. ></RBW-ROW
  74751. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12952" TYPE="XREF-TEXTCOPY">Mapping Inheritance&rbwtab;3–34</RBW-XREF
  74752. ></SB.SECTION.BLOCK.TABLE
  74753. ></ENTRY
  74754. ></RBW-ROW
  74755. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21032" TYPE="XREF-TEXTCOPY">Mapping Associations&rbwtab;3–39</RBW-XREF
  74756. ></SB.SECTION.BLOCK.TABLE
  74757. ></ENTRY
  74758. ></RBW-ROW
  74759. ></TBODY
  74760. ></TGROUP
  74761. ></RBW-TABLE
  74762. ></LABEL
  74763. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26371"></RBW-ANCHOR
  74764. >Mapping Classes</S.SECTION.HEAD
  74765. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74766. >Introduction</L.LABEL
  74767. ><B.BODY>An ObjectTeam class symbol represents a compilation unit and declares a class. The class is also used to map a Java class or interface. The attributes of the class map to the Java class variables or instance variables. The operations of the class map to Java methods.</B.BODY
  74768. ></LABEL
  74769. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74770. >.java files</L.LABEL
  74771. ><B.BODY>You can use ObjectTeam class properties to determine the program structure of the generated Java code. By default, when you import your object designs into the Implementation phase, the Java code generator produces a separate classname.java file for each class symbol that you define in a CD. It then lists these files under the Type heading in the information area of the Browser.</B.BODY
  74772. ><B.BODY>You can repackage the Java code into a smaller number of files, combining code for several classes into a single file. To do so, set the appropriate class properties, as described in <RBW-XREF REFID="38413" TYPE="XREF-TEXTCOPY">Defining Java Program Structure</RBW-XREF
  74773. >.</B.BODY
  74774. ></LABEL
  74775. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74776. >Constructors</L.LABEL
  74777. ><B.BODY>Generated Java classes can have one or more constructors. By default, each generated Java class includes a default constructor.</B.BODY
  74778. ></LABEL
  74779. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74780. >Class properties</L.LABEL
  74781. ><B.BODY>You use class properties to provide input to the code generator. This section describes how to edit class properties and the effect of each property.</B.BODY
  74782. ></LABEL
  74783. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74784. >In this section</L.LABEL
  74785. ><B.BODY>This section contains the following topics:</B.BODY
  74786. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  74787. ></ENTRY
  74788. ></RBW-ROW
  74789. ></THEAD
  74790. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29176" TYPE="XREF-TEXTCOPY">Generating Class Constructors&rbwtab;3–3</RBW-XREF
  74791. ></SB.SECTION.BLOCK.TABLE
  74792. ></ENTRY
  74793. ></RBW-ROW
  74794. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21544" TYPE="XREF-TEXTCOPY">Editing Class Properties&rbwtab;3–5</RBW-XREF
  74795. ></SB.SECTION.BLOCK.TABLE
  74796. ></ENTRY
  74797. ></RBW-ROW
  74798. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20849" TYPE="XREF-TEXTCOPY">Specifying Comments&rbwtab;3–6</RBW-XREF
  74799. ></SB.SECTION.BLOCK.TABLE
  74800. ></ENTRY
  74801. ></RBW-ROW
  74802. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17596" TYPE="XREF-TEXTCOPY">Specifying Class or Interface Generation&rbwtab;3–7</RBW-XREF
  74803. ></SB.SECTION.BLOCK.TABLE
  74804. ></ENTRY
  74805. ></RBW-ROW
  74806. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32402" TYPE="XREF-TEXTCOPY">Specifying Access Properties&rbwtab;3–8</RBW-XREF
  74807. ></SB.SECTION.BLOCK.TABLE
  74808. ></ENTRY
  74809. ></RBW-ROW
  74810. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33315" TYPE="XREF-TEXTCOPY">Specifying Modifiers&rbwtab;3–9</RBW-XREF
  74811. ></SB.SECTION.BLOCK.TABLE
  74812. ></ENTRY
  74813. ></RBW-ROW
  74814. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38413" TYPE="XREF-TEXTCOPY">Defining Java Program Structure&rbwtab;3–11</RBW-XREF
  74815. ></SB.SECTION.BLOCK.TABLE
  74816. ></ENTRY
  74817. ></RBW-ROW
  74818. ></TBODY
  74819. ></TGROUP
  74820. ></RBW-TABLE
  74821. ></LABEL
  74822. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29176"></RBW-ANCHOR
  74823. >Generating Class Constructors</SS.SUBSEC.HEAD
  74824. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74825. >Three ways to generate</L.LABEL
  74826. ><B.BODY><RBW-IDXTERM TERM1="class" TERM2="constructor"></RBW-IDXTERM
  74827. ><RBW-IDXTERM TERM1="constructor" TERM2="generating"></RBW-IDXTERM
  74828. ><RBW-IDXTERM TERM1="method" TERM2="constructor"></RBW-IDXTERM
  74829. ><RBW-IDXTERM TERM1="$create() operation"></RBW-IDXTERM
  74830. ><RBW-IDXTERM TERM1="$create() operation"></RBW-IDXTERM
  74831. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  74832. ><RBW-IDXTERM TERM1="Java, generated" TERM2="constructor"></RBW-IDXTERM
  74833. >When you map an ObjectTeam class to a Java class, you also need a constructor for the class. You can generate a class constructor in the following ways:</B.BODY
  74834. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74835. ></RBW-AUTOGEN
  74836. ></RBW-MARKER
  74837. ><RBW-PARABODY>Leave out a $create operation on the ObjectTeam class. The code generator creates a default constructor for the class.</RBW-PARABODY
  74838. ></LB.LIST.BULLET
  74839. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74840. ></RBW-AUTOGEN
  74841. ></RBW-MARKER
  74842. ><RBW-PARABODY>Specify a $create operation without parentheses or parameters. The code generator creates a default constructor for the class. (This is useful if you want to generate both a default constructor and one or more user&truehy;defined constructors for a class.)</RBW-PARABODY
  74843. ></LB.LIST.BULLET
  74844. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74845. ></RBW-AUTOGEN
  74846. ></RBW-MARKER
  74847. ><RBW-PARABODY>Specify a $create operation with parameters of your choice. The code generator creates a user&truehy;defined constructor for the class.</RBW-PARABODY
  74848. ></LB.LIST.BULLET
  74849. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  74850. ></RBW-AUTOGEN
  74851. ><RBW-XREF REFID="31230" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  74852. > describes code generation for operations other than $create.</N.NOTE
  74853. ></LABEL
  74854. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74855. >Parameter list</L.LABEL
  74856. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74857. >Default constructor</SL.SUBLABEL
  74858. ><B.BODY>If a class has no $create operation or has a $create operation without parentheses or parameters, the code generator creates a default constructor. The parameter list of the default constructor contains the following:</B.BODY
  74859. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74860. ></RBW-MARKER
  74861. ><RBW-PARABODY>All key attributes (attributes prefixed with an asterisk (*)).</RBW-PARABODY
  74862. ></LB2.LIST.BULLET.2
  74863. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74864. ></RBW-MARKER
  74865. ><RBW-PARABODY>The association attribute of each association that has, at the far end, a multiplicity of exactly one and a role name.</RBW-PARABODY
  74866. ></LB2.LIST.BULLET.2
  74867. ><N3.NOTE.3><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  74868. ></RBW-AUTOGEN
  74869. >If the association has a qualifier at the far end, and both ends of the association have role names, the qualifier is also included in the parameter list. See the examples.</N3.NOTE.3
  74870. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74871. >User&truehy;defined constructor</SL.SUBLABEL
  74872. ><B.BODY>If a class has a $create operation that includes a parameter list, the code generator creates a user&truehy;defined constructor even if the parameter list is empty. The parameter list of a user&truehy;defined constructor is the one specified for the $create operation.</B.BODY
  74873. ></LABEL
  74874. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74875. >Example</L.LABEL
  74876. ><BI.BODY.INTRO>The following code excerpt shows a default constructor and a user&truehy;defined constructor.</BI.BODY.INTRO
  74877. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00676.unk" origfile="pics/acct.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  74878. ></FA.FIGURE.ANCHOR
  74879. ><EM.EXAMPLE.MONO>public class Account extends Object {</EM.EXAMPLE.MONO
  74880. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  74881. ><EM.EXAMPLE.MONO>// Default constructor</EM.EXAMPLE.MONO
  74882. ><EM.EXAMPLE.MONO>public Account() {</EM.EXAMPLE.MONO
  74883. ><EM.EXAMPLE.MONO>        // Start user code section</EM.EXAMPLE.MONO
  74884. ><EM.EXAMPLE.MONO>        // End user code section</EM.EXAMPLE.MONO
  74885. ><EM.EXAMPLE.MONO>    } // default constructor Account</EM.EXAMPLE.MONO
  74886. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  74887. ><EM.EXAMPLE.MONO>// User defined constructors</EM.EXAMPLE.MONO
  74888. ><EM.EXAMPLE.MONO>public Account(int enable) {</EM.EXAMPLE.MONO
  74889. ><EM.EXAMPLE.MONO>    } // user constructor Account</EM.EXAMPLE.MONO
  74890. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  74891. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  74892. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  74893. ></LABEL
  74894. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74895. >typedef and generic typedef class</L.LABEL
  74896. ><B.BODY><RBW-IDXTERM TERM1="constructor" TERM2="not generated"></RBW-IDXTERM
  74897. ><RBW-IDXTERM TERM1="typedef class"></RBW-IDXTERM
  74898. ><RBW-IDXTERM TERM1="generic typedef class"></RBW-IDXTERM
  74899. >The ObjectTeam OOPL model supports typedef and generic typedef classes for C++ code generation:</B.BODY
  74900. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74901. ></RBW-AUTOGEN
  74902. ></RBW-MARKER
  74903. ><RBW-PARABODY>A typedef class is any ObjectTeam class that has exactly one attribute, no associations that generate code, no operations, and no superclasses.</RBW-PARABODY
  74904. ></LB.LIST.BULLET
  74905. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74906. ></RBW-AUTOGEN
  74907. ></RBW-MARKER
  74908. ><RBW-PARABODY>A generic typedef class is any ObjectTeam class that has exactly one association that generates code, no data attributes, no operations, no superclasses, and no subclasses.</RBW-PARABODY
  74909. ></LB.LIST.BULLET
  74910. ><B.BODY>The Java code generator does not automatically generate a default constructor for typedef and generic typedef classes. To generate a default constructor for such a class, add a $create() operation to the class.</B.BODY
  74911. ></LABEL
  74912. ></SUBSECTION
  74913. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21544"></RBW-ANCHOR
  74914. >Editing Class Properties</SS.SUBSEC.HEAD
  74915. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74916. >Introduction</L.LABEL
  74917. ><B.BODY>In the Object Design phase, you define properties of a class that control its implementation and accessibility within its own Java package. The code generated for a class is based on its properties. </B.BODY
  74918. ></LABEL
  74919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74920. >How to edit class properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for class"></RBW-IDXTERM
  74921. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  74922. ><RBW-IDXTERM TERM1="class property" TERM2="editing"></RBW-IDXTERM
  74923. ></L.LABEL
  74924. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  74925. ></RBW-AUTOGEN
  74926. ></RBW-MARKER
  74927. ><RBW-PARABODY>To edit properties of a class:</RBW-PARABODY
  74928. ></P.PROCEDURE
  74929. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  74930. ></RBW-AUTOGEN
  74931. ></RBW-MARKER
  74932. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  74933. ></LN.LIST.NUM
  74934. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  74935. ></RBW-AUTOGEN
  74936. ></RBW-MARKER
  74937. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  74938. ></LN.LIST.NUM
  74939. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  74940. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  74941. ></RBW-AUTOGEN
  74942. ></RBW-MARKER
  74943. ><RBW-PARABODY>Select the class name.</RBW-PARABODY
  74944. ></LN.LIST.NUM
  74945. ><LR.LIST.RESULT>The class properties appear on the right side of the dialog box.</LR.LIST.RESULT
  74946. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00677.unk" origfile="pics/prptext.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  74947. ></FA2.FIGURE.ANCHOR.2
  74948. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  74949. ></RBW-AUTOGEN
  74950. ></RBW-MARKER
  74951. ><RBW-PARABODY>Select the desired properties. (The following subsections describe each property in greater detail.)</RBW-PARABODY
  74952. ></LN.LIST.NUM
  74953. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74954. ></RBW-MARKER
  74955. ><RBW-PARABODY>Use the Text tab to insert comments in the generated code.</RBW-PARABODY
  74956. ></LB2.LIST.BULLET.2
  74957. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74958. ></RBW-MARKER
  74959. ><RBW-PARABODY>Use the Class or Interface box on the Class tab to specify whether the class maps to Java class or interface, or whether the code generator should ignore it.</RBW-PARABODY
  74960. ></LB2.LIST.BULLET.2
  74961. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74962. ></RBW-MARKER
  74963. ><RBW-PARABODY>Use the Access box on the Class tab to specify whether the class is public.</RBW-PARABODY
  74964. ></LB2.LIST.BULLET.2
  74965. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74966. ></RBW-MARKER
  74967. ><RBW-PARABODY>Use the Modifier field of the Class tab specify modifiers that affect the behavior of the class.</RBW-PARABODY
  74968. ></LB2.LIST.BULLET.2
  74969. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  74970. ></RBW-MARKER
  74971. ><RBW-PARABODY>Use the Package tab to define the program structure of the generated Java code.</RBW-PARABODY
  74972. ></LB2.LIST.BULLET.2
  74973. ></LABEL
  74974. ></SUBSECTION
  74975. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20849"></RBW-ANCHOR
  74976. >Specifying Comments</SS.SUBSEC.HEAD
  74977. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74978. >Introduction</L.LABEL
  74979. ><B.BODY><RBW-IDXTERM TERM1="comment" TERM2="for class"></RBW-IDXTERM
  74980. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  74981. ><RBW-IDXTERM TERM1="class property" TERM2="for comment"></RBW-IDXTERM
  74982. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  74983. ><RBW-IDXTERM TERM1="Java, generated" TERM2="comment, for class or interface"></RBW-IDXTERM
  74984. ><RBW-IDXTERM TERM1="comment" TERM2="for interface"></RBW-IDXTERM
  74985. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  74986. ><RBW-IDXTERM TERM1="interface property" TERM2="for comment"></RBW-IDXTERM
  74987. >Use the Text tab of the Edit Properties dialog box to insert a comment in the generated code. The comment appears immediately before the class or interface declaration.</B.BODY
  74988. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  74989. ></RBW-AUTOGEN
  74990. >If you are not familiar with editing class properties, see <RBW-XREF REFID="21544" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  74991. >.</N.NOTE
  74992. ></LABEL
  74993. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  74994. >Type of comment</L.LABEL
  74995. ><B.BODY>Use the Comment Type box to select the type of comment to insert:</B.BODY
  74996. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  74997. ></RBW-AUTOGEN
  74998. ></RBW-MARKER
  74999. ><RBW-PARABODY>ToEndOfLine (comment begins with //)</RBW-PARABODY
  75000. ></LB.LIST.BULLET
  75001. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75002. ></RBW-AUTOGEN
  75003. ></RBW-MARKER
  75004. ><RBW-PARABODY>Block (comment appears between /* and */)</RBW-PARABODY
  75005. ></LB.LIST.BULLET
  75006. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75007. ></RBW-AUTOGEN
  75008. ></RBW-MARKER
  75009. ><RBW-PARABODY>Document (comment appears between /** and */)</RBW-PARABODY
  75010. ></LB.LIST.BULLET
  75011. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  75012. ></RBW-AUTOGEN
  75013. >You can insert Javadoc tags within a Document type comment to generate HTML documents from Java source code.</N2.NOTE.2
  75014. ></LABEL
  75015. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75016. >Comment text</L.LABEL
  75017. ><B.BODY>Use the Free Text box to enter the text of the comment.</B.BODY
  75018. ></LABEL
  75019. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75020. >Examples</L.LABEL
  75021. ><B.BODY>The code excerpts below show examples of each type of comment.</B.BODY
  75022. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75023. >ToEndOfLine comment example</SL.SUBLABEL
  75024. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  75025. ><EM.EXAMPLE.MONO>// Document Processing Management</EM.EXAMPLE.MONO
  75026. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  75027. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75028. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75029. >Block comment example</SL.SUBLABEL
  75030. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  75031. ><EM.EXAMPLE.MONO>/*</EM.EXAMPLE.MONO
  75032. ><EM.EXAMPLE.MONO>Document Processing Management</EM.EXAMPLE.MONO
  75033. ><EM.EXAMPLE.MONO>*/</EM.EXAMPLE.MONO
  75034. ><EM.EXAMPLE.MONO>public interface Document  {</EM.EXAMPLE.MONO
  75035. ><EM.EXAMPLE.MONO>} // interface Document</EM.EXAMPLE.MONO
  75036. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75037. >Document comment example</SL.SUBLABEL
  75038. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  75039. ><EM.EXAMPLE.MONO>/**</EM.EXAMPLE.MONO
  75040. ><EM.EXAMPLE.MONO>Document Processing Management</EM.EXAMPLE.MONO
  75041. ><EM.EXAMPLE.MONO>*/</EM.EXAMPLE.MONO
  75042. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  75043. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75044. ></LABEL
  75045. ></SUBSECTION
  75046. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17596"></RBW-ANCHOR
  75047. >Specifying Class or Interface Generation</SS.SUBSEC.HEAD
  75048. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75049. >Introduction</L.LABEL
  75050. ><B.BODY><RBW-IDXTERM TERM1="class" TERM2="mapping of"></RBW-IDXTERM
  75051. ><RBW-IDXTERM TERM1="mapping" TERM2="class"></RBW-IDXTERM
  75052. ><RBW-IDXTERM TERM1="interface" TERM2="mapping of"></RBW-IDXTERM
  75053. ><RBW-IDXTERM TERM1="mapping" TERM2="interface"></RBW-IDXTERM
  75054. ><RBW-IDXTERM TERM1="Java, generated" TERM2="class"></RBW-IDXTERM
  75055. ><RBW-IDXTERM TERM1="Java, generated" TERM2="interface"></RBW-IDXTERM
  75056. ><RBW-IDXTERM TERM1="external class"></RBW-IDXTERM
  75057. >Use the Class or Interface box on the Class tab of the Edit Properties dialog box to specify how ObjectTeam maps a class into code:</B.BODY
  75058. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75059. ></RBW-AUTOGEN
  75060. ></RBW-MARKER
  75061. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>External</CX5FX5FBULLET.EMPHASIS
  75062. >. ObjectTeam does not generate code for this class. A class in ObjectTeam represents classes or interfaces that exist outside of the system; for example, the Java Applet class or Runnable interface in the JDK 1.0.</RBW-PARABODY
  75063. ></LB.LIST.BULLET
  75064. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75065. ></RBW-AUTOGEN
  75066. ></RBW-MARKER
  75067. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Class (default)</CX5FX5FBULLET.EMPHASIS
  75068. >. ObjectTeam generates a Java class, which extends the Object class and its implementation. The Object class is the root class from which all other Java classes are derived. Java also uses the extends statement to implement generalization, as described in <RBW-XREF REFID="12952" TYPE="XREF-TEXTCOPY">Mapping Inheritance</RBW-XREF
  75069. >.</RBW-PARABODY
  75070. ></LB.LIST.BULLET
  75071. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75072. ></RBW-AUTOGEN
  75073. ></RBW-MARKER
  75074. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Interface</CX5FX5FBULLET.EMPHASIS
  75075. >. ObjectTeam generates a Java interface, which may extend other interfaces. </RBW-PARABODY
  75076. ></LB.LIST.BULLET
  75077. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  75078. ></RBW-AUTOGEN
  75079. >If you are not familiar with editing class properties, see <RBW-XREF REFID="21544" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  75080. >.</N.NOTE
  75081. ></LABEL
  75082. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75083. >Examples</L.LABEL
  75084. ><B.BODY>The code excerpts below show the Document class generated as a class and as an interface.</B.BODY
  75085. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75086. >Class example</SL.SUBLABEL
  75087. ><B.BODY></B.BODY
  75088. ><EM.EXAMPLE.MONO>public class Document extends Object  {</EM.EXAMPLE.MONO
  75089. ><EM.EXAMPLE.MONO>} //  class Document</EM.EXAMPLE.MONO
  75090. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75091. >Interface example</SL.SUBLABEL
  75092. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  75093. ><EM.EXAMPLE.MONO>public interface Document  {</EM.EXAMPLE.MONO
  75094. ><EM.EXAMPLE.MONO>} //  interface Document</EM.EXAMPLE.MONO
  75095. ></LABEL
  75096. ></SUBSECTION
  75097. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32402"></RBW-ANCHOR
  75098. >Specifying Access Properties</SS.SUBSEC.HEAD
  75099. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75100. >Introduction</L.LABEL
  75101. ><B.BODY>Assign one of the following access properties to a class or an interface using the Access box on the Class tab of the Edit Properties dialog box.</B.BODY
  75102. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75103. ></RBW-AUTOGEN
  75104. ></RBW-MARKER
  75105. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  75106. >. The class or interface can be accessed from other Java packages, either directly or in an Import statement.</RBW-PARABODY
  75107. ></LB.LIST.BULLET
  75108. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75109. ></RBW-AUTOGEN
  75110. ></RBW-MARKER
  75111. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  75112. >. The use of the class or interface is limited to the package in which it is declared.</RBW-PARABODY
  75113. ></LB.LIST.BULLET
  75114. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  75115. ></RBW-AUTOGEN
  75116. >If you are not familiar with editing class properties, see <RBW-XREF REFID="21544" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  75117. >.</N.NOTE
  75118. ></LABEL
  75119. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75120. >Class access examples</L.LABEL
  75121. ><B.BODY><RBW-IDXTERM TERM1="class property" TERM2="access"></RBW-IDXTERM
  75122. ><RBW-IDXTERM TERM1="access property" TERM2="for class"></RBW-IDXTERM
  75123. >The code excerpts below show how this property affects code generation for the Document class (generated as a Java class):</B.BODY
  75124. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75125. >Public</SL.SUBLABEL
  75126. ><B.BODY></B.BODY
  75127. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  75128. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75129. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75130. >None</SL.SUBLABEL
  75131. ><B.BODY></B.BODY
  75132. ><EM.EXAMPLE.MONO>class Document extends Object {</EM.EXAMPLE.MONO
  75133. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75134. ></LABEL
  75135. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75136. >Interface access examples</L.LABEL
  75137. ><B.BODY><RBW-IDXTERM TERM1="interface property" TERM2="access"></RBW-IDXTERM
  75138. ><RBW-IDXTERM TERM1="access property" TERM2="for interface"></RBW-IDXTERM
  75139. >The code excerpts below show how this property affects code generation for the Document class (generated as a Java interface):</B.BODY
  75140. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75141. >Public</SL.SUBLABEL
  75142. ><B.BODY></B.BODY
  75143. ><EM.EXAMPLE.MONO>public interface Document {</EM.EXAMPLE.MONO
  75144. ><EM.EXAMPLE.MONO>} // interface Document</EM.EXAMPLE.MONO
  75145. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75146. >None</SL.SUBLABEL
  75147. ><B.BODY></B.BODY
  75148. ><EM.EXAMPLE.MONO>interface Document {</EM.EXAMPLE.MONO
  75149. ><EM.EXAMPLE.MONO>} // interface Document</EM.EXAMPLE.MONO
  75150. ></LABEL
  75151. ></SUBSECTION
  75152. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33315"></RBW-ANCHOR
  75153. >Specifying Modifiers</SS.SUBSEC.HEAD
  75154. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75155. >Introduction</L.LABEL
  75156. ><B.BODY><RBW-IDXTERM TERM1="class property" TERM2="Final modifier"></RBW-IDXTERM
  75157. ><RBW-IDXTERM TERM1="class property" TERM2="Abstract modifier"></RBW-IDXTERM
  75158. ><RBW-IDXTERM TERM1="modifier property" TERM2="for class"></RBW-IDXTERM
  75159. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75160. ><RBW-IDXTERM TERM1="Final modifier property" TERM2="for class"></RBW-IDXTERM
  75161. ><RBW-IDXTERM TERM1="Abstract modifier property" TERM2="for class"></RBW-IDXTERM
  75162. >Modifier properties alter the behavior of classes. To assign a modifier to a class or an interface, choose one of the values listed below from the Modifier list on the Class tab of the Edit Properties dialog box. (If you are not familiar with editing class properties, see <RBW-XREF REFID="21544" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  75163. >.)</B.BODY
  75164. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75165. ></RBW-AUTOGEN
  75166. ></RBW-MARKER
  75167. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None (default)</CX5FX5FBULLET.EMPHASIS
  75168. >. Defines a concrete class that can have subclasses.</RBW-PARABODY
  75169. ></LB.LIST.BULLET
  75170. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75171. ></RBW-AUTOGEN
  75172. ></RBW-MARKER
  75173. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Final</CX5FX5FBULLET.EMPHASIS
  75174. >. Defines a class that cannot have any immediate subclasses. </RBW-PARABODY
  75175. ></LB.LIST.BULLET
  75176. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  75177. ></RBW-AUTOGEN
  75178. >Interfaces cannot be declared final. If this modifier is specified for an interface, the modifier is ignored.</N2.NOTE.2
  75179. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75180. ></RBW-AUTOGEN
  75181. ></RBW-MARKER
  75182. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Abstract</CX5FX5FBULLET.EMPHASIS
  75183. >. Defines an abstract class or a superclass from which subclasses inherit common characteristics and features.</RBW-PARABODY
  75184. ></LB.LIST.BULLET
  75185. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  75186. ></RBW-AUTOGEN
  75187. >All interfaces are implicitly abstract. You can specify the abstract modifier for interfaces, but are not required to do so.</N2.NOTE.2
  75188. ></LABEL
  75189. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75190. >Class modifier examples</L.LABEL
  75191. ><B.BODY>The code excerpts below show how this property affects code generation for the Document class (generated as a Java class):</B.BODY
  75192. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75193. >None</SL.SUBLABEL
  75194. ><B.BODY></B.BODY
  75195. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  75196. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75197. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75198. >Final </SL.SUBLABEL
  75199. ><B.BODY></B.BODY
  75200. ><EM.EXAMPLE.MONO>public final class Document extends Object {</EM.EXAMPLE.MONO
  75201. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75202. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75203. >Abstract</SL.SUBLABEL
  75204. ><B.BODY></B.BODY
  75205. ><EM.EXAMPLE.MONO>public abstract class Document extends Object {</EM.EXAMPLE.MONO
  75206. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75207. ></LABEL
  75208. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75209. >Interface modifier examples</L.LABEL
  75210. ><B.BODY><RBW-IDXTERM TERM1="interface property" TERM2="Final modifier"></RBW-IDXTERM
  75211. ><RBW-IDXTERM TERM1="interface property" TERM2="Abstract modifier"></RBW-IDXTERM
  75212. ><RBW-IDXTERM TERM1="modifier property" TERM2="for interface"></RBW-IDXTERM
  75213. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75214. ><RBW-IDXTERM TERM1="Final modifier property" TERM2="for interface"></RBW-IDXTERM
  75215. ><RBW-IDXTERM TERM1="Abstract modifier property" TERM2="for interface"></RBW-IDXTERM
  75216. >The code excerpts below show how this property affects code generation for the Document class (generated as a Java interface):</B.BODY
  75217. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75218. >None</SL.SUBLABEL
  75219. ><B.BODY></B.BODY
  75220. ><EM.EXAMPLE.MONO>public interface Document {</EM.EXAMPLE.MONO
  75221. ><EM.EXAMPLE.MONO>} // interface Document</EM.EXAMPLE.MONO
  75222. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75223. >Final </SL.SUBLABEL
  75224. ><B.BODY></B.BODY
  75225. ><EM.EXAMPLE.MONO>public interface Document {</EM.EXAMPLE.MONO
  75226. ><EM.EXAMPLE.MONO>} // interface Document</EM.EXAMPLE.MONO
  75227. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75228. >Abstract</SL.SUBLABEL
  75229. ><B.BODY></B.BODY
  75230. ><EM.EXAMPLE.MONO>public abstract interface Document {</EM.EXAMPLE.MONO
  75231. ><EM.EXAMPLE.MONO>} // interface Document</EM.EXAMPLE.MONO
  75232. ></LABEL
  75233. ></SUBSECTION
  75234. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38413"></RBW-ANCHOR
  75235. >Defining Java Program Structure</SS.SUBSEC.HEAD
  75236. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75237. >Program structure</L.LABEL
  75238. ><B.BODY><RBW-IDXTERM TERM1="compilation unit"></RBW-IDXTERM
  75239. ><RBW-IDXTERM TERM1="class" TERM2="compilation unit"></RBW-IDXTERM
  75240. >Java uses packages to organize collections of classes that work as a unit to perform a service. A package is the highest level of the Java program structure, followed by one or more compilation units (a collection of classes, one of which must be public), followed by class at the lowest level of the structure.</B.BODY
  75241. ><B.BODY>A compilation unit must contain one class declaration that is accessible publicly. A compilation unit may contain other class declarations that are not public and that have file scope only. For each ObjectTeam class symbol, one compilation unit that has public accessibility is generated. </B.BODY
  75242. ></LABEL
  75243. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75244. >Package fields</L.LABEL
  75245. ><B.BODY><RBW-IDXTERM TERM1="class" TERM2="packaging of"></RBW-IDXTERM
  75246. ><RBW-IDXTERM TERM1="class property" TERM2="package"></RBW-IDXTERM
  75247. ><RBW-IDXTERM TERM1="code" TERM2="packaging"></RBW-IDXTERM
  75248. >Use the following fields on the Package tab on the Edit Properties dialog box to define the Java program structure. (If you are not familiar with editing class properties, see <RBW-XREF REFID="21544" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  75249. >.)</B.BODY
  75250. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75251. ></RBW-AUTOGEN
  75252. ></RBW-MARKER
  75253. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1=".java file"></RBW-IDXTERM
  75254. >Source File</CX5FX5FBULLET.EMPHASIS
  75255. >. If this field is empty or contains the name of the current class, the generated code for this class is written to the source file classname.java, where classname is the name of the current class.</RBW-PARABODY
  75256. ></LB.LIST.BULLET
  75257. ><LT.LIST.TEXT>If this field contains a class name other than the name of the current class, the generated code for this class is written to the source file classname.java, where classname is the name specified in this field. This allows you to include the generated code for multiple classes in a single compilation unit (a single Java source file). </LT.LIST.TEXT
  75258. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75259. ></RBW-AUTOGEN
  75260. ></RBW-MARKER
  75261. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="package statement, in Java"></RBW-IDXTERM
  75262. ><RBW-IDXTERM TERM1="Java, generated" TERM2="package statement"></RBW-IDXTERM
  75263. >Package Statement</CX5FX5FBULLET.EMPHASIS
  75264. >. If this box contains a text string, the generated code for this class includes a package statement.</RBW-PARABODY
  75265. ></LB.LIST.BULLET
  75266. ><EM.EXAMPLE.MONO>package <CX5FX5FTERM>text&truehy;string</CX5FX5FTERM
  75267. >;</EM.EXAMPLE.MONO
  75268. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  75269. ></RBW-AUTOGEN
  75270. >The Import Packages, Import Types, and Import On&truehy;Demands properties are obsolete. They are provided for compatibility with previous releases, as described in <RBW-XREF REFID="10552" TYPE="XREF-TEXTCOPY">Obsolete boxes</RBW-XREF
  75271. >.</N.NOTE
  75272. ></LABEL
  75273. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75274. >Import statements</L.LABEL
  75275. ><B.BODY>The Java code generator also uses the Package Statement property to generate the required Import statements for the generated .java file. </B.BODY
  75276. ><B.BODY>When generating a .java file for the current class, the code generator checks the Package Statement property of each external class (or interface) that is used directly by the current class. If the Package Statement of the external class contains a text string, the code generator uses that text string to generate an Import statement in the .java file of the current class. If the Package Statement of the external class does not contain a text string, no Import statement is generated.</B.BODY
  75277. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75278. >Reverse engineering</SL.SUBLABEL
  75279. ><B.BODY>Reverse engineering populates the Package Statement property of the classes that it creates. If you use the following technique, ObjectTeam generates most of the Import statements that you need:</B.BODY
  75280. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  75281. ></RBW-AUTOGEN
  75282. ></RBW-MARKER
  75283. ><RBW-PARABODY>Create an ObjectTeam system for each Java package that you need. Use reverse engineering, as described in <RBW-XREF REFID="26044" TYPE="XREF-TEXTCOPY">Reverse Engineering</RBW-XREF
  75284. >, to populate the ObjectTeam system with the classes defined in the Java package.</RBW-PARABODY
  75285. ></LN.LIST.NUM
  75286. ><LR.LIST.RESULT>For each class in the Java package, reverse engineering creates an ObjectTeam class and sets its Package Statement property appropriately.</LR.LIST.RESULT
  75287. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  75288. ></RBW-AUTOGEN
  75289. ></RBW-MARKER
  75290. ><RBW-PARABODY>Create one or more ObjectTeam systems for the application that you are developing. When necessary, reference the ObjectTeam classes that represent the classes defined in the Java packages.</RBW-PARABODY
  75291. ></LN.LIST.NUM
  75292. ><LR.LIST.RESULT>Because the referenced classes are not defined in the current system, the code generator includes the appropriate Import statements.</LR.LIST.RESULT
  75293. ></LABEL
  75294. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75295. >User&truehy;defined Import statements</L.LABEL
  75296. ><B.BODY>Occasionally, you may want to add more Import statements to a generated .java file. To do so, place them beneath the following comment in the generated file:</B.BODY
  75297. ><EM.EXAMPLE.MONO>// User import section</EM.EXAMPLE.MONO
  75298. ><B.BODY>The code generator preserves these Import statements when you regenerate the .java file.</B.BODY
  75299. ></LABEL
  75300. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75301. ><RBW-ANCHOR ID="10552"></RBW-ANCHOR
  75302. >Obsolete boxes</L.LABEL
  75303. ><B.BODY>The current release of the Java code generator generates Import statements automatically. In previous releases, you used the following properties to generate Import statements:</B.BODY
  75304. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75305. ></RBW-AUTOGEN
  75306. ></RBW-MARKER
  75307. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS><RBW-IDXTERM TERM1="import package statement, in Java"></RBW-IDXTERM
  75308. ><RBW-IDXTERM TERM1="Java, generated" TERM2="import package statement"></RBW-IDXTERM
  75309. >Import Packages</CX5FX5FBULLET.EMPHASIS
  75310. >. If this box contains a text string, the generated code for this class includes an import package statement:</RBW-PARABODY
  75311. ></LB.LIST.BULLET
  75312. ><EM.EXAMPLE.MONO>import <CX5FX5FTERM>text&truehy;string</CX5FX5FTERM
  75313. >;</EM.EXAMPLE.MONO
  75314. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75315. ></RBW-AUTOGEN
  75316. ></RBW-MARKER
  75317. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Import Types</CX5FX5FBULLET.EMPHASIS
  75318. >. If this box contains a text string, the generated code for this class includes a statement that imports the specified class: </RBW-PARABODY
  75319. ></LB.LIST.BULLET
  75320. ><EM.EXAMPLE.MONO>import java.<CX5FX5FTERM>text&truehy;string</CX5FX5FTERM
  75321. >;</EM.EXAMPLE.MONO
  75322. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75323. ></RBW-AUTOGEN
  75324. ></RBW-MARKER
  75325. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Import On&truehy;Demands</CX5FX5FBULLET.EMPHASIS
  75326. >. If this box contains a text string, the generated code for this class includes statement that imports all classes in the specified package: </RBW-PARABODY
  75327. ></LB.LIST.BULLET
  75328. ><EM.EXAMPLE.MONO>import java.<CX5FX5FTERM>text&truehy;string</CX5FX5FTERM
  75329. >.*;</EM.EXAMPLE.MONO
  75330. ><B.BODY>The current release of the Java code generator uses these properties to generate user&truehy;defined Import statements. These properties will not be supported in future releases.</B.BODY
  75331. ></LABEL
  75332. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75333. >Example</L.LABEL
  75334. ><BI.BODY.INTRO>To generate the Page class in the same source file as the Document class, edit properties for the Page class. Enter the class name Document in the Source File box, as shown in the following dialog box.</BI.BODY.INTRO
  75335. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00678.unk" origfile="pics/prppack3.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  75336. ></FA.FIGURE.ANCHOR
  75337. ></LABEL
  75338. ></SUBSECTION
  75339. ></SECTION
  75340. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26809"></RBW-ANCHOR
  75341. >Mapping Attributes</S.SECTION.HEAD
  75342. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75343. >Introduction</L.LABEL
  75344. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="mapping of"></RBW-IDXTERM
  75345. ><RBW-IDXTERM TERM1="mapping" TERM2="attribute"></RBW-IDXTERM
  75346. ><RBW-IDXTERM TERM1="Java, generated" TERM2="attribute"></RBW-IDXTERM
  75347. >ObjectTeam maps data attributes to Java variables or class variables.</B.BODY
  75348. ></LABEL
  75349. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75350. ><RBW-ANCHOR ID="29666"></RBW-ANCHOR
  75351. >Attribute syntax</L.LABEL
  75352. ><B.BODY>In ObjectTeam, you use the following syntax to specify data attributes for a class:</B.BODY
  75353. ><E.EXAMPLE>[ $ | / ] name : type = initial&truehy;value</E.EXAMPLE
  75354. ><B.BODY>where</B.BODY
  75355. ><LT.LIST.TEXT>$ indicates a class attribute</LT.LIST.TEXT
  75356. ><LT.LIST.TEXT>/ indicates a derived attribute</LT.LIST.TEXT
  75357. ></LABEL
  75358. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75359. >Attribute maps to instance variable</L.LABEL
  75360. ><B.BODY><RBW-IDXTERM TERM1="variable, in Java"></RBW-IDXTERM
  75361. >By default, a data attribute maps to an instance variable. A distinct variable known by that name is associated with every instance of the class or its subclasses.</B.BODY
  75362. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75363. >Example</SL.SUBLABEL
  75364. ><B.BODY>The following code excerpt shows the translation of the Account.Amount attribute:</B.BODY
  75365. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75366. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75367. ><EM.EXAMPLE.MONO>     private int Amount;</EM.EXAMPLE.MONO
  75368. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75369. ></LABEL
  75370. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75371. >Class attribute maps to class variable</L.LABEL
  75372. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="static"></RBW-IDXTERM
  75373. ><RBW-IDXTERM TERM1="attribute property" TERM2="static"></RBW-IDXTERM
  75374. ><RBW-IDXTERM TERM1="class variable, in Java"></RBW-IDXTERM
  75375. ><RBW-IDXTERM TERM1="static modifier property" TERM2="for attribute"></RBW-IDXTERM
  75376. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75377. ><RBW-IDXTERM TERM1="$ (static attribute)"></RBW-IDXTERM
  75378. >A class attribute maps to a Java class variable. There is exactly one variable of that name, no matter how many instances (possibly zero) of the class are created. In Java, a class variable is indicated by the <CX5FX5FPROCEDURE.NAME>static</CX5FX5FPROCEDURE.NAME
  75379. > modifier.</B.BODY
  75380. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75381. >Example</SL.SUBLABEL
  75382. ><B.BODY>The following code excerpt shows the translation of the Account.$Amount attribute:</B.BODY
  75383. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75384. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75385. ><EM.EXAMPLE.MONO>     private static int Amount;</EM.EXAMPLE.MONO
  75386. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75387. ></LABEL
  75388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75389. >Derived attribute maps to instance variable</L.LABEL
  75390. ><B.BODY><RBW-IDXTERM TERM1="derived attribute"></RBW-IDXTERM
  75391. ><RBW-IDXTERM TERM1="/ (derived attribute)"></RBW-IDXTERM
  75392. >Java does not support derived attributes. The Java code generaotr ignores the derived attribute indicator (/).</B.BODY
  75393. ></LABEL
  75394. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75395. >Data types</L.LABEL
  75396. ><B.BODY>You must specify the data type of each attribute. See <RBW-XREF REFID="34871" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  75397. > for more information.</B.BODY
  75398. ></LABEL
  75399. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75400. >Initial values</L.LABEL
  75401. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="default value"></RBW-IDXTERM
  75402. ><RBW-IDXTERM TERM1="default value, for attribute"></RBW-IDXTERM
  75403. ><RBW-IDXTERM TERM1="initial value, for attribute"></RBW-IDXTERM
  75404. >You can specify a default value for any attribute. You must specify a default value for any attribute that has the Final modifier property. See <RBW-XREF REFID="18563" TYPE="XREF-TEXTCOPY">Specifying Modifiers for Data Attributes</RBW-XREF
  75405. > for more information.</B.BODY
  75406. ></LABEL
  75407. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75408. >Attribute properties</L.LABEL
  75409. ><B.BODY>You use attribute properties to provide input to the code generator. This section describes how to edit attribute properties and the effect of each property.</B.BODY
  75410. ></LABEL
  75411. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75412. >In this section</L.LABEL
  75413. ><B.BODY>This section contains the following topics:</B.BODY
  75414. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  75415. ></ENTRY
  75416. ></RBW-ROW
  75417. ></THEAD
  75418. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34871" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types&rbwtab;3–16</RBW-XREF
  75419. ></SB.SECTION.BLOCK.TABLE
  75420. ></ENTRY
  75421. ></RBW-ROW
  75422. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22300" TYPE="XREF-TEXTCOPY">Editing Attribute Properties&rbwtab;3–17</RBW-XREF
  75423. ></SB.SECTION.BLOCK.TABLE
  75424. ></ENTRY
  75425. ></RBW-ROW
  75426. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29648" TYPE="XREF-TEXTCOPY">Specifying Comments for Data Attributes&rbwtab;3–18</RBW-XREF
  75427. ></SB.SECTION.BLOCK.TABLE
  75428. ></ENTRY
  75429. ></RBW-ROW
  75430. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35486" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Data Attributes&rbwtab;3–19</RBW-XREF
  75431. ></SB.SECTION.BLOCK.TABLE
  75432. ></ENTRY
  75433. ></RBW-ROW
  75434. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21279" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes&rbwtab;3–21</RBW-XREF
  75435. ></SB.SECTION.BLOCK.TABLE
  75436. ></ENTRY
  75437. ></RBW-ROW
  75438. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18563" TYPE="XREF-TEXTCOPY">Specifying Modifiers for Data Attributes&rbwtab;3–22</RBW-XREF
  75439. ></SB.SECTION.BLOCK.TABLE
  75440. ></ENTRY
  75441. ></RBW-ROW
  75442. ></TBODY
  75443. ></TGROUP
  75444. ></RBW-TABLE
  75445. ></LABEL
  75446. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34871"></RBW-ANCHOR
  75447. >Specifying Attribute Data Types</SS.SUBSEC.HEAD
  75448. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75449. >Data types</L.LABEL
  75450. ><B.BODY><RBW-IDXTERM TERM1="data type" TERM2="for attribute"></RBW-IDXTERM
  75451. ><RBW-IDXTERM TERM1="attribute" TERM2="data type"></RBW-IDXTERM
  75452. >Specify the data type of an attribute with either a standard data type, such as integer, or the name of another class. For example:</B.BODY
  75453. ><EM.EXAMPLE.MONO>attr:integer</EM.EXAMPLE.MONO
  75454. ></LABEL
  75455. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75456. >Declaring an array</L.LABEL
  75457. ><B.BODY><RBW-IDXTERM TERM1="array, in Java"></RBW-IDXTERM
  75458. >Use square brackets to declare an attribute as an array. You cannot declare a dimension for an array in Java. For example:</B.BODY
  75459. ><EM.EXAMPLE.MONO>attr : integer [  ]</EM.EXAMPLE.MONO
  75460. ><B.BODY>This syntax produces the following line of code.</B.BODY
  75461. ><EM.EXAMPLE.MONO>integer attr [  ];</EM.EXAMPLE.MONO
  75462. ></LABEL
  75463. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75464. >Standard data types</L.LABEL
  75465. ><B.BODY>The standard data types are defined by the <RBW-IDXTERM TERM1="stand_types customization file"></RBW-IDXTERM
  75466. >stand_types customization file. These data types are valid in the Object Design phase.</B.BODY
  75467. ><B.BODY>The translation between standard data types and Java data types is defined in <RBW-IDXTERM TERM1="lang_types customization file"></RBW-IDXTERM
  75468. >lang_types customization file. The Java code generator uses these.</B.BODY
  75469. ></LABEL
  75470. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75471. >Customizing the standard data types</L.LABEL
  75472. ><B.BODY>You can add data types to the list of standard types in the stand_types customization file. If you do, you must also provide translations for those data types in the lang_types customization file.</B.BODY
  75473. ><B.BODY>By default, the stand_types and lang_types customization files are defined on the corporate level. You can edit the customization files at the corporate level, or create and edit them at a lower level, such as the project level. (The customization files at the lower level override those at the higher level.)</B.BODY
  75474. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75475. >For more information</SL.SUBLABEL
  75476. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  75477. ><CX5FX5FTITLE></CX5FX5FTITLE
  75478. > describes how to create and edit customization files. The stand_types and lang_types customization files are ASCII files that can be edited using any text editor.</B.BODY
  75479. ></LABEL
  75480. ></SUBSECTION
  75481. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22300"></RBW-ANCHOR
  75482. >Editing Attribute Properties</SS.SUBSEC.HEAD
  75483. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75484. >Introduction</L.LABEL
  75485. ><B.BODY>In the Object Design phase, you define properties of the data attributes. These properties define the accessibility of the attribute with respect to classes and packages, as well as the behavior of the attributes. The code generated for a data attribute is based on its properties.</B.BODY
  75486. ></LABEL
  75487. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75488. >How to edit attribute properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for attribute"></RBW-IDXTERM
  75489. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75490. ><RBW-IDXTERM TERM1="attribute property" TERM2="editing"></RBW-IDXTERM
  75491. ></L.LABEL
  75492. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  75493. ></RBW-AUTOGEN
  75494. ></RBW-MARKER
  75495. ><RBW-PARABODY>To edit attribute properties:</RBW-PARABODY
  75496. ></P.PROCEDURE
  75497. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  75498. ></RBW-AUTOGEN
  75499. ></RBW-MARKER
  75500. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  75501. ></LN.LIST.NUM
  75502. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  75503. ></RBW-AUTOGEN
  75504. ></RBW-MARKER
  75505. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  75506. ></LN.LIST.NUM
  75507. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  75508. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  75509. ></RBW-AUTOGEN
  75510. ></RBW-MARKER
  75511. ><RBW-PARABODY>Select an attribute name from the list in the left pane of the dialog box.</RBW-PARABODY
  75512. ></LN.LIST.NUM
  75513. ><LR.LIST.RESULT>The attribute properties appear on the right side of the dialog box.</LR.LIST.RESULT
  75514. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  75515. ></RBW-AUTOGEN
  75516. ></RBW-MARKER
  75517. ><RBW-PARABODY>Select the desired properties. (The following subsections describe each property in greater detail.)</RBW-PARABODY
  75518. ></LN.LIST.NUM
  75519. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  75520. ></RBW-MARKER
  75521. ><RBW-PARABODY>Use the Text tab to insert comments in the generated code.</RBW-PARABODY
  75522. ></LB2.LIST.BULLET.2
  75523. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  75524. ></RBW-MARKER
  75525. ><RBW-PARABODY>Use the Attribute Access box on the Access tab to specify the accessibility of the data attribute.</RBW-PARABODY
  75526. ></LB2.LIST.BULLET.2
  75527. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  75528. ></RBW-MARKER
  75529. ><RBW-PARABODY>Use the Attribute Access Methods box on the Access tab to specify the access methods for the data attribute.</RBW-PARABODY
  75530. ></LB2.LIST.BULLET.2
  75531. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  75532. ></RBW-MARKER
  75533. ><RBW-PARABODY>Use the Modifiers tab to specify modifiers that affect the behavior of the data attribute.</RBW-PARABODY
  75534. ></LB2.LIST.BULLET.2
  75535. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  75536. ></RBW-AUTOGEN
  75537. ></RBW-MARKER
  75538. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  75539. ></LN.LIST.NUM
  75540. ></LABEL
  75541. ></SUBSECTION
  75542. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29648"></RBW-ANCHOR
  75543. >Specifying Comments for Data Attributes</SS.SUBSEC.HEAD
  75544. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75545. >Introduction</L.LABEL
  75546. ><B.BODY><RBW-IDXTERM TERM1="comment" TERM2="for attribute"></RBW-IDXTERM
  75547. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75548. ><RBW-IDXTERM TERM1="attribute property" TERM2="for comment"></RBW-IDXTERM
  75549. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75550. ><RBW-IDXTERM TERM1="Java, generated" TERM2="comment, for attribute"></RBW-IDXTERM
  75551. >Use the Text tab of the Edit Properties dialog box to insert a comment in the generated code. The comment appears immediately before the data attribute declaration.</B.BODY
  75552. ></LABEL
  75553. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75554. >Type of comment</L.LABEL
  75555. ><B.BODY>Use the Comment Type field to select the type of comment to insert:</B.BODY
  75556. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75557. ></RBW-AUTOGEN
  75558. ></RBW-MARKER
  75559. ><RBW-PARABODY>ToEndOfLine (comment begins with //)</RBW-PARABODY
  75560. ></LB.LIST.BULLET
  75561. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75562. ></RBW-AUTOGEN
  75563. ></RBW-MARKER
  75564. ><RBW-PARABODY>Block (comment appears between /* and */)</RBW-PARABODY
  75565. ></LB.LIST.BULLET
  75566. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75567. ></RBW-AUTOGEN
  75568. ></RBW-MARKER
  75569. ><RBW-PARABODY>Document (comment appears between /** and */)</RBW-PARABODY
  75570. ></LB.LIST.BULLET
  75571. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  75572. ></RBW-AUTOGEN
  75573. >You can insert Javadoc tags within a Document type comment to generate HTML documents from Java source code.</N2.NOTE.2
  75574. ></LABEL
  75575. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75576. >Comment text</L.LABEL
  75577. ><B.BODY>Use the Free Text box to enter the text of the comment.</B.BODY
  75578. ></LABEL
  75579. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75580. >Comment type examples</L.LABEL
  75581. ><B.BODY>The code excerpts below show the format and position in which the code generator produces each type of comment in code:</B.BODY
  75582. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75583. >ToEndOfLine</SL.SUBLABEL
  75584. ><B.BODY></B.BODY
  75585. ><EM.EXAMPLE.MONO>&rbwtab;class Account extends Object  {</EM.EXAMPLE.MONO
  75586. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;// Data attributes</EM.EXAMPLE.MONO
  75587. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;// Return value of amount</EM.EXAMPLE.MONO
  75588. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;private int Amount;</EM.EXAMPLE.MONO
  75589. ><EM.EXAMPLE.MONO>&rbwtab;} // class Account</EM.EXAMPLE.MONO
  75590. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75591. >Block comment</SL.SUBLABEL
  75592. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  75593. ><EM.EXAMPLE.MONO>&rbwtab;class Account extends Object  {</EM.EXAMPLE.MONO
  75594. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;// Data attributes</EM.EXAMPLE.MONO
  75595. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;/*</EM.EXAMPLE.MONO
  75596. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab; Return value of amount</EM.EXAMPLE.MONO
  75597. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;*/</EM.EXAMPLE.MONO
  75598. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;private int Amount;</EM.EXAMPLE.MONO
  75599. ><EM.EXAMPLE.MONO>&rbwtab;} // class Account</EM.EXAMPLE.MONO
  75600. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75601. >Document comment</SL.SUBLABEL
  75602. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  75603. ><EM.EXAMPLE.MONO>&rbwtab;class Account extends Object  {</EM.EXAMPLE.MONO
  75604. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;// Data attributes</EM.EXAMPLE.MONO
  75605. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;/**</EM.EXAMPLE.MONO
  75606. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab; Return value of amount</EM.EXAMPLE.MONO
  75607. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;*/</EM.EXAMPLE.MONO
  75608. ><EM.EXAMPLE.MONO>&rbwtab;&rbwtab;private int Amount;</EM.EXAMPLE.MONO
  75609. ><EM.EXAMPLE.MONO>&rbwtab;} // class Account</EM.EXAMPLE.MONO
  75610. ></LABEL
  75611. ></SUBSECTION
  75612. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35486"></RBW-ANCHOR
  75613. >Specifying Accessibility of Data Attributes</SS.SUBSEC.HEAD
  75614. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75615. >Introduction</L.LABEL
  75616. ><B.BODY><RBW-IDXTERM TERM1="attribute property" TERM2="access"></RBW-IDXTERM
  75617. ><RBW-IDXTERM TERM1="access property" TERM2="for attribute"></RBW-IDXTERM
  75618. >Edit the Attribute Access property on the Class tab of the Edit Properties dialog box to specify the accessibility of a data attribute.</B.BODY
  75619. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75620. ></RBW-AUTOGEN
  75621. ></RBW-MARKER
  75622. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public</CX5FX5FBULLET.EMPHASIS
  75623. >. The attribute is accessible anywhere that the class name is accessible.</RBW-PARABODY
  75624. ></LB.LIST.BULLET
  75625. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75626. ></RBW-AUTOGEN
  75627. ></RBW-MARKER
  75628. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  75629. >. The attribute is accessible throughout the package that contains the class in which the attribute is declared. The attribute is also accessible within the body of any subclass of that class unless it is shadowed (overridden in the subclass).</RBW-PARABODY
  75630. ></LB.LIST.BULLET
  75631. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75632. ></RBW-AUTOGEN
  75633. ></RBW-MARKER
  75634. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private (default)</CX5FX5FBULLET.EMPHASIS
  75635. >. The attribute is accessible only within the class body of the class in which the attribute is declared.</RBW-PARABODY
  75636. ></LB.LIST.BULLET
  75637. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75638. ></RBW-AUTOGEN
  75639. ></RBW-MARKER
  75640. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private Protected</CX5FX5FBULLET.EMPHASIS
  75641. >. The attribute is accessible in the class in which it is declared and in all subclasses of that class. The attribute is accessible in subclasses, even if they are in a different package; the attribute is not accessible to classes that are not subclasses, even if they are in the same package.</RBW-PARABODY
  75642. ></LB.LIST.BULLET
  75643. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75644. ></RBW-AUTOGEN
  75645. ></RBW-MARKER
  75646. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  75647. >. The attribute is accessible only within its current package. If a subclass of the data attribute’s class is declared in another package, the data attribute is not accessible in the body of that subclass. </RBW-PARABODY
  75648. ></LB.LIST.BULLET
  75649. ></LABEL
  75650. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75651. >Example</L.LABEL
  75652. ><B.BODY>The code excerpts below show how this property affects code generation for the Amount attribute of the Account class.</B.BODY
  75653. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75654. >Public </SL.SUBLABEL
  75655. ><B.BODY></B.BODY
  75656. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75657. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75658. ><EM.EXAMPLE.MONO>     public int Amount;</EM.EXAMPLE.MONO
  75659. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75660. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75661. >Protected</SL.SUBLABEL
  75662. ><B.BODY></B.BODY
  75663. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75664. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75665. ><EM.EXAMPLE.MONO>     protected int Amount;</EM.EXAMPLE.MONO
  75666. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75667. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75668. >Private</SL.SUBLABEL
  75669. ><B.BODY></B.BODY
  75670. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75671. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75672. ><EM.EXAMPLE.MONO>     private int Amount;</EM.EXAMPLE.MONO
  75673. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75674. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75675. >Private Protected</SL.SUBLABEL
  75676. ><B.BODY></B.BODY
  75677. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75678. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75679. ><EM.EXAMPLE.MONO>     private protected int Amount;</EM.EXAMPLE.MONO
  75680. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75681. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75682. >None</SL.SUBLABEL
  75683. ><B.BODY></B.BODY
  75684. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75685. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75686. ><EM.EXAMPLE.MONO>     int Amount;</EM.EXAMPLE.MONO
  75687. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75688. ></LABEL
  75689. ></SUBSECTION
  75690. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21279"></RBW-ANCHOR
  75691. >Specifying Access Methods for Data Attributes</SS.SUBSEC.HEAD
  75692. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75693. >Introduction</L.LABEL
  75694. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="access method"></RBW-IDXTERM
  75695. ><RBW-IDXTERM TERM1="attribute property" TERM2="access method"></RBW-IDXTERM
  75696. ><RBW-IDXTERM TERM1="access property" TERM2="for attribute access method"></RBW-IDXTERM
  75697. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75698. ><RBW-IDXTERM TERM1="Java, generated" TERM2="attribute access method"></RBW-IDXTERM
  75699. ><RBW-IDXTERM TERM1="attribute access method"></RBW-IDXTERM
  75700. ><RBW-IDXTERM TERM1="method" TERM2="attribute access"></RBW-IDXTERM
  75701. >An attribute access method is a special type of method that gets (reads) and sets (writes) an attribute’s value. Use the Attribute Access Methods group box on the Access tab of the Edit Properties dialog box to specify what accessors to generate for the data attribute.</B.BODY
  75702. ></LABEL
  75703. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75704. >Read and Write boxes</L.LABEL
  75705. ><B.BODY>The Attribute Access Methods group box allows you to specify the access method for both read and write. The setting you specify in the Read box affects the Get attribute access method. The setting you specify in the Write box affects the Set attribute access method.</B.BODY
  75706. ></LABEL
  75707. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75708. >Access methods</L.LABEL
  75709. ><B.BODY>The following values are allowed for both Read and Write boxes. You can enter the same or different values in the two fields.</B.BODY
  75710. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75711. ></RBW-AUTOGEN
  75712. ></RBW-MARKER
  75713. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  75714. >. The generated method is accessible anywhere the class name is accessible.</RBW-PARABODY
  75715. ></LB.LIST.BULLET
  75716. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75717. ></RBW-AUTOGEN
  75718. ></RBW-MARKER
  75719. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  75720. >. The generated method is accessible throughout the package that contains the class in which the method is declared. The method is also accessible within the body of any subclass of that class unless it is shadowed (overridden in the subclass).</RBW-PARABODY
  75721. ></LB.LIST.BULLET
  75722. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75723. ></RBW-AUTOGEN
  75724. ></RBW-MARKER
  75725. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  75726. >. The generated method is accessible only in the body of the class in which the attribute is declared.</RBW-PARABODY
  75727. ></LB.LIST.BULLET
  75728. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75729. ></RBW-AUTOGEN
  75730. ></RBW-MARKER
  75731. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  75732. >. The method is not generated.</RBW-PARABODY
  75733. ></LB.LIST.BULLET
  75734. ></LABEL
  75735. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75736. >Example</L.LABEL
  75737. ><B.BODY>The code excerpt that follows shows the code generated for the Account class, which has one attribute, Amount. The attribute’s Read and Write access methods are both specified as Public (the default).</B.BODY
  75738. ><EM.EXAMPLE.MONO>public class Account extends Object {</EM.EXAMPLE.MONO
  75739. ><EM.EXAMPLE.MONO>   // Data attributes</EM.EXAMPLE.MONO
  75740. ><EM.EXAMPLE.MONO>   private int amount;</EM.EXAMPLE.MONO
  75741. ><EM.EXAMPLE.MONO>   // Attribute accessors</EM.EXAMPLE.MONO
  75742. ><EM.EXAMPLE.MONO>   public int getAmount() {</EM.EXAMPLE.MONO
  75743. ><EM.EXAMPLE.MONO>      return amount;</EM.EXAMPLE.MONO
  75744. ><EM.EXAMPLE.MONO>   }</EM.EXAMPLE.MONO
  75745. ><EM.EXAMPLE.MONO>   public void setAmount(int amount_) {</EM.EXAMPLE.MONO
  75746. ><EM.EXAMPLE.MONO>      amount = amount_;</EM.EXAMPLE.MONO
  75747. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  75748. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75749. ></LABEL
  75750. ></SUBSECTION
  75751. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18563"></RBW-ANCHOR
  75752. >Specifying Modifiers for Data Attributes</SS.SUBSEC.HEAD
  75753. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75754. >Introduction</L.LABEL
  75755. ><B.BODY><RBW-IDXTERM TERM1="attribute property" TERM2="Final modifier"></RBW-IDXTERM
  75756. ><RBW-IDXTERM TERM1="attribute property" TERM2="Transient modifier"></RBW-IDXTERM
  75757. ><RBW-IDXTERM TERM1="attribute property" TERM2="Volatile modifier"></RBW-IDXTERM
  75758. ><RBW-IDXTERM TERM1="modifier property" TERM2="for attribute"></RBW-IDXTERM
  75759. ><RBW-IDXTERM TERM1="Final modifier property" TERM2="for attribute"></RBW-IDXTERM
  75760. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75761. ><RBW-IDXTERM TERM1="Transient modifier property" TERM2="for attribute"></RBW-IDXTERM
  75762. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75763. ><RBW-IDXTERM TERM1="Volatile modifier property" TERM2="for attribute"></RBW-IDXTERM
  75764. >Use the Modifier tab in the Edit Properties dialog box to set the attribute modifier properties, which modify the behavior of the generated Java variables. You can select one or more modifiers. By default, none are selected.</B.BODY
  75765. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75766. ></RBW-AUTOGEN
  75767. ></RBW-MARKER
  75768. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Final</CX5FX5FBULLET.EMPHASIS
  75769. >. Typically used to represent constants. If you specify this modifier for an attribute, you must also specify an initial value for the attribute; otherwise, the code generator produces an error. Specify the initial value on the CD (see <RBW-XREF REFID="29666" TYPE="XREF-TEXTCOPY">Attribute syntax</RBW-XREF
  75770. >). </RBW-PARABODY
  75771. ></LB.LIST.BULLET
  75772. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75773. ></RBW-AUTOGEN
  75774. ></RBW-MARKER
  75775. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Transient</CX5FX5FBULLET.EMPHASIS
  75776. >. Causes the attribute to be marked indicating to low&truehy;level parts of the Java virtual machine that they are not part of the persistent state of the object. It is a compile&truehy;time error if a transient variable is also declared final or static.</RBW-PARABODY
  75777. ></LB.LIST.BULLET
  75778. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75779. ></RBW-AUTOGEN
  75780. ></RBW-MARKER
  75781. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Volatile</CX5FX5FBULLET.EMPHASIS
  75782. >. Allows the variable to be modified asynchronously.</RBW-PARABODY
  75783. ></LB.LIST.BULLET
  75784. ></LABEL
  75785. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75786. >Example</L.LABEL
  75787. ><B.BODY>The code excerpts below show how this property affects code generation for the Amount attribute of the Account class.</B.BODY
  75788. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75789. >Final</SL.SUBLABEL
  75790. ><B.BODY></B.BODY
  75791. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75792. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75793. ><EM.EXAMPLE.MONO>     private final int Amount = 0;</EM.EXAMPLE.MONO
  75794. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75795. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75796. >Transient </SL.SUBLABEL
  75797. ><B.BODY></B.BODY
  75798. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75799. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75800. ><EM.EXAMPLE.MONO>     private transient int Amount;</EM.EXAMPLE.MONO
  75801. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75802. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75803. >Volatile</SL.SUBLABEL
  75804. ><B.BODY></B.BODY
  75805. ><EM.EXAMPLE.MONO>class Account extends Object {</EM.EXAMPLE.MONO
  75806. ><EM.EXAMPLE.MONO>     // Data attributes</EM.EXAMPLE.MONO
  75807. ><EM.EXAMPLE.MONO>     private volatile int Amount;</EM.EXAMPLE.MONO
  75808. ><EM.EXAMPLE.MONO>} // class Account</EM.EXAMPLE.MONO
  75809. ></LABEL
  75810. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75811. >Static modifier</L.LABEL
  75812. ><B.BODY>Java uses the static modifier to indicate a class variable. <RBW-XREF REFID="26809" TYPE="XREF-TEXTCOPY">Mapping Attributes</RBW-XREF
  75813. > describes the mapping of class attributes to class variables.</B.BODY
  75814. ></LABEL
  75815. ></SUBSECTION
  75816. ></SECTION
  75817. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="31230"></RBW-ANCHOR
  75818. >Mapping Operations</S.SECTION.HEAD
  75819. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75820. >Introduction</L.LABEL
  75821. ><B.BODY>Generally, each operation defined for an ObjectTeam class maps to a Java method.</B.BODY
  75822. ></LABEL
  75823. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75824. >Operation syntax</L.LABEL
  75825. ><B.BODY>In ObjectTeam, you use the following syntax to specify operations for a class:</B.BODY
  75826. ><E.EXAMPLE>[ $ ] name ( [ parameter&truehy;list ] ) [ : return_type ] [ {abstract} ]</E.EXAMPLE
  75827. ><B.BODY>where</B.BODY
  75828. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75829. ></RBW-AUTOGEN
  75830. ></RBW-MARKER
  75831. ><RBW-PARABODY>$ indicates a class operation, as described below</RBW-PARABODY
  75832. ></LB.LIST.BULLET
  75833. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75834. ></RBW-AUTOGEN
  75835. ></RBW-MARKER
  75836. ><RBW-PARABODY>{abstract} indicates an abstract method, as described below.</RBW-PARABODY
  75837. ></LB.LIST.BULLET
  75838. ></LABEL
  75839. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75840. >Operation maps to instance method</L.LABEL
  75841. ><B.BODY><RBW-IDXTERM TERM1="method" TERM2="mapping of"></RBW-IDXTERM
  75842. ><RBW-IDXTERM TERM1="mapping" TERM2="method"></RBW-IDXTERM
  75843. ><RBW-IDXTERM TERM1="Java, generated" TERM2="method"></RBW-IDXTERM
  75844. >Operations defined for an ObjectTeam class map to Java instance methods. An instance method can be invoked only relative to an instance of the method’s class or one of its subclasses.</B.BODY
  75845. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75846. >Example</SL.SUBLABEL
  75847. ><B.BODY>The following code excerpt shows the translation of the Print() operation on the Document class:</B.BODY
  75848. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  75849. ><EM.EXAMPLE.MONO>     // Methods</EM.EXAMPLE.MONO
  75850. ><EM.EXAMPLE.MONO>     public boolean Print() {</EM.EXAMPLE.MONO
  75851. ><EM.EXAMPLE.MONO>     } // method Print &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  75852. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75853. ></LABEL
  75854. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75855. >Class operation maps to class method</L.LABEL
  75856. ><B.BODY><RBW-IDXTERM TERM1="static modifier property" TERM2="for method"></RBW-IDXTERM
  75857. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75858. ><RBW-IDXTERM TERM1="class" TERM2="method"></RBW-IDXTERM
  75859. ><RBW-IDXTERM TERM1="method" TERM2="static"></RBW-IDXTERM
  75860. ><RBW-IDXTERM TERM1="$ (static method)"></RBW-IDXTERM
  75861. ><RBW-IDXTERM TERM1="method property" TERM2="static"></RBW-IDXTERM
  75862. >In ObjectTeam, you indicate a class operation by prefixing the operation name with a dollar sign ($). Class operations map to Java class methods. A class method is regarded as belonging to the class rather than operating within instances of the class.</B.BODY
  75863. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75864. >Example</SL.SUBLABEL
  75865. ><B.BODY>The following code excerpt shows the translation of the $Print() operation on the Document class. In Java, the <CX5FX5FPROCEDURE.NAME>static</CX5FX5FPROCEDURE.NAME
  75866. > modifier indicates a class method.</B.BODY
  75867. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  75868. ><EM.EXAMPLE.MONO>     // Methods</EM.EXAMPLE.MONO
  75869. ><EM.EXAMPLE.MONO>     public static boolean Print() {</EM.EXAMPLE.MONO
  75870. ><EM.EXAMPLE.MONO>     } // method Print &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  75871. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75872. ></LABEL
  75873. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75874. >$static() operations</L.LABEL
  75875. ><B.BODY><RBW-IDXTERM TERM1="$static() operation"></RBW-IDXTERM
  75876. ><RBW-IDXTERM TERM1="$static() operation"></RBW-IDXTERM
  75877. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75878. ><RBW-IDXTERM TERM1="static initialization block"></RBW-IDXTERM
  75879. ><RBW-IDXTERM TERM1="class" TERM2="static initialization block"></RBW-IDXTERM
  75880. ><RBW-IDXTERM TERM1="Java, generated" TERM2="static initialization block"></RBW-IDXTERM
  75881. >An ObjectTeam operation named $static() maps to a static initialization block for the class:</B.BODY
  75882. ><EM.EXAMPLE.MONO>// Methods</EM.EXAMPLE.MONO
  75883. ><EM.EXAMPLE.MONO>static {</EM.EXAMPLE.MONO
  75884. ><EM.EXAMPLE.MONO>} // static initializer &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  75885. ></LABEL
  75886. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75887. >Operation maps to abstract method</L.LABEL
  75888. ><B.BODY><RBW-IDXTERM TERM1="static modifier property" TERM2="for method"></RBW-IDXTERM
  75889. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75890. ><RBW-IDXTERM TERM1="class" TERM2="method"></RBW-IDXTERM
  75891. ><RBW-IDXTERM TERM1="method" TERM2="static"></RBW-IDXTERM
  75892. ><RBW-IDXTERM TERM1="$ (static method)"></RBW-IDXTERM
  75893. ><RBW-IDXTERM TERM1="method property" TERM2="static"></RBW-IDXTERM
  75894. >In ObjectTeam, you indicate an abstract operation by suffixing the operation name with <CX5FX5FINPUT>{abstract}</CX5FX5FINPUT
  75895. >. An abstract operation defines the method as having no implementation. As a result, the code generator does not generate a body.</B.BODY
  75896. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  75897. ></RBW-AUTOGEN
  75898. >Abstract methods can be used only in an abstract class.</N.NOTE
  75899. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75900. >Example</SL.SUBLABEL
  75901. ><B.BODY>The following code excerpt shows the translation of the Print () {abstract} method on the Document class. In Java, the <CX5FX5FINPUT>{abstract}</CX5FX5FINPUT
  75902. > modifier indicates a class method.</B.BODY
  75903. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  75904. ><EM.EXAMPLE.MONO>     // Methods</EM.EXAMPLE.MONO
  75905. ><EM.EXAMPLE.MONO>     public abstract boolean Print();</EM.EXAMPLE.MONO
  75906. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  75907. ></LABEL
  75908. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75909. >Operation properties</L.LABEL
  75910. ><B.BODY>You use operation properties to provide input to the code generator. This section describes how to edit operation properties and the effect of each property.</B.BODY
  75911. ></LABEL
  75912. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75913. >Special methods</L.LABEL
  75914. ><B.BODY>The Java code generator also generates the following special methods, which you do not have to specify as operations in an ObjectTeam class:</B.BODY
  75915. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75916. ></RBW-AUTOGEN
  75917. ></RBW-MARKER
  75918. ><RBW-PARABODY>Class constructors, as described in <RBW-XREF REFID="29176" TYPE="XREF-TEXTCOPY">Generating Class Constructors</RBW-XREF
  75919. >. Class constructors can be specified as $create operations on an ObjectTeam class, but are not required to be.</RBW-PARABODY
  75920. ></LB.LIST.BULLET
  75921. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75922. ></RBW-AUTOGEN
  75923. ></RBW-MARKER
  75924. ><RBW-PARABODY>Attribute access methods, as described in <RBW-XREF REFID="21279" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes</RBW-XREF
  75925. >. Access methods are never specified as operations on an ObjectTeam class.</RBW-PARABODY
  75926. ></LB.LIST.BULLET
  75927. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  75928. ></RBW-AUTOGEN
  75929. ></RBW-MARKER
  75930. ><RBW-PARABODY>Association access methods, as described in <RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  75931. >. Access methods are never specified as operations on an ObjectTeam class.</RBW-PARABODY
  75932. ></LB.LIST.BULLET
  75933. ></LABEL
  75934. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75935. >In this section</L.LABEL
  75936. ><B.BODY>This section contains the following topics:</B.BODY
  75937. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  75938. ></ENTRY
  75939. ></RBW-ROW
  75940. ></THEAD
  75941. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16091" TYPE="XREF-TEXTCOPY">Editing Operation Properties&rbwtab;3–26</RBW-XREF
  75942. ></SB.SECTION.BLOCK.TABLE
  75943. ></ENTRY
  75944. ></RBW-ROW
  75945. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36331" TYPE="XREF-TEXTCOPY">Specifying Comments for Methods&rbwtab;3–27</RBW-XREF
  75946. ></SB.SECTION.BLOCK.TABLE
  75947. ></ENTRY
  75948. ></RBW-ROW
  75949. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10531" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Methods&rbwtab;3–29</RBW-XREF
  75950. ></SB.SECTION.BLOCK.TABLE
  75951. ></ENTRY
  75952. ></RBW-ROW
  75953. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19978" TYPE="XREF-TEXTCOPY">Specifying Modifiers for Methods&rbwtab;3–31</RBW-XREF
  75954. ></SB.SECTION.BLOCK.TABLE
  75955. ></ENTRY
  75956. ></RBW-ROW
  75957. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21783" TYPE="XREF-TEXTCOPY">Specifying Exceptions in Method Declarations&rbwtab;3–33</RBW-XREF
  75958. ></SB.SECTION.BLOCK.TABLE
  75959. ></ENTRY
  75960. ></RBW-ROW
  75961. ></TBODY
  75962. ></TGROUP
  75963. ></RBW-TABLE
  75964. ></LABEL
  75965. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="16091"></RBW-ANCHOR
  75966. >Editing Operation Properties</SS.SUBSEC.HEAD
  75967. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75968. >Introduction</L.LABEL
  75969. ><B.BODY>In the Object Design phase, you define properties of operations. These properties define the accessibility of an operation with respect to classes and packages, as well as the behavior of the operation. The code generated for an operation is based on its properties.</B.BODY
  75970. ></LABEL
  75971. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  75972. >How to edit operation properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for method"></RBW-IDXTERM
  75973. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  75974. ><RBW-IDXTERM TERM1="method property" TERM2="editing"></RBW-IDXTERM
  75975. ></L.LABEL
  75976. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  75977. ></RBW-AUTOGEN
  75978. ></RBW-MARKER
  75979. ><RBW-PARABODY>To edit operation properties:</RBW-PARABODY
  75980. ></P.PROCEDURE
  75981. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  75982. ></RBW-AUTOGEN
  75983. ></RBW-MARKER
  75984. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  75985. ></LN.LIST.NUM
  75986. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  75987. ></RBW-AUTOGEN
  75988. ></RBW-MARKER
  75989. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  75990. ></LN.LIST.NUM
  75991. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  75992. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  75993. ></RBW-AUTOGEN
  75994. ></RBW-MARKER
  75995. ><RBW-PARABODY>Select a method name from the list in the left pane of the dialog box.</RBW-PARABODY
  75996. ></LN.LIST.NUM
  75997. ><LR.LIST.RESULT>The operation properties appear on the right side of the dialog box.</LR.LIST.RESULT
  75998. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  75999. ></RBW-AUTOGEN
  76000. ></RBW-MARKER
  76001. ><RBW-PARABODY>Select the desired properties. The following subsections describe </RBW-PARABODY
  76002. ></LN.LIST.NUM
  76003. ><LN.LIST.NUM>each property in greater detail.</LN.LIST.NUM
  76004. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  76005. ></RBW-MARKER
  76006. ><RBW-PARABODY>Use the Text tab to insert comments in the generated code.</RBW-PARABODY
  76007. ></LB2.LIST.BULLET.2
  76008. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  76009. ></RBW-MARKER
  76010. ><RBW-PARABODY>Use the Access tab to specify the accessibility of the generated method.</RBW-PARABODY
  76011. ></LB2.LIST.BULLET.2
  76012. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  76013. ></RBW-MARKER
  76014. ><RBW-PARABODY>Use the Modifiers tab to specify modifiers that affect the behavior of the generated method.</RBW-PARABODY
  76015. ></LB2.LIST.BULLET.2
  76016. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  76017. ></RBW-MARKER
  76018. ><RBW-PARABODY>Use the Throw tab to specify the exceptions that can be fired by the generated method.</RBW-PARABODY
  76019. ></LB2.LIST.BULLET.2
  76020. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  76021. ></RBW-AUTOGEN
  76022. ></RBW-MARKER
  76023. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  76024. ></LN.LIST.NUM
  76025. ></LABEL
  76026. ></SUBSECTION
  76027. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36331"></RBW-ANCHOR
  76028. >Specifying Comments for Methods</SS.SUBSEC.HEAD
  76029. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76030. >Introduction</L.LABEL
  76031. ><B.BODY><RBW-IDXTERM TERM1="comment" TERM2="for method"></RBW-IDXTERM
  76032. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76033. ><RBW-IDXTERM TERM1="method property" TERM2="for comment"></RBW-IDXTERM
  76034. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76035. ><RBW-IDXTERM TERM1="Java, generated" TERM2="comment, for  method"></RBW-IDXTERM
  76036. >Use the Text tab of the Edit Properties dialog box to insert a comment in the generated code. The comment appears immediately before the method declaration in the generated code.</B.BODY
  76037. ></LABEL
  76038. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76039. >Type of comment</L.LABEL
  76040. ><B.BODY>Use the Comment Type field to select the type of comment to insert:</B.BODY
  76041. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76042. ></RBW-AUTOGEN
  76043. ></RBW-MARKER
  76044. ><RBW-PARABODY>ToEndOfLine (comment begins with //)</RBW-PARABODY
  76045. ></LB.LIST.BULLET
  76046. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76047. ></RBW-AUTOGEN
  76048. ></RBW-MARKER
  76049. ><RBW-PARABODY>Block (comment appears between /* and */)</RBW-PARABODY
  76050. ></LB.LIST.BULLET
  76051. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76052. ></RBW-AUTOGEN
  76053. ></RBW-MARKER
  76054. ><RBW-PARABODY>Document (comment appears between /** and */)</RBW-PARABODY
  76055. ></LB.LIST.BULLET
  76056. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  76057. ></RBW-AUTOGEN
  76058. >You can insert Javadoc tags within a Document type comment to generate HTML documents from Java source code.</N2.NOTE.2
  76059. ></LABEL
  76060. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76061. >Comment text</L.LABEL
  76062. ><B.BODY>Use the Free Text field to enter the text of the comment.</B.BODY
  76063. ></LABEL
  76064. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76065. >Example</L.LABEL
  76066. ><B.BODY>The code excerpts below show the format and position in which the code generator produces each type of comment in code:</B.BODY
  76067. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76068. >ToEndOfLine comment example</SL.SUBLABEL
  76069. ><BI.BODY.INTRO></BI.BODY.INTRO
  76070. ><EWM.EXAMPLEW.MONO>public class Document extends Object {</EWM.EXAMPLEW.MONO
  76071. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;// Methods</EWM.EXAMPLEW.MONO
  76072. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;// Print the document           </EWM.EXAMPLEW.MONO
  76073. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;public Boolean Print() {</EWM.EXAMPLEW.MONO
  76074. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;} // method Print &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76075. ><EWM.EXAMPLEW.MONO>} // class Document</EWM.EXAMPLEW.MONO
  76076. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76077. >Block comment example</SL.SUBLABEL
  76078. ><BI.BODY.INTRO></BI.BODY.INTRO
  76079. ><EWM.EXAMPLEW.MONO>public class Document extends Object {</EWM.EXAMPLEW.MONO
  76080. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;// Methods</EWM.EXAMPLEW.MONO
  76081. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;/*</EWM.EXAMPLEW.MONO
  76082. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;Print the document          </EWM.EXAMPLEW.MONO
  76083. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;*/</EWM.EXAMPLEW.MONO
  76084. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;public Boolean Print() {</EWM.EXAMPLEW.MONO
  76085. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;} // method Print &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76086. ><EWM.EXAMPLEW.MONO>} // class Document</EWM.EXAMPLEW.MONO
  76087. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76088. >Document comment example</SL.SUBLABEL
  76089. ><BI.BODY.INTRO></BI.BODY.INTRO
  76090. ><EWM.EXAMPLEW.MONO>public class Document extends Object {</EWM.EXAMPLEW.MONO
  76091. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;// Methods</EWM.EXAMPLEW.MONO
  76092. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;/**</EWM.EXAMPLEW.MONO
  76093. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;Print the document </EWM.EXAMPLEW.MONO
  76094. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;*/</EWM.EXAMPLEW.MONO
  76095. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;public String Boolean Print() {</EWM.EXAMPLEW.MONO
  76096. ><EWM.EXAMPLEW.MONO>&rbwtab;&rbwtab;} // method Print &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76097. ><EWM.EXAMPLEW.MONO>} // class Document</EWM.EXAMPLEW.MONO
  76098. ></LABEL
  76099. ></SUBSECTION
  76100. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10531"></RBW-ANCHOR
  76101. >Specifying Accessibility of Methods </SS.SUBSEC.HEAD
  76102. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76103. >Introduction</L.LABEL
  76104. ><B.BODY><RBW-IDXTERM TERM1="method property" TERM2="access"></RBW-IDXTERM
  76105. ><RBW-IDXTERM TERM1="access property" TERM2="for method"></RBW-IDXTERM
  76106. >In the Object Design phase, use the Method tab of the Edit Properties dialog box to define the extent to which other classes can access a method of a class. </B.BODY
  76107. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76108. ></RBW-AUTOGEN
  76109. ></RBW-MARKER
  76110. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  76111. >. The method is accessible anywhere the class name is accessible.</RBW-PARABODY
  76112. ></LB.LIST.BULLET
  76113. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76114. ></RBW-AUTOGEN
  76115. ></RBW-MARKER
  76116. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  76117. >. The method is accessible throughout the package that contains the class in which the method is declared. The method is also accessible within the body of any subclass of that class unless it is shadowed (overridden in the subclass). </RBW-PARABODY
  76118. ></LB.LIST.BULLET
  76119. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76120. ></RBW-AUTOGEN
  76121. ></RBW-MARKER
  76122. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  76123. >. The method is accessible only in the body of the class in which it is declared.</RBW-PARABODY
  76124. ></LB.LIST.BULLET
  76125. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76126. ></RBW-AUTOGEN
  76127. ></RBW-MARKER
  76128. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private Protected</CX5FX5FBULLET.EMPHASIS
  76129. >. The method is accessible in the class in which it is declared and in all subclasses of that class. The method is accessible in subclasses, even when they are in a different package; the method is not accessible to classes that are not subclasses, even when they are in the same package.</RBW-PARABODY
  76130. ></LB.LIST.BULLET
  76131. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76132. ></RBW-AUTOGEN
  76133. ></RBW-MARKER
  76134. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  76135. >. The method is accessible only within its current package. If a subclass of the method’s class is declared in another package, the method is not accessible in the body of that subclass.</RBW-PARABODY
  76136. ></LB.LIST.BULLET
  76137. ></LABEL
  76138. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76139. >Example</L.LABEL
  76140. ><B.BODY>The code excerpts below show how this property affects code generation for the Get_Employee_ID method of the Employee class.</B.BODY
  76141. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76142. >Public</SL.SUBLABEL
  76143. ><B.BODY></B.BODY
  76144. ><EWM.EXAMPLEW.MONO>public class Employee extends Object {</EWM.EXAMPLEW.MONO
  76145. ><EWM.EXAMPLEW.MONO>     //Methods</EWM.EXAMPLEW.MONO
  76146. ><EWM.EXAMPLEW.MONO>     public int Get_Employee_Id() {</EWM.EXAMPLEW.MONO
  76147. ><EWM.EXAMPLEW.MONO>     } // method Get_Employee_Id &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76148. ><EWM.EXAMPLEW.MONO>} // class Employee</EWM.EXAMPLEW.MONO
  76149. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76150. >Protected</SL.SUBLABEL
  76151. ><B.BODY></B.BODY
  76152. ><EWM.EXAMPLEW.MONO>public class Employee extends Object {</EWM.EXAMPLEW.MONO
  76153. ><EWM.EXAMPLEW.MONO>     //Methods</EWM.EXAMPLEW.MONO
  76154. ><EWM.EXAMPLEW.MONO>     protected int Get_Employee_Id() {</EWM.EXAMPLEW.MONO
  76155. ><EWM.EXAMPLEW.MONO>     } // method Get_Employee_Id &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76156. ><EWM.EXAMPLEW.MONO>} // class Employee</EWM.EXAMPLEW.MONO
  76157. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76158. >Private </SL.SUBLABEL
  76159. ><B.BODY></B.BODY
  76160. ><EWM.EXAMPLEW.MONO>public class Employee extends Object {</EWM.EXAMPLEW.MONO
  76161. ><EWM.EXAMPLEW.MONO>     //Methods</EWM.EXAMPLEW.MONO
  76162. ><EWM.EXAMPLEW.MONO>     private int Get_Employee_Id() {</EWM.EXAMPLEW.MONO
  76163. ><EWM.EXAMPLEW.MONO>     } // method Get_Employee_Id &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76164. ><EWM.EXAMPLEW.MONO>} // class Employee</EWM.EXAMPLEW.MONO
  76165. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76166. >Private Protected</SL.SUBLABEL
  76167. ><B.BODY></B.BODY
  76168. ><EWM.EXAMPLEW.MONO>public class Employee extends Object {</EWM.EXAMPLEW.MONO
  76169. ><EWM.EXAMPLEW.MONO>     //Methods</EWM.EXAMPLEW.MONO
  76170. ><EWM.EXAMPLEW.MONO>     private protected int Get_Employee_Id() {</EWM.EXAMPLEW.MONO
  76171. ><EWM.EXAMPLEW.MONO>     } // method Get_Employee_Id &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76172. ><EWM.EXAMPLEW.MONO>} // class Employee</EWM.EXAMPLEW.MONO
  76173. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76174. >None</SL.SUBLABEL
  76175. ><B.BODY></B.BODY
  76176. ><EWM.EXAMPLEW.MONO>public class Employee extends Object {</EWM.EXAMPLEW.MONO
  76177. ><EWM.EXAMPLEW.MONO>     //Methods</EWM.EXAMPLEW.MONO
  76178. ><EWM.EXAMPLEW.MONO>     int Get_Employee_Id() {</EWM.EXAMPLEW.MONO
  76179. ><EWM.EXAMPLEW.MONO>     } // method Get_Employee_Id &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76180. ><EWM.EXAMPLEW.MONO>} // class Employee</EWM.EXAMPLEW.MONO
  76181. ></LABEL
  76182. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76183. ><RBW-ANCHOR ID="31329"></RBW-ANCHOR
  76184. >Visibility</L.LABEL
  76185. ><B.BODY>You can display the access level of methods in your diagram by checking Options | Show Visibility in the Class Diagram Editor. Method names will then be displayed with the following leading characters indicating the method’s access level:</B.BODY
  76186. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="318p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Special character</CELLHEADING
  76187. ></ENTRY
  76188. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  76189. ></ENTRY
  76190. ></RBW-ROW
  76191. ></THEAD
  76192. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>+</CELLBODY
  76193. ></ENTRY
  76194. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  76195. ></ENTRY
  76196. ></RBW-ROW
  76197. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>#</CELLBODY
  76198. ></ENTRY
  76199. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Protected</CELLBODY
  76200. ></ENTRY
  76201. ></RBW-ROW
  76202. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  76203. ></ENTRY
  76204. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private</CELLBODY
  76205. ></ENTRY
  76206. ></RBW-ROW
  76207. ></TBODY
  76208. ></TGROUP
  76209. ></RBW-TABLE
  76210. ><B.BODY>These special characters can also be used to <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  76211. > the access level of methods. Typing a hatch sign (#) before a method name will set the access level of the method to Protected, for example. </B.BODY
  76212. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  76213. ></RBW-AUTOGEN
  76214. >The special characters only work if the menu entry Options | Show Visibility in the Class Diagram Editor has been checked. Otherwise, they will just be regarded as part of the method name.</W.WARNING
  76215. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  76216. ></RBW-AUTOGEN
  76217. >No leading character is displayed for methods with an access level of <CX5FX5FBULLET.EMPHASIS>Private Protected</CX5FX5FBULLET.EMPHASIS
  76218. > or <CX5FX5FBULLET.EMPHASIS>None</CX5FX5FBULLET.EMPHASIS
  76219. >.</N.NOTE
  76220. ></LABEL
  76221. ></SUBSECTION
  76222. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19978"></RBW-ANCHOR
  76223. >Specifying Modifiers for Methods</SS.SUBSEC.HEAD
  76224. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76225. >Introduction</L.LABEL
  76226. ><B.BODY><RBW-IDXTERM TERM1="method property" TERM2="Final modifier"></RBW-IDXTERM
  76227. ><RBW-IDXTERM TERM1="method property" TERM2="Abstract modifier"></RBW-IDXTERM
  76228. ><RBW-IDXTERM TERM1="method property" TERM2="Native modifier"></RBW-IDXTERM
  76229. ><RBW-IDXTERM TERM1="method property" TERM2="Synchronized modifier"></RBW-IDXTERM
  76230. ><RBW-IDXTERM TERM1="modifier property" TERM2="for method"></RBW-IDXTERM
  76231. ><RBW-IDXTERM TERM1="Final modifier property" TERM2="for method"></RBW-IDXTERM
  76232. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76233. ><RBW-IDXTERM TERM1="Abstract modifier property" TERM2="for method"></RBW-IDXTERM
  76234. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76235. ><RBW-IDXTERM TERM1="Native modifier property" TERM2="for method"></RBW-IDXTERM
  76236. ><RBW-IDXTERM TERM1="Synchronized modifier property" TERM2="for method"></RBW-IDXTERM
  76237. >Use the Modifier tab in the Edit Properties dialog box to set the operation modifier properties, which modify the behavior of the generated Java methods. You can select one or more modifiers. By default, none are selected.</B.BODY
  76238. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76239. ></RBW-AUTOGEN
  76240. ></RBW-MARKER
  76241. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Final</CX5FX5FBULLET.EMPHASIS
  76242. >. Prohibits the method from being overridden.</RBW-PARABODY
  76243. ></LB.LIST.BULLET
  76244. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76245. ></RBW-AUTOGEN
  76246. ></RBW-MARKER
  76247. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Native</CX5FX5FBULLET.EMPHASIS
  76248. >. Indicates that the method is to be implemented in a platform&truehy;dependent way, for example in C or in assembly language. Because the method is not to be implemented in Java, no body is generated for it.</RBW-PARABODY
  76249. ></LB.LIST.BULLET
  76250. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76251. ></RBW-AUTOGEN
  76252. ></RBW-MARKER
  76253. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Synchronized</CX5FX5FBULLET.EMPHASIS
  76254. >. Causes the method to acquire a monitor lock before it executes. If the method is also static, it acquires the lock per class. If not, it acquires the lock per object.</RBW-PARABODY
  76255. ></LB.LIST.BULLET
  76256. ></LABEL
  76257. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76258. >Example</L.LABEL
  76259. ><B.BODY>The code excerpts below show how this property affects code generation for the Print method of the Document class.</B.BODY
  76260. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76261. >Final</SL.SUBLABEL
  76262. ><B.BODY></B.BODY
  76263. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  76264. ><EM.EXAMPLE.MONO>     // Methods</EM.EXAMPLE.MONO
  76265. ><EM.EXAMPLE.MONO>     public final boolean Print() {</EM.EXAMPLE.MONO
  76266. ><EM.EXAMPLE.MONO>     } // method Print &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  76267. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  76268. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76269. >Native</SL.SUBLABEL
  76270. ><B.BODY></B.BODY
  76271. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  76272. ><EM.EXAMPLE.MONO>     // Methods</EM.EXAMPLE.MONO
  76273. ><EM.EXAMPLE.MONO>     public native boolean Print();</EM.EXAMPLE.MONO
  76274. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  76275. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76276. >Synchronized</SL.SUBLABEL
  76277. ><B.BODY></B.BODY
  76278. ><EM.EXAMPLE.MONO>public class Document extends Object {</EM.EXAMPLE.MONO
  76279. ><EM.EXAMPLE.MONO>     // Methods</EM.EXAMPLE.MONO
  76280. ><EM.EXAMPLE.MONO>     public synchronized boolean Print();</EM.EXAMPLE.MONO
  76281. ><EM.EXAMPLE.MONO>} // class Document</EM.EXAMPLE.MONO
  76282. ></LABEL
  76283. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76284. >Static modifier</L.LABEL
  76285. ><B.BODY>Java uses the static modifier to indicate a class method. <RBW-XREF REFID="31230" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  76286. > describes the mapping of class operations to class methods.</B.BODY
  76287. ></LABEL
  76288. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76289. >{abstract} modifier</L.LABEL
  76290. ><B.BODY>Java uses the {abstract} modifier to indicate an abstract method. <RBW-XREF REFID="31230" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  76291. > describes the mapping of abstract operations to abstract methods.</B.BODY
  76292. ></LABEL
  76293. ></SUBSECTION
  76294. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21783"></RBW-ANCHOR
  76295. >Specifying Exceptions in Method Declarations</SS.SUBSEC.HEAD
  76296. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76297. >Introduction</L.LABEL
  76298. ><B.BODY><RBW-IDXTERM TERM1="method" TERM2="exception"></RBW-IDXTERM
  76299. ><RBW-IDXTERM TERM1="method property" TERM2="throw (exception)"></RBW-IDXTERM
  76300. ><RBW-IDXTERM TERM1="throw property, for method"></RBW-IDXTERM
  76301. ><RBW-IDXTERM TERM1="exception property, for method"></RBW-IDXTERM
  76302. >Use the Throws tab in the Edit Properties dialog box to specify exceptions to be included in the generated method declaration.</B.BODY
  76303. ></LABEL
  76304. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76305. >Multiple exceptions</L.LABEL
  76306. ><B.BODY>If you are entering multiple exceptions, use spaces to separate them.</B.BODY
  76307. ><B.BODY>You can also generate throw clauses in method declarations using the Edit Properties dialog box. An example of generating throw clauses is shown below for the Document class.</B.BODY
  76308. ></LABEL
  76309. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76310. >Example</L.LABEL
  76311. ><B.BODY>The following dialog box shows how multiple exceptions are specified. The code excerpt that follows the dialog box shows the format and location of the exceptions in the generated code.</B.BODY
  76312. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00679.unk" origfile="pics/prpthrws.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76313. ></FA.FIGURE.ANCHOR
  76314. ><EWM.EXAMPLEW.MONO>public class Document extends Object {</EWM.EXAMPLEW.MONO
  76315. ><EWM.EXAMPLEW.MONO>     //Methods</EWM.EXAMPLEW.MONO
  76316. ><EWM.EXAMPLEW.MONO>    public void Save() throws IOException, FileNotFoundException {</EWM.EXAMPLEW.MONO
  76317. ><EWM.EXAMPLEW.MONO>    } // method Save &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76318. ><EWM.EXAMPLEW.MONO>} // class Document</EWM.EXAMPLEW.MONO
  76319. ></LABEL
  76320. ></SUBSECTION
  76321. ></SECTION
  76322. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12952"></RBW-ANCHOR
  76323. >Mapping Inheritance</S.SECTION.HEAD
  76324. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76325. >Introduction</L.LABEL
  76326. ><B.BODY>The Java code generator supports single inheritance for classes. It supports both single and multiple inheritance for interfaces.</B.BODY
  76327. ></LABEL
  76328. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76329. >Base class determines type of inheritance</L.LABEL
  76330. ><B.BODY><RBW-IDXTERM TERM1="inheritance" TERM2="specifying type of"></RBW-IDXTERM
  76331. ><RBW-IDXTERM TERM1="interface property" TERM2="for inheritance"></RBW-IDXTERM
  76332. >The Java code generator examines the base class to determine whether to generate class inheritance or interface inheritance. </B.BODY
  76333. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76334. ></RBW-AUTOGEN
  76335. ></RBW-MARKER
  76336. ><RBW-PARABODY>If the class properties of the ObjectTeam base class indicate that the class maps to a Java class, the code generator generates class inheritance. </RBW-PARABODY
  76337. ></LB.LIST.BULLET
  76338. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76339. ></RBW-AUTOGEN
  76340. ></RBW-MARKER
  76341. ><RBW-PARABODY>If the class properties of the ObjectTeam base class indicate that the class maps to a Java interface, the code generator generates interface inheritance.</RBW-PARABODY
  76342. ></LB.LIST.BULLET
  76343. ><B.BODY><RBW-XREF REFID="17596" TYPE="XREF-TEXTCOPY">Specifying Class or Interface Generation</RBW-XREF
  76344. > describes how to indicate whether an ObjectTeam class maps to a Java class or interface.</B.BODY
  76345. ></LABEL
  76346. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76347. >Disjoint and overlapping inheritance</L.LABEL
  76348. ><B.BODY><RBW-IDXTERM TERM1="disjoint inheritance"></RBW-IDXTERM
  76349. ><RBW-IDXTERM TERM1="overlapping inheritance"></RBW-IDXTERM
  76350. >In ObjectTeam, you can specify either disjoint or overlapping inheritance. When using the Java code generator, always use disjoint inheritance.</B.BODY
  76351. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Disjoint</CELLHEADING
  76352. ></ENTRY
  76353. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Overlapping</CELLHEADING
  76354. ></ENTRY
  76355. ></RBW-ROW
  76356. ></THEAD
  76357. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00680.unk" origfile="pics/hierdisj.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76358. ></CG.CELLBODY.GRAPHIC
  76359. ></ENTRY
  76360. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00681.unk" origfile="pics/hierover.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76361. ></CG.CELLBODY.GRAPHIC
  76362. ></ENTRY
  76363. ></RBW-ROW
  76364. ></TBODY
  76365. ></TGROUP
  76366. ></RBW-TABLE
  76367. ></LABEL
  76368. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76369. >In this section</L.LABEL
  76370. ><B.BODY>This section contains the following topics:</B.BODY
  76371. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  76372. ></ENTRY
  76373. ></RBW-ROW
  76374. ></THEAD
  76375. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19799" TYPE="XREF-TEXTCOPY">Mapping Class Inheritance&rbwtab;3–35</RBW-XREF
  76376. ></SB.SECTION.BLOCK.TABLE
  76377. ></ENTRY
  76378. ></RBW-ROW
  76379. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18184" TYPE="XREF-TEXTCOPY">Mapping Interface Inheritance&rbwtab;3–36</RBW-XREF
  76380. ></SB.SECTION.BLOCK.TABLE
  76381. ></ENTRY
  76382. ></RBW-ROW
  76383. ></TBODY
  76384. ></TGROUP
  76385. ></RBW-TABLE
  76386. ><B.BODY></B.BODY
  76387. ></LABEL
  76388. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19799"></RBW-ANCHOR
  76389. >Mapping Class Inheritance</SS.SUBSEC.HEAD
  76390. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76391. >Introduction</L.LABEL
  76392. ><B.BODY><RBW-IDXTERM TERM1="mapping" TERM2="class inheritance"></RBW-IDXTERM
  76393. ><RBW-IDXTERM TERM1="inheritance" TERM2="class"></RBW-IDXTERM
  76394. ><RBW-IDXTERM TERM1="class" TERM2="inheritance"></RBW-IDXTERM
  76395. >In Java, a class may extend (or inherit from) another class. This behavior is called subclassing. Subclassing is a means by which new and enhanced objects can be created from existing objects.</B.BODY
  76396. ></LABEL
  76397. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76398. >Multiple inheritance is not permitted</L.LABEL
  76399. ><B.BODY>Java permits a class to inherit from one class only. Therefore, the code generator displays an error if an ObjectTeam class inherits from more than one other class.</B.BODY
  76400. ></LABEL
  76401. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76402. >Example</L.LABEL
  76403. ><B.BODY>In the following CD, Rectangle extends (inherits from) Shape and Circle extends (inherits from) Shape. </B.BODY
  76404. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00682.unk" origfile="pics/inhercl.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76405. ></FA.FIGURE.ANCHOR
  76406. ><B.BODY>In the following generated code excerpt, Rectangle extends Shape and Circle extends Shape. Shape extends the Object class, which is the root class of all Java classes.</B.BODY
  76407. ><EM.EXAMPLE.MONO>public class Shape extends Object {</EM.EXAMPLE.MONO
  76408. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  76409. ><EM.EXAMPLE.MONO>} // class Shape</EM.EXAMPLE.MONO
  76410. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  76411. ><EM.EXAMPLE.MONO>public class Rectangle extends Shape {</EM.EXAMPLE.MONO
  76412. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  76413. ><EM.EXAMPLE.MONO>} // class Rectangle</EM.EXAMPLE.MONO
  76414. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  76415. ><EM.EXAMPLE.MONO>public class Circle extends Shape {</EM.EXAMPLE.MONO
  76416. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  76417. ><EM.EXAMPLE.MONO>} // class Circle</EM.EXAMPLE.MONO
  76418. ></LABEL
  76419. ></SUBSECTION
  76420. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18184"></RBW-ANCHOR
  76421. >Mapping Interface Inheritance</SS.SUBSEC.HEAD
  76422. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76423. >Introduction</L.LABEL
  76424. ><B.BODY><RBW-IDXTERM TERM1="mapping" TERM2="interface inheritance"></RBW-IDXTERM
  76425. ><RBW-IDXTERM TERM1="inheritance" TERM2="interface"></RBW-IDXTERM
  76426. ><RBW-IDXTERM TERM1="interface" TERM2="inheritance"></RBW-IDXTERM
  76427. >In Java, an interface may extend one or more other interfaces. The interface being declared extends the other named interfaces. It implicitly includes the methods and constants (unless shadowed) of each of the other interfaces. </B.BODY
  76428. ><B.BODY>Any class that implements the declared interface is also considered to implement the interfaces that the declared interface extends.</B.BODY
  76429. ></LABEL
  76430. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76431. >Single and multiple inheritance</L.LABEL
  76432. ><B.BODY>Single inheritance occurs when an interface extends one other interface. Multiple inheritance occurs when an interface extends to more than one other interface. The examples in this section show multiple inheritance, but could as easily show single inheritance.</B.BODY
  76433. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  76434. ></RBW-AUTOGEN
  76435. >If you are using multiple inheritance, make sure that every ObjectTeam base class is marked as an interface. If a single ObjectTeam class inherits from multiple base classes and exactly one of those base classes is marked as a class, the Java code generator generates class inheritance with respect to that one base class and interface inheritance with respect to the other base classes.</W.WARNING
  76436. ></LABEL
  76437. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76438. >Attributes in an interface</L.LABEL
  76439. ><B.BODY><RBW-IDXTERM TERM1="interface" TERM2="attributes in"></RBW-IDXTERM
  76440. ><RBW-IDXTERM TERM1="attribute" TERM2="in interface"></RBW-IDXTERM
  76441. >You must declare any attributes in an interface as class attributes (Java static modifier), final attributes (Java final modifier), or both. In addition, every attribute in an interface must have an initial value that is a constant expression.</B.BODY
  76442. ><B.BODY>For more information, see the following:</B.BODY
  76443. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Topic</CELLHEADING
  76444. ></ENTRY
  76445. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>See</CELLHEADING
  76446. ></ENTRY
  76447. ></RBW-ROW
  76448. ></THEAD
  76449. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class attributes</CELLBODY
  76450. ></ENTRY
  76451. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="26809" TYPE="XREF-TEXTCOPY">Mapping Attributes</RBW-XREF
  76452. ></CELLBODY
  76453. ></ENTRY
  76454. ></RBW-ROW
  76455. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Final attributes</CELLBODY
  76456. ></ENTRY
  76457. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="18563" TYPE="XREF-TEXTCOPY">Specifying Modifiers for Data Attributes</RBW-XREF
  76458. ></CELLBODY
  76459. ></ENTRY
  76460. ></RBW-ROW
  76461. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Initial values</CELLBODY
  76462. ></ENTRY
  76463. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="26809" TYPE="XREF-TEXTCOPY">Mapping Attributes</RBW-XREF
  76464. ></CELLBODY
  76465. ></ENTRY
  76466. ></RBW-ROW
  76467. ></TBODY
  76468. ></TGROUP
  76469. ></RBW-TABLE
  76470. ></LABEL
  76471. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76472. >Example</L.LABEL
  76473. ><BI.BODY.INTRO>In the following CD, Radio extends (inherits from) both Receiver and Transmitter. The class properties of both Receiver and Transmitter indicate that these class map to Java interfaces.</BI.BODY.INTRO
  76474. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00683.unk" origfile="pics/inherin.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76475. ></FA.FIGURE.ANCHOR
  76476. ><B.BODY>Following are generated code excerpts for all three classes. The Radio interface extends both the Receiver and Transmitter interfaces. The attributes and methods of the Receiver and Transmitter interfaces are implemented in Radio interface.</B.BODY
  76477. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76478. >Generated code for Radio interface</SL.SUBLABEL
  76479. ><BI.BODY.INTRO></BI.BODY.INTRO
  76480. ><EWM.EXAMPLEW.MONO>public class Radio extends Object implements Transmitter, Receiver {</EWM.EXAMPLEW.MONO
  76481. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  76482. ><EWM.EXAMPLEW.MONO>    private int state;</EWM.EXAMPLEW.MONO
  76483. ><EWM.EXAMPLEW.MONO>    // Methods</EWM.EXAMPLEW.MONO
  76484. ><EWM.EXAMPLEW.MONO>    public int select() {</EWM.EXAMPLEW.MONO
  76485. ><EWM.EXAMPLEW.MONO>    } // method select &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76486. ><EWM.EXAMPLEW.MONO>    public int tune() {</EWM.EXAMPLEW.MONO
  76487. ><EWM.EXAMPLEW.MONO>    } // method tune &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  76488. ><EWM.EXAMPLEW.MONO>    // Attribute accessors</EWM.EXAMPLEW.MONO
  76489. ><EWM.EXAMPLEW.MONO>    public int getState() {</EWM.EXAMPLEW.MONO
  76490. ><EWM.EXAMPLEW.MONO>        return state;</EWM.EXAMPLEW.MONO
  76491. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  76492. ><EWM.EXAMPLEW.MONO>    public void setState(int state_) {</EWM.EXAMPLEW.MONO
  76493. ><EWM.EXAMPLEW.MONO>        state = state_;</EWM.EXAMPLEW.MONO
  76494. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  76495. ><EWM.EXAMPLEW.MONO>} // class Radio</EWM.EXAMPLEW.MONO
  76496. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76497. >Generated code for Receiver interface</SL.SUBLABEL
  76498. ><BI.BODY.INTRO></BI.BODY.INTRO
  76499. ><EWM.EXAMPLEW.MONO>public interface Receiver {</EWM.EXAMPLEW.MONO
  76500. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  76501. ><EWM.EXAMPLEW.MONO>    public final boolean receiving;</EWM.EXAMPLEW.MONO
  76502. ><EWM.EXAMPLEW.MONO>    // Methods</EWM.EXAMPLEW.MONO
  76503. ><EWM.EXAMPLEW.MONO>    public int receive();</EWM.EXAMPLEW.MONO
  76504. ><EWM.EXAMPLEW.MONO>} // interface Receiver</EWM.EXAMPLEW.MONO
  76505. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76506. >Generated code for Transmitter interface</SL.SUBLABEL
  76507. ><BI.BODY.INTRO></BI.BODY.INTRO
  76508. ><EWM.EXAMPLEW.MONO>public interface Transmitter {</EWM.EXAMPLEW.MONO
  76509. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  76510. ><EWM.EXAMPLEW.MONO>    public final boolean transmitting=true;</EWM.EXAMPLEW.MONO
  76511. ><EWM.EXAMPLEW.MONO>    // Methods</EWM.EXAMPLEW.MONO
  76512. ><EWM.EXAMPLEW.MONO>    public int transmit();</EWM.EXAMPLEW.MONO
  76513. ><EWM.EXAMPLEW.MONO>} // interface Transmitter</EWM.EXAMPLEW.MONO
  76514. ></LABEL
  76515. ></SUBSECTION
  76516. ></SECTION
  76517. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21032"></RBW-ANCHOR
  76518. >Mapping Associations</S.SECTION.HEAD
  76519. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76520. >Introduction</L.LABEL
  76521. ><B.BODY><RBW-IDXTERM TERM1="mapping" TERM2="association"></RBW-IDXTERM
  76522. ><RBW-IDXTERM TERM1="association" TERM2="mapping of"></RBW-IDXTERM
  76523. >ObjectTeam and Java code generator support the following:</B.BODY
  76524. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76525. ></RBW-AUTOGEN
  76526. ></RBW-MARKER
  76527. ><RBW-PARABODY>Binary association (associations between two classes)</RBW-PARABODY
  76528. ></LB.LIST.BULLET
  76529. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76530. ></RBW-AUTOGEN
  76531. ></RBW-MARKER
  76532. ><RBW-PARABODY>Qualified associations (associations that include a qualifier)</RBW-PARABODY
  76533. ></LB.LIST.BULLET
  76534. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76535. ></RBW-AUTOGEN
  76536. ></RBW-MARKER
  76537. ><RBW-PARABODY>Link attributes (attributes used to define an association)</RBW-PARABODY
  76538. ></LB.LIST.BULLET
  76539. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76540. ></RBW-AUTOGEN
  76541. ></RBW-MARKER
  76542. ><RBW-PARABODY>Association as class (class used to define an association)</RBW-PARABODY
  76543. ></LB.LIST.BULLET
  76544. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76545. ><RBW-IDXTERM TERM1="n-ary association"></RBW-IDXTERM
  76546. ><RBW-IDXTERM TERM1="association" TERM2="n-ary"></RBW-IDXTERM
  76547. >N&truehy;ary associations</SL.SUBLABEL
  76548. ><B.BODY>The Java code generator ignores n&truehy;ary associations. Code is generated for the classes involved, but no code is generated for the n&truehy;ary association.</B.BODY
  76549. ></LABEL
  76550. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76551. >Optional Multplicity</L.LABEL
  76552. ><B.BODY>The optional multiplicity of an association does not affect the code generated for it. Instead, if a class has a mandatory association, the constructor for the class ensures that it is related to an instance of the associated class.</B.BODY
  76553. ></LABEL
  76554. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76555. >Aggregations</L.LABEL
  76556. ><B.BODY><RBW-IDXTERM TERM1="aggregation"></RBW-IDXTERM
  76557. >The Java code generator translates aggregations like associations.</B.BODY
  76558. ></LABEL
  76559. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76560. >In this section</L.LABEL
  76561. ><B.BODY>This section contains the following topics:</B.BODY
  76562. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  76563. ></ENTRY
  76564. ></RBW-ROW
  76565. ></THEAD
  76566. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations&rbwtab;3–40</RBW-XREF
  76567. ></SB.SECTION.BLOCK.TABLE
  76568. ></ENTRY
  76569. ></RBW-ROW
  76570. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19864" TYPE="XREF-TEXTCOPY">Mapping Associations With Multiplicity of Many&rbwtab;3–44</RBW-XREF
  76571. ></SB.SECTION.BLOCK.TABLE
  76572. ></ENTRY
  76573. ></RBW-ROW
  76574. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14868" TYPE="XREF-TEXTCOPY">Mapping Ordered Associations&rbwtab;3–46</RBW-XREF
  76575. ></SB.SECTION.BLOCK.TABLE
  76576. ></ENTRY
  76577. ></RBW-ROW
  76578. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13312" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations&rbwtab;3–48</RBW-XREF
  76579. ></SB.SECTION.BLOCK.TABLE
  76580. ></ENTRY
  76581. ></RBW-ROW
  76582. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37751" TYPE="XREF-TEXTCOPY">Mapping Link Attributes and Classes as Associations&rbwtab;3–51</RBW-XREF
  76583. ></SB.SECTION.BLOCK.TABLE
  76584. ></ENTRY
  76585. ></RBW-ROW
  76586. ></TBODY
  76587. ></TGROUP
  76588. ></RBW-TABLE
  76589. ></LABEL
  76590. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21964"></RBW-ANCHOR
  76591. >Mapping Simple Associations</SS.SUBSEC.HEAD
  76592. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76593. >Introduction</L.LABEL
  76594. ><B.BODY>This section describes how the Java code generator implements the following simple associations between the Customer class and the Book class.</B.BODY
  76595. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76596. >Unidirectional association</SL.SUBLABEL
  76597. ><B.BODY></B.BODY
  76598. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00684.unk" origfile="pics/asscuni.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76599. ></FA.FIGURE.ANCHOR
  76600. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76601. >Bidirectional association</SL.SUBLABEL
  76602. ><B.BODY></B.BODY
  76603. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00685.unk" origfile="pics/asscbi.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76604. ></FA.FIGURE.ANCHOR
  76605. ></LABEL
  76606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76607. >Unidirectional and bidirectional</L.LABEL
  76608. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="unidirectional"></RBW-IDXTERM
  76609. ><RBW-IDXTERM TERM1="unidirectional association"></RBW-IDXTERM
  76610. ><RBW-IDXTERM TERM1="association" TERM2="bidirectional"></RBW-IDXTERM
  76611. ><RBW-IDXTERM TERM1="bidirectional association"></RBW-IDXTERM
  76612. ><RBW-IDXTERM TERM1="one-to-one association"></RBW-IDXTERM
  76613. ><RBW-IDXTERM TERM1="association" TERM2="one-to-one"></RBW-IDXTERM
  76614. >The direction of an association is defined by the role names on it. A role name at the far end of the association indicates an association from the class at the near end to the class at the far end.</B.BODY
  76615. ><B.BODY>If an association has a role name at only one end, it is a unidirectional association (implemented in one direction). If an association has role names at both ends, it is a bidirectional association (implemented in both directions).</B.BODY
  76616. ></LABEL
  76617. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76618. >Mapping a unidirectional association</L.LABEL
  76619. ><B.BODY><RBW-IDXTERM TERM1="Java, generated" TERM2="association attribute"></RBW-IDXTERM
  76620. ><RBW-IDXTERM TERM1="Java, generated" TERM2="association attribute access method"></RBW-IDXTERM
  76621. >The Java code generator implements a unidirectional association by adding an association attribute and a set of association attribute accessor methods to the code generated for the class at the near end of the association. Creating this association allows the class at the near of the association (Customer) to access the class at the far end (Book); the class at the far end of the association cannot access the class at the near end.</B.BODY
  76622. ></LABEL
  76623. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76624. >Mapping a bidirectional association</L.LABEL
  76625. ><B.BODY>The Java code generator implements a bidirectional association by adding an association attribute and a set of association attribute accessor methods<CX5FX5FEMPHASIS> </CX5FX5FEMPHASIS
  76626. > to the code generated for both classes. This allows each class to access the other. To ensure integrity of a bidirectional association, the update method for a bidirectional association always maintains the association in both directions.</B.BODY
  76627. ></LABEL
  76628. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76629. >Example of a unidirectional association</L.LABEL
  76630. ><B.BODY>Following is an excerpt from the code generated for the Customer class in the unidirectional association. Because this is a unidirectional association, the Book class does not contain any code related to the association.</B.BODY
  76631. ><EM.EXAMPLE.MONO>public class Customer extends Object {</EM.EXAMPLE.MONO
  76632. ><EM.EXAMPLE.MONO>    // Data attributes</EM.EXAMPLE.MONO
  76633. ><EM.EXAMPLE.MONO>    private String name;</EM.EXAMPLE.MONO
  76634. ><EM.EXAMPLE.MONO>    // Association attributes</EM.EXAMPLE.MONO
  76635. ><EM.EXAMPLE.MONO>    public Book book;</EM.EXAMPLE.MONO
  76636. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  76637. ><EM.EXAMPLE.MONO>    // Attribute accessors</EM.EXAMPLE.MONO
  76638. ><EM.EXAMPLE.MONO>    public String getName() {</EM.EXAMPLE.MONO
  76639. ><EM.EXAMPLE.MONO>        return name;</EM.EXAMPLE.MONO
  76640. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76641. ><EM.EXAMPLE.MONO>    public void setName(String name_) {</EM.EXAMPLE.MONO
  76642. ><EM.EXAMPLE.MONO>        name = name_;</EM.EXAMPLE.MONO
  76643. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76644. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  76645. ><EM.EXAMPLE.MONO>    // Association accessors</EM.EXAMPLE.MONO
  76646. ><EM.EXAMPLE.MONO>    public Book getBook() {</EM.EXAMPLE.MONO
  76647. ><EM.EXAMPLE.MONO>        return book;</EM.EXAMPLE.MONO
  76648. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76649. ><EM.EXAMPLE.MONO>    public void setBook(Book book_) {</EM.EXAMPLE.MONO
  76650. ><EM.EXAMPLE.MONO>        book = book_;</EM.EXAMPLE.MONO
  76651. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76652. ><EM.EXAMPLE.MONO>} // class Customer</EM.EXAMPLE.MONO
  76653. ></LABEL
  76654. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76655. >Example of a bidirectional association</L.LABEL
  76656. ><B.BODY>Following is an excerpt from the code generated for the Customer class in the bidirectional association. Because this is a bidirectional association, the Book class contains similar code to implement the association in the other direction.</B.BODY
  76657. ><EM.EXAMPLE.MONO>public class Customer extends Object {</EM.EXAMPLE.MONO
  76658. ><EM.EXAMPLE.MONO>    // Data attributes</EM.EXAMPLE.MONO
  76659. ><EM.EXAMPLE.MONO>    private String name;</EM.EXAMPLE.MONO
  76660. ><EM.EXAMPLE.MONO>    // Association attributes</EM.EXAMPLE.MONO
  76661. ><EM.EXAMPLE.MONO>    public Book book;</EM.EXAMPLE.MONO
  76662. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  76663. ><EM.EXAMPLE.MONO>    // Attribute accessors</EM.EXAMPLE.MONO
  76664. ><EM.EXAMPLE.MONO>    public String getName() {</EM.EXAMPLE.MONO
  76665. ><EM.EXAMPLE.MONO>        return name;</EM.EXAMPLE.MONO
  76666. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76667. ><EM.EXAMPLE.MONO>    public void setName(String name_) {</EM.EXAMPLE.MONO
  76668. ><EM.EXAMPLE.MONO>        name = name_;</EM.EXAMPLE.MONO
  76669. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76670. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  76671. ><EM.EXAMPLE.MONO>    // Association accessors</EM.EXAMPLE.MONO
  76672. ><EM.EXAMPLE.MONO>    public Book getBook() {</EM.EXAMPLE.MONO
  76673. ><EM.EXAMPLE.MONO>        return book;</EM.EXAMPLE.MONO
  76674. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76675. ><EM.EXAMPLE.MONO>    public void setBook(Book book_) {</EM.EXAMPLE.MONO
  76676. ><EM.EXAMPLE.MONO>        if (book != null)</EM.EXAMPLE.MONO
  76677. ><EM.EXAMPLE.MONO>            book.cust = null;</EM.EXAMPLE.MONO
  76678. ><EM.EXAMPLE.MONO>        if (book_ != null) {</EM.EXAMPLE.MONO
  76679. ><EM.EXAMPLE.MONO>            book_.setCust(null);</EM.EXAMPLE.MONO
  76680. ><EM.EXAMPLE.MONO>            book_.cust = this;</EM.EXAMPLE.MONO
  76681. ><EM.EXAMPLE.MONO>        }</EM.EXAMPLE.MONO
  76682. ><EM.EXAMPLE.MONO>        book = book_;</EM.EXAMPLE.MONO
  76683. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76684. ><EM.EXAMPLE.MONO>} // class Customer</EM.EXAMPLE.MONO
  76685. ></LABEL
  76686. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76687. >Association attributes</L.LABEL
  76688. ><B.BODY><RBW-IDXTERM TERM1="association attribute"></RBW-IDXTERM
  76689. ><RBW-IDXTERM TERM1="attribute" TERM2="association attribute"></RBW-IDXTERM
  76690. ><RBW-IDXTERM TERM1="association attribute access method"></RBW-IDXTERM
  76691. ><RBW-IDXTERM TERM1="method" TERM2="association attribute access"></RBW-IDXTERM
  76692. >The ObjectTeam documentation and generated Java code use the term association attribute to refer to data attributes generated to support ObjectTeam associations (as opposed to data attributes generated from ObjectTeam attributes). In Java, an association attribute is simply another data attribute and association accessors are simply data attribute accessors.</B.BODY
  76693. ></LABEL
  76694. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76695. >How to edit association attribute properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for association"></RBW-IDXTERM
  76696. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76697. ><RBW-IDXTERM TERM1="association attribute property" TERM2="editing"></RBW-IDXTERM
  76698. ></L.LABEL
  76699. ><B.BODY>Association attributes and accessors, like data attributes and accessors, have associated ObjectTeam properties. In ObjectTeam, you edit these properties by editing the properties of the association.</B.BODY
  76700. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  76701. ></RBW-AUTOGEN
  76702. ></RBW-MARKER
  76703. ><RBW-PARABODY>To edit association properties:</RBW-PARABODY
  76704. ></P.PROCEDURE
  76705. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  76706. ></RBW-AUTOGEN
  76707. ></RBW-MARKER
  76708. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  76709. ></LN.LIST.NUM
  76710. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  76711. ></RBW-AUTOGEN
  76712. ></RBW-MARKER
  76713. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  76714. ></LN.LIST.NUM
  76715. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  76716. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  76717. ></RBW-AUTOGEN
  76718. ></RBW-MARKER
  76719. ><RBW-PARABODY>Select a role name from the list in the left pane of the dialog box.</RBW-PARABODY
  76720. ></LN.LIST.NUM
  76721. ><LR.LIST.RESULT>The association attribute properties appear on the right side of the dialog box.</LR.LIST.RESULT
  76722. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  76723. ></RBW-AUTOGEN
  76724. ></RBW-MARKER
  76725. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  76726. ></LN.LIST.NUM
  76727. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  76728. ></RBW-MARKER
  76729. ><RBW-PARABODY><RBW-IDXTERM TERM1="comment" TERM2="for association"></RBW-IDXTERM
  76730. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76731. ><RBW-IDXTERM TERM1="association attribute property" TERM2="for comment"></RBW-IDXTERM
  76732. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76733. ><RBW-IDXTERM TERM1="Java, generated" TERM2="comment, for association"></RBW-IDXTERM
  76734. >Use the Text tab to insert comments in the generated code, as described in <RBW-XREF REFID="29648" TYPE="XREF-TEXTCOPY">Specifying Comments for Data Attributes</RBW-XREF
  76735. >. For association attributes, the comments appear immediately before the association attribute declaration in the generated code.</RBW-PARABODY
  76736. ></LB2.LIST.BULLET.2
  76737. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  76738. ></RBW-MARKER
  76739. ><RBW-PARABODY><RBW-IDXTERM TERM1="association attribute property" TERM2="access"></RBW-IDXTERM
  76740. ><RBW-IDXTERM TERM1="access property" TERM2="for association attribute"></RBW-IDXTERM
  76741. >Use the Attribute Access box on the Access tab to specify the accessibility of the association attribute, as described in <RBW-XREF REFID="35486" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Data Attributes</RBW-XREF
  76742. >.</RBW-PARABODY
  76743. ></LB2.LIST.BULLET.2
  76744. ><N3.NOTE.3><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  76745. ></RBW-AUTOGEN
  76746. >Association attributes for bidirectional associations are always Public. For these attributes, the code generator ignores the setting of the Attribute Access field.</N3.NOTE.3
  76747. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  76748. ></RBW-MARKER
  76749. ><RBW-PARABODY><RBW-IDXTERM TERM1="association attribute property" TERM2="access method"></RBW-IDXTERM
  76750. ><RBW-IDXTERM TERM1="access property" TERM2="for association attribute access method"></RBW-IDXTERM
  76751. >Use the Attribute Access Methods box on the Access tab to specify the access methods for the association attribute, as described in <RBW-XREF REFID="21279" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes</RBW-XREF
  76752. >.</RBW-PARABODY
  76753. ></LB2.LIST.BULLET.2
  76754. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  76755. ></RBW-MARKER
  76756. ><RBW-PARABODY><RBW-IDXTERM TERM1="association attribute property" TERM2="Transient modifier"></RBW-IDXTERM
  76757. ><RBW-IDXTERM TERM1="association attribute property" TERM2="Static modifier"></RBW-IDXTERM
  76758. ><RBW-IDXTERM TERM1="modifier property" TERM2="for association"></RBW-IDXTERM
  76759. ><RBW-IDXTERM TERM1="Transient modifier property" TERM2="for association attribute"></RBW-IDXTERM
  76760. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76761. ><RBW-IDXTERM TERM1="static modifier property" TERM2="for association attribute"></RBW-IDXTERM
  76762. >Use the Modifiers tab to specify modifiers that affect the behavior of the data attribute, as described in <RBW-XREF REFID="18563" TYPE="XREF-TEXTCOPY">Specifying Modifiers for Data Attributes</RBW-XREF
  76763. >.</RBW-PARABODY
  76764. ></LB2.LIST.BULLET.2
  76765. ><LT2.LIST.TEXT.2>Association attributes have only two modifiers: static and transient. Static makes the association attribute a class attribute. Transient marks the attribute as not part of the persistent state of the object.</LT2.LIST.TEXT.2
  76766. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  76767. ></RBW-AUTOGEN
  76768. ></RBW-MARKER
  76769. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  76770. ></LN.LIST.NUM
  76771. ></LABEL
  76772. ></SUBSECTION
  76773. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19864"></RBW-ANCHOR
  76774. >Mapping Associations With Multiplicity of Many</SS.SUBSEC.HEAD
  76775. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76776. >Prerequisite</L.LABEL
  76777. ><B.BODY><RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  76778. > describes the mapping of an ObjectTeam association with multiplicity of one. This section assumes that you are familiar with that information.</B.BODY
  76779. ></LABEL
  76780. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76781. >Multiplicity of many</L.LABEL
  76782. ><B.BODY><RBW-IDXTERM TERM1="one-to-many association"></RBW-IDXTERM
  76783. ><RBW-IDXTERM TERM1="many-to-one association"></RBW-IDXTERM
  76784. ><RBW-IDXTERM TERM1="many-to-many association"></RBW-IDXTERM
  76785. ><RBW-IDXTERM TERM1="association" TERM2="one-to-many"></RBW-IDXTERM
  76786. ><RBW-IDXTERM TERM1="association" TERM2="many-to-many"></RBW-IDXTERM
  76787. >This section describes how the Java code generator implements the following association between the Customer class and the Book class. </B.BODY
  76788. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00686.unk" origfile="pics/asscmany.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76789. ></FA.FIGURE.ANCHOR
  76790. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  76791. ></RBW-AUTOGEN
  76792. >The generated code is the same, regardless of whether you have specified an explicit number for the multiplicity.</N.NOTE
  76793. ></LABEL
  76794. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76795. >Mapping a many association</L.LABEL
  76796. ><B.BODY><RBW-IDXTERM TERM1="Vector class"></RBW-IDXTERM
  76797. >The mapping of an association with a multiplicity of many is similar to that of an association with a multiplicity of one; however, the type of the association attribute is different. </B.BODY
  76798. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76799. ></RBW-AUTOGEN
  76800. ></RBW-MARKER
  76801. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>One</CX5FX5FBULLET.EMPHASIS
  76802. >. For an association with a multiplicity of one, the type of the association attribute is the associated class.</RBW-PARABODY
  76803. ></LB.LIST.BULLET
  76804. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  76805. ></RBW-AUTOGEN
  76806. ></RBW-MARKER
  76807. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Many</CX5FX5FBULLET.EMPHASIS
  76808. >. For an association with a multiplicity of many, the type of the association attribute is the Vector class. </RBW-PARABODY
  76809. ></LB.LIST.BULLET
  76810. ><LT.LIST.TEXT>The Vector class uses a slightly different set of attribute access methods. For read access, it uses a get method. For write access, however, it uses two methods: add and remove. All three methods are shown in the following example.</LT.LIST.TEXT
  76811. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  76812. ></RBW-AUTOGEN
  76813. >The Vector class is in the <CX5FX5FPROCEDURE.NAME>util</CX5FX5FPROCEDURE.NAME
  76814. > package shipped with the Java Development Kit (JDK) 1.0.</N.NOTE
  76815. ></LABEL
  76816. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76817. >Example</L.LABEL
  76818. ><B.BODY>Following is an excerpt from the code generated for the Customer class shown above. Because this association is unidirectional, the Book class does not contain any code related to the association.</B.BODY
  76819. ><EM.EXAMPLE.MONO>public class Customer extends Object {</EM.EXAMPLE.MONO
  76820. ><EM.EXAMPLE.MONO>    // Data attributes</EM.EXAMPLE.MONO
  76821. ><EM.EXAMPLE.MONO>    private String name;</EM.EXAMPLE.MONO
  76822. ><EM.EXAMPLE.MONO>    // Association attributes</EM.EXAMPLE.MONO
  76823. ><EM.EXAMPLE.MONO>    public Vector bookSet;</EM.EXAMPLE.MONO
  76824. ><EM.EXAMPLE.MONO>    // Default constructors</EM.EXAMPLE.MONO
  76825. ><EM.EXAMPLE.MONO>    public Customer() {</EM.EXAMPLE.MONO
  76826. ><EM.EXAMPLE.MONO>        bookSet = new Vector();</EM.EXAMPLE.MONO
  76827. ><EM.EXAMPLE.MONO>        // Start user code section</EM.EXAMPLE.MONO
  76828. ><EM.EXAMPLE.MONO>        // End user code section</EM.EXAMPLE.MONO
  76829. ><EM.EXAMPLE.MONO>    } // default constructor Customer</EM.EXAMPLE.MONO
  76830. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  76831. ><EM.EXAMPLE.MONO>    // Attribute accessors</EM.EXAMPLE.MONO
  76832. ><EM.EXAMPLE.MONO>    public String getName() {</EM.EXAMPLE.MONO
  76833. ><EM.EXAMPLE.MONO>        return name;</EM.EXAMPLE.MONO
  76834. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76835. ><EM.EXAMPLE.MONO>    public void setName(String name_) {</EM.EXAMPLE.MONO
  76836. ><EM.EXAMPLE.MONO>        name = name_;</EM.EXAMPLE.MONO
  76837. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76838. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  76839. ><EM.EXAMPLE.MONO>    // Association accessors</EM.EXAMPLE.MONO
  76840. ><EM.EXAMPLE.MONO>    public void addBook(Book book_) {</EM.EXAMPLE.MONO
  76841. ><EM.EXAMPLE.MONO>        if (book_ == null)</EM.EXAMPLE.MONO
  76842. ><EM.EXAMPLE.MONO>            return;</EM.EXAMPLE.MONO
  76843. ><EM.EXAMPLE.MONO>        bookSet.addElement(book_);</EM.EXAMPLE.MONO
  76844. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76845. ><EM.EXAMPLE.MONO>    public void removeBook(Book book_) {</EM.EXAMPLE.MONO
  76846. ><EM.EXAMPLE.MONO>        if (book_ == null)</EM.EXAMPLE.MONO
  76847. ><EM.EXAMPLE.MONO>            return;</EM.EXAMPLE.MONO
  76848. ><EM.EXAMPLE.MONO>        bookSet.removeElement(book_);</EM.EXAMPLE.MONO
  76849. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76850. ><EM.EXAMPLE.MONO>    public Vector getBookSet() {</EM.EXAMPLE.MONO
  76851. ><EM.EXAMPLE.MONO>        return bookSet;</EM.EXAMPLE.MONO
  76852. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76853. ><EM.EXAMPLE.MONO>} // class Customer</EM.EXAMPLE.MONO
  76854. ></LABEL
  76855. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76856. >Association attribute properties</L.LABEL
  76857. ><B.BODY>You can affect the code generated for any association by specifying the properties of the association, as described in <RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  76858. >.</B.BODY
  76859. ></LABEL
  76860. ></SUBSECTION
  76861. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14868"></RBW-ANCHOR
  76862. >Mapping Ordered Associations</SS.SUBSEC.HEAD
  76863. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76864. >Prerequisite</L.LABEL
  76865. ><B.BODY><RBW-XREF REFID="19864" TYPE="XREF-TEXTCOPY">Mapping Associations With Multiplicity of Many</RBW-XREF
  76866. > describes the mapping of an ObjectTeam association with multiplicity of many. This section assumes that you are familiar with that information.</B.BODY
  76867. ></LABEL
  76868. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76869. >Ordered association</L.LABEL
  76870. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="ordered"></RBW-IDXTERM
  76871. ><RBW-IDXTERM TERM1="ordered association"></RBW-IDXTERM
  76872. ><RBW-IDXTERM TERM1="mapping" TERM2="ordered association"></RBW-IDXTERM
  76873. >This section describes how the Java code generator implements the following ordered association between the Customer class and the Book class. </B.BODY
  76874. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00687.unk" origfile="pics/asscord.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76875. ></FA.FIGURE.ANCHOR
  76876. ></LABEL
  76877. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76878. >Mapping an ordered association</L.LABEL
  76879. ><B.BODY><RBW-IDXTERM TERM1="Queue class" TERM2="and ordered association"></RBW-IDXTERM
  76880. >The mapping of an ordered association is similar to that of an association with an unordered multiplicity of many; however, the type of the association attribute is different. </B.BODY
  76881. ><B.BODY>For an ordered association, the type of the association attribute is the Queue class. The Queue class uses a slightly different set of attribute access methods. For read access, it uses a get method. For write access, it uses two methods: append and remove. All three methods are shown in the following example.</B.BODY
  76882. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  76883. ></RBW-AUTOGEN
  76884. >The Queue class is shipped with ObjectTeam’s Java code generator. Configuring the Java environment, as described in <RBW-XREF REFID="27027" TYPE="XREF-TEXTCOPY">Configuring the Java Environment</RBW-XREF
  76885. >, makes the Queue class available. You do not need the Queue class to generate the Java code, but you do need it to run the code.</N.NOTE
  76886. ></LABEL
  76887. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76888. >Example</L.LABEL
  76889. ><B.BODY>Following is an excerpt from the code generated for the Customer class shown above. Because this association is unidirectional, the Book class does not contain any code related to the association.</B.BODY
  76890. ><EM.EXAMPLE.MONO>public class Customer extends Object {</EM.EXAMPLE.MONO
  76891. ><EM.EXAMPLE.MONO>    // Data attributes</EM.EXAMPLE.MONO
  76892. ><EM.EXAMPLE.MONO>    private String name;</EM.EXAMPLE.MONO
  76893. ><EM.EXAMPLE.MONO>    // Association attributes</EM.EXAMPLE.MONO
  76894. ><EM.EXAMPLE.MONO>    public Queue bookSet;</EM.EXAMPLE.MONO
  76895. ><EM.EXAMPLE.MONO>    // Default constructor</EM.EXAMPLE.MONO
  76896. ><EM.EXAMPLE.MONO>    public Customer() {</EM.EXAMPLE.MONO
  76897. ><EM.EXAMPLE.MONO>        bookSet = new Queue();</EM.EXAMPLE.MONO
  76898. ><EM.EXAMPLE.MONO>        // Start user code section</EM.EXAMPLE.MONO
  76899. ><EM.EXAMPLE.MONO>        // End user code section</EM.EXAMPLE.MONO
  76900. ><EM.EXAMPLE.MONO>    } // default constructor Customer</EM.EXAMPLE.MONO
  76901. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  76902. ><EM.EXAMPLE.MONO>    // Attribute accessors</EM.EXAMPLE.MONO
  76903. ><EM.EXAMPLE.MONO>    public String getName() {</EM.EXAMPLE.MONO
  76904. ><EM.EXAMPLE.MONO>        return name;</EM.EXAMPLE.MONO
  76905. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76906. ><EM.EXAMPLE.MONO>    public void setName(String name_) {</EM.EXAMPLE.MONO
  76907. ><EM.EXAMPLE.MONO>        name = name_;</EM.EXAMPLE.MONO
  76908. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76909. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  76910. ><EM.EXAMPLE.MONO>    // Association accessors</EM.EXAMPLE.MONO
  76911. ><EM.EXAMPLE.MONO>    public void appendBook(Book book_) {</EM.EXAMPLE.MONO
  76912. ><EM.EXAMPLE.MONO>        if (book_ == null)</EM.EXAMPLE.MONO
  76913. ><EM.EXAMPLE.MONO>            return;</EM.EXAMPLE.MONO
  76914. ><EM.EXAMPLE.MONO>        bookSet.append(book_);</EM.EXAMPLE.MONO
  76915. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76916. ><EM.EXAMPLE.MONO>    public void removeBook(Book book_) {</EM.EXAMPLE.MONO
  76917. ><EM.EXAMPLE.MONO>        if (book_ == null)</EM.EXAMPLE.MONO
  76918. ><EM.EXAMPLE.MONO>            return;</EM.EXAMPLE.MONO
  76919. ><EM.EXAMPLE.MONO>        bookSet.removeElement(book_);</EM.EXAMPLE.MONO
  76920. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76921. ><EM.EXAMPLE.MONO>    public Queue getBookSet() {</EM.EXAMPLE.MONO
  76922. ><EM.EXAMPLE.MONO>        return bookSet;</EM.EXAMPLE.MONO
  76923. ><EM.EXAMPLE.MONO>    }</EM.EXAMPLE.MONO
  76924. ><EM.EXAMPLE.MONO>} // class Customer</EM.EXAMPLE.MONO
  76925. ></LABEL
  76926. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76927. >Association attribute properties</L.LABEL
  76928. ><B.BODY>You can affect the code generated for any association by specifying the properties of the association, as described in <RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  76929. >.</B.BODY
  76930. ></LABEL
  76931. ></SUBSECTION
  76932. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13312"></RBW-ANCHOR
  76933. >Mapping Qualified Associations</SS.SUBSEC.HEAD
  76934. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76935. >Prerequisite</L.LABEL
  76936. ><B.BODY><RBW-XREF REFID="19864" TYPE="XREF-TEXTCOPY">Mapping Associations With Multiplicity of Many</RBW-XREF
  76937. > describes the mapping of an ObjectTeam association with multiplicity of many. This section assumes that you are familiar with that information.</B.BODY
  76938. ></LABEL
  76939. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76940. >Qualified association</L.LABEL
  76941. ><B.BODY>This section describes how the Java code generator implements the following association between the Customer class and the Book class. </B.BODY
  76942. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00688.unk" origfile="pics/asscqual.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  76943. ></FA.FIGURE.ANCHOR
  76944. ></LABEL
  76945. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76946. >Mapping a qualified association</L.LABEL
  76947. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="qualified"></RBW-IDXTERM
  76948. ><RBW-IDXTERM TERM1="qualified association"></RBW-IDXTERM
  76949. ><RBW-IDXTERM TERM1="mapping" TERM2="qualified association"></RBW-IDXTERM
  76950. ><RBW-IDXTERM TERM1="Hashtable class"></RBW-IDXTERM
  76951. >The mapping of a qualified association is similar to that of an association with multiplicity of many; however, the type of the association attribute is different.</B.BODY
  76952. ><B.BODY>For a qualified association, the type of the association attribute is the Hashtable class. The qualifier (bookID, in the CD above) is used as a key into the hashtable for storage and retrieval.</B.BODY
  76953. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  76954. ></RBW-AUTOGEN
  76955. >The Hashtable class is in the util package shipped with the Java Development Kit (JDK) 1.0.</N.NOTE
  76956. ></LABEL
  76957. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76958. >hashCode and equals methods</L.LABEL
  76959. ><B.BODY><RBW-IDXTERM TERM1="hashCode method"></RBW-IDXTERM
  76960. ><RBW-IDXTERM TERM1="equals method"></RBW-IDXTERM
  76961. >If the qualified association has a multiplicity greater than 1, you must supply both a hashCode method and an equals methods for the qualifier. A comment in the generated code reminds you to supply these methods.</B.BODY
  76962. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76963. >Example</SL.SUBLABEL
  76964. ><B.BODY>Each data type supplied in the Java Development Kit (JDK) 1.0 includes the hashCode and equals methods. For examples, see the hashCode and equals methods declared for the String object in the JDK file <JDK&truehy;install>\java\src\java\lang\String.java.</B.BODY
  76965. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  76966. ></RBW-AUTOGEN
  76967. >If you specify a JDK data type as the data type of the qualifier, you do not have to supply the hashCode and equals methods. The JDK supplies them for you.</T.TIP
  76968. ></LABEL
  76969. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  76970. >How to edit qualifier properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for qualifier"></RBW-IDXTERM
  76971. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  76972. ><RBW-IDXTERM TERM1="qualifier" TERM2="editing properties"></RBW-IDXTERM
  76973. ></L.LABEL
  76974. ><B.BODY>The only properties available for a qualifier are the data type and comments. You can also edit other properties of the association, as described in <RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  76975. >.</B.BODY
  76976. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  76977. ></RBW-AUTOGEN
  76978. ></RBW-MARKER
  76979. ><RBW-PARABODY>To edit qualifier properties:</RBW-PARABODY
  76980. ></P.PROCEDURE
  76981. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  76982. ></RBW-AUTOGEN
  76983. ></RBW-MARKER
  76984. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  76985. ></LN.LIST.NUM
  76986. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  76987. ></RBW-AUTOGEN
  76988. ></RBW-MARKER
  76989. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  76990. ></LN.LIST.NUM
  76991. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  76992. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  76993. ></RBW-AUTOGEN
  76994. ></RBW-MARKER
  76995. ><RBW-PARABODY>Select a qualifier from the list in the left pane of the dialog box.</RBW-PARABODY
  76996. ></LN.LIST.NUM
  76997. ><LR.LIST.RESULT>The qualifier properties appear on the right side of the dialog box.</LR.LIST.RESULT
  76998. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  76999. ></RBW-AUTOGEN
  77000. ></RBW-MARKER
  77001. ><RBW-PARABODY>Select the desired properties. </RBW-PARABODY
  77002. ></LN.LIST.NUM
  77003. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  77004. ></RBW-MARKER
  77005. ><RBW-PARABODY><RBW-IDXTERM TERM1="comment" TERM2="for qualifier"></RBW-IDXTERM
  77006. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  77007. ><RBW-IDXTERM TERM1="qualifier" TERM2="comment for"></RBW-IDXTERM
  77008. ><RBW-IDXTERM TERM1="Java, generated" TERM2="comment, for qualifier"></RBW-IDXTERM
  77009. >Use the Text tab to insert comments in the generated code, as described in <RBW-XREF REFID="29648" TYPE="XREF-TEXTCOPY">Specifying Comments for Data Attributes</RBW-XREF
  77010. >. For qualifiers, the comments appear immediately before the qualifier declaration in the generated code.</RBW-PARABODY
  77011. ></LB2.LIST.BULLET.2
  77012. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  77013. ></RBW-MARKER
  77014. ><RBW-PARABODY><RBW-IDXTERM TERM1="qualifier" TERM2="data type"></RBW-IDXTERM
  77015. ><RBW-IDXTERM TERM1="data type" TERM2="for qualifier"></RBW-IDXTERM
  77016. >Use the Misc tab to specify a data type for the qualifier.</RBW-PARABODY
  77017. ></LB2.LIST.BULLET.2
  77018. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  77019. ></RBW-AUTOGEN
  77020. ></RBW-MARKER
  77021. ><RBW-PARABODY>Click OK.</RBW-PARABODY
  77022. ></LN.LIST.NUM
  77023. ></LABEL
  77024. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77025. >Example</L.LABEL
  77026. ><B.BODY>Following is an excerpt from the code generated for the Customer class shown above. Because the association is unidirectional, the Book class does not contain any code related to the association.</B.BODY
  77027. ><B.BODY>The data type of the bookID qualifier is specified as String, which is a data type contained in the Java Development Kit (JDK) 1.0. The comment in the code reminds you that you must supply hashCode and equals methods for bookID. In this case, the methods are supplied in the JDK.</B.BODY
  77028. ><EWM.EXAMPLEW.MONO>public class Customer extends Object {</EWM.EXAMPLEW.MONO
  77029. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  77030. ><EWM.EXAMPLEW.MONO>    private String name;</EWM.EXAMPLEW.MONO
  77031. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  77032. ><EWM.EXAMPLEW.MONO>    public Hashtable bookSet;</EWM.EXAMPLEW.MONO
  77033. ><EWM.EXAMPLEW.MONO>    // Default constructor</EWM.EXAMPLEW.MONO
  77034. ><EWM.EXAMPLEW.MONO>    public Customer() {</EWM.EXAMPLEW.MONO
  77035. ><EWM.EXAMPLEW.MONO>        bookSet = new Hashtable();</EWM.EXAMPLEW.MONO
  77036. ><EWM.EXAMPLEW.MONO>        // Start user code section</EWM.EXAMPLEW.MONO
  77037. ><EWM.EXAMPLEW.MONO>        // End user code section</EWM.EXAMPLEW.MONO
  77038. ><EWM.EXAMPLEW.MONO>    } // default constructor Customer</EWM.EXAMPLEW.MONO
  77039. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  77040. ><EWM.EXAMPLEW.MONO>    // Attribute accessors</EWM.EXAMPLEW.MONO
  77041. ><EWM.EXAMPLEW.MONO>    public String getName() {</EWM.EXAMPLEW.MONO
  77042. ><EWM.EXAMPLEW.MONO>        return name;</EWM.EXAMPLEW.MONO
  77043. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77044. ><EWM.EXAMPLEW.MONO>    public void setName(String name_) {</EWM.EXAMPLEW.MONO
  77045. ><EWM.EXAMPLEW.MONO>        name = name_;</EWM.EXAMPLEW.MONO
  77046. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77047. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77048. ><EWM.EXAMPLEW.MONO>    // Association accessors</EWM.EXAMPLEW.MONO
  77049. ><EWM.EXAMPLEW.MONO>    public Vector getBookSet(String bookID_) {</EWM.EXAMPLEW.MONO
  77050. ><EWM.EXAMPLEW.MONO>        Object object = bookSet.get(bookID_);</EWM.EXAMPLEW.MONO
  77051. ><EWM.EXAMPLEW.MONO>        if (object != null)</EWM.EXAMPLEW.MONO
  77052. ><EWM.EXAMPLEW.MONO>            return ((Vector) object);</EWM.EXAMPLEW.MONO
  77053. ><EWM.EXAMPLEW.MONO>        return null;</EWM.EXAMPLEW.MONO
  77054. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77055. ><EWM.EXAMPLEW.MONO>    public void addBook(String bookID_, Book book_) {</EWM.EXAMPLEW.MONO
  77056. ><EWM.EXAMPLEW.MONO>        if (book_ == null)</EWM.EXAMPLEW.MONO
  77057. ><EWM.EXAMPLEW.MONO>            return;</EWM.EXAMPLEW.MONO
  77058. ><EWM.EXAMPLEW.MONO>        // You must supply a hashCode and equals method for Object</EWM.EXAMPLEW.MONO
  77059. ><EWM.EXAMPLEW.MONO>        // bookID for java.util.Hashtable usage.</EWM.EXAMPLEW.MONO
  77060. ><EWM.EXAMPLEW.MONO>        Vector vector = (Vector) bookSet.get(bookID_);</EWM.EXAMPLEW.MONO
  77061. ><EWM.EXAMPLEW.MONO>        if (vector == null) {</EWM.EXAMPLEW.MONO
  77062. ><EWM.EXAMPLEW.MONO>            vector = new Vector();</EWM.EXAMPLEW.MONO
  77063. ><EWM.EXAMPLEW.MONO>            bookSet.put(bookID_, vector);</EWM.EXAMPLEW.MONO
  77064. ><EWM.EXAMPLEW.MONO>        }</EWM.EXAMPLEW.MONO
  77065. ><EWM.EXAMPLEW.MONO>        vector.addElement(book_);</EWM.EXAMPLEW.MONO
  77066. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77067. ><EWM.EXAMPLEW.MONO>    public void removeBook(String bookID_, Book book_) {</EWM.EXAMPLEW.MONO
  77068. ><EWM.EXAMPLEW.MONO>        if (book_ == null)</EWM.EXAMPLEW.MONO
  77069. ><EWM.EXAMPLEW.MONO>            return;</EWM.EXAMPLEW.MONO
  77070. ><EWM.EXAMPLEW.MONO>        Vector vector = (Vector) bookSet.get(bookID_);</EWM.EXAMPLEW.MONO
  77071. ><EWM.EXAMPLEW.MONO>        if (vector != null)</EWM.EXAMPLEW.MONO
  77072. ><EWM.EXAMPLEW.MONO>            vector.removeElement(book_);</EWM.EXAMPLEW.MONO
  77073. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77074. ><EWM.EXAMPLEW.MONO>} // class Customer</EWM.EXAMPLEW.MONO
  77075. ></LABEL
  77076. ></SUBSECTION
  77077. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37751"></RBW-ANCHOR
  77078. >Mapping Link Attributes and Classes as Associations</SS.SUBSEC.HEAD
  77079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77080. >Prerequisite</L.LABEL
  77081. ><B.BODY>This section assumes that you are familiar with the mapping of various types of associations, as described in the previous sections.</B.BODY
  77082. ></LABEL
  77083. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77084. >Attributes and classes on associations</L.LABEL
  77085. ><B.BODY>ObjectTeam allows you specify information about an association by linking attributes, or a class, to the association. The following diagram shows a link attribute symbol; a class symbol can be used in the same location.</B.BODY
  77086. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00689.unk" origfile="pics/assclnk.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  77087. ></FA.FIGURE.ANCHOR
  77088. ></LABEL
  77089. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77090. >Association mapped as two associations</L.LABEL
  77091. ><B.BODY>An association that includes a link attribute or a class is transformed before code generation. The link attribute or class becomes a separate class, with appropriate associations to the original classes. The generated code is then based on the transformed association.</B.BODY
  77092. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77093. >Example</SL.SUBLABEL
  77094. ><B.BODY>The code generated for the CD shown above is based on the following CD:</B.BODY
  77095. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00690.unk" origfile="pics/assccnv.gif" origtype="X" origdoc="../../sources/java/javagen.fm5.mif"></RBW-GRAPHIC
  77096. ></FA.FIGURE.ANCHOR
  77097. ></LABEL
  77098. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77099. >Name used for the third class</L.LABEL
  77100. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="and link attribute"></RBW-IDXTERM
  77101. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  77102. ><RBW-IDXTERM TERM1="link attribute"></RBW-IDXTERM
  77103. ><RBW-IDXTERM TERM1="mapping" TERM2="link attribute"></RBW-IDXTERM
  77104. >If the association includes a link attribute, the new class is assigned the name of the association. Therefore, an association that has a link attribute must have an association name.</B.BODY
  77105. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="and class"></RBW-IDXTERM
  77106. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  77107. ><RBW-IDXTERM TERM1="class" TERM2="as association"></RBW-IDXTERM
  77108. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  77109. ><RBW-IDXTERM TERM1="mapping" TERM2="class, as association"></RBW-IDXTERM
  77110. >If the association includes a class, that class is used as the third class. Therefore, an association that includes a class does not need an association name.</B.BODY
  77111. ></LABEL
  77112. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77113. >Role names are required</L.LABEL
  77114. ><B.BODY>As with all associations, role names are required. If a role name is omitted, the association attributes and methods that would map to that role name are not generated.</B.BODY
  77115. ></LABEL
  77116. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77117. >Example</L.LABEL
  77118. ><BI.BODY.INTRO>Following is the code generated for each of the three Java classes produced by the CD shown above.</BI.BODY.INTRO
  77119. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77120. >Generated code for the purchase class</SL.SUBLABEL
  77121. ><BI.BODY.INTRO></BI.BODY.INTRO
  77122. ><EWM.EXAMPLEW.MONO>public class purchase extends Object {</EWM.EXAMPLEW.MONO
  77123. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  77124. ><EWM.EXAMPLEW.MONO>    private String date;</EWM.EXAMPLEW.MONO
  77125. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  77126. ><EWM.EXAMPLEW.MONO>    public Customer cust;</EWM.EXAMPLEW.MONO
  77127. ><EWM.EXAMPLEW.MONO>    public Book book;</EWM.EXAMPLEW.MONO
  77128. ><EWM.EXAMPLEW.MONO>    // Default constructor</EWM.EXAMPLEW.MONO
  77129. ><EWM.EXAMPLEW.MONO>    public purchase(Customer cust_, Book book_) {</EWM.EXAMPLEW.MONO
  77130. ><EWM.EXAMPLEW.MONO>        cust = cust_;</EWM.EXAMPLEW.MONO
  77131. ><EWM.EXAMPLEW.MONO>        book = book_;</EWM.EXAMPLEW.MONO
  77132. ><EWM.EXAMPLEW.MONO>        cust.purchaseOfBookSet.addElement(this);</EWM.EXAMPLEW.MONO
  77133. ><EWM.EXAMPLEW.MONO>        book.purchaseOfCust = this;</EWM.EXAMPLEW.MONO
  77134. ><EWM.EXAMPLEW.MONO>        // Start user code section</EWM.EXAMPLEW.MONO
  77135. ><EWM.EXAMPLEW.MONO>        // End user code section</EWM.EXAMPLEW.MONO
  77136. ><EWM.EXAMPLEW.MONO>    } // default constructor purchase</EWM.EXAMPLEW.MONO
  77137. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77138. ><EWM.EXAMPLEW.MONO>    // Methods</EWM.EXAMPLEW.MONO
  77139. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77140. ><EWM.EXAMPLEW.MONO>    // Do not delete this line &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  77141. ><EWM.EXAMPLEW.MONO>    // Attribute accessors</EWM.EXAMPLEW.MONO
  77142. ><EWM.EXAMPLEW.MONO>    public String getDate() {</EWM.EXAMPLEW.MONO
  77143. ><EWM.EXAMPLEW.MONO>        return date;</EWM.EXAMPLEW.MONO
  77144. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77145. ><EWM.EXAMPLEW.MONO>    public void setDate(String date_) {</EWM.EXAMPLEW.MONO
  77146. ><EWM.EXAMPLEW.MONO>        date = date_;</EWM.EXAMPLEW.MONO
  77147. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77148. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77149. ><EWM.EXAMPLEW.MONO>    // Association accessors</EWM.EXAMPLEW.MONO
  77150. ><EWM.EXAMPLEW.MONO>    public Customer getCust() {</EWM.EXAMPLEW.MONO
  77151. ><EWM.EXAMPLEW.MONO>        return cust;</EWM.EXAMPLEW.MONO
  77152. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77153. ><EWM.EXAMPLEW.MONO>    public Book getBook() {</EWM.EXAMPLEW.MONO
  77154. ><EWM.EXAMPLEW.MONO>        return book;</EWM.EXAMPLEW.MONO
  77155. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77156. ><EWM.EXAMPLEW.MONO>} // class purchase</EWM.EXAMPLEW.MONO
  77157. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77158. >Generated code for the Customer class</SL.SUBLABEL
  77159. ><BI.BODY.INTRO></BI.BODY.INTRO
  77160. ><EWM.EXAMPLEW.MONO>public class Customer extends Object {</EWM.EXAMPLEW.MONO
  77161. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  77162. ><EWM.EXAMPLEW.MONO>    private String name;</EWM.EXAMPLEW.MONO
  77163. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  77164. ><EWM.EXAMPLEW.MONO>    public Vector purchaseOfBookSet;</EWM.EXAMPLEW.MONO
  77165. ><EWM.EXAMPLEW.MONO>    // Default constructor</EWM.EXAMPLEW.MONO
  77166. ><EWM.EXAMPLEW.MONO>    public Customer() {</EWM.EXAMPLEW.MONO
  77167. ><EWM.EXAMPLEW.MONO>        purchaseOfBookSet = new Vector();</EWM.EXAMPLEW.MONO
  77168. ><EWM.EXAMPLEW.MONO>        // Start user code section</EWM.EXAMPLEW.MONO
  77169. ><EWM.EXAMPLEW.MONO>        // End user code section</EWM.EXAMPLEW.MONO
  77170. ><EWM.EXAMPLEW.MONO>    } // default constructor Customer</EWM.EXAMPLEW.MONO
  77171. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77172. ><EWM.EXAMPLEW.MONO>    // Methods</EWM.EXAMPLEW.MONO
  77173. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77174. ><EWM.EXAMPLEW.MONO>    // Do not delete this line &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  77175. ><EWM.EXAMPLEW.MONO>    // Attribute accessors</EWM.EXAMPLEW.MONO
  77176. ><EWM.EXAMPLEW.MONO>    public String getName() {</EWM.EXAMPLEW.MONO
  77177. ><EWM.EXAMPLEW.MONO>        return name;</EWM.EXAMPLEW.MONO
  77178. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77179. ><EWM.EXAMPLEW.MONO>    public void setName(String name_) {</EWM.EXAMPLEW.MONO
  77180. ><EWM.EXAMPLEW.MONO>        name = name_;</EWM.EXAMPLEW.MONO
  77181. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77182. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77183. ><EWM.EXAMPLEW.MONO>    // Association accessors</EWM.EXAMPLEW.MONO
  77184. ><EWM.EXAMPLEW.MONO>    public Vector getPurchaseOfBookSet() {</EWM.EXAMPLEW.MONO
  77185. ><EWM.EXAMPLEW.MONO>        return purchaseOfBookSet;</EWM.EXAMPLEW.MONO
  77186. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77187. ><EWM.EXAMPLEW.MONO>} // class Customer</EWM.EXAMPLEW.MONO
  77188. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77189. >Generated code for the Book class</SL.SUBLABEL
  77190. ><BI.BODY.INTRO></BI.BODY.INTRO
  77191. ><EWM.EXAMPLEW.MONO>public class Book extends Object {</EWM.EXAMPLEW.MONO
  77192. ><EWM.EXAMPLEW.MONO>    // Data attributes</EWM.EXAMPLEW.MONO
  77193. ><EWM.EXAMPLEW.MONO>    private String title;</EWM.EXAMPLEW.MONO
  77194. ><EWM.EXAMPLEW.MONO>    // Association attributes</EWM.EXAMPLEW.MONO
  77195. ><EWM.EXAMPLEW.MONO>    public purchase purchaseOfCust;</EWM.EXAMPLEW.MONO
  77196. ><EWM.EXAMPLEW.MONO>    // Default constructor</EWM.EXAMPLEW.MONO
  77197. ><EWM.EXAMPLEW.MONO>    public Book() {</EWM.EXAMPLEW.MONO
  77198. ><EWM.EXAMPLEW.MONO>        // Start user code section</EWM.EXAMPLEW.MONO
  77199. ><EWM.EXAMPLEW.MONO>        // End user code section</EWM.EXAMPLEW.MONO
  77200. ><EWM.EXAMPLEW.MONO>    } // default constructor Book</EWM.EXAMPLEW.MONO
  77201. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77202. ><EWM.EXAMPLEW.MONO>    // Methods</EWM.EXAMPLEW.MONO
  77203. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77204. ><EWM.EXAMPLEW.MONO>    // Do not delete this line &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  77205. ><EWM.EXAMPLEW.MONO>    // Attribute accessors</EWM.EXAMPLEW.MONO
  77206. ><EWM.EXAMPLEW.MONO>    public String getTitle() {</EWM.EXAMPLEW.MONO
  77207. ><EWM.EXAMPLEW.MONO>        return title;</EWM.EXAMPLEW.MONO
  77208. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77209. ><EWM.EXAMPLEW.MONO>    public void setTitle(String title_) {</EWM.EXAMPLEW.MONO
  77210. ><EWM.EXAMPLEW.MONO>        title = title_;</EWM.EXAMPLEW.MONO
  77211. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77212. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  77213. ><EWM.EXAMPLEW.MONO>    // Association accessors</EWM.EXAMPLEW.MONO
  77214. ><EWM.EXAMPLEW.MONO>    public purchase getPurchaseOfCust() {</EWM.EXAMPLEW.MONO
  77215. ><EWM.EXAMPLEW.MONO>        return purchaseOfCust;</EWM.EXAMPLEW.MONO
  77216. ><EWM.EXAMPLEW.MONO>    }</EWM.EXAMPLEW.MONO
  77217. ><EWM.EXAMPLEW.MONO>} // class Book</EWM.EXAMPLEW.MONO
  77218. ></LABEL
  77219. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77220. >Association attribute properties</L.LABEL
  77221. ><B.BODY>As for all associations, you can affect the code generated for the association attributes and association attribute access methods by editing the properties for the association, as shown in <RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  77222. >.</B.BODY
  77223. ><B.BODY></B.BODY
  77224. ><RBWAUTO-0001></RBWAUTO-0001
  77225. ><!--
  77226.  
  77227.  
  77228.  
  77229.  
  77230.  
  77231. CONVERTING SOURCE FILE ../../sources/java/javaeng.fm5.mif
  77232.  
  77233.  
  77234. --><B.BODY></B.BODY
  77235. ><B.BODY></B.BODY
  77236. ><B.BODY></B.BODY
  77237. ><B.BODY></B.BODY
  77238. ><B.BODY></B.BODY
  77239. ></LABEL
  77240. ></SUBSECTION
  77241. ></SECTION
  77242. ></CHAPTER
  77243. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  77244. ></RBW-AUTOGEN
  77245. ><RBW-ANCHOR ID="32714"></RBW-ANCHOR
  77246. >Reverse and Round&truehy;Trip Engineering<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  77247. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Java</RBW-TEXTFLD
  77248. ></RBW-SYSOBJ
  77249. ></C.CHAPTER.HEAD
  77250. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77251. >Introduction</L.LABEL
  77252. ><B.BODY><RBW-IDXTERM TERM1="project" TERM2="using data from other sources"></RBW-IDXTERM
  77253. >This chapter describes how to use reverse engineering and round&truehy;trip engineering with the Java code generator.</B.BODY
  77254. ></LABEL
  77255. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77256. >Reverse engineering</L.LABEL
  77257. ><B.BODY>Reverse engineering Java code makes the structures and functions of the code visible in ObjectTeam. This process facilitates your understanding of the existing code, which gives you more opportunity to reuse it. The code that you reverse&truehy;engineer may come from other projects or from third parties, such as public domain software sites.</B.BODY
  77258. ></LABEL
  77259. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77260. >Round&truehy;trip engineering</L.LABEL
  77261. ><B.BODY>Round&truehy;trip engineering updates the ObjectTeam model based on the changes you have made to the generated Java source files. Use round&truehy;trip engineering to update the ObjectTeam model before you regenerate the source files. If you add an attribute or operation to the generated source file, but not to the ObjectTeam model, that attribute or operation is lost when you regenerate the source files.</B.BODY
  77262. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77263. >Explanation</SL.SUBLABEL
  77264. ><B.BODY>The code generator generates code based on the ObjectTeam model. When you regenerate the source file, only the attributes and operations defined in the model appear in the generated source file.</B.BODY
  77265. ></LABEL
  77266. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77267. >In this chapter</L.LABEL
  77268. ><B.BODY>This chapter contains the following sections:</B.BODY
  77269. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  77270. ></ENTRY
  77271. ></RBW-ROW
  77272. ></THEAD
  77273. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17364" TYPE="XREF-TEXTCOPY">Reverse Engineering&rbwtab;4–2</RBW-XREF
  77274. ></SB.SECTION.BLOCK.TABLE
  77275. ></ENTRY
  77276. ></RBW-ROW
  77277. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27974" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering&rbwtab;4–12</RBW-XREF
  77278. ></SB.SECTION.BLOCK.TABLE
  77279. ></ENTRY
  77280. ></RBW-ROW
  77281. ></TBODY
  77282. ></TGROUP
  77283. ></RBW-TABLE
  77284. ></LABEL
  77285. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17364"></RBW-ANCHOR
  77286. >Reverse Engineering</S.SECTION.HEAD
  77287. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77288. >Introduction</L.LABEL
  77289. ><B.BODY><RBW-IDXTERM TERM1="project" TERM2="using data from other sources"></RBW-IDXTERM
  77290. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  77291. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  77292. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  77293. ><RBW-IDXTERM TERM1="class library" TERM2="reverse engineering"></RBW-IDXTERM
  77294. >Reverse engineering parses .java files and builds CDs and CDMs that show the classes defined in those files.</B.BODY
  77295. ></LABEL
  77296. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77297. >Purpose </L.LABEL
  77298. ><B.BODY>Use reverse engineering to capture and display the classes defined in your .java files, which serves two primary purposes:</B.BODY
  77299. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77300. ></RBW-AUTOGEN
  77301. ></RBW-MARKER
  77302. ><RBW-PARABODY>Makes the classes available in ObjectTeam as external classes</RBW-PARABODY
  77303. ></LB.LIST.BULLET
  77304. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77305. ></RBW-AUTOGEN
  77306. ></RBW-MARKER
  77307. ><RBW-PARABODY>Helps you to understand the structure and functionality of classes</RBW-PARABODY
  77308. ></LB.LIST.BULLET
  77309. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77310. >Not an import utility</SL.SUBLABEL
  77311. ><B.BODY>Reverse engineering is not designed to capture all the information in a .java file. Do not use reverse engineering to import classes so that you can maintain them in ObjectTeam. If you generate .java files from the CDs and CDMs created by reverse engineering, they will not match the files you used to create those CDs and CDMs.</B.BODY
  77312. ></LABEL
  77313. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77314. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="class library"></RBW-IDXTERM
  77315. ><RBW-IDXTERM TERM1="translating" TERM2="c++ header files to Class Association Diagrams"></RBW-IDXTERM
  77316. ><RBW-ANCHOR ID="37729"></RBW-ANCHOR
  77317. >What happens during reverse engineering</L.LABEL
  77318. ><B.BODY>Reverse engineering translates .java files into CDs and CDMs that show the class hierarchy as follows:</B.BODY
  77319. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  77320. ></RBW-AUTOGEN
  77321. ></RBW-MARKER
  77322. ><RBW-PARABODY>Parses the .java files, then maps the Java elements to ObjectTeam elements.</RBW-PARABODY
  77323. ></LN.LIST.NUM
  77324. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  77325. ></RBW-AUTOGEN
  77326. ></RBW-MARKER
  77327. ><RBW-PARABODY>Creates CDs and CDMs that define the ObjectTeam elements.</RBW-PARABODY
  77328. ></LN.LIST.NUM
  77329. ></LABEL
  77330. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77331. >In this section</L.LABEL
  77332. ><B.BODY>This section contains the following topics:</B.BODY
  77333. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  77334. ></ENTRY
  77335. ></RBW-ROW
  77336. ></THEAD
  77337. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11498" TYPE="XREF-TEXTCOPY">Parsing the Files&rbwtab;4–3</RBW-XREF
  77338. ></SB.SECTION.BLOCK.TABLE
  77339. ></ENTRY
  77340. ></RBW-ROW
  77341. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14059" TYPE="XREF-TEXTCOPY">Creating the Diagrams&rbwtab;4–5</RBW-XREF
  77342. ></SB.SECTION.BLOCK.TABLE
  77343. ></ENTRY
  77344. ></RBW-ROW
  77345. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="10482" TYPE="XREF-TEXTCOPY">Running Reverse Engineering&rbwtab;4–10</RBW-XREF
  77346. ></SB.SECTION.BLOCK.TABLE
  77347. ></ENTRY
  77348. ></RBW-ROW
  77349. ></TBODY
  77350. ></TGROUP
  77351. ></RBW-TABLE
  77352. ></LABEL
  77353. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="11498"></RBW-ANCHOR
  77354. >Parsing the Files</SS.SUBSEC.HEAD
  77355. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77356. >Parsing the <CX5FX5FFILE.NAME>.java</CX5FX5FFILE.NAME
  77357. > files</L.LABEL
  77358. ><B.BODY>The parser processes the .java files as follows:</B.BODY
  77359. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77360. ></RBW-AUTOGEN
  77361. ></RBW-MARKER
  77362. ><RBW-PARABODY>It recognizes class, interface, variable, and method declarations.</RBW-PARABODY
  77363. ></LB.LIST.BULLET
  77364. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  77365. ></RBW-AUTOGEN
  77366. >The package mechanism in Java allows you to define name spaces. You can define such name spaces in ObjectTeam. Classes with the same name that are defined in multiple packages can cause errors during reverse engineering.</N2.NOTE.2
  77367. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77368. ></RBW-AUTOGEN
  77369. ></RBW-MARKER
  77370. ><RBW-PARABODY>It detects associations according to a heuristic process. The associations can be transformed either into graphical associations or into attributes and methods.</RBW-PARABODY
  77371. ></LB.LIST.BULLET
  77372. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77373. ></RBW-AUTOGEN
  77374. ></RBW-MARKER
  77375. ><RBW-PARABODY>It does not check data types. The parser does not need to know data types.</RBW-PARABODY
  77376. ></LB.LIST.BULLET
  77377. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77378. ></RBW-AUTOGEN
  77379. ></RBW-MARKER
  77380. ><RBW-PARABODY>It does not parse array initializers.</RBW-PARABODY
  77381. ></LB.LIST.BULLET
  77382. ></LABEL
  77383. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77384. >Mapping the elements<RBW-IDXTERM TERM1="C++" TERM2="reverse engineering"></RBW-IDXTERM
  77385. ><RBW-IDXTERM TERM1="mapping" TERM2="in reverse engineering"></RBW-IDXTERM
  77386. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="mapping"></RBW-IDXTERM
  77387. ></L.LABEL
  77388. ><B.BODY>After parsing the header file, ObjectTeam maps the Java constructs to ObjectTeam elements, as shown in the following table:</B.BODY
  77389. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Java Construction</CELLHEADING
  77390. ></ENTRY
  77391. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam Element</CELLHEADING
  77392. ></ENTRY
  77393. ></RBW-ROW
  77394. ></THEAD
  77395. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  77396. ></ENTRY
  77397. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class, with the following properties set:</CELLBODY
  77398. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77399. ></RBW-AUTOGEN
  77400. ></RBW-MARKER
  77401. ><RBW-PARABODY>On the Class tab, Class or Interface box is set to Class.</RBW-PARABODY
  77402. ></CELLBULLET
  77403. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77404. ></RBW-AUTOGEN
  77405. ></RBW-MARKER
  77406. ><RBW-PARABODY>On the Class tab, Access and Modifier boxes are set based on class declaration.</RBW-PARABODY
  77407. ></CELLBULLET
  77408. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77409. ></RBW-AUTOGEN
  77410. ></RBW-MARKER
  77411. ><RBW-PARABODY>On the Package tab, Source File and Package Statement boxes are set appropriately.</RBW-PARABODY
  77412. ></CELLBULLET
  77413. ></ENTRY
  77414. ></RBW-ROW
  77415. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Interface</CELLBODY
  77416. ></ENTRY
  77417. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class, with the following properties set:</CELLBODY
  77418. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77419. ></RBW-AUTOGEN
  77420. ></RBW-MARKER
  77421. ><RBW-PARABODY>On the Class tab, Class or Interface box is set to Interface.</RBW-PARABODY
  77422. ></CELLBULLET
  77423. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77424. ></RBW-AUTOGEN
  77425. ></RBW-MARKER
  77426. ><RBW-PARABODY>On the Class tab, Access and Modifier box are set based on interface declaration.</RBW-PARABODY
  77427. ></CELLBULLET
  77428. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77429. ></RBW-AUTOGEN
  77430. ></RBW-MARKER
  77431. ><RBW-PARABODY>On the Package tab, Source File and Package Statement boxes are set appropriately.</RBW-PARABODY
  77432. ></CELLBULLET
  77433. ></ENTRY
  77434. ></RBW-ROW
  77435. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Extends</CELLBODY
  77436. ></ENTRY
  77437. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class hierarchies that reflect how classes/interfaces extend one another.</CELLBODY
  77438. ></ENTRY
  77439. ></RBW-ROW
  77440. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Variable</CELLBODY
  77441. ></ENTRY
  77442. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute and data type. The following attribute properties are set:</CELLBODY
  77443. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77444. ></RBW-AUTOGEN
  77445. ></RBW-MARKER
  77446. ><RBW-PARABODY>Attribute Access box of the Access tab.</RBW-PARABODY
  77447. ></CELLBULLET
  77448. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77449. ></RBW-AUTOGEN
  77450. ></RBW-MARKER
  77451. ><RBW-PARABODY>Appropriate box on the Modifiers tab.</RBW-PARABODY
  77452. ></CELLBULLET
  77453. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77454. ></RBW-AUTOGEN
  77455. ></RBW-MARKER
  77456. ><RBW-PARABODY>Appropriate box on the Throw tab.</RBW-PARABODY
  77457. ></CELLBULLET
  77458. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  77459. > The Java static modifier causes attribute name to be prefixed by $.</CELLBODY
  77460. ></ENTRY
  77461. ></RBW-ROW
  77462. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method</CELLBODY
  77463. ></ENTRY
  77464. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation and parameters. The following operation properties are set:</CELLBODY
  77465. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77466. ></RBW-AUTOGEN
  77467. ></RBW-MARKER
  77468. ><RBW-PARABODY>Appropriate boxes on the Access tab.</RBW-PARABODY
  77469. ></CELLBULLET
  77470. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77471. ></RBW-AUTOGEN
  77472. ></RBW-MARKER
  77473. ><RBW-PARABODY>Appropriate boxes on the Modifiers tab.</RBW-PARABODY
  77474. ></CELLBULLET
  77475. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  77476. > The Java static modifier causes operation name to be prefixed by $.</CELLBODY
  77477. ></ENTRY
  77478. ></RBW-ROW
  77479. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constructor</CELLBODY
  77480. ></ENTRY
  77481. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>$create operation.</CELLBODY
  77482. ></ENTRY
  77483. ></RBW-ROW
  77484. ></TBODY
  77485. ></TGROUP
  77486. ></RBW-TABLE
  77487. ></LABEL
  77488. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77489. >Customizing reverse engineering</L.LABEL
  77490. ><B.BODY>The customization file tcl\rev_assoc.tcl in the Java module defines the reverse engineering rules used to detect associations and attribute accessors. You can modify reverse engineering by editing this file, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  77491. ><CX5FX5FTITLE></CX5FX5FTITLE
  77492. >.</B.BODY
  77493. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  77494. ></RBW-AUTOGEN
  77495. >This customization file is not used unless you select the Reverse Engineer Associations option during.</W.WARNING
  77496. ></LABEL
  77497. ></SUBSECTION
  77498. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14059"></RBW-ANCHOR
  77499. >Creating the Diagrams<RBW-IDXTERM TERM1="diagrams" TERM2="draft, in reverse engineering"></RBW-IDXTERM
  77500. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="draft diagrams"></RBW-IDXTERM
  77501. ></SS.SUBSEC.HEAD
  77502. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77503. >Introduction</L.LABEL
  77504. ><BI.BODY.INTRO>After mapping the Java constructs to ObjectTeam elements, reverse engineering creates the CDs and CDMs that define the ObjectTeam elements. It creates the following CDs:</BI.BODY.INTRO
  77505. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77506. ></RBW-AUTOGEN
  77507. ></RBW-MARKER
  77508. ><RBW-PARABODY>One or more CDs to show the class hierarchy</RBW-PARABODY
  77509. ></LB.LIST.BULLET
  77510. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77511. ></RBW-AUTOGEN
  77512. ></RBW-MARKER
  77513. ><RBW-PARABODY>One or more CDs to show the associations among the classes</RBW-PARABODY
  77514. ></LB.LIST.BULLET
  77515. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77516. >Naming conventions for CDs</SL.SUBLABEL
  77517. ><B.BODY>Each CD is named for the primary class in it, for example, Class1. The word Tree is appended to the name of each CD that defines part of the class hierarchy, for example, TestClass1Tree.</B.BODY
  77518. ></LABEL
  77519. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77520. >How many diagrams are created</L.LABEL
  77521. ><B.BODY>The number and complexity of the CDs created by reverse engineering depend largely on the following:</B.BODY
  77522. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77523. ></RBW-AUTOGEN
  77524. ></RBW-MARKER
  77525. ><RBW-PARABODY>The files that you select for reverse engineering, particularly the number and complexity of classes defined in them.</RBW-PARABODY
  77526. ></LB.LIST.BULLET
  77527. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77528. ></RBW-AUTOGEN
  77529. ></RBW-MARKER
  77530. ><RBW-PARABODY>The reverse engineering options that you select, particularly whether you choose to reverse&truehy;engineer associations.</RBW-PARABODY
  77531. ></LB.LIST.BULLET
  77532. ></LABEL
  77533. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77534. ><RBW-ANCHOR ID="10252"></RBW-ANCHOR
  77535. >Options for reverse engineering</L.LABEL
  77536. ><BI.BODY.INTRO>ObjectTeam displays the following dialog box prompting you to select the options that you want to use:</BI.BODY.INTRO
  77537. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00691.unk" origfile="pics/reoption.gif" origtype="X" origdoc="../../sources/java/javaeng.fm5.mif"></RBW-GRAPHIC
  77538. ></FA.FIGURE.ANCHOR
  77539. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering" TERM2="configuring options"></RBW-IDXTERM
  77540. >The following table describes each option (default values are as shown in the dialog box):</B.BODY
  77541. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  77542. ></ENTRY
  77543. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Descriptions</CELLHEADING
  77544. ></ENTRY
  77545. ></RBW-ROW
  77546. ></THEAD
  77547. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diagram</CELLBODY
  77548. ></ENTRY
  77549. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Prefix used to name each generated CD.</CELLBODY
  77550. ></ENTRY
  77551. ></RBW-ROW
  77552. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate</CELLBODY
  77553. ></ENTRY
  77554. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether to generate CDs, CDMs, or both:</CELLBODY
  77555. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77556. ></RBW-AUTOGEN
  77557. ></RBW-MARKER
  77558. ><RBW-PARABODY>CDs and CDMs</RBW-PARABODY
  77559. ></CELLBULLET
  77560. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77561. ></RBW-AUTOGEN
  77562. ></RBW-MARKER
  77563. ><RBW-PARABODY>Only CDs (only class structure is generated)</RBW-PARABODY
  77564. ></CELLBULLET
  77565. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77566. ></RBW-AUTOGEN
  77567. ></RBW-MARKER
  77568. ><RBW-PARABODY>Only CDMs (only class features are generated)</RBW-PARABODY
  77569. ></CELLBULLET
  77570. ></ENTRY
  77571. ></RBW-ROW
  77572. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overwrite Existing Diagrams</CELLBODY
  77573. ></ENTRY
  77574. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, existing CDs are replaced.</CELLBODY
  77575. ></ENTRY
  77576. ></RBW-ROW
  77577. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Reference Diagrams</CELLBODY
  77578. ></ENTRY
  77579. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, ObjectTeam creates a separate reference CD for each class that exceeds the maximum size. The class is folded in all diagrams other than the reference diagram.</CELLBODY
  77580. ></ENTRY
  77581. ></RBW-ROW
  77582. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Class Width & Height</CELLBODY
  77583. ></ENTRY
  77584. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class. When a class exceeds this size, it is folded.</CELLBODY
  77585. ></ENTRY
  77586. ></RBW-ROW
  77587. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Tree Width & Height</CELLBODY
  77588. ></ENTRY
  77589. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class tree. When a class hierarchy exceeds this size, it is split.</CELLBODY
  77590. ></ENTRY
  77591. ></RBW-ROW
  77592. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Screen Width & Height</CELLBODY
  77593. ></ENTRY
  77594. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a diagram. When a diagram exceeds this size, it is split.</CELLBODY
  77595. ></ENTRY
  77596. ></RBW-ROW
  77597. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Placement Algorithm</CELLBODY
  77598. ></ENTRY
  77599. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If Reverse Engineering Associations is selected, specifies the algorithm reverse engineering uses to create the CDs that show the associations:</CELLBODY
  77600. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77601. ></RBW-AUTOGEN
  77602. ></RBW-MARKER
  77603. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Simple.</CX5FX5FBULLET.EMPHASIS
  77604. > Creates a CD for each class that has associations.</RBW-PARABODY
  77605. ></CELLBULLET
  77606. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77607. ></RBW-AUTOGEN
  77608. ></RBW-MARKER
  77609. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Grid.</CX5FX5FBULLET.EMPHASIS
  77610. > Creates a CD for each <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  77611. > classes, where <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  77612. > is the number specified in the Number of Classes per CD field.</RBW-PARABODY
  77613. ></CELLBULLET
  77614. ></ENTRY
  77615. ></RBW-ROW
  77616. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Number of Classes per CD</CELLBODY
  77617. ></ENTRY
  77618. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If Placement Algorithm is Grid, specifies the number of unfolded classes per CD.</CELLBODY
  77619. ></ENTRY
  77620. ></RBW-ROW
  77621. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reverse Engineer Associations</CELLBODY
  77622. ></ENTRY
  77623. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering examines the attributes and accessor methods defined on each class to determine the associations among classes. It then creates CDs that show those associations.</CELLBODY
  77624. ></ENTRY
  77625. ></RBW-ROW
  77626. ></TBODY
  77627. ></TGROUP
  77628. ></RBW-TABLE
  77629. ></LABEL
  77630. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77631. >CDs that show the class hierarchy</L.LABEL
  77632. ><B.BODY>Following are the guidelines used to draw the CDs that show the class hierarchy:</B.BODY
  77633. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77634. ></RBW-AUTOGEN
  77635. ></RBW-MARKER
  77636. ><RBW-PARABODY>ObjectTeam creates a CD for each top&truehy;level parent class. The CD contains the parent class and all subclasses.</RBW-PARABODY
  77637. ></LB.LIST.BULLET
  77638. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77639. ></RBW-AUTOGEN
  77640. ></RBW-MARKER
  77641. ><RBW-PARABODY>If a class has multiple parent classes, ObjectTeam creates a CD for each parent. The CD for the first parent class contains the parent class, the child class, and all subclasses of the child class. The CD for each of the other parent classes contains only the parent class and the child class; in these diagrams, the child class is folded.</RBW-PARABODY
  77642. ></LB.LIST.BULLET
  77643. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00692.tif" origseq="2" origtype="I" origdoc="../../sources/java/javaeng.fm5.mif"></RBW-GRAPHIC
  77644. ></FA2.FIGURE.ANCHOR.2
  77645. ></LABEL
  77646. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77647. >CDs that show associations</L.LABEL
  77648. ><B.BODY>If you select the Reverse Engineer Associations option in the Reverse Engineer dialog box, ObjectTeam creates CDs that show the associations. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box. Both algorithms are described in the sections following.</B.BODY
  77649. ><B.BODY>If you do not select the Reverse Engineer Associations option, ObjectTeam shows associations only as attributes and accessor methods in the appropriate classes.</B.BODY
  77650. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  77651. ></RBW-AUTOGEN
  77652. >Bidirectional associations are reverse&truehy;engineered as unidirectional associations.</N.NOTE
  77653. ></LABEL
  77654. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77655. >Simple algorithm</L.LABEL
  77656. ><B.BODY>If you select Simple in the Placement Algorithm field of the Reverse Engineer dialog box, ObjectTeam draws the CDs as follows:</B.BODY
  77657. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  77658. ></RBW-AUTOGEN
  77659. ></RBW-MARKER
  77660. ><RBW-PARABODY>Creates a CD for each class that has one or more associations. </RBW-PARABODY
  77661. ></LN.LIST.NUM
  77662. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  77663. ></RBW-AUTOGEN
  77664. ></RBW-MARKER
  77665. ><RBW-PARABODY>Unfolds the main class in each CD and folds all associated classes.</RBW-PARABODY
  77666. ></LN.LIST.NUM
  77667. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77668. >Example</SL.SUBLABEL
  77669. ><BI.BODY.INTRO>Reverse engineering the MolecureViewer example from the JDK 1.1 creates a number of CDs and CDMs. The following CDs, created by the simple algorithm, show the associations among classes:</BI.BODY.INTRO
  77670. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00693.unk" origfile="pics/resimp1.gif" origtype="X" origdoc="../../sources/java/javaeng.fm5.mif"></RBW-GRAPHIC
  77671. ></FA.FIGURE.ANCHOR
  77672. ></LABEL
  77673. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77674. >Grid algorithm</L.LABEL
  77675. ><B.BODY>If you select Grid in the Placement Algorithm field of the Reverse Engineer dialog box, ObjectTeam draws the CDs as follows:</B.BODY
  77676. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  77677. ></RBW-AUTOGEN
  77678. ></RBW-MARKER
  77679. ><RBW-PARABODY>Divides all classes into groups of <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  77680. >, where <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  77681. > is the number specified by the Number of Classes per CD field of the Reverse Engineer dialog box. The algorithm attempts to group associated classes.</RBW-PARABODY
  77682. ></LN.LIST.NUM
  77683. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  77684. ></RBW-AUTOGEN
  77685. >To create a diagram that contains all classes, specify <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  77686. > as the number of classes being reverse engineered (or greater).</T2.TIP.2
  77687. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  77688. ></RBW-AUTOGEN
  77689. ></RBW-MARKER
  77690. ><RBW-PARABODY>For each group of classes, creates a CD and adds the classes (unfolded) to the CD. To position the classes, ObjectTeam uses a uniform grid whose squares are the size of the largest class in the group and its longest association.</RBW-PARABODY
  77691. ></LN.LIST.NUM
  77692. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  77693. ></RBW-AUTOGEN
  77694. ></RBW-MARKER
  77695. ><RBW-PARABODY>For each class in each CD, draws all associations from the class to all associated classes. If an associated class is not in the CD, ObjectTeam adds it (folded) to the CD.</RBW-PARABODY
  77696. ></LN.LIST.NUM
  77697. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77698. >Example</SL.SUBLABEL
  77699. ><BI.BODY.INTRO>Reverse engineering the MoleculeViewer example from the JDK 1.1 creates a number of CDs and CDMs. The following CD, created by the grid algorithm, shows the associations among classes. (The classes in the generated CD were repositioned so that the illustration would fit on one page.)</BI.BODY.INTRO
  77700. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  77701. ></RBW-AUTOGEN
  77702. >The Atom class is not associated with any other class. However, during reverse engineering, the Number of Classes per CD box in the Reverse Engineering dialog box was set to 7. The Atom class was added to the diagram as the seventh class.</N.NOTE
  77703. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00694.unk" origfile="pics/regrid.gif" origtype="X" origdoc="../../sources/java/javaeng.fm5.mif"></RBW-GRAPHIC
  77704. ></FAR.FIGURE.ANCHOR.RIGHT
  77705. ></LABEL
  77706. ></SUBSECTION
  77707. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="10482"></RBW-ANCHOR
  77708. >Running Reverse Engineering</SS.SUBSEC.HEAD
  77709. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77710. >Introduction</L.LABEL
  77711. ><B.BODY>This section describes how to run reverse engineering.</B.BODY
  77712. ></LABEL
  77713. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77714. >How to reverse engineer</L.LABEL
  77715. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  77716. ></RBW-AUTOGEN
  77717. ></RBW-MARKER
  77718. ><RBW-PARABODY>To reverse&truehy;engineer .java files:</RBW-PARABODY
  77719. ></P.PROCEDURE
  77720. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  77721. ></RBW-AUTOGEN
  77722. ></RBW-MARKER
  77723. ><RBW-PARABODY>Move to the system level in the Object Design phase.</RBW-PARABODY
  77724. ></LN.LIST.NUM
  77725. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  77726. ></RBW-AUTOGEN
  77727. >Typically, you reverse engineer into an empty system. However, name conflicts can still occur because classes are created with scope Phase.</N2.NOTE.2
  77728. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  77729. ></RBW-AUTOGEN
  77730. ></RBW-MARKER
  77731. ><RBW-PARABODY>Select Utilities | Reverse Engineer Java.</RBW-PARABODY
  77732. ></LN.LIST.NUM
  77733. ><LR.LIST.RESULT>The Reverse Engineer Java dialog box appears (see <RBW-XREF REFID="16372" TYPE="XREF-TEXTCOPY">Files for reverse engineering</RBW-XREF
  77734. >), prompting you to select the files to be reverse&truehy;engineered.</LR.LIST.RESULT
  77735. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  77736. ></RBW-AUTOGEN
  77737. ></RBW-MARKER
  77738. ><RBW-PARABODY>Select the files that you want to reverse engineer, and then click OK.</RBW-PARABODY
  77739. ></LN.LIST.NUM
  77740. ><LR.LIST.RESULT>A second Reverse Engineer Java dialog box appears (see <RBW-XREF REFID="10252" TYPE="XREF-TEXTCOPY">Options for reverse engineering</RBW-XREF
  77741. >), prompting you to select the options that you want to use. </LR.LIST.RESULT
  77742. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  77743. ></RBW-AUTOGEN
  77744. ></RBW-MARKER
  77745. ><RBW-PARABODY>Select the options and, then click OK.</RBW-PARABODY
  77746. ></LN.LIST.NUM
  77747. ><LR.LIST.RESULT>ObjectTeam reverse&truehy;engineers the selected file, reporting the results in a Monitoring window. The generated CDs display the class hierarchy defined in the selected files. Each class includes its attributes, operations, and (if the Reverse Engineer Associations option is selected) associations.</LR.LIST.RESULT
  77748. ></LABEL
  77749. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77750. ><RBW-ANCHOR ID="16372"></RBW-ANCHOR
  77751. >Files for reverse engineering</L.LABEL
  77752. ><BI.BODY.INTRO>ObjectTeam prompts you to select the .java files to reverse&truehy;engineer. The following illustrations show the Windows and UNIX dialog boxes.</BI.BODY.INTRO
  77753. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  77754. ></RBW-AUTOGEN
  77755. >Reverse engineering creates CDs and CDMs based on the files that you select. Therefore, it is good practice to reverse&truehy;engineer all related files at the same time. For example, when reverse engineering a class library, select all .java files used to define the class library.</T.TIP
  77756. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77757. >Windows</SL.SUBLABEL
  77758. ><BI.BODY.INTRO>In Windows, use the File Name and Files of Type boxes to filter the list of files displayed.</BI.BODY.INTRO
  77759. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00695.unk" origfile="pics/reveng1w.gif" origtype="X" origdoc="../../sources/java/javaeng.fm5.mif"></RBW-GRAPHIC
  77760. ></FA.FIGURE.ANCHOR
  77761. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77762. >UNIX</SL.SUBLABEL
  77763. ><BI.BODY.INTRO>In UNIX systems, use the Filter field and Filter button to filter the list of files displayed.</BI.BODY.INTRO
  77764. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00696.unk" origfile="pics/reveng1u.gif" origtype="X" origdoc="../../sources/java/javaeng.fm5.mif"></RBW-GRAPHIC
  77765. ></FA.FIGURE.ANCHOR
  77766. ><B.BODY></B.BODY
  77767. ></LABEL
  77768. ></SUBSECTION
  77769. ></SECTION
  77770. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27974"></RBW-ANCHOR
  77771. >Round&truehy;Trip Engineering</S.SECTION.HEAD
  77772. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77773. >Introduction</L.LABEL
  77774. ><B.BODY>Round&truehy;trip engineering updates the ObjectTeam model based on the changes you have made to the generated source files. Use round&truehy;trip engineering to update the ObjectTeam model before you regenerate the source files.</B.BODY
  77775. ></LABEL
  77776. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77777. >Purpose</L.LABEL
  77778. ><B.BODY>The code generator generates code based on the ObjectTeam model. If you do not update the ObjectTeam model before regenerating the source files, the new source files do not include your changes. </B.BODY
  77779. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77780. >Example</SL.SUBLABEL
  77781. ><B.BODY>You generate Java files and then add a new method to a generated source file. If you do not update the ObjectTeam model, it does not contain the operation that corresponds to the method. When you regenerate the source file, the code generator assumes that you deleted the operation from ObjectTeam and does not include the now obsolete method in the newly generated source file.</B.BODY
  77782. ></LABEL
  77783. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77784. >Changes captured by round&truehy;trip engineering</L.LABEL
  77785. ><B.BODY>If you have made the following types of changes to the generated source file, ObjectTeam updates the model based on those changes:</B.BODY
  77786. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77787. ></RBW-AUTOGEN
  77788. ></RBW-MARKER
  77789. ><RBW-PARABODY>Added or deleted attributes, or edited attribute declarations</RBW-PARABODY
  77790. ></LB.LIST.BULLET
  77791. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  77792. ></RBW-AUTOGEN
  77793. ></RBW-MARKER
  77794. ><RBW-PARABODY>Added or deleted methods, or edited method declarations</RBW-PARABODY
  77795. ></LB.LIST.BULLET
  77796. ></LABEL
  77797. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77798. >What happens during round&truehy;trip engineering</L.LABEL
  77799. ><B.BODY>The following table shows the steps that occur during round&truehy;trip engineering:</B.BODY
  77800. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  77801. ></ENTRY
  77802. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  77803. ></ENTRY
  77804. ></RBW-ROW
  77805. ></THEAD
  77806. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  77807. ></ENTRY
  77808. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>You select the generated (edited) source files that you are interested in and start round&truehy;trip engineering.</CELLBODY
  77809. ></ENTRY
  77810. ></RBW-ROW
  77811. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  77812. ></ENTRY
  77813. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam parses the selected files and compares the information in the files with the information in the ObjectTeam model.</CELLBODY
  77814. ></ENTRY
  77815. ></RBW-ROW
  77816. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  77817. ></ENTRY
  77818. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each difference it finds, ObjectTeam proposes an action and prompts you for confirmation. For example:</CELLBODY
  77819. ><CELLBODY><CX5FX5FINPUT>In class “Account”: delete attribute “Address”?</CX5FX5FINPUT
  77820. ></CELLBODY
  77821. ></ENTRY
  77822. ></RBW-ROW
  77823. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  77824. ></ENTRY
  77825. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Based on your answers, ObjectTeam updates the ObjectTeam model.</CELLBODY
  77826. ></ENTRY
  77827. ></RBW-ROW
  77828. ></TBODY
  77829. ></TGROUP
  77830. ></RBW-TABLE
  77831. ></LABEL
  77832. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77833. >In this section</L.LABEL
  77834. ><B.BODY>This section contains the following topics:</B.BODY
  77835. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  77836. ></ENTRY
  77837. ></RBW-ROW
  77838. ></THEAD
  77839. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11498" TYPE="XREF-TEXTCOPY">Parsing the Files&rbwtab;4–3</RBW-XREF
  77840. ></SB.SECTION.BLOCK.TABLE
  77841. ></ENTRY
  77842. ></RBW-ROW
  77843. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15358" TYPE="XREF-TEXTCOPY">Running Round&truehy;Trip Engineering&rbwtab;4–16</RBW-XREF
  77844. ></SB.SECTION.BLOCK.TABLE
  77845. ></ENTRY
  77846. ></RBW-ROW
  77847. ></TBODY
  77848. ></TGROUP
  77849. ></RBW-TABLE
  77850. ></LABEL
  77851. ><SUBSECTION><SS.SUBSEC.HEAD>Parsing the Generated (Edited) Source Files</SS.SUBSEC.HEAD
  77852. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77853. >Introduction</L.LABEL
  77854. ><B.BODY>This section describes which changes to the generated source files that round&truehy;trip engineering captures. </B.BODY
  77855. ></LABEL
  77856. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77857. ><RBW-ANCHOR ID="27501"></RBW-ANCHOR
  77858. >Changes to attributes</L.LABEL
  77859. ><B.BODY>You can add, delete, and modify variable declarations in a generated .java file. However, all variable declaration statements must be specified beneath the following comment in the generated source file:</B.BODY
  77860. ><EM.EXAMPLE.MONO>// Data attributes</EM.EXAMPLE.MONO
  77861. ><B.BODY>Attribute declarations not in this section of the generated source file are ignored by.</B.BODY
  77862. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77863. >Attribute Access property</SL.SUBLABEL
  77864. ><B.BODY>ObjectTeam determines the value of an attribute’s Attribute Access property based on the methods specified beneath the following comment in the generated source file:</B.BODY
  77865. ><EM.EXAMPLE.MONO>// Attribute accessors</EM.EXAMPLE.MONO
  77866. ><B.BODY>For example, if you add an attribute declaration to the source file but do not add attribute access methods, ObjectTeam sets the Read and Write values of the attribute’s Attribute Access property to None.</B.BODY
  77867. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77868. >Delete attribute accessors</SL.SUBLABEL
  77869. ><B.BODY>If you delete an attribute, delete the attribute accessors for that method also. ObjectTeam does not delete them when it deletes an attribute.</B.BODY
  77870. ></LABEL
  77871. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77872. ><RBW-ANCHOR ID="34671"></RBW-ANCHOR
  77873. >Changes to methods</L.LABEL
  77874. ><BI.BODY.INTRO>You can add, delete, and modify method declaration statements in a generated <CX5FX5FFILE.NAME>.java</CX5FX5FFILE.NAME
  77875. > file. However, these statements must be specified beneath the following comment in the generated source file:</BI.BODY.INTRO
  77876. ><EM.EXAMPLE.MONO>// Methods</EM.EXAMPLE.MONO
  77877. ><B.BODY>Method declarations not specified in this section of the generated source file are ignored by round&truehy;trip engineering.</B.BODY
  77878. ><B.BODY>You can change the code in the body of any method. Such changes are ignored by round&truehy;trip engineering, but are preserved by the code generator when you regenerate the source files.</B.BODY
  77879. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77880. >Overloaded methods</SL.SUBLABEL
  77881. ><B.BODY>If you have multiple methods with the same name, do not delete one and change the declaration of another at the same time. Delete one, run round&truehy;trip engineering, change the declaration of the other, and run round&truehy;trip engineering. This approach prevents potential errors.</B.BODY
  77882. ></LABEL
  77883. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77884. >Changes to constructors</L.LABEL
  77885. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77886. >Default constructor</SL.SUBLABEL
  77887. ><B.BODY>The default constructor appears beneath the following comment in the generated source file:</B.BODY
  77888. ><EM.EXAMPLE.MONO>// Default constructor</EM.EXAMPLE.MONO
  77889. ><B.BODY>You can add and remove key attributes from the parameter list of the default constructor. </B.BODY
  77890. ><B.BODY>In the CD, a key attribute is prefixed with an asterisk. If you remove an attribute from the parameter list of the default constructor, ObjectTeam removes the asterisk from the attribute name in the CD. If you add an attribute to the parameter list of the default constructor, ObjectTeam adds an asterisk to the attribute name in the CD.</B.BODY
  77891. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77892. >User&truehy;defined constructor</SL.SUBLABEL
  77893. ><B.BODY>User&truehy;defined constructors appear beneath the following comment in the generated source file:</B.BODY
  77894. ><EM.EXAMPLE.MONO>// User defined constructors</EM.EXAMPLE.MONO
  77895. ><B.BODY>You can add, delete, and edit user&truehy;defined constructors as you can any other method (see <RBW-XREF REFID="34671" TYPE="XREF-TEXTCOPY">Changes to methods</RBW-XREF
  77896. >).</B.BODY
  77897. ></LABEL
  77898. ></SUBSECTION
  77899. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15358"></RBW-ANCHOR
  77900. >Running Round&truehy;Trip Engineering</SS.SUBSEC.HEAD
  77901. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77902. >Customizing round&truehy;trip engineering</L.LABEL
  77903. ><B.BODY>The customization file roundtrip.roundtrip in the M4_home/etc directory controls what actions ObjectTeam proposes, as well as the default answers it supplies. To examine or modify the current behavior of round&truehy;trip engineering, examine or modify the customization file.</B.BODY
  77904. ></LABEL
  77905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77906. >How to run round&truehy;trip engineering</L.LABEL
  77907. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  77908. ></RBW-AUTOGEN
  77909. ></RBW-MARKER
  77910. ><RBW-PARABODY>To run round&truehy;trip engineering:</RBW-PARABODY
  77911. ></P.PROCEDURE
  77912. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  77913. ></RBW-AUTOGEN
  77914. ></RBW-MARKER
  77915. ><RBW-PARABODY>Move to the system level of the Implementation phase.</RBW-PARABODY
  77916. ></LN.LIST.NUM
  77917. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  77918. ></RBW-AUTOGEN
  77919. ></RBW-MARKER
  77920. ><RBW-PARABODY>Select the .java files on which you want to run round&truehy;trip engineering.</RBW-PARABODY
  77921. ></LN.LIST.NUM
  77922. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  77923. ></RBW-AUTOGEN
  77924. ></RBW-MARKER
  77925. ><RBW-PARABODY>Select Utilities | Round Trip Selected.</RBW-PARABODY
  77926. ></LN.LIST.NUM
  77927. ><LR.LIST.RESULT>ObjectTeam opens the Roundtrip Selected Files dialog box, compares the classes in the generated files to the classes in the Object Design phase, and then begins proposing actions and prompting you for confirmation.</LR.LIST.RESULT
  77928. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00697.unk" origfile="pics/rndtrip2.gif" origtype="X" origdoc="../../sources/java/javaeng.fm5.mif"></RBW-GRAPHIC
  77929. ></FAR.FIGURE.ANCHOR.RIGHT
  77930. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  77931. ></RBW-AUTOGEN
  77932. ></RBW-MARKER
  77933. ><RBW-PARABODY>Use the buttons to respond to the proposed actions:</RBW-PARABODY
  77934. ></LN.LIST.NUM
  77935. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Button</CELLHEADING
  77936. ></ENTRY
  77937. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  77938. ></ENTRY
  77939. ></RBW-ROW
  77940. ></THEAD
  77941. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  77942. ></ENTRY
  77943. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make the proposed change.</CELLBODY
  77944. ></ENTRY
  77945. ></RBW-ROW
  77946. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>No</CELLBODY
  77947. ></ENTRY
  77948. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Do not make the proposed change.</CELLBODY
  77949. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  77950. > When you regenerate the <CX5FX5FFILE.NAME>.java</CX5FX5FFILE.NAME
  77951. > file, the change to the file will be lost.</CELLBODY
  77952. ></ENTRY
  77953. ></RBW-ROW
  77954. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default to All</CELLBODY
  77955. ></ENTRY
  77956. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use the default response for all remaining questions.</CELLBODY
  77957. ></ENTRY
  77958. ></RBW-ROW
  77959. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Stop</CELLBODY
  77960. ></ENTRY
  77961. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cancel all changes</CELLBODY
  77962. ></ENTRY
  77963. ></RBW-ROW
  77964. ></TBODY
  77965. ></TGROUP
  77966. ></RBW-TABLE
  77967. ><LR.LIST.RESULT>ObjectTeam updates the model based on your responses.</LR.LIST.RESULT
  77968. ><RBWAUTO-0001></RBWAUTO-0001
  77969. ><!--
  77970.  
  77971.  
  77972.  
  77973.  
  77974.  
  77975. CONVERTING SOURCE FILE ../../sources/java/javatcl.fm5.mif
  77976.  
  77977.  
  77978. --><B.BODY></B.BODY
  77979. ><B.BODY></B.BODY
  77980. ><B.BODY></B.BODY
  77981. ><B.BODY></B.BODY
  77982. ><B.BODY></B.BODY
  77983. ></LABEL
  77984. ></SUBSECTION
  77985. ></SECTION
  77986. ></CHAPTER
  77987. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  77988. ></RBW-AUTOGEN
  77989. >Customizing <RBW-ANCHOR ID="22956"></RBW-ANCHOR
  77990. >Java Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  77991. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Java</RBW-TEXTFLD
  77992. ></RBW-SYSOBJ
  77993. ></C.CHAPTER.HEAD
  77994. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  77995. >Introduction</L.LABEL
  77996. ><B.BODY>Expert users can extend the Java code generator by modifying the Tcl scripts that are supplied in the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  77997. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  77998. >\<CX5FX5FFILE.NAME>l_java</CX5FX5FFILE.NAME
  77999. > directory. </B.BODY
  78000. ><B.BODY>Editing these Tcl scripts, or writing new ones that add functionality to the code generator, requires a thorough knowledge of the OOPL model structure, Tcl commands, and the ObjectTeam Shell.</B.BODY
  78001. ></LABEL
  78002. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78003. >Modifying Tcl procedures</L.LABEL
  78004. ><B.BODY>You can adapt existing methods of Object Tcl classes that are used in the code generation by redefining them in a user&truehy;defined Tcl file.</B.BODY
  78005. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  78006. ></RBW-AUTOGEN
  78007. >Cayenne Software cannot support any provided Tcl scripts that you modify. Therefore, the scripts and their structures are not documented. If you choose to modify any Tcl scripts or procedures, you must have a thorough knowledge of the script’s structures to avoid introducing errors. </W.WARNING
  78008. ></LABEL
  78009. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78010. >In this chapter</L.LABEL
  78011. ><B.BODY>This chapter contains the following sections:</B.BODY
  78012. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  78013. ></ENTRY
  78014. ></RBW-ROW
  78015. ></THEAD
  78016. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22291" TYPE="XREF-TEXTCOPY">How Tcl is Used in the Code Generation&rbwtab;5–20</RBW-XREF
  78017. ></SB.SECTION.BLOCK.TABLE
  78018. ></ENTRY
  78019. ></RBW-ROW
  78020. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15580" TYPE="XREF-TEXTCOPY">Customizing Tcl Scripts Used for Code Generation&rbwtab;5–23</RBW-XREF
  78021. ></SB.SECTION.BLOCK.TABLE
  78022. ></ENTRY
  78023. ></RBW-ROW
  78024. ></TBODY
  78025. ></TGROUP
  78026. ></RBW-TABLE
  78027. ></LABEL
  78028. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22291"></RBW-ANCHOR
  78029. >How Tcl is Used in the <RBW-IDXTERM TERM1="Tcl" TERM2="in ObjectTeam environment"></RBW-IDXTERM
  78030. >Code Generation<RBW-IDXTERM SEE="Tcl" TERM1="Tool Command Language"></RBW-IDXTERM
  78031. ></S.SECTION.HEAD
  78032. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78033. >Introduction</L.LABEL
  78034. ><B.BODY>This chapter provides information on the use of Tcl (Tool command language) in ObjectTeam. It does not provide an introduction to Tcl itself. If you want to become familiar with Tcl, try the following introductory book:</B.BODY
  78035. ><LT.LIST.TEXT>John K. Ousterhout, <CX5FX5FTITLE>Tcl and the Tk Toolkit</CX5FX5FTITLE
  78036. >. (Reading, Massachusetts: Addison--&truehy;Wesley Publishing Company, 1994).</LT.LIST.TEXT
  78037. ></LABEL
  78038. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78039. >What is Tcl?</L.LABEL
  78040. ><B.BODY>Tcl (Tool command language) is an interpretive command language that resembles C. By default all arguments are passed as strings. These strings are C&truehy;compatible. Tcl consists of:</B.BODY
  78041. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78042. ></RBW-AUTOGEN
  78043. ></RBW-MARKER
  78044. ><RBW-PARABODY>A library of C procedures</RBW-PARABODY
  78045. ></LB.LIST.BULLET
  78046. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78047. ></RBW-AUTOGEN
  78048. ></RBW-MARKER
  78049. ><RBW-PARABODY>An interpreter</RBW-PARABODY
  78050. ></LB.LIST.BULLET
  78051. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78052. ></RBW-AUTOGEN
  78053. ></RBW-MARKER
  78054. ><RBW-PARABODY>The Tcl core</RBW-PARABODY
  78055. ></LB.LIST.BULLET
  78056. ><B.BODY>The Tcl core is a simple language that can be completely programmed. It provides a collection of commonly used features such as these:</B.BODY
  78057. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78058. ></RBW-AUTOGEN
  78059. ></RBW-MARKER
  78060. ><RBW-PARABODY>Variables</RBW-PARABODY
  78061. ></LB.LIST.BULLET
  78062. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78063. ></RBW-AUTOGEN
  78064. ></RBW-MARKER
  78065. ><RBW-PARABODY>Conditional and looping commands</RBW-PARABODY
  78066. ></LB.LIST.BULLET
  78067. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78068. ></RBW-AUTOGEN
  78069. ></RBW-MARKER
  78070. ><RBW-PARABODY>Procedures</RBW-PARABODY
  78071. ></LB.LIST.BULLET
  78072. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78073. ></RBW-AUTOGEN
  78074. ></RBW-MARKER
  78075. ><RBW-PARABODY>Associative arrays</RBW-PARABODY
  78076. ></LB.LIST.BULLET
  78077. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78078. ></RBW-AUTOGEN
  78079. ></RBW-MARKER
  78080. ><RBW-PARABODY>Lists</RBW-PARABODY
  78081. ></LB.LIST.BULLET
  78082. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78083. ></RBW-AUTOGEN
  78084. ></RBW-MARKER
  78085. ><RBW-PARABODY>Expressions</RBW-PARABODY
  78086. ></LB.LIST.BULLET
  78087. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78088. ></RBW-AUTOGEN
  78089. ></RBW-MARKER
  78090. ><RBW-PARABODY>File manipulation</RBW-PARABODY
  78091. ></LB.LIST.BULLET
  78092. ></LABEL
  78093. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78094. >How is Tcl used in the code generation?</L.LABEL
  78095. ><BI.BODY.INTRO>When the ObjectTeam shell executes a Tcl script file, it translates information from the repository, internal models, and <RBW-IDXTERM TERM1="code generation model" TERM2="and Tcl"></RBW-IDXTERM
  78096. ><RBW-IDXTERM TERM1="model" TERM2="code generation"></RBW-IDXTERM
  78097. >code generation models into source code. The following illustration shows this process schematically:</BI.BODY.INTRO
  78098. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00698.tif" origseq="1" origtype="I" origdoc="../../sources/java/javatcl.fm5.mif"></RBW-GRAPHIC
  78099. ></FA.FIGURE.ANCHOR
  78100. ></LABEL
  78101. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78102. >Types of Tcl used</L.LABEL
  78103. ><B.BODY>The methods in the default Tcl script files used for code generation use different levels of Tcl.</B.BODY
  78104. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="168p"><COLSPEC COLNAME="2" COLWIDTH="280p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  78105. ></ENTRY
  78106. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>description</CELLHEADING
  78107. ></ENTRY
  78108. ></RBW-ROW
  78109. ></THEAD
  78110. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Standard Tcl</CELLBODY
  78111. ></ENTRY
  78112. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Refer to general Tcl documentation for details.</CELLBODY
  78113. ></ENTRY
  78114. ></RBW-ROW
  78115. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calls to Tcl </CELLBODY
  78116. ><CELLBODY>procedures</CELLBODY
  78117. ></ENTRY
  78118. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These procedures are stored in Tcl files. They become available when the file in which the procedure is defined is sourced.</CELLBODY
  78119. ></ENTRY
  78120. ></RBW-ROW
  78121. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calls to methods of classes</CELLBODY
  78122. ><CELLBODY>in the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  78123. ><RBWAUTO-0024></RBWAUTO-0024
  78124. > </CELLBODY
  78125. ><CELLBODY>models</CELLBODY
  78126. ></ENTRY
  78127. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The classes of the ObjectTeam models (including the OOPL model and SQL model) are documented in <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  78128. ><CX5FX5FTITLE></CX5FX5FTITLE
  78129. >. </CELLBODY
  78130. ></ENTRY
  78131. ></RBW-ROW
  78132. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Built&truehy;in classes</CELLBODY
  78133. ></ENTRY
  78134. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Besides methods of classes belonging to the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  78135. ><RBWAUTO-0024></RBWAUTO-0024
  78136. > models, methods belonging to other built&truehy;in classes can also be called. Refer to the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  78137. ><CX5FX5FTITLE></CX5FX5FTITLE
  78138. > for details.</CELLBODY
  78139. ></ENTRY
  78140. ></RBW-ROW
  78141. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Built&truehy;in </CELLBODY
  78142. ><CELLBODY><RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  78143. ><RBWAUTO-0024></RBWAUTO-0024
  78144. > </CELLBODY
  78145. ><CELLBODY>commands</CELLBODY
  78146. ></ENTRY
  78147. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These commands are built&truehy;in to otsh and otk. You can use these commands, but you cannot edit or view them like Tcl procedures. Refer to the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  78148. ><CX5FX5FTITLE></CX5FX5FTITLE
  78149. > for details. </CELLBODY
  78150. ></ENTRY
  78151. ></RBW-ROW
  78152. ></TBODY
  78153. ></TGROUP
  78154. ></RBW-TABLE
  78155. ></LABEL
  78156. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78157. ><RBW-ANCHOR ID="35220"></RBW-ANCHOR
  78158. >Which Tcl files are used?</L.LABEL
  78159. ><B.BODY>Tcl procedures used for code generation are stored in Object Tcl script files. During code generation, these scripts are interpreted and executed by the ObjectTeam shell (otsh). When you use Utilities | Import From Previous Phase in the Browser at the system level of the Implementation phase, otsh interprets the Object Tcl code in the Tcl file tcl\l_java\javimport.tcl. In the implementation of these methods, Tcl methods from other classes are called.</B.BODY
  78160. ><B.BODY>Most of the Tcl script files that the Java code generator uses are located under the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  78161. > directory in tcl\l_java\*.tcl. The Tcl script files fstorage.tcl and caynutil.tcl in the tcl directory contain utility procedures that are also used.</B.BODY
  78162. ></LABEL
  78163. ></SECTION
  78164. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="15580"></RBW-ANCHOR
  78165. >Customizing Tcl Scripts Used for <RBW-IDXTERM TERM1="code generation" TERM2="adapting"></RBW-IDXTERM
  78166. >Code Generation</S.SECTION.HEAD
  78167. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78168. >User&truehy;defined Tcl files</L.LABEL
  78169. ><B.BODY>Because of the open character of Tcl, you can redefine the existing Object Tcl methods of the Tcl scripts, if you want to adapt the code generation to your needs and circumstances. You can include your own properties, control flow keywords, and section keywords in the code generation this way. You can even build your own code generator by creating your own Tcl scripts. </B.BODY
  78170. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  78171. ></RBW-AUTOGEN
  78172. >Note that existing Object Tcl classes cannot be redefined. However, you can add new, user&truehy;defined Object Tcl classes.</W.WARNING
  78173. ></LABEL
  78174. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78175. ><RBW-ANCHOR ID="37212"></RBW-ANCHOR
  78176. >Where to store user&truehy;defined Tcl procedures</L.LABEL
  78177. ><B.BODY>The Tcl script files used for the default code generation are stored in the file system. They can be found in the following directory:</B.BODY
  78178. ><E.EXAMPLE><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  78179. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  78180. > </E.EXAMPLE
  78181. ><B.BODY>If you want to adapt the default code generation, you can edit the Tcl files in this directory, but it is better to modify copies of the original files. There are several ways available to make otsh use user&truehy;defined files. These ways are briefly discussed in this section. </B.BODY
  78182. ><B.BODY>You can overrule existing Tcl files or you can extend them by creating new Tcl files with new user&truehy;defined Tcl procedures and methods, or redefinitions of existing methods. The ways to do that are also covered in this section.</B.BODY
  78183. ></LABEL
  78184. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78185. >Storing Tcl files in the same System as where the code is generated</L.LABEL
  78186. ><B.BODY>One of the available file types on the system level of the Implementation phase is Tcl. You can create new files of this type and redefine methods of existing Object Tcl classes in such a file. During code generation, otsh sources all files of the type Tcl in the current system, regardless of their names.</B.BODY
  78187. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  78188. ></RBW-AUTOGEN
  78189. ></RBW-MARKER
  78190. ><RBW-PARABODY>To create such a Tcl file:</RBW-PARABODY
  78191. ></P.PROCEDURE
  78192. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  78193. ></RBW-AUTOGEN
  78194. ></RBW-MARKER
  78195. ><RBW-PARABODY>Open the implementation system.</RBW-PARABODY
  78196. ></LN.LIST.NUM
  78197. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  78198. ></RBW-AUTOGEN
  78199. ></RBW-MARKER
  78200. ><RBW-PARABODY>Select File | New | External File Version.</RBW-PARABODY
  78201. ></LN.LIST.NUM
  78202. ><LR.LIST.RESULT>A dialog box of file types appears.</LR.LIST.RESULT
  78203. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  78204. ></RBW-AUTOGEN
  78205. ></RBW-MARKER
  78206. ><RBW-PARABODY>Select Tcl as the file type, specify a name for the Tcl file (without the extension .tcl), and click OK.</RBW-PARABODY
  78207. ></LN.LIST.NUM
  78208. ><LT.LIST.TEXT>You can enter the name of an existing Tcl file used for code generation or any other name. If you enter an existing name, the original Tcl file is replaced by this new file during code generation.</LT.LIST.TEXT
  78209. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  78210. ></RBW-AUTOGEN
  78211. ></RBW-MARKER
  78212. ><RBW-PARABODY>Edit and save the new Tcl file.</RBW-PARABODY
  78213. ></LN.LIST.NUM
  78214. ><LR.LIST.RESULT>The next time you generate code (by using Utilities | Import From Previous Phase) the new Tcl file is sourced by otsh.</LR.LIST.RESULT
  78215. ></LABEL
  78216. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78217. >Storing Tcl files in a system Tcl</L.LABEL
  78218. ><B.BODY>If you do not want to store user&truehy;defined Tcl files in the same system in which your code is generated, you can create a system called Tcl and store your user&truehy;defined Tcl files in there. Any Tcl file that is defined in such a system is sourced during code generation. You can use this mechanism for user&truehy;defined Tcl files or for user&truehy;defined Tcl files that are meant to replace existing ones.</B.BODY
  78219. ><B.BODY>To store files in a Tcl system:</B.BODY
  78220. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  78221. ></RBW-AUTOGEN
  78222. ></RBW-MARKER
  78223. ><RBW-PARABODY>Make sure the Browser is on the Implementation phase level.</RBW-PARABODY
  78224. ></LN.LIST.NUM
  78225. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  78226. ></RBW-AUTOGEN
  78227. ></RBW-MARKER
  78228. ><RBW-PARABODY>Select File | New | System Version.</RBW-PARABODY
  78229. ></LN.LIST.NUM
  78230. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  78231. ></RBW-AUTOGEN
  78232. ></RBW-MARKER
  78233. ><RBW-PARABODY>Type <CX5FX5FINPUT>Tcl</CX5FX5FINPUT
  78234. > as the system name, being sure to use a capital T.</RBW-PARABODY
  78235. ></LN.LIST.NUM
  78236. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  78237. ></RBW-AUTOGEN
  78238. ></RBW-MARKER
  78239. ><RBW-PARABODY>Open the system Tcl.</RBW-PARABODY
  78240. ></LN.LIST.NUM
  78241. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  78242. ></RBW-AUTOGEN
  78243. ></RBW-MARKER
  78244. ><RBW-PARABODY>Select File | New | External File Version.</RBW-PARABODY
  78245. ></LN.LIST.NUM
  78246. ><LR.LIST.RESULT>A dialog box of file types appears.</LR.LIST.RESULT
  78247. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  78248. ></RBW-AUTOGEN
  78249. ></RBW-MARKER
  78250. ><RBW-PARABODY>Select Tcl as the file type, specify a name for the Tcl file (without the extension <CX5FX5FFILE.NAME>.tcl</CX5FX5FFILE.NAME
  78251. >), and click OK.</RBW-PARABODY
  78252. ></LN.LIST.NUM
  78253. ><LT.LIST.TEXT>You can enter the name of an existing Tcl file used for code generation or any other name. If you enter an existing name, the original Tcl file is replaced by this new file during code generation.</LT.LIST.TEXT
  78254. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  78255. ></RBW-AUTOGEN
  78256. ></RBW-MARKER
  78257. ><RBW-PARABODY>Edit and save the new Tcl file.</RBW-PARABODY
  78258. ></LN.LIST.NUM
  78259. ><LR.LIST.RESULT>The next time you generate code, the new Tcl file is sourced by otsh.</LR.LIST.RESULT
  78260. ></LABEL
  78261. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78262. ><RBW-IDXTERM TERM1="Tcl" TERM2="script files, testing"></RBW-IDXTERM
  78263. >Testing Tcl files</L.LABEL
  78264. ><B.BODY>If you want to test a customized Tcl file before you add it to a system in ObjectTeam, you can create the Tcl file in your file system and feed it to otsh outside the ObjectTeam environment. </B.BODY
  78265. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  78266. ><CX5FX5FTITLE></CX5FX5FTITLE
  78267. > for details on how to start otsh from the command line.</B.BODY
  78268. ><B.BODY>When the Tcl file has reached its final state, you can decide to add it to a system in ObjectTeam, as described above. </B.BODY
  78269. ></LABEL
  78270. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78271. ></L.LABEL
  78272. ><!--
  78273.  
  78274.  
  78275.  
  78276.  
  78277.  
  78278. CONVERTING SOURCE FILE ../../sources/java/javaprop.fm5.mif
  78279.  
  78280.  
  78281. --><B.BODY></B.BODY
  78282. ><B.BODY></B.BODY
  78283. ><B.BODY></B.BODY
  78284. ><B.BODY></B.BODY
  78285. ><B.BODY></B.BODY
  78286. ></LABEL
  78287. ></SECTION
  78288. ></CHAPTER
  78289. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  78290. ></RBW-AUTOGEN
  78291. >Properties<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  78292. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Java</RBW-TEXTFLD
  78293. ></RBW-SYSOBJ
  78294. ></A.APPENDIX.HEAD
  78295. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78296. >Java code generation properties</L.LABEL
  78297. ><B.BODY>The following table lists the properties that affect Java code generation. These are available in the CD in the Object Design phase.</B.BODY
  78298. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="99p"><COLSPEC COLNAME="3" COLWIDTH="117p"><COLSPEC COLNAME="4" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  78299. ></ENTRY
  78300. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  78301. ></ENTRY
  78302. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  78303. ><CELLHEADING>Value</CELLHEADING
  78304. ></ENTRY
  78305. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>For More Information</CELLHEADING
  78306. ></ENTRY
  78307. ></RBW-ROW
  78308. ></THEAD
  78309. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Access</CELLBODY
  78310. ></ENTRY
  78311. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78312. ></ENTRY
  78313. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  78314. ><CELLBODY>None</CELLBODY
  78315. ></ENTRY
  78316. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="32402" TYPE="XREF-TEXTCOPY">Specifying Access Properties</RBW-XREF
  78317. ></CELLBODY
  78318. ></ENTRY
  78319. ></RBW-ROW
  78320. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78321. ></ENTRY
  78322. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  78323. ></ENTRY
  78324. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  78325. ><CELLBODY>Protected</CELLBODY
  78326. ><CELLBODY>Private</CELLBODY
  78327. ><CELLBODY>Private Protected</CELLBODY
  78328. ><CELLBODY>None</CELLBODY
  78329. ></ENTRY
  78330. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="35486" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Data Attributes</RBW-XREF
  78331. ></CELLBODY
  78332. ></ENTRY
  78333. ></RBW-ROW
  78334. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78335. ></ENTRY
  78336. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  78337. ></ENTRY
  78338. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  78339. ></ENTRY
  78340. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="10531" TYPE="XREF-TEXTCOPY">Specifying Accessibility of Methods</RBW-XREF
  78341. ></CELLBODY
  78342. ></ENTRY
  78343. ></RBW-ROW
  78344. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78345. ></ENTRY
  78346. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  78347. ></ENTRY
  78348. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  78349. ></ENTRY
  78350. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  78351. ></CELLBODY
  78352. ></ENTRY
  78353. ></RBW-ROW
  78354. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Access Methods</CELLBODY
  78355. ></ENTRY
  78356. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  78357. ></ENTRY
  78358. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  78359. ><CELLBODY>Protected</CELLBODY
  78360. ><CELLBODY>Private</CELLBODY
  78361. ><CELLBODY>None</CELLBODY
  78362. ></ENTRY
  78363. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21279" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Data Attributes</RBW-XREF
  78364. ></CELLBODY
  78365. ></ENTRY
  78366. ></RBW-ROW
  78367. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78368. ></ENTRY
  78369. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  78370. ></ENTRY
  78371. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  78372. ></ENTRY
  78373. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  78374. ></CELLBODY
  78375. ></ENTRY
  78376. ></RBW-ROW
  78377. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class or Interface</CELLBODY
  78378. ></ENTRY
  78379. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78380. ></ENTRY
  78381. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>External</CELLBODY
  78382. ><CELLBODY>Class</CELLBODY
  78383. ><CELLBODY>Interface</CELLBODY
  78384. ></ENTRY
  78385. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17596" TYPE="XREF-TEXTCOPY">Specifying Class or Interface Generation</RBW-XREF
  78386. ></CELLBODY
  78387. ></ENTRY
  78388. ></RBW-ROW
  78389. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Comment Type</CELLBODY
  78390. ></ENTRY
  78391. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78392. ></ENTRY
  78393. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>ToEndOfLine</CELLBODY
  78394. ><CELLBODY>Block</CELLBODY
  78395. ><CELLBODY>Document</CELLBODY
  78396. ></ENTRY
  78397. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="20849" TYPE="XREF-TEXTCOPY">Specifying Comments</RBW-XREF
  78398. ></CELLBODY
  78399. ></ENTRY
  78400. ></RBW-ROW
  78401. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78402. ></ENTRY
  78403. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  78404. ></ENTRY
  78405. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  78406. ></ENTRY
  78407. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="29648" TYPE="XREF-TEXTCOPY">Specifying Comments for Data Attributes</RBW-XREF
  78408. ></CELLBODY
  78409. ></ENTRY
  78410. ></RBW-ROW
  78411. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78412. ></ENTRY
  78413. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  78414. ></ENTRY
  78415. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  78416. ></ENTRY
  78417. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="36331" TYPE="XREF-TEXTCOPY">Specifying Comments for Methods</RBW-XREF
  78418. ></CELLBODY
  78419. ></ENTRY
  78420. ></RBW-ROW
  78421. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78422. ></ENTRY
  78423. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  78424. ></ENTRY
  78425. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  78426. ></ENTRY
  78427. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  78428. ></CELLBODY
  78429. ></ENTRY
  78430. ></RBW-ROW
  78431. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  78432. ></ENTRY
  78433. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  78434. ></ENTRY
  78435. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78436. ></ENTRY
  78437. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13312" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations</RBW-XREF
  78438. ></CELLBODY
  78439. ></ENTRY
  78440. ></RBW-ROW
  78441. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Exceptions</CELLBODY
  78442. ></ENTRY
  78443. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  78444. ></ENTRY
  78445. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78446. ></ENTRY
  78447. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21783" TYPE="XREF-TEXTCOPY">Specifying Exceptions in Method Declarations</RBW-XREF
  78448. ></CELLBODY
  78449. ></ENTRY
  78450. ></RBW-ROW
  78451. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Import On&truehy;Demands</CELLBODY
  78452. ></ENTRY
  78453. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78454. ></ENTRY
  78455. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78456. ></ENTRY
  78457. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="38413" TYPE="XREF-TEXTCOPY">Defining Java Program Structure</RBW-XREF
  78458. ></CELLBODY
  78459. ></ENTRY
  78460. ></RBW-ROW
  78461. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Import Packages</CELLBODY
  78462. ></ENTRY
  78463. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78464. ></ENTRY
  78465. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78466. ></ENTRY
  78467. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="38413" TYPE="XREF-TEXTCOPY">Defining Java Program Structure</RBW-XREF
  78468. ></CELLBODY
  78469. ></ENTRY
  78470. ></RBW-ROW
  78471. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Import Types</CELLBODY
  78472. ></ENTRY
  78473. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78474. ></ENTRY
  78475. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78476. ></ENTRY
  78477. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="38413" TYPE="XREF-TEXTCOPY">Defining Java Program Structure</RBW-XREF
  78478. ></CELLBODY
  78479. ></ENTRY
  78480. ></RBW-ROW
  78481. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Modifiers</CELLBODY
  78482. ></ENTRY
  78483. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78484. ></ENTRY
  78485. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>None</CELLBODY
  78486. ><CELLBODY>Final</CELLBODY
  78487. ><CELLBODY>Abstract</CELLBODY
  78488. ></ENTRY
  78489. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="33315" TYPE="XREF-TEXTCOPY">Specifying Modifiers</RBW-XREF
  78490. ></CELLBODY
  78491. ></ENTRY
  78492. ></RBW-ROW
  78493. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78494. ></ENTRY
  78495. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  78496. ></ENTRY
  78497. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Final</CELLBODY
  78498. ><CELLBODY>Transient</CELLBODY
  78499. ><CELLBODY>Volatile</CELLBODY
  78500. ></ENTRY
  78501. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="18563" TYPE="XREF-TEXTCOPY">Specifying Modifiers for Data Attributes</RBW-XREF
  78502. ></CELLBODY
  78503. ></ENTRY
  78504. ></RBW-ROW
  78505. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78506. ></ENTRY
  78507. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  78508. ></ENTRY
  78509. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Abstract</CELLBODY
  78510. ><CELLBODY>Final</CELLBODY
  78511. ><CELLBODY>Native</CELLBODY
  78512. ><CELLBODY>Synchronized</CELLBODY
  78513. ></ENTRY
  78514. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19978" TYPE="XREF-TEXTCOPY">Specifying Modifiers for Methods</RBW-XREF
  78515. ></CELLBODY
  78516. ></ENTRY
  78517. ></RBW-ROW
  78518. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78519. ></ENTRY
  78520. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  78521. ></ENTRY
  78522. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Static</CELLBODY
  78523. ><CELLBODY>Transient</CELLBODY
  78524. ></ENTRY
  78525. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations on page 3–40</RBW-XREF
  78526. ></CELLBODY
  78527. ></ENTRY
  78528. ></RBW-ROW
  78529. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Package Statement</CELLBODY
  78530. ></ENTRY
  78531. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78532. ></ENTRY
  78533. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78534. ></ENTRY
  78535. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="38413" TYPE="XREF-TEXTCOPY">Defining Java Program Structure</RBW-XREF
  78536. ></CELLBODY
  78537. ></ENTRY
  78538. ></RBW-ROW
  78539. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Source File</CELLBODY
  78540. ></ENTRY
  78541. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78542. ></ENTRY
  78543. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78544. ></ENTRY
  78545. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="38413" TYPE="XREF-TEXTCOPY">Defining Java Program Structure</RBW-XREF
  78546. ></CELLBODY
  78547. ></ENTRY
  78548. ></RBW-ROW
  78549. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text </CELLBODY
  78550. ></ENTRY
  78551. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  78552. ></ENTRY
  78553. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78554. ></ENTRY
  78555. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="20849" TYPE="XREF-TEXTCOPY">Specifying Comments</RBW-XREF
  78556. ></CELLBODY
  78557. ></ENTRY
  78558. ></RBW-ROW
  78559. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78560. ></ENTRY
  78561. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  78562. ></ENTRY
  78563. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78564. ></ENTRY
  78565. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="29648" TYPE="XREF-TEXTCOPY">Specifying Comments for Data Attributes</RBW-XREF
  78566. ></CELLBODY
  78567. ></ENTRY
  78568. ></RBW-ROW
  78569. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78570. ></ENTRY
  78571. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  78572. ></ENTRY
  78573. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78574. ></ENTRY
  78575. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="36331" TYPE="XREF-TEXTCOPY">Specifying Comments for Methods</RBW-XREF
  78576. ></CELLBODY
  78577. ></ENTRY
  78578. ></RBW-ROW
  78579. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78580. ></ENTRY
  78581. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  78582. ></ENTRY
  78583. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  78584. ></ENTRY
  78585. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21964" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  78586. ></CELLBODY
  78587. ></ENTRY
  78588. ></RBW-ROW
  78589. ></TBODY
  78590. ></TGROUP
  78591. ><RBW-ICONIZE></RBW-TABLE
  78592. ><B.BODY></B.BODY
  78593. ><B.BODY></B.BODY
  78594. ><RBWAUTO-0001></RBWAUTO-0001
  78595. ><!--
  78596.  
  78597.  
  78598.  
  78599.  
  78600.  
  78601. CONVERTING SOURCE FILE ../../sources/ne/nebk.mif
  78602.  
  78603.  
  78604. --><B.BODY></B.BODY
  78605. ><B.BODY></B.BODY
  78606. ><B.BODY></B.BODY
  78607. ><B.BODY></B.BODY
  78608. ><B.BODY></B.BODY
  78609. ></LABEL
  78610. ></APPENDIX
  78611. ></BOOK
  78612. ><BOOK><BH.BOOK.HEAD>NewEra Generation Guide</BH.BOOK.HEAD
  78613. ><!--
  78614.  
  78615.  
  78616.  
  78617.  
  78618.  
  78619. CONVERTING SOURCE FILE ../../sources/ne/nepref.fm5.mif
  78620.  
  78621.  
  78622. --><B.BODY></B.BODY
  78623. ><B.BODY></B.BODY
  78624. ><B.BODY></B.BODY
  78625. ><B.BODY></B.BODY
  78626. ><B.BODY></B.BODY
  78627. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  78628. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  78629. ></RBW-SYSOBJ
  78630. ></CN.CHAPTER.NOX23
  78631. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78632. >About this manual</L.LABEL
  78633. ><B.BODY>ObjectTeam provides code generation tools that enable you to generate object&truehy;oriented code for a range of object&truehy;oriented programming languages. This guide focuses on NewEra as the target language. </B.BODY
  78634. ><B.BODY>Business experts, application designers, and system developers can work together using these tools to efficiently analyze, design, and identify solutions to business problems. The NewEra Code Generator simplifies implementation and programming by automatically converting design data from Class Diagrams that you’ve previously created and specified with NewEra&truehy;specific properties into NewEra source code.</B.BODY
  78635. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Code Generation Guide</CX5FX5FTITLE
  78636. ><CX5FX5FTITLE></CX5FX5FTITLE
  78637. ><CX5FX5FTERM> for Informix NewEra </CX5FX5FTERM
  78638. >contains information specific to Version 2.11 of the NewEra programming language. This includes information for setting up, configuring, and specifying code generation details in Class Diagrams that you will use to generate NewEra code. Refer to the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  78639. ><CX5FX5FTITLE></CX5FX5FTITLE
  78640. > for general information about the code generation process and for installation instructions.</B.BODY
  78641. ></LABEL
  78642. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78643. >Prerequisites</L.LABEL
  78644. ><B.BODY>This guide is intended for experienced users of ObjectTeam and the analysis and design method it supports. It is also intended for experienced C++ programmers who have some familiarity with NewEra programming. This guide gives you information on how to map ObjectTeam diagrams to NewEra code; it does not teach you the NewEra language.</B.BODY
  78645. ><B.BODY>To customize or extend the capabilities of the NewEra code generator, you must have a thorough understanding of the ObjectTeam Shell, the Object&truehy;Oriented Programming Language (OOPL) model structure, and the Tool Command Language (Tcl) commands.</B.BODY
  78646. ><RBWAUTO-0001></RBWAUTO-0001
  78647. ><!--
  78648.  
  78649.  
  78650.  
  78651.  
  78652.  
  78653. CONVERTING SOURCE FILE ../../sources/ne/neobjd.fm5.mif
  78654.  
  78655.  
  78656. --><B.BODY></B.BODY
  78657. ><B.BODY></B.BODY
  78658. ><B.BODY></B.BODY
  78659. ><B.BODY></B.BODY
  78660. ><B.BODY></B.BODY
  78661. ></LABEL
  78662. ></CHAPTERNONUM
  78663. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  78664. ></RBW-AUTOGEN
  78665. ><RBW-ANCHOR ID="19722"></RBW-ANCHOR
  78666. >Preparing Your ObjectTeam Model for Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  78667. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  78668. ></RBW-SYSOBJ
  78669. ></C.CHAPTER.HEAD
  78670. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78671. >Introduction</L.LABEL
  78672. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  78673. ><CX5FX5FTITLE></CX5FX5FTITLE
  78674. >, you model the system without regard to the implementation environment.</B.BODY
  78675. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  78676. ></LABEL
  78677. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78678. >NewEra module required</L.LABEL
  78679. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>NewEra Code Generation</CX5FX5FEMPHASIS
  78680. > provides the menu items, the properties and the Tcl code required to use the NewEra Code Generator. Therefore, before moving to the Object Design phase, make sure this module is active.</B.BODY
  78681. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  78682. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78683. >For more information</SL.SUBLABEL
  78684. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  78685. ><CX5FX5FTITLE></CX5FX5FTITLE
  78686. > for details on how to activate a module.</B.BODY
  78687. ></LABEL
  78688. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78689. >Object Design and Implementation</L.LABEL
  78690. ><B.BODY>This chapter describes the tasks of the Object Design phase. <RBW-XREF REFID="15740" TYPE="XREF-TEXTCOPY">Chapter 2, Building NewEra Applications</RBW-XREF
  78691. >, describes the tasks of the Implementation phase. You work iteratively in these two phases to generate code and complete your application.</B.BODY
  78692. ></LABEL
  78693. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78694. >Purpose of object design</L.LABEL
  78695. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  78696. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  78697. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  78698. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use oter diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  78699. ></LABEL
  78700. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78701. >In this chapter</L.LABEL
  78702. ><B.BODY>This chapter contains the following sections:</B.BODY
  78703. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  78704. ></ENTRY
  78705. ></RBW-ROW
  78706. ></THEAD
  78707. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15756" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;1–3</RBW-XREF
  78708. ></SB.SECTION.BLOCK.TABLE
  78709. ></ENTRY
  78710. ></RBW-ROW
  78711. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24561" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;1–6</RBW-XREF
  78712. ></SB.SECTION.BLOCK.TABLE
  78713. ></ENTRY
  78714. ></RBW-ROW
  78715. ></TBODY
  78716. ></TGROUP
  78717. ></RBW-TABLE
  78718. ></LABEL
  78719. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  78720. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  78721. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  78722. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  78723. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  78724. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  78725. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  78726. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  78727. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  78728. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  78729. >Refining the Class Diagrams</S.SECTION.HEAD
  78730. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78731. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  78732. ></L.LABEL
  78733. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  78734. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  78735. ></LABEL
  78736. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78737. >Using data from diagrams other than CDs</L.LABEL
  78738. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  78739. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  78740. ></ENTRY
  78741. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  78742. ></ENTRY
  78743. ></RBW-ROW
  78744. ></THEAD
  78745. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  78746. ></ENTRY
  78747. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  78748. ><CELLBODY>STD class</CELLBODY
  78749. ><CELLBODY>UCD actor</CELLBODY
  78750. ></ENTRY
  78751. ></RBW-ROW
  78752. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  78753. ></ENTRY
  78754. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  78755. ><CELLBODY>STD event or event message</CELLBODY
  78756. ><CELLBODY>UCD communication association</CELLBODY
  78757. ></ENTRY
  78758. ></RBW-ROW
  78759. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  78760. ></ENTRY
  78761. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  78762. ><CELLBODY>STD condition on an event</CELLBODY
  78763. ></ENTRY
  78764. ></RBW-ROW
  78765. ></TBODY
  78766. ></TGROUP
  78767. ></RBW-TABLE
  78768. ></LABEL
  78769. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78770. >Classes</L.LABEL
  78771. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  78772. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions and procedures of the class type. </B.BODY
  78773. ></LABEL
  78774. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78775. >External classes</L.LABEL
  78776. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  78777. ></LABEL
  78778. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78779. >Associations</L.LABEL
  78780. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  78781. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  78782. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78783. >Role names in Analysis and System Design</SL.SUBLABEL
  78784. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  78785. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00699.tif" origseq="1" origtype="I" origdoc="../../sources/ne/neobjd.fm5.mif"></RBW-GRAPHIC
  78786. ></FA.FIGURE.ANCHOR
  78787. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78788. >Role names in Object Design and Implementation</SL.SUBLABEL
  78789. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods  for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  78790. ></LABEL
  78791. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78792. >Attributes</L.LABEL
  78793. ><B.BODY>You must specify each attribute completely, including its data type. The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  78794. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  78795. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78796. >Data types</SL.SUBLABEL
  78797. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and derived types. </B.BODY
  78798. ></LABEL
  78799. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78800. >Operations</L.LABEL
  78801. ><BI.BODY.INTRO>You must specify each operation completely.  This includes specifying such aspects as:</BI.BODY.INTRO
  78802. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78803. ></RBW-AUTOGEN
  78804. ></RBW-MARKER
  78805. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  78806. ></LB.LIST.BULLET
  78807. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78808. ></RBW-AUTOGEN
  78809. ></RBW-MARKER
  78810. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  78811. ></LB.LIST.BULLET
  78812. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78813. ></RBW-AUTOGEN
  78814. ></RBW-MARKER
  78815. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  78816. ></LB.LIST.BULLET
  78817. ></LABEL
  78818. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78819. >Properties</L.LABEL
  78820. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  78821. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  78822. >These details are incorporated in the final code.</BI.BODY.INTRO
  78823. ></LABEL
  78824. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78825. >Checking</L.LABEL
  78826. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  78827. ><CX5FX5FTITLE></CX5FX5FTITLE
  78828. > for more information about the Check utility.</B.BODY
  78829. ></LABEL
  78830. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78831. >For more information</L.LABEL
  78832. ><B.BODY><RBW-XREF REFID="27879" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to NewEra Non&truehy;Persistent Code</RBW-XREF
  78833. >, <RBW-XREF REFID="23603" TYPE="XREF-TEXTCOPY">Chapter 4, Mapping Modeling Data to NewEra Persistent Code</RBW-XREF
  78834. >, and <RBW-XREF REFID="16738" TYPE="XREF-TEXTCOPY">Chapter 5, Modeling the User Interface</RBW-XREF
  78835. >, describe how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  78836. ></LABEL
  78837. ></SECTION
  78838. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  78839. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  78840. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  78841. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  78842. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  78843. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  78844. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  78845. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  78846. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  78847. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  78848. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  78849. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78850. >Introduction</L.LABEL
  78851. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  78852. ></LABEL
  78853. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78854. >Understanding the translations</L.LABEL
  78855. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  78856. ></LABEL
  78857. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78858. >Naming conventions</L.LABEL
  78859. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, bear in mind that spaces between words (in class names, for instance) are deleted by ObjectTeam code generators.</B.BODY
  78860. ></LABEL
  78861. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78862. >Customizing code generation</L.LABEL
  78863. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own.. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  78864. ></LABEL
  78865. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78866. >Using multiple languages in a single application</L.LABEL
  78867. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  78868. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  78869. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  78870. ></RBW-AUTOGEN
  78871. ></RBW-MARKER
  78872. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  78873. ></LN.LIST.NUM
  78874. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  78875. ></RBW-AUTOGEN
  78876. ></RBW-MARKER
  78877. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  78878. ></LN.LIST.NUM
  78879. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  78880. ></RBW-AUTOGEN
  78881. ></RBW-MARKER
  78882. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  78883. ></LN.LIST.NUM
  78884. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  78885. ></RBW-AUTOGEN
  78886. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  78887. ></LABEL
  78888. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78889. ></L.LABEL
  78890. ><!--
  78891.  
  78892.  
  78893.  
  78894.  
  78895.  
  78896. CONVERTING SOURCE FILE ../../sources/ne/necodg.fm5.mif
  78897.  
  78898.  
  78899. --><B.BODY></B.BODY
  78900. ><B.BODY></B.BODY
  78901. ><B.BODY></B.BODY
  78902. ><B.BODY></B.BODY
  78903. ><B.BODY></B.BODY
  78904. ></LABEL
  78905. ></SECTION
  78906. ></CHAPTER
  78907. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  78908. ></RBW-AUTOGEN
  78909. >Building <RBW-ANCHOR ID="15740"></RBW-ANCHOR
  78910. >NewEra Applications<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  78911. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  78912. ></RBW-SYSOBJ
  78913. ></C.CHAPTER.HEAD
  78914. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78915. >Introduction</L.LABEL
  78916. ><B.BODY><RBW-IDXTERM TERM1="code generation"></RBW-IDXTERM
  78917. >Typically, the ultimate goal of modeling an application is to produce code that implements the application. In ObjectTeam, you can generate a significant portion of the code automatically, then complete the code by adding the details that not specified in the model.</B.BODY
  78918. ></LABEL
  78919. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78920. >Prerequisites</L.LABEL
  78921. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78922. ></RBW-AUTOGEN
  78923. ></RBW-MARKER
  78924. ><RBW-PARABODY>The ObjectTeam module <CX5FX5FEMPHASIS>NewEra Code generation</CX5FX5FEMPHASIS
  78925. > must be active from Object Design Phase and Implementation Phase level down.</RBW-PARABODY
  78926. ></LB.LIST.BULLET
  78927. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  78928. ></RBW-AUTOGEN
  78929. ></RBW-MARKER
  78930. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="19722" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  78931. >.</RBW-PARABODY
  78932. ></LB.LIST.BULLET
  78933. ></LABEL
  78934. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78935. >Steps in building a NewEra application</L.LABEL
  78936. ><B.BODY>The following table provides an overview of the application development process. This chapter describes each step in greater detail.</B.BODY
  78937. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  78938. ></ENTRY
  78939. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  78940. ></ENTRY
  78941. ></RBW-ROW
  78942. ></THEAD
  78943. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  78944. ></ENTRY
  78945. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate NewEra files. During this step, ObjectTeam generates the application source code files on System level in the Implementation phase.</CELLBODY
  78946. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  78947. > System level in the Implementation phase is fundamentally different from System level in other phases. The System files in the Implementation phase are source files, not diagram files.</CELLBODY
  78948. ></ENTRY
  78949. ></RBW-ROW
  78950. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  78951. ></ENTRY
  78952. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configure the NewEra environment, ensuring proper installation of the NewEra environment (Application Builder, Window Painter, and so on).</CELLBODY
  78953. ></ENTRY
  78954. ></RBW-ROW
  78955. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  78956. ></ENTRY
  78957. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit the source files. ObjectTeam generates a large portion of your application code, but not all of it. In this stage, you finish writing the application code.</CELLBODY
  78958. ><CELLBODY>Changes you make to the source files are not lost. When you regenerate the source files, the code generator recognizes your changes and transfers them to the newly generated files.<RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  78959. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  78960. > <RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  78961. ></CELLBODY
  78962. ></ENTRY
  78963. ></RBW-ROW
  78964. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  78965. ></ENTRY
  78966. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Define the target database. This step is only necessary if your CDs contain persistent classes. Persistent classes are created as tables in a relational database. In this step, you create or select the database.</CELLBODY
  78967. ></ENTRY
  78968. ></RBW-ROW
  78969. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  78970. ></ENTRY
  78971. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Complete the generated wif template files using the NewEra Window Painter. This step is only necessary if your CDs contain GUI classes</CELLBODY
  78972. ></ENTRY
  78973. ></RBW-ROW
  78974. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  78975. ></ENTRY
  78976. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Build the executable or library using the NewEra Application Builder. If you built an executable, you can now run it.</CELLBODY
  78977. ></ENTRY
  78978. ></RBW-ROW
  78979. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  78980. ></ENTRY
  78981. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Test the executable or library. If necessary: correct the source files, the model, or both; regenerate the files; and return to step 6.</CELLBODY
  78982. ></ENTRY
  78983. ></RBW-ROW
  78984. ></TBODY
  78985. ></TGROUP
  78986. ></RBW-TABLE
  78987. ></LABEL
  78988. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78989. >Illustration of code generation</L.LABEL
  78990. ><BI.BODY.INTRO>The following illustration shows how ObjectTeam generates code, including the names of the Tcl scripts that it uses. The CDs and CDMs shown at the top are in the Object Design phase.</BI.BODY.INTRO
  78991. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00700.tif" origseq="6" origtype="I" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  78992. ></FAR.FIGURE.ANCHOR.RIGHT
  78993. ></LABEL
  78994. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  78995. >In this chapter</L.LABEL
  78996. ><B.BODY>This chapter contains the following sections:</B.BODY
  78997. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  78998. ></ENTRY
  78999. ></RBW-ROW
  79000. ></THEAD
  79001. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27634" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;2–4</RBW-XREF
  79002. ></SB.SECTION.BLOCK.TABLE
  79003. ></ENTRY
  79004. ></RBW-ROW
  79005. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35551" TYPE="XREF-TEXTCOPY">Generating NewEra Source Files</RBW-XREF
  79006. ></SB.SECTION.BLOCK.TABLE
  79007. ></ENTRY
  79008. ></RBW-ROW
  79009. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your NewEra Environment&rbwtab;2–14</RBW-XREF
  79010. ></SB.SECTION.BLOCK.TABLE
  79011. ></ENTRY
  79012. ></RBW-ROW
  79013. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19708" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files&rbwtab;2–17</RBW-XREF
  79014. ></SB.SECTION.BLOCK.TABLE
  79015. ></ENTRY
  79016. ></RBW-ROW
  79017. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37228" TYPE="XREF-TEXTCOPY">Defining a Target Database&rbwtab;2–20</RBW-XREF
  79018. ></SB.SECTION.BLOCK.TABLE
  79019. ></ENTRY
  79020. ></RBW-ROW
  79021. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30084" TYPE="XREF-TEXTCOPY">Building the Executable or Library&rbwtab;2–23</RBW-XREF
  79022. ></SB.SECTION.BLOCK.TABLE
  79023. ></ENTRY
  79024. ></RBW-ROW
  79025. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33638" TYPE="XREF-TEXTCOPY">Regenerating Code&rbwtab;2–24</RBW-XREF
  79026. ></SB.SECTION.BLOCK.TABLE
  79027. ></ENTRY
  79028. ></RBW-ROW
  79029. ></TBODY
  79030. ></TGROUP
  79031. ></RBW-TABLE
  79032. ></LABEL
  79033. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="27634"></RBW-ANCHOR
  79034. >Components of Code Generation</S.SECTION.HEAD
  79035. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79036. >Tcl scripts for code generation</L.LABEL
  79037. ><B.BODY>The scripts written for code generation retrieve information from the code generation models, format this information and write the results to source code files. Code generation models are built from the CDs in the Object Design phase.</B.BODY
  79038. ></LABEL
  79039. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79040. >Persistent and non&truehy;persistent and code</L.LABEL
  79041. ><BI.BODY.INTRO>Objects can be persistent or non&truehy;persistent:</BI.BODY.INTRO
  79042. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79043. ></RBW-AUTOGEN
  79044. ></RBW-MARKER
  79045. ><RBW-PARABODY>The data of a <CX5FX5FBULLET.EMPHASIS>persistent</CX5FX5FBULLET.EMPHASIS
  79046. > object survives the execution of its related program; that is, the object persists beyond the lifetime of a single program execution. The data for persistent objects is stored in a <RBW-IDXTERM TERM1="data store" TERM2="permanent"></RBW-IDXTERM
  79047. >permanent data store, such as a Relational Database Management System (RDBMS).</RBW-PARABODY
  79048. ></LB.LIST.BULLET
  79049. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79050. ></RBW-AUTOGEN
  79051. ></RBW-MARKER
  79052. ><RBW-PARABODY>The data of a <CX5FX5FBULLET.EMPHASIS>non&truehy;persistent</CX5FX5FBULLET.EMPHASIS
  79053. > object exists only during the execution of its related program.</RBW-PARABODY
  79054. ></LB.LIST.BULLET
  79055. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79056. >Terminology</SL.SUBLABEL
  79057. ><B.BODY>Classes and code are not persistent or non&truehy;persistent. However, to simplify references to classes and code that are related to persistent and non&truehy;persistent objects, the ObjectTeam documentation uses the terms <CX5FX5FTERM>persistent classes</CX5FX5FTERM
  79058. >, <CX5FX5FTERM>non&truehy;persistent classes</CX5FX5FTERM
  79059. >, <CX5FX5FTERM>persistent code</CX5FX5FTERM
  79060. > and <CX5FX5FTERM>non&truehy;persistent code</CX5FX5FTERM
  79061. >. For example, <CX5FX5FEMPHASIS>non&truehy;persistent code</CX5FX5FEMPHASIS
  79062. > refers to object&truehy;oriented language code (NewEra), and <CX5FX5FEMPHASIS>persistent code</CX5FX5FEMPHASIS
  79063. > refers to the Data Definition Language (SQL) and the Data Manipulating Language (NewEra) code. <RBW-IDXTERM TERM1="code generation" TERM2="persistent"></RBW-IDXTERM
  79064. ><RBW-IDXTERM TERM1="persistent code generation"></RBW-IDXTERM
  79065. ></B.BODY
  79066. ></LABEL
  79067. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79068. >Wifl code</L.LABEL
  79069. ><B.BODY>Besides persistent and non&truehy;persistent code ObjectTeam can generate templates with wifl code. Wifl is the Window Intermediate Format Language that is used to define the Graphical User Interface of a NewEra application. These templates serve as initial wif files, which should be completed further in NewEra.</B.BODY
  79070. ></LABEL
  79071. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79072. ><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  79073. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  79074. >Code <RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  79075. >regeneration</L.LABEL
  79076. ><B.BODY>Code generation is an automated process that generates NewEra, SQL and WIF template files. ObjectTeam ensures that </B.BODY
  79077. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79078. ></RBW-AUTOGEN
  79079. ></RBW-MARKER
  79080. ><RBW-PARABODY>You can regenerate these files when you change your model.</RBW-PARABODY
  79081. ></LB.LIST.BULLET
  79082. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79083. ></RBW-AUTOGEN
  79084. ></RBW-MARKER
  79085. ><RBW-PARABODY>Changes that you make to the generated files are preserved when you regenerate the files.</RBW-PARABODY
  79086. ></LB.LIST.BULLET
  79087. ><B.BODY>For more information, see <RBW-XREF REFID="33638" TYPE="XREF-TEXTCOPY">Regenerating Code</RBW-XREF
  79088. >.</B.BODY
  79089. ></LABEL
  79090. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79091. ><RBW-IDXTERM TERM1="class library" TERM2="including in code generation"></RBW-IDXTERM
  79092. >Class library integration</L.LABEL
  79093. ><B.BODY>You can include external class libraries in your design. Such an external class library is automatically included during the code generation. In addition, ObjectTeam helps you to understand and reuse existing class libraries through reverse engineering.</B.BODY
  79094. ><B.BODY>For more information, see <RBW-XREF REFID="32714" TYPE="XREF-TEXTCOPY">Chapter 6, Reverse Engineering</RBW-XREF
  79095. >.</B.BODY
  79096. ></LABEL
  79097. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79098. >Configuration</L.LABEL
  79099. ><B.BODY>The non&truehy;persistent code that ObjectTeam generates could be any object&truehy;oriented programming language, but this guide focuses on NewEra. You can configure the settings of the default values that are applied when the design is transformed into the NewEra code.</B.BODY
  79100. ><B.BODY>For more information, see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your NewEra Environment</RBW-XREF
  79101. >.</B.BODY
  79102. ></LABEL
  79103. ></SECTION
  79104. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35551"></RBW-ANCHOR
  79105. >Generating NewEra Source Files</S.SECTION.HEAD
  79106. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79107. >Result of generating</L.LABEL
  79108. ><B.BODY>When you generate source files, the code generator uses the CDs and CDMs that are in the Object Design phase to create NewEra source files in the Implementation phase. At System level of the Implementation phase, you can then refine the source code and complete the application.</B.BODY
  79109. ></LABEL
  79110. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79111. >Implementation Phase is different</L.LABEL
  79112. ><B.BODY>The System level of the Implementation phase is fundamentally different from System level of any other phase. In the Implementation phase, the System files are NewEra files. In other phases, the System files are ObjectTeam diagrams.</B.BODY
  79113. ></LABEL
  79114. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79115. >Generate code on Phase or System level</L.LABEL
  79116. ><B.BODY>You can generate code on the Implementation Phase level or on the System level of the Implementation phase.</B.BODY
  79117. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79118. ></RBW-AUTOGEN
  79119. ></RBW-MARKER
  79120. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>Implementation Phase level</CX5FX5FBULLET.EMPHASIS
  79121. >, you can generate code for one or more systems. This creates a matching system in the Implementation Phase that contains the generated source files. For each system that you select, ObjectTeam imports both the OOPL and SQL Models. To regenerate code for an existing system, use System level.</RBW-PARABODY
  79122. ></LB.LIST.BULLET
  79123. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79124. ></RBW-AUTOGEN
  79125. ></RBW-MARKER
  79126. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>System level of the Implementation phase</CX5FX5FBULLET.EMPHASIS
  79127. >, you can (re)generate code for the entire system, or regenerate selected source files. On System level, you can select whether to import the OOPL or SQL Model.</RBW-PARABODY
  79128. ></LB.LIST.BULLET
  79129. ><B.BODY>Typically, you use Implementation Phase level to generate code for a system initially and System level to regenerate code subsequently.</B.BODY
  79130. ></LABEL
  79131. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79132. >How to generate code on Implementation Phase level</L.LABEL
  79133. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  79134. ></RBW-AUTOGEN
  79135. ></RBW-MARKER
  79136. ><RBW-PARABODY>To generate source files on the Implementation Phase level:</RBW-PARABODY
  79137. ></P.PROCEDURE
  79138. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  79139. ></RBW-AUTOGEN
  79140. ></RBW-MARKER
  79141. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  79142. ></LN.LIST.NUM
  79143. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  79144. ></RBW-AUTOGEN
  79145. ></RBW-MARKER
  79146. ><RBW-PARABODY>Select Utilities | Generate NewEra.</RBW-PARABODY
  79147. ></LN.LIST.NUM
  79148. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  79149. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  79150. ></RBW-AUTOGEN
  79151. ></RBW-MARKER
  79152. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  79153. ></LN.LIST.NUM
  79154. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  79155. ></RBW-MARKER
  79156. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  79157. > to generate code for all systems from the Object Design phase for which no code has been generated yet.</RBW-PARABODY
  79158. ></LB2.LIST.BULLET.2
  79159. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  79160. ></RBW-MARKER
  79161. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  79162. > to generate code for one or more systems in the Object Design phase. You can select only systems that do not yet exist in the Implementation phase.</RBW-PARABODY
  79163. ></LB2.LIST.BULLET.2
  79164. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files. For each system, ObjectTeam generates both the OOPL and SQL Models. (These models are described later in this section.)</LR.LIST.RESULT
  79165. ></LABEL
  79166. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79167. >How to generate code on System level</L.LABEL
  79168. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  79169. ></RBW-AUTOGEN
  79170. ></RBW-MARKER
  79171. ><RBW-PARABODY>To generate (selected) source files for a system from System level of the Implementation phase:</RBW-PARABODY
  79172. ></P.PROCEDURE
  79173. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  79174. ></RBW-AUTOGEN
  79175. ></RBW-MARKER
  79176. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  79177. ></LN.LIST.NUM
  79178. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  79179. ></RBW-AUTOGEN
  79180. ></RBW-MARKER
  79181. ><RBW-PARABODY>Select Utilities | Generate NewEra.</RBW-PARABODY
  79182. ></LN.LIST.NUM
  79183. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  79184. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  79185. ></RBW-AUTOGEN
  79186. ></RBW-MARKER
  79187. ><RBW-PARABODY>Select New, Selected, or All:</RBW-PARABODY
  79188. ></LN.LIST.NUM
  79189. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  79190. ></RBW-MARKER
  79191. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New</CX5FX5FBULLET.EMPHASIS
  79192. > to generate code for all classes that are defined in this system and that have not yet been generated into code. The Import New dialog box appears.</RBW-PARABODY
  79193. ></LB2.LIST.BULLET.2
  79194. ><FA3.FIGURE.ANCHOR.3><RBW-GRAPHIC filename="00701.unk" origfile="pics/imprtnew.gif" origtype="X" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79195. ></FA3.FIGURE.ANCHOR.3
  79196. ><LT2.LIST.TEXT.2>Select SQL to import the SQL Model or OOPL to import the OOPL Model, then select OK.</LT2.LIST.TEXT.2
  79197. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  79198. ></RBW-MARKER
  79199. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Selected</CX5FX5FBULLET.EMPHASIS
  79200. > to regenerate the files that you have selected in the Information area of the browser.</RBW-PARABODY
  79201. ></LB2.LIST.BULLET.2
  79202. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  79203. ></RBW-MARKER
  79204. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>All</CX5FX5FBULLET.EMPHASIS
  79205. > to (re)generate code for all classes that are defined in this system.</RBW-PARABODY
  79206. ></LB2.LIST.BULLET.2
  79207. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files. The following illustration shows the Monitor window after generating the OOPL Model.</LR.LIST.RESULT
  79208. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00702.unk" origfile="pics/imp_impl.gif" origtype="X" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79209. ></FA.FIGURE.ANCHOR
  79210. ></LABEL
  79211. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79212. >Location of the source files</L.LABEL
  79213. ><B.BODY>Source files are stored in the repository as external files. They are also written to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  79214. >\<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  79215. > directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  79216. > is the file path for your generated files. For more information on the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  79217. ><CX5FX5FTITLE></CX5FX5FTITLE
  79218. >.</B.BODY
  79219. ><B.BODY>The following illustrations show how the source files appear in the Browser. The first illustration shows the source files after generating the OOPL Model and the second shows the source files after generating the SQL Model.</B.BODY
  79220. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00703.unk" origfile="pics/sf_oopl.gif" origtype="X" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79221. ></FA.FIGURE.ANCHOR
  79222. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00704.unk" origfile="pics/sf_sql.gif" origtype="X" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79223. ></FA.FIGURE.ANCHOR
  79224. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79225. ><RBW-IDXTERM TERM1="user environment" TERM2="updating"></RBW-IDXTERM
  79226. ><RBW-IDXTERM TERM1="Update User Environment (Utilities menu)"></RBW-IDXTERM
  79227. >Update user environment</SL.SUBLABEL
  79228. ><B.BODY>Utilities | Update User Environment synchronizes your user environment with the repository. This can be particularly useful if you are working on two machines, and the user environment of each is set to a local drive. When you move between machines, you can use Utilities | Update User Environment to update the local drive of the current machine.</B.BODY
  79229. ></LABEL
  79230. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27397"></RBW-ANCHOR
  79231. >Generating NewEra Code</SS.SUBSEC.HEAD
  79232. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79233. >Introduction</L.LABEL
  79234. ><B.BODY><RBW-XREF REFID="35551" TYPE="XREF-TEXTCOPY">Generating NewEra Source Files</RBW-XREF
  79235. > describes how to generate source files for systems in the Implementation phase. This section describes how ObjectTeam converts the OOPL model. <RBW-IDXTERM TERM1="generating code" TERM2="import OOPL model"></RBW-IDXTERM
  79236. ><RBW-IDXTERM TERM1="code generation" TERM2="importing OOPL model"></RBW-IDXTERM
  79237. ></B.BODY
  79238. ></LABEL
  79239. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79240. >OOPL Model</L.LABEL
  79241. ><B.BODY>The OOPL Model, which is generated from the CDs in the Object Design phase, contains information used to generate code. The objects in this model are organized in such a way that code can be generated easily.</B.BODY
  79242. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79243. >For more information</SL.SUBLABEL
  79244. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  79245. ><CX5FX5FTITLE></CX5FX5FTITLE
  79246. > provides a detailed description of the classes in the OOPL Model.</B.BODY
  79247. ></LABEL
  79248. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79249. >How ObjectTeam converts the OOPL Model</L.LABEL
  79250. ><B.BODY>To convert the OOPL Model, the ObjectTeam Shell (otsh) executes the Tcl script <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="import.tcl"></RBW-IDXTERM
  79251. >import.tcl</CX5FX5FFILE.NAME
  79252. >. It loads the OOPL model into memory and translates the information into NewEra source code. The ObjectTeam shell recognizes elements such as classes, data types, associations and methods. </B.BODY
  79253. ><B.BODY>The Tcl script <CX5FX5FFILE.NAME>import.tcl</CX5FX5FFILE.NAME
  79254. > activates, among other things, the Tcl script <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="genne.tcl"></RBW-IDXTERM
  79255. >genne.tcl</CX5FX5FFILE.NAME
  79256. >, which contains Tcl procedures to retrieve information from the OOPL model and other internal models, format it and write it to the appropriate source files. <CX5FX5FFILE.NAME>genne.tcl</CX5FX5FFILE.NAME
  79257. > uses other Tcl scripts that use other Tcl scripts as well, and so on.</B.BODY
  79258. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79259. >For more information</SL.SUBLABEL
  79260. ><B.BODY>For an overview of the Tcl scripts used for code generation, see <RBW-XREF REFID="36160" TYPE="XREF-TEXTCOPY">Chapter 7, Customizing Code Generation</RBW-XREF
  79261. >.</B.BODY
  79262. ></LABEL
  79263. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79264. >Non&truehy;persistent code</L.LABEL
  79265. ><B.BODY>The NewEra code generator generates the following files for every non&truehy;persistent class in the CDs of the Object Design phase:</B.BODY
  79266. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File</CELLHEADING
  79267. ></ENTRY
  79268. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  79269. ></ENTRY
  79270. ></RBW-ROW
  79271. ></THEAD
  79272. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name<CX5FX5FFILE.NAME>.4gl</CX5FX5FFILE.NAME
  79273. > </CELLBODY
  79274. ></ENTRY
  79275. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NewEra source file containing internal details of a class</CELLBODY
  79276. ></ENTRY
  79277. ></RBW-ROW
  79278. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name<CX5FX5FFILE.NAME>.4gh</CX5FX5FFILE.NAME
  79279. > </CELLBODY
  79280. ></ENTRY
  79281. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NewEra header file containing the class definition</CELLBODY
  79282. ></ENTRY
  79283. ></RBW-ROW
  79284. ></TBODY
  79285. ></TGROUP
  79286. ></RBW-TABLE
  79287. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79288. >For more information</SL.SUBLABEL
  79289. ><B.BODY>See <RBW-XREF REFID="27879" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to NewEra Non&truehy;Persistent Code</RBW-XREF
  79290. >, for more details.</B.BODY
  79291. ></LABEL
  79292. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79293. >Persistent code</L.LABEL
  79294. ><B.BODY>If the CDs of the Object Design phase contain persistent classes, the NewEra code generator generates files with the same extension as for non&truehy;persistent classes, but with persistent code.</B.BODY
  79295. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79296. >For more information</SL.SUBLABEL
  79297. ><B.BODY>See <RBW-XREF REFID="23603" TYPE="XREF-TEXTCOPY">Chapter 4, Mapping Modeling Data to NewEra Persistent Code</RBW-XREF
  79298. >, for more details.</B.BODY
  79299. ></LABEL
  79300. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79301. >Wifl code</L.LABEL
  79302. ><B.BODY>If the CDs of the Object Design phase contain GUI classes, the NewEra code generator generates the following file for every GUI class:</B.BODY
  79303. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File</CELLHEADING
  79304. ></ENTRY
  79305. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  79306. ></ENTRY
  79307. ></RBW-ROW
  79308. ></THEAD
  79309. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class_name<CX5FX5FFILE.NAME>.wif</CX5FX5FFILE.NAME
  79310. > </CELLBODY
  79311. ></ENTRY
  79312. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Window Intermediate File template containing initial code for the definition of graphical objects</CELLBODY
  79313. ></ENTRY
  79314. ></RBW-ROW
  79315. ></TBODY
  79316. ></TGROUP
  79317. ></RBW-TABLE
  79318. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79319. >For more information</SL.SUBLABEL
  79320. ><B.BODY>See <RBW-XREF REFID="16738" TYPE="XREF-TEXTCOPY">Chapter 5, Modeling the User Interface</RBW-XREF
  79321. >, for more details.</B.BODY
  79322. ></LABEL
  79323. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79324. >Example</L.LABEL
  79325. ><B.BODY>The following example shows a non&truehy;persistent class from the CD and the matching NewEra 4gl and 4gh files that would be generated. Notice that the function <CX5FX5FTITLE>PrintAmount</CX5FX5FTITLE
  79326. > still needs to be implemented.</B.BODY
  79327. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00705.unk" origfile="pics/acct.gif" origtype="X" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79328. ></FA.FIGURE.ANCHOR
  79329. ><B.BODY><CX5FX5FFILE.NAME>4gh file</CX5FX5FFILE.NAME
  79330. >:</B.BODY
  79331. ><EM.EXAMPLE.MONO>CLASS Account</EM.EXAMPLE.MONO
  79332. ><EM.EXAMPLE.MONO>   FUNCTION Account()</EM.EXAMPLE.MONO
  79333. ><EM.EXAMPLE.MONO>   FUNCTION !destroy()</EM.EXAMPLE.MONO
  79334. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79335. ><EM.EXAMPLE.MONO>   PUBLIC FUNCTION getAmount() RETURNING INTEGER</EM.EXAMPLE.MONO
  79336. ><EM.EXAMPLE.MONO>   PUBLIC FUNCTION setAmount(newAmount INTEGER) RETURNING VOID</EM.EXAMPLE.MONO
  79337. ><EM.EXAMPLE.MONO>   PUBLIC FUNCTION PrintAmount() RETURNING VOID</EM.EXAMPLE.MONO
  79338. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79339. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79340. ><EM.EXAMPLE.MONO>   PRIVATE VARIABLE amount INTEGER </EM.EXAMPLE.MONO
  79341. ><EM.EXAMPLE.MONO>END CLASS</EM.EXAMPLE.MONO
  79342. ><B.BODY><CX5FX5FFILE.NAME>4gl file</CX5FX5FFILE.NAME
  79343. >:</B.BODY
  79344. ><EM.EXAMPLE.MONO>&truehy;&truehy; Start user added include file section</EM.EXAMPLE.MONO
  79345. ><EM.EXAMPLE.MONO>&truehy;&truehy; End user added include file section</EM.EXAMPLE.MONO
  79346. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79347. ><EM.EXAMPLE.MONO>INCLUDE “Account.4gh”</EM.EXAMPLE.MONO
  79348. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79349. ><EM.EXAMPLE.MONO>FUNCTION Account::Account()</EM.EXAMPLE.MONO
  79350. ><EM.EXAMPLE.MONO>   &truehy;&truehy; Start constructor user section</EM.EXAMPLE.MONO
  79351. ><EM.EXAMPLE.MONO>   &truehy;&truehy; End constructor user section</EM.EXAMPLE.MONO
  79352. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  79353. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79354. ><EM.EXAMPLE.MONO>FUNCTION Account::!destroy()</EM.EXAMPLE.MONO
  79355. ><EM.EXAMPLE.MONO>   &truehy;&truehy; Start destructor user section</EM.EXAMPLE.MONO
  79356. ><EM.EXAMPLE.MONO>   &truehy;&truehy; End destructor user section</EM.EXAMPLE.MONO
  79357. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  79358. ><B.BODY></B.BODY
  79359. ></LABEL
  79360. ></SUBSECTION
  79361. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32911"></RBW-ANCHOR
  79362. >Generating SQL Code</SS.SUBSEC.HEAD
  79363. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79364. >Introduction</L.LABEL
  79365. ><B.BODY><RBW-XREF REFID="35551" TYPE="XREF-TEXTCOPY">Generating NewEra Source Files</RBW-XREF
  79366. > describes how to generate source files for systems in the Implementation phase. This section describes how ObjectTeam converts the SQL Model.<RBW-IDXTERM TERM1="generating code" TERM2="import SQL model"></RBW-IDXTERM
  79367. ><RBW-IDXTERM TERM1="code generation" TERM2="importing SQL model"></RBW-IDXTERM
  79368. ><RBW-IDXTERM TERM1="importing" TERM2="SQL model"></RBW-IDXTERM
  79369. ></B.BODY
  79370. ></LABEL
  79371. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79372. >SQL Model</L.LABEL
  79373. ><B.BODY>The SQL Model, which is generated from the CDs in the Object Design phase, contains information used to generate code. It serves as the data model interface to the repository.</B.BODY
  79374. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79375. >For more information</SL.SUBLABEL
  79376. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  79377. ><CX5FX5FTITLE></CX5FX5FTITLE
  79378. > provides a detailed description of the classes in the SQL Model.</B.BODY
  79379. ></LABEL
  79380. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79381. >How ObjectTeam converts the SQL model</L.LABEL
  79382. ><B.BODY>To convert the SQL Model, the ObjectTeam Shell (otsh) generates SQL statements for all persistent classes in the CDs in the Object Design phase. It writes these statements to the following SQL script files:</B.BODY
  79383. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Script File</CELLHEADING
  79384. ></ENTRY
  79385. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  79386. ></ENTRY
  79387. ></RBW-ROW
  79388. ></THEAD
  79389. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>create</CELLBODY
  79390. ></ENTRY
  79391. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>general script that activates the scripts: create_tables, create_procs</CELLBODY
  79392. ></ENTRY
  79393. ></RBW-ROW
  79394. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>create_procs</CELLBODY
  79395. ></ENTRY
  79396. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQL statements to create procedures that insert tuples in and delete tuples from the target database</CELLBODY
  79397. ></ENTRY
  79398. ></RBW-ROW
  79399. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>create_tables</CELLBODY
  79400. ></ENTRY
  79401. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQL statements to create database tables</CELLBODY
  79402. ></ENTRY
  79403. ></RBW-ROW
  79404. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>drop</CELLBODY
  79405. ></ENTRY
  79406. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>general script that activates the scripts: drop_tables, drop_procs</CELLBODY
  79407. ></ENTRY
  79408. ></RBW-ROW
  79409. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>drop_procs</CELLBODY
  79410. ></ENTRY
  79411. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQL statements to drop database procedures</CELLBODY
  79412. ></ENTRY
  79413. ></RBW-ROW
  79414. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>drop_tables</CELLBODY
  79415. ></ENTRY
  79416. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQL statements to drop database tables</CELLBODY
  79417. ></ENTRY
  79418. ></RBW-ROW
  79419. ></TBODY
  79420. ></TGROUP
  79421. ></RBW-TABLE
  79422. ></LABEL
  79423. ></SUBSECTION
  79424. ></SECTION
  79425. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40480"></RBW-ANCHOR
  79426. >Configuring Your NewEra Environment</S.SECTION.HEAD
  79427. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79428. >What is the NewEra environment<RBW-IDXTERM TERM1="NewEra" TERM2="configuring - environment"></RBW-IDXTERM
  79429. ></L.LABEL
  79430. ><B.BODY>Configuring your NewEra environment means effectively that the source files of the class library lw4omtne (see <RBW-XREF REFID="18476" TYPE="XREF-TEXTCOPY">Class Library lw4omtne</RBW-XREF
  79431. >) are copied over to your user environment. You need to compile these source files using the NewEra Application Builder.</B.BODY
  79432. ><B.BODY>While building your application, the NewEra Application Builder needs to link the classes of the class library lw4omtne with the classes in your application.</B.BODY
  79433. ></LABEL
  79434. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79435. >What happens when you configure your NewEra environment</L.LABEL
  79436. ><B.BODY>When you configure your NewEra environment, ObjectTeam carries out the following tasks:</B.BODY
  79437. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79438. ></RBW-AUTOGEN
  79439. ></RBW-MARKER
  79440. ><RBW-PARABODY>The required source files for the specified class libraries are copied to the user_environment<CX5FX5FFILE.NAME>/src/lw4omtne</CX5FX5FFILE.NAME
  79441. > directory, where </RBW-PARABODY
  79442. ></LB.LIST.BULLET
  79443. ><LT.LIST.TEXT>user_environment is the file path for generated files, as described in the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  79444. ><CX5FX5FTITLE></CX5FX5FTITLE
  79445. >.</LT.LIST.TEXT
  79446. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79447. ></RBW-AUTOGEN
  79448. ></RBW-MARKER
  79449. ><RBW-PARABODY>The required include files are copied to the user_environment<CX5FX5FFILE.NAME>/include</CX5FX5FFILE.NAME
  79450. > directory.</RBW-PARABODY
  79451. ></LB.LIST.BULLET
  79452. ></LABEL
  79453. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79454. >How to configure the NewEra environment:</L.LABEL
  79455. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  79456. ></RBW-AUTOGEN
  79457. ></RBW-MARKER
  79458. ><RBW-PARABODY>To configure the NewEra environment:</RBW-PARABODY
  79459. ></P.PROCEDURE
  79460. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  79461. ></RBW-AUTOGEN
  79462. ></RBW-MARKER
  79463. ><RBW-PARABODY>Move to Implementation Phase level, or System level in the Implementation phase.</RBW-PARABODY
  79464. ></LN.LIST.NUM
  79465. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  79466. ></RBW-AUTOGEN
  79467. ></RBW-MARKER
  79468. ><RBW-PARABODY>Select Utilities | Configure NewEra Environment.</RBW-PARABODY
  79469. ></LN.LIST.NUM
  79470. ><LR.LIST.RESULT>An Execution window similar to the following appears.</LR.LIST.RESULT
  79471. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00706.unk" origfile="pics/cnfneenv.gif" origtype="X" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79472. ></FAR.FIGURE.ANCHOR.RIGHT
  79473. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  79474. ></RBW-AUTOGEN
  79475. ></RBW-MARKER
  79476. ><RBW-PARABODY>Select the desired option.</RBW-PARABODY
  79477. ></LN.LIST.NUM
  79478. ><LR.LIST.RESULT>After you press the return key, the next question appears.</LR.LIST.RESULT
  79479. ></LABEL
  79480. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79481. >How to compile the required class libraries</L.LABEL
  79482. ><B.BODY>After ObjectTeam has copied all the required files, you must compile the libraries. (These libraries are used to compile the source files generated by ObjectTeam.)</B.BODY
  79483. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  79484. ></RBW-AUTOGEN
  79485. ></RBW-MARKER
  79486. ><RBW-PARABODY>To compile the class libraries:</RBW-PARABODY
  79487. ></P.PROCEDURE
  79488. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  79489. ></RBW-AUTOGEN
  79490. ></RBW-MARKER
  79491. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  79492. ></LN.LIST.NUM
  79493. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  79494. ></RBW-AUTOGEN
  79495. ></RBW-MARKER
  79496. ><RBW-PARABODY>Select Utilities | Execution Window.</RBW-PARABODY
  79497. ></LN.LIST.NUM
  79498. ><LR.LIST.RESULT>On Windows&truehy;based platforms, an MS&truehy;DOS window appears. </LR.LIST.RESULT
  79499. ><LR.LIST.RESULT>On Unix&truehy;based platforms, start a new C&truehy;shell by entering the following command in the dialog box that appears: </LR.LIST.RESULT
  79500. ><EM.EXAMPLE.MONO>csh &truehy;f</EM.EXAMPLE.MONO
  79501. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  79502. ></RBW-AUTOGEN
  79503. ></RBW-MARKER
  79504. ><RBW-PARABODY>Move to the user_environment<CX5FX5FFILE.NAME>/src</CX5FX5FFILE.NAME
  79505. > directory, which contains the source files for the class library.</RBW-PARABODY
  79506. ></LN.LIST.NUM
  79507. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  79508. ></RBW-AUTOGEN
  79509. ></RBW-MARKER
  79510. ><RBW-PARABODY>Make sure the environment variables necessary to run the NewEra Application Builder are set properly.</RBW-PARABODY
  79511. ></LN.LIST.NUM
  79512. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  79513. ></RBW-AUTOGEN
  79514. ></RBW-MARKER
  79515. ><RBW-PARABODY>Start the NewEra <RBW-IDXTERM TERM1="compiling" TERM2="lw4omtne class library"></RBW-IDXTERM
  79516. ><RBW-IDXTERM TERM1="Application Builder"></RBW-IDXTERM
  79517. ><RBW-IDXTERM TERM1="lw4omtne"></RBW-IDXTERM
  79518. >Application Builder and compile the class library.</RBW-PARABODY
  79519. ></LN.LIST.NUM
  79520. ><LR.LIST.RESULT>The selected class library is now compiled if your environment is set up properly. The compiled class library is stored in the current directory.</LR.LIST.RESULT
  79521. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  79522. ></RBW-AUTOGEN
  79523. ></RBW-MARKER
  79524. ><RBW-PARABODY>Copy the compiled class library to the directory user_environment<CX5FX5FFILE.NAME>/lib</CX5FX5FFILE.NAME
  79525. >.</RBW-PARABODY
  79526. ></LN.LIST.NUM
  79527. ></LABEL
  79528. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79529. >Adding new options</L.LABEL
  79530. ><B.BODY>ObjectTeam uses the Tcl script <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="config_ne.tcl"></RBW-IDXTERM
  79531. >config_ne.tcl</CX5FX5FFILE.NAME
  79532. > to configure the NewEra environment. You can add new configuration options by creating a customization file with the name <CX5FX5FFILE.NAME>config_ne.tcl</CX5FX5FFILE.NAME
  79533. >, as described in <RBW-XREF REFID="23768" TYPE="XREF-TEXTCOPY">Adapting NewEra Configuration Files</RBW-XREF
  79534. >.</B.BODY
  79535. ></LABEL
  79536. ></SECTION
  79537. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="19708"></RBW-ANCHOR
  79538. >Editing (Generated) Source Files</S.SECTION.HEAD
  79539. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79540. >Introduction</L.LABEL
  79541. ><B.BODY>When code generation is successful, you can relate each generated source file to a specific class in a CD of the Object Design phase.</B.BODY
  79542. ></LABEL
  79543. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79544. >4gh header files</L.LABEL
  79545. ><B.BODY>The generated header files contain all the necessary include statements and do not need editing. Therefore, when you regenerate a modified model, the 4gh files are overwritten.</B.BODY
  79546. ></LABEL
  79547. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79548. >4gl source files for non&truehy;persistent classes</L.LABEL
  79549. ><B.BODY>The generated 4gl files serve as framework files. They contain a signature for each function (generated from the methods of the classes in the CDs), but the function bodies are empty. You need to fill in the following:</B.BODY
  79550. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79551. ></RBW-AUTOGEN
  79552. ></RBW-MARKER
  79553. ><RBW-PARABODY><RBW-IDXTERM TERM1="NewEra" TERM2="function"></RBW-IDXTERM
  79554. ><RBW-IDXTERM TERM1="NewEra" TERM2="code from method"></RBW-IDXTERM
  79555. ><RBW-IDXTERM TERM1="function" TERM2="body"></RBW-IDXTERM
  79556. >The bodies of the functions that are defined in the classes. No function is generated for the method, instead, the following line is generated:</RBW-PARABODY
  79557. ></LB.LIST.BULLET
  79558. ><EM.EXAMPLE.MONO>&truehy;&truehy; Implement this function!</EM.EXAMPLE.MONO
  79559. ><EM.EXAMPLE.MONO>    &truehy;&truehy;</EM.EXAMPLE.MONO
  79560. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  79561. ></RBW-AUTOGEN
  79562. >You can fill in the function bodies manually or generate them automatically. To generate them automatically, in the CD, specify the method body as the value for the class property Tcl Method Implementation, as described in <RBW-XREF REFID="18195" TYPE="XREF-TEXTCOPY">Tcl Method Implementation Procedure</RBW-XREF
  79563. >.</N2.NOTE.2
  79564. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79565. ></RBW-AUTOGEN
  79566. ></RBW-MARKER
  79567. ><RBW-PARABODY>The sections that are marked by comments similar to the following:</RBW-PARABODY
  79568. ></LB.LIST.BULLET
  79569. ><EM.EXAMPLE.MONO>//Start ... user ... section</EM.EXAMPLE.MONO
  79570. ><EM.EXAMPLE.MONO>//End ... user ... section</EM.EXAMPLE.MONO
  79571. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79572. >Sample 4gl source file</SL.SUBLABEL
  79573. ><BI.BODY.INTRO>The following is a sample 4gl file. User edits are highlighted.</BI.BODY.INTRO
  79574. ><EM.EXAMPLE.MONO>&truehy;&truehy; Start user added include file section</EM.EXAMPLE.MONO
  79575. ><EM.EXAMPLE.MONO><CX5FX5FFILE.NAME>INCLUDE “OwnDefs.4gh”</CX5FX5FFILE.NAME
  79576. > </EM.EXAMPLE.MONO
  79577. ><EM.EXAMPLE.MONO>&truehy;&truehy; End user added include file section</EM.EXAMPLE.MONO
  79578. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79579. ><EM.EXAMPLE.MONO>INCLUDE “Account.4gh”</EM.EXAMPLE.MONO
  79580. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79581. ><EM.EXAMPLE.MONO>FUNCTION Account::Account()</EM.EXAMPLE.MONO
  79582. ><EM.EXAMPLE.MONO>   &truehy;&truehy; Start constructor user section</EM.EXAMPLE.MONO
  79583. ><EM.EXAMPLE.MONO>   &truehy;&truehy; End constructor user section</EM.EXAMPLE.MONO
  79584. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  79585. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79586. ><EM.EXAMPLE.MONO>FUNCTION Account::!destroy()</EM.EXAMPLE.MONO
  79587. ><EM.EXAMPLE.MONO>   &truehy;&truehy; Start destructor user section</EM.EXAMPLE.MONO
  79588. ><EM.EXAMPLE.MONO>   &truehy;&truehy; End destructor user section</EM.EXAMPLE.MONO
  79589. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  79590. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79591. ><EM.EXAMPLE.MONO>FUNCTION Account::PrintAmount() RETURNING VOID</EM.EXAMPLE.MONO
  79592. ><EM.EXAMPLE.MONO><CX5FX5FFILE.NAME>   DISPLAY “The amount is”, amount</CX5FX5FFILE.NAME
  79593. > </EM.EXAMPLE.MONO
  79594. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  79595. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79596. ><EM.EXAMPLE.MONO>&truehy;&truehy; Start user added source code section</EM.EXAMPLE.MONO
  79597. ><EM.EXAMPLE.MONO>&truehy;&truehy; End user added source code section</EM.EXAMPLE.MONO
  79598. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  79599. ><EM.EXAMPLE.MONO>&truehy;&truehy; Do not delete this line &truehy;&truehy; regeneration end marker</EM.EXAMPLE.MONO
  79600. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  79601. ></LABEL
  79602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79603. >4gl source file for persistent classes</L.LABEL
  79604. ><B.BODY>In case of persistent classes, the 4gl source file contains functions that access and manipulate database tables. These functions contain all the necessary statements and do not need editing. When you regenerate a modified model, these source files are overwritten.</B.BODY
  79605. ></LABEL
  79606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79607. >Wif template file</L.LABEL
  79608. ><B.BODY>Wif template files contain Window Intermediate File Language code. You use the NewEra Window Painter to complete and beautify the Graphical User Interface of your application. </B.BODY
  79609. ><B.BODY>SuperField objects are generated for every attribute defined in a GUI class. You have to supply the function bodies for user&truehy;defined SuperTable Buttons yourself. You can do that using the NewEra Window Painter.</B.BODY
  79610. ><B.BODY>Whenever you save a wif file in the Window Painter, 4gh and 4gl files are generated by NewEra. These files are used by the Application Builder to build an application. Wif files are not used; they are just intermediate files.</B.BODY
  79611. ></LABEL
  79612. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79613. ><RBW-IDXTERM TERM1="source files" TERM2="editing generated -"></RBW-IDXTERM
  79614. ><RBW-IDXTERM TERM1="generated source file" TERM2="editing"></RBW-IDXTERM
  79615. >How to edit source files</L.LABEL
  79616. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  79617. ></RBW-AUTOGEN
  79618. ></RBW-MARKER
  79619. ><RBW-PARABODY>To edit source files:</RBW-PARABODY
  79620. ></P.PROCEDURE
  79621. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  79622. ></RBW-AUTOGEN
  79623. ></RBW-MARKER
  79624. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  79625. ></LN.LIST.NUM
  79626. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  79627. ></RBW-AUTOGEN
  79628. ></RBW-MARKER
  79629. ><RBW-PARABODY>In the Information area, double&truehy;click on the source file that you want to edit, or select the source file and then select File | Edit.</RBW-PARABODY
  79630. ></LN.LIST.NUM
  79631. ><LR.LIST.RESULT>The default Text Editor starts up with the corresponding file in the user environment.</LR.LIST.RESULT
  79632. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  79633. ></RBW-AUTOGEN
  79634. >You should edit generated wif template files with the NewEra Window Painter.</N.NOTE
  79635. ></LABEL
  79636. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79637. >Update diagrams</L.LABEL
  79638. ><B.BODY>Depending on the type of additions you have made to the source files, you may need to edit the CDs to reflect your changes. If you do so, be sure to use Check | Global Model to check the updated diagrams before regenerating the source files.</B.BODY
  79639. ></LABEL
  79640. ></SECTION
  79641. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37228"></RBW-ANCHOR
  79642. >Defining a Target Database</S.SECTION.HEAD
  79643. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79644. >Introduction</L.LABEL
  79645. ><B.BODY>If your CDs contain persistent classes, the persistent classes must be defined as database tables in a Relational Database Management System (RDBMS). That database must then be selected when you execute the generated SQL scripts (see <RBW-XREF REFID="37874" TYPE="XREF-TEXTCOPY">SQL Generation</RBW-XREF
  79646. >).</B.BODY
  79647. ></LABEL
  79648. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79649. >Defining a target database</L.LABEL
  79650. ><B.BODY>The steps for defining a target database depend on whether you already have the database defined:</B.BODY
  79651. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79652. ></RBW-AUTOGEN
  79653. ></RBW-MARKER
  79654. ><RBW-PARABODY>If you do not have a database defined, you must create the database, select it, then execute the generated SQL scripts to create the database tables. (The SQL scripts are generated when you generate the SQL Model in the Implementation phase.)</RBW-PARABODY
  79655. ></LB.LIST.BULLET
  79656. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79657. ></RBW-AUTOGEN
  79658. ></RBW-MARKER
  79659. ><RBW-PARABODY>If you have a database, but it does not contain the required database tables, you must select the database and execute the generated SQL scripts to create the database tables.</RBW-PARABODY
  79660. ></LB.LIST.BULLET
  79661. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79662. ></RBW-AUTOGEN
  79663. ></RBW-MARKER
  79664. ><RBW-PARABODY>If you already have a database that contains the required database tables, just select the database.</RBW-PARABODY
  79665. ></LB.LIST.BULLET
  79666. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  79667. ></RBW-AUTOGEN
  79668. >Unlike on WindowsNT, you cannot create a new database on Windows95 using Database | Create Database... on the System level of the Implementation phase.</W.WARNING
  79669. ></LABEL
  79670. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79671. >Generated SQL scripts</L.LABEL
  79672. ><B.BODY>When you generate the SQL Model in the Implementation phase, a number of SQL scripts are generated (<RBW-XREF REFID="32911" TYPE="XREF-TEXTCOPY">Generating SQL Code</RBW-XREF
  79673. > provides a list of the scripts). The SQL script to build the target database is <CX5FX5FPROCEDURE.NAME>create</CX5FX5FPROCEDURE.NAME
  79674. >. This script activates other SQL scripts containing statements to create tables, procedures and rules.</B.BODY
  79675. ></LABEL
  79676. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79677. >Database tables that are created</L.LABEL
  79678. ><B.BODY>When you execute the SQL script <CX5FX5FPROCEDURE.NAME>create</CX5FX5FPROCEDURE.NAME
  79679. >, database tables are created for the following persistent objects:</B.BODY
  79680. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79681. ></RBW-AUTOGEN
  79682. ></RBW-MARKER
  79683. ><RBW-PARABODY>Class</RBW-PARABODY
  79684. ></LB.LIST.BULLET
  79685. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79686. ></RBW-AUTOGEN
  79687. ></RBW-MARKER
  79688. ><RBW-PARABODY>Association as class</RBW-PARABODY
  79689. ></LB.LIST.BULLET
  79690. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79691. ></RBW-AUTOGEN
  79692. ></RBW-MARKER
  79693. ><RBW-PARABODY>Aggregation as class</RBW-PARABODY
  79694. ></LB.LIST.BULLET
  79695. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79696. ></RBW-AUTOGEN
  79697. ></RBW-MARKER
  79698. ><RBW-PARABODY>Link attribute box</RBW-PARABODY
  79699. ></LB.LIST.BULLET
  79700. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79701. ></RBW-AUTOGEN
  79702. ></RBW-MARKER
  79703. ><RBW-PARABODY>Qualified association</RBW-PARABODY
  79704. ></LB.LIST.BULLET
  79705. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79706. ></RBW-AUTOGEN
  79707. ></RBW-MARKER
  79708. ><RBW-PARABODY>Qualified aggregation</RBW-PARABODY
  79709. ></LB.LIST.BULLET
  79710. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79711. ></RBW-AUTOGEN
  79712. ></RBW-MARKER
  79713. ><RBW-PARABODY>Many&truehy;to&truehy;many association (that is not an association as class)</RBW-PARABODY
  79714. ></LB.LIST.BULLET
  79715. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79716. ></RBW-AUTOGEN
  79717. ></RBW-MARKER
  79718. ><RBW-PARABODY>Many&truehy;to&truehy;many aggregation (that is not an aggregation as class)</RBW-PARABODY
  79719. ></LB.LIST.BULLET
  79720. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79721. >For more information</SL.SUBLABEL
  79722. ><B.BODY>See <RBW-XREF REFID="23603" TYPE="XREF-TEXTCOPY">Mapping Modeling Data to NewEra Persistent Code</RBW-XREF
  79723. > for more detail.</B.BODY
  79724. ></LABEL
  79725. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79726. >Available operations on a target database</L.LABEL
  79727. ><B.BODY>The following entries are available under the Database menu:</B.BODY
  79728. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79729. ></RBW-AUTOGEN
  79730. ></RBW-MARKER
  79731. ><RBW-PARABODY>Create Database</RBW-PARABODY
  79732. ></LB.LIST.BULLET
  79733. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79734. ></RBW-AUTOGEN
  79735. ></RBW-MARKER
  79736. ><RBW-PARABODY>Deselect Database</RBW-PARABODY
  79737. ></LB.LIST.BULLET
  79738. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79739. ></RBW-AUTOGEN
  79740. ></RBW-MARKER
  79741. ><RBW-PARABODY>Destroy Database</RBW-PARABODY
  79742. ></LB.LIST.BULLET
  79743. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79744. ></RBW-AUTOGEN
  79745. ></RBW-MARKER
  79746. ><RBW-PARABODY>Execute SQL</RBW-PARABODY
  79747. ></LB.LIST.BULLET
  79748. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79749. ></RBW-AUTOGEN
  79750. ></RBW-MARKER
  79751. ><RBW-PARABODY>Select Database</RBW-PARABODY
  79752. ></LB.LIST.BULLET
  79753. ></LABEL
  79754. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79755. >How to define a database<RBW-IDXTERM TERM1="database" TERM2="building"></RBW-IDXTERM
  79756. ><RBW-IDXTERM TERM1="database" TERM2="building"></RBW-IDXTERM
  79757. ></L.LABEL
  79758. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  79759. ></RBW-AUTOGEN
  79760. ></RBW-MARKER
  79761. ><RBW-PARABODY>To define a target database:</RBW-PARABODY
  79762. ></P.PROCEDURE
  79763. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  79764. ></RBW-AUTOGEN
  79765. ></RBW-MARKER
  79766. ><RBW-PARABODY>Move to System level in the Implementation phase.</RBW-PARABODY
  79767. ></LN.LIST.NUM
  79768. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  79769. ></RBW-AUTOGEN
  79770. ></RBW-MARKER
  79771. ><RBW-PARABODY>To create the database, select Database | Create Database.</RBW-PARABODY
  79772. ></LN.LIST.NUM
  79773. ><LR.LIST.RESULT>The ObjectTeam shell interprets the Tcl script <CX5FX5FFILE.NAME>tdbop.tcl</CX5FX5FFILE.NAME
  79774. >, which creates the new database on the specified server if the RDBMS is configured properly. When you create a database, some initial actions are executed, such as the creation of empty system tables for the database and the registration of the database in the Relational Database Management System. </LR.LIST.RESULT
  79775. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  79776. ></RBW-AUTOGEN
  79777. ></RBW-MARKER
  79778. ><RBW-PARABODY>To select the database, select Database | Select Database.</RBW-PARABODY
  79779. ></LN.LIST.NUM
  79780. ><LR.LIST.RESULT>The Select Database dialog box appears:</LR.LIST.RESULT
  79781. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00707.unk" origfile="pics/seldtb.gif" origtype="X" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79782. ></FA2.FIGURE.ANCHOR.2
  79783. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  79784. ></RBW-AUTOGEN
  79785. ></RBW-MARKER
  79786. ><RBW-PARABODY>To create the database tables:</RBW-PARABODY
  79787. ></LN.LIST.NUM
  79788. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  79789. ></RBW-AUTOGEN
  79790. ></RBW-MARKER
  79791. ><RBW-PARABODY>In the Information area, select the appropriate SQL create script.</RBW-PARABODY
  79792. ></LN2.LIST.NUM.2
  79793. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  79794. ></RBW-AUTOGEN
  79795. ></RBW-MARKER
  79796. ><RBW-PARABODY>Select Database | Execute SQL.</RBW-PARABODY
  79797. ></LN2.LIST.NUM.2
  79798. ><LR.LIST.RESULT>The ObjectTeam Shell executes the SQL statements of the selected SQL script.</LR.LIST.RESULT
  79799. ></LABEL
  79800. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79801. >Deleting a target database</L.LABEL
  79802. ><B.BODY>You can also <CX5FX5FTITLE>delete</CX5FX5FTITLE
  79803. > databases. To delete a database, select Database | Destroy Database.</B.BODY
  79804. ></LABEL
  79805. ></SECTION
  79806. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="30084"></RBW-ANCHOR
  79807. >Building the Executable or Library</S.SECTION.HEAD
  79808. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79809. >Prerequisites</L.LABEL
  79810. ><B.BODY>To successfully compile and run an executable or library, you must have the following:</B.BODY
  79811. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79812. ></RBW-AUTOGEN
  79813. ></RBW-MARKER
  79814. ><RBW-PARABODY>The required source code files (language&truehy;specific source files and header files); see <RBW-XREF REFID="27397" TYPE="XREF-TEXTCOPY">Generating NewEra Code</RBW-XREF
  79815. >.</RBW-PARABODY
  79816. ></LB.LIST.BULLET
  79817. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79818. ></RBW-AUTOGEN
  79819. ></RBW-MARKER
  79820. ><RBW-PARABODY>All procedural code in the source files must be completely defined for the implementation of methods resulting from messages sent to a class (such as those that change attribute values, perform computations, or send messages to other classes); see <RBW-XREF REFID="19708" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files</RBW-XREF
  79821. >.</RBW-PARABODY
  79822. ></LB.LIST.BULLET
  79823. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79824. ></RBW-AUTOGEN
  79825. ></RBW-MARKER
  79826. ><RBW-PARABODY>The environment properly configured for your chosen language; see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your NewEra Environment</RBW-XREF
  79827. >.</RBW-PARABODY
  79828. ></LB.LIST.BULLET
  79829. ></LABEL
  79830. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79831. ><RBW-IDXTERM TERM1="compiling" TERM2="source code"></RBW-IDXTERM
  79832. ><RBW-IDXTERM TERM1="Application Builder"></RBW-IDXTERM
  79833. >How to compile a library or an executable</L.LABEL
  79834. ><B.BODY>For building an application you have to use the tools offered by NewEra, such as the Application Builder. The input for the Application Builder are 4gl and 4gh files. </B.BODY
  79835. ><B.BODY>For details on the Application Builder, refer to your NewEra documentation.</B.BODY
  79836. ></LABEL
  79837. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79838. >Conduct a final check for errors</L.LABEL
  79839. ><B.BODY>As always, before you distribute anything, conduct a quality check of your work. If necessary, fix the source files, fix the ObjectTeam model, regenerate the code, and retest the executable.</B.BODY
  79840. ></LABEL
  79841. ></SECTION
  79842. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="33638"></RBW-ANCHOR
  79843. >Regenerating Code<RBW-IDXTERM TERM1="code regeneration" TERM2="edited source file"></RBW-IDXTERM
  79844. ></S.SECTION.HEAD
  79845. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79846. >Design changes and code changes</L.LABEL
  79847. ><B.BODY>ObjectTeam supports incremental development. You can generate code from your models, edit that code, and regenerate the code without losing your changes. You can work with models during design and with code during implementation, shifting your focus between the two as necessary.</B.BODY
  79848. ><B.BODY>It is, however, important that you make changes where appropriate.</B.BODY
  79849. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79850. ></RBW-AUTOGEN
  79851. ></RBW-MARKER
  79852. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the code</CX5FX5FBULLET.EMPHASIS
  79853. > when you are adding code that is not generated by ObjectTeam (for example, adding method bodies).</RBW-PARABODY
  79854. ></LB.LIST.BULLET
  79855. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79856. ></RBW-AUTOGEN
  79857. ></RBW-MARKER
  79858. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the model</CX5FX5FBULLET.EMPHASIS
  79859. > when you are changing the structure of the model (for example, if you are changing the class hierarchy or class associations), or when you are making global changes to the code (for example, if you are changing the name of a class, attribute, or operation).</RBW-PARABODY
  79860. ></LB.LIST.BULLET
  79861. ></LABEL
  79862. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79863. >Editing generated 4gh files</L.LABEL
  79864. ><B.BODY>The generated header files are complete and do not need editing. Therefore, when you regenerate a 4gh file, the new 4gh file overwrites the existing one. Any changes you made to the original 4gh file are lost.</B.BODY
  79865. ></LABEL
  79866. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79867. >Editing generated 4gl files</L.LABEL
  79868. ><B.BODY>The generated 4gl files are framework files that need some additions before they can be turned into an executable or library. Comments in the file indicate where you should add code, as described in <RBW-XREF REFID="19708" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files</RBW-XREF
  79869. >. When you regenerate a 4gl file, the code generator transfers the user&truehy;edited sections from the old file to the newly generated file. </B.BODY
  79870. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  79871. ></RBW-AUTOGEN
  79872. >The code generator preserves only the comment&truehy;delimited areas of the generated 4gl file. Changes you make to other areas of the generated 4gl file are lost when you regenerate the file.</N.NOTE
  79873. ></LABEL
  79874. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79875. >Editing the ObjectTeam model</L.LABEL
  79876. ><B.BODY>If you modify the ObjectTeam model, you typically regenerate the 4gh and 4gl source files. As described above, regenerating the 4gh file overwrites the original file and regenerating the 4gl file preserves your changes to the original file. Changes to generated wif files are also preserved.</B.BODY
  79877. ><B.BODY>If, in the ObjectTeam model, you rename, delete, or change the signature of an operation, the matching function in the generated 4gl file is no longer correct. ObjectTeam preserves the original function, however, you must edit the generated file to correct the code. </B.BODY
  79878. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79879. ></RBW-AUTOGEN
  79880. ></RBW-MARKER
  79881. ><RBW-PARABODY>When you rename or delete an operation, the function in the generated 4gl file is marked as <CX5FX5FBULLET.EMPHASIS>OBSOLETE_CODE</CX5FX5FBULLET.EMPHASIS
  79882. >. In this way, the code generator preserves the function in case you want to rename it or move it to another class.</RBW-PARABODY
  79883. ></LB.LIST.BULLET
  79884. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00708.tif" origseq="34" origtype="I" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79885. ></FA.FIGURE.ANCHOR
  79886. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  79887. ></RBW-AUTOGEN
  79888. ></RBW-MARKER
  79889. ><RBW-PARABODY>When you change the signature of an operation, the function in the generated 4gl file is marked as <CX5FX5FBULLET.EMPHASIS>OLD_CODE</CX5FX5FBULLET.EMPHASIS
  79890. >. This allows you to easily find and edit the affected functions.</RBW-PARABODY
  79891. ></LB.LIST.BULLET
  79892. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00709.tif" origseq="37" origtype="I" origdoc="../../sources/ne/necodg.fm5.mif"></RBW-GRAPHIC
  79893. ></FA.FIGURE.ANCHOR
  79894. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  79895. ></RBW-AUTOGEN
  79896. >You must remove OLD_CODE and OBSOLETE_CODE sections before you can regenerate the 4gl file.</W.WARNING
  79897. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79898. >Definition of function signature</SL.SUBLABEL
  79899. ><B.BODY>A function signature is the heading of the function. For example:</B.BODY
  79900. ><B.BODY>FUNCTION Account::PrintAmount() RETURNING VOID</B.BODY
  79901. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  79902. ></RBW-AUTOGEN
  79903. >The code generator does not recognize changes you may have made to the the return type.</W.WARNING
  79904. ></LABEL
  79905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79906. >How to regenerate source code files</L.LABEL
  79907. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  79908. ></RBW-AUTOGEN
  79909. ></RBW-MARKER
  79910. ><RBW-PARABODY>To regenerate one or more 4gh, 4gl or wif files:</RBW-PARABODY
  79911. ></P.PROCEDURE
  79912. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  79913. ></RBW-AUTOGEN
  79914. ></RBW-MARKER
  79915. ><RBW-PARABODY>Move to the System level of the Implementation phase.</RBW-PARABODY
  79916. ></LN.LIST.NUM
  79917. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  79918. ></RBW-AUTOGEN
  79919. ></RBW-MARKER
  79920. ><RBW-PARABODY>Select the files that you want to regenerate.</RBW-PARABODY
  79921. ></LN.LIST.NUM
  79922. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  79923. ></RBW-AUTOGEN
  79924. ></RBW-MARKER
  79925. ><RBW-PARABODY>Select Utilities | <RBW-IDXTERM TERM1="Import From Previous Phase" TERM2="Selected"></RBW-IDXTERM
  79926. >Generate NewEra | Selected.</RBW-PARABODY
  79927. ></LN.LIST.NUM
  79928. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then imports the files.</LR.LIST.RESULT
  79929. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79930. >For more information</SL.SUBLABEL
  79931. ><B.BODY>See <RBW-XREF REFID="35551" TYPE="XREF-TEXTCOPY">Generating NewEra Source Files</RBW-XREF
  79932. > for more information about the Utilities | Generate NewEra menu item.</B.BODY
  79933. ><RBWAUTO-0001></RBWAUTO-0001
  79934. ><!--
  79935.  
  79936.  
  79937.  
  79938.  
  79939.  
  79940. CONVERTING SOURCE FILE ../../sources/ne/nenpers.fm5.mif
  79941.  
  79942.  
  79943. --><B.BODY></B.BODY
  79944. ><B.BODY></B.BODY
  79945. ><B.BODY></B.BODY
  79946. ><B.BODY></B.BODY
  79947. ><B.BODY></B.BODY
  79948. ></LABEL
  79949. ></SECTION
  79950. ></CHAPTER
  79951. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  79952. ></RBW-AUTOGEN
  79953. ><RBW-ANCHOR ID="27879"></RBW-ANCHOR
  79954. >Mapping Modeling Data to NewEra Non&truehy;Persistent<RBW-IDXTERM TERM1="code generation" TERM2="non-persistent"></RBW-IDXTERM
  79955. ><RBW-IDXTERM TERM1="non-persistent code generation" TERM2="NewEra"></RBW-IDXTERM
  79956. ><RBW-IDXTERM TERM1="code generation" TERM2="NewEra"></RBW-IDXTERM
  79957. ><RBW-IDXTERM TERM1="NewEra" TERM2="code generation"></RBW-IDXTERM
  79958. > Code<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  79959. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  79960. ></RBW-SYSOBJ
  79961. ></C.CHAPTER.HEAD
  79962. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79963. ><RBW-IDXTERM TERM1="4gh file" TERM2="generating (non-persistent)"></RBW-IDXTERM
  79964. ><RBW-IDXTERM TERM1="generating" TERM2="4gh file (non-persistent)"></RBW-IDXTERM
  79965. ><RBW-IDXTERM TERM1="4gl file" TERM2="generating (non-persistent)"></RBW-IDXTERM
  79966. ><RBW-IDXTERM TERM1="generating" TERM2="4gl file (non-persistent)"></RBW-IDXTERM
  79967. >Introduction</L.LABEL
  79968. ><B.BODY><RBW-IDXTERM TERM1="4gl file" TERM2="generating (non-persistent)"></RBW-IDXTERM
  79969. ><RBW-IDXTERM TERM1="4gh file" TERM2="generating (non-persistent)"></RBW-IDXTERM
  79970. >This chapter explains how particular classes and class specifications result in particular parts of code. </B.BODY
  79971. ><B.BODY>The first section of the chapter explains some principles of the code generation process. The next sections describe the relationship between class specifications and the generated code. The final section describes generating code for special classes, which follows a different pattern.</B.BODY
  79972. ></LABEL
  79973. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  79974. >In this chapter</L.LABEL
  79975. ><B.BODY>This chapter contains the following sections:</B.BODY
  79976. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  79977. ></ENTRY
  79978. ></RBW-ROW
  79979. ></THEAD
  79980. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23588" TYPE="XREF-TEXTCOPY">Classes&rbwtab;3–2</RBW-XREF
  79981. ></SB.SECTION.BLOCK.TABLE
  79982. ></ENTRY
  79983. ></RBW-ROW
  79984. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21485" TYPE="XREF-TEXTCOPY">Data Attributes&rbwtab;3–9</RBW-XREF
  79985. ></SB.SECTION.BLOCK.TABLE
  79986. ></ENTRY
  79987. ></RBW-ROW
  79988. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18392" TYPE="XREF-TEXTCOPY">Operations&rbwtab;3–18</RBW-XREF
  79989. ></SB.SECTION.BLOCK.TABLE
  79990. ></ENTRY
  79991. ></RBW-ROW
  79992. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24711" TYPE="XREF-TEXTCOPY">Constructor&rbwtab;3–27</RBW-XREF
  79993. ></SB.SECTION.BLOCK.TABLE
  79994. ></ENTRY
  79995. ></RBW-ROW
  79996. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="26001" TYPE="XREF-TEXTCOPY">Destructor&rbwtab;3–33</RBW-XREF
  79997. ></SB.SECTION.BLOCK.TABLE
  79998. ></ENTRY
  79999. ></RBW-ROW
  80000. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38687" TYPE="XREF-TEXTCOPY">Generalizations (Inheritance)&rbwtab;3–34</RBW-XREF
  80001. ></SB.SECTION.BLOCK.TABLE
  80002. ></ENTRY
  80003. ></RBW-ROW
  80004. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34119" TYPE="XREF-TEXTCOPY">Associations&rbwtab;3–36</RBW-XREF
  80005. ></SB.SECTION.BLOCK.TABLE
  80006. ></ENTRY
  80007. ></RBW-ROW
  80008. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33064" TYPE="XREF-TEXTCOPY">Qualified Associations&rbwtab;3–47</RBW-XREF
  80009. ></SB.SECTION.BLOCK.TABLE
  80010. ></ENTRY
  80011. ></RBW-ROW
  80012. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33738" TYPE="XREF-TEXTCOPY">Special Classes&rbwtab;3–52</RBW-XREF
  80013. ></SB.SECTION.BLOCK.TABLE
  80014. ></ENTRY
  80015. ></RBW-ROW
  80016. ></TBODY
  80017. ></TGROUP
  80018. ></RBW-TABLE
  80019. ></LABEL
  80020. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="23588"></RBW-ANCHOR
  80021. >Classes</S.SECTION.HEAD
  80022. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80023. >What is non&truehy;persistent code generation</L.LABEL
  80024. ><B.BODY>Code generation in ObjectTeam is the process of translating diagrams into program code. The ObjectTeam Shell (otsh) translates the CDs and their related CDMs into source and header files. Code generation involves the following steps:</B.BODY
  80025. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80026. ></RBW-AUTOGEN
  80027. ></RBW-MARKER
  80028. ><RBW-PARABODY>The Tcl interpreter otsh (ObjectTeam Shell) translates the CDs and the CDMs that are stored in the repository into a Code Generation model.</RBW-PARABODY
  80029. ></LB.LIST.BULLET
  80030. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80031. ></RBW-AUTOGEN
  80032. ></RBW-MARKER
  80033. ><RBW-PARABODY>This Code Generation model is translated into source code.</RBW-PARABODY
  80034. ></LB.LIST.BULLET
  80035. ><B.BODY>During design, you define a class more precisely by specifying its features:</B.BODY
  80036. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00710.unk" origfile="pics/authbook.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80037. ></FA.FIGURE.ANCHOR
  80038. ></LABEL
  80039. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80040. >Example CD</L.LABEL
  80041. ><B.BODY>Generating code for a (non&truehy;persistent) class symbol from a CD usually results in one 4gh file and one 4gl file.</B.BODY
  80042. ><B.BODY>The CD depicted below is very simple; it consists of only one class for which one attribute and one method is specified:</B.BODY
  80043. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00711.unk" origfile="pics/author.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80044. ></FA.FIGURE.ANCHOR
  80045. ></LABEL
  80046. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80047. >Example 4gl</L.LABEL
  80048. ><B.BODY>The 4gl file that is generated from this CD contains the following code:</B.BODY
  80049. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Start user added include file section</EWM.EXAMPLEW.MONO
  80050. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; End user added include file section</EWM.EXAMPLEW.MONO
  80051. ><EWM.EXAMPLEW.MONO> </EWM.EXAMPLEW.MONO
  80052. ><EWM.EXAMPLEW.MONO>INCLUDE "Author.4gh"</EWM.EXAMPLEW.MONO
  80053. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80054. ><EWM.EXAMPLEW.MONO>FUNCTION Author::Author(i_name CHAR(*))</EWM.EXAMPLEW.MONO
  80055. ><EWM.EXAMPLEW.MONO>      LET name = i_name</EWM.EXAMPLEW.MONO
  80056. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Start constructor user section</EWM.EXAMPLEW.MONO
  80057. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; End constructor user section</EWM.EXAMPLEW.MONO
  80058. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  80059. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80060. ><EWM.EXAMPLEW.MONO>FUNCTION Author::!destroy()</EWM.EXAMPLEW.MONO
  80061. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Start destructor user section</EWM.EXAMPLEW.MONO
  80062. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; End destructor user section</EWM.EXAMPLEW.MONO
  80063. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  80064. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80065. ><EWM.EXAMPLEW.MONO>FUNCTION Author::makeNewName() RETURNING CHAR(*)</EWM.EXAMPLEW.MONO
  80066. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Implement this function!</EWM.EXAMPLEW.MONO
  80067. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy;</EWM.EXAMPLEW.MONO
  80068. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  80069. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80070. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Start user added source code section</EWM.EXAMPLEW.MONO
  80071. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; End user added source code section</EWM.EXAMPLEW.MONO
  80072. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Do not delete this line &truehy;&truehy; regeneration end marker</EWM.EXAMPLEW.MONO
  80073. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80074. ><EWM.EXAMPLEW.MONO>FUNCTION Author::getName() RETURNING CHAR(*)</EWM.EXAMPLEW.MONO
  80075. ><EWM.EXAMPLEW.MONO>      RETURN name</EWM.EXAMPLEW.MONO
  80076. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  80077. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80078. ><EWM.EXAMPLEW.MONO>FUNCTION Author::setName(newName CHAR(*)) RETURNING VOID</EWM.EXAMPLEW.MONO
  80079. ><EWM.EXAMPLEW.MONO>       LET name = newName</EWM.EXAMPLEW.MONO
  80080. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  80081. ></LABEL
  80082. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80083. >Example 4gh</L.LABEL
  80084. ><B.BODY>The 4gh file that is generated from this CD contains the following code:</B.BODY
  80085. ><EWM.EXAMPLEW.MONO>CLASS Author</EWM.EXAMPLEW.MONO
  80086. ><EWM.EXAMPLEW.MONO>       FUNCTION Author(i_name CHAR(*))</EWM.EXAMPLEW.MONO
  80087. ><EWM.EXAMPLEW.MONO>       FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  80088. ><EWM.EXAMPLEW.MONO> </EWM.EXAMPLEW.MONO
  80089. ><EWM.EXAMPLEW.MONO>       PUBLIC FUNCTION getName() RETURNING CHAR(*)</EWM.EXAMPLEW.MONO
  80090. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setName(newName CHAR(*)) RETURNING VOID</EWM.EXAMPLEW.MONO
  80091. ><EWM.EXAMPLEW.MONO>      PUBLIC SHARED FUNCTION makeNewName() RETURNING CHAR(*)</EWM.EXAMPLEW.MONO
  80092. ><EWM.EXAMPLEW.MONO> </EWM.EXAMPLEW.MONO
  80093. ><EWM.EXAMPLEW.MONO> </EWM.EXAMPLEW.MONO
  80094. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE name CHAR(40)</EWM.EXAMPLEW.MONO
  80095. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  80096. ></LABEL
  80097. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80098. >In this section</L.LABEL
  80099. ><B.BODY>This section describes the class properties that affect non&truehy;persistent NewEra code generation.</B.BODY
  80100. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  80101. ></ENTRY
  80102. ></RBW-ROW
  80103. ></THEAD
  80104. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39909" TYPE="XREF-TEXTCOPY">Class Properties&rbwtab;3–5</RBW-XREF
  80105. ></SB.SECTION.BLOCK.TABLE
  80106. ></ENTRY
  80107. ></RBW-ROW
  80108. ></TBODY
  80109. ></TGROUP
  80110. ></RBW-TABLE
  80111. ></LABEL
  80112. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39909"></RBW-ANCHOR
  80113. >Class Properties</SS.SUBSEC.HEAD
  80114. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80115. >Introduction</L.LABEL
  80116. ><B.BODY>You can specify a number of properties for classes that influence the (non&truehy;persistent) code generation. Properties are specified in CDs.</B.BODY
  80117. ></LABEL
  80118. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80119. ><RBW-ANCHOR ID="10851"></RBW-ANCHOR
  80120. >How to specify properties</L.LABEL
  80121. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  80122. ></RBW-AUTOGEN
  80123. ></RBW-MARKER
  80124. ><RBW-PARABODY>To specify a property:</RBW-PARABODY
  80125. ></P.PROCEDURE
  80126. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  80127. ></RBW-AUTOGEN
  80128. ></RBW-MARKER
  80129. ><RBW-PARABODY>Select one (or more) classes in a CD of the ObjectDesign phase.</RBW-PARABODY
  80130. ></LN.LIST.NUM
  80131. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  80132. ></RBW-AUTOGEN
  80133. ></RBW-MARKER
  80134. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  80135. ></LN.LIST.NUM
  80136. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  80137. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  80138. ></RBW-AUTOGEN
  80139. ></RBW-MARKER
  80140. ><RBW-PARABODY>Select the object whose properties (class, data attribute, operation, data type, generalization, association) you want to edit.</RBW-PARABODY
  80141. ></LN.LIST.NUM
  80142. ><LT.LIST.TEXT>If all the following conditions are true, you must click on Define Item to proceed:</LT.LIST.TEXT
  80143. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  80144. ></RBW-MARKER
  80145. ><RBW-PARABODY>There are no attributes or properties specified for the selected class.</RBW-PARABODY
  80146. ></LB2.LIST.BULLET.2
  80147. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  80148. ></RBW-MARKER
  80149. ><RBW-PARABODY>The scope of the class is Phase and the class does not exist anywhere else in the current phase.</RBW-PARABODY
  80150. ></LB2.LIST.BULLET.2
  80151. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  80152. ></RBW-MARKER
  80153. ><RBW-PARABODY>The scope of the class is System and the class does not exist anywhere else in the current system.</RBW-PARABODY
  80154. ></LB2.LIST.BULLET.2
  80155. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  80156. ></RBW-AUTOGEN
  80157. ></RBW-MARKER
  80158. ><RBW-PARABODY>Select the Text tab to edit the property Free Text or select the Misc tab to edit all the other available properties. For some objects even more tab pages exist.</RBW-PARABODY
  80159. ></LN.LIST.NUM
  80160. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  80161. ></RBW-AUTOGEN
  80162. ></RBW-MARKER
  80163. ><RBW-PARABODY>Fill in the properties and save them by clicking OK.</RBW-PARABODY
  80164. ></LN.LIST.NUM
  80165. ></LABEL
  80166. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80167. >Which class properties can you specify</L.LABEL
  80168. ><B.BODY>The following class properties affect non&truehy;persistent code generation:</B.BODY
  80169. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80170. ></RBW-AUTOGEN
  80171. ></RBW-MARKER
  80172. ><RBW-PARABODY><RBW-XREF REFID="36796" TYPE="XREF-TEXTCOPY">Free Text</RBW-XREF
  80173. ></RBW-PARABODY
  80174. ></LB.LIST.BULLET
  80175. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80176. ></RBW-AUTOGEN
  80177. ></RBW-MARKER
  80178. ><RBW-PARABODY><RBW-XREF REFID="12066" TYPE="XREF-TEXTCOPY">Persistent</RBW-XREF
  80179. ></RBW-PARABODY
  80180. ></LB.LIST.BULLET
  80181. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80182. ></RBW-AUTOGEN
  80183. ></RBW-MARKER
  80184. ><RBW-PARABODY><RBW-XREF REFID="12344" TYPE="XREF-TEXTCOPY">External Include List</RBW-XREF
  80185. ></RBW-PARABODY
  80186. ></LB.LIST.BULLET
  80187. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80188. ></RBW-AUTOGEN
  80189. ></RBW-MARKER
  80190. ><RBW-PARABODY><RBW-XREF REFID="18549" TYPE="XREF-TEXTCOPY">External Class Source</RBW-XREF
  80191. ></RBW-PARABODY
  80192. ></LB.LIST.BULLET
  80193. ><B.BODY>These properties are briefly discussed on the following pages.</B.BODY
  80194. ></LABEL
  80195. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80196. ><RBW-IDXTERM TERM1="free text" TERM2="property"></RBW-IDXTERM
  80197. ><RBW-ANCHOR ID="36796"></RBW-ANCHOR
  80198. >Free Text</L.LABEL
  80199. ><B.BODY>What you specify as free text appears as comment lines in the generated 4gh file.</B.BODY
  80200. ></LABEL
  80201. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80202. ><RBW-IDXTERM TERM1="Persistent" TERM2="property"></RBW-IDXTERM
  80203. ><RBW-ANCHOR ID="12066"></RBW-ANCHOR
  80204. >Persistent</L.LABEL
  80205. ><B.BODY>Use this property to specify a class as being a persistent class. By default, a class is non&truehy;persistent. The generated code discussed in this chapter only applies to non&truehy;persistent classes. </B.BODY
  80206. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80207. >For more information:</SL.SUBLABEL
  80208. ><B.BODY>Persistent code is discussed in <RBW-XREF REFID="23603" TYPE="XREF-TEXTCOPY">Chapter 4, Mapping Modeling Data to NewEra Persistent Code</RBW-XREF
  80209. >.</B.BODY
  80210. ></LABEL
  80211. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80212. ><RBW-IDXTERM TERM1="external include list" TERM2="property"></RBW-IDXTERM
  80213. ><RBW-ANCHOR ID="12344"></RBW-ANCHOR
  80214. >External Include List</L.LABEL
  80215. ><B.BODY>By default, a generated 4gl file contains an INCLUDE statement for the 4gh file generated for the same class. However, if you want to include another header file in the source file, you can specify it through the property External Include List. If you want to specify more than one header file, separate the list of files with commas:</B.BODY
  80216. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00712.unk" origfile="pics/prpextls.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80217. ></FA.FIGURE.ANCHOR
  80218. ><B.BODY><CX5FX5FFILE.NAME>4gl file</CX5FX5FFILE.NAME
  80219. >:</B.BODY
  80220. ><EM.EXAMPLE.MONO>/ Start user added include file section</EM.EXAMPLE.MONO
  80221. ><EM.EXAMPLE.MONO>// End user added include file section</EM.EXAMPLE.MONO
  80222. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  80223. ><EM.EXAMPLE.MONO>#include <\include\StringHash.4gh></EM.EXAMPLE.MONO
  80224. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  80225. ><EM.EXAMPLE.MONO>#include <\include\TemplConf.4gh></EM.EXAMPLE.MONO
  80226. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80227. ></LABEL
  80228. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80229. ><RBW-IDXTERM TERM1="external class source" TERM2="property"></RBW-IDXTERM
  80230. ><RBW-ANCHOR ID="18549"></RBW-ANCHOR
  80231. >External Class Source</L.LABEL
  80232. ><B.BODY>It can be useful to model classes for which source files and header files are already available.</B.BODY
  80233. ><B.BODY>With the property External Class Source, you can specify the name of a 4gh file (and the name of a 4gl file), separated by commas. During code generation, the contents of these files are copied to the files <CX5FX5FFILE.NAME>class_name.4gh</CX5FX5FFILE.NAME
  80234. > and <CX5FX5FFILE.NAME>class_name.4gl</CX5FX5FFILE.NAME
  80235. >, respectively. If you specify only one file name, the contents of this file is copied to the file <CX5FX5FFILE.NAME>class_name.4gh</CX5FX5FFILE.NAME
  80236. >.</B.BODY
  80237. ><B.BODY>The following figure shows an example of a value for the property External Class Source:</B.BODY
  80238. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00713.unk" origfile="pics/prpextcl.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80239. ></FA.FIGURE.ANCHOR
  80240. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  80241. ></RBW-AUTOGEN
  80242. >The contents of the first file is always copied over into the file <CX5FX5FFILE.NAME>classname.4gh</CX5FX5FFILE.NAME
  80243. >, the contents of the second, if specified, into <CX5FX5FFILE.NAME>classname.4gl</CX5FX5FFILE.NAME
  80244. >. So if you specify a 4gh file after a 4gl file, the contents of the 4gh file is copied into <CX5FX5FFILE.NAME>classname.4gl</CX5FX5FFILE.NAME
  80245. > and the contents of the 4gl file into <CX5FX5FFILE.NAME>classname.4gh</CX5FX5FFILE.NAME
  80246. >.</W.WARNING
  80247. ><B.BODY>You can specify the entire path of the file name(s), but you can also specify only the file names and include the directory these files are stored in in the search path. You can customize this search path by editing the value for the global variable <CX5FX5FOBJECT.NAME>exsrc_searchpath</CX5FX5FOBJECT.NAME
  80248. > in the customization file <CX5FX5FFILE.NAME>ne_config.tcl</CX5FX5FFILE.NAME
  80249. > </B.BODY
  80250. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80251. >For more information</SL.SUBLABEL
  80252. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  80253. ><CX5FX5FTITLE></CX5FX5FTITLE
  80254. > for details on customization files.</B.BODY
  80255. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  80256. ></RBW-AUTOGEN
  80257. ></RBW-MARKER
  80258. ><RBW-PARABODY>To change the search path:</RBW-PARABODY
  80259. ></P.PROCEDURE
  80260. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  80261. ></RBW-AUTOGEN
  80262. ></RBW-MARKER
  80263. ><RBW-PARABODY>Open up the pseudo&truehy;object <CX5FX5FOBJECT.NAME><customization files></CX5FX5FOBJECT.NAME
  80264. > on the browser level of your choice.</RBW-PARABODY
  80265. ></LN.LIST.NUM
  80266. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  80267. ></RBW-AUTOGEN
  80268. ></RBW-MARKER
  80269. ><RBW-PARABODY>Select File | New | Customization File Version...</RBW-PARABODY
  80270. ></LN.LIST.NUM
  80271. ><LR.LIST.RESULT>The New Customization File Version dialog box appears.</LR.LIST.RESULT
  80272. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  80273. ></RBW-AUTOGEN
  80274. ></RBW-MARKER
  80275. ><RBW-PARABODY>Enter the following file name in the field Customization File: <CX5FX5FFILE.NAME>ne_config.tcl</CX5FX5FFILE.NAME
  80276. >.</RBW-PARABODY
  80277. ></LN.LIST.NUM
  80278. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  80279. ></RBW-AUTOGEN
  80280. ></RBW-MARKER
  80281. ><RBW-PARABODY>Click the Edit button.</RBW-PARABODY
  80282. ></LN.LIST.NUM
  80283. ><LR.LIST.RESULT>The text editor starts up.</LR.LIST.RESULT
  80284. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  80285. ></RBW-AUTOGEN
  80286. ></RBW-MARKER
  80287. ><RBW-PARABODY>Import the corporate customization file <CX5FX5FFILE.NAME>ne_config.tcl</CX5FX5FFILE.NAME
  80288. > into the current file. This file is stored in the directory <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  80289. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  80290. >\<CX5FX5FFILE.NAME>newera</CX5FX5FFILE.NAME
  80291. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  80292. >.</RBW-PARABODY
  80293. ></LN.LIST.NUM
  80294. ><LT.LIST.TEXT>Somewhere in this file the following piece of code occurs:</LT.LIST.TEXT
  80295. ><EM.EXAMPLE.MONO># directory search path for external sources</EM.EXAMPLE.MONO
  80296. ><EM.EXAMPLE.MONO># could be a list separated by a search path separator</EM.EXAMPLE.MONO
  80297. ><EM.EXAMPLE.MONO>global exsrc_searchpath</EM.EXAMPLE.MONO
  80298. ><EM.EXAMPLE.MONO># example usage:</EM.EXAMPLE.MONO
  80299. ><EM.EXAMPLE.MONO># set exsrc_searchpath "c:;c:\\temp"</EM.EXAMPLE.MONO
  80300. ><LT.LIST.TEXT>You need to edit the last line to customize the search path.</LT.LIST.TEXT
  80301. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  80302. ></RBW-AUTOGEN
  80303. ></RBW-MARKER
  80304. ><RBW-PARABODY>Edit the following line:</RBW-PARABODY
  80305. ></LN.LIST.NUM
  80306. ><EM.EXAMPLE.MONO># set exsrc_searchpath "c:;c:\\temp"</EM.EXAMPLE.MONO
  80307. ><LT.LIST.TEXT>Remove the hatch mark, used for comments in Tcl, and specify your own search path. If you are including more than one search directory, use semicolons to separate them.</LT.LIST.TEXT
  80308. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  80309. ></RBW-AUTOGEN
  80310. ></RBW-MARKER
  80311. ><RBW-PARABODY>Save the file.</RBW-PARABODY
  80312. ></LN.LIST.NUM
  80313. ><B.BODY>You can now specify any file that resides in the specified search directory ss External Class Source property, without having to specify its absolute path.</B.BODY
  80314. ></LABEL
  80315. ></SUBSECTION
  80316. ></SECTION
  80317. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="data attribute" TERM2="in non-persistent code generation"></RBW-IDXTERM
  80318. ><RBW-ANCHOR ID="21485"></RBW-ANCHOR
  80319. >Data Attributes</S.SECTION.HEAD
  80320. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80321. >Syntax</L.LABEL
  80322. ><B.BODY>Use the following syntax when you specify the <RBW-IDXTERM TERM1="data attribute" TERM2="syntax"></RBW-IDXTERM
  80323. >data attributes of a class:</B.BODY
  80324. ><RBWAUTO-0029><RBW-GRAPHIC filename="00714.tif" origseq="7" origtype="I" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80325. ></RBWAUTO-0029
  80326. ></LABEL
  80327. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80328. >Generated NewEra constructions</L.LABEL
  80329. ><B.BODY><RBW-IDXTERM TERM1="NewEra" TERM2="code from data attribute"></RBW-IDXTERM
  80330. >The following NewEra constructions and functions are generated for a data attribute:</B.BODY
  80331. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="136p"><COLSPEC COLNAME="2" COLWIDTH="208p"><COLSPEC COLNAME="3" COLWIDTH="102p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>NewEra</CELLHEADING
  80332. ></ENTRY
  80333. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Access</CELLHEADING
  80334. ></ENTRY
  80335. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Remark</CELLHEADING
  80336. ></ENTRY
  80337. ></RBW-ROW
  80338. ></THEAD
  80339. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="member data"></RBW-IDXTERM
  80340. ><RBW-IDXTERM TERM1="class feature" TERM2="member data"></RBW-IDXTERM
  80341. >Member data</CELLBODY
  80342. ></ENTRY
  80343. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  80344. ></ENTRY
  80345. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Always private</CELLBODY
  80346. ></ENTRY
  80347. ></RBW-ROW
  80348. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME><RBW-IDXTERM TERM1="member function" TERM2="data attribute"></RBW-IDXTERM
  80349. >get</CX5FX5FPROCEDURE.NAME
  80350. > member function</CELLBODY
  80351. ></ENTRY
  80352. ><ENTRY COLNAME="2" MOREROWS="1" VALIGN="TOP"><CELLBODY>Private, protected or public depending on the property Attribute Access</CELLBODY
  80353. ></ENTRY
  80354. ><ENTRY COLNAME="3" MOREROWS="1" VALIGN="TOP"><CELLBODY></CELLBODY
  80355. ></ENTRY
  80356. ></RBW-ROW
  80357. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FPROCEDURE.NAME><RBW-IDXTERM TERM1="member function" TERM2="set"></RBW-IDXTERM
  80358. ><RBW-IDXTERM TERM1="class feature" TERM2="member function"></RBW-IDXTERM
  80359. >set</CX5FX5FPROCEDURE.NAME
  80360. > member function</CELLBODY
  80361. ></ENTRY
  80362. ></RBW-ROW
  80363. ></TBODY
  80364. ></TGROUP
  80365. ></RBW-TABLE
  80366. ></LABEL
  80367. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80368. >Class feature</L.LABEL
  80369. ><B.BODY>A dollar sign ($) before a data attribute name indicates a class feature. This results in the generation of an attribute with the leading NewEra keyword SHARED, indicating it is a shared data member.</B.BODY
  80370. ><B.BODY>The header file generated for a class containing one class feature looks like this:</B.BODY
  80371. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00715.unk" origfile="pics/dacl1.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80372. ></FA.FIGURE.ANCHOR
  80373. ><B.BODY><CX5FX5FFILE.NAME>classA.4gh</CX5FX5FFILE.NAME
  80374. >:</B.BODY
  80375. ><EWM.EXAMPLEW.MONO>CLASS classA</EWM.EXAMPLEW.MONO
  80376. ><EWM.EXAMPLEW.MONO>      FUNCTION classA()</EWM.EXAMPLEW.MONO
  80377. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  80378. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80379. ><EWM.EXAMPLEW.MONO>      PUBLIC <CX5FX5FFILE.NAME>SHARED</CX5FX5FFILE.NAME
  80380. > FUNCTION getAtt1() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  80381. ><EWM.EXAMPLEW.MONO>      PUBLIC <CX5FX5FFILE.NAME>SHARED</CX5FX5FFILE.NAME
  80382. > FUNCTION setAtt1(newAtt1 INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  80383. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80384. ><EWM.EXAMPLEW.MONO>      PRIVATE <CX5FX5FFILE.NAME>SHARED</CX5FX5FFILE.NAME
  80385. > VARIABLE att1 INTEGER </EWM.EXAMPLEW.MONO
  80386. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  80387. ></LABEL
  80388. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80389. >Derived attribute</L.LABEL
  80390. ><B.BODY>A forward slash (/) before a data attribute name indicates a derived attribute. However, these forward slashes are ignored by the NewEra code generator.</B.BODY
  80391. ></LABEL
  80392. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80393. >Data types</L.LABEL
  80394. ><B.BODY>You can <RBW-IDXTERM TERM1="data attribute" TERM2="specifying data type"></RBW-IDXTERM
  80395. >specify two kinds of data types:<RBW-IDXTERM TERM1="data type" TERM2="standard"></RBW-IDXTERM
  80396. ></B.BODY
  80397. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80398. ></RBW-AUTOGEN
  80399. ></RBW-MARKER
  80400. ><RBW-PARABODY>A standard type, as defined in the customization file</RBW-PARABODY
  80401. ></LB.LIST.BULLET
  80402. ><LT.LIST.TEXT>M4_home<CX5FX5FFILE.NAME>\etc\t_inf\l_ne\stand_types</CX5FX5FFILE.NAME
  80403. >.</LT.LIST.TEXT
  80404. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80405. ></RBW-AUTOGEN
  80406. ></RBW-MARKER
  80407. ><RBW-PARABODY>Other types defined as classes in a CD.</RBW-PARABODY
  80408. ></LB.LIST.BULLET
  80409. ></LABEL
  80410. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80411. >Initial value</L.LABEL
  80412. ><B.BODY>The initial value of a data attribute is used to assign a value to the data member. If the object initialization parameters of the constructor are automatically generated (see <RBW-XREF REFID="24711" TYPE="XREF-TEXTCOPY">Constructor</RBW-XREF
  80413. >) this assignment is generated in the body of the constructor:</B.BODY
  80414. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00716.unk" origfile="pics/dacl2.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80415. ></FA2.FIGURE.ANCHOR.2
  80416. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80417. ><EM.EXAMPLE.MONO>FUNCTION classA::classA()</EM.EXAMPLE.MONO
  80418. ><EM.EXAMPLE.MONO>      LET att1 = <CX5FX5FFILE.NAME>60</CX5FX5FFILE.NAME
  80419. > </EM.EXAMPLE.MONO
  80420. ><EM.EXAMPLE.MONO>      &truehy;&truehy; Start constructor user section</EM.EXAMPLE.MONO
  80421. ><EM.EXAMPLE.MONO>      &truehy;&truehy; End constructor user section</EM.EXAMPLE.MONO
  80422. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  80423. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80424. ></LABEL
  80425. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80426. >In this section</L.LABEL
  80427. ><B.BODY>This section describes the properties that can be specified for data attributes, then provides examples of how data attributes are translated into NewEra code:</B.BODY
  80428. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  80429. ></ENTRY
  80430. ></RBW-ROW
  80431. ></THEAD
  80432. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29548" TYPE="XREF-TEXTCOPY">Data Attribute Properties&rbwtab;3–12</RBW-XREF
  80433. ></SB.SECTION.BLOCK.TABLE
  80434. ></ENTRY
  80435. ></RBW-ROW
  80436. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="25712" TYPE="XREF-TEXTCOPY">Examples: Data Attributes and NewEra&rbwtab;3–15</RBW-XREF
  80437. ></SB.SECTION.BLOCK.TABLE
  80438. ></ENTRY
  80439. ></RBW-ROW
  80440. ></TBODY
  80441. ></TGROUP
  80442. ></RBW-TABLE
  80443. ></LABEL
  80444. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29548"></RBW-ANCHOR
  80445. >Data Attribute Properties</SS.SUBSEC.HEAD
  80446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80447. >Introduction</L.LABEL
  80448. ><B.BODY>This section describes data attribute properties that affect the (non&truehy;persistent) code generation. For instructions on how to specify properties, see <RBW-XREF REFID="10851" TYPE="XREF-TEXTCOPY">How to specify properties</RBW-XREF
  80449. >.</B.BODY
  80450. ></LABEL
  80451. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80452. >Data Attribute properties</L.LABEL
  80453. ><B.BODY>The following figure shows part of an Edit Properties dialog box:</B.BODY
  80454. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00717.unk" origfile="pics/prpattr.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80455. ></FA.FIGURE.ANCHOR
  80456. ></LABEL
  80457. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80458. >Which data attribute properties can you specify</L.LABEL
  80459. ><B.BODY>The following data attribute properties affect non&truehy;persistent code generation:</B.BODY
  80460. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80461. ></RBW-AUTOGEN
  80462. ></RBW-MARKER
  80463. ><RBW-PARABODY><RBW-XREF REFID="30471" TYPE="XREF-TEXTCOPY">Constant Attribute</RBW-XREF
  80464. ></RBW-PARABODY
  80465. ></LB.LIST.BULLET
  80466. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80467. ></RBW-AUTOGEN
  80468. ></RBW-MARKER
  80469. ><RBW-PARABODY><RBW-XREF REFID="38900" TYPE="XREF-TEXTCOPY">Copy Qualification</RBW-XREF
  80470. ></RBW-PARABODY
  80471. ></LB.LIST.BULLET
  80472. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80473. ></RBW-AUTOGEN
  80474. ></RBW-MARKER
  80475. ><RBW-PARABODY><RBW-XREF REFID="30201" TYPE="XREF-TEXTCOPY">Nullable</RBW-XREF
  80476. ></RBW-PARABODY
  80477. ></LB.LIST.BULLET
  80478. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80479. ></RBW-AUTOGEN
  80480. ></RBW-MARKER
  80481. ><RBW-PARABODY><RBW-XREF REFID="37407" TYPE="XREF-TEXTCOPY">Abbreviation</RBW-XREF
  80482. ></RBW-PARABODY
  80483. ></LB.LIST.BULLET
  80484. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80485. ></RBW-AUTOGEN
  80486. ></RBW-MARKER
  80487. ><RBW-PARABODY><RBW-XREF REFID="42104" TYPE="XREF-TEXTCOPY">Attribute Access</RBW-XREF
  80488. ></RBW-PARABODY
  80489. ></LB.LIST.BULLET
  80490. ><B.BODY>These properties are briefly discussed on the following pages.</B.BODY
  80491. ></LABEL
  80492. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80493. ><RBW-IDXTERM TERM1="Constancy" TERM2="data attribute"></RBW-IDXTERM
  80494. ><RBW-ANCHOR ID="30471"></RBW-ANCHOR
  80495. >Constant Attribute</L.LABEL
  80496. ><B.BODY>When this property is set, a constant data member for the class is generated instead of a variable data member. A constant data member needs an initializing value. No <CX5FX5FPROCEDURE.NAME>get</CX5FX5FPROCEDURE.NAME
  80497. > and <CX5FX5FPROCEDURE.NAME>set</CX5FX5FPROCEDURE.NAME
  80498. > functions are generated for a constant attribute.</B.BODY
  80499. ><B.BODY></B.BODY
  80500. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="87p"><COLSPEC COLNAME="2" COLWIDTH="361p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Constant </CELLHEADING
  80501. ><CELLHEADING>Attribute </CELLHEADING
  80502. ></ENTRY
  80503. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Example Code (4gh)</CELLHEADING
  80504. ></ENTRY
  80505. ></RBW-ROW
  80506. ></THEAD
  80507. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>turned on</CELLBODY
  80508. ></ENTRY
  80509. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80510. ><EM.EXAMPLE.MONO>CLASS classA</EM.EXAMPLE.MONO
  80511. ><EM.EXAMPLE.MONO>      PUBLIC CONSTANT att1 INTEGER  = 60</EM.EXAMPLE.MONO
  80512. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80513. ></ENTRY
  80514. ></RBW-ROW
  80515. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>turned off</CELLBODY
  80516. ></ENTRY
  80517. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80518. ><EM.EXAMPLE.MONO>CLASS classA</EM.EXAMPLE.MONO
  80519. ><EM.EXAMPLE.MONO>      PRIVATE VARIABLE att1 INTEGER = 60</EM.EXAMPLE.MONO
  80520. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80521. ></ENTRY
  80522. ></RBW-ROW
  80523. ></TBODY
  80524. ></TGROUP
  80525. ></RBW-TABLE
  80526. ></LABEL
  80527. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80528. ><RBW-IDXTERM TERM1="Copy Qualification" TERM2="data attribute property"></RBW-IDXTERM
  80529. ><RBW-ANCHOR ID="38900"></RBW-ANCHOR
  80530. >Copy Qualification</L.LABEL
  80531. ><B.BODY>When the data type of the attribute is another class you can control the action of the NewEra COPY operator by supplying the appropriate copy qualification.</B.BODY
  80532. ><B.BODY>NewEra copies the values of normal data members from the source object to the created object using the COPY operator. The copy qualification is post fixed to the variable declaration.</B.BODY
  80533. ><B.BODY>You can select the following qualifications:</B.BODY
  80534. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="105p"><COLSPEC COLNAME="2" COLWIDTH="343p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Copy </CELLHEADING
  80535. ><CELLHEADING>Qualification</CELLHEADING
  80536. ></ENTRY
  80537. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Generated Example Code (4gh)</CELLHEADING
  80538. ></ENTRY
  80539. ></RBW-ROW
  80540. ></THEAD
  80541. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Shallow</CELLBODY
  80542. ><CELLBODY>(default)</CELLBODY
  80543. ></ENTRY
  80544. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><EM.EXAMPLE.MONO>CLASS classA</EM.EXAMPLE.MONO
  80545. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80546. ><EM.EXAMPLE.MONO>      PRIVATE VARIABLE att1 String</EM.EXAMPLE.MONO
  80547. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80548. ></ENTRY
  80549. ></RBW-ROW
  80550. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Deep</CELLBODY
  80551. ></ENTRY
  80552. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><EM.EXAMPLE.MONO>CLASS classA</EM.EXAMPLE.MONO
  80553. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80554. ><EM.EXAMPLE.MONO>      PRIVATE VARIABLE att1 String <CX5FX5FFILE.NAME>DEEP COPY</CX5FX5FFILE.NAME
  80555. > </EM.EXAMPLE.MONO
  80556. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80557. ></ENTRY
  80558. ></RBW-ROW
  80559. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Null</CELLBODY
  80560. ></ENTRY
  80561. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><EM.EXAMPLE.MONO>CLASS classA</EM.EXAMPLE.MONO
  80562. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80563. ><EM.EXAMPLE.MONO>      PRIVATE VARIABLE att1 String <CX5FX5FFILE.NAME>NULL COPY</CX5FX5FFILE.NAME
  80564. > </EM.EXAMPLE.MONO
  80565. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80566. ></ENTRY
  80567. ></RBW-ROW
  80568. ></TBODY
  80569. ></TGROUP
  80570. ></RBW-TABLE
  80571. ></LABEL
  80572. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80573. ><RBW-ANCHOR ID="30201"></RBW-ANCHOR
  80574. >Nullable</L.LABEL
  80575. ><B.BODY>A <RBW-IDXTERM TERM1="nullable" TERM2="data attribute property"></RBW-IDXTERM
  80576. >nullable attribute is an attribute that doesn’t necessarily have a value. In NewEra, the attribute is added to the <RBW-IDXTERM TERM1="constructor" TERM2="not nullable attribute"></RBW-IDXTERM
  80577. >parameter list of the constructor, if it is not nullable. </B.BODY
  80578. ><B.BODY>The following nullability values are available:</B.BODY
  80579. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80580. ></RBW-AUTOGEN
  80581. ></RBW-MARKER
  80582. ><RBW-PARABODY>default (equals yes)</RBW-PARABODY
  80583. ></LB.LIST.BULLET
  80584. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80585. ></RBW-AUTOGEN
  80586. ></RBW-MARKER
  80587. ><RBW-PARABODY>yes</RBW-PARABODY
  80588. ></LB.LIST.BULLET
  80589. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80590. ></RBW-AUTOGEN
  80591. ></RBW-MARKER
  80592. ><RBW-PARABODY>no</RBW-PARABODY
  80593. ></LB.LIST.BULLET
  80594. ><B.BODY>The effect the property values <CX5FX5FOBJECT.NAME>yes</CX5FX5FOBJECT.NAME
  80595. > and <CX5FX5FOBJECT.NAME>default</CX5FX5FOBJECT.NAME
  80596. > have are the same. If you want attributes to be non&truehy;nullable by default, you have to adapt the NewEra code generator.</B.BODY
  80597. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80598. >For more information</SL.SUBLABEL
  80599. ><B.BODY>See <RBW-XREF REFID="25748" TYPE="XREF-TEXTCOPY">Non&truehy;nullable attributes</RBW-XREF
  80600. > for details on the generation of the constructor.</B.BODY
  80601. ></LABEL
  80602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80603. ><RBW-ANCHOR ID="37407"></RBW-ANCHOR
  80604. >Abbreviation</L.LABEL
  80605. ><B.BODY>Abbreviations are ignored by the NewEra code generator.</B.BODY
  80606. ></LABEL
  80607. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80608. ><RBW-IDXTERM TERM1="attribute access" TERM2="property"></RBW-IDXTERM
  80609. ><RBW-ANCHOR ID="42104"></RBW-ANCHOR
  80610. >Attribute Access</L.LABEL
  80611. ><B.BODY>The <CX5FX5FPROCEDURE.NAME><RBW-IDXTERM TERM1="get"></RBW-IDXTERM
  80612. ><RBW-IDXTERM TERM1="set"></RBW-IDXTERM
  80613. >get</CX5FX5FPROCEDURE.NAME
  80614. > (=read) and <CX5FX5FPROCEDURE.NAME>set</CX5FX5FPROCEDURE.NAME
  80615. > (=write) member functions that are generated from the data attributes can be specified as <RBW-IDXTERM TERM1="public section" TERM2="accessibility"></RBW-IDXTERM
  80616. >Public, <RBW-IDXTERM TERM1="protected section" TERM2="accessibility"></RBW-IDXTERM
  80617. >Protected or <RBW-IDXTERM TERM1="private section" TERM2="accessibility"></RBW-IDXTERM
  80618. >Private.</B.BODY
  80619. ><B.BODY>You can specify the following values:</B.BODY
  80620. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="223p"><COLSPEC COLNAME="2" COLWIDTH="223p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Get (=Read)</CELLHEADING
  80621. ></ENTRY
  80622. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set (=Write)</CELLHEADING
  80623. ></ENTRY
  80624. ></RBW-ROW
  80625. ></THEAD
  80626. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public (default)</CELLBODY
  80627. ><CELLBODY>Protected</CELLBODY
  80628. ><CELLBODY>Private</CELLBODY
  80629. ><CELLBODY>None</CELLBODY
  80630. ></ENTRY
  80631. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public (default)</CELLBODY
  80632. ><CELLBODY>Protected </CELLBODY
  80633. ><CELLBODY>Private</CELLBODY
  80634. ><CELLBODY>None</CELLBODY
  80635. ></ENTRY
  80636. ></RBW-ROW
  80637. ></TBODY
  80638. ></TGROUP
  80639. ></RBW-TABLE
  80640. ><B.BODY>The values <CX5FX5FOBJECT.NAME>Public</CX5FX5FOBJECT.NAME
  80641. >, <CX5FX5FOBJECT.NAME>Protected</CX5FX5FOBJECT.NAME
  80642. > and <CX5FX5FOBJECT.NAME>Private</CX5FX5FOBJECT.NAME
  80643. > result in the function having access control qualification PUBLIC, PROTECTED or PRIVATE. </B.BODY
  80644. ><B.BODY><CX5FX5FOBJECT.NAME>None</CX5FX5FOBJECT.NAME
  80645. > indicates that the access function will not be generated.</B.BODY
  80646. ></LABEL
  80647. ></SUBSECTION
  80648. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="25712"></RBW-ANCHOR
  80649. >Examples: Data Attributes and NewEra</SS.SUBSEC.HEAD
  80650. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80651. >Introduction</L.LABEL
  80652. ><B.BODY>The following table shows various data attributes you can specify in classes and the most significant part of the resulting code. The Attribute Access property determines the accessibility of the <CX5FX5FFILE.NAME>get</CX5FX5FFILE.NAME
  80653. > and <CX5FX5FFILE.NAME>set</CX5FX5FFILE.NAME
  80654. > member functions: public, protected or private.</B.BODY
  80655. ><B.BODY>All classes in the examples have a <CX5FX5FOBJECT.NAME>$create</CX5FX5FOBJECT.NAME
  80656. > operator so that code can be generated for them. Without this operator the classes would have been special classes.</B.BODY
  80657. ></LABEL
  80658. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80659. >Standard data type</L.LABEL
  80660. ><B.BODY></B.BODY
  80661. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00718.unk" origfile="pics/daex1.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80662. ></FA2.FIGURE.ANCHOR.2
  80663. ><B.BODY><CX5FX5FFILE.NAME>DataAttribEx1.4gh</CX5FX5FFILE.NAME
  80664. >:</B.BODY
  80665. ><EWM.EXAMPLEW.MONO>CLASS DataAttribEx1</EWM.EXAMPLEW.MONO
  80666. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80667. ><EWM.EXAMPLEW.MONO>      PROTECTED FUNCTION getAge() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  80668. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80669. ><EWM.EXAMPLEW.MONO>      PRIVATE FUNCTION setAge(newAge INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  80670. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE age INTEGER </EWM.EXAMPLEW.MONO
  80671. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  80672. ></LABEL
  80673. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80674. >Another class as data type</L.LABEL
  80675. ><B.BODY></B.BODY
  80676. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00719.unk" origfile="pics/daex2.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80677. ></FA2.FIGURE.ANCHOR.2
  80678. ><B.BODY><CX5FX5FFILE.NAME>DataAttribEx2.4gh</CX5FX5FFILE.NAME
  80679. >:</B.BODY
  80680. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  80681. ><EWM.EXAMPLEW.MONO>CLASS DataAttribEx2</EWM.EXAMPLEW.MONO
  80682. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80683. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getName() RETURNING ixString</EWM.EXAMPLEW.MONO
  80684. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setName(newName ixString) RETURNING VOID</EWM.EXAMPLEW.MONO
  80685. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80686. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE name ixString </EWM.EXAMPLEW.MONO
  80687. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  80688. ></LABEL
  80689. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80690. >Shared standard type</L.LABEL
  80691. ><B.BODY></B.BODY
  80692. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00720.unk" origfile="pics/daex3.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80693. ></FA2.FIGURE.ANCHOR.2
  80694. ><B.BODY><CX5FX5FFILE.NAME>DataAttribEx3.4gh</CX5FX5FFILE.NAME
  80695. >:</B.BODY
  80696. ><EWM.EXAMPLEW.MONO>CLASS DataAttribEx3</EWM.EXAMPLEW.MONO
  80697. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80698. ><EWM.EXAMPLEW.MONO>      PUBLIC SHARED FUNCTION getMaxAge() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  80699. ><EWM.EXAMPLEW.MONO>      PUBLIC SHARED FUNCTION setMaxAge(newMaxAge INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  80700. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80701. ><EWM.EXAMPLEW.MONO>      PRIVATE SHARED VARIABLE maxAge INTEGER </EWM.EXAMPLEW.MONO
  80702. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  80703. ><B.BODY><CX5FX5FFILE.NAME>DataAttribEx3.4gl</CX5FX5FFILE.NAME
  80704. >:</B.BODY
  80705. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80706. ><EM.EXAMPLE.MONO>      VARIABLE DataAttribEx3::maxAge INTEGER</EM.EXAMPLE.MONO
  80707. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80708. ></LABEL
  80709. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80710. >Standard type with initialization</L.LABEL
  80711. ><B.BODY></B.BODY
  80712. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00721.unk" origfile="pics/daex4.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80713. ></FA2.FIGURE.ANCHOR.2
  80714. ><B.BODY><CX5FX5FFILE.NAME>DataAttribEx4.4gh</CX5FX5FFILE.NAME
  80715. >:</B.BODY
  80716. ><EWM.EXAMPLEW.MONO>CLASS DataAttribEx4</EWM.EXAMPLEW.MONO
  80717. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80718. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getAge() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  80719. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setAge(newAge INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  80720. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80721. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE age INTEGER </EWM.EXAMPLEW.MONO
  80722. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  80723. ><B.BODY><CX5FX5FFILE.NAME>DataAttribEx4.4gl</CX5FX5FFILE.NAME
  80724. >:</B.BODY
  80725. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80726. ><EM.EXAMPLE.MONO>FUNCTION DataAttribEx4::DataAttribEx4()</EM.EXAMPLE.MONO
  80727. ><EM.EXAMPLE.MONO>      LET age = 18</EM.EXAMPLE.MONO
  80728. ><EM.EXAMPLE.MONO>      &truehy;&truehy; Start constructor user section</EM.EXAMPLE.MONO
  80729. ><EM.EXAMPLE.MONO>      &truehy;&truehy; End constructor user section</EM.EXAMPLE.MONO
  80730. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  80731. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80732. ></LABEL
  80733. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80734. >With shared and initialization</L.LABEL
  80735. ><BI.BODY.INTRO></BI.BODY.INTRO
  80736. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00722.unk" origfile="pics/daex5.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80737. ></FA2.FIGURE.ANCHOR.2
  80738. ><B.BODY><CX5FX5FFILE.NAME>DataAttribEx5.4gh</CX5FX5FFILE.NAME
  80739. >:</B.BODY
  80740. ><EWM.EXAMPLEW.MONO>CLASS DataAttribEx5</EWM.EXAMPLEW.MONO
  80741. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80742. ><EWM.EXAMPLEW.MONO>      PUBLIC SHARED FUNCTION getMaxAge() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  80743. ><EWM.EXAMPLEW.MONO>      PUBLIC SHARED FUNCTION setMaxAge(newMaxAge INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  80744. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  80745. ><EWM.EXAMPLEW.MONO>      PRIVATE SHARED VARIABLE maxAge INTEGER </EWM.EXAMPLEW.MONO
  80746. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  80747. ><B.BODY><CX5FX5FFILE.NAME>DataAttribEx5.4gl</CX5FX5FFILE.NAME
  80748. >:</B.BODY
  80749. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80750. ><EM.EXAMPLE.MONO>      VARIABLE DataAttribEx5::maxAge INTEGER = 65</EM.EXAMPLE.MONO
  80751. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80752. ></LABEL
  80753. ></SUBSECTION
  80754. ></SECTION
  80755. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="operation" TERM2="in non-persistent code generation"></RBW-IDXTERM
  80756. ><RBW-ANCHOR ID="18392"></RBW-ANCHOR
  80757. >Operations</S.SECTION.HEAD
  80758. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80759. >Syntax</L.LABEL
  80760. ><B.BODY>Use the following syntax when you specify the <RBW-IDXTERM TERM1="operation" TERM2="syntax"></RBW-IDXTERM
  80761. ><RBW-IDXTERM TERM1="class" TERM2="operation"></RBW-IDXTERM
  80762. >operations of a class:</B.BODY
  80763. ><RBWAUTO-0029><RBW-GRAPHIC filename="00723.tif" origseq="13" origtype="I" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80764. ></RBWAUTO-0029
  80765. ></LABEL
  80766. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80767. >Generated NewEra constructions</L.LABEL
  80768. ><B.BODY>The following <RBW-IDXTERM TERM1="NewEra" TERM2="function"></RBW-IDXTERM
  80769. ><RBW-IDXTERM TERM1="function"></RBW-IDXTERM
  80770. >functions are generated for an operation in the header and source files :</B.BODY
  80771. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="162p"><COLSPEC COLNAME="3" COLWIDTH="231p"><SPANSPEC NAMEST="1" NAMEEND="2" SPANNAME="S1T2"><THEAD><RBW-ROW><ENTRY SPANNAME="S1T2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>NewEra</CELLHEADING
  80772. ></ENTRY
  80773. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Access</CELLHEADING
  80774. ></ENTRY
  80775. ></RBW-ROW
  80776. ></THEAD
  80777. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4gh</CELLBODY
  80778. ></ENTRY
  80779. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="member function"></RBW-IDXTERM
  80780. ><RBW-IDXTERM TERM1="operation" TERM2="member function"></RBW-IDXTERM
  80781. >Member <RBW-IDXTERM TERM1="member function" TERM2="operation"></RBW-IDXTERM
  80782. >function declaration</CELLBODY
  80783. ></ENTRY
  80784. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private, protected or public depending on the property Method Access</CELLBODY
  80785. ></ENTRY
  80786. ></RBW-ROW
  80787. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4gl</CELLBODY
  80788. ></ENTRY
  80789. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Empty body of a method<RBW-IDXTERM TERM1="class" TERM2="method"></RBW-IDXTERM
  80790. ></CELLBODY
  80791. ></ENTRY
  80792. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  80793. ></ENTRY
  80794. ></RBW-ROW
  80795. ></TBODY
  80796. ></TGROUP
  80797. ></RBW-TABLE
  80798. ><B.BODY>The following example shows what code is generated for an operation without parameters:</B.BODY
  80799. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00724.unk" origfile="pics/operex1.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80800. ></FA2.FIGURE.ANCHOR.2
  80801. ><B.BODY><CX5FX5FFILE.NAME>classA.4gh</CX5FX5FFILE.NAME
  80802. >:</B.BODY
  80803. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80804. ><EM.EXAMPLE.MONO>CLASS classA</EM.EXAMPLE.MONO
  80805. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80806. ><EM.EXAMPLE.MONO>      PUBLIC FUNCTION opr() RETURNING VOID</EM.EXAMPLE.MONO
  80807. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80808. ><B.BODY><CX5FX5FFILE.NAME>class.4gl</CX5FX5FFILE.NAME
  80809. >:</B.BODY
  80810. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  80811. ><EM.EXAMPLE.MONO>FUNCTION classA::opr() RETURNING VOID</EM.EXAMPLE.MONO
  80812. ><EM.EXAMPLE.MONO>      &truehy;&truehy; Implement this function!</EM.EXAMPLE.MONO
  80813. ><EM.EXAMPLE.MONO>      &truehy;&truehy;</EM.EXAMPLE.MONO
  80814. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  80815. ></LABEL
  80816. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80817. >Class feature</L.LABEL
  80818. ><B.BODY>A dollar sign ($) before an operation name indicates a class feature. This results in the generation of an operation with the leading NewEra keyword SHARED, indicating it is a shared function of the class.</B.BODY
  80819. ><B.BODY>The header file generated for a class containing such a class feature looks like this:</B.BODY
  80820. ><B.BODY><CX5FX5FFILE.NAME>classA.4gh</CX5FX5FFILE.NAME
  80821. >:</B.BODY
  80822. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00725.unk" origfile="pics/operex2.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80823. ></FA2.FIGURE.ANCHOR.2
  80824. ><EM.EXAMPLE.MONO>CLASS classA</EM.EXAMPLE.MONO
  80825. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80826. ><EM.EXAMPLE.MONO>      PUBLIC <CX5FX5FFILE.NAME>SHARED</CX5FX5FFILE.NAME
  80827. > FUNCTION opr() RETURNING VOID</EM.EXAMPLE.MONO
  80828. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  80829. ></LABEL
  80830. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80831. >Parameters</L.LABEL
  80832. ><B.BODY>A parameter in the parameter list of an operation must be specified according to the following syntax:</B.BODY
  80833. ><E.EXAMPLE>name:type</E.EXAMPLE
  80834. ><B.BODY>This results in a function argument in both the function declaration (4gh) and in the function definition (4gl). The <CX5FX5FTERM>type</CX5FX5FTERM
  80835. > must either be a standard type (see <RBW-XREF REFID="42656" TYPE="XREF-TEXTCOPY">Customizing Data Types</RBW-XREF
  80836. >) or a class modeled in a CD.</B.BODY
  80837. ><B.BODY>The following example shows how an operation with two specified parameters is generated:</B.BODY
  80838. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00726.unk" origfile="pics/operex3.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80839. ></FA2.FIGURE.ANCHOR.2
  80840. ><B.BODY><CX5FX5FFILE.NAME>classA.4gh</CX5FX5FFILE.NAME
  80841. >:</B.BODY
  80842. ><EWM.EXAMPLEW.MONO>CLASS classA</EWM.EXAMPLEW.MONO
  80843. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80844. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION opr(<CX5FX5FFILE.NAME>param1 INTEGER, param2 INTEGER</CX5FX5FFILE.NAME
  80845. >) RETURNING VOID</EWM.EXAMPLEW.MONO
  80846. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80847. ><B.BODY><CX5FX5FFILE.NAME>classA.4gl</CX5FX5FFILE.NAME
  80848. >:</B.BODY
  80849. ><EWM.EXAMPLEW.MONO>FUNCTION classA::opr(<CX5FX5FFILE.NAME>param1 INTEGER, param2 INTEGER</CX5FX5FFILE.NAME
  80850. >) RETURNING VOID</EWM.EXAMPLEW.MONO
  80851. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Implement this function!</EWM.EXAMPLEW.MONO
  80852. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy;</EWM.EXAMPLEW.MONO
  80853. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  80854. ><B.BODY>The function definition generated in the 4gl file of the class has no contents besides the comment lines, prompting you to implement the function.</B.BODY
  80855. ><B.BODY>For certain general purpose functions, you can use the operation property Tcl Method Implementation Procedure, which is discussed in <RBW-XREF REFID="18195" TYPE="XREF-TEXTCOPY">Tcl Method Implementation Procedure</RBW-XREF
  80856. > and further.</B.BODY
  80857. ></LABEL
  80858. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80859. >Inclusion of header files</L.LABEL
  80860. ><B.BODY>When the implementation of a (generated) function requires inclusion of certain header files, you can enter the include statement in the user include file section at the top of the 4gl file. This section is marked by the following two comment lines:</B.BODY
  80861. ><EM.EXAMPLE.MONO>&truehy;&truehy; Start user added include file section</EM.EXAMPLE.MONO
  80862. ><EM.EXAMPLE.MONO>&truehy;&truehy; End user added include file section</EM.EXAMPLE.MONO
  80863. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  80864. ></RBW-AUTOGEN
  80865. >These edits are preserved when you regenerate the file.</N.NOTE
  80866. ></LABEL
  80867. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80868. >Return type</L.LABEL
  80869. ><B.BODY>The return type for an operation must be either a standard type (see <RBW-XREF REFID="42656" TYPE="XREF-TEXTCOPY">Customizing Data Types</RBW-XREF
  80870. >) or a class modeled in a CD.</B.BODY
  80871. ><B.BODY>The following example shows how an operation with two parameters and a return type specified is generated:</B.BODY
  80872. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00727.unk" origfile="pics/operex4.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80873. ></FA2.FIGURE.ANCHOR.2
  80874. ><B.BODY><CX5FX5FFILE.NAME>classA.4gh</CX5FX5FFILE.NAME
  80875. >:</B.BODY
  80876. ><EWM.EXAMPLEW.MONO>CLASS classA</EWM.EXAMPLEW.MONO
  80877. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80878. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION opr(param1 INTEGER, param2 INTEGER) RETURNING <CX5FX5FFILE.NAME>INTEGER</CX5FX5FFILE.NAME
  80879. ></EWM.EXAMPLEW.MONO
  80880. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  80881. ><B.BODY><CX5FX5FFILE.NAME>classA.4gl</CX5FX5FFILE.NAME
  80882. >:</B.BODY
  80883. ><EWM.EXAMPLEW.MONO>FUNCTION classA::opr(param1 INTEGER, param2 INTEGER) RETURNING <CX5FX5FFILE.NAME>INTEGER</CX5FX5FFILE.NAME
  80884. ></EWM.EXAMPLEW.MONO
  80885. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Implement this function!</EWM.EXAMPLEW.MONO
  80886. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy;</EWM.EXAMPLEW.MONO
  80887. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  80888. ></LABEL
  80889. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80890. >Abstract operation</L.LABEL
  80891. ><B.BODY>Abstract operations are not supported in NewEra. The ObjectTeam code generator therefore ignores <CX5FX5FINPUT>{abstract}</CX5FX5FINPUT
  80892. > specified for operations other than <CX5FX5FINPUT>$create</CX5FX5FINPUT
  80893. >. </B.BODY
  80894. ><B.BODY>When you use <CX5FX5FINPUT>{abstract}</CX5FX5FINPUT
  80895. > in combination with a <CX5FX5FINPUT>$create</CX5FX5FINPUT
  80896. > operation, the generated constructor does not get access control qualification PUBLIC, even when the property Method Access is set to Public (see <RBW-XREF REFID="29834" TYPE="XREF-TEXTCOPY">Method Access</RBW-XREF
  80897. >).</B.BODY
  80898. ></LABEL
  80899. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80900. >In this section</L.LABEL
  80901. ><B.BODY>This section provides examples of how operations are translated into NewEra and what effect the properties have.</B.BODY
  80902. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  80903. ></ENTRY
  80904. ></RBW-ROW
  80905. ></THEAD
  80906. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17587" TYPE="XREF-TEXTCOPY">Operation Properties&rbwtab;3–22</RBW-XREF
  80907. ></SB.SECTION.BLOCK.TABLE
  80908. ></ENTRY
  80909. ></RBW-ROW
  80910. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39607" TYPE="XREF-TEXTCOPY">Examples: Operations and NewEra&rbwtab;3–26</RBW-XREF
  80911. ></SB.SECTION.BLOCK.TABLE
  80912. ></ENTRY
  80913. ></RBW-ROW
  80914. ></TBODY
  80915. ></TGROUP
  80916. ></RBW-TABLE
  80917. ></LABEL
  80918. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17587"></RBW-ANCHOR
  80919. >Operation Properties</SS.SUBSEC.HEAD
  80920. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80921. >Introduction</L.LABEL
  80922. ><B.BODY>This section describes operation properties that affect non&truehy;persistent code generation. For instructions on how to specify properties, see <RBW-XREF REFID="10851" TYPE="XREF-TEXTCOPY">How to specify properties</RBW-XREF
  80923. >.</B.BODY
  80924. ><B.BODY>The following figure shows part of the Edit Properties dialog box for the class Product:</B.BODY
  80925. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00728.unk" origfile="pics/prpoper.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  80926. ></FA.FIGURE.ANCHOR
  80927. ></LABEL
  80928. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80929. >Which operation properties can you specify</L.LABEL
  80930. ><B.BODY>You can specify the following operation properties that affect non&truehy;persistent code generation:</B.BODY
  80931. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80932. ></RBW-AUTOGEN
  80933. ></RBW-MARKER
  80934. ><RBW-PARABODY><RBW-XREF REFID="29834" TYPE="XREF-TEXTCOPY">Method Access</RBW-XREF
  80935. ></RBW-PARABODY
  80936. ></LB.LIST.BULLET
  80937. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80938. ></RBW-AUTOGEN
  80939. ></RBW-MARKER
  80940. ><RBW-PARABODY><RBW-XREF REFID="18195" TYPE="XREF-TEXTCOPY">Tcl Method Implementation Procedure</RBW-XREF
  80941. ></RBW-PARABODY
  80942. ></LB.LIST.BULLET
  80943. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80944. ></RBW-AUTOGEN
  80945. ></RBW-MARKER
  80946. ><RBW-PARABODY><RBW-XREF REFID="33377" TYPE="XREF-TEXTCOPY">Event</RBW-XREF
  80947. ></RBW-PARABODY
  80948. ></LB.LIST.BULLET
  80949. ><B.BODY>Besides these, you can specify the following property for parameters in an operation:</B.BODY
  80950. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80951. ></RBW-AUTOGEN
  80952. ></RBW-MARKER
  80953. ><RBW-PARABODY><RBW-XREF REFID="19497" TYPE="XREF-TEXTCOPY">Default value</RBW-XREF
  80954. ></RBW-PARABODY
  80955. ></LB.LIST.BULLET
  80956. ><B.BODY>These properties are briefly discussed on the following pages.</B.BODY
  80957. ></LABEL
  80958. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80959. ><RBW-IDXTERM TERM1="method access" TERM2="property"></RBW-IDXTERM
  80960. ><RBW-IDXTERM TERM1="accessibility" TERM2="operation"></RBW-IDXTERM
  80961. ><RBW-IDXTERM TERM1="operation" TERM2="accessibility"></RBW-IDXTERM
  80962. ><RBW-ANCHOR ID="29834"></RBW-ANCHOR
  80963. >Method <RBW-IDXTERM TERM1="operation" TERM2="accessibility"></RBW-IDXTERM
  80964. >Access</L.LABEL
  80965. ><B.BODY>You can specify the following values for the property <RBW-IDXTERM TERM1="method access" TERM2="property"></RBW-IDXTERM
  80966. >Method Access:</B.BODY
  80967. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80968. ></RBW-AUTOGEN
  80969. ></RBW-MARKER
  80970. ><RBW-PARABODY>Public (default)</RBW-PARABODY
  80971. ></LB.LIST.BULLET
  80972. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80973. ></RBW-AUTOGEN
  80974. ></RBW-MARKER
  80975. ><RBW-PARABODY>Private</RBW-PARABODY
  80976. ></LB.LIST.BULLET
  80977. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  80978. ></RBW-AUTOGEN
  80979. ></RBW-MARKER
  80980. ><RBW-PARABODY>Protected</RBW-PARABODY
  80981. ></LB.LIST.BULLET
  80982. ><B.BODY>Generated function declarations contain the according access control qualification PUBLIC, PRIVATE or PROTECTED.</B.BODY
  80983. ><B.BODY>Use the <RBW-IDXTERM TERM1="operation" TERM2="accessibility"></RBW-IDXTERM
  80984. >accessibility property <RBW-IDXTERM TERM1="method access" TERM2="property"></RBW-IDXTERM
  80985. >Method Access to indicate in which section the member function must be placed.</B.BODY
  80986. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  80987. ><RBW-ANCHOR ID="31329"></RBW-ANCHOR
  80988. >Visibility</SL.SUBLABEL
  80989. ><B.BODY>You can display the access level of methods in your diagram by checking Options | Show Visibility in the Class Diagram Editor. Method names will then be displayed with the following leading characters indicating the method’s access level:</B.BODY
  80990. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="318p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Special character</CELLHEADING
  80991. ></ENTRY
  80992. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  80993. ></ENTRY
  80994. ></RBW-ROW
  80995. ></THEAD
  80996. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>+</CELLBODY
  80997. ></ENTRY
  80998. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  80999. ></ENTRY
  81000. ></RBW-ROW
  81001. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>#</CELLBODY
  81002. ></ENTRY
  81003. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Protected</CELLBODY
  81004. ></ENTRY
  81005. ></RBW-ROW
  81006. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  81007. ></ENTRY
  81008. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private</CELLBODY
  81009. ></ENTRY
  81010. ></RBW-ROW
  81011. ></TBODY
  81012. ></TGROUP
  81013. ></RBW-TABLE
  81014. ><B.BODY>These special characters can also be used to <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  81015. > the access level of methods. Typing a minus sign (&truehy;) before a method name will set the access level of the method to Private, for example. </B.BODY
  81016. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  81017. ></RBW-AUTOGEN
  81018. >The special characters only work if the menu entry Options | Show Visibility in the Class Diagram Editor has been checked. Otherwise, the special characters will just be regarded as part of the method name.</W.WARNING
  81019. ></LABEL
  81020. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81021. ><RBW-IDXTERM TERM1="Tcl method implementation procedure" TERM2="property"></RBW-IDXTERM
  81022. ><RBW-IDXTERM TERM1="operation" TERM2="Tcl method implementation procedure09"></RBW-IDXTERM
  81023. ><RBW-ANCHOR ID="18195"></RBW-ANCHOR
  81024. >Tcl Method Implementation Procedure</L.LABEL
  81025. ><B.BODY>Use the Tcl Method Implementation Procedure property to generate code for a method automatically.</B.BODY
  81026. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  81027. ></RBW-AUTOGEN
  81028. ></RBW-MARKER
  81029. ><RBW-PARABODY>To <RBW-IDXTERM TERM1="generating" TERM2="code via TCL procedures"></RBW-IDXTERM
  81030. >generate code for a method body automatically:</RBW-PARABODY
  81031. ></P.PROCEDURE
  81032. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  81033. ></RBW-AUTOGEN
  81034. ></RBW-MARKER
  81035. ><RBW-PARABODY>Make sure the current browser level is the System level of the Implementation phase. The current system must be the system you are generating the code in.</RBW-PARABODY
  81036. ></LN.LIST.NUM
  81037. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  81038. ></RBW-AUTOGEN
  81039. ></RBW-MARKER
  81040. ><RBW-PARABODY>Select File | New | External File Version...</RBW-PARABODY
  81041. ></LN.LIST.NUM
  81042. ><LR.LIST.RESULT>The New External File Version dialog box appears.</LR.LIST.RESULT
  81043. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  81044. ></RBW-AUTOGEN
  81045. ></RBW-MARKER
  81046. ><RBW-PARABODY>Select the Type <CX5FX5FTERM>tcl</CX5FX5FTERM
  81047. > and enter a file name, e.g. <CX5FX5FFILE.NAME>my_proc</CX5FX5FFILE.NAME
  81048. >.</RBW-PARABODY
  81049. ></LN.LIST.NUM
  81050. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  81051. ></RBW-AUTOGEN
  81052. ></RBW-MARKER
  81053. ><RBW-PARABODY>Click the Edit button.</RBW-PARABODY
  81054. ></LN.LIST.NUM
  81055. ><LR.LIST.RESULT>The text editor is started up.</LR.LIST.RESULT
  81056. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  81057. ></RBW-AUTOGEN
  81058. ></RBW-MARKER
  81059. ><RBW-PARABODY><RBW-IDXTERM TERM1="Tcl" TERM2="creating - procedures"></RBW-IDXTERM
  81060. >Create the Tcl procedure.</RBW-PARABODY
  81061. ></LN.LIST.NUM
  81062. ><LT.LIST.TEXT>This procedure generates the source code for a particular function with a very general purpose such as a <CX5FX5FPROCEDURE.NAME>printOn</CX5FX5FPROCEDURE.NAME
  81063. > function. </LT.LIST.TEXT
  81064. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00729.unk" origfile="pics/operex5.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81065. ></FA2.FIGURE.ANCHOR.2
  81066. ><LT.LIST.TEXT>Such a <CX5FX5FPROCEDURE.NAME>printOn</CX5FX5FPROCEDURE.NAME
  81067. > function prints all the data members of a class to standard output. You can use this kind of function for any class. The contents of the function is the same for every class; only the class differs.</LT.LIST.TEXT
  81068. ><LT.LIST.TEXT>Use the following syntax when creating the Tcl procedure:</LT.LIST.TEXT
  81069. ><E.EXAMPLE>    proc operation::<CX5FX5FTERM>name</CX5FX5FTERM
  81070. > {<CX5FX5FTERM>oper</CX5FX5FTERM
  81071. > <CX5FX5FTERM>class</CX5FX5FTERM
  81072. > <CX5FX5FTERM>sect</CX5FX5FTERM
  81073. > } { }</E.EXAMPLE
  81074. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  81075. ></RBW-MARKER
  81076. ><RBW-PARABODY><CX5FX5FTERM>name</CX5FX5FTERM
  81077. > has to be specified as value for the property Tcl Method Implementation Procedure</RBW-PARABODY
  81078. ></LB2.LIST.BULLET.2
  81079. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  81080. ></RBW-MARKER
  81081. ><RBW-PARABODY><CX5FX5FTERM>oper</CX5FX5FTERM
  81082. > is the operation handle</RBW-PARABODY
  81083. ></LB2.LIST.BULLET.2
  81084. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  81085. ></RBW-MARKER
  81086. ><RBW-PARABODY><CX5FX5FTERM>class</CX5FX5FTERM
  81087. > is the class handle</RBW-PARABODY
  81088. ></LB2.LIST.BULLET.2
  81089. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  81090. ></RBW-MARKER
  81091. ><RBW-PARABODY><CX5FX5FTERM>sect</CX5FX5FTERM
  81092. > is the section handle</RBW-PARABODY
  81093. ></LB2.LIST.BULLET.2
  81094. ><LT.LIST.TEXT>For example:</LT.LIST.TEXT
  81095. ><EWM.EXAMPLEW.MONO>proc operation::generatePrintOn {oper class sect} {</EWM.EXAMPLEW.MONO
  81096. ><EWM.EXAMPLEW.MONO>   $sect append "DISPLAY \"Attributes of class [$class getName]:\"\n"</EWM.EXAMPLEW.MONO
  81097. ><EWM.EXAMPLEW.MONO>   foreach attr [$class dataAttrSet] {</EWM.EXAMPLEW.MONO
  81098. ><EWM.EXAMPLEW.MONO>      $sect append "DISPLAY \"  [$attr getName]: \", [$attr getName]\n"</EWM.EXAMPLEW.MONO
  81099. ><EWM.EXAMPLEW.MONO>   }</EWM.EXAMPLEW.MONO
  81100. ><EWM.EXAMPLEW.MONO>}</EWM.EXAMPLEW.MONO
  81101. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  81102. ></RBW-AUTOGEN
  81103. ></RBW-MARKER
  81104. ><RBW-PARABODY>Save the Tcl file.</RBW-PARABODY
  81105. ></LN.LIST.NUM
  81106. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  81107. ></RBW-AUTOGEN
  81108. ></RBW-MARKER
  81109. ><RBW-PARABODY>Go back to the CD containing the operation(s) you want to generate the function body for.</RBW-PARABODY
  81110. ></LN.LIST.NUM
  81111. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  81112. ></RBW-AUTOGEN
  81113. ></RBW-MARKER
  81114. ><RBW-PARABODY>Specify the value of the property Tcl Method Implementation Procedure as the name that you specified for the Tcl procedure (without <CX5FX5FINPUT>operation::</CX5FX5FINPUT
  81115. >), e.g.: <CX5FX5FOBJECT.NAME>generatePrintOn</CX5FX5FOBJECT.NAME
  81116. >.</RBW-PARABODY
  81117. ></LN.LIST.NUM
  81118. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  81119. ></RBW-AUTOGEN
  81120. ></RBW-MARKER
  81121. ><RBW-PARABODY>Select Utilities | Import From Previous Phase | OOPL on the System level of the Implementation phase.</RBW-PARABODY
  81122. ></LN.LIST.NUM
  81123. ><B.BODY>Now the body of the method is automatically generated every time you generate code for the class. The ObjectTeam Shell calls this procedure and inserts the code generated by the procedure as the body of the method:</B.BODY
  81124. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81125. ><EM.EXAMPLE.MONO>FUNCTION classA::printOn() RETURNING VOID</EM.EXAMPLE.MONO
  81126. ><EM.EXAMPLE.MONO>      DISPLAY "Attributes of class classA:"</EM.EXAMPLE.MONO
  81127. ><EM.EXAMPLE.MONO>      DISPLAY "  attr1: ", attr1</EM.EXAMPLE.MONO
  81128. ><EM.EXAMPLE.MONO>      DISPLAY "  attr2: ", attr2</EM.EXAMPLE.MONO
  81129. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  81130. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81131. ></LABEL
  81132. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81133. ><RBW-IDXTERM TERM1="Event" TERM2="property for a method"></RBW-IDXTERM
  81134. ><RBW-ANCHOR ID="33377"></RBW-ANCHOR
  81135. >Event</L.LABEL
  81136. ><B.BODY>Set this property to indicate that an operation models an event rather than a function.</B.BODY
  81137. ><B.BODY>If this property is set, an EVENT statement is generated in the header file instead of a FUNCTION statement. No code is generated in the source file, but you can place one or more event handlers between the following markers in the generated source file:</B.BODY
  81138. ><EM.EXAMPLE.MONO>&truehy;&truehy;start user added source code section</EM.EXAMPLE.MONO
  81139. ><EM.EXAMPLE.MONO>&truehy;&truehy;end user added source code section</EM.EXAMPLE.MONO
  81140. ></LABEL
  81141. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81142. ><RBW-IDXTERM TERM1="default value" TERM2="property"></RBW-IDXTERM
  81143. ><RBW-ANCHOR ID="19497"></RBW-ANCHOR
  81144. >Default value</L.LABEL
  81145. ><B.BODY>Set this property to assign a value to the parameter in a function declaration.</B.BODY
  81146. ><B.BODY>In the following example the Default value for the parameter <CX5FX5FOBJECT.NAME>param1</CX5FX5FOBJECT.NAME
  81147. > was set to 65:</B.BODY
  81148. ><B.BODY>4gh:</B.BODY
  81149. ><EWM.EXAMPLEW.MONO>CLASS classA</EWM.EXAMPLEW.MONO
  81150. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  81151. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION opr(param1 INTEGER : 65) RETURNING VOID</EWM.EXAMPLEW.MONO
  81152. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  81153. ></LABEL
  81154. ></SUBSECTION
  81155. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39607"></RBW-ANCHOR
  81156. >Examples: Operations and NewEra</SS.SUBSEC.HEAD
  81157. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81158. >Examples</L.LABEL
  81159. ><B.BODY>The following example shows various operations you can specify in classes and the most significant part of the resulting source code. The Method Access property determines the accessibility of the method: public, protected or private.</B.BODY
  81160. ></LABEL
  81161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81162. >Example CD</L.LABEL
  81163. ><B.BODY></B.BODY
  81164. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00730.unk" origfile="pics/operex6.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81165. ></FA.FIGURE.ANCHOR
  81166. ></LABEL
  81167. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81168. >Example 4gl file</L.LABEL
  81169. ><B.BODY>The following table shows the most important piece of the 4gl fie generated from the example class:</B.BODY
  81170. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="157p"><COLSPEC COLNAME="2" COLWIDTH="462p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operation</CELLHEADING
  81171. ></ENTRY
  81172. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>4GH File</CELLHEADING
  81173. ></ENTRY
  81174. ></RBW-ROW
  81175. ></THEAD
  81176. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oper1()</CELLBODY
  81177. ></ENTRY
  81178. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PUBLIC FUNCTION oper1() RETURNING VOID</CELLBODY
  81179. ></ENTRY
  81180. ></RBW-ROW
  81181. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oper2():integer</CELLBODY
  81182. ></ENTRY
  81183. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PUBLIC FUNCTION oper2() RETURNING INTEGER</CELLBODY
  81184. ></ENTRY
  81185. ></RBW-ROW
  81186. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oper3(i: integer) : ixDate</CELLBODY
  81187. ></ENTRY
  81188. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PUBLIC FUNCTION oper3(i INTEGER : 5) RETURNING ixDate</CELLBODY
  81189. ></ENTRY
  81190. ></RBW-ROW
  81191. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$Oper4(j:integer)</CELLBODY
  81192. ></ENTRY
  81193. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PUBLIC SHARED FUNCTION oper4(j INTEGER) RETURNING VOID</CELLBODY
  81194. ></ENTRY
  81195. ></RBW-ROW
  81196. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oper5()</CELLBODY
  81197. ></ENTRY
  81198. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PUBLIC EVENT oper5() RETURNING VOID</CELLBODY
  81199. ></ENTRY
  81200. ></RBW-ROW
  81201. ></TBODY
  81202. ></TGROUP
  81203. ><RBW-ICONIZE></RBW-TABLE
  81204. ></LABEL
  81205. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81206. >Example 4gh file</L.LABEL
  81207. ><B.BODY>The following table shows the most important piece of the 4gh fie generated from the example class:</B.BODY
  81208. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="157p"><COLSPEC COLNAME="2" COLWIDTH="261p"><COLSPEC COLNAME="3" COLWIDTH="210p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Operation</CELLHEADING
  81209. ></ENTRY
  81210. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>4GH File</CELLHEADING
  81211. ></ENTRY
  81212. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Explanation</CELLHEADING
  81213. ></ENTRY
  81214. ></RBW-ROW
  81215. ></THEAD
  81216. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oper1()</CELLBODY
  81217. ></ENTRY
  81218. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>FUNCTION oper1() RETURNING VOID</CELLBODY
  81219. ></ENTRY
  81220. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Normal operation</CELLBODY
  81221. ></ENTRY
  81222. ></RBW-ROW
  81223. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oper2():integer</CELLBODY
  81224. ></ENTRY
  81225. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>FUNCTION oper2() RETURNING INTEGER</CELLBODY
  81226. ></ENTRY
  81227. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>With return type</CELLBODY
  81228. ></ENTRY
  81229. ></RBW-ROW
  81230. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oper3(i: integer) : ixDate</CELLBODY
  81231. ></ENTRY
  81232. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>FUNCTION oper3(i INTEGER : 5) RETURNING ixDate</CELLBODY
  81233. ></ENTRY
  81234. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>With another class as </CELLBODY
  81235. ><CELLBODY>return type and a parameter</CELLBODY
  81236. ></ENTRY
  81237. ></RBW-ROW
  81238. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>$Oper4(j:integer)</CELLBODY
  81239. ></ENTRY
  81240. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SHARED FUNCTION oper4(j INTEGER) RETURNING VOID</CELLBODY
  81241. ></ENTRY
  81242. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Shared method</CELLBODY
  81243. ></ENTRY
  81244. ></RBW-ROW
  81245. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Oper5()</CELLBODY
  81246. ></ENTRY
  81247. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>EVENT oper5() RETURNING VOID</CELLBODY
  81248. ></ENTRY
  81249. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Property Event set</CELLBODY
  81250. ></ENTRY
  81251. ></RBW-ROW
  81252. ></TBODY
  81253. ></TGROUP
  81254. ><RBW-ICONIZE></RBW-TABLE
  81255. ><B.BODY></B.BODY
  81256. ></LABEL
  81257. ></SUBSECTION
  81258. ></SECTION
  81259. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="constructor"></RBW-IDXTERM
  81260. ><RBW-ANCHOR ID="24711"></RBW-ANCHOR
  81261. >Constructor</S.SECTION.HEAD
  81262. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81263. >Introduction</L.LABEL
  81264. ><B.BODY>There are two ways a constructor can be generated by the NewEra code generator:</B.BODY
  81265. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81266. ></RBW-AUTOGEN
  81267. ></RBW-MARKER
  81268. ><RBW-PARABODY>The constructor and the parameters required for initializing an object of the class are generated</RBW-PARABODY
  81269. ></LB.LIST.BULLET
  81270. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81271. ></RBW-AUTOGEN
  81272. ></RBW-MARKER
  81273. ><RBW-PARABODY>Only the constructor is generated. You have to implement the object initialization parameters yourself</RBW-PARABODY
  81274. ></LB.LIST.BULLET
  81275. ><B.BODY>Both ways are discussed in this section.</B.BODY
  81276. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  81277. ></RBW-AUTOGEN
  81278. >Specify only one constructor for a class. As NewEra does not support function overloading, it is not possible for a class to have multiple constructors.</W.WARNING
  81279. ></LABEL
  81280. ><SUBSECTION><SS.SUBSEC.HEAD>Generating Object Initialization Parameters</SS.SUBSEC.HEAD
  81281. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81282. >Introduction</L.LABEL
  81283. ><B.BODY>The constructor, together with the parameters required for initializing an object of the class correctly, is automatically generated if the class meets the following requirements:</B.BODY
  81284. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81285. ></RBW-AUTOGEN
  81286. ></RBW-MARKER
  81287. ><RBW-PARABODY>The class contains exactly one operation <CX5FX5FOBJECT.NAME>$create</CX5FX5FOBJECT.NAME
  81288. > </RBW-PARABODY
  81289. ></LB.LIST.BULLET
  81290. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81291. ></RBW-AUTOGEN
  81292. ></RBW-MARKER
  81293. ><RBW-PARABODY>The class does not contain an operation <CX5FX5FOBJECT.NAME>$create</CX5FX5FOBJECT.NAME
  81294. > or <CX5FX5FOBJECT.NAME>$create()</CX5FX5FOBJECT.NAME
  81295. >, and is not a special class (see <RBW-XREF REFID="33738" TYPE="XREF-TEXTCOPY">Special Classes</RBW-XREF
  81296. >)</RBW-PARABODY
  81297. ></LB.LIST.BULLET
  81298. ><B.BODY>The following example shows a class that meets these requirements:</B.BODY
  81299. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00731.unk" origfile="pics/ctorex1.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81300. ></FA.FIGURE.ANCHOR
  81301. ><B.BODY>The following constructor is generated for classA1:</B.BODY
  81302. ><B.BODY><CX5FX5FFILE.NAME>classA1.4gl</CX5FX5FFILE.NAME
  81303. >:</B.BODY
  81304. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81305. ><EM.EXAMPLE.MONO>FUNCTION classA1::classA1()</EM.EXAMPLE.MONO
  81306. ><EM.EXAMPLE.MONO>     &truehy;&truehy; Start constructor user section</EM.EXAMPLE.MONO
  81307. ><EM.EXAMPLE.MONO>     &truehy;&truehy; End constructor user section</EM.EXAMPLE.MONO
  81308. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  81309. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81310. ></LABEL
  81311. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81312. >Elements of the constructor</L.LABEL
  81313. ><B.BODY>The constructor consists of the following elements:</B.BODY
  81314. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="358p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Element</CELLHEADING
  81315. ></ENTRY
  81316. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Remark</CELLHEADING
  81317. ></ENTRY
  81318. ></RBW-ROW
  81319. ></THEAD
  81320. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Signature</CELLBODY
  81321. ></ENTRY
  81322. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name of the class</CELLBODY
  81323. ><CELLBODY>List of parameters that are involved in the construction of the class</CELLBODY
  81324. ></ENTRY
  81325. ></RBW-ROW
  81326. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Initializing statement in body</CELLBODY
  81327. ></ENTRY
  81328. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>see: <RBW-XREF REFID="39715" TYPE="XREF-TEXTCOPY">What does the constructor handle</RBW-XREF
  81329. > for details</CELLBODY
  81330. ></ENTRY
  81331. ></RBW-ROW
  81332. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>rest of body</CELLBODY
  81333. ></ENTRY
  81334. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains a section for user edits:</CELLBODY
  81335. ><CELLBODY><CX5FX5FINPUT>&truehy;&truehy; Start constructor user section</CX5FX5FINPUT
  81336. > </CELLBODY
  81337. ><CELLBODY><CX5FX5FINPUT>&truehy;&truehy; End constructor user section</CX5FX5FINPUT
  81338. > </CELLBODY
  81339. ></ENTRY
  81340. ></RBW-ROW
  81341. ></TBODY
  81342. ></TGROUP
  81343. ></RBW-TABLE
  81344. ></LABEL
  81345. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81346. ><RBW-ANCHOR ID="39715"></RBW-ANCHOR
  81347. >What does the constructor handle</L.LABEL
  81348. ><B.BODY>In the following situations, the constructor needs more parameters to handle the initialization of an object of the class correctly:</B.BODY
  81349. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81350. ></RBW-AUTOGEN
  81351. ></RBW-MARKER
  81352. ><RBW-PARABODY>The class is a sub class in a generalization</RBW-PARABODY
  81353. ></LB.LIST.BULLET
  81354. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81355. ></RBW-AUTOGEN
  81356. ></RBW-MARKER
  81357. ><RBW-PARABODY>The class contains data attributes for which the property Nullable is set to No.</RBW-PARABODY
  81358. ></LB.LIST.BULLET
  81359. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81360. ></RBW-AUTOGEN
  81361. ></RBW-MARKER
  81362. ><RBW-PARABODY>The class is involved in an association where the multiplicity at the other end is mandatory</RBW-PARABODY
  81363. ></LB.LIST.BULLET
  81364. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81365. ></RBW-AUTOGEN
  81366. ></RBW-MARKER
  81367. ><RBW-PARABODY>The class is a linked class in a (qualified) association</RBW-PARABODY
  81368. ></LB.LIST.BULLET
  81369. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81370. ></RBW-AUTOGEN
  81371. ></RBW-MARKER
  81372. ><RBW-PARABODY>A link attribute box is linked to a (qualified) association</RBW-PARABODY
  81373. ></LB.LIST.BULLET
  81374. ><B.BODY>Examples of generated constructors in these particular situations can be found on the following pages.</B.BODY
  81375. ></LABEL
  81376. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81377. >Sub class</L.LABEL
  81378. ><B.BODY>In the following example, sub class classA2 is derived from the super class classA1. The super class is initialized in the constructor of classA2:</B.BODY
  81379. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00732.unk" origfile="pics/ctorex2.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81380. ></FA.FIGURE.ANCHOR
  81381. ><B.BODY><CX5FX5FFILE.NAME>classA2.4gl</CX5FX5FFILE.NAME
  81382. >:</B.BODY
  81383. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81384. ><EM.EXAMPLE.MONO>FUNCTION classA2::classA2() :</EM.EXAMPLE.MONO
  81385. ><EM.EXAMPLE.MONO>      classA1()</EM.EXAMPLE.MONO
  81386. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  81387. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  81388. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81389. ></LABEL
  81390. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81391. ><RBW-ANCHOR ID="25748"></RBW-ANCHOR
  81392. >Non&truehy;nullable attributes</L.LABEL
  81393. ><B.BODY>The attribute <CX5FX5FOBJECT.NAME>attB1</CX5FX5FOBJECT.NAME
  81394. > in classB of the following example has the attribute Nullable set to <CX5FX5FOBJECT.NAME>no</CX5FX5FOBJECT.NAME
  81395. >. The non&truehy;nullable attributes are included in the parameter list of the constructor.</B.BODY
  81396. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00733.unk" origfile="pics/ctorex3.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81397. ></FA.FIGURE.ANCHOR
  81398. ><B.BODY><CX5FX5FFILE.NAME>classB.4gl</CX5FX5FFILE.NAME
  81399. >:</B.BODY
  81400. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81401. ><EM.EXAMPLE.MONO>FUNCTION classB::classB(<CX5FX5FFILE.NAME>i_attB1 INTEGER</CX5FX5FFILE.NAME
  81402. >)</EM.EXAMPLE.MONO
  81403. ><EM.EXAMPLE.MONO>      LET attB1 = i_attB1</EM.EXAMPLE.MONO
  81404. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  81405. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  81406. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81407. ></LABEL
  81408. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81409. >Mandatory association</L.LABEL
  81410. ><B.BODY>In the following example, the class classC1 is involved in an association where the multiplicity at the other end is mandatory.</B.BODY
  81411. ><B.BODY>The role name at the mandatory side is included in the parameter list of the constructor for classC1:</B.BODY
  81412. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00734.unk" origfile="pics/ctorex4.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81413. ></FA.FIGURE.ANCHOR
  81414. ><B.BODY><CX5FX5FFILE.NAME>classC1.4gl</CX5FX5FFILE.NAME
  81415. >:</B.BODY
  81416. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81417. ><EM.EXAMPLE.MONO>FUNCTION classC1::classC1(<CX5FX5FFILE.NAME>roleC2 classC2</CX5FX5FFILE.NAME
  81418. >)</EM.EXAMPLE.MONO
  81419. ><EM.EXAMPLE.MONO>      LET roleC2Ref = roleC2</EM.EXAMPLE.MONO
  81420. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  81421. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  81422. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81423. ></LABEL
  81424. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81425. >Linked class in a qualified association</L.LABEL
  81426. ><B.BODY>In the following example, the class classD3 is a linked class in a qualified association.</B.BODY
  81427. ><B.BODY>The qualifier and both the role names roleD1 and roleD2 are included in the parameter list of the constructor for classD3. </B.BODY
  81428. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00735.unk" origfile="pics/ctorex5.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81429. ></FA.FIGURE.ANCHOR
  81430. ><B.BODY><CX5FX5FFILE.NAME>classD3.4gl</CX5FX5FFILE.NAME
  81431. >:</B.BODY
  81432. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  81433. ><EWM.EXAMPLEW.MONO>FUNCTION classD3::classD3(<CX5FX5FFILE.NAME>roleD1 classD1</CX5FX5FFILE.NAME
  81434. >, <CX5FX5FFILE.NAME>roleD2 classD2</CX5FX5FFILE.NAME
  81435. >, <CX5FX5FFILE.NAME>Dqualifier INTEGER</CX5FX5FFILE.NAME
  81436. >)</EWM.EXAMPLEW.MONO
  81437. ><EWM.EXAMPLEW.MONO>      LET roleD1Ref = roleD1</EWM.EXAMPLEW.MONO
  81438. ><EWM.EXAMPLEW.MONO>      CALL roleD1Ref.classD3OfRoleD2Dict.set(Dqualifier, SELF)</EWM.EXAMPLEW.MONO
  81439. ><EWM.EXAMPLEW.MONO>      LET roleD2Ref = roleD2</EWM.EXAMPLEW.MONO
  81440. ><EWM.EXAMPLEW.MONO>      LET roleD2Ref.classD3OfRoleD1Ref = SELF</EWM.EXAMPLEW.MONO
  81441. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  81442. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  81443. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  81444. ></LABEL
  81445. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81446. >Linked attributes in a qualified association</L.LABEL
  81447. ><B.BODY>The following example includes a qualified association with a link attribute box containing one attribute (<CX5FX5FOBJECT.NAME>attE3</CX5FX5FOBJECT.NAME
  81448. >). This link attribute box results in the generation of a class with the name of the association (<CX5FX5FOBJECT.NAME>assoc</CX5FX5FOBJECT.NAME
  81449. >). The same elements are included in the parameter list of the constructor of class <CX5FX5FOBJECT.NAME>assoc</CX5FX5FOBJECT.NAME
  81450. > as for the linked class in the previous example.</B.BODY
  81451. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00736.unk" origfile="pics/ctorex6.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81452. ></FA.FIGURE.ANCHOR
  81453. ><B.BODY><CX5FX5FFILE.NAME>assoc.4gl</CX5FX5FFILE.NAME
  81454. >:</B.BODY
  81455. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  81456. ><EWM.EXAMPLEW.MONO>FUNCTION assoc::assoc(<CX5FX5FFILE.NAME>roleE1 classE1</CX5FX5FFILE.NAME
  81457. >, <CX5FX5FFILE.NAME>roleE2 classE2</CX5FX5FFILE.NAME
  81458. >, <CX5FX5FFILE.NAME>Equalifier INTEGER</CX5FX5FFILE.NAME
  81459. >)</EWM.EXAMPLEW.MONO
  81460. ><EWM.EXAMPLEW.MONO>      LET roleE1Ref = roleE1</EWM.EXAMPLEW.MONO
  81461. ><EWM.EXAMPLEW.MONO>      CALL roleE1Ref.assocOfRoleE2Dict.set(Equalifier, SELF)</EWM.EXAMPLEW.MONO
  81462. ><EWM.EXAMPLEW.MONO>      LET roleE2Ref = roleE2</EWM.EXAMPLEW.MONO
  81463. ><EWM.EXAMPLEW.MONO>      LET roleE2Ref.assocOfRoleE1Ref = SELF</EWM.EXAMPLEW.MONO
  81464. ><EWM.EXAMPLEW.MONO>      ...</EWM.EXAMPLEW.MONO
  81465. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  81466. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  81467. ></LABEL
  81468. ></SUBSECTION
  81469. ><SUBSECTION><SS.SUBSEC.HEAD>Implementing Object Initialization Parameters </SS.SUBSEC.HEAD
  81470. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81471. >Introduction</L.LABEL
  81472. ><B.BODY>If you specify the constructor in a class with the following class operation, then a constructor with an empty body is generated:</B.BODY
  81473. ><E.EXAMPLE>$create()</E.EXAMPLE
  81474. ><B.BODY>You then have to implement the constructor yourself, just like you have to implement any operation yourself.</B.BODY
  81475. ></LABEL
  81476. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81477. >Elements of the constructor</L.LABEL
  81478. ><B.BODY>The constructor consists of the following elements:</B.BODY
  81479. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="358p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Element</CELLHEADING
  81480. ></ENTRY
  81481. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Remark</CELLHEADING
  81482. ></ENTRY
  81483. ></RBW-ROW
  81484. ></THEAD
  81485. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Signature</CELLBODY
  81486. ></ENTRY
  81487. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name of the class</CELLBODY
  81488. ><CELLBODY>List of parameters that are involved in the construction of the class</CELLBODY
  81489. ></ENTRY
  81490. ></RBW-ROW
  81491. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Empty body</CELLBODY
  81492. ></ENTRY
  81493. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains the following comment lines:</CELLBODY
  81494. ><CELLBODY><CX5FX5FINPUT>&truehy;&truehy; Implement this function!</CX5FX5FINPUT
  81495. > </CELLBODY
  81496. ><CELLBODY><CX5FX5FINPUT>&truehy;&truehy;</CX5FX5FINPUT
  81497. > </CELLBODY
  81498. ></ENTRY
  81499. ></RBW-ROW
  81500. ></TBODY
  81501. ></TGROUP
  81502. ></RBW-TABLE
  81503. ></LABEL
  81504. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81505. >Example</L.LABEL
  81506. ><B.BODY>The following example shows the (empty) constructor generated for a class with a class operation <CX5FX5FOBJECT.NAME>$create()</CX5FX5FOBJECT.NAME
  81507. >. There is one parameter specified for this operation:</B.BODY
  81508. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00737.unk" origfile="pics/ctorex7.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81509. ></FA.FIGURE.ANCHOR
  81510. ><B.BODY><CX5FX5FFILE.NAME>classA1.4gh</CX5FX5FFILE.NAME
  81511. >:</B.BODY
  81512. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81513. ><EM.EXAMPLE.MONO>FUNCTION class::class(param1 INTEGER)</EM.EXAMPLE.MONO
  81514. ><EM.EXAMPLE.MONO>      &truehy;&truehy; Implement this function!</EM.EXAMPLE.MONO
  81515. ><EM.EXAMPLE.MONO>      &truehy;&truehy;</EM.EXAMPLE.MONO
  81516. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  81517. ><EM.EXAMPLE.MONO> ...</EM.EXAMPLE.MONO
  81518. ></LABEL
  81519. ></SUBSECTION
  81520. ></SECTION
  81521. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="26001"></RBW-ANCHOR
  81522. >Destructor<RBW-IDXTERM TERM1="destructor"></RBW-IDXTERM
  81523. ></S.SECTION.HEAD
  81524. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81525. >Destructor</L.LABEL
  81526. ><B.BODY>In NewEra the destructor of a class is the (intrinsic) function with the following name:</B.BODY
  81527. ><EM.EXAMPLE.MONO>!destroy()</EM.EXAMPLE.MONO
  81528. ><B.BODY>A destructor is generated for every class for which a constructor is generated. A generated destructor function looks like this:</B.BODY
  81529. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81530. ><EM.EXAMPLE.MONO>FUNCTION classA1::!destroy()</EM.EXAMPLE.MONO
  81531. ><EM.EXAMPLE.MONO>      &truehy;&truehy; Start destructor user section</EM.EXAMPLE.MONO
  81532. ><EM.EXAMPLE.MONO>      &truehy;&truehy; End destructor user section</EM.EXAMPLE.MONO
  81533. ><EM.EXAMPLE.MONO>END FUNCTION</EM.EXAMPLE.MONO
  81534. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81535. ><B.BODY>The destructor may contain more statements, since the destructor is tightly coupled with the constructor. If the generated constructor contains several statements for initialization, the destructor contains the corresponding statements to remove these initializations.</B.BODY
  81536. ></LABEL
  81537. ></SECTION
  81538. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="generalization"></RBW-IDXTERM
  81539. ><RBW-IDXTERM TERM1="inheritance"></RBW-IDXTERM
  81540. ><RBW-ANCHOR ID="38687"></RBW-ANCHOR
  81541. >Generalizations (Inheritance)<RBW-IDXTERM TERM1="generalization" TERM2="in non-persistent code generation"></RBW-IDXTERM
  81542. ></S.SECTION.HEAD
  81543. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81544. >Kinds of inheritance</L.LABEL
  81545. ><B.BODY>You can define the following kinds of <RBW-IDXTERM TERM1="generalization" TERM2="standard"></RBW-IDXTERM
  81546. ><RBW-IDXTERM TERM1="generalization" TERM2="overlapping"></RBW-IDXTERM
  81547. >generalizations:</B.BODY
  81548. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81549. ></RBW-AUTOGEN
  81550. ></RBW-MARKER
  81551. ><RBW-PARABODY>Disjoint (standard)</RBW-PARABODY
  81552. ></LB.LIST.BULLET
  81553. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00738.tif" origseq="34" origtype="I" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81554. ></FA2.FIGURE.ANCHOR.2
  81555. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81556. ></RBW-AUTOGEN
  81557. ></RBW-MARKER
  81558. ><RBW-PARABODY><RBW-IDXTERM TERM1="Overlapping generalization"></RBW-IDXTERM
  81559. >Overlapping</RBW-PARABODY
  81560. ></LB.LIST.BULLET
  81561. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00739.tif" origseq="20" origtype="I" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81562. ></FA2.FIGURE.ANCHOR.2
  81563. ><B.BODY>Only the standard generalization is supported by NewEra. If an overlapping generalization is encountered by the ObjectTeam code generator, a warning is issued and no code is generated.</B.BODY
  81564. ></LABEL
  81565. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81566. >Discriminator</L.LABEL
  81567. ><B.BODY>The discriminator that you can specify for a generalization in a CD is not used in the NewEra code generation.</B.BODY
  81568. ></LABEL
  81569. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81570. ><RBW-ANCHOR ID="40575"></RBW-ANCHOR
  81571. >Generalization Properties</L.LABEL
  81572. ><B.BODY>There are no generalization properties that affect non&truehy;persistent code generation.</B.BODY
  81573. ></LABEL
  81574. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81575. ><RBW-ANCHOR ID="22032"></RBW-ANCHOR
  81576. >Examples: Generalizations and NewEra</L.LABEL
  81577. ><B.BODY>The following examples show a generalization with standard inheritance: one super class and one sub class.</B.BODY
  81578. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00740.unk" origfile="pics/inhex1.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81579. ></FA.FIGURE.ANCHOR
  81580. ><B.BODY>The generated header files look like this:</B.BODY
  81581. ><B.BODY><CX5FX5FFILE.NAME>InhEx1.4gh</CX5FX5FFILE.NAME
  81582. >:</B.BODY
  81583. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81584. ><EM.EXAMPLE.MONO>CLASS InhEx1</EM.EXAMPLE.MONO
  81585. ><EM.EXAMPLE.MONO>      FUNCTION InhEx1()</EM.EXAMPLE.MONO
  81586. ><EM.EXAMPLE.MONO>      FUNCTION !destroy()</EM.EXAMPLE.MONO
  81587. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  81588. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  81589. ><EM.EXAMPLE.MONO>END CLASS</EM.EXAMPLE.MONO
  81590. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  81591. ><EM.EXAMPLE.MONO><CX5FX5FFILE.NAME>InhSubEx1.4gh</CX5FX5FFILE.NAME
  81592. >:</EM.EXAMPLE.MONO
  81593. ><EM.EXAMPLE.MONO>INCLUDE "InhEx1.4gh"</EM.EXAMPLE.MONO
  81594. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  81595. ><EM.EXAMPLE.MONO>CLASS InhSubEx1 DERIVED FROM InhEx1</EM.EXAMPLE.MONO
  81596. ><EM.EXAMPLE.MONO>      FUNCTION InhSubEx1()</EM.EXAMPLE.MONO
  81597. ><EM.EXAMPLE.MONO>      FUNCTION !destroy()</EM.EXAMPLE.MONO
  81598. ><EM.EXAMPLE.MONO>END CLASS</EM.EXAMPLE.MONO
  81599. ></LABEL
  81600. ></SECTION
  81601. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="association" TERM2="in non-persistent code generation"></RBW-IDXTERM
  81602. ><RBW-ANCHOR ID="34119"></RBW-ANCHOR
  81603. >Associations</S.SECTION.HEAD
  81604. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81605. >Introduction</L.LABEL
  81606. ><B.BODY>If a class is involved in an association with another class, extra data members and member functions are generated if:</B.BODY
  81607. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81608. ></RBW-AUTOGEN
  81609. ></RBW-MARKER
  81610. ><RBW-PARABODY>There is a role name specified at the far end of the association joined to the class or there is a qualifier specified at the near end</RBW-PARABODY
  81611. ></LB.LIST.BULLET
  81612. ><B.BODY>The following two types of features are generated for an association:</B.BODY
  81613. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81614. ></RBW-AUTOGEN
  81615. ></RBW-MARKER
  81616. ><RBW-PARABODY>Data <RBW-IDXTERM TERM1="member data"></RBW-IDXTERM
  81617. ><RBW-IDXTERM TERM1="class feature" TERM2="member data"></RBW-IDXTERM
  81618. ><RBW-IDXTERM TERM1="class" TERM2="feature"></RBW-IDXTERM
  81619. >member</RBW-PARABODY
  81620. ></LB.LIST.BULLET
  81621. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81622. ></RBW-AUTOGEN
  81623. ></RBW-MARKER
  81624. ><RBW-PARABODY><RBW-IDXTERM TERM1="member function" TERM2="association"></RBW-IDXTERM
  81625. >Member functions</RBW-PARABODY
  81626. ></LB.LIST.BULLET
  81627. ></LABEL
  81628. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81629. >Data members / Association attributes</L.LABEL
  81630. ><B.BODY>An association between two classes in a CD results in the generation of data members in one or both classes. These data members are referred to as <CX5FX5FTERM>association attributes</CX5FX5FTERM
  81631. >. They always have public access in order to keep the association up&truehy;to&truehy;date.</B.BODY
  81632. ><B.BODY>An association attribute implements one side of the association. Its type depends on:</B.BODY
  81633. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81634. ></RBW-AUTOGEN
  81635. ></RBW-MARKER
  81636. ><RBW-PARABODY>the kind of association (normal, qualified)</RBW-PARABODY
  81637. ></LB.LIST.BULLET
  81638. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81639. ></RBW-AUTOGEN
  81640. ></RBW-MARKER
  81641. ><RBW-PARABODY>the multiplicity at the side of the other class (one, many, optional)</RBW-PARABODY
  81642. ></LB.LIST.BULLET
  81643. ><B.BODY>The table below lists the name and the type of the association attribute generated for these associations in the header file:</B.BODY
  81644. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="142p"><COLSPEC COLNAME="2" COLWIDTH="150p"><COLSPEC COLNAME="3" COLWIDTH="154p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  81645. ></ENTRY
  81646. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Attribute</CELLHEADING
  81647. ></ENTRY
  81648. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>NewEra Construction</CELLHEADING
  81649. ></ENTRY
  81650. ></RBW-ROW
  81651. ></THEAD
  81652. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>one</CELLBODY
  81653. ></ENTRY
  81654. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>roleNm</CX5FX5FTERM
  81655. >Ref <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  81656. ></CELLBODY
  81657. ></ENTRY
  81658. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>reference</CELLBODY
  81659. ></ENTRY
  81660. ></RBW-ROW
  81661. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  81662. ></ENTRY
  81663. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>roleNm</CX5FX5FTERM
  81664. >Set RefSet</CELLBODY
  81665. ></ENTRY
  81666. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>reference set</CELLBODY
  81667. ></ENTRY
  81668. ></RBW-ROW
  81669. ></TBODY
  81670. ></TGROUP
  81671. ></RBW-TABLE
  81672. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  81673. ></RBW-AUTOGEN
  81674. >For qualified associations, different association attributes are generated. See <RBW-XREF REFID="33064" TYPE="XREF-TEXTCOPY">Qualified Associations</RBW-XREF
  81675. > for details.</N.NOTE
  81676. ></LABEL
  81677. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81678. >Member functions</L.LABEL
  81679. ><B.BODY>To manipulate the association attributes, the following member functions are generated in the class containing the association attribute.</B.BODY
  81680. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="93p"><COLSPEC COLNAME="2" COLWIDTH="355p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  81681. ></ENTRY
  81682. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Function (Name, Parameters And Return Type)</CELLHEADING
  81683. ></ENTRY
  81684. ></RBW-ROW
  81685. ></THEAD
  81686. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>one</CELLBODY
  81687. ></ENTRY
  81688. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>get<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81689. >() RETURNING <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  81690. > </CELLBODY
  81691. ><CELLBODY>set<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81692. >(new<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81693. > <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  81694. >)</CELLBODY
  81695. ><CELLBODY>remove<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81696. ></CELLBODY
  81697. ></ENTRY
  81698. ></RBW-ROW
  81699. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  81700. ></ENTRY
  81701. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>get<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81702. >Set() RETURNING RefSet</CELLBODY
  81703. ><CELLBODY>add<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81704. >(new<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81705. > <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  81706. >)</CELLBODY
  81707. ><CELLBODY>remove<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81708. >(old<CX5FX5FTERM>roleNm</CX5FX5FTERM
  81709. > RETURNING <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  81710. >)</CELLBODY
  81711. ></ENTRY
  81712. ></RBW-ROW
  81713. ></TBODY
  81714. ></TGROUP
  81715. ></RBW-TABLE
  81716. ><B.BODY>The <CX5FX5FPROCEDURE.NAME>get</CX5FX5FPROCEDURE.NAME
  81717. >, <CX5FX5FPROCEDURE.NAME>set</CX5FX5FPROCEDURE.NAME
  81718. > and <CX5FX5FPROCEDURE.NAME>remove</CX5FX5FPROCEDURE.NAME
  81719. > functions are derived from the role name at the other side. Bear in mind that, in case of a mandatory association at the side of the other class, the <CX5FX5FPROCEDURE.NAME>remove</CX5FX5FPROCEDURE.NAME
  81720. > function is not generated.</B.BODY
  81721. ></LABEL
  81722. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81723. >In this section</L.LABEL
  81724. ><B.BODY>This section describes associations, association properties and it gives examples of how different types of associations are generated into NewEra code.</B.BODY
  81725. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  81726. ></ENTRY
  81727. ></RBW-ROW
  81728. ></THEAD
  81729. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40839" TYPE="XREF-TEXTCOPY">Association Properties&rbwtab;3–38</RBW-XREF
  81730. ></SB.SECTION.BLOCK.TABLE
  81731. ></ENTRY
  81732. ></RBW-ROW
  81733. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17049" TYPE="XREF-TEXTCOPY">Association with Link Objects&rbwtab;3–39</RBW-XREF
  81734. ></SB.SECTION.BLOCK.TABLE
  81735. ></ENTRY
  81736. ></RBW-ROW
  81737. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38082" TYPE="XREF-TEXTCOPY">Examples: Associations and NewEra&rbwtab;3–40</RBW-XREF
  81738. ></SB.SECTION.BLOCK.TABLE
  81739. ></ENTRY
  81740. ></RBW-ROW
  81741. ></TBODY
  81742. ></TGROUP
  81743. ></RBW-TABLE
  81744. ></LABEL
  81745. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="association" TERM2="properties"></RBW-IDXTERM
  81746. ><RBW-ANCHOR ID="40839"></RBW-ANCHOR
  81747. >Association Properties</SS.SUBSEC.HEAD
  81748. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81749. >Introduction</L.LABEL
  81750. ><B.BODY>This section describes properties that can be specified for role starts and role ends in associations to influence the (non&truehy;persistent) code generation. For instructions on how to specify properties, see <RBW-XREF REFID="10851" TYPE="XREF-TEXTCOPY">How to specify properties</RBW-XREF
  81751. >.</B.BODY
  81752. ></LABEL
  81753. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81754. >Which association properties can you specify</L.LABEL
  81755. ><B.BODY>The following association property affects non&truehy;persistent code generation:</B.BODY
  81756. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81757. ></RBW-AUTOGEN
  81758. ></RBW-MARKER
  81759. ><RBW-PARABODY><RBW-XREF REFID="20993" TYPE="XREF-TEXTCOPY">Association Access</RBW-XREF
  81760. > </RBW-PARABODY
  81761. ></LB.LIST.BULLET
  81762. ><B.BODY>This property is briefly discussed here. The property Abbreviation is ignored by the NewEra code generator.</B.BODY
  81763. ></LABEL
  81764. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81765. ><RBW-IDXTERM TERM1="association access" TERM2="property"></RBW-IDXTERM
  81766. ><RBW-IDXTERM TERM1="accessibility" TERM2="association"></RBW-IDXTERM
  81767. ><RBW-ANCHOR ID="20993"></RBW-ANCHOR
  81768. >Association Access</L.LABEL
  81769. ><B.BODY>Use this property to determine the access control qualification of the association. You can set it for role start and role end elements.</B.BODY
  81770. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00741.unk" origfile="pics/assocacc.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81771. ></FA.FIGURE.ANCHOR
  81772. ><B.BODY>You can select the following access values for association roles: </B.BODY
  81773. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="219p"><COLSPEC COLNAME="2" COLWIDTH="229p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Get (=Read)</CELLHEADING
  81774. ></ENTRY
  81775. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set(=Write)</CELLHEADING
  81776. ></ENTRY
  81777. ></RBW-ROW
  81778. ></THEAD
  81779. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public (default)</CELLBODY
  81780. ><CELLBODY>Protected</CELLBODY
  81781. ><CELLBODY>Private</CELLBODY
  81782. ><CELLBODY>None</CELLBODY
  81783. ></ENTRY
  81784. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public (default)</CELLBODY
  81785. ><CELLBODY>Protected </CELLBODY
  81786. ><CELLBODY>Private</CELLBODY
  81787. ><CELLBODY>None</CELLBODY
  81788. ></ENTRY
  81789. ></RBW-ROW
  81790. ></TBODY
  81791. ></TGROUP
  81792. ></RBW-TABLE
  81793. ><B.BODY>The access value determines the access control qualification of the generated access function: PUBLIC, PROTECTED or PRIVATE.</B.BODY
  81794. ><B.BODY><CX5FX5FOBJECT.NAME>None</CX5FX5FOBJECT.NAME
  81795. > indicates that no access function(s) will be generated.</B.BODY
  81796. ></LABEL
  81797. ></SUBSECTION
  81798. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="link attribute" TERM2="in non-persistent code generation"></RBW-IDXTERM
  81799. ><RBW-ANCHOR ID="17049"></RBW-ANCHOR
  81800. >Association with <RBW-IDXTERM TERM1="data attribute" TERM2="link"></RBW-IDXTERM
  81801. ><RBW-IDXTERM TERM1="link attribute"></RBW-IDXTERM
  81802. >Link Objects</SS.SUBSEC.HEAD
  81803. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81804. >Which link objects are available</L.LABEL
  81805. ><B.BODY>Two link objects can be attached to a (qualified) association:</B.BODY
  81806. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81807. ></RBW-AUTOGEN
  81808. ></RBW-MARKER
  81809. ><RBW-PARABODY>link attribute box</RBW-PARABODY
  81810. ></LB.LIST.BULLET
  81811. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81812. ></RBW-AUTOGEN
  81813. ></RBW-MARKER
  81814. ><RBW-PARABODY>class</RBW-PARABODY
  81815. ></LB.LIST.BULLET
  81816. ></LABEL
  81817. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81818. >Implications for code generation</L.LABEL
  81819. ><B.BODY>The NewEra code generator interprets an association between two classes with a link object as two associated classes both having an association with a third class representing the link object. The normal rules for associations apply to these (qualified) associations.</B.BODY
  81820. ><B.BODY>Data members and <RBW-IDXTERM TERM1="member function"></RBW-IDXTERM
  81821. ><RBW-IDXTERM TERM1="class feature" TERM2="member function"></RBW-IDXTERM
  81822. >member functions are generated for each of the two <RBW-IDXTERM TERM1="class" TERM2="association attribute"></RBW-IDXTERM
  81823. >classes if there is a role name specified at the other end of the association. Association attributes are always generated for the third class, i.e. two get functions, one for each class.</B.BODY
  81824. ></LABEL
  81825. ></SUBSECTION
  81826. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="38082"></RBW-ANCHOR
  81827. >Examples: Associations and NewEra</SS.SUBSEC.HEAD
  81828. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81829. >Introduction</L.LABEL
  81830. ><B.BODY>On the following pages you can find three examples of associations with different multiplicity and the 4gh code that is generated. The multiplicities are:</B.BODY
  81831. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81832. ></RBW-AUTOGEN
  81833. ></RBW-MARKER
  81834. ><RBW-PARABODY>One (optional)</RBW-PARABODY
  81835. ></LB.LIST.BULLET
  81836. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81837. ></RBW-AUTOGEN
  81838. ></RBW-MARKER
  81839. ><RBW-PARABODY>Many (optional)</RBW-PARABODY
  81840. ></LB.LIST.BULLET
  81841. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  81842. ></RBW-AUTOGEN
  81843. ></RBW-MARKER
  81844. ><RBW-PARABODY>Many (mandatory)</RBW-PARABODY
  81845. ></LB.LIST.BULLET
  81846. ><B.BODY>An example of a association with a link object can be found here as well.</B.BODY
  81847. ></LABEL
  81848. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81849. >Multiplicity: one (optional)</L.LABEL
  81850. ><B.BODY>The following example CD contains an association with a multiplicity of one (optional).</B.BODY
  81851. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00742.unk" origfile="pics/asscab.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81852. ></FA.FIGURE.ANCHOR
  81853. ><B.BODY>The file <CX5FX5FFILE.NAME>classA.4gh</CX5FX5FFILE.NAME
  81854. > contains the required data members and member functions to handle this qualified association:</B.BODY
  81855. ><B.BODY><CX5FX5FFILE.NAME>classA.4gh</CX5FX5FFILE.NAME
  81856. >:</B.BODY
  81857. ><EWM.EXAMPLEW.MONO>FORWARD classB</EWM.EXAMPLEW.MONO
  81858. ><EWM.EXAMPLEW.MONO>CLASS classA</EWM.EXAMPLEW.MONO
  81859. ><EWM.EXAMPLEW.MONO>      FUNCTION classA()</EWM.EXAMPLEW.MONO
  81860. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  81861. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81862. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getAttA() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  81863. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setAttA(newAttA INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  81864. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setRoleB(newRoleB classB) RETURNING VOID</EWM.EXAMPLEW.MONO
  81865. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION removeRoleB() RETURNING VOID</EWM.EXAMPLEW.MONO
  81866. ><EWM.EXAMPLEW.MONO>      PUBLIC VARIABLE roleBRef classB</EWM.EXAMPLEW.MONO
  81867. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81868. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81869. ><EWM.EXAMPLEW.MONO>      PRIVATE FUNCTION getRoleB() RETURNING classB</EWM.EXAMPLEW.MONO
  81870. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE attA INTEGER </EWM.EXAMPLEW.MONO
  81871. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  81872. ></LABEL
  81873. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81874. >Multiplicity: many (optional)</L.LABEL
  81875. ><B.BODY>The following example CD contains an association with a multiplicity of many (optional).</B.BODY
  81876. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00743.unk" origfile="pics/assccd.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81877. ></FA.FIGURE.ANCHOR
  81878. ><B.BODY>The file <CX5FX5FFILE.NAME>classC.4gh</CX5FX5FFILE.NAME
  81879. > contains the required data members and member functions to handle this qualified association:</B.BODY
  81880. ><B.BODY><CX5FX5FFILE.NAME>classC.4gh</CX5FX5FFILE.NAME
  81881. >:</B.BODY
  81882. ><EWM.EXAMPLEW.MONO>INCLUDE "RefSet.4gh"</EWM.EXAMPLEW.MONO
  81883. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81884. ><EWM.EXAMPLEW.MONO>FORWARD classD</EWM.EXAMPLEW.MONO
  81885. ><EWM.EXAMPLEW.MONO>CLASS classC</EWM.EXAMPLEW.MONO
  81886. ><EWM.EXAMPLEW.MONO>      FUNCTION classC()</EWM.EXAMPLEW.MONO
  81887. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  81888. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81889. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getAttC() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  81890. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setAttC(newAttC INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  81891. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getRoleDSet() RETURNING RefSet</EWM.EXAMPLEW.MONO
  81892. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION addRoleD(newRoleD classD) RETURNING VOID</EWM.EXAMPLEW.MONO
  81893. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION removeRoleD(oldRoleD classD) RETURNING VOID</EWM.EXAMPLEW.MONO
  81894. ><EWM.EXAMPLEW.MONO>      PUBLIC VARIABLE roleDSet RefSet</EWM.EXAMPLEW.MONO
  81895. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81896. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81897. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE attC INTEGER </EWM.EXAMPLEW.MONO
  81898. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  81899. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81900. >For more information</SL.SUBLABEL
  81901. ><B.BODY>For an example of how you can use the generated code for an association with a multiplicity of many, refer to <RBW-XREF REFID="22344" TYPE="XREF-TEXTCOPY">Using the Code Generated from an Association</RBW-XREF
  81902. ></B.BODY
  81903. ></LABEL
  81904. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81905. >Multiplicity: many (mandatory)</L.LABEL
  81906. ><B.BODY>The following example CD contains an association with a multiplicity of many (mandatory).</B.BODY
  81907. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00744.unk" origfile="pics/asscef.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81908. ></FA.FIGURE.ANCHOR
  81909. ><B.BODY>The file <CX5FX5FFILE.NAME>classE.4gl</CX5FX5FFILE.NAME
  81910. > contains the required data members and member functions to handle this qualified association:</B.BODY
  81911. ><B.BODY><CX5FX5FFILE.NAME>classE.4gl</CX5FX5FFILE.NAME
  81912. >:</B.BODY
  81913. ><EWM.EXAMPLEW.MONO>INCLUDE "RefSet.4gh"</EWM.EXAMPLEW.MONO
  81914. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81915. ><EWM.EXAMPLEW.MONO>FORWARD classF</EWM.EXAMPLEW.MONO
  81916. ><EWM.EXAMPLEW.MONO>CLASS classE</EWM.EXAMPLEW.MONO
  81917. ><EWM.EXAMPLEW.MONO>      FUNCTION classE()</EWM.EXAMPLEW.MONO
  81918. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  81919. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81920. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getAttE() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  81921. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setAttE(newAttE INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  81922. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getRoleFSet() RETURNING RefSet</EWM.EXAMPLEW.MONO
  81923. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION addRoleF(newRoleF classF) RETURNING VOID</EWM.EXAMPLEW.MONO
  81924. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION removeRoleF(oldRoleF classF) RETURNING VOID</EWM.EXAMPLEW.MONO
  81925. ><EWM.EXAMPLEW.MONO>      PUBLIC VARIABLE roleFSet RefSet</EWM.EXAMPLEW.MONO
  81926. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81927. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81928. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE attE INTEGER </EWM.EXAMPLEW.MONO
  81929. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  81930. ><EW.EXAMPLEW></EW.EXAMPLEW
  81931. ></LABEL
  81932. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  81933. >Link object</L.LABEL
  81934. ><B.BODY>The following association contains a link attribute box which is attached to the association between two classes. Three classes are generated for this association:</B.BODY
  81935. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00745.unk" origfile="pics/assclnk.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  81936. ></FA.FIGURE.ANCHOR
  81937. ><B.BODY>The multiplicity is as follows for the three classes:</B.BODY
  81938. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="223p"><COLSPEC COLNAME="2" COLWIDTH="223p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Class</CELLHEADING
  81939. ></ENTRY
  81940. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  81941. ></ENTRY
  81942. ></RBW-ROW
  81943. ></THEAD
  81944. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Customer</CELLBODY
  81945. ></ENTRY
  81946. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional (zero or one)</CELLBODY
  81947. ></ENTRY
  81948. ></RBW-ROW
  81949. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>purchase</CELLBODY
  81950. ></ENTRY
  81951. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>mandatory (one)</CELLBODY
  81952. ></ENTRY
  81953. ></RBW-ROW
  81954. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Book</CELLBODY
  81955. ></ENTRY
  81956. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>optional (many)</CELLBODY
  81957. ></ENTRY
  81958. ></RBW-ROW
  81959. ></TBODY
  81960. ></TGROUP
  81961. ></RBW-TABLE
  81962. ><B.BODY><CX5FX5FFILE.NAME>Customer.4gh</CX5FX5FFILE.NAME
  81963. >:</B.BODY
  81964. ><EWM.EXAMPLEW.MONO>INCLUDE "RefSet.4gh"</EWM.EXAMPLEW.MONO
  81965. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81966. ><EWM.EXAMPLEW.MONO>FORWARD purchase</EWM.EXAMPLEW.MONO
  81967. ><EWM.EXAMPLEW.MONO>CLASS Customer</EWM.EXAMPLEW.MONO
  81968. ><EWM.EXAMPLEW.MONO>      FUNCTION Customer()</EWM.EXAMPLEW.MONO
  81969. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  81970. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81971. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getPurchaseOfBookSet() RETURNING RefSet</EWM.EXAMPLEW.MONO
  81972. ><EWM.EXAMPLEW.MONO>      PUBLIC VARIABLE purchaseOfBookSet RefSet</EWM.EXAMPLEW.MONO
  81973. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81974. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81975. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  81976. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81977. ><B.BODY><CX5FX5FFILE.NAME>Book.4gh</CX5FX5FFILE.NAME
  81978. >:</B.BODY
  81979. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  81980. ><EM.EXAMPLE.MONO>CLASS Book</EM.EXAMPLE.MONO
  81981. ><EM.EXAMPLE.MONO>      FUNCTION Book()</EM.EXAMPLE.MONO
  81982. ><EM.EXAMPLE.MONO>      FUNCTION !destroy()</EM.EXAMPLE.MONO
  81983. ><EM.EXAMPLE.MONO>      ...</EM.EXAMPLE.MONO
  81984. ><EM.EXAMPLE.MONO>END CLASS</EM.EXAMPLE.MONO
  81985. ><B.BODY></B.BODY
  81986. ><B.BODY><CX5FX5FFILE.NAME>purchase.4gh</CX5FX5FFILE.NAME
  81987. >:</B.BODY
  81988. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  81989. ><EWM.EXAMPLEW.MONO>FORWARD Book</EWM.EXAMPLEW.MONO
  81990. ><EWM.EXAMPLEW.MONO>CLASS purchase</EWM.EXAMPLEW.MONO
  81991. ><EWM.EXAMPLEW.MONO>      FUNCTION purchase(book Book)</EWM.EXAMPLEW.MONO
  81992. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  81993. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81994. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getThisDate() RETURNING DATE</EWM.EXAMPLEW.MONO
  81995. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setThisDate(newThisDate DATE) RETURNING VOID</EWM.EXAMPLEW.MONO
  81996. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getBook() RETURNING Book</EWM.EXAMPLEW.MONO
  81997. ><EWM.EXAMPLEW.MONO>      PUBLIC VARIABLE bookRef Book</EWM.EXAMPLEW.MONO
  81998. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  81999. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82000. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE thisDate DATE </EWM.EXAMPLEW.MONO
  82001. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  82002. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  82003. ></LABEL
  82004. ></SUBSECTION
  82005. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="association" TERM2="multiplicity of "many" at one side"></RBW-IDXTERM
  82006. ><RBW-IDXTERM TERM1="association" TERM2="and libwmt4omt"></RBW-IDXTERM
  82007. ><RBW-IDXTERM TERM1="libwmt4omt" TERM2="generation of associations"></RBW-IDXTERM
  82008. ><RBW-ANCHOR ID="22344"></RBW-ANCHOR
  82009. >Using the Code Generated from an Association</SS.SUBSEC.HEAD
  82010. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82011. >Introduction</L.LABEL
  82012. ><B.BODY>This section contains an example of an association with a multiplicity of <CX5FX5FOBJECT.NAME>many</CX5FX5FOBJECT.NAME
  82013. >. It gives you some examples of the NewEra code you could write that uses the generated non&truehy;persistent NewEra code for this association. The following actions are involved:</B.BODY
  82014. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82015. ></RBW-AUTOGEN
  82016. ></RBW-MARKER
  82017. ><RBW-PARABODY>add class occurences to a set</RBW-PARABODY
  82018. ></LB.LIST.BULLET
  82019. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82020. ></RBW-AUTOGEN
  82021. ></RBW-MARKER
  82022. ><RBW-PARABODY>remove class occurences from a set</RBW-PARABODY
  82023. ></LB.LIST.BULLET
  82024. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82025. ></RBW-AUTOGEN
  82026. ></RBW-MARKER
  82027. ><RBW-PARABODY>retrieve class occurences</RBW-PARABODY
  82028. ></LB.LIST.BULLET
  82029. ></LABEL
  82030. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82031. >Example CD</L.LABEL
  82032. ><BI.BODY.INTRO>The following picture shows an example of an association with a multiplicity of many (zero or more) at one side, together with a sample of the generated header file. The class at the side of the many association end acts as detail (<CX5FX5FINPUT>classB</CX5FX5FINPUT
  82033. >), the class at the other side as master (<CX5FX5FINPUT>classA</CX5FX5FINPUT
  82034. >).</BI.BODY.INTRO
  82035. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00746.unk" origfile="pics/asscmany.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  82036. ></FA.FIGURE.ANCHOR
  82037. ><B.BODY>The generated header file <CX5FX5FFILE.NAME>classA.4gh</CX5FX5FFILE.NAME
  82038. > looks like this:</B.BODY
  82039. ><EWM.EXAMPLEW.MONO>INCLUDE "RefSet.4gh"</EWM.EXAMPLEW.MONO
  82040. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82041. ><EWM.EXAMPLEW.MONO>FORWARD classB</EWM.EXAMPLEW.MONO
  82042. ><EWM.EXAMPLEW.MONO>CLASS classA</EWM.EXAMPLEW.MONO
  82043. ><EWM.EXAMPLEW.MONO>      FUNCTION classA()</EWM.EXAMPLEW.MONO
  82044. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  82045. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82046. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getAttr() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  82047. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setAttr(newAttr INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  82048. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION meth() RETURNING VOID</EWM.EXAMPLEW.MONO
  82049. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getDetailSet() RETURNING RefSet</EWM.EXAMPLEW.MONO
  82050. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION addDetail(newDetail classB) RETURNING VOID</EWM.EXAMPLEW.MONO
  82051. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION removeDetail(oldDetail classB) RETURNING VOID</EWM.EXAMPLEW.MONO
  82052. ><EWM.EXAMPLEW.MONO>      PUBLIC VARIABLE detailSet RefSet</EWM.EXAMPLEW.MONO
  82053. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82054. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82055. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE attr INTEGER </EWM.EXAMPLEW.MONO
  82056. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  82057. ></LABEL
  82058. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82059. >Generated method</L.LABEL
  82060. ><B.BODY>For all associations with a multiplicity of many at one side, the following method is generated:</B.BODY
  82061. ><EM.EXAMPLE.MONO><RBW-IDXTERM TERM1="getSet"></RBW-IDXTERM
  82062. >get<Rolename>Set</EM.EXAMPLE.MONO
  82063. ><B.BODY>In our example, the name of this <CX5FX5FPROCEDURE.NAME>get</CX5FX5FPROCEDURE.NAME
  82064. > function is: <CX5FX5FINPUT>getDetailSet</CX5FX5FINPUT
  82065. >. </B.BODY
  82066. ><B.BODY>The type of this member function getDetailSet is <CX5FX5FOBJECT.NAME><RBW-IDXTERM TERM1="PtrSet"></RBW-IDXTERM
  82067. >RefSet</CX5FX5FOBJECT.NAME
  82068. >. <CX5FX5FOBJECT.NAME>RefSet</CX5FX5FOBJECT.NAME
  82069. > is one of the storage structure classes that are included in the class library <CX5FX5FOBJECT.NAME><RBW-IDXTERM TERM1="libwmt4omt"></RBW-IDXTERM
  82070. ><RBW-IDXTERM TERM1="class library" TERM2="used to generate associations"></RBW-IDXTERM
  82071. >lw4omtne</CX5FX5FOBJECT.NAME
  82072. > (see <RBW-XREF REFID="18476" TYPE="XREF-TEXTCOPY">Class Library lw4omtne</RBW-XREF
  82073. >). It is used for Reference Sets. Typical member functions of the class <CX5FX5FOBJECT.NAME>RefSet</CX5FX5FOBJECT.NAME
  82074. > are first() and next(). These functions return the references to the detail class occurrences that participate in the association.</B.BODY
  82075. ><B.BODY>Before you are able to retrieve (<CX5FX5FPROCEDURE.NAME>get</CX5FX5FPROCEDURE.NAME
  82076. >) class occurrences from a RefSet class, these occurrences first have to be added to the association. The master class contains member functions which allow adding (and removing) detail class occurrences. Bear in mind that the class <CX5FX5FINPUT>RefSet</CX5FX5FINPUT
  82077. > only stores the <CX5FX5FTERM>references</CX5FX5FTERM
  82078. > to the class. </B.BODY
  82079. ></LABEL
  82080. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82081. >Example code</L.LABEL
  82082. ><B.BODY>In the following example main.4gl file, constructions typical for the following actions are included:</B.BODY
  82083. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82084. ></RBW-AUTOGEN
  82085. ></RBW-MARKER
  82086. ><RBW-PARABODY><RBW-IDXTERM TERM1="class occurrence (NewEra)" TERM2="adding - to reference set"></RBW-IDXTERM
  82087. >adding class occurences to a reference set</RBW-PARABODY
  82088. ></LB.LIST.BULLET
  82089. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82090. ></RBW-AUTOGEN
  82091. ></RBW-MARKER
  82092. ><RBW-PARABODY><RBW-IDXTERM TERM1="class occurrence (NewEra)" TERM2="removing - from reference set"></RBW-IDXTERM
  82093. >removing class occurences from a reference set</RBW-PARABODY
  82094. ></LB.LIST.BULLET
  82095. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82096. ></RBW-AUTOGEN
  82097. ></RBW-MARKER
  82098. ><RBW-PARABODY><RBW-IDXTERM TERM1="class occurrence (NewEra)" TERM2="retrieving - from reference set"></RBW-IDXTERM
  82099. >retrieving class occurences from a reference set</RBW-PARABODY
  82100. ></LB.LIST.BULLET
  82101. ><EWM.EXAMPLEW.MONO>INCLUDE "ClassA.4gh"</EWM.EXAMPLEW.MONO
  82102. ><EWM.EXAMPLEW.MONO>INCLUDE "ClassB.4gh"</EWM.EXAMPLEW.MONO
  82103. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82104. ><EWM.EXAMPLEW.MONO>MAIN</EWM.EXAMPLEW.MONO
  82105. ><EWM.EXAMPLEW.MONO>      VARIABLE a ClassA = NEW ClassA() &truehy;&truehy; Make new occurrence of classA</EWM.EXAMPLEW.MONO
  82106. ><EWM.EXAMPLEW.MONO>      VARIABLE b1 ClassB = NEW ClassB() &truehy;&truehy; Make new occurrence of classB</EWM.EXAMPLEW.MONO
  82107. ><EWM.EXAMPLEW.MONO>      VARIABLE b2 ClassB = NEW ClassB() &truehy;&truehy; Make new occurrence of classB</EWM.EXAMPLEW.MONO
  82108. ><EWM.EXAMPLEW.MONO>      VARIABLE bb1, bb2 ClassB &truehy;&truehy; Declare two ClassB references</EWM.EXAMPLEW.MONO
  82109. ><EWM.EXAMPLEW.MONO>      VARIABLE details RefSet &truehy;&truehy; Declare a RefSet reference</EWM.EXAMPLEW.MONO
  82110. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82111. ><EWM.EXAMPLEW.MONO>      CALL b1.setAttr(1) &truehy;&truehy; Set attr of b1</EWM.EXAMPLEW.MONO
  82112. ><EWM.EXAMPLEW.MONO>      CALL b2.setAttr(2) &truehy;&truehy; Set attr of b2</EWM.EXAMPLEW.MONO
  82113. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82114. ><EWM.EXAMPLEW.MONO>      CALL a.addDetail(b1) &truehy;&truehy; Add b1 to a</EWM.EXAMPLEW.MONO
  82115. ><EWM.EXAMPLEW.MONO>      CALL a.addDetail(b2) &truehy;&truehy; Add b2 to a</EWM.EXAMPLEW.MONO
  82116. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82117. ><EWM.EXAMPLEW.MONO>      LET details = a.getDetailSet()</EWM.EXAMPLEW.MONO
  82118. ><EWM.EXAMPLEW.MONO>      DISPLAY "Detail set size: ", details.size()</EWM.EXAMPLEW.MONO
  82119. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82120. ><EWM.EXAMPLEW.MONO>      LET bb1 = details.first() CAST ClassB</EWM.EXAMPLEW.MONO
  82121. ><EWM.EXAMPLEW.MONO>      LET bb2 = details.next() CAST ClassB</EWM.EXAMPLEW.MONO
  82122. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82123. ><EWM.EXAMPLEW.MONO>      DISPLAY "detail attribute values: b1.attr == ", bb1.getAttr(),</EWM.EXAMPLEW.MONO
  82124. ><EWM.EXAMPLEW.MONO>            " b2.attr == ", bb2.getAttr()</EWM.EXAMPLEW.MONO
  82125. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82126. ><EWM.EXAMPLEW.MONO>      CALL a.removeDetail(b1) &truehy;&truehy; Remove b1 from a again</EWM.EXAMPLEW.MONO
  82127. ><EWM.EXAMPLEW.MONO>      CALL a.removeDetail(b2) &truehy;&truehy; Remove b2 from a again</EWM.EXAMPLEW.MONO
  82128. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82129. ><EWM.EXAMPLEW.MONO>      DISPLAY "detail set should be empty now; size is: ", details.size()</EWM.EXAMPLEW.MONO
  82130. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82131. ><EWM.EXAMPLEW.MONO>      RETURN</EWM.EXAMPLEW.MONO
  82132. ><EWM.EXAMPLEW.MONO>END MAIN</EWM.EXAMPLEW.MONO
  82133. ><B.BODY></B.BODY
  82134. ></LABEL
  82135. ></SUBSECTION
  82136. ></SECTION
  82137. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="33064"></RBW-ANCHOR
  82138. >Qualified Associations</S.SECTION.HEAD
  82139. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82140. ><RBW-ANCHOR ID="28529"></RBW-ANCHOR
  82141. >Data members / Qualified Association attributes</L.LABEL
  82142. ><B.BODY>A qualified association between two classes in a CD results in the generation of data members and member functions in one or both classes. The data members are referred to as qualified association attributes. These association attributes always have public access in order to keep the qualified association up&truehy;to&truehy;date.</B.BODY
  82143. ><B.BODY>A qualified association attribute is generated if the following conditions are met:</B.BODY
  82144. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82145. ></RBW-AUTOGEN
  82146. ></RBW-MARKER
  82147. ><RBW-PARABODY>the class is associated with another class by a qualified association</RBW-PARABODY
  82148. ></LB.LIST.BULLET
  82149. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82150. ></RBW-AUTOGEN
  82151. ></RBW-MARKER
  82152. ><RBW-PARABODY>a role name is specified at the side of the other class</RBW-PARABODY
  82153. ></LB.LIST.BULLET
  82154. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82155. ></RBW-AUTOGEN
  82156. ></RBW-MARKER
  82157. ><RBW-PARABODY>the qualifier has a valid data type</RBW-PARABODY
  82158. ></LB.LIST.BULLET
  82159. ><B.BODY>A qualified association attribute implements one side of the qualified association. Its type depends on:</B.BODY
  82160. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82161. ></RBW-AUTOGEN
  82162. ></RBW-MARKER
  82163. ><RBW-PARABODY>the multiplicity at the side of the other class (one, many, optional)</RBW-PARABODY
  82164. ></LB.LIST.BULLET
  82165. ><B.BODY>The table below lists the name and the type of the association attribute generated for these qualified associations in the header file:</B.BODY
  82166. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="141p"><COLSPEC COLNAME="2" COLWIDTH="307p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  82167. ></ENTRY
  82168. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Attribute</CELLHEADING
  82169. ></ENTRY
  82170. ></RBW-ROW
  82171. ></THEAD
  82172. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>one</CELLBODY
  82173. ></ENTRY
  82174. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>roleNm</CX5FX5FTERM
  82175. >Dict RefDict</CELLBODY
  82176. ></ENTRY
  82177. ></RBW-ROW
  82178. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  82179. ></ENTRY
  82180. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FTERM>roleNm</CX5FX5FTERM
  82181. >RSDict RSetDict</CELLBODY
  82182. ></ENTRY
  82183. ></RBW-ROW
  82184. ></TBODY
  82185. ></TGROUP
  82186. ></RBW-TABLE
  82187. ></LABEL
  82188. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82189. >Member functions</L.LABEL
  82190. ><B.BODY>To manipulate the association attributes, the following member functions are generated in the class containing the qualified association attribute:</B.BODY
  82191. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="105p"><COLSPEC COLNAME="2" COLWIDTH="343p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Multiplicity</CELLHEADING
  82192. ></ENTRY
  82193. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Function (Name, Parameters And Return Type)</CELLHEADING
  82194. ></ENTRY
  82195. ></RBW-ROW
  82196. ></THEAD
  82197. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>one</CELLBODY
  82198. ></ENTRY
  82199. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>get<CX5FX5FTERM>roleNm</CX5FX5FTERM
  82200. >(<CX5FX5FTERM>qualNm</CX5FX5FTERM
  82201. > <CX5FX5FTERM>qualType</CX5FX5FTERM
  82202. >) RETURNING <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  82203. > </CELLBODY
  82204. ><CELLBODY>set<CX5FX5FTERM>roleNm</CX5FX5FTERM
  82205. >(<CX5FX5FTERM>qualNm</CX5FX5FTERM
  82206. > <CX5FX5FTERM>qualType</CX5FX5FTERM
  82207. >, <CX5FX5FTERM>newroleNm</CX5FX5FTERM
  82208. > <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  82209. >)</CELLBODY
  82210. ><CELLBODY>remove<CX5FX5FTERM>roleNm</CX5FX5FTERM
  82211. >(<CX5FX5FTERM>qualNm</CX5FX5FTERM
  82212. > <CX5FX5FTERM>qualType</CX5FX5FTERM
  82213. >)</CELLBODY
  82214. ></ENTRY
  82215. ></RBW-ROW
  82216. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>many</CELLBODY
  82217. ></ENTRY
  82218. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>get<CX5FX5FTERM>roleNm</CX5FX5FTERM
  82219. >(<CX5FX5FTERM>qualNm</CX5FX5FTERM
  82220. > <CX5FX5FTERM>qualType</CX5FX5FTERM
  82221. >) RETURNING RefSet</CELLBODY
  82222. ><CELLBODY>add<CX5FX5FTERM>roleNm</CX5FX5FTERM
  82223. >(<CX5FX5FTERM>qualNm</CX5FX5FTERM
  82224. > <CX5FX5FTERM>qualType</CX5FX5FTERM
  82225. >, <CX5FX5FTERM>newroleNm</CX5FX5FTERM
  82226. > <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  82227. >)</CELLBODY
  82228. ><CELLBODY>remove<CX5FX5FTERM>roleNm</CX5FX5FTERM
  82229. >(<CX5FX5FTERM>qualNm</CX5FX5FTERM
  82230. > <CX5FX5FTERM>qualType</CX5FX5FTERM
  82231. >, old<CX5FX5FTERM>roleNm</CX5FX5FTERM
  82232. > <CX5FX5FTERM>otherClassNm</CX5FX5FTERM
  82233. >)</CELLBODY
  82234. ></ENTRY
  82235. ></RBW-ROW
  82236. ></TBODY
  82237. ></TGROUP
  82238. ></RBW-TABLE
  82239. ><B.BODY>The <CX5FX5FPROCEDURE.NAME>get</CX5FX5FPROCEDURE.NAME
  82240. >, <CX5FX5FPROCEDURE.NAME>set</CX5FX5FPROCEDURE.NAME
  82241. > and <CX5FX5FPROCEDURE.NAME>remove</CX5FX5FPROCEDURE.NAME
  82242. > functions are derived from the role name at the other side. Bear in mind that, in case of a mandatory association at the side of the other class, the remove function is not generated.</B.BODY
  82243. ></LABEL
  82244. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82245. >In this section</L.LABEL
  82246. ><B.BODY>This section describes qualified associations, qualified association properties and it gives examples of how different types of qualified associations are generated into NewEra code.</B.BODY
  82247. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  82248. ></ENTRY
  82249. ></RBW-ROW
  82250. ></THEAD
  82251. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37646" TYPE="XREF-TEXTCOPY">Qualified Association Properties&rbwtab;3–49</RBW-XREF
  82252. ></SB.SECTION.BLOCK.TABLE
  82253. ></ENTRY
  82254. ></RBW-ROW
  82255. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28570" TYPE="XREF-TEXTCOPY">Examples: Qualified Associations&rbwtab;3–50</RBW-XREF
  82256. ></SB.SECTION.BLOCK.TABLE
  82257. ></ENTRY
  82258. ></RBW-ROW
  82259. ></TBODY
  82260. ></TGROUP
  82261. ></RBW-TABLE
  82262. ></LABEL
  82263. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37646"></RBW-ANCHOR
  82264. >Qualified Association Properties</SS.SUBSEC.HEAD
  82265. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82266. >Introduction</L.LABEL
  82267. ><B.BODY>For instructions on how to specify properties, see <RBW-XREF REFID="10851" TYPE="XREF-TEXTCOPY">How to specify properties</RBW-XREF
  82268. >.</B.BODY
  82269. ></LABEL
  82270. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82271. >Which qualified association properties can you specify</L.LABEL
  82272. ><B.BODY>For qualified associations, the same properties can be specified as for non&truehy;qualified associations (see <RBW-XREF REFID="40839" TYPE="XREF-TEXTCOPY">Association Properties</RBW-XREF
  82273. >).</B.BODY
  82274. ><B.BODY>The following additional can be specified for the qualifier in qualified associations:</B.BODY
  82275. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82276. ></RBW-AUTOGEN
  82277. ></RBW-MARKER
  82278. ><RBW-PARABODY><RBW-XREF REFID="12781" TYPE="XREF-TEXTCOPY">Data Type</RBW-XREF
  82279. ></RBW-PARABODY
  82280. ></LB.LIST.BULLET
  82281. ><LT.LIST.TEXT>This property is briefly discussed here.</LT.LIST.TEXT
  82282. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82283. ></RBW-AUTOGEN
  82284. ></RBW-MARKER
  82285. ><RBW-PARABODY>Nullable</RBW-PARABODY
  82286. ></LB.LIST.BULLET
  82287. ><LT.LIST.TEXT>This property is briefly discussed in <RBW-XREF REFID="30201" TYPE="XREF-TEXTCOPY">Nullable</RBW-XREF
  82288. >.</LT.LIST.TEXT
  82289. ></LABEL
  82290. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82291. ><RBW-IDXTERM TERM1="association access" TERM2="property"></RBW-IDXTERM
  82292. ><RBW-IDXTERM TERM1="accessibility" TERM2="association"></RBW-IDXTERM
  82293. ><RBW-ANCHOR ID="12781"></RBW-ANCHOR
  82294. >Data Type</L.LABEL
  82295. ><B.BODY>Use this property to assign a data type to a qualifier.</B.BODY
  82296. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00747.unk" origfile="pics/prpquala.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  82297. ></FAR.FIGURE.ANCHOR.RIGHT
  82298. ><B.BODY>The data type of a qualifier must be the same as the type of the key in the data structure that implements the qualified association. In case of the data structures RefDict and RSetDict (see <RBW-XREF REFID="28529" TYPE="XREF-TEXTCOPY">Data members / Qualified Association attributes</RBW-XREF
  82299. >) the type is ixObject, so that any NewEra class could serve as qualifier type.</B.BODY
  82300. ><B.BODY>Examples of valid NewEra class names are: ixInteger and ixString.</B.BODY
  82301. ></LABEL
  82302. ></SUBSECTION
  82303. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="28570"></RBW-ANCHOR
  82304. >Examples: Qualified Associations</SS.SUBSEC.HEAD
  82305. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82306. >Introduction</L.LABEL
  82307. ><B.BODY>The data type of the qualifier used in the following examples is ixString. This (external) NewEra class is included in the CDs.</B.BODY
  82308. ></LABEL
  82309. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82310. >Multiplicity: one (optional)</L.LABEL
  82311. ><B.BODY>The following example CD contains an association with a multiplicity of one (optional).</B.BODY
  82312. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00748.unk" origfile="pics/asscfg.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  82313. ></FA.FIGURE.ANCHOR
  82314. ><B.BODY>The file <CX5FX5FFILE.NAME>classF.4gh</CX5FX5FFILE.NAME
  82315. > contains the required data members and member functions to handle this qualified association:</B.BODY
  82316. ><EWM.EXAMPLEW.MONO>INCLUDE "RefDict.4gh"</EWM.EXAMPLEW.MONO
  82317. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82318. ><EWM.EXAMPLEW.MONO>FORWARD classG</EWM.EXAMPLEW.MONO
  82319. ><EWM.EXAMPLEW.MONO>FORWARD ixString</EWM.EXAMPLEW.MONO
  82320. ><EWM.EXAMPLEW.MONO>CLASS classF</EWM.EXAMPLEW.MONO
  82321. ><EWM.EXAMPLEW.MONO>      FUNCTION classF()</EWM.EXAMPLEW.MONO
  82322. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  82323. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82324. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getAttF() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  82325. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setAttF(newAttF INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  82326. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getRoleG(qualifier ixString) RETURNING classG</EWM.EXAMPLEW.MONO
  82327. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setRoleG(qualifier ixString, newRoleG classG) RETURNING VOID</EWM.EXAMPLEW.MONO
  82328. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION removeRoleG(qualifier ixString) RETURNING VOID</EWM.EXAMPLEW.MONO
  82329. ><EWM.EXAMPLEW.MONO>      PUBLIC VARIABLE roleGDict RefDict</EWM.EXAMPLEW.MONO
  82330. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82331. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82332. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE attF INTEGER </EWM.EXAMPLEW.MONO
  82333. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  82334. ></LABEL
  82335. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82336. >Multiplicity: many</L.LABEL
  82337. ><B.BODY>The following example CD contains an association with a multiplicity of many (optional). For association with a mandatory multiplicity, similar code is generated.</B.BODY
  82338. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00749.unk" origfile="pics/asschi.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  82339. ></FA.FIGURE.ANCHOR
  82340. ><B.BODY>The file <CX5FX5FFILE.NAME>classH.4gh</CX5FX5FFILE.NAME
  82341. > contains the required data members and member functions to handle this qualified association:</B.BODY
  82342. ><EWM.EXAMPLEW.MONO>INCLUDE "RSetDict.4gh"</EWM.EXAMPLEW.MONO
  82343. ><EWM.EXAMPLEW.MONO>INCLUDE "RefSet.4gh"</EWM.EXAMPLEW.MONO
  82344. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82345. ><EWM.EXAMPLEW.MONO>FORWARD classI</EWM.EXAMPLEW.MONO
  82346. ><EWM.EXAMPLEW.MONO>CLASS classH</EWM.EXAMPLEW.MONO
  82347. ><EWM.EXAMPLEW.MONO>      FUNCTION classH()</EWM.EXAMPLEW.MONO
  82348. ><EWM.EXAMPLEW.MONO>      FUNCTION !destroy()</EWM.EXAMPLEW.MONO
  82349. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82350. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getAttH() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  82351. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION setAttH(newAttH INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  82352. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION getRoleI(qualifier INTEGER) RETURNING RefSet</EWM.EXAMPLEW.MONO
  82353. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION addRoleI(qualifier INTEGER, newRoleI classI) RETURNING VOID</EWM.EXAMPLEW.MONO
  82354. ><EWM.EXAMPLEW.MONO>      PUBLIC FUNCTION removeRoleI(qualifier INTEGER, oldRoleI classI) RETURNING VOID</EWM.EXAMPLEW.MONO
  82355. ><EWM.EXAMPLEW.MONO>      PUBLIC VARIABLE roleIRSDict RSetDict</EWM.EXAMPLEW.MONO
  82356. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82357. ><EWM.EXAMPLEW.MONO>      PRIVATE VARIABLE attH INTEGER </EWM.EXAMPLEW.MONO
  82358. ><EWM.EXAMPLEW.MONO>END CLASS</EWM.EXAMPLEW.MONO
  82359. ></LABEL
  82360. ></SUBSECTION
  82361. ></SECTION
  82362. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="33738"></RBW-ANCHOR
  82363. >Special <RBW-IDXTERM TERM1="class" TERM2="special"></RBW-IDXTERM
  82364. ><RBW-IDXTERM TERM1="special classes"></RBW-IDXTERM
  82365. >Classes</S.SECTION.HEAD
  82366. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82367. >What are special classes</L.LABEL
  82368. ><B.BODY>In C++, special classes in are classes that serve a particular purpose. The special classes you can create in C++ are:</B.BODY
  82369. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82370. ></RBW-AUTOGEN
  82371. ></RBW-MARKER
  82372. ><RBW-PARABODY>typedef class</RBW-PARABODY
  82373. ></LB.LIST.BULLET
  82374. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82375. ></RBW-AUTOGEN
  82376. ></RBW-MARKER
  82377. ><RBW-PARABODY>generic typedef class</RBW-PARABODY
  82378. ></LB.LIST.BULLET
  82379. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82380. ></RBW-AUTOGEN
  82381. ></RBW-MARKER
  82382. ><RBW-PARABODY>enum class</RBW-PARABODY
  82383. ></LB.LIST.BULLET
  82384. ><B.BODY>NewEra does not support special classes.</B.BODY
  82385. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82386. >For more information</SL.SUBLABEL
  82387. ><B.BODY>For more information on special classes in C++, refer to the <CX5FX5FTITLE>ObjectTeam Code Generation Guide for C++</CX5FX5FTITLE
  82388. ><CX5FX5FTITLE></CX5FX5FTITLE
  82389. >.</B.BODY
  82390. ></LABEL
  82391. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82392. >Why should I care about special classes</L.LABEL
  82393. ><B.BODY>If NewEra does not support special classes, why should you care about them? Well, if you model a class the same way as you would in C++ to generate a special class, the constructor function is not generated.</B.BODY
  82394. ><B.BODY>For example, for the following class, no constructor is generated:</B.BODY
  82395. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00750.unk" origfile="pics/special.gif" origtype="X" origdoc="../../sources/ne/nenpers.fm5.mif"></RBW-GRAPHIC
  82396. ></FA.FIGURE.ANCHOR
  82397. ><B.BODY>However, if you add the operation $create, a constructor will be generated.</B.BODY
  82398. ><RBWAUTO-0001></RBWAUTO-0001
  82399. ><!--
  82400.  
  82401.  
  82402.  
  82403.  
  82404.  
  82405. CONVERTING SOURCE FILE ../../sources/ne/nepers.fm5.mif
  82406.  
  82407.  
  82408. --><B.BODY></B.BODY
  82409. ><B.BODY></B.BODY
  82410. ><B.BODY></B.BODY
  82411. ><B.BODY></B.BODY
  82412. ><B.BODY></B.BODY
  82413. ></LABEL
  82414. ></SECTION
  82415. ></CHAPTER
  82416. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  82417. ></RBW-AUTOGEN
  82418. >Mapping Modeling Data to NewEra <RBW-ANCHOR ID="23603"></RBW-ANCHOR
  82419. >Persistent Code<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  82420. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  82421. ></RBW-SYSOBJ
  82422. ></C.CHAPTER.HEAD
  82423. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82424. ><RBW-IDXTERM TERM1="4gh file" TERM2="generating (persistent)"></RBW-IDXTERM
  82425. ><RBW-IDXTERM TERM1="generating" TERM2="4gh file (persistent)"></RBW-IDXTERM
  82426. ><RBW-IDXTERM TERM1="4gl file" TERM2="generating (persistent)"></RBW-IDXTERM
  82427. ><RBW-IDXTERM TERM1="generating" TERM2="4gl file (persistent)"></RBW-IDXTERM
  82428. >Introduction</L.LABEL
  82429. ><B.BODY><RBW-IDXTERM TERM1="code generation" TERM2="persistent"></RBW-IDXTERM
  82430. >A persistent <RBW-IDXTERM TERM1="4gl file" TERM2="generating (persistent)"></RBW-IDXTERM
  82431. ><RBW-IDXTERM TERM1="4gh file" TERM2="generating (persistent)"></RBW-IDXTERM
  82432. >class is a class whose instances persists beyond the lifetime of a single program execution. The public interface of the persistent class is similar to that of the non&truehy;persistent classes. The implementation however, is completely different because of the storage of the data members in a relational database. </B.BODY
  82433. ><B.BODY>The persistent code generation process involves the generation of two types of code:</B.BODY
  82434. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82435. ></RBW-AUTOGEN
  82436. ></RBW-MARKER
  82437. ><RBW-PARABODY>SQL (Structured Query Language), as described in <RBW-XREF REFID="37874" TYPE="XREF-TEXTCOPY">SQL Generation</RBW-XREF
  82438. ></RBW-PARABODY
  82439. ></LB.LIST.BULLET
  82440. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82441. ></RBW-AUTOGEN
  82442. ></RBW-MARKER
  82443. ><RBW-PARABODY>Persistent NewEra code, as described in <RBW-XREF REFID="13730" TYPE="XREF-TEXTCOPY">Persistent NewEra Code Generation</RBW-XREF
  82444. ></RBW-PARABODY
  82445. ></LB.LIST.BULLET
  82446. ></LABEL
  82447. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82448. ><RBW-ANCHOR ID="11158"></RBW-ANCHOR
  82449. >How do you create a persistent class</L.LABEL
  82450. ><B.BODY>You create a persistent class in a CD by setting the property Persistent for the class. For instructions on specifying properties, see <RBW-XREF REFID="10851" TYPE="XREF-TEXTCOPY">How to specify properties</RBW-XREF
  82451. >.</B.BODY
  82452. ><B.BODY>A persistent class needs at least one key attribute. You can specify a key attribute by entering a leading asterisk (*) in the name of the attribute. You cannot specify key attributes for sub classes in a generalization, however: sub classes inherit key attributes from their super class.</B.BODY
  82453. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82454. >For more information</SL.SUBLABEL
  82455. ><B.BODY>Key attributes are further discussed in <RBW-XREF REFID="24397" TYPE="XREF-TEXTCOPY">Key attributes</RBW-XREF
  82456. >.</B.BODY
  82457. ></LABEL
  82458. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82459. >Example</L.LABEL
  82460. ><B.BODY>In the following example, the attribute <CX5FX5FOBJECT.NAME>name</CX5FX5FOBJECT.NAME
  82461. > is the key attribute in the persistent class Patient:</B.BODY
  82462. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00751.unk" origfile="pics/patient.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  82463. ></FA.FIGURE.ANCHOR
  82464. ><B.BODY>Apart from setting the property Persistent and specifying a key attribute, the same rules apply for modeling persistent classes as for non&truehy;persistent classes. (see <RBW-XREF REFID="27879" TYPE="XREF-TEXTCOPY">Chapter 3, “Mapping Modeling Data to NewEra Non&truehy;Persistent Code”</RBW-XREF
  82465. >).</B.BODY
  82466. ></LABEL
  82467. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82468. >What code is generated for a persistent class</L.LABEL
  82469. ><B.BODY>In persistent code generation, ObjectTeam uses a Relational Data Base Management System (RDBMS) to store data for persistent class objects.</B.BODY
  82470. ><B.BODY>So besides NewEra classes, the NewEra code generator generates SQL scripts for creating and destroying database tables and procedures. A runtime system takes care of the mapping of generated NewEra classes onto the target RDBMS.</B.BODY
  82471. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82472. >For more information</SL.SUBLABEL
  82473. ><B.BODY>For details on the runtime system in combination with NewEra classes, see <RBW-XREF REFID="17255" TYPE="XREF-TEXTCOPY">The Runtime System</RBW-XREF
  82474. >.</B.BODY
  82475. ></LABEL
  82476. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82477. >Which RDBMSs are supported</L.LABEL
  82478. ><B.BODY>At the moment Informix is the only supported RDBMS for NewEra persistent code generation.</B.BODY
  82479. ></LABEL
  82480. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82481. >In this chapter</L.LABEL
  82482. ><B.BODY>This chapter contains the following sections:</B.BODY
  82483. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  82484. ></ENTRY
  82485. ></RBW-ROW
  82486. ></THEAD
  82487. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37874" TYPE="XREF-TEXTCOPY">SQL Generation&rbwtab;4–3</RBW-XREF
  82488. ></SB.SECTION.BLOCK.TABLE
  82489. ></ENTRY
  82490. ></RBW-ROW
  82491. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13730" TYPE="XREF-TEXTCOPY">Persistent NewEra Code Generation&rbwtab;4–20</RBW-XREF
  82492. ></SB.SECTION.BLOCK.TABLE
  82493. ></ENTRY
  82494. ></RBW-ROW
  82495. ></TBODY
  82496. ></TGROUP
  82497. ></RBW-TABLE
  82498. ></LABEL
  82499. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="37874"></RBW-ANCHOR
  82500. >SQL <RBW-IDXTERM TERM1="code generation" TERM2="persistent (SQL)"></RBW-IDXTERM
  82501. ><RBW-IDXTERM TERM1="persistent code generation" TERM2="SQL"></RBW-IDXTERM
  82502. >Generation<RBW-IDXTERM TERM1="SQL generation"></RBW-IDXTERM
  82503. ><RBW-IDXTERM TERM1="persistent code generation" TERM2="SQL"></RBW-IDXTERM
  82504. ></S.SECTION.HEAD
  82505. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82506. >Introduction</L.LABEL
  82507. ><B.BODY>SQL code is generated for every persistent class in the CDs residing in the same system of the Object Design phase.</B.BODY
  82508. ></LABEL
  82509. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82510. >Where does SQL fit in</L.LABEL
  82511. ><B.BODY>The mapping of persistent classes on a relational database is carried out through the runtime system (see <RBW-XREF REFID="17255" TYPE="XREF-TEXTCOPY">The Runtime System</RBW-XREF
  82512. >). The Data Definition Language (DDL) used to create this runtime system in ObjectTeam is SQL. </B.BODY
  82513. ></LABEL
  82514. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82515. >Generated SQL files</L.LABEL
  82516. ><B.BODY>The following SQL script files are generated during SQL generation:</B.BODY
  82517. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="124p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File</CELLHEADING
  82518. ></ENTRY
  82519. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Function</CELLHEADING
  82520. ></ENTRY
  82521. ></RBW-ROW
  82522. ></THEAD
  82523. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="create.sql"></RBW-IDXTERM
  82524. >create</CELLBODY
  82525. ></ENTRY
  82526. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Invokes the generated scripts <CX5FX5FFILE.NAME>create_tables</CX5FX5FFILE.NAME
  82527. > and <CX5FX5FFILE.NAME>create_procs</CX5FX5FFILE.NAME
  82528. ></CELLBODY
  82529. ></ENTRY
  82530. ></RBW-ROW
  82531. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="create_tables.sql"></RBW-IDXTERM
  82532. >create_tables</CELLBODY
  82533. ></ENTRY
  82534. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains SQL code for table definitions</CELLBODY
  82535. ></ENTRY
  82536. ></RBW-ROW
  82537. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="create_procs.sql"></RBW-IDXTERM
  82538. >create_procs</CELLBODY
  82539. ></ENTRY
  82540. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains SQL code for procedure creation. For every database table that is defined, the database operations <CX5FX5FTERM>delete</CX5FX5FTERM
  82541. >, <CX5FX5FTERM>insert</CX5FX5FTERM
  82542. > and <CX5FX5FTERM>update</CX5FX5FTERM
  82543. > are generated. These procedures also handle referential integrity</CELLBODY
  82544. ><CELLBODY>(see <RBW-XREF REFID="24352" TYPE="XREF-TEXTCOPY">Customizing Referential Integrity Policies</RBW-XREF
  82545. >)</CELLBODY
  82546. ></ENTRY
  82547. ></RBW-ROW
  82548. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="drop.sql"></RBW-IDXTERM
  82549. >drop</CELLBODY
  82550. ></ENTRY
  82551. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Invokes the scripts <CX5FX5FFILE.NAME>drop_table</CX5FX5FFILE.NAME
  82552. > and <CX5FX5FFILE.NAME>drop_procs</CX5FX5FFILE.NAME
  82553. ></CELLBODY
  82554. ></ENTRY
  82555. ></RBW-ROW
  82556. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="drop_tables.sql"></RBW-IDXTERM
  82557. >drop_tables</CELLBODY
  82558. ></ENTRY
  82559. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains SQL code to drop table definitions</CELLBODY
  82560. ></ENTRY
  82561. ></RBW-ROW
  82562. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="drop_procs.sql"></RBW-IDXTERM
  82563. >drop_procs</CELLBODY
  82564. ></ENTRY
  82565. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Contains SQL code to drop procedure definitions</CELLBODY
  82566. ></ENTRY
  82567. ></RBW-ROW
  82568. ></TBODY
  82569. ></TGROUP
  82570. ></RBW-TABLE
  82571. ><B.BODY>The object type of these files in the browser is <CX5FX5FOBJECT.NAME>sql_type</CX5FX5FOBJECT.NAME
  82572. >.</B.BODY
  82573. ></LABEL
  82574. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82575. >In this section</L.LABEL
  82576. ><B.BODY>This section describes the characteristics of SQL code generation:</B.BODY
  82577. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  82578. ></ENTRY
  82579. ></RBW-ROW
  82580. ></THEAD
  82581. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21736" TYPE="XREF-TEXTCOPY">Class&rbwtab;4–4</RBW-XREF
  82582. ></SB.SECTION.BLOCK.TABLE
  82583. ></ENTRY
  82584. ></RBW-ROW
  82585. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21116" TYPE="XREF-TEXTCOPY">Data Attribute&rbwtab;4–6</RBW-XREF
  82586. ></SB.SECTION.BLOCK.TABLE
  82587. ></ENTRY
  82588. ></RBW-ROW
  82589. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23357" TYPE="XREF-TEXTCOPY">Generalization&rbwtab;4–8</RBW-XREF
  82590. ></SB.SECTION.BLOCK.TABLE
  82591. ></ENTRY
  82592. ></RBW-ROW
  82593. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21782" TYPE="XREF-TEXTCOPY">Association&rbwtab;4–11</RBW-XREF
  82594. ></SB.SECTION.BLOCK.TABLE
  82595. ></ENTRY
  82596. ></RBW-ROW
  82597. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21074" TYPE="XREF-TEXTCOPY">Association with a Link Object&rbwtab;4–16</RBW-XREF
  82598. ></SB.SECTION.BLOCK.TABLE
  82599. ></ENTRY
  82600. ></RBW-ROW
  82601. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21059" TYPE="XREF-TEXTCOPY">Qualified Association&rbwtab;4–18</RBW-XREF
  82602. ></SB.SECTION.BLOCK.TABLE
  82603. ></ENTRY
  82604. ></RBW-ROW
  82605. ></TBODY
  82606. ></TGROUP
  82607. ></RBW-TABLE
  82608. ><B.BODY>Note that operations are not generated; they are irrelevant to SQL generation.</B.BODY
  82609. ></LABEL
  82610. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21736"></RBW-ANCHOR
  82611. >Class</SS.SUBSEC.HEAD
  82612. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82613. >Introduction</L.LABEL
  82614. ><B.BODY>In the simplest situation one persistent class maps to one table. Each persistent class is mapped to an SQL table, and the table rows are instances of the class. The user&truehy;defined key attribute(s) together with the automatically generated class_type attribute serve as a system wide unique identification.</B.BODY
  82615. ></LABEL
  82616. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82617. >Example</L.LABEL
  82618. ><B.BODY>The following CREATE TABLE statements are generated for one persistent class:</B.BODY
  82619. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00752.unk" origfile="pics/patient.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  82620. ></FA2.FIGURE.ANCHOR.2
  82621. ><B.BODY><CX5FX5FFILE.NAME>create_tables</CX5FX5FFILE.NAME
  82622. >:</B.BODY
  82623. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  82624. ><EM.EXAMPLE.MONO>CREATE TABLE patient (</EM.EXAMPLE.MONO
  82625. ><EM.EXAMPLE.MONO>   name CHAR(40) NOT NULL,</EM.EXAMPLE.MONO
  82626. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL,</EM.EXAMPLE.MONO
  82627. ><EM.EXAMPLE.MONO>   address CHAR(50),</EM.EXAMPLE.MONO
  82628. ><EM.EXAMPLE.MONO>   age INTEGER,</EM.EXAMPLE.MONO
  82629. ><EM.EXAMPLE.MONO>   PRIMARY KEY (name, class_type)</EM.EXAMPLE.MONO
  82630. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  82631. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  82632. ><B.BODY>The following CREATE PROCEDURES are generated for this class:</B.BODY
  82633. ><B.BODY><CX5FX5FFILE.NAME>create_procs</CX5FX5FFILE.NAME
  82634. >:</B.BODY
  82635. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  82636. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Database procedure to insert a tuple into table patient</EWM.EXAMPLEW.MONO
  82637. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82638. ><EWM.EXAMPLEW.MONO>CREATE PROCEDURE <CX5FX5FFILE.NAME>pins_patient</CX5FX5FFILE.NAME
  82639. >(</EWM.EXAMPLEW.MONO
  82640. ><EWM.EXAMPLEW.MONO>   p_name CHAR(40),</EWM.EXAMPLEW.MONO
  82641. ><EWM.EXAMPLEW.MONO>   p_class_type VARCHAR(32),</EWM.EXAMPLEW.MONO
  82642. ><EWM.EXAMPLEW.MONO>   p_address CHAR(50),</EWM.EXAMPLEW.MONO
  82643. ><EWM.EXAMPLEW.MONO>   p_age INT</EWM.EXAMPLEW.MONO
  82644. ><EWM.EXAMPLEW.MONO>)</EWM.EXAMPLEW.MONO
  82645. ><EWM.EXAMPLEW.MONO>   BEGIN</EWM.EXAMPLEW.MONO
  82646. ><EWM.EXAMPLEW.MONO>      INSERT INTO patient</EWM.EXAMPLEW.MONO
  82647. ><EWM.EXAMPLEW.MONO>      VALUES (p_name, p_class_type, p_address, p_age);</EWM.EXAMPLEW.MONO
  82648. ><EWM.EXAMPLEW.MONO>   END</EWM.EXAMPLEW.MONO
  82649. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82650. ><EWM.EXAMPLEW.MONO>END PROCEDURE;</EWM.EXAMPLEW.MONO
  82651. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Database procedure to delete a tuple from table patient</EWM.EXAMPLEW.MONO
  82652. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82653. ><EWM.EXAMPLEW.MONO>CREATE PROCEDURE <CX5FX5FFILE.NAME>pdel_patient</CX5FX5FFILE.NAME
  82654. >(</EWM.EXAMPLEW.MONO
  82655. ><EWM.EXAMPLEW.MONO>   p_name CHAR(40),</EWM.EXAMPLEW.MONO
  82656. ><EWM.EXAMPLEW.MONO>   p_class_type VARCHAR(32)</EWM.EXAMPLEW.MONO
  82657. ><EWM.EXAMPLEW.MONO>)</EWM.EXAMPLEW.MONO
  82658. ><EWM.EXAMPLEW.MONO>   BEGIN</EWM.EXAMPLEW.MONO
  82659. ><EWM.EXAMPLEW.MONO>      DELETE</EWM.EXAMPLEW.MONO
  82660. ><EWM.EXAMPLEW.MONO>      FROM patient</EWM.EXAMPLEW.MONO
  82661. ><EWM.EXAMPLEW.MONO>      WHERE name = p_name AND class_type = p_class_type;</EWM.EXAMPLEW.MONO
  82662. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82663. ><EWM.EXAMPLEW.MONO>   END</EWM.EXAMPLEW.MONO
  82664. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82665. ><EWM.EXAMPLEW.MONO>END PROCEDURE;</EWM.EXAMPLEW.MONO
  82666. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82667. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Database procedure to update a tuple from table patient</EWM.EXAMPLEW.MONO
  82668. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82669. ><EWM.EXAMPLEW.MONO>CREATE PROCEDURE <CX5FX5FFILE.NAME>pupd_patient</CX5FX5FFILE.NAME
  82670. >(</EWM.EXAMPLEW.MONO
  82671. ><EWM.EXAMPLEW.MONO>   p_name CHAR(40),</EWM.EXAMPLEW.MONO
  82672. ><EWM.EXAMPLEW.MONO>   p_class_type VARCHAR(32),</EWM.EXAMPLEW.MONO
  82673. ><EWM.EXAMPLEW.MONO>   p_address CHAR(50),</EWM.EXAMPLEW.MONO
  82674. ><EWM.EXAMPLEW.MONO>   p_age INT</EWM.EXAMPLEW.MONO
  82675. ><EWM.EXAMPLEW.MONO>)</EWM.EXAMPLEW.MONO
  82676. ><EWM.EXAMPLEW.MONO>   BEGIN</EWM.EXAMPLEW.MONO
  82677. ><EWM.EXAMPLEW.MONO>      UPDATE patient</EWM.EXAMPLEW.MONO
  82678. ><EWM.EXAMPLEW.MONO>      SET address = p_address, age = p_age</EWM.EXAMPLEW.MONO
  82679. ><EWM.EXAMPLEW.MONO>      WHERE name = p_name AND class_type = p_class_type;</EWM.EXAMPLEW.MONO
  82680. ><EWM.EXAMPLEW.MONO>   END</EWM.EXAMPLEW.MONO
  82681. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  82682. ><EWM.EXAMPLEW.MONO>END PROCEDURE;</EWM.EXAMPLEW.MONO
  82683. ></LABEL
  82684. ></SUBSECTION
  82685. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="data attribute" TERM2="in persistent (SQL) code generation"></RBW-IDXTERM
  82686. ><RBW-ANCHOR ID="21116"></RBW-ANCHOR
  82687. >Data Attribute</SS.SUBSEC.HEAD
  82688. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82689. >Syntax</L.LABEL
  82690. ><B.BODY>Use the following syntax when you specify the <RBW-IDXTERM TERM1="data attribute" TERM2="syntax"></RBW-IDXTERM
  82691. >data attributes of a persistent class:</B.BODY
  82692. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00753.tif" origseq="9" origtype="I" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  82693. ></FAR.FIGURE.ANCHOR.RIGHT
  82694. ></LABEL
  82695. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82696. ><RBW-ANCHOR ID="24397"></RBW-ANCHOR
  82697. >Key attributes</L.LABEL
  82698. ><B.BODY>You specify a data attribute as being a key attribute by putting a leading asterisk in the name. You can specify multiple key attributes. All the key attributes, together with the attribute <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  82699. > (see <RBW-XREF REFID="24933" TYPE="XREF-TEXTCOPY">The attribute class_type</RBW-XREF
  82700. >), make up the primary key of the class.</B.BODY
  82701. ><B.BODY>As key attributes always need a value, the keywords NOT NULL are generated for every key attribute in a class, e.g.:</B.BODY
  82702. ><EM.EXAMPLE.MONO>CREATE TABLE Patient (</EM.EXAMPLE.MONO
  82703. ><EM.EXAMPLE.MONO>   name CHAR(40) NOT NULL,</EM.EXAMPLE.MONO
  82704. ><EM.EXAMPLE.MONO>   ...</EM.EXAMPLE.MONO
  82705. ><EM.EXAMPLE.MONO>   PRIMARY KEY (name, class_type)</EM.EXAMPLE.MONO
  82706. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  82707. ><B.BODY>The data attribute <CX5FX5FOBJECT.NAME>name</CX5FX5FOBJECT.NAME
  82708. > is the only key attribute in this example.</B.BODY
  82709. ></LABEL
  82710. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82711. >Standard Types</L.LABEL
  82712. ><B.BODY>In CDs, standard data types are used to define the data type of an attribute. These data types are mapped to target&truehy;dependent database types during persistent code generation. </B.BODY
  82713. ><B.BODY>The standard data types can be found in the customization file:</B.BODY
  82714. ><E.EXAMPLE>M4_home<CX5FX5FFILE.NAME>\etc\t_inf\stand_types</CX5FX5FFILE.NAME
  82715. ></E.EXAMPLE
  82716. ><B.BODY>The following customization file is used to map the standard types to database types:</B.BODY
  82717. ><E.EXAMPLE>M4_home<CX5FX5FFILE.NAME>\etc\t_inf\db_types</CX5FX5FFILE.NAME
  82718. ></E.EXAMPLE
  82719. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82720. >For more information</SL.SUBLABEL
  82721. ><B.BODY>See <RBW-XREF REFID="42656" TYPE="XREF-TEXTCOPY">Customizing Data Types</RBW-XREF
  82722. > and further for more information on these files.</B.BODY
  82723. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  82724. ></RBW-AUTOGEN
  82725. >In persistent classes, you are not allowed to specify a class as the data type of an attribute.</W.WARNING
  82726. ></LABEL
  82727. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82728. ><RBW-ANCHOR ID="24539"></RBW-ANCHOR
  82729. >Data Attribute Properties</L.LABEL
  82730. ><B.BODY>The following property affects the way SQL code is generated for data attributes in a persistent class:</B.BODY
  82731. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82732. ></RBW-AUTOGEN
  82733. ></RBW-MARKER
  82734. ><RBW-PARABODY><CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="nullable" TERM2="data attribute property"></RBW-IDXTERM
  82735. ><RBW-IDXTERM TERM1="nullable" TERM2="data attribute property"></RBW-IDXTERM
  82736. >Nullable</CX5FX5FFILE.NAME
  82737. > </RBW-PARABODY
  82738. ></LB.LIST.BULLET
  82739. ><B.BODY>The following nullability values are available:</B.BODY
  82740. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82741. ></RBW-AUTOGEN
  82742. ></RBW-MARKER
  82743. ><RBW-PARABODY>default (equals yes)</RBW-PARABODY
  82744. ></LB.LIST.BULLET
  82745. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82746. ></RBW-AUTOGEN
  82747. ></RBW-MARKER
  82748. ><RBW-PARABODY>yes</RBW-PARABODY
  82749. ></LB.LIST.BULLET
  82750. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82751. ></RBW-AUTOGEN
  82752. ></RBW-MARKER
  82753. ><RBW-PARABODY>no</RBW-PARABODY
  82754. ></LB.LIST.BULLET
  82755. ><B.BODY>The setting of this property determines whether or not an attribute is allowed to have a NULL value. The <CX5FX5FOBJECT.NAME>default</CX5FX5FOBJECT.NAME
  82756. > value of this property is <CX5FX5FOBJECT.NAME>yes</CX5FX5FOBJECT.NAME
  82757. >.</B.BODY
  82758. ><B.BODY>If you set the property Nullable to <CX5FX5FOBJECT.NAME>no</CX5FX5FOBJECT.NAME
  82759. >, the keywords NOT NULL are generated after the data type of the column. Key attributes and the attribute <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  82760. > always have these keywords generated.</B.BODY
  82761. ><B.BODY>In the following example the property Nullable is set to <CX5FX5FOBJECT.NAME>no</CX5FX5FOBJECT.NAME
  82762. > for the attribute <CX5FX5FOBJECT.NAME>address</CX5FX5FOBJECT.NAME
  82763. >:</B.BODY
  82764. ><EM.EXAMPLE.MONO>CREATE TABLE Patient (</EM.EXAMPLE.MONO
  82765. ><EM.EXAMPLE.MONO>   ...</EM.EXAMPLE.MONO
  82766. ><EM.EXAMPLE.MONO>   address CHAR(50)  NOT NULL,</EM.EXAMPLE.MONO
  82767. ><EM.EXAMPLE.MONO>   ...</EM.EXAMPLE.MONO
  82768. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  82769. ><B.BODY>The effect the property values <CX5FX5FOBJECT.NAME>yes</CX5FX5FOBJECT.NAME
  82770. > and <CX5FX5FOBJECT.NAME>default</CX5FX5FOBJECT.NAME
  82771. > have are the same. If you want attributes to be non&truehy;nullable by default, you have to adapt the NewEra code generator. </B.BODY
  82772. ></LABEL
  82773. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82774. ><RBW-ANCHOR ID="24933"></RBW-ANCHOR
  82775. >The attribute class_type</L.LABEL
  82776. ><B.BODY>For every persistent class a data attribute <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  82777. > is generated in the SQL code. This attribute is part of the primary key of every table.The main function of the attribute <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  82778. > is to handle classes in generalizations. </B.BODY
  82779. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82780. >For more information</SL.SUBLABEL
  82781. ><B.BODY>More information on generalizations can be found in <RBW-XREF REFID="23357" TYPE="XREF-TEXTCOPY">Generalization</RBW-XREF
  82782. >.</B.BODY
  82783. ></LABEL
  82784. ></SUBSECTION
  82785. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23357"></RBW-ANCHOR
  82786. >Generalization<RBW-IDXTERM TERM1="generalization" TERM2="example of generated SQL code"></RBW-IDXTERM
  82787. ></SS.SUBSEC.HEAD
  82788. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82789. >Master&truehy;detail pairs</L.LABEL
  82790. ><B.BODY>In a generalization, the super class acts as master and the subclass as detail. In the following example diagram, the master&truehy;detail pairs are:</B.BODY
  82791. ><E.EXAMPLE>A(master) &truehy; B(detail)</E.EXAMPLE
  82792. ><E.EXAMPLE>A(master) &truehy; C(detail)</E.EXAMPLE
  82793. ></LABEL
  82794. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82795. >Properties</L.LABEL
  82796. ><B.BODY>The only properties you can set for a generalization are the following RI (Referential Integrity) properties:</B.BODY
  82797. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82798. ></RBW-AUTOGEN
  82799. ></RBW-MARKER
  82800. ><RBW-PARABODY>Referential Integrity</RBW-PARABODY
  82801. ></LB.LIST.BULLET
  82802. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82803. ></RBW-AUTOGEN
  82804. ></RBW-MARKER
  82805. ><RBW-PARABODY>Insert Policy</RBW-PARABODY
  82806. ></LB.LIST.BULLET
  82807. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82808. ></RBW-AUTOGEN
  82809. ></RBW-MARKER
  82810. ><RBW-PARABODY>Delete Policy</RBW-PARABODY
  82811. ></LB.LIST.BULLET
  82812. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  82813. ></RBW-AUTOGEN
  82814. ></RBW-MARKER
  82815. ><RBW-PARABODY>Update Policy</RBW-PARABODY
  82816. ></LB.LIST.BULLET
  82817. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82818. >For more information</SL.SUBLABEL
  82819. ><B.BODY>Referential Integrity is further discussed in <RBW-XREF REFID="24352" TYPE="XREF-TEXTCOPY">Customizing Referential Integrity Policies</RBW-XREF
  82820. >.</B.BODY
  82821. ></LABEL
  82822. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82823. >Example</L.LABEL
  82824. ><B.BODY></B.BODY
  82825. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00754.unk" origfile="pics/sqasgen.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  82826. ></FA.FIGURE.ANCHOR
  82827. ><B.BODY><CX5FX5FFILE.NAME>create_tables.sql</CX5FX5FFILE.NAME
  82828. >:</B.BODY
  82829. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  82830. ><EM.EXAMPLE.MONO>&truehy;&truehy; Create table B</EM.EXAMPLE.MONO
  82831. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  82832. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  82833. ><EM.EXAMPLE.MONO>   Name CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  82834. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  82835. ><EM.EXAMPLE.MONO>   bId INT  ,</EM.EXAMPLE.MONO
  82836. ><EM.EXAMPLE.MONO>   PRIMARY KEY (Name, class_type)</EM.EXAMPLE.MONO
  82837. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  82838. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  82839. ><EM.EXAMPLE.MONO>&truehy;&truehy; Create table C</EM.EXAMPLE.MONO
  82840. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  82841. ><EM.EXAMPLE.MONO>CREATE TABLE C (</EM.EXAMPLE.MONO
  82842. ><EM.EXAMPLE.MONO>   Name CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  82843. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  82844. ><EM.EXAMPLE.MONO>   cDate INT  ,</EM.EXAMPLE.MONO
  82845. ><EM.EXAMPLE.MONO>   PRIMARY KEY (Name, class_type)</EM.EXAMPLE.MONO
  82846. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  82847. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  82848. ><EM.EXAMPLE.MONO>&truehy;&truehy; Create table A</EM.EXAMPLE.MONO
  82849. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  82850. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  82851. ><EM.EXAMPLE.MONO>   Name CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  82852. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  82853. ><EM.EXAMPLE.MONO>   aDate INT  ,</EM.EXAMPLE.MONO
  82854. ><EM.EXAMPLE.MONO>   PRIMARY KEY (Name, class_type)</EM.EXAMPLE.MONO
  82855. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  82856. ><EM.EXAMPLE.MONO> ...</EM.EXAMPLE.MONO
  82857. ><EM.EXAMPLE.MONO>ALTER TABLE B</EM.EXAMPLE.MONO
  82858. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (Name, class_type)</EM.EXAMPLE.MONO
  82859. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  82860. ><EM.EXAMPLE.MONO>ALTER TABLE C</EM.EXAMPLE.MONO
  82861. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (Name, class_type)</EM.EXAMPLE.MONO
  82862. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  82863. ><B.BODY></B.BODY
  82864. ><B.BODY>The attribute <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  82865. >, which is generated for every base class, is essential in generalizations. </B.BODY
  82866. ><B.BODY>The following tables show some possible contents of the rows and columns of the database tables <CX5FX5FFILE.NAME>A</CX5FX5FFILE.NAME
  82867. >, <CX5FX5FFILE.NAME>B</CX5FX5FFILE.NAME
  82868. > and <CX5FX5FFILE.NAME>C</CX5FX5FFILE.NAME
  82869. >. The value of <CX5FX5FOBJECT.NAME>Name</CX5FX5FOBJECT.NAME
  82870. > is the same for both Z’s that occur in the table <CX5FX5FFILE.NAME>A</CX5FX5FFILE.NAME
  82871. >. Without the <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  82872. > attribute, it would be impossible to distinguish the <CX5FX5FINPUT>Z’</CX5FX5FINPUT
  82873. >s. These are, in fact, three different occurrences with the same name.</B.BODY
  82874. ><B.BODY></B.BODY
  82875. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Table A</CELLHEADING
  82876. ></ENTRY
  82877. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  82878. ></ENTRY
  82879. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  82880. ></ENTRY
  82881. ></RBW-ROW
  82882. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>name</CELLHEADING
  82883. ></ENTRY
  82884. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>class_type</CELLHEADING
  82885. ></ENTRY
  82886. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>adate</CELLHEADING
  82887. ></ENTRY
  82888. ></RBW-ROW
  82889. ></THEAD
  82890. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  82891. ></ENTRY
  82892. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  82893. ></ENTRY
  82894. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>951107</CELLBODY
  82895. ></ENTRY
  82896. ></RBW-ROW
  82897. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Y</CELLBODY
  82898. ></ENTRY
  82899. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C</CELLBODY
  82900. ></ENTRY
  82901. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>951106</CELLBODY
  82902. ></ENTRY
  82903. ></RBW-ROW
  82904. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  82905. ></ENTRY
  82906. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A</CELLBODY
  82907. ></ENTRY
  82908. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>951109</CELLBODY
  82909. ></ENTRY
  82910. ></RBW-ROW
  82911. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  82912. ></ENTRY
  82913. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  82914. ></ENTRY
  82915. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>951110</CELLBODY
  82916. ></ENTRY
  82917. ></RBW-ROW
  82918. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  82919. ></ENTRY
  82920. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C</CELLBODY
  82921. ></ENTRY
  82922. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>951111</CELLBODY
  82923. ></ENTRY
  82924. ></RBW-ROW
  82925. ></TBODY
  82926. ></TGROUP
  82927. ></RBW-TABLE
  82928. ><B.BODY></B.BODY
  82929. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Table B</CELLHEADING
  82930. ></ENTRY
  82931. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  82932. ></ENTRY
  82933. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  82934. ></ENTRY
  82935. ></RBW-ROW
  82936. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>name</CELLHEADING
  82937. ></ENTRY
  82938. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>class_type</CELLHEADING
  82939. ></ENTRY
  82940. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>bid</CELLHEADING
  82941. ></ENTRY
  82942. ></RBW-ROW
  82943. ></THEAD
  82944. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>X</CELLBODY
  82945. ></ENTRY
  82946. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  82947. ></ENTRY
  82948. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>333</CELLBODY
  82949. ></ENTRY
  82950. ></RBW-ROW
  82951. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  82952. ></ENTRY
  82953. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>B</CELLBODY
  82954. ></ENTRY
  82955. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>444</CELLBODY
  82956. ></ENTRY
  82957. ></RBW-ROW
  82958. ></TBODY
  82959. ></TGROUP
  82960. ></RBW-TABLE
  82961. ><B.BODY></B.BODY
  82962. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="148p"><COLSPEC COLNAME="2" COLWIDTH="148p"><COLSPEC COLNAME="3" COLWIDTH="148p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Table C</CELLHEADING
  82963. ></ENTRY
  82964. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  82965. ></ENTRY
  82966. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  82967. ></ENTRY
  82968. ></RBW-ROW
  82969. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>name</CELLHEADING
  82970. ></ENTRY
  82971. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>class_type</CELLHEADING
  82972. ></ENTRY
  82973. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>cdate</CELLHEADING
  82974. ></ENTRY
  82975. ></RBW-ROW
  82976. ></THEAD
  82977. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Y</CELLBODY
  82978. ></ENTRY
  82979. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C</CELLBODY
  82980. ></ENTRY
  82981. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>940708</CELLBODY
  82982. ></ENTRY
  82983. ></RBW-ROW
  82984. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Z</CELLBODY
  82985. ></ENTRY
  82986. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>C</CELLBODY
  82987. ></ENTRY
  82988. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>940709</CELLBODY
  82989. ></ENTRY
  82990. ></RBW-ROW
  82991. ></TBODY
  82992. ></TGROUP
  82993. ></RBW-TABLE
  82994. ></LABEL
  82995. ></SUBSECTION
  82996. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21782"></RBW-ANCHOR
  82997. >Association</SS.SUBSEC.HEAD
  82998. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  82999. >Introduction</L.LABEL
  83000. ><B.BODY>Which SQL code is generated for persistent classes in an association depends on the multiplicity of the association. This subsection contains some examples of associations with a different multiplicity.</B.BODY
  83001. ></LABEL
  83002. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83003. >Properties</L.LABEL
  83004. ><B.BODY>The following association properties affect SQL code generation:</B.BODY
  83005. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83006. ></RBW-AUTOGEN
  83007. ></RBW-MARKER
  83008. ><RBW-PARABODY>RI properties</RBW-PARABODY
  83009. ></LB.LIST.BULLET
  83010. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83011. >For more information</SL.SUBLABEL
  83012. ><B.BODY>Referential Integrity is further discussed in <RBW-XREF REFID="24352" TYPE="XREF-TEXTCOPY">Customizing Referential Integrity Policies</RBW-XREF
  83013. >.</B.BODY
  83014. ></LABEL
  83015. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83016. >Multiplicity: one (optional)</L.LABEL
  83017. ><B.BODY>In relationships that meet the following multiplicity requirements, it does not matter which table acts as master and which as detail:</B.BODY
  83018. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83019. ></RBW-AUTOGEN
  83020. ></RBW-MARKER
  83021. ><RBW-PARABODY>a multiplicity of <CX5FX5FTERM>one</CX5FX5FTERM
  83022. > at one side</RBW-PARABODY
  83023. ></LB.LIST.BULLET
  83024. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83025. ></RBW-AUTOGEN
  83026. ></RBW-MARKER
  83027. ><RBW-PARABODY>a multiplicity that is not <CX5FX5FTERM>many</CX5FX5FTERM
  83028. > at the other side</RBW-PARABODY
  83029. ></LB.LIST.BULLET
  83030. ><B.BODY>However, since there has to be a master and a detail, the rule is that the destination class becomes master. The destination class is the class <CX5FX5FTERM>to</CX5FX5FTERM
  83031. > which the association was drawn in the CD. The class <CX5FX5FTERM>from</CX5FX5FTERM
  83032. > which the association was drawn becomes the detail. </B.BODY
  83033. ><B.BODY>The association in the diagram below meets the requirements. The master&truehy;detail pair is:</B.BODY
  83034. ><E.EXAMPLE>A(master) &truehy; B(detail)</E.EXAMPLE
  83035. ><B.BODY>although it could have been B(master) &truehy; A(detail) too. Which class is destination class cannot be detected in the diagram. You could detect this, though, using the Properties dialog box. The role name at the side of the the source class is called <CX5FX5FTERM>Association Role At Start</CX5FX5FTERM
  83036. > and the one at the side of the destination class <CX5FX5FTERM>Association At Role End</CX5FX5FTERM
  83037. >.</B.BODY
  83038. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00755.unk" origfile="pics/sqasm1.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83039. ></FA.FIGURE.ANCHOR
  83040. ><B.BODY><CX5FX5FFILE.NAME>create_tables.sql</CX5FX5FFILE.NAME
  83041. >:</B.BODY
  83042. ><EM.EXAMPLE.MONO>&truehy;&truehy; Create table A</EM.EXAMPLE.MONO
  83043. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  83044. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  83045. ><EM.EXAMPLE.MONO>   aName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83046. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83047. ><EM.EXAMPLE.MONO>   bName CHAR(40)  ,</EM.EXAMPLE.MONO
  83048. ><EM.EXAMPLE.MONO>   i_class_type VARCHAR(32)  ,</EM.EXAMPLE.MONO
  83049. ><EM.EXAMPLE.MONO>   aDate INT  ,</EM.EXAMPLE.MONO
  83050. ><EM.EXAMPLE.MONO>   PRIMARY KEY (aName, class_type)</EM.EXAMPLE.MONO
  83051. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  83052. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  83053. ><EM.EXAMPLE.MONO>&truehy;&truehy; Create table B</EM.EXAMPLE.MONO
  83054. ><EM.EXAMPLE.MONO> </EM.EXAMPLE.MONO
  83055. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  83056. ><EM.EXAMPLE.MONO>   bName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83057. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83058. ><EM.EXAMPLE.MONO>   bDate INT  ,</EM.EXAMPLE.MONO
  83059. ><EM.EXAMPLE.MONO>   PRIMARY KEY (bName, class_type)</EM.EXAMPLE.MONO
  83060. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  83061. ><EM.EXAMPLE.MONO>ALTER TABLE A</EM.EXAMPLE.MONO
  83062. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (bName, i_class_type)</EM.EXAMPLE.MONO
  83063. ><EM.EXAMPLE.MONO>   REFERENCES B;</EM.EXAMPLE.MONO
  83064. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  83065. ></RBW-AUTOGEN
  83066. >If you draw an association with a multiplicity of one (mandatory) at both sides no sql scripts will be generated because of insert policy conflicts. The following error message is issued:</W.WARNING
  83067. ><E.EXAMPLE>ERROR [340023]: Conflict in the insert policies between detail table ‘classC2’ and master table ‘classC1’. They are excluding each other.</E.EXAMPLE
  83068. ><B.BODY>Refer to <RBW-XREF REFID="31513" TYPE="XREF-TEXTCOPY">SQL types</RBW-XREF
  83069. > for details.</B.BODY
  83070. ></LABEL
  83071. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83072. >Multiplicity: many (optional)</L.LABEL
  83073. ><B.BODY>In relationships that meet the following requirements, the class at the end of the <CX5FX5FTERM>many</CX5FX5FTERM
  83074. > multiplicity acts as detail in the master&truehy;detail pair:</B.BODY
  83075. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83076. ></RBW-AUTOGEN
  83077. ></RBW-MARKER
  83078. ><RBW-PARABODY>The association has no class or link attribute associated to it</RBW-PARABODY
  83079. ></LB.LIST.BULLET
  83080. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83081. ></RBW-AUTOGEN
  83082. ></RBW-MARKER
  83083. ><RBW-PARABODY>The multiplicity is not <CX5FX5FTERM>many</CX5FX5FTERM
  83084. > at either ends </RBW-PARABODY
  83085. ></LB.LIST.BULLET
  83086. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83087. ></RBW-AUTOGEN
  83088. ></RBW-MARKER
  83089. ><RBW-PARABODY>The relationship is not qualified</RBW-PARABODY
  83090. ></LB.LIST.BULLET
  83091. ><B.BODY>The diagrams depicted below meet these requirements. The master&truehy;detail pairs are:</B.BODY
  83092. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="219p"><COLSPEC COLNAME="2" COLWIDTH="229p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>(1) (2)</CELLHEADING
  83093. ></ENTRY
  83094. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>(3)</CELLHEADING
  83095. ></ENTRY
  83096. ></RBW-ROW
  83097. ></THEAD
  83098. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A(master) &truehy; B(detail)</CELLBODY
  83099. ></ENTRY
  83100. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A(master) &truehy; A(detail).</CELLBODY
  83101. ></ENTRY
  83102. ></RBW-ROW
  83103. ></TBODY
  83104. ></TGROUP
  83105. ></RBW-TABLE
  83106. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83107. >Diagram 1</SL.SUBLABEL
  83108. ><B.BODY></B.BODY
  83109. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00756.unk" origfile="pics/sqasmo1.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83110. ></FA.FIGURE.ANCHOR
  83111. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83112. >Diagram 2</SL.SUBLABEL
  83113. ><B.BODY></B.BODY
  83114. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00757.unk" origfile="pics/sqasmo2.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83115. ></FA.FIGURE.ANCHOR
  83116. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83117. >Diagram 3</SL.SUBLABEL
  83118. ><B.BODY></B.BODY
  83119. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00758.unk" origfile="pics/sqasmo3.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83120. ></FA.FIGURE.ANCHOR
  83121. ><B.BODY><CX5FX5FFILE.NAME>create_tables.sql (1)</CX5FX5FFILE.NAME
  83122. >:</B.BODY
  83123. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83124. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  83125. ><EM.EXAMPLE.MONO>   aName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83126. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83127. ><EM.EXAMPLE.MONO>   aDate INT  ,</EM.EXAMPLE.MONO
  83128. ><EM.EXAMPLE.MONO>   PRIMARY KEY (aName, class_type)</EM.EXAMPLE.MONO
  83129. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  83130. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  83131. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83132. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  83133. ><EM.EXAMPLE.MONO>   bName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83134. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83135. ><EM.EXAMPLE.MONO>   aName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83136. ><EM.EXAMPLE.MONO>   i_class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83137. ><EM.EXAMPLE.MONO>   bDate INT  ,</EM.EXAMPLE.MONO
  83138. ><EM.EXAMPLE.MONO>   PRIMARY KEY (bName, class_type)</EM.EXAMPLE.MONO
  83139. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  83140. ><EM.EXAMPLE.MONO>ALTER TABLE B</EM.EXAMPLE.MONO
  83141. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (aName, i_class_type)</EM.EXAMPLE.MONO
  83142. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  83143. ></LABEL
  83144. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83145. >Multiplicity: many &truehy;many (m:n)</L.LABEL
  83146. ><B.BODY>For relations that meet the following requirements, an extra table with the name of the association is generated:</B.BODY
  83147. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83148. ></RBW-AUTOGEN
  83149. ></RBW-MARKER
  83150. ><RBW-PARABODY>The association has no class or link attribute associated to it</RBW-PARABODY
  83151. ></LB.LIST.BULLET
  83152. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83153. ></RBW-AUTOGEN
  83154. ></RBW-MARKER
  83155. ><RBW-PARABODY>If the relationship is not qualified, the multiplicity of the relationship is <CX5FX5FTERM>many</CX5FX5FTERM
  83156. > at both sides (m&truehy;n relationship).</RBW-PARABODY
  83157. ></LB.LIST.BULLET
  83158. ><B.BODY>The diagram depicted below meets these requirements. The extra table <CX5FX5FFILE.NAME>assoc</CX5FX5FFILE.NAME
  83159. > that is generated acts as detail in the master&truehy;detail pairs:</B.BODY
  83160. ><E.EXAMPLE>A(master) &truehy; assoc (detail) </E.EXAMPLE
  83161. ><E.EXAMPLE>B(master) &truehy; assoc (detail)</E.EXAMPLE
  83162. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00759.unk" origfile="pics/sqasmm.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83163. ></FA.FIGURE.ANCHOR
  83164. ><B.BODY><CX5FX5FFILE.NAME>create_tables.sql</CX5FX5FFILE.NAME
  83165. >:</B.BODY
  83166. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83167. ><EWM.EXAMPLEW.MONO>CREATE TABLE assoc (</EWM.EXAMPLEW.MONO
  83168. ><EWM.EXAMPLEW.MONO>   bName CHAR(40) NOT NULL ,</EWM.EXAMPLEW.MONO
  83169. ><EWM.EXAMPLEW.MONO>   class_type VARCHAR(32) NOT NULL ,</EWM.EXAMPLEW.MONO
  83170. ><EWM.EXAMPLEW.MONO>   aName CHAR(40) NOT NULL ,</EWM.EXAMPLEW.MONO
  83171. ><EWM.EXAMPLEW.MONO>   i_class_type VARCHAR(32) NOT NULL ,</EWM.EXAMPLEW.MONO
  83172. ><EWM.EXAMPLEW.MONO>   PRIMARY KEY (bName, class_type, aName, i_class_type)</EWM.EXAMPLEW.MONO
  83173. ><EWM.EXAMPLEW.MONO>);</EWM.EXAMPLEW.MONO
  83174. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83175. ><EWM.EXAMPLEW.MONO>CREATE TABLE A (</EWM.EXAMPLEW.MONO
  83176. ><EWM.EXAMPLEW.MONO>   aName CHAR(40) NOT NULL ,</EWM.EXAMPLEW.MONO
  83177. ><EWM.EXAMPLEW.MONO>   class_type VARCHAR(32) NOT NULL ,</EWM.EXAMPLEW.MONO
  83178. ><EWM.EXAMPLEW.MONO>   aDate INT  ,</EWM.EXAMPLEW.MONO
  83179. ><EWM.EXAMPLEW.MONO>   PRIMARY KEY (aName, class_type)</EWM.EXAMPLEW.MONO
  83180. ><EWM.EXAMPLEW.MONO>);</EWM.EXAMPLEW.MONO
  83181. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83182. ><EWM.EXAMPLEW.MONO>CREATE TABLE B (</EWM.EXAMPLEW.MONO
  83183. ><EWM.EXAMPLEW.MONO>   bName CHAR(40) NOT NULL ,</EWM.EXAMPLEW.MONO
  83184. ><EWM.EXAMPLEW.MONO>   class_type VARCHAR(32) NOT NULL ,</EWM.EXAMPLEW.MONO
  83185. ><EWM.EXAMPLEW.MONO>   bDate INT  ,</EWM.EXAMPLEW.MONO
  83186. ><EWM.EXAMPLEW.MONO>   PRIMARY KEY (bName, class_type)</EWM.EXAMPLEW.MONO
  83187. ><EWM.EXAMPLEW.MONO>);</EWM.EXAMPLEW.MONO
  83188. ><EWM.EXAMPLEW.MONO>ALTER TABLE assoc</EWM.EXAMPLEW.MONO
  83189. ><EWM.EXAMPLEW.MONO>   ADD CONSTRAINT FOREIGN KEY (bName, class_type)</EWM.EXAMPLEW.MONO
  83190. ><EWM.EXAMPLEW.MONO>   REFERENCES B;</EWM.EXAMPLEW.MONO
  83191. ><EWM.EXAMPLEW.MONO>ALTER TABLE assoc</EWM.EXAMPLEW.MONO
  83192. ><EWM.EXAMPLEW.MONO>   ADD CONSTRAINT FOREIGN KEY (aName, i_class_type)</EWM.EXAMPLEW.MONO
  83193. ><EWM.EXAMPLEW.MONO>   REFERENCES A;</EWM.EXAMPLEW.MONO
  83194. ><B.BODY></B.BODY
  83195. ></LABEL
  83196. ></SUBSECTION
  83197. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21074"></RBW-ANCHOR
  83198. >Association with a <RBW-IDXTERM TERM1="link attribute" TERM2="in persistent (SQL) code generation"></RBW-IDXTERM
  83199. >Link Object</SS.SUBSEC.HEAD
  83200. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83201. >Master&truehy;detail pairs</L.LABEL
  83202. ><B.BODY>In associations that have a class or a link attribute box associated to them, the associative object acts as detail in the master&truehy;detail&truehy;pairs. In the example diagrams depicted below, the master&truehy;detail pairs are:</B.BODY
  83203. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="208p"><COLSPEC COLNAME="2" COLWIDTH="240p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>(1)</CELLHEADING
  83204. ></ENTRY
  83205. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>(2)</CELLHEADING
  83206. ></ENTRY
  83207. ></RBW-ROW
  83208. ></THEAD
  83209. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>A(master) &truehy; C (detail)</CELLBODY
  83210. ></ENTRY
  83211. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>A(master) &truehy; assoc (detail)</CELLBODY
  83212. ></ENTRY
  83213. ></RBW-ROW
  83214. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>B(master) &truehy; C (detail)</CELLBODY
  83215. ></ENTRY
  83216. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>B(master) &truehy; assoc (detail)</CELLBODY
  83217. ></ENTRY
  83218. ></RBW-ROW
  83219. ></TBODY
  83220. ></TGROUP
  83221. ></RBW-TABLE
  83222. ></LABEL
  83223. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83224. >Example</L.LABEL
  83225. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83226. >Diagram 1</SL.SUBLABEL
  83227. ><B.BODY></B.BODY
  83228. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00760.unk" origfile="pics/sqasln1.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83229. ></FA.FIGURE.ANCHOR
  83230. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83231. >Diagram2</SL.SUBLABEL
  83232. ><B.BODY></B.BODY
  83233. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00761.unk" origfile="pics/sqasln2.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83234. ></FA.FIGURE.ANCHOR
  83235. ><B.BODY><CX5FX5FFILE.NAME>create_tables.sql (2)</CX5FX5FFILE.NAME
  83236. >:</B.BODY
  83237. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83238. ><EM.EXAMPLE.MONO>CREATE TABLE assoc (</EM.EXAMPLE.MONO
  83239. ><EM.EXAMPLE.MONO>   bName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83240. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83241. ><EM.EXAMPLE.MONO>   aName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83242. ><EM.EXAMPLE.MONO>   i_class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83243. ><EM.EXAMPLE.MONO>   cName CHAR(40)  ,</EM.EXAMPLE.MONO
  83244. ><EM.EXAMPLE.MONO>   cDate INT  ,</EM.EXAMPLE.MONO
  83245. ><EM.EXAMPLE.MONO>   PRIMARY KEY (bName, class_type)</EM.EXAMPLE.MONO
  83246. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  83247. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83248. ><EM.EXAMPLE.MONO>CREATE TABLE A (</EM.EXAMPLE.MONO
  83249. ><EM.EXAMPLE.MONO>   aName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83250. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83251. ><EM.EXAMPLE.MONO>   aDate INT  ,</EM.EXAMPLE.MONO
  83252. ><EM.EXAMPLE.MONO>   PRIMARY KEY (aName, class_type)</EM.EXAMPLE.MONO
  83253. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  83254. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83255. ><EM.EXAMPLE.MONO>CREATE TABLE B (</EM.EXAMPLE.MONO
  83256. ><EM.EXAMPLE.MONO>   bName CHAR(40) NOT NULL ,</EM.EXAMPLE.MONO
  83257. ><EM.EXAMPLE.MONO>   class_type VARCHAR(32) NOT NULL ,</EM.EXAMPLE.MONO
  83258. ><EM.EXAMPLE.MONO>   bDate INT  ,</EM.EXAMPLE.MONO
  83259. ><EM.EXAMPLE.MONO>   PRIMARY KEY (bName, class_type)</EM.EXAMPLE.MONO
  83260. ><EM.EXAMPLE.MONO>);</EM.EXAMPLE.MONO
  83261. ><EM.EXAMPLE.MONO>ALTER TABLE assoc</EM.EXAMPLE.MONO
  83262. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (bName, class_type)</EM.EXAMPLE.MONO
  83263. ><EM.EXAMPLE.MONO>   REFERENCES B;</EM.EXAMPLE.MONO
  83264. ><EM.EXAMPLE.MONO>ALTER TABLE assoc</EM.EXAMPLE.MONO
  83265. ><EM.EXAMPLE.MONO>   ADD CONSTRAINT FOREIGN KEY (aName, i_class_type)</EM.EXAMPLE.MONO
  83266. ><EM.EXAMPLE.MONO>   REFERENCES A;</EM.EXAMPLE.MONO
  83267. ><B.BODY></B.BODY
  83268. ></LABEL
  83269. ></SUBSECTION
  83270. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="21059"></RBW-ANCHOR
  83271. >Qualified Association</SS.SUBSEC.HEAD
  83272. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83273. >Introduction</L.LABEL
  83274. ><B.BODY>The SQL code generated for qualified associations is similar to the code generated for non&truehy;qualified associations (see <RBW-XREF REFID="21782" TYPE="XREF-TEXTCOPY">Association</RBW-XREF
  83275. >). </B.BODY
  83276. ><B.BODY>Additionally, an extra table with the same name as the association is generated for qualified associations. The association must not have a class or link attribute associated to it. </B.BODY
  83277. ></LABEL
  83278. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83279. >Example</L.LABEL
  83280. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83281. >Diagram 1</SL.SUBLABEL
  83282. ><B.BODY></B.BODY
  83283. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00762.unk" origfile="pics/sqasmn1.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83284. ></FA.FIGURE.ANCHOR
  83285. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83286. >Diagram 2</SL.SUBLABEL
  83287. ><B.BODY></B.BODY
  83288. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00763.unk" origfile="pics/sqasmn2.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83289. ></FA.FIGURE.ANCHOR
  83290. ><B.BODY><CX5FX5FFILE.NAME>create_tables.sql</CX5FX5FFILE.NAME
  83291. >:</B.BODY
  83292. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83293. ><EWM.EXAMPLEW.MONO>CREATE TABLE assoc (</EWM.EXAMPLEW.MONO
  83294. ><EWM.EXAMPLEW.MONO>   aName CHAR(40) NOT NULL ,</EWM.EXAMPLEW.MONO
  83295. ><EWM.EXAMPLEW.MONO>   class_type VARCHAR(32) NOT NULL ,</EWM.EXAMPLEW.MONO
  83296. ><EWM.EXAMPLEW.MONO>   bName CHAR(40) NOT NULL ,</EWM.EXAMPLEW.MONO
  83297. ><EWM.EXAMPLEW.MONO>   i_class_type VARCHAR(32) NOT NULL ,</EWM.EXAMPLEW.MONO
  83298. ><EWM.EXAMPLEW.MONO>   Q INT NOT NULL ,</EWM.EXAMPLEW.MONO
  83299. ><EWM.EXAMPLEW.MONO>   PRIMARY KEY (aName, class_type, bName, i_class_type, Q)</EWM.EXAMPLEW.MONO
  83300. ><EWM.EXAMPLEW.MONO>);</EWM.EXAMPLEW.MONO
  83301. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  83302. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83303. ><EWM.EXAMPLEW.MONO>CREATE TABLE A (</EWM.EXAMPLEW.MONO
  83304. ><EWM.EXAMPLEW.MONO>   aName CHAR(40) NOT NULL ,</EWM.EXAMPLEW.MONO
  83305. ><EWM.EXAMPLEW.MONO>   class_type VARCHAR(32) NOT NULL ,</EWM.EXAMPLEW.MONO
  83306. ><EWM.EXAMPLEW.MONO>   aDate INT  ,</EWM.EXAMPLEW.MONO
  83307. ><EWM.EXAMPLEW.MONO>   PRIMARY KEY (aName, class_type)</EWM.EXAMPLEW.MONO
  83308. ><EWM.EXAMPLEW.MONO>);</EWM.EXAMPLEW.MONO
  83309. ><EWM.EXAMPLEW.MONO> </EWM.EXAMPLEW.MONO
  83310. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83311. ><EWM.EXAMPLEW.MONO>CREATE TABLE B (</EWM.EXAMPLEW.MONO
  83312. ><EWM.EXAMPLEW.MONO>   bName CHAR(40) NOT NULL ,</EWM.EXAMPLEW.MONO
  83313. ><EWM.EXAMPLEW.MONO>   class_type VARCHAR(32) NOT NULL ,</EWM.EXAMPLEW.MONO
  83314. ><EWM.EXAMPLEW.MONO>   bName INT  ,</EWM.EXAMPLEW.MONO
  83315. ><EWM.EXAMPLEW.MONO>   PRIMARY KEY (bName, class_type)</EWM.EXAMPLEW.MONO
  83316. ><EWM.EXAMPLEW.MONO>);</EWM.EXAMPLEW.MONO
  83317. ><EWM.EXAMPLEW.MONO>ALTER TABLE assoc</EWM.EXAMPLEW.MONO
  83318. ><EWM.EXAMPLEW.MONO>   ADD CONSTRAINT FOREIGN KEY (aName, class_type)</EWM.EXAMPLEW.MONO
  83319. ><EWM.EXAMPLEW.MONO>   REFERENCES A;</EWM.EXAMPLEW.MONO
  83320. ><EWM.EXAMPLEW.MONO>ALTER TABLE assoc</EWM.EXAMPLEW.MONO
  83321. ><EWM.EXAMPLEW.MONO>   ADD CONSTRAINT FOREIGN KEY (bName, i_class_type)</EWM.EXAMPLEW.MONO
  83322. ><EWM.EXAMPLEW.MONO>   REFERENCES B;</EWM.EXAMPLEW.MONO
  83323. ><B.BODY></B.BODY
  83324. ></LABEL
  83325. ></SUBSECTION
  83326. ></SECTION
  83327. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="13730"></RBW-ANCHOR
  83328. ><RBW-ANCHOR ID="20418"></RBW-ANCHOR
  83329. >Persistent NewEra Code <RBW-IDXTERM TERM1="code generation" TERM2="persistent (NewEra)"></RBW-IDXTERM
  83330. ><RBW-IDXTERM TERM1="persistent code generation" TERM2="NewEra"></RBW-IDXTERM
  83331. >Generation<RBW-IDXTERM TERM1="code generation" TERM2="persistent"></RBW-IDXTERM
  83332. ><RBW-IDXTERM TERM1="persistent code generation"></RBW-IDXTERM
  83333. ></S.SECTION.HEAD
  83334. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83335. >Introduction</L.LABEL
  83336. ><B.BODY>The NewEra code generator generates NewEra classes from persistent classes in CDs. A runtime system takes care of the mapping of these generated classes onto the target RDBMS.</B.BODY
  83337. ></LABEL
  83338. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83339. >In this section</L.LABEL
  83340. ><B.BODY>This section contains a description of the runtime system used to map NewEra classes onto the target RDBMS. It contains the following subsections, and it discusses how certain constructions are generated into NewEra code:</B.BODY
  83341. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  83342. ></ENTRY
  83343. ></RBW-ROW
  83344. ></THEAD
  83345. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17255" TYPE="XREF-TEXTCOPY">The Runtime System&rbwtab;4–21</RBW-XREF
  83346. ></SB.SECTION.BLOCK.TABLE
  83347. ></ENTRY
  83348. ></RBW-ROW
  83349. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14975" TYPE="XREF-TEXTCOPY">The Class DBObject&rbwtab;4–22</RBW-XREF
  83350. ></SB.SECTION.BLOCK.TABLE
  83351. ></ENTRY
  83352. ></RBW-ROW
  83353. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22004" TYPE="XREF-TEXTCOPY">Generated Functions&rbwtab;4–24</RBW-XREF
  83354. ></SB.SECTION.BLOCK.TABLE
  83355. ></ENTRY
  83356. ></RBW-ROW
  83357. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20353" TYPE="XREF-TEXTCOPY">Data Attribute&rbwtab;4–27</RBW-XREF
  83358. ></SB.SECTION.BLOCK.TABLE
  83359. ></ENTRY
  83360. ></RBW-ROW
  83361. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="18253" TYPE="XREF-TEXTCOPY">Data Attribute Properties&rbwtab;4–31</RBW-XREF
  83362. ></SB.SECTION.BLOCK.TABLE
  83363. ></ENTRY
  83364. ></RBW-ROW
  83365. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34523" TYPE="XREF-TEXTCOPY">Constructor&rbwtab;4–33</RBW-XREF
  83366. ></SB.SECTION.BLOCK.TABLE
  83367. ></ENTRY
  83368. ></RBW-ROW
  83369. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42591" TYPE="XREF-TEXTCOPY">Generalizations&rbwtab;4–35</RBW-XREF
  83370. ></SB.SECTION.BLOCK.TABLE
  83371. ></ENTRY
  83372. ></RBW-ROW
  83373. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37283" TYPE="XREF-TEXTCOPY">Associations&rbwtab;4–37</RBW-XREF
  83374. ></SB.SECTION.BLOCK.TABLE
  83375. ></ENTRY
  83376. ></RBW-ROW
  83377. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27716" TYPE="XREF-TEXTCOPY">Example&rbwtab;4–38</RBW-XREF
  83378. ></SB.SECTION.BLOCK.TABLE
  83379. ></ENTRY
  83380. ></RBW-ROW
  83381. ></TBODY
  83382. ></TGROUP
  83383. ></RBW-TABLE
  83384. ></LABEL
  83385. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17255"></RBW-ANCHOR
  83386. >The Runtime System</SS.SUBSEC.HEAD
  83387. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83388. >Introduction</L.LABEL
  83389. ><B.BODY>The runtime system takes care of the mapping of persistent classes onto the target database. One of the main elements in the runtime system is the class DBObject, which is part of the class library <CX5FX5FOBJECT.NAME>lw4omtne</CX5FX5FOBJECT.NAME
  83390. >.</B.BODY
  83391. ></LABEL
  83392. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83393. >For more information:</L.LABEL
  83394. ><B.BODY>The functions the class DBObject offers are discussed in <RBW-XREF REFID="14975" TYPE="XREF-TEXTCOPY">The Class DBObject</RBW-XREF
  83395. >. </B.BODY
  83396. ><B.BODY>The generated member functions for persistent classes for the purpose of the runtime system are discussed in <RBW-XREF REFID="22004" TYPE="XREF-TEXTCOPY">Generated Functions</RBW-XREF
  83397. >.</B.BODY
  83398. ><B.BODY>The generation of SQL scripts, which is also part of the runtime system, is discussed elsewhere in this manual, in <RBW-XREF REFID="37874" TYPE="XREF-TEXTCOPY">SQL Generation</RBW-XREF
  83399. >. </B.BODY
  83400. ></LABEL
  83401. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83402. >Root class</L.LABEL
  83403. ><B.BODY>In this sub section, the term <CX5FX5FOBJECT.NAME>persistent root class</CX5FX5FOBJECT.NAME
  83404. > is used. It refers to a persistent class that has no super class. Persistent sub classes in a generalization are treated differently from persistent root classes.</B.BODY
  83405. ></LABEL
  83406. ></SUBSECTION
  83407. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="14975"></RBW-ANCHOR
  83408. >The Class DBObject</SS.SUBSEC.HEAD
  83409. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83410. >Introduction</L.LABEL
  83411. ><B.BODY>The class DBObject is part of the class library <CX5FX5FOBJECT.NAME>lw4omtne</CX5FX5FOBJECT.NAME
  83412. > (see <RBW-XREF REFID="18476" TYPE="XREF-TEXTCOPY">Class Library lw4omtne</RBW-XREF
  83413. >). It offers some general functions regarding database connection and transaction support for the runtime system. </B.BODY
  83414. ></LABEL
  83415. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83416. >Functions</L.LABEL
  83417. ><B.BODY>Below, functions for database connection and transaction support are listed, together with some brief comments. The comments have leading dashes (&truehy;&truehy;):</B.BODY
  83418. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Connect to the specified database, using the specified connection object.</EWM.EXAMPLEW.MONO
  83419. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; This function must be called before any database operation can be executed.</EWM.EXAMPLEW.MONO
  83420. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; When no connection object is specified, the implicit connection object is</EWM.EXAMPLEW.MONO
  83421. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; used. Returns 0 on success, else &truehy;1.</EWM.EXAMPLEW.MONO
  83422. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83423. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>connectDB</CX5FX5FFILE.NAME
  83424. >(dbName CHAR(*), connObj ixSQLConnect: NULL)</EWM.EXAMPLEW.MONO
  83425. ><EWM.EXAMPLEW.MONO>      RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83426. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Get the connection object used for making the current database connection.</EWM.EXAMPLEW.MONO
  83427. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83428. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>getConnection</CX5FX5FFILE.NAME
  83429. >() RETURNING ixSQLConnect</EWM.EXAMPLEW.MONO
  83430. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Close the database connection made with the current connection object.</EWM.EXAMPLEW.MONO
  83431. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83432. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>disconnectDB</CX5FX5FFILE.NAME
  83433. >() RETURNING VOID</EWM.EXAMPLEW.MONO
  83434. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Commit or rollback the current transaction. Both functions use the</EWM.EXAMPLEW.MONO
  83435. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; transaction facilities of the connection object.</EWM.EXAMPLEW.MONO
  83436. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83437. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>commit</CX5FX5FFILE.NAME
  83438. >() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83439. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>rollback</CX5FX5FFILE.NAME
  83440. >() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83441. ><B.BODY>The class DBObject also serves as base class for every persistent root class. (A root class is a persistent class without a super class). It provides every persistent class with the following interface:</B.BODY
  83442. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Get the case sensitive class name of the object.</EWM.EXAMPLEW.MONO
  83443. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83444. ><EWM.EXAMPLEW.MONO>FUNCTION <CX5FX5FFILE.NAME>getClassName</CX5FX5FFILE.NAME
  83445. >() RETURNING ixString</EWM.EXAMPLEW.MONO
  83446. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Get the value of the internal ‘database state’ of the object.</EWM.EXAMPLEW.MONO
  83447. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; This value is one of CREATED (the default; the object is just created),</EWM.EXAMPLEW.MONO
  83448. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; NORMAL (everything is fine)</EWM.EXAMPLEW.MONO
  83449. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; and SQL_ERROR (SQL error occurred).</EWM.EXAMPLEW.MONO
  83450. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83451. ><EWM.EXAMPLEW.MONO>FUNCTION <CX5FX5FFILE.NAME>getState</CX5FX5FFILE.NAME
  83452. >() RETURNING SMALLINT</EWM.EXAMPLEW.MONO
  83453. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Set the internal ‘database state’ to INIT_ERROR.</EWM.EXAMPLEW.MONO
  83454. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; This function is typically called when the initialization of an object</EWM.EXAMPLEW.MONO
  83455. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; failed just after the construction of an object.</EWM.EXAMPLEW.MONO
  83456. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83457. ><EWM.EXAMPLEW.MONO>FUNCTION <CX5FX5FFILE.NAME>resetState</CX5FX5FFILE.NAME
  83458. >() RETURNING VOID</EWM.EXAMPLEW.MONO
  83459. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Process the SQL status after execution of SQL statement stmt. After</EWM.EXAMPLEW.MONO
  83460. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; this function is called , the internal ‘database state’ of the object</EWM.EXAMPLEW.MONO
  83461. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; is either NORMAL or SQL_ERROR. In case of SQL_ERROR, the public variable</EWM.EXAMPLEW.MONO
  83462. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; errorStmt is set to stmt. Returns &truehy;1 if the SQL status indicates an</EWM.EXAMPLEW.MONO
  83463. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; error, else 0.</EWM.EXAMPLEW.MONO
  83464. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83465. ><EWM.EXAMPLEW.MONO>PUBLIC VARIABLE errorStmt ixSQLStmt</EWM.EXAMPLEW.MONO
  83466. ><EWM.EXAMPLEW.MONO>FUNCTION <CX5FX5FFILE.NAME>processSqlStatus</CX5FX5FFILE.NAME
  83467. >(stmt ixSQLStmt) RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83468. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Get the ODBC error message of the failing SQL statement stmt.</EWM.EXAMPLEW.MONO
  83469. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83470. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>getODBCErrMsg</CX5FX5FFILE.NAME
  83471. >(stmt ixSQLStmt) RETURNING CHAR(*)</EWM.EXAMPLEW.MONO
  83472. ></LABEL
  83473. ></SUBSECTION
  83474. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="22004"></RBW-ANCHOR
  83475. >Generated Functions</SS.SUBSEC.HEAD
  83476. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83477. >Introduction</L.LABEL
  83478. ><B.BODY>The NewEra code generator generates a number of member functions for classes on the purpose of the runtime system. Some of these functions are generated for all classes and some exclusively for persistent root classes. </B.BODY
  83479. ></LABEL
  83480. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83481. ><RBW-ANCHOR ID="17541"></RBW-ANCHOR
  83482. >Functions generated exclusively for persistent root classes </L.LABEL
  83483. ><B.BODY>The following functions are generated for root classes only. You can call them directly.</B.BODY
  83484. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  83485. ></RBW-AUTOGEN
  83486. >You should not specify these functions as operations in the class definition in a CD.</W.WARNING
  83487. ><B.BODY></B.BODY
  83488. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Get a rootclass or one of its subclasses instantiated by supplying the</EWM.EXAMPLEW.MONO
  83489. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; keys of the class. Returns a rootclass object reference when it is found</EWM.EXAMPLEW.MONO
  83490. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; in the database, else NULL.</EWM.EXAMPLEW.MONO
  83491. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83492. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>findInDB</CX5FX5FFILE.NAME
  83493. >(<keysOfPersClass>) RETURNING <persClass></EWM.EXAMPLEW.MONO
  83494. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Get the <persClass>Set filled with base class object references that meet</EWM.EXAMPLEW.MONO
  83495. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; the query criteria in the whereClause. The whereClause should be a valid SQL</EWM.EXAMPLEW.MONO
  83496. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; here clause (without the reserved word "WHERE") in the context of the</EWM.EXAMPLEW.MONO
  83497. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; rootclass. Returns 0 on success, else &truehy;1.</EWM.EXAMPLEW.MONO
  83498. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83499. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>searchInDB</CX5FX5FFILE.NAME
  83500. >(<persClass>Set RefSet, whereClause ixString : NULL)</EWM.EXAMPLEW.MONO
  83501. ><EWM.EXAMPLEW.MONO>      RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83502. ></LABEL
  83503. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83504. >Functions generated for all persistent classes </L.LABEL
  83505. ><B.BODY>The following functions for writing objects to and reading objects from the database are generated for all persistent classes. You can call these functions directly:</B.BODY
  83506. ><B.BODY></B.BODY
  83507. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Insert a new persistent object in the database. New in this context means</EWM.EXAMPLEW.MONO
  83508. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; that the object does not yet exist in the database. This function is</EWM.EXAMPLEW.MONO
  83509. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; typically used after a persistent object has been instantiated and its</EWM.EXAMPLEW.MONO
  83510. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; attributes are set. After calling this function the data in the database</EWM.EXAMPLEW.MONO
  83511. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; is up to date with the data in the object itself. Returns 0 on success,</EWM.EXAMPLEW.MONO
  83512. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; else &truehy;1.</EWM.EXAMPLEW.MONO
  83513. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83514. ><EWM.EXAMPLEW.MONO>PUBLIC FUNCTION <CX5FX5FFILE.NAME>insertInDB</CX5FX5FFILE.NAME
  83515. >() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83516. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Read an existing persistent object from the database. Existing in this</EWM.EXAMPLEW.MONO
  83517. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; context means that the object does exist in the database. This function</EWM.EXAMPLEW.MONO
  83518. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; is typically used after a persistent object has been instantiated. For</EWM.EXAMPLEW.MONO
  83519. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; instance, the function findInDB mentioned before uses this function.</EWM.EXAMPLEW.MONO
  83520. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; After calling this function the data in the object is up to date with the</EWM.EXAMPLEW.MONO
  83521. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; data in the database. Returns 0 on success, else &truehy;1.</EWM.EXAMPLEW.MONO
  83522. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83523. ><EWM.EXAMPLEW.MONO>PUBLIC FUNCTION <CX5FX5FFILE.NAME>readFromDB</CX5FX5FFILE.NAME
  83524. >() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83525. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Delete an existing persistent object from the database. This function is</EWM.EXAMPLEW.MONO
  83526. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; typically used after a persistent object has been instantiated in order</EWM.EXAMPLEW.MONO
  83527. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; to delete it from the database. After calling this function, the data of</EWM.EXAMPLEW.MONO
  83528. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; the object is deleted from the database, however the NewEra object itself</EWM.EXAMPLEW.MONO
  83529. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; still exists. Returns 0 on success, else &truehy;1.</EWM.EXAMPLEW.MONO
  83530. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83531. ><EWM.EXAMPLEW.MONO>PUBLIC FUNCTION <CX5FX5FFILE.NAME>deleteFromDB</CX5FX5FFILE.NAME
  83532. >() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83533. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Update an existing persistent object in the database. This function is</EWM.EXAMPLEW.MONO
  83534. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; typically used after a persistent object has been instantiated, read from</EWM.EXAMPLEW.MONO
  83535. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; the database and had some of its attributes changed. After calling this</EWM.EXAMPLEW.MONO
  83536. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; function the data in the database is up to date with the data in the</EWM.EXAMPLEW.MONO
  83537. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; object itself. Returns 0 on success, else &truehy;1.</EWM.EXAMPLEW.MONO
  83538. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83539. ><EWM.EXAMPLEW.MONO>PUBLIC FUNCTION <CX5FX5FFILE.NAME>updateInDB</CX5FX5FFILE.NAME
  83540. >() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83541. ></LABEL
  83542. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83543. >Functions generated for instantiating a persistent class through the function findInDB</L.LABEL
  83544. ><B.BODY>A number of generated functions are needed by the runtime system to instantiate a persistent class through the function <CX5FX5FOBJECT.NAME>findInDB</CX5FX5FOBJECT.NAME
  83545. > (see <RBW-XREF REFID="17541" TYPE="XREF-TEXTCOPY">Functions generated exclusively for persistent root classes</RBW-XREF
  83546. >). These functions are listed here.</B.BODY
  83547. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  83548. ></RBW-AUTOGEN
  83549. >You cannot call these functions directly!</W.WARNING
  83550. ><B.BODY></B.BODY
  83551. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Get a rootclass or one of its subclasses instantiated by supplying the</EWM.EXAMPLEW.MONO
  83552. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; keys of the class and the class_type. Class_type is the extra attribute that</EWM.EXAMPLEW.MONO
  83553. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; every persistent class gets automatically (both in the database and in the</EWM.EXAMPLEW.MONO
  83554. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; persistent NewEra classes itself). This function is generated in a persistent</EWM.EXAMPLEW.MONO
  83555. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; rootclass only. It is called by the function findInDB. Returns a rootclass</EWM.EXAMPLEW.MONO
  83556. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; object reference when it is found in the database, else NULL. </EWM.EXAMPLEW.MONO
  83557. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; This function must not be called by the user directly.</EWM.EXAMPLEW.MONO
  83558. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83559. ><EWM.EXAMPLEW.MONO>PRIVATE SHARED FUNCTION <CX5FX5FFILE.NAME>findInDBByType</CX5FX5FFILE.NAME
  83560. >(<keysOfPersClass>, class_type)</EWM.EXAMPLEW.MONO
  83561. ><EWM.EXAMPLEW.MONO>      RETURNING <persClass></EWM.EXAMPLEW.MONO
  83562. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; This function is not a member of the persistent class itself, but of the</EWM.EXAMPLEW.MONO
  83563. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; companion class named <persClass>Instantiator. This class is (temporary)</EWM.EXAMPLEW.MONO
  83564. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; instantiated by the function findInDBByType. The function just calls the</EWM.EXAMPLEW.MONO
  83565. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; function <persClass>::instantiate. The companion class must not be</EWM.EXAMPLEW.MONO
  83566. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; instantiated by the user directly!</EWM.EXAMPLEW.MONO
  83567. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83568. ><EWM.EXAMPLEW.MONO>FUNCTION <CX5FX5FFILE.NAME><persClass>Instantiator</CX5FX5FFILE.NAME
  83569. >::instantiate(<keysOfPersClass>)</EWM.EXAMPLEW.MONO
  83570. ><EWM.EXAMPLEW.MONO>      RETURNING <persRootClass></EWM.EXAMPLEW.MONO
  83571. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Instantiate a persistent class object, read its data from the database and</EWM.EXAMPLEW.MONO
  83572. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; return a rootclass reference to the object. This function is generated in</EWM.EXAMPLEW.MONO
  83573. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; every persistent class. It is called by the function instantiate of class</EWM.EXAMPLEW.MONO
  83574. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; <persClass>Instantiator, which is the reason it is publicly accessible. This</EWM.EXAMPLEW.MONO
  83575. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; function must not be called by the user directly!</EWM.EXAMPLEW.MONO
  83576. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83577. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION <CX5FX5FFILE.NAME>instantiate</CX5FX5FFILE.NAME
  83578. >(<keysOfPersClass>) RETURNING <persRootClass></EWM.EXAMPLEW.MONO
  83579. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  83580. ></LABEL
  83581. ></SUBSECTION
  83582. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20353"></RBW-ANCHOR
  83583. >Data <RBW-IDXTERM TERM1="data attribute" TERM2="in persistent (NewEra) code generation"></RBW-IDXTERM
  83584. >Attribute</SS.SUBSEC.HEAD
  83585. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83586. >Syntax</L.LABEL
  83587. ><B.BODY>Use the following syntax when you specify the <RBW-IDXTERM TERM1="data attribute" TERM2="syntax"></RBW-IDXTERM
  83588. ><RBW-IDXTERM SEE="data attribute" TERM1="attribute"></RBW-IDXTERM
  83589. >data attributes of a class:</B.BODY
  83590. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00764.tif" origseq="17" origtype="I" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  83591. ></FAR.FIGURE.ANCHOR.RIGHT
  83592. ></LABEL
  83593. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83594. >Generated NewEra construction</L.LABEL
  83595. ><B.BODY>An attribute does not result in a single private data member in the generated class. Instead, attribute values of a persistent object are stored in an ixRow object. The class ixRow is part of the NewEra Data Class Library (DCL).</B.BODY
  83596. ><B.BODY>The data member in the generated class that refers to the object ixRow is called <className>Data:</B.BODY
  83597. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83598. ><EM.EXAMPLE.MONO>INCLUDE SYSTEM "ixrow.4gh"</EM.EXAMPLE.MONO
  83599. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83600. ><EM.EXAMPLE.MONO>CLASS myClassInstantiator</EM.EXAMPLE.MONO
  83601. ><EM.EXAMPLE.MONO>   ...</EM.EXAMPLE.MONO
  83602. ><EM.EXAMPLE.MONO>   PUBLIC VARIABLE myClass<CX5FX5FFILE.NAME>Data</CX5FX5FFILE.NAME
  83603. > ixRow</EM.EXAMPLE.MONO
  83604. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  83605. ><EM.EXAMPLE.MONO>END CLASS</EM.EXAMPLE.MONO
  83606. ><EM.EXAMPLE.MONO>This data member is instantiated at object construction time by copying an ixRow object named <persClass>RowSchema. This object is a SHARED data member in the generated class:</EM.EXAMPLE.MONO
  83607. ><EM.EXAMPLE.MONO><CX5FX5FFILE.NAME>myClass.4gh</CX5FX5FFILE.NAME
  83608. >:</EM.EXAMPLE.MONO
  83609. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83610. ><EM.EXAMPLE.MONO>INCLUDE SYSTEM "ixrow.4gh"</EM.EXAMPLE.MONO
  83611. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83612. ><EM.EXAMPLE.MONO>CLASS myClass DERIVED FROM DBObject</EM.EXAMPLE.MONO
  83613. ><EM.EXAMPLE.MONO>   ...</EM.EXAMPLE.MONO
  83614. ><EM.EXAMPLE.MONO>   SHARED PRIVATE VARIABLE myClass<CX5FX5FFILE.NAME>RowSchema</CX5FX5FFILE.NAME
  83615. > ixRow</EM.EXAMPLE.MONO
  83616. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  83617. ><EM.EXAMPLE.MONO>END CLASS</EM.EXAMPLE.MONO
  83618. ><B.BODY><CX5FX5FFILE.NAME>myClass.4gl</CX5FX5FFILE.NAME
  83619. >:</B.BODY
  83620. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83621. ><EM.EXAMPLE.MONO>FUNCTION myClass::myClass()</EM.EXAMPLE.MONO
  83622. ><EM.EXAMPLE.MONO>   ...</EM.EXAMPLE.MONO
  83623. ><EM.EXAMPLE.MONO>   LET myClassData = COPY myClassRowSchema</EM.EXAMPLE.MONO
  83624. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83625. ><B.BODY>The object ixRow that is constructed already contains ixValue objects that will hold the actual attribute values. </B.BODY
  83626. ><B.BODY>There is a one&truehy;to&truehy;one mapping between ixValue objects in the ixRow and the columns in the database table of the persistent class. Initially these ixValue objects are empty.</B.BODY
  83627. ><B.BODY>For every object in the ixRow a corresponding constant named <className><columnName> will be generated in the header of the class. (The <className> prefix is required for making the constant unique.)</B.BODY
  83628. ><B.BODY><CX5FX5FFILE.NAME>myClass.4gh</CX5FX5FFILE.NAME
  83629. >:</B.BODY
  83630. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83631. ><EM.EXAMPLE.MONO>CONSTANT</EM.EXAMPLE.MONO
  83632. ><EM.EXAMPLE.MONO>   myClassMyAtt1 = 1,</EM.EXAMPLE.MONO
  83633. ><EM.EXAMPLE.MONO>   myClassClass_type = 2,</EM.EXAMPLE.MONO
  83634. ><EM.EXAMPLE.MONO>   myClassMyAtt2 = 3</EM.EXAMPLE.MONO
  83635. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83636. ><B.BODY>The values of these constants serve as an index in the ixRow holding the data of the class.</B.BODY
  83637. ></LABEL
  83638. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83639. ><RBW-ANCHOR ID="35019"></RBW-ANCHOR
  83640. >Generated get and set functions</L.LABEL
  83641. ><B.BODY>Depending on the value for the property Attribute Access (see <RBW-XREF REFID="42104" TYPE="XREF-TEXTCOPY">Attribute Access</RBW-XREF
  83642. >) the following <CX5FX5FPROCEDURE.NAME>get</CX5FX5FPROCEDURE.NAME
  83643. > and <CX5FX5FPROCEDURE.NAME>set</CX5FX5FPROCEDURE.NAME
  83644. > functions are generated for data attributes:</B.BODY
  83645. ><EM.EXAMPLE.MONO>get<attribName>() RETURNING <type></EM.EXAMPLE.MONO
  83646. ><EM.EXAMPLE.MONO>get<attribName>Val() RETURNING <ixType></EM.EXAMPLE.MONO
  83647. ><EM.EXAMPLE.MONO>set<attribName>(new<attribName> RETURNING <type>)</EM.EXAMPLE.MONO
  83648. ><EM.EXAMPLE.MONO>set<attribName>Val(new<attribName> RETURNING <ixtype></EM.EXAMPLE.MONO
  83649. ><B.BODY><type> must be a standard type. <ixtype> is the NewEra data class that can hold a value of type <type>. <ixtype> is a class that is derived from the NewEra class ixValue, e.g. ixString or ixInteger. For example:</B.BODY
  83650. ><B.BODY><CX5FX5FFILE.NAME>myClass.4gh</CX5FX5FFILE.NAME
  83651. >:</B.BODY
  83652. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83653. ><EWM.EXAMPLEW.MONO>CLASS myClass DERIVED FROM DBObject</EWM.EXAMPLEW.MONO
  83654. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83655. ><EWM.EXAMPLEW.MONO>   FUNCTION getMyAtt1() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83656. ><EWM.EXAMPLEW.MONO>   FUNCTION getMyAtt1Val() RETURNING ixInteger</EWM.EXAMPLEW.MONO
  83657. ><EWM.EXAMPLEW.MONO>   FUNCTION getMyAtt2() RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83658. ><EWM.EXAMPLEW.MONO>   FUNCTION getMyAtt2Val() RETURNING ixInteger</EWM.EXAMPLEW.MONO
  83659. ><EWM.EXAMPLEW.MONO>   FUNCTION setMyAtt2(newMyAtt2 INTEGER) RETURNING VOID</EWM.EXAMPLEW.MONO
  83660. ><EWM.EXAMPLEW.MONO>   FUNCTION setMyAtt2Val(newMyAtt2 ixInteger) RETURNING VOID</EWM.EXAMPLEW.MONO
  83661. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83662. ></LABEL
  83663. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83664. >Key attributes</L.LABEL
  83665. ><B.BODY>Key attributes are data attributes with a leading asterisk in the CD. Sub classes in a generalization are not allowed to have key attributes; they inherited the key attribute(s) from the super class. All other persistent classes must have at least one key attribute specified.</B.BODY
  83666. ><B.BODY>During code generation, key attributes are added to the parameter list of the functions NEW<className>*. </B.BODY
  83667. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83668. >For more information</SL.SUBLABEL
  83669. ><B.BODY>These functions are discussed in the section <RBW-XREF REFID="34523" TYPE="XREF-TEXTCOPY">Constructor</RBW-XREF
  83670. > and further.</B.BODY
  83671. ><B.BODY>In the following example, there are no extra parameters (i.e. non&truehy;nullable attributes, mandatory associations, qualifiers) in the persistent class. As a result, key attributes are added to the parameter list in the function:</B.BODY
  83672. ><EWM.EXAMPLEW.MONO>NEW<className> (<keyAttributes>) RETURNING <className>.</EWM.EXAMPLEW.MONO
  83673. ><B.BODY><CX5FX5FFILE.NAME>myClass.4gh</CX5FX5FFILE.NAME
  83674. >:</B.BODY
  83675. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83676. ><EWM.EXAMPLEW.MONO>CLASS myClass DERIVED FROM DBObject</EWM.EXAMPLEW.MONO
  83677. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83678. ><EWM.EXAMPLEW.MONO>   SHARED FUNCTION NEWmyClass(myAtt1 ixInteger) RETURNING myClass</EWM.EXAMPLEW.MONO
  83679. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83680. ><B.BODY>In this example, there is only one key attribute: <CX5FX5FOBJECT.NAME>myAtt1</CX5FX5FOBJECT.NAME
  83681. >.</B.BODY
  83682. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  83683. ></RBW-AUTOGEN
  83684. >The set functions that are generated for data attributes (see <RBW-XREF REFID="35019" TYPE="XREF-TEXTCOPY">Generated get and set functions</RBW-XREF
  83685. >) are not generated for key attributes.</N.NOTE
  83686. ></LABEL
  83687. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83688. >Standard Types</L.LABEL
  83689. ><B.BODY>In CDs, standard data types are used to define the data type of an attribute. These data types are mapped to target&truehy;dependent database types during persistent code generation. </B.BODY
  83690. ><B.BODY>The standard data types can be found in the customization file:</B.BODY
  83691. ><E.EXAMPLE>M4_home<CX5FX5FFILE.NAME>\etc\t_inf\l_ne\stand_types</CX5FX5FFILE.NAME
  83692. > </E.EXAMPLE
  83693. ><B.BODY>The following customization file is used to map the standard types to database types:</B.BODY
  83694. ><E.EXAMPLE>M4_home<CX5FX5FFILE.NAME>\etc\t_inf\l_ne\db_types</CX5FX5FFILE.NAME
  83695. > </E.EXAMPLE
  83696. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83697. >For more information</SL.SUBLABEL
  83698. ><B.BODY>See <RBW-XREF REFID="42656" TYPE="XREF-TEXTCOPY">Customizing Data Types</RBW-XREF
  83699. > and further for more information on these files.</B.BODY
  83700. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  83701. ></RBW-AUTOGEN
  83702. >In persistent classes, you are not allowed to specify a class as the data type of an attribute.</W.WARNING
  83703. ></LABEL
  83704. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83705. >Initial value</L.LABEL
  83706. ><B.BODY>The initial value of an attribute is used to assign a value to the data member at the object construction time. The value is assigned in the body of the constructor.</B.BODY
  83707. ><B.BODY><CX5FX5FFILE.NAME>myClass.4gl</CX5FX5FFILE.NAME
  83708. >:</B.BODY
  83709. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83710. ><EM.EXAMPLE.MONO>FUNCTION myClass::myClass()</EM.EXAMPLE.MONO
  83711. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83712. ><EM.EXAMPLE.MONO>   CALL setMyAtt2(65)</EM.EXAMPLE.MONO
  83713. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  83714. ><B.BODY>The initial value specified in the CD was <CX5FX5FOBJECT.NAME>65</CX5FX5FOBJECT.NAME
  83715. >.</B.BODY
  83716. ></LABEL
  83717. ></SUBSECTION
  83718. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="18253"></RBW-ANCHOR
  83719. >Data Attribute Properties</SS.SUBSEC.HEAD
  83720. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83721. >Which data attribute properties can you specify</L.LABEL
  83722. ><B.BODY>The following properties that affect persistent code generation can be specified for data attributes:</B.BODY
  83723. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83724. ></RBW-AUTOGEN
  83725. ></RBW-MARKER
  83726. ><RBW-PARABODY><RBW-XREF REFID="42104" TYPE="XREF-TEXTCOPY">Attribute Access</RBW-XREF
  83727. ></RBW-PARABODY
  83728. ></LB.LIST.BULLET
  83729. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83730. ></RBW-AUTOGEN
  83731. ></RBW-MARKER
  83732. ><RBW-PARABODY><RBW-XREF REFID="20897" TYPE="XREF-TEXTCOPY">Nullable</RBW-XREF
  83733. ></RBW-PARABODY
  83734. ></LB.LIST.BULLET
  83735. ></LABEL
  83736. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83737. ><RBW-IDXTERM TERM1="attribute access" TERM2="property"></RBW-IDXTERM
  83738. ><RBW-ANCHOR ID="42104"></RBW-ANCHOR
  83739. >Attribute Access</L.LABEL
  83740. ><B.BODY>The <CX5FX5FPROCEDURE.NAME><RBW-IDXTERM TERM1="get"></RBW-IDXTERM
  83741. ><RBW-IDXTERM TERM1="set"></RBW-IDXTERM
  83742. >get</CX5FX5FPROCEDURE.NAME
  83743. > (=read) and <CX5FX5FPROCEDURE.NAME>set</CX5FX5FPROCEDURE.NAME
  83744. > (=write) member functions that are generated from the data attributes can be specified as <RBW-IDXTERM TERM1="public section" TERM2="accessibility"></RBW-IDXTERM
  83745. >Public, <RBW-IDXTERM TERM1="protected section" TERM2="accessibility"></RBW-IDXTERM
  83746. >Protected or <RBW-IDXTERM TERM1="private section" TERM2="accessibility"></RBW-IDXTERM
  83747. >Private.</B.BODY
  83748. ><B.BODY>Set the accessibility property <RBW-IDXTERM TERM1="accessibility" TERM2="data attribute"></RBW-IDXTERM
  83749. >Attribute Access to indicate in which section the member function must be placed.</B.BODY
  83750. ><B.BODY>You can specify the following values:</B.BODY
  83751. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="223p"><COLSPEC COLNAME="2" COLWIDTH="223p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Get (=Read)</CELLHEADING
  83752. ></ENTRY
  83753. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Set (=Write)</CELLHEADING
  83754. ></ENTRY
  83755. ></RBW-ROW
  83756. ></THEAD
  83757. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public (default)</CELLBODY
  83758. ><CELLBODY>Protected</CELLBODY
  83759. ><CELLBODY>Private</CELLBODY
  83760. ><CELLBODY>None</CELLBODY
  83761. ></ENTRY
  83762. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public (default)</CELLBODY
  83763. ><CELLBODY>Protected </CELLBODY
  83764. ><CELLBODY>Private</CELLBODY
  83765. ><CELLBODY>None</CELLBODY
  83766. ></ENTRY
  83767. ></RBW-ROW
  83768. ></TBODY
  83769. ></TGROUP
  83770. ></RBW-TABLE
  83771. ><B.BODY>The values <CX5FX5FFILE.NAME>Public</CX5FX5FFILE.NAME
  83772. >, <CX5FX5FFILE.NAME>Protected</CX5FX5FFILE.NAME
  83773. > and <CX5FX5FFILE.NAME>Private</CX5FX5FFILE.NAME
  83774. > result in the function having access control qualification PUBLIC, PROTECTED or PRIVATE. </B.BODY
  83775. ><B.BODY><CX5FX5FFILE.NAME>None</CX5FX5FFILE.NAME
  83776. > indicates that the access function will not be generated.</B.BODY
  83777. ></LABEL
  83778. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83779. ><RBW-ANCHOR ID="20897"></RBW-ANCHOR
  83780. >Nullable</L.LABEL
  83781. ><B.BODY>Data attributes for which the property Nullable is set to <CX5FX5FOBJECT.NAME>no</CX5FX5FOBJECT.NAME
  83782. > are non&truehy;nullable attributes. During code generation, non&truehy;nullable attributes are added to the list of <CX5FX5FTERM><otherArguments></CX5FX5FTERM
  83783. > in the function:</B.BODY
  83784. ><EWM.EXAMPLEW.MONO>NEW<className>(<keyAttributes>, <otherArguments>) RETURNING <className></EWM.EXAMPLEW.MONO
  83785. ><B.BODY>This function is further discussed in <RBW-XREF REFID="17255" TYPE="XREF-TEXTCOPY">The Runtime System</RBW-XREF
  83786. >.</B.BODY
  83787. ><B.BODY><CX5FX5FFILE.NAME>myClass.4gh</CX5FX5FFILE.NAME
  83788. >:</B.BODY
  83789. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83790. ><EWM.EXAMPLEW.MONO>CLASS myClass DERIVED FROM DBObject</EWM.EXAMPLEW.MONO
  83791. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83792. ><EWM.EXAMPLEW.MONO>   SHARED FUNCTION NEWmyClass(i_myAtt1 ixInteger, i_myAtt2 ixInteger) RETURNING myClass</EWM.EXAMPLEW.MONO
  83793. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  83794. ><B.BODY>In this example, there is one key attribute <CX5FX5FOBJECT.NAME>myAtt1</CX5FX5FOBJECT.NAME
  83795. > and one non&truehy;nullable attribute <CX5FX5FOBJECT.NAME>myAtt2</CX5FX5FOBJECT.NAME
  83796. >.</B.BODY
  83797. ></LABEL
  83798. ></SUBSECTION
  83799. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34523"></RBW-ANCHOR
  83800. >Constructor</SS.SUBSEC.HEAD
  83801. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83802. >Introduction</L.LABEL
  83803. ><B.BODY>NewEra does not support function overloading. As a result, a class is allowed to have only one constructor. However, the constructor used by the runtime system (see <RBW-XREF REFID="17255" TYPE="XREF-TEXTCOPY">The Runtime System</RBW-XREF
  83804. > and further) only has the key attributes of the persistent class as parameters, whereas the constructor to be used by the user can have additional parameters dealing with:</B.BODY
  83805. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83806. ></RBW-AUTOGEN
  83807. ></RBW-MARKER
  83808. ><RBW-PARABODY>non&truehy;nullable attributes</RBW-PARABODY
  83809. ></LB.LIST.BULLET
  83810. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83811. ></RBW-AUTOGEN
  83812. ></RBW-MARKER
  83813. ><RBW-PARABODY>mandatory associations</RBW-PARABODY
  83814. ></LB.LIST.BULLET
  83815. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83816. ></RBW-AUTOGEN
  83817. ></RBW-MARKER
  83818. ><RBW-PARABODY>qualifiers </RBW-PARABODY
  83819. ></LB.LIST.BULLET
  83820. ><B.BODY>To handle these additional parameters, SHARED NEW functions are generated. </B.BODY
  83821. ></LABEL
  83822. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83823. >Generated SHARED NEW functions</L.LABEL
  83824. ><B.BODY>Which functions are generated depends on the existence of additional parameters in the persistent class:</B.BODY
  83825. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83826. ></RBW-AUTOGEN
  83827. ></RBW-MARKER
  83828. ><RBW-PARABODY>If there are no additional parameters (one NEW function):</RBW-PARABODY
  83829. ></LB.LIST.BULLET
  83830. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Function to be used by runtime system AND user to instantiate class.</EWM.EXAMPLEW.MONO
  83831. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83832. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION NEW<className>(<keyAttributes>) RETURNING <className></EWM.EXAMPLEW.MONO
  83833. ><B.BODY></B.BODY
  83834. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  83835. ></RBW-AUTOGEN
  83836. ></RBW-MARKER
  83837. ><RBW-PARABODY>If there are additional parameters (two NEW functions):</RBW-PARABODY
  83838. ></LB.LIST.BULLET
  83839. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Function to be used by runtime system to instantiate class.</EWM.EXAMPLEW.MONO
  83840. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83841. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION NEW<className>ByKeys(<keyAttributes>) RETURNING <className></EWM.EXAMPLEW.MONO
  83842. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  83843. ><EWM.EXAMPLEW.MONO>&truehy;&truehy; Function to be used by user to instantiate class.</EWM.EXAMPLEW.MONO
  83844. ><EWM.EXAMPLEW.MONO>&truehy;&truehy;</EWM.EXAMPLEW.MONO
  83845. ><EWM.EXAMPLEW.MONO>SHARED FUNCTION NEW<className>(<keyAttributes>, <otherArguments>)</EWM.EXAMPLEW.MONO
  83846. ><EWM.EXAMPLEW.MONO>      RETURNING <className></EWM.EXAMPLEW.MONO
  83847. ></LABEL
  83848. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83849. >What do these functions do</L.LABEL
  83850. ><B.BODY>The generated NEW functions first instantiate the class by using the real constructor which is generated automatically by the NewEra code generator. Then, they initialize the instance by calling one of the following functions, which are also automatically generated:</B.BODY
  83851. ><EWM.EXAMPLEW.MONO>FUNCTION init<className>(<keyAttributes>) RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83852. ><B.BODY>or</B.BODY
  83853. ><EWM.EXAMPLEW.MONO>FUNCTION init<className>ByKeys(<keyAttributes>) RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83854. ><EWM.EXAMPLEW.MONO>FUNCTION init<className>(<keyAttributes>, <otherArguments>)</EWM.EXAMPLEW.MONO
  83855. ><EWM.EXAMPLEW.MONO>      RETURNING INTEGER</EWM.EXAMPLEW.MONO
  83856. ></LABEL
  83857. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83858. >Operation $create</L.LABEL
  83859. ><B.BODY>The consequence of the way the NewEra code generator handles the additional parameters, is that you are not allowed to specify an operation named <CX5FX5FOBJECT.NAME>$create</CX5FX5FOBJECT.NAME
  83860. > in the definition of a persistent class.</B.BODY
  83861. ><B.BODY>The code generator issues an error message if it does encounter such an operation and it will stop generating code. </B.BODY
  83862. ></LABEL
  83863. ></SUBSECTION
  83864. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="42591"></RBW-ANCHOR
  83865. >Generalizations</SS.SUBSEC.HEAD
  83866. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83867. >Introduction</L.LABEL
  83868. ><B.BODY>Persistent classes in a generalization are treated similarly to non&truehy;persistent classes in a generalization. Persistent and non&truehy;persistent classes are instantiated differently, however. As a consequence, you cannot specify a persistent class as sub class of a non&truehy;persistent super class, or vice versa.</B.BODY
  83869. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83870. >For more information</SL.SUBLABEL
  83871. ><B.BODY>For more information on non&truehy;persistent classes in a generalization, refer to: <RBW-XREF REFID="27879" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to NewEra Non&truehy;Persistent Code</RBW-XREF
  83872. >.</B.BODY
  83873. ></LABEL
  83874. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  83875. >Differences with non&truehy;persistent code generation</L.LABEL
  83876. ><B.BODY>A persistent root class must have key attributes. A persistent sub class is not allowed to have key attributes since it inherits the key attribute(s) from its super class.</B.BODY
  83877. ><B.BODY>The class will look like:</B.BODY
  83878. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="486p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADINGX5FCENTRE>Informix</CELLHEADINGX5FCENTRE
  83879. ></ENTRY
  83880. ></RBW-ROW
  83881. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CODEBOXTEXT></CODEBOXTEXT
  83882. ></ENTRY
  83883. ></RBW-ROW
  83884. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>...</DEFAULT-PARATYPE
  83885. ></ENTRY
  83886. ></RBW-ROW
  83887. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>class DbDerPerson : public DbPerson {</DEFAULT-PARATYPE
  83888. ></ENTRY
  83889. ></RBW-ROW
  83890. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>public:</DEFAULT-PARATYPE
  83891. ></ENTRY
  83892. ></RBW-ROW
  83893. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  83894. ></ENTRY
  83895. ></RBW-ROW
  83896. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        ...</DEFAULT-PARATYPE
  83897. ></ENTRY
  83898. ></RBW-ROW
  83899. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        int getSalary() const;</DEFAULT-PARATYPE
  83900. ></ENTRY
  83901. ></RBW-ROW
  83902. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        int salaryIsNull() const;</DEFAULT-PARATYPE
  83903. ></ENTRY
  83904. ></RBW-ROW
  83905. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        void satSalary(int newsalary);</DEFAULT-PARATYPE
  83906. ></ENTRY
  83907. ></RBW-ROW
  83908. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        void nullifySalary();</DEFAULT-PARATYPE
  83909. ></ENTRY
  83910. ></RBW-ROW
  83911. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  83912. ></ENTRY
  83913. ></RBW-ROW
  83914. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        ...</DEFAULT-PARATYPE
  83915. ></ENTRY
  83916. ></RBW-ROW
  83917. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  83918. ></ENTRY
  83919. ></RBW-ROW
  83920. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        DbDerPersonRow data;</DEFAULT-PARATYPE
  83921. ></ENTRY
  83922. ></RBW-ROW
  83923. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        DbDerPersonInd nullInd;</DEFAULT-PARATYPE
  83924. ></ENTRY
  83925. ></RBW-ROW
  83926. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  83927. ></ENTRY
  83928. ></RBW-ROW
  83929. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        ...</DEFAULT-PARATYPE
  83930. ></ENTRY
  83931. ></RBW-ROW
  83932. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>};</DEFAULT-PARATYPE
  83933. ></ENTRY
  83934. ></RBW-ROW
  83935. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  83936. ></ENTRY
  83937. ></RBW-ROW
  83938. ></TBODY
  83939. ></TGROUP
  83940. ></RBW-TABLE
  83941. ><B.BODY>The implementations are:</B.BODY
  83942. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="486p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADINGX5FCENTRE>Informix</CELLHEADINGX5FCENTRE
  83943. ></ENTRY
  83944. ></RBW-ROW
  83945. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CODEBOXTEXT></CODEBOXTEXT
  83946. ></ENTRY
  83947. ></RBW-ROW
  83948. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>inline int DbDerPerson::getSalary() const</DEFAULT-PARATYPE
  83949. ></ENTRY
  83950. ></RBW-ROW
  83951. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>{</DEFAULT-PARATYPE
  83952. ></ENTRY
  83953. ></RBW-ROW
  83954. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        return data.salary;</DEFAULT-PARATYPE
  83955. ></ENTRY
  83956. ></RBW-ROW
  83957. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>}</DEFAULT-PARATYPE
  83958. ></ENTRY
  83959. ></RBW-ROW
  83960. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  83961. ></ENTRY
  83962. ></RBW-ROW
  83963. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>inline int DbDerPerson::salaryIsNull() const</DEFAULT-PARATYPE
  83964. ></ENTRY
  83965. ></RBW-ROW
  83966. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>{</DEFAULT-PARATYPE
  83967. ></ENTRY
  83968. ></RBW-ROW
  83969. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        return nullInd.salary == &truehy;1;</DEFAULT-PARATYPE
  83970. ></ENTRY
  83971. ></RBW-ROW
  83972. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>}</DEFAULT-PARATYPE
  83973. ></ENTRY
  83974. ></RBW-ROW
  83975. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  83976. ></ENTRY
  83977. ></RBW-ROW
  83978. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>inline int DbDerPerson::nullifySalary()</DEFAULT-PARATYPE
  83979. ></ENTRY
  83980. ></RBW-ROW
  83981. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>{</DEFAULT-PARATYPE
  83982. ></ENTRY
  83983. ></RBW-ROW
  83984. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        nullInd.salary = &truehy;1;</DEFAULT-PARATYPE
  83985. ></ENTRY
  83986. ></RBW-ROW
  83987. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>}</DEFAULT-PARATYPE
  83988. ></ENTRY
  83989. ></RBW-ROW
  83990. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  83991. ></ENTRY
  83992. ></RBW-ROW
  83993. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>inline int DbDerPerson::</DEFAULT-PARATYPE
  83994. ></ENTRY
  83995. ></RBW-ROW
  83996. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>{</DEFAULT-PARATYPE
  83997. ></ENTRY
  83998. ></RBW-ROW
  83999. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        data.salary = newsalary;</DEFAULT-PARATYPE
  84000. ></ENTRY
  84001. ></RBW-ROW
  84002. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>        nullInd.salary = 0;</DEFAULT-PARATYPE
  84003. ></ENTRY
  84004. ></RBW-ROW
  84005. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE>}</DEFAULT-PARATYPE
  84006. ></ENTRY
  84007. ></RBW-ROW
  84008. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><DEFAULT-PARATYPE></DEFAULT-PARATYPE
  84009. ></ENTRY
  84010. ></RBW-ROW
  84011. ></TBODY
  84012. ></TGROUP
  84013. ></RBW-TABLE
  84014. ><B.BODY></B.BODY
  84015. ></LABEL
  84016. ></SUBSECTION
  84017. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37283"></RBW-ANCHOR
  84018. >Associations</SS.SUBSEC.HEAD
  84019. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84020. >Differences with non&truehy;persistent code generation</L.LABEL
  84021. ><B.BODY>For an association between two persistent classes in a CD member functions to manipulate the association are generated in one or both the classes. These functions have the same name as in the non&truehy;persistent code generation but the parameters and return type are slightly different. The return type is always INTEGER to indicate failure or success, except when a reference to one persistent object is returned.</B.BODY
  84022. ><B.BODY>In non&truehy;persistent classes an association is maintained by setting an additional data member (i.e. an object reference or a set of object references) in one or both classes involved. </B.BODY
  84023. ><B.BODY>In persistent classes an association is maintained by setting data in the database directly: the association is implemented via imported keys in database tables.</B.BODY
  84024. ></LABEL
  84025. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84026. ><RBW-ANCHOR ID="41833"></RBW-ANCHOR
  84027. >Association properties</L.LABEL
  84028. ><B.BODY>You can specify the same properties for associations between persistent classes as you can for associations between non&truehy;persistent classes.</B.BODY
  84029. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84030. >For more information</SL.SUBLABEL
  84031. ><B.BODY>For more information on non&truehy;persistent association properties, refer to <RBW-XREF REFID="40839" TYPE="XREF-TEXTCOPY">Association Properties</RBW-XREF
  84032. >.</B.BODY
  84033. ></LABEL
  84034. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84035. >Association with <RBW-IDXTERM TERM1="link attribute" TERM2="in persistent (NewEra) code generation"></RBW-IDXTERM
  84036. >link objects</L.LABEL
  84037. ><B.BODY>Associations between persistent classes that have a link attribute box or a linked class attached to them are generated similarly to associations between non&truehy;persistent classes.</B.BODY
  84038. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84039. >For more information</SL.SUBLABEL
  84040. ><B.BODY>For more information on non&truehy;persistent associations with link objects, refer to <RBW-XREF REFID="17049" TYPE="XREF-TEXTCOPY">Association with Link Objects</RBW-XREF
  84041. >.</B.BODY
  84042. ></LABEL
  84043. ></SUBSECTION
  84044. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27716"></RBW-ANCHOR
  84045. >Example</SS.SUBSEC.HEAD
  84046. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84047. >Introduction</L.LABEL
  84048. ><BI.BODY.INTRO>The following CD displays the relation between a Person and the Company he or she is working for. Both the classes Person and Company are persistent classes for which SQL and Persistent NewEra code is generated.</BI.BODY.INTRO
  84049. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00765.unk" origfile="pics/esqperco.gif" origtype="X" origdoc="../../sources/ne/nepers.fm5.mif"></RBW-GRAPHIC
  84050. ></FA.FIGURE.ANCHOR
  84051. ><B.BODY>Below, a simple NewEra main file with the following functions is displayed:</B.BODY
  84052. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84053. ></RBW-AUTOGEN
  84054. ></RBW-MARKER
  84055. ><RBW-PARABODY>Three instances of the class Person are created (insertAll)</RBW-PARABODY
  84056. ></LB.LIST.BULLET
  84057. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84058. ></RBW-AUTOGEN
  84059. ></RBW-MARKER
  84060. ><RBW-PARABODY>Two instances of the class Company are created (insertAll)</RBW-PARABODY
  84061. ></LB.LIST.BULLET
  84062. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84063. ></RBW-AUTOGEN
  84064. ></RBW-MARKER
  84065. ><RBW-PARABODY>Instances of the class Person are associated to instances of the class Company (insertAll)</RBW-PARABODY
  84066. ></LB.LIST.BULLET
  84067. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84068. ></RBW-AUTOGEN
  84069. ></RBW-MARKER
  84070. ><RBW-PARABODY>All Persons working for a Company are listed (listAll)</RBW-PARABODY
  84071. ></LB.LIST.BULLET
  84072. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84073. ></RBW-AUTOGEN
  84074. ></RBW-MARKER
  84075. ><RBW-PARABODY>All instances of the classes Person and Company are removed (removeAll)</RBW-PARABODY
  84076. ></LB.LIST.BULLET
  84077. ><B.BODY>This simple NewEra program contains calls to functions that are made available in NewEra. These calls are printed in bold.</B.BODY
  84078. ><EWM.EXAMPLEW.MONO>INCLUDE "Company.4gh"</EWM.EXAMPLEW.MONO
  84079. ><EWM.EXAMPLEW.MONO>INCLUDE "Person.4gh"</EWM.EXAMPLEW.MONO
  84080. ><EWM.EXAMPLEW.MONO>FUNCTION insertAll() RETURNING VOID</EWM.EXAMPLEW.MONO
  84081. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Variable declarations</EWM.EXAMPLEW.MONO
  84082. ><EWM.EXAMPLEW.MONO>      VARIABLE result INTEGER</EWM.EXAMPLEW.MONO
  84083. ><EWM.EXAMPLEW.MONO>      VARIABLE person1, person2, person3 Person</EWM.EXAMPLEW.MONO
  84084. ><EWM.EXAMPLEW.MONO>      VARIABLE company1, company2 Company</EWM.EXAMPLEW.MONO
  84085. ><EWM.EXAMPLEW.MONO>      VARIABLE p1 ixString("Person One"), p2 ixString("Person Two"),</EWM.EXAMPLEW.MONO
  84086. ><EWM.EXAMPLEW.MONO>            p3 ixString("Person Three")</EWM.EXAMPLEW.MONO
  84087. ><EWM.EXAMPLEW.MONO>      VARIABLE c1 ixString("Company One"), c2 ixString("Company Two")</EWM.EXAMPLEW.MONO
  84088. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Create an insert Persons and Companies in DB</EWM.EXAMPLEW.MONO
  84089. ><EWM.EXAMPLEW.MONO>      DISPLAY "Create and insert Persons."</EWM.EXAMPLEW.MONO
  84090. ><EWM.EXAMPLEW.MONO>      LET person1 = Person::NEWPerson(p1)</EWM.EXAMPLEW.MONO
  84091. ><EWM.EXAMPLEW.MONO>      IF person1 IS NOT NULL THEN</EWM.EXAMPLEW.MONO
  84092. ><EWM.EXAMPLEW.MONO>            CALL person1.setBornIn(1964)</EWM.EXAMPLEW.MONO
  84093. ><EWM.EXAMPLEW.MONO>            LET result = person1.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  84094. >()</EWM.EXAMPLEW.MONO
  84095. ><EWM.EXAMPLEW.MONO>            LET result = person1.commit()</EWM.EXAMPLEW.MONO
  84096. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84097. ><EWM.EXAMPLEW.MONO>      LET person2 = Person::NEWPerson(p2)</EWM.EXAMPLEW.MONO
  84098. ><EWM.EXAMPLEW.MONO>      IF person2 IS NOT NULL THEN</EWM.EXAMPLEW.MONO
  84099. ><EWM.EXAMPLEW.MONO>            CALL person2.setBornIn(1966)</EWM.EXAMPLEW.MONO
  84100. ><EWM.EXAMPLEW.MONO>            LET result = person2.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  84101. >()</EWM.EXAMPLEW.MONO
  84102. ><EWM.EXAMPLEW.MONO>            LET result = person2.commit()</EWM.EXAMPLEW.MONO
  84103. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84104. ><EWM.EXAMPLEW.MONO>      LET person3 = Person::NEWPerson(p3)</EWM.EXAMPLEW.MONO
  84105. ><EWM.EXAMPLEW.MONO>      IF person3 IS NOT NULL THEN</EWM.EXAMPLEW.MONO
  84106. ><EWM.EXAMPLEW.MONO>            CALL person3.setBornIn(1968)</EWM.EXAMPLEW.MONO
  84107. ><EWM.EXAMPLEW.MONO>            LET result = person3.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  84108. >()</EWM.EXAMPLEW.MONO
  84109. ><EWM.EXAMPLEW.MONO>            LET result = person3.commit()</EWM.EXAMPLEW.MONO
  84110. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84111. ><EWM.EXAMPLEW.MONO>      DISPLAY "Create and insert Companies."</EWM.EXAMPLEW.MONO
  84112. ><EWM.EXAMPLEW.MONO>      LET company1 = Company::NEWCompany(c1)</EWM.EXAMPLEW.MONO
  84113. ><EWM.EXAMPLEW.MONO>      IF company1 IS NOT NULL THEN</EWM.EXAMPLEW.MONO
  84114. ><EWM.EXAMPLEW.MONO>            CALL company1.setFoundedIn(1980)</EWM.EXAMPLEW.MONO
  84115. ><EWM.EXAMPLEW.MONO>            LET result = company1.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  84116. >()</EWM.EXAMPLEW.MONO
  84117. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84118. ><EWM.EXAMPLEW.MONO>      LET company2 = Company::NEWCompany(c2)</EWM.EXAMPLEW.MONO
  84119. ><EWM.EXAMPLEW.MONO>      IF company2 IS NOT NULL THEN</EWM.EXAMPLEW.MONO
  84120. ><EWM.EXAMPLEW.MONO>            CALL company2.setFoundedIn(1985)</EWM.EXAMPLEW.MONO
  84121. ><EWM.EXAMPLEW.MONO>            LET result = company2.<CX5FX5FPROCEDURE.NAME>insertInDB</CX5FX5FPROCEDURE.NAME
  84122. >()</EWM.EXAMPLEW.MONO
  84123. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84124. ><EWM.EXAMPLEW.MONO>      LET result = <CX5FX5FPROCEDURE.NAME>DBObject::commit</CX5FX5FPROCEDURE.NAME
  84125. >() &truehy;&truehy; commit insert for both companies</EWM.EXAMPLEW.MONO
  84126. ><EWM.EXAMPLEW.MONO>      &truehy;&truehy; Relate Persons and Companies</EWM.EXAMPLEW.MONO
  84127. ><EWM.EXAMPLEW.MONO>      DISPLAY "Set relations between Persons and Companies."</EWM.EXAMPLEW.MONO
  84128. ><EWM.EXAMPLEW.MONO>      IF person1 IS NOT NULL AND company1 IS NOT NULL THEN</EWM.EXAMPLEW.MONO
  84129. ><EWM.EXAMPLEW.MONO>            LET result = person1.setEmployer(company1)</EWM.EXAMPLEW.MONO
  84130. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84131. ><EWM.EXAMPLEW.MONO>      IF person2 IS NOT NULL AND company2 IS NOT NULL THEN</EWM.EXAMPLEW.MONO
  84132. ><EWM.EXAMPLEW.MONO>            LET result = person2.setEmployer(company2)</EWM.EXAMPLEW.MONO
  84133. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84134. ><EWM.EXAMPLEW.MONO>      LET result = <CX5FX5FPROCEDURE.NAME>DBObject::commit</CX5FX5FPROCEDURE.NAME
  84135. >()</EWM.EXAMPLEW.MONO
  84136. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  84137. ><EWM.EXAMPLEW.MONO>FUNCTION listAll() RETURNING VOID</EWM.EXAMPLEW.MONO
  84138. ><EWM.EXAMPLEW.MONO>      VARIABLE personSet RefSet()</EWM.EXAMPLEW.MONO
  84139. ><EWM.EXAMPLEW.MONO>      VARIABLE result INTEGER</EWM.EXAMPLEW.MONO
  84140. ><EWM.EXAMPLEW.MONO>      VARIABLE p Person</EWM.EXAMPLEW.MONO
  84141. ><EWM.EXAMPLEW.MONO>      VARIABLE c Company</EWM.EXAMPLEW.MONO
  84142. ><EWM.EXAMPLEW.MONO>      DISPLAY "List all Persons with their Company."</EWM.EXAMPLEW.MONO
  84143. ><EWM.EXAMPLEW.MONO>      IF Person::<CX5FX5FPROCEDURE.NAME>searchInDB</CX5FX5FPROCEDURE.NAME
  84144. >(personSet, NULL) == &truehy;1 THEN</EWM.EXAMPLEW.MONO
  84145. ><EWM.EXAMPLEW.MONO>            DISPLAY "Internal error: Person::<CX5FX5FPROCEDURE.NAME>searchInDB </CX5FX5FPROCEDURE.NAME
  84146. >failed."</EWM.EXAMPLEW.MONO
  84147. ><EWM.EXAMPLEW.MONO>            RETURN</EWM.EXAMPLEW.MONO
  84148. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84149. ><EWM.EXAMPLEW.MONO>      LET p = personSet.first() CAST Person</EWM.EXAMPLEW.MONO
  84150. ><EWM.EXAMPLEW.MONO>      WHILE p IS NOT NULL</EWM.EXAMPLEW.MONO
  84151. ><EWM.EXAMPLEW.MONO>            DISPLAY p.getName(), " is born in ", p.getBornIn()</EWM.EXAMPLEW.MONO
  84152. ><EWM.EXAMPLEW.MONO>            LET c = p.getEmployer()</EWM.EXAMPLEW.MONO
  84153. ><EWM.EXAMPLEW.MONO>            IF c IS NOT NULL THEN</EWM.EXAMPLEW.MONO
  84154. ><EWM.EXAMPLEW.MONO>                  DISPLAY "   works at ", c.getName(), " founded in ",</EWM.EXAMPLEW.MONO
  84155. ><EWM.EXAMPLEW.MONO>                        c.getFoundedIn()</EWM.EXAMPLEW.MONO
  84156. ><EWM.EXAMPLEW.MONO>            ELSE</EWM.EXAMPLEW.MONO
  84157. ><EWM.EXAMPLEW.MONO>                  DISPLAY "   is unemployed"</EWM.EXAMPLEW.MONO
  84158. ><EWM.EXAMPLEW.MONO>            END IF </EWM.EXAMPLEW.MONO
  84159. ><EWM.EXAMPLEW.MONO>            LET p = personSet.next() CAST Person</EWM.EXAMPLEW.MONO
  84160. ><EWM.EXAMPLEW.MONO>      END WHILE</EWM.EXAMPLEW.MONO
  84161. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  84162. ><EWM.EXAMPLEW.MONO>FUNCTION deleteAll() RETURNING VOID</EWM.EXAMPLEW.MONO
  84163. ><EWM.EXAMPLEW.MONO>      VARIABLE personSet RefSet()</EWM.EXAMPLEW.MONO
  84164. ><EWM.EXAMPLEW.MONO>      VARIABLE companySet RefSet()</EWM.EXAMPLEW.MONO
  84165. ><EWM.EXAMPLEW.MONO>      VARIABLE result INTEGER</EWM.EXAMPLEW.MONO
  84166. ><EWM.EXAMPLEW.MONO>      VARIABLE p Person</EWM.EXAMPLEW.MONO
  84167. ><EWM.EXAMPLEW.MONO>      VARIABLE c Company</EWM.EXAMPLEW.MONO
  84168. ><EWM.EXAMPLEW.MONO>      DISPLAY "Remove all Persons"</EWM.EXAMPLEW.MONO
  84169. ><EWM.EXAMPLEW.MONO>      IF Person::<CX5FX5FPROCEDURE.NAME>searchInDB</CX5FX5FPROCEDURE.NAME
  84170. >(personSet, NULL) == 0 THEN</EWM.EXAMPLEW.MONO
  84171. ><EWM.EXAMPLEW.MONO>            LET p = personSet.first() CAST Person</EWM.EXAMPLEW.MONO
  84172. ><EWM.EXAMPLEW.MONO>            WHILE p IS NOT NULL</EWM.EXAMPLEW.MONO
  84173. ><EWM.EXAMPLEW.MONO>                  LET result = p.<CX5FX5FPROCEDURE.NAME>deleteFromDB</CX5FX5FPROCEDURE.NAME
  84174. >()</EWM.EXAMPLEW.MONO
  84175. ><EWM.EXAMPLEW.MONO>                  LET p = personSet.next() CAST Person</EWM.EXAMPLEW.MONO
  84176. ><EWM.EXAMPLEW.MONO>            END WHILE</EWM.EXAMPLEW.MONO
  84177. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84178. ><EWM.EXAMPLEW.MONO>      DISPLAY "Remove all Companies."</EWM.EXAMPLEW.MONO
  84179. ><EWM.EXAMPLEW.MONO>      IF Company::<CX5FX5FPROCEDURE.NAME>searchInDB</CX5FX5FPROCEDURE.NAME
  84180. >(companySet, NULL) == 0 THEN</EWM.EXAMPLEW.MONO
  84181. ><EWM.EXAMPLEW.MONO>            LET c = companySet.first() CAST Company</EWM.EXAMPLEW.MONO
  84182. ><EWM.EXAMPLEW.MONO>            WHILE c IS NOT NULL</EWM.EXAMPLEW.MONO
  84183. ><EWM.EXAMPLEW.MONO>                  LET result = c.<CX5FX5FPROCEDURE.NAME>deleteFromDB</CX5FX5FPROCEDURE.NAME
  84184. >()</EWM.EXAMPLEW.MONO
  84185. ><EWM.EXAMPLEW.MONO>                  LET c = companySet.next() CAST Company</EWM.EXAMPLEW.MONO
  84186. ><EWM.EXAMPLEW.MONO>            END WHILE</EWM.EXAMPLEW.MONO
  84187. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84188. ><EWM.EXAMPLEW.MONO>      LET result = <CX5FX5FPROCEDURE.NAME>DBObject::commit</CX5FX5FPROCEDURE.NAME
  84189. >()</EWM.EXAMPLEW.MONO
  84190. ><EWM.EXAMPLEW.MONO>END FUNCTION</EWM.EXAMPLEW.MONO
  84191. ><EWM.EXAMPLEW.MONO>MAIN</EWM.EXAMPLEW.MONO
  84192. ><EWM.EXAMPLEW.MONO>      IF NUM_ARGS() == 0 OR NUM_ARGS() > 2 THEN</EWM.EXAMPLEW.MONO
  84193. ><EWM.EXAMPLEW.MONO>            DISPLAY "Usage: ", ARG_VAL(0),</EWM.EXAMPLEW.MONO
  84194. ><EWM.EXAMPLEW.MONO>                  " <database name> [insert|delete]"</EWM.EXAMPLEW.MONO
  84195. ><EWM.EXAMPLEW.MONO>            RETURN</EWM.EXAMPLEW.MONO
  84196. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84197. ><EWM.EXAMPLEW.MONO>      IF <CX5FX5FPROCEDURE.NAME>DBObject::connectDB</CX5FX5FPROCEDURE.NAME
  84198. >(ARG_VAL(1)) < 0 THEN</EWM.EXAMPLEW.MONO
  84199. ><EWM.EXAMPLEW.MONO>            DISPLAY "Connect database ’", ARG_VAL(1), "’ failed."</EWM.EXAMPLEW.MONO
  84200. ><EWM.EXAMPLEW.MONO>            RETURN</EWM.EXAMPLEW.MONO
  84201. ><EWM.EXAMPLEW.MONO>      ELSE</EWM.EXAMPLEW.MONO
  84202. ><EWM.EXAMPLEW.MONO>            DISPLAY "Database ’", ARG_VAL(1), "’ connected."</EWM.EXAMPLEW.MONO
  84203. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84204. ><EWM.EXAMPLEW.MONO>      CALL listAll()</EWM.EXAMPLEW.MONO
  84205. ><EWM.EXAMPLEW.MONO>      IF NUM_ARGS() == 2 AND ARG_VAL(2) == "insert" THEN</EWM.EXAMPLEW.MONO
  84206. ><EWM.EXAMPLEW.MONO>            CALL insertAll()</EWM.EXAMPLEW.MONO
  84207. ><EWM.EXAMPLEW.MONO>            CALL listAll()</EWM.EXAMPLEW.MONO
  84208. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84209. ><EWM.EXAMPLEW.MONO>      IF NUM_ARGS() == 2 AND ARG_VAL(2) == "delete" THEN</EWM.EXAMPLEW.MONO
  84210. ><EWM.EXAMPLEW.MONO>            CALL deleteAll()</EWM.EXAMPLEW.MONO
  84211. ><EWM.EXAMPLEW.MONO>            CALL listAll()</EWM.EXAMPLEW.MONO
  84212. ><EWM.EXAMPLEW.MONO>      END IF</EWM.EXAMPLEW.MONO
  84213. ><EWM.EXAMPLEW.MONO>      </EWM.EXAMPLEW.MONO
  84214. ><EWM.EXAMPLEW.MONO>      RETURN</EWM.EXAMPLEW.MONO
  84215. ><EWM.EXAMPLEW.MONO>END MAIN</EWM.EXAMPLEW.MONO
  84216. ><RBWAUTO-0001></RBWAUTO-0001
  84217. ><!--
  84218.  
  84219.  
  84220.  
  84221.  
  84222.  
  84223. CONVERTING SOURCE FILE ../../sources/ne/newifgen.fm5.mif
  84224.  
  84225.  
  84226. --><B.BODY></B.BODY
  84227. ><B.BODY></B.BODY
  84228. ><B.BODY></B.BODY
  84229. ><B.BODY></B.BODY
  84230. ><B.BODY></B.BODY
  84231. ></LABEL
  84232. ></SUBSECTION
  84233. ></SECTION
  84234. ></CHAPTER
  84235. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  84236. ></RBW-AUTOGEN
  84237. >Modeling <RBW-ANCHOR ID="16738"></RBW-ANCHOR
  84238. >the User Interface<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  84239. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  84240. ></RBW-SYSOBJ
  84241. ></C.CHAPTER.HEAD
  84242. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84243. ><RBW-IDXTERM TERM1="wif template file" TERM2="generating"></RBW-IDXTERM
  84244. ><RBW-IDXTERM TERM1="generating" TERM2="wif template file"></RBW-IDXTERM
  84245. >Introduction</L.LABEL
  84246. ><B.BODY>This chapter explains how you can use ObjectTeam to model and generate the graphical user interface of your NewEra application. </B.BODY
  84247. ></LABEL
  84248. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84249. >In this chapter</L.LABEL
  84250. ><B.BODY>This chapter contains the following sections:</B.BODY
  84251. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  84252. ></ENTRY
  84253. ></RBW-ROW
  84254. ></THEAD
  84255. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23113" TYPE="XREF-TEXTCOPY">Modeling GUI Objects&rbwtab;5–2</RBW-XREF
  84256. ></SB.SECTION.BLOCK.TABLE
  84257. ></ENTRY
  84258. ></RBW-ROW
  84259. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23471" TYPE="XREF-TEXTCOPY">Generating WIF Template Files&rbwtab;5–9</RBW-XREF
  84260. ></SB.SECTION.BLOCK.TABLE
  84261. ></ENTRY
  84262. ></RBW-ROW
  84263. ></TBODY
  84264. ></TGROUP
  84265. ></RBW-TABLE
  84266. ></LABEL
  84267. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="23113"></RBW-ANCHOR
  84268. >Modeling GUI Objects</S.SECTION.HEAD
  84269. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84270. >Introduction</L.LABEL
  84271. ><B.BODY>In NewEra, the graphical user interface (GUI) of an application is represented in ASCII files with the extension wif. The NewEra Window Painter is normally used to create and manipulate these files interactively.</B.BODY
  84272. ><B.BODY>ObjectTeam can be used to generate wif template files automatically. You can use these generated templates to further complete the graphical user interface of your application.</B.BODY
  84273. ></LABEL
  84274. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84275. >In this section</L.LABEL
  84276. ><B.BODY>This section contains the following topics:</B.BODY
  84277. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  84278. ></ENTRY
  84279. ></RBW-ROW
  84280. ></THEAD
  84281. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36245" TYPE="XREF-TEXTCOPY">GUI Classes&rbwtab;5–3</RBW-XREF
  84282. ></SB.SECTION.BLOCK.TABLE
  84283. ></ENTRY
  84284. ></RBW-ROW
  84285. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="41134" TYPE="XREF-TEXTCOPY">Example&rbwtab;5–6</RBW-XREF
  84286. ></SB.SECTION.BLOCK.TABLE
  84287. ></ENTRY
  84288. ></RBW-ROW
  84289. ></TBODY
  84290. ></TGROUP
  84291. ></RBW-TABLE
  84292. ></LABEL
  84293. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36245"></RBW-ANCHOR
  84294. ><RBW-IDXTERM TERM1="GUI Class"></RBW-IDXTERM
  84295. >GUI Classes</SS.SUBSEC.HEAD
  84296. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84297. >Introduction</L.LABEL
  84298. ><B.BODY>You use the CD to model GUI classes. These classes are non&truehy;persistent classes in the OOPL model for which the property Referred Class is set. From these classes wif template files, in stead of source files (4gl) and header files (4gh), are generated by ObjectTeam.</B.BODY
  84299. ><B.BODY>In a GUI class you define:</B.BODY
  84300. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84301. ></RBW-AUTOGEN
  84302. ></RBW-MARKER
  84303. ><RBW-PARABODY>for which data attributes of the referred persistent class you want to generate SuperFields in the wif template file</RBW-PARABODY
  84304. ></LB.LIST.BULLET
  84305. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84306. ></RBW-AUTOGEN
  84307. ></RBW-MARKER
  84308. ><RBW-PARABODY>for which operations you want to generate Buttons in the wif template file</RBW-PARABODY
  84309. ></LB.LIST.BULLET
  84310. ></LABEL
  84311. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84312. >How to create a simple GUI class</L.LABEL
  84313. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  84314. ></RBW-AUTOGEN
  84315. ></RBW-MARKER
  84316. ><RBW-PARABODY>To create a GUI class in the Object Design phase:</RBW-PARABODY
  84317. ></P.PROCEDURE
  84318. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  84319. ></RBW-AUTOGEN
  84320. ></RBW-MARKER
  84321. ><RBW-PARABODY>Decide which persistent class you want to create the GUI class for.</RBW-PARABODY
  84322. ></LN.LIST.NUM
  84323. ><LT.LIST.TEXT>The scope of this <CX5FX5FOBJECT.NAME>referred class</CX5FX5FOBJECT.NAME
  84324. > should be such that it can be seen by the GUI class you are about to create.</LT.LIST.TEXT
  84325. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  84326. ></RBW-AUTOGEN
  84327. ></RBW-MARKER
  84328. ><RBW-PARABODY>Open up a CD.</RBW-PARABODY
  84329. ></LN.LIST.NUM
  84330. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  84331. ></RBW-AUTOGEN
  84332. ></RBW-MARKER
  84333. ><RBW-PARABODY>Create a class.</RBW-PARABODY
  84334. ></LN.LIST.NUM
  84335. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  84336. ></RBW-AUTOGEN
  84337. ></RBW-MARKER
  84338. ><RBW-PARABODY>Enter a name for the class.</RBW-PARABODY
  84339. ></LN.LIST.NUM
  84340. ><LT.LIST.TEXT>This name will be the name of the Window object in the wif template file that is being generated.</LT.LIST.TEXT
  84341. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  84342. ></RBW-AUTOGEN
  84343. ></RBW-MARKER
  84344. ><RBW-PARABODY>Enter the names of the data attributes for which you want a SuperField generated in the wif template file.</RBW-PARABODY
  84345. ></LN.LIST.NUM
  84346. ><LT.LIST.TEXT>These attributes must correspond to data attributes of the referred class. </LT.LIST.TEXT
  84347. ><LT.LIST.TEXT>Make sure you include at least the key attributes and the non&truehy;nullable attributes of the referred class. The non&truehy;nullable attributes together with the key attribute(s) are required to instantiate a persistent class.</LT.LIST.TEXT
  84348. ><LT.LIST.TEXT>Specify also the types of attributes in GUI classes. These are not used by the NewEra code generator, but are required for building up the OOPL model correctly.</LT.LIST.TEXT
  84349. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  84350. ></RBW-AUTOGEN
  84351. ></RBW-MARKER
  84352. ><RBW-PARABODY>Enter the names of the operations for which you want a SuperTable Button in the wif template file.</RBW-PARABODY
  84353. ></LN.LIST.NUM
  84354. ><LT.LIST.TEXT>You can specify the following kinds of operations:</LT.LIST.TEXT
  84355. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  84356. ></RBW-MARKER
  84357. ><RBW-PARABODY>predefined</RBW-PARABODY
  84358. ></LB2.LIST.BULLET.2
  84359. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  84360. ></RBW-MARKER
  84361. ><RBW-PARABODY>user&truehy;defined</RBW-PARABODY
  84362. ></LB2.LIST.BULLET.2
  84363. ><LT.LIST.TEXT>The active handler belonging to the button that is generated from a predefined operation is automatically generated during wif generation. The generated active handler of a user&truehy;defined button is empty.</LT.LIST.TEXT
  84364. ><LT.LIST.TEXT>The following predefined operations are available:</LT.LIST.TEXT
  84365. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="216p"><COLSPEC COLNAME="2" COLWIDTH="216p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Predefined Operation</CELLHEADING
  84366. ></ENTRY
  84367. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING></CELLHEADING
  84368. ></ENTRY
  84369. ></RBW-ROW
  84370. ></THEAD
  84371. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ApplyAll</CELLBODY
  84372. ></ENTRY
  84373. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NextPage</CELLBODY
  84374. ></ENTRY
  84375. ></RBW-ROW
  84376. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ApplyRow</CELLBODY
  84377. ></ENTRY
  84378. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NextRow</CELLBODY
  84379. ></ENTRY
  84380. ></RBW-ROW
  84381. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DeleteRow</CELLBODY
  84382. ></ENTRY
  84383. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PreviousPage</CELLBODY
  84384. ></ENTRY
  84385. ></RBW-ROW
  84386. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>FirstRow</CELLBODY
  84387. ></ENTRY
  84388. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PreviousRow</CELLBODY
  84389. ></ENTRY
  84390. ></RBW-ROW
  84391. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Help</CELLBODY
  84392. ></ENTRY
  84393. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Query</CELLBODY
  84394. ></ENTRY
  84395. ></RBW-ROW
  84396. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>InsertRow</CELLBODY
  84397. ></ENTRY
  84398. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Retrieve</CELLBODY
  84399. ></ENTRY
  84400. ></RBW-ROW
  84401. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>LastRow</CELLBODY
  84402. ></ENTRY
  84403. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>RevertRow</CELLBODY
  84404. ></ENTRY
  84405. ></RBW-ROW
  84406. ></TBODY
  84407. ></TGROUP
  84408. ></RBW-TABLE
  84409. ><LT.LIST.TEXT>So if you specify, for example, an operation InsertRow(), a button InsertRow is generated in the wif template file, including the accompanying active handler code.</LT.LIST.TEXT
  84410. ><W2.WARNING.2><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  84411. ></RBW-AUTOGEN
  84412. >Bear in mind that the names of these operations are case sensitive.</W2.WARNING.2
  84413. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  84414. ></RBW-AUTOGEN
  84415. ></RBW-MARKER
  84416. ><RBW-PARABODY>Select Item | Edit Properties for the GUI class.</RBW-PARABODY
  84417. ></LN.LIST.NUM
  84418. ><LR.LIST.RESULT>The Properties dialog box appears.</LR.LIST.RESULT
  84419. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  84420. ></RBW-AUTOGEN
  84421. ></RBW-MARKER
  84422. ><RBW-PARABODY>Select the class name and enter in the field <RBW-IDXTERM TERM1="Referred Class" TERM2="class property"></RBW-IDXTERM
  84423. >Referred Class the name of the persistent class you create the GUI class for.</RBW-PARABODY
  84424. ></LN.LIST.NUM
  84425. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  84426. ></RBW-AUTOGEN
  84427. ></RBW-MARKER
  84428. ><RBW-PARABODY>Click OK to store the property value.</RBW-PARABODY
  84429. ></LN.LIST.NUM
  84430. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  84431. ></RBW-AUTOGEN
  84432. ></RBW-MARKER
  84433. ><RBW-PARABODY>Select File | Save to save the CD.</RBW-PARABODY
  84434. ></LN.LIST.NUM
  84435. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00766.unk" origfile="pics/prprefcl.gif" origtype="X" origdoc="../../sources/ne/newifgen.fm5.mif"></RBW-GRAPHIC
  84436. ></FA.FIGURE.ANCHOR
  84437. ></LABEL
  84438. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84439. >Referring to Persistent Sub Classes</L.LABEL
  84440. ><B.BODY>If the class you refer to in your GUI class turns out to be a sub class in a generalization, the key attributes are handled differently by the WIF code generator. </B.BODY
  84441. ><B.BODY>In a generalization, the sub class inherits key attributes from its super class. Therefore, these key attributes are generated into SuperFields in the wif template file. </B.BODY
  84442. ><B.BODY>Make sure you also include non&truehy;nullable attributes of both the super class and the sub class in your GUI class, otherwise the WIF code generator will issue an error message.</B.BODY
  84443. ></LABEL
  84444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84445. >What happens to the Properties in a <RBW-IDXTERM TERM1="GUI class" TERM2="properties"></RBW-IDXTERM
  84446. >GUI class</L.LABEL
  84447. ><B.BODY>Except for the properties Referred Class and Persistent, the WIF code generator ignores all the properties you specify for a GUI class, or a data attribute or an operation in a GUI class. It takes however, the properties of the referred class into account.</B.BODY
  84448. ><B.BODY>Do not set the property Persistent for a GUI class. If you still do so, the NewEra code generator considers the class as a persistent class and it will generate a 4gh and 4gl file in stead of a wif template file.</B.BODY
  84449. ><B.BODY>If you forget to specify a value for the property Referred Class, the NewEra code generator considers the class as a normal class, for which it will generate a 4gh and 4gl file in stead of a wif template file. If the referred class turns out to be a non&truehy;persistent class, the code generator issues an error message.</B.BODY
  84450. ></LABEL
  84451. ></SUBSECTION
  84452. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="41134"></RBW-ANCHOR
  84453. >Example </SS.SUBSEC.HEAD
  84454. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84455. >Business model</L.LABEL
  84456. ><B.BODY>The following CD is an example of a simple business model for a NewEra application.</B.BODY
  84457. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00767.unk" origfile="pics/busimod.gif" origtype="X" origdoc="../../sources/ne/newifgen.fm5.mif"></RBW-GRAPHIC
  84458. ></FAR.FIGURE.ANCHOR.RIGHT
  84459. ><B.BODY>To model the graphical user interface for this application, you need to create GUI classes that refer to the persistent classes in this business model. </B.BODY
  84460. ></LABEL
  84461. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84462. >GUI Model</L.LABEL
  84463. ><B.BODY>The following CD contains examples of some GUI classes. The attributes of a GUI class refer to the attributes of the referred persistent class. Only the attributes that are included in the GUI class are generated for the window object. </B.BODY
  84464. ><B.BODY>The operations in the GUI classes are generated into button objects.</B.BODY
  84465. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00768.unk" origfile="pics/guimod.gif" origtype="X" origdoc="../../sources/ne/newifgen.fm5.mif"></RBW-GRAPHIC
  84466. ></FA.FIGURE.ANCHOR
  84467. ><B.BODY>The following table shows the referred class of every GUI class in this diagram:</B.BODY
  84468. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="175p"><COLSPEC COLNAME="2" COLWIDTH="273p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>GUI Class</CELLHEADING
  84469. ></ENTRY
  84470. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Referred Class In Business Model</CELLHEADING
  84471. ></ENTRY
  84472. ></RBW-ROW
  84473. ></THEAD
  84474. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>mt_comp</CELLBODY
  84475. ></ENTRY
  84476. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>company</CELLBODY
  84477. ></ENTRY
  84478. ></RBW-ROW
  84479. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>mt_cust</CELLBODY
  84480. ></ENTRY
  84481. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>customer</CELLBODY
  84482. ></ENTRY
  84483. ></RBW-ROW
  84484. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>orders</CELLBODY
  84485. ></ENTRY
  84486. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>order</CELLBODY
  84487. ></ENTRY
  84488. ></RBW-ROW
  84489. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>mt_org</CELLBODY
  84490. ></ENTRY
  84491. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>organisation</CELLBODY
  84492. ></ENTRY
  84493. ></RBW-ROW
  84494. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>lines</CELLBODY
  84495. ></ENTRY
  84496. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>product</CELLBODY
  84497. ></ENTRY
  84498. ></RBW-ROW
  84499. ></TBODY
  84500. ></TGROUP
  84501. ></RBW-TABLE
  84502. ></LABEL
  84503. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84504. >Generated Wif Template Files</L.LABEL
  84505. ><B.BODY>During code generation, the GUI classes are generated into wif template files. If you open such a file in the NewEra Window Painter (see <RBW-XREF REFID="35540" TYPE="XREF-TEXTCOPY">The NewEra Window Painter</RBW-XREF
  84506. >), it looks like one of the windows depicted below. This example shows the following generated wif template files: <CX5FX5FFILE.NAME>orders.wif</CX5FX5FFILE.NAME
  84507. >, <CX5FX5FFILE.NAME>lines.wif</CX5FX5FFILE.NAME
  84508. >, and <CX5FX5FFILE.NAME>mt_comp.wif</CX5FX5FFILE.NAME
  84509. >.</B.BODY
  84510. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84511. >orders.wif</SL.SUBLABEL
  84512. ><BI.BODY.INTRO></BI.BODY.INTRO
  84513. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00769.unk" origfile="pics/orderwif.gif" origtype="X" origdoc="../../sources/ne/newifgen.fm5.mif"></RBW-GRAPHIC
  84514. ></FA.FIGURE.ANCHOR
  84515. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84516. >lines.wif</SL.SUBLABEL
  84517. ><B.BODY></B.BODY
  84518. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00770.unk" origfile="pics/lineswif.gif" origtype="X" origdoc="../../sources/ne/newifgen.fm5.mif"></RBW-GRAPHIC
  84519. ></FA.FIGURE.ANCHOR
  84520. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84521. >mt_comp.wif</SL.SUBLABEL
  84522. ><B.BODY></B.BODY
  84523. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00771.unk" origfile="pics/mtcmpwif.gif" origtype="X" origdoc="../../sources/ne/newifgen.fm5.mif"></RBW-GRAPHIC
  84524. ></FA.FIGURE.ANCHOR
  84525. ></LABEL
  84526. ></SUBSECTION
  84527. ></SECTION
  84528. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="23471"></RBW-ANCHOR
  84529. >Generating <RBW-IDXTERM TERM1="WIF Template File" TERM2="generating"></RBW-IDXTERM
  84530. >WIF Template Files</S.SECTION.HEAD
  84531. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84532. >Introduction</L.LABEL
  84533. ><B.BODY>ObjectTeam can be used to generate wif template files automatically. This section discusses how to generate wif template files automatically in ObjectTeam and how to use the NewEra Window Painter in combination with ObjectTeam to further complete the graphical user interface of your application.</B.BODY
  84534. ><B.BODY>It also lists the properties and event handlers that are generated for graphical objects in wif template files.</B.BODY
  84535. ></LABEL
  84536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84537. >How to Generate wif template files</L.LABEL
  84538. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  84539. ></RBW-AUTOGEN
  84540. ></RBW-MARKER
  84541. ><RBW-PARABODY>To generate a wif template file from a GUI class:</RBW-PARABODY
  84542. ></P.PROCEDURE
  84543. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  84544. ></RBW-AUTOGEN
  84545. ></RBW-MARKER
  84546. ><RBW-PARABODY>Make sure the current browser level is System in the Implementation phase.</RBW-PARABODY
  84547. ></LN.LIST.NUM
  84548. ><LT.LIST.TEXT>The active system must be the same system that contains the GUI classes in the Object Design phase.</LT.LIST.TEXT
  84549. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  84550. ></RBW-AUTOGEN
  84551. ></RBW-MARKER
  84552. ><RBW-PARABODY>Select Utilities | Import from Previous Phase.</RBW-PARABODY
  84553. ></LN.LIST.NUM
  84554. ><LR.LIST.RESULT>The Import New dialog box appears.</LR.LIST.RESULT
  84555. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  84556. ></RBW-AUTOGEN
  84557. ></RBW-MARKER
  84558. ><RBW-PARABODY>Select OOPL from the dialog box and click OK.</RBW-PARABODY
  84559. ></LN.LIST.NUM
  84560. ><LR.LIST.RESULT>A Monitoring Window starts up reporting on the generation of wif template files. </LR.LIST.RESULT
  84561. ><LT.LIST.TEXT>If the generation is successful, new browser object(s) of the type <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="wif_tmpl"></RBW-IDXTERM
  84562. >wif_tmpl</CX5FX5FFILE.NAME
  84563. > are created on Implementation System level. This file extension stands for Window Intermediate File template.</LT.LIST.TEXT
  84564. ><LT.LIST.TEXT>The name of a generated wif template file is the same as that of the GUI class.</LT.LIST.TEXT
  84565. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  84566. ></RBW-AUTOGEN
  84567. ></RBW-MARKER
  84568. ><RBW-PARABODY>Open the NewEra Window Painter to complete the generated wif template files.</RBW-PARABODY
  84569. ></LN.LIST.NUM
  84570. ><LT.LIST.TEXT>See <RBW-XREF REFID="35540" TYPE="XREF-TEXTCOPY">The NewEra Window Painter</RBW-XREF
  84571. > for details.</LT.LIST.TEXT
  84572. ></LABEL
  84573. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84574. >Contents of a wif template file</L.LABEL
  84575. ><B.BODY>A wif template file generated from a GUI class in the OOPL model contains the following graphical objects:</B.BODY
  84576. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="40p"><COLSPEC COLNAME="2" COLWIDTH="40p"><COLSPEC COLNAME="3" COLWIDTH="366p"><SPANSPEC NAMEST="1" NAMEEND="3" SPANNAME="S1T3"><SPANSPEC NAMEST="2" NAMEEND="3" SPANNAME="S2T3"><TBODY><RBW-ROW><ENTRY SPANNAME="S1T3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Window object</CELLBODY
  84577. ></ENTRY
  84578. ></RBW-ROW
  84579. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  84580. ></ENTRY
  84581. ><ENTRY SPANNAME="S2T3" VALIGN="TOP" MOREROWS="0"><CELLBODY>SuperTable object</CELLBODY
  84582. ></ENTRY
  84583. ></RBW-ROW
  84584. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  84585. ></ENTRY
  84586. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  84587. ></ENTRY
  84588. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Column of SuperField objects</CELLBODY
  84589. ></ENTRY
  84590. ></RBW-ROW
  84591. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  84592. ></ENTRY
  84593. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  84594. ></ENTRY
  84595. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Row of SuperTable Buttons</CELLBODY
  84596. ></ENTRY
  84597. ></RBW-ROW
  84598. ></TBODY
  84599. ></TGROUP
  84600. ></RBW-TABLE
  84601. ></LABEL
  84602. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84603. >Window object</L.LABEL
  84604. ><B.BODY>This object is derived from the NewEra class ixWindow. It contains the SuperTable object.</B.BODY
  84605. ></LABEL
  84606. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84607. >SuperTable object</L.LABEL
  84608. ><B.BODY>This object is an instance of the class ixSuperTable or a class derived from this class. It contains:</B.BODY
  84609. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84610. ></RBW-AUTOGEN
  84611. ></RBW-MARKER
  84612. ><RBW-PARABODY>a column of SuperField objects</RBW-PARABODY
  84613. ></LB.LIST.BULLET
  84614. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  84615. ></RBW-AUTOGEN
  84616. ></RBW-MARKER
  84617. ><RBW-PARABODY>a row of SuperTable Buttons</RBW-PARABODY
  84618. ></LB.LIST.BULLET
  84619. ></LABEL
  84620. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84621. >SuperField object</L.LABEL
  84622. ><B.BODY>This object is an instance of the class ixSuperField or a class derived from this class. There is one SuperField object for every attribute that must be displayed in the Window, including inherited attributes.</B.BODY
  84623. ></LABEL
  84624. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84625. >SuperTable Button</L.LABEL
  84626. ><B.BODY>This object is an instance of the class ixButton or a class derived from this class. There is one Button for every operation, e.g.: Query, and Retrieve.</B.BODY
  84627. ></LABEL
  84628. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84629. >For more information</L.LABEL
  84630. ><B.BODY>Every object in a wif template file has properties and event handlers assigned to it. Refer to <RBW-XREF REFID="23227" TYPE="XREF-TEXTCOPY">Properties of Generated WIF Objects</RBW-XREF
  84631. > and further for details on these properties. </B.BODY
  84632. ><B.BODY>For more information on wif files and the wif language (wifl) in general refer to the INFORMIX&truehy;NewEra manual <CX5FX5FTITLE>Graphical and Connectivity Reference</CX5FX5FTITLE
  84633. >.</B.BODY
  84634. ></LABEL
  84635. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84636. >In his section</L.LABEL
  84637. ><B.BODY>This section contains the following section:</B.BODY
  84638. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  84639. ></ENTRY
  84640. ></RBW-ROW
  84641. ></THEAD
  84642. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35540" TYPE="XREF-TEXTCOPY">The NewEra Window Painter&rbwtab;5–11</RBW-XREF
  84643. ></SB.SECTION.BLOCK.TABLE
  84644. ></ENTRY
  84645. ></RBW-ROW
  84646. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23098" TYPE="XREF-TEXTCOPY">Regenerating WIF Template Files&rbwtab;5–12</RBW-XREF
  84647. ></SB.SECTION.BLOCK.TABLE
  84648. ></ENTRY
  84649. ></RBW-ROW
  84650. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23227" TYPE="XREF-TEXTCOPY">Properties of Generated WIF Objects&rbwtab;5–13</RBW-XREF
  84651. ></SB.SECTION.BLOCK.TABLE
  84652. ></ENTRY
  84653. ></RBW-ROW
  84654. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16111" TYPE="XREF-TEXTCOPY">Event Handlers of Generated WIF Objects&rbwtab;5–15</RBW-XREF
  84655. ></SB.SECTION.BLOCK.TABLE
  84656. ></ENTRY
  84657. ></RBW-ROW
  84658. ></TBODY
  84659. ></TGROUP
  84660. ></RBW-TABLE
  84661. ></LABEL
  84662. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="35540"></RBW-ANCHOR
  84663. >The <RBW-IDXTERM TERM1="NewEra" TERM2="Window Painter"></RBW-IDXTERM
  84664. ><RBW-IDXTERM TERM1="Window Painter"></RBW-IDXTERM
  84665. >NewEra Window Painter</SS.SUBSEC.HEAD
  84666. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84667. >Introduction</L.LABEL
  84668. ><B.BODY>The wif template files generated by ObjectTeam are just a staring point for developing the graphical user interface of your application. </B.BODY
  84669. ></LABEL
  84670. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84671. >How to use the Window Painter</L.LABEL
  84672. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  84673. ></RBW-AUTOGEN
  84674. ></RBW-MARKER
  84675. ><RBW-PARABODY>After a wif template file is generated, you should do the following:</RBW-PARABODY
  84676. ></P.PROCEDURE
  84677. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  84678. ></RBW-AUTOGEN
  84679. ></RBW-MARKER
  84680. ><RBW-PARABODY>Start up the NewEra Window Painter.</RBW-PARABODY
  84681. ></LN.LIST.NUM
  84682. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  84683. ></RBW-AUTOGEN
  84684. ></RBW-MARKER
  84685. ><RBW-PARABODY>Open the generated wif template file.</RBW-PARABODY
  84686. ></LN.LIST.NUM
  84687. ><LR.LIST.RESULT>The generated wif template file is represented graphically, including fields and buttons.</LR.LIST.RESULT
  84688. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  84689. ></RBW-AUTOGEN
  84690. ></RBW-MARKER
  84691. ><RBW-PARABODY>Use the Window Painter to edit the generated window.</RBW-PARABODY
  84692. ></LN.LIST.NUM
  84693. ><LT.LIST.TEXT>Besides beautifying the window, you should provide the required code for the user&truehy;defined buttons.</LT.LIST.TEXT
  84694. ><LT.LIST.TEXT>Some other actions you can do in the NewEra Window Painter are:</LT.LIST.TEXT
  84695. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  84696. ></RBW-MARKER
  84697. ><RBW-PARABODY>improve the layout of the window</RBW-PARABODY
  84698. ></LB2.LIST.BULLET.2
  84699. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  84700. ></RBW-MARKER
  84701. ><RBW-PARABODY>change the property values of graphical objects</RBW-PARABODY
  84702. ></LB2.LIST.BULLET.2
  84703. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  84704. ></RBW-MARKER
  84705. ><RBW-PARABODY>remove graphical objects</RBW-PARABODY
  84706. ></LB2.LIST.BULLET.2
  84707. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  84708. ></RBW-MARKER
  84709. ><RBW-PARABODY>reuse parts of other wif (template) files by using the Copy and Paste facilities of the Window Painter</RBW-PARABODY
  84710. ></LB2.LIST.BULLET.2
  84711. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  84712. ></RBW-AUTOGEN
  84713. ></RBW-MARKER
  84714. ><RBW-PARABODY>Save the file in the Window Painter.</RBW-PARABODY
  84715. ></LN.LIST.NUM
  84716. ><LR.LIST.RESULT>The Window Painter does not only save the changes to the wif file, but it also generates a 4gl and a 4gh file from the wif file when you save it.</LR.LIST.RESULT
  84717. ><LT.LIST.TEXT>These 4gl and 4gh files are used during the compilation and linking of the application, not the wif file. They are not visible in the ObjectTeam browser.</LT.LIST.TEXT
  84718. ><B.BODY>For more information on the NewEra Window Painter refer to the INFORMIX&truehy;NewEra manual <CX5FX5FTITLE>Developing Graphical Applications</CX5FX5FTITLE
  84719. >.</B.BODY
  84720. ></LABEL
  84721. ></SUBSECTION
  84722. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23098"></RBW-ANCHOR
  84723. >Regenerating <RBW-IDXTERM TERM1="WIF Template File" TERM2="regenerating"></RBW-IDXTERM
  84724. >WIF Template Files</SS.SUBSEC.HEAD
  84725. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84726. >Introduction</L.LABEL
  84727. ><B.BODY>The changes you make to a wif template file in the NewEra Window Painter are preserved when you regenerate the wif template file.</B.BODY
  84728. ></LABEL
  84729. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84730. >How to regenerate</L.LABEL
  84731. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  84732. ></RBW-AUTOGEN
  84733. ></RBW-MARKER
  84734. ><RBW-PARABODY>To regenerate a wif template file:</RBW-PARABODY
  84735. ></P.PROCEDURE
  84736. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  84737. ></RBW-AUTOGEN
  84738. ></RBW-MARKER
  84739. ><RBW-PARABODY>Select the wif template file in the information area of the browser on Implementation System level.</RBW-PARABODY
  84740. ></LN.LIST.NUM
  84741. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  84742. ></RBW-AUTOGEN
  84743. ></RBW-MARKER
  84744. ><RBW-PARABODY>Select Utilities | Import From Previous Phase... | Selected.</RBW-PARABODY
  84745. ></LN.LIST.NUM
  84746. ><LR.LIST.RESULT>A Monitoring Window starts up and the selected wif template file is regenerated.</LR.LIST.RESULT
  84747. ><LT.LIST.TEXT>The changes you made in the Window Painter and the changes you made in the CD are merged into the new wif template file.</LT.LIST.TEXT
  84748. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  84749. ></RBW-AUTOGEN
  84750. >Bear the following in mind if you have generated a wif template file for a GUI class before. When you remove an attribute or an operation from this GUI class in ObjectTeam, the corresponding SuperField or Button is not removed from the wif template file during regeneration. The code generator will, however, set the property <CX5FX5FOBJECT.NAME>SQLRole</CX5FX5FOBJECT.NAME
  84751. > of a removed SuperField to <CX5FX5FOBJECT.NAME>noRole</CX5FX5FOBJECT.NAME
  84752. >.</W.WARNING
  84753. ><B.BODY>You have to remove the SuperField yourself using the NewEra Window Painter.</B.BODY
  84754. ></LABEL
  84755. ></SUBSECTION
  84756. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23227"></RBW-ANCHOR
  84757. >Properties of Generated <RBW-IDXTERM TERM1="WIF object" TERM2="properties"></RBW-IDXTERM
  84758. >WIF Objects</SS.SUBSEC.HEAD
  84759. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84760. >Generated properties</L.LABEL
  84761. ><B.BODY>Each object in a wif template file has properties and event handlers assigned to it. Most generated properties get default values like they would have when drawn in the NewEra Window Painter.</B.BODY
  84762. ><B.BODY>Some properties, however, get values that are determined by the data in the OOPL model. The tables on the following pages summarize these properties per object type.</B.BODY
  84763. ><B.BODY>Properties with a trailing <CX5FX5FOBJECT.NAME>+</CX5FX5FOBJECT.NAME
  84764. > are set every time the object is (re)generated; properties without the <CX5FX5FOBJECT.NAME>+</CX5FX5FOBJECT.NAME
  84765. > are set only the first time the object is generated in the wif template file. </B.BODY
  84766. ></LABEL
  84767. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84768. ><RBW-IDXTERM TERM1="ixWindow" TERM2="generated properties"></RBW-IDXTERM
  84769. >ixWindow</L.LABEL
  84770. ><B.BODY>The following table summarizes the OOPL model&truehy;dependent property values generated for the object type ixWindow:</B.BODY
  84771. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Name</CELLHEADING
  84772. ></ENTRY
  84773. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Value</CELLHEADING
  84774. ></ENTRY
  84775. ></RBW-ROW
  84776. ></THEAD
  84777. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>title</CELLBODY
  84778. ></ENTRY
  84779. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of GUI class</CELLBODY
  84780. ></ENTRY
  84781. ></RBW-ROW
  84782. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>database+</CELLBODY
  84783. ></ENTRY
  84784. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>if present, name of the target database, else NULL</CELLBODY
  84785. ></ENTRY
  84786. ></RBW-ROW
  84787. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>classname</CELLBODY
  84788. ></ENTRY
  84789. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><nameOfGUIClass>Window</CELLBODY
  84790. ></ENTRY
  84791. ></RBW-ROW
  84792. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  84793. ></ENTRY
  84794. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><nameOfGUIClass>WN</CELLBODY
  84795. ></ENTRY
  84796. ></RBW-ROW
  84797. ></TBODY
  84798. ></TGROUP
  84799. ></RBW-TABLE
  84800. ></LABEL
  84801. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84802. ><RBW-IDXTERM TERM1="ixSuperTable" TERM2="generated properties"></RBW-IDXTERM
  84803. >ixSuperTable</L.LABEL
  84804. ><B.BODY>The following table summarizes the OOPL model&truehy;dependent property values generated for the object type ixSuperTable:</B.BODY
  84805. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Name</CELLHEADING
  84806. ></ENTRY
  84807. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Value</CELLHEADING
  84808. ></ENTRY
  84809. ></RBW-ROW
  84810. ></THEAD
  84811. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>updateTable+</CELLBODY
  84812. ></ENTRY
  84813. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  84814. ></ENTRY
  84815. ></RBW-ROW
  84816. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>numDisplayedCols+</CELLBODY
  84817. ></ENTRY
  84818. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>total number (plus one) of attributes of the persistent class and its (recursive) superclasss that must be displayed. The extra attribute is the invisible field class_type </CELLBODY
  84819. ></ENTRY
  84820. ></RBW-ROW
  84821. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>selectFromPart+</CELLBODY
  84822. ></ENTRY
  84823. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>a comma separated list of names of the persistent class and its super classes</CELLBODY
  84824. ></ENTRY
  84825. ></RBW-ROW
  84826. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>selectJoinPart+</CELLBODY
  84827. ></ENTRY
  84828. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>join the tables of the persistent class and its super classes</CELLBODY
  84829. ></ENTRY
  84830. ></RBW-ROW
  84831. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  84832. ></ENTRY
  84833. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><nameOfGUIClass>ST</CELLBODY
  84834. ></ENTRY
  84835. ></RBW-ROW
  84836. ></TBODY
  84837. ></TGROUP
  84838. ></RBW-TABLE
  84839. ></LABEL
  84840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84841. ><RBW-IDXTERM TERM1="ixSuperField" TERM2="generated properties"></RBW-IDXTERM
  84842. >ixSuperField</L.LABEL
  84843. ><B.BODY>The following table summarizes the OOPL model&truehy;dependent property values generated for the object type ixSuperField:</B.BODY
  84844. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Name</CELLHEADING
  84845. ></ENTRY
  84846. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Value</CELLHEADING
  84847. ></ENTRY
  84848. ></RBW-ROW
  84849. ></THEAD
  84850. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQLRole+</CELLBODY
  84851. ></ENTRY
  84852. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>if key attribute, then noUpdateRole, else updateRow</CELLBODY
  84853. ></ENTRY
  84854. ></RBW-ROW
  84855. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>colNum+</CELLBODY
  84856. ></ENTRY
  84857. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the sequence number of the ixSuperField</CELLBODY
  84858. ></ENTRY
  84859. ></RBW-ROW
  84860. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>columnName+</CELLBODY
  84861. ></ENTRY
  84862. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the name of the column in the database table</CELLBODY
  84863. ></ENTRY
  84864. ></RBW-ROW
  84865. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>tableName+</CELLBODY
  84866. ></ENTRY
  84867. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the name of the table this column is included in</CELLBODY
  84868. ></ENTRY
  84869. ></RBW-ROW
  84870. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>title+</CELLBODY
  84871. ></ENTRY
  84872. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>the name of the column in the database table</CELLBODY
  84873. ></ENTRY
  84874. ></RBW-ROW
  84875. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  84876. ></ENTRY
  84877. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><nameOfPersistentClass><nameOfColumn>SF</CELLBODY
  84878. ></ENTRY
  84879. ></RBW-ROW
  84880. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>encLength+</CELLBODY
  84881. ></ENTRY
  84882. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>encoded length of the type of this column</CELLBODY
  84883. ></ENTRY
  84884. ></RBW-ROW
  84885. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>initialDataValue+</CELLBODY
  84886. ></ENTRY
  84887. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>initial value of the attribute</CELLBODY
  84888. ></ENTRY
  84889. ></RBW-ROW
  84890. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>maxDataChars+</CELLBODY
  84891. ></ENTRY
  84892. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>maximum numbers of characters to display the type</CELLBODY
  84893. ></ENTRY
  84894. ></RBW-ROW
  84895. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>type+</CELLBODY
  84896. ></ENTRY
  84897. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>an integer representing the type</CELLBODY
  84898. ></ENTRY
  84899. ></RBW-ROW
  84900. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>nullable+</CELLBODY
  84901. ></ENTRY
  84902. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>TRUE if nullable, else FALSE</CELLBODY
  84903. ></ENTRY
  84904. ></RBW-ROW
  84905. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>primaryKey+</CELLBODY
  84906. ></ENTRY
  84907. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>if (non&truehy;imported) key, then TRUE, else FALSE</CELLBODY
  84908. ></ENTRY
  84909. ></RBW-ROW
  84910. ></TBODY
  84911. ></TGROUP
  84912. ></RBW-TABLE
  84913. ><B.BODY>For the ixSuperField <CX5FX5FOBJECT.NAME>class_type</CX5FX5FOBJECT.NAME
  84914. > (see <RBW-XREF REFID="24933" TYPE="XREF-TEXTCOPY">The attribute class_type</RBW-XREF
  84915. >), the following extra properties are set:</B.BODY
  84916. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Name</CELLHEADING
  84917. ></ENTRY
  84918. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Value</CELLHEADING
  84919. ></ENTRY
  84920. ></RBW-ROW
  84921. ></THEAD
  84922. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>shown</CELLBODY
  84923. ></ENTRY
  84924. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>FALSE</CELLBODY
  84925. ></ENTRY
  84926. ></RBW-ROW
  84927. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>queryState</CELLBODY
  84928. ></ENTRY
  84929. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>readOnlyState</CELLBODY
  84930. ></ENTRY
  84931. ></RBW-ROW
  84932. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>height</CELLBODY
  84933. ></ENTRY
  84934. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  84935. ></ENTRY
  84936. ></RBW-ROW
  84937. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>title_Height</CELLBODY
  84938. ></ENTRY
  84939. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>1 </CELLBODY
  84940. ></ENTRY
  84941. ></RBW-ROW
  84942. ></TBODY
  84943. ></TGROUP
  84944. ></RBW-TABLE
  84945. ></LABEL
  84946. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84947. ><RBW-IDXTERM TERM1="ixButton" TERM2="generated properties"></RBW-IDXTERM
  84948. >ixButton</L.LABEL
  84949. ><B.BODY>The following table summarizes the OOPL model&truehy;dependent property values generated for the object type ixButton:</B.BODY
  84950. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="142p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Name</CELLHEADING
  84951. ></ENTRY
  84952. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property Value</CELLHEADING
  84953. ></ENTRY
  84954. ></RBW-ROW
  84955. ></THEAD
  84956. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>title</CELLBODY
  84957. ></ENTRY
  84958. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the button (e.g. Query)</CELLBODY
  84959. ></ENTRY
  84960. ></RBW-ROW
  84961. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>name</CELLBODY
  84962. ></ENTRY
  84963. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><nameOfClass><nameOfButton>BT</CELLBODY
  84964. ></ENTRY
  84965. ></RBW-ROW
  84966. ></TBODY
  84967. ></TGROUP
  84968. ></RBW-TABLE
  84969. ></LABEL
  84970. ></SUBSECTION
  84971. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="16111"></RBW-ANCHOR
  84972. >Event Handlers of Generated WIF Objects</SS.SUBSEC.HEAD
  84973. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  84974. >Generated <RBW-IDXTERM TERM1="event handler" TERM2="generated"></RBW-IDXTERM
  84975. ><RBW-IDXTERM TERM1="WIF object" TERM2="generated event handlers"></RBW-IDXTERM
  84976. >event handlers</L.LABEL
  84977. ><B.BODY>Each object in a wif template file has properties and event handlers assigned to it. The following table summarizes the event handlers that are generated for the various WIF objects:</B.BODY
  84978. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="85p"><COLSPEC COLNAME="2" COLWIDTH="139p"><COLSPEC COLNAME="3" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>WIF Object</CELLHEADING
  84979. ></ENTRY
  84980. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Event Handler</CELLHEADING
  84981. ></ENTRY
  84982. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Reason</CELLHEADING
  84983. ></ENTRY
  84984. ></RBW-ROW
  84985. ></THEAD
  84986. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="ixWindow" TERM2="generated event handlers"></RBW-IDXTERM
  84987. >ixWindow</CELLBODY
  84988. ></ENTRY
  84989. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>pre_body</CELLBODY
  84990. ></ENTRY
  84991. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>include statements</CELLBODY
  84992. ></ENTRY
  84993. ></RBW-ROW
  84994. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  84995. ></ENTRY
  84996. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>constructor_extension</CELLBODY
  84997. ></ENTRY
  84998. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>initialization of the SuperField class_type </CELLBODY
  84999. ></ENTRY
  85000. ></RBW-ROW
  85001. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="ixSuperTable" TERM2="generated event handlers"></RBW-IDXTERM
  85002. >ixSuperTable</CELLBODY
  85003. ></ENTRY
  85004. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQLDelete</CELLBODY
  85005. ></ENTRY
  85006. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>must be implemented by the user</CELLBODY
  85007. ><CELLBODY>use deleteFromDB from referred class object</CELLBODY
  85008. ></ENTRY
  85009. ></RBW-ROW
  85010. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  85011. ></ENTRY
  85012. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQLInsert</CELLBODY
  85013. ></ENTRY
  85014. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>must be implemented by the user</CELLBODY
  85015. ><CELLBODY>use insertInDB from referred class object</CELLBODY
  85016. ></ENTRY
  85017. ></RBW-ROW
  85018. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  85019. ></ENTRY
  85020. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SQLUpdate</CELLBODY
  85021. ></ENTRY
  85022. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>must be implemented by the user</CELLBODY
  85023. ><CELLBODY>use updateInDB from referred class object</CELLBODY
  85024. ></ENTRY
  85025. ></RBW-ROW
  85026. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>ixSuperField</CELLBODY
  85027. ></ENTRY
  85028. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  85029. ></ENTRY
  85030. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  85031. ></ENTRY
  85032. ></RBW-ROW
  85033. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-IDXTERM TERM1="ixButton" TERM2="generated event handlers"></RBW-IDXTERM
  85034. >ixButton</CELLBODY
  85035. ></ENTRY
  85036. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>activate</CELLBODY
  85037. ></ENTRY
  85038. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>implement the action</CELLBODY
  85039. ></ENTRY
  85040. ></RBW-ROW
  85041. ></TBODY
  85042. ></TGROUP
  85043. ></RBW-TABLE
  85044. ><B.BODY></B.BODY
  85045. ><RBWAUTO-0001></RBWAUTO-0001
  85046. ><!--
  85047.  
  85048.  
  85049.  
  85050.  
  85051.  
  85052. CONVERTING SOURCE FILE ../../sources/ne/neeng.fm5.mif
  85053.  
  85054.  
  85055. --><B.BODY></B.BODY
  85056. ><B.BODY></B.BODY
  85057. ><B.BODY></B.BODY
  85058. ><B.BODY></B.BODY
  85059. ><B.BODY></B.BODY
  85060. ></LABEL
  85061. ></SUBSECTION
  85062. ></SECTION
  85063. ></CHAPTER
  85064. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 6&rbwtab;</CX5FX5FZCHAPTER.NUM
  85065. ></RBW-AUTOGEN
  85066. ><RBW-ANCHOR ID="32714"></RBW-ANCHOR
  85067. >Reverse Engineering<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  85068. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  85069. ></RBW-SYSOBJ
  85070. ></C.CHAPTER.HEAD
  85071. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85072. >Introduction</L.LABEL
  85073. ><B.BODY>One of the benefits of an object&truehy;oriented design methodology is its support for the reuse of software components. <CX5FX5FEMPHASIS>Reverse engineering</CX5FX5FEMPHASIS
  85074. > facilitates this by allowing you to use existing NewEra code in your project. This code may come from other projects or from third&truehy;parties, such as class library vendors or public domain software sites.</B.BODY
  85075. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  85076. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  85077. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  85078. ><RBW-IDXTERM TERM1="class library" TERM2="reverse engineering"></RBW-IDXTERM
  85079. >Reverse engineering parses NewEra header files and builds CDs and CDMs that show the class hierarchy defined in the header files. </B.BODY
  85080. ></LABEL
  85081. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85082. >Purpose </L.LABEL
  85083. ><B.BODY>Use reverse engineering to capture and display the class hierarchy of a class library so that you can reuse the classes in the library. Reverse engineering</B.BODY
  85084. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85085. ></RBW-AUTOGEN
  85086. ></RBW-MARKER
  85087. ><RBW-PARABODY>Makes class libraries available in ObjectTeam.</RBW-PARABODY
  85088. ></LB.LIST.BULLET
  85089. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85090. ></RBW-AUTOGEN
  85091. ></RBW-MARKER
  85092. ><RBW-PARABODY>Helps you to understand the structure and functionality of class libraries.</RBW-PARABODY
  85093. ></LB.LIST.BULLET
  85094. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85095. >Not an import utility</SL.SUBLABEL
  85096. ><B.BODY>Reverse engineering is not designed to capture all the information in a header file. Therefore, do not use reverse engineering to import classes in order to maintain them in ObjectTeam. If you generate header files from the CDs and CDMs created by reverse engineering, they will not match the header files you used to create those CDs and CDMs.</B.BODY
  85097. ></LABEL
  85098. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85099. >Class hierarchy</L.LABEL
  85100. ><BI.BODY.INTRO>A class hierarchy shows a base class and the subclasses derived from that base class. A class at or near the top of the hierarchy is more generalized. Classes at or near the bottom of the hierarchy are more specialized. The following illustration shows a class hierarchy for a graphical user interface subsystem.</BI.BODY.INTRO
  85101. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00772.tif" origseq="1" origtype="I" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85102. ></FAR.FIGURE.ANCHOR.RIGHT
  85103. ></LABEL
  85104. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85105. >Class library</L.LABEL
  85106. ><B.BODY>A <RBW-IDXTERM TERM1="class library"></RBW-IDXTERM
  85107. >class library is a collection of classes intended for use in many different situations. Generally, classes near the top of a class hierarchy are better candidates for a class library because they are more likely to be reused. Classes lower in the hierarchy have more restricted use and might not be useful in a class library.</B.BODY
  85108. ><B.BODY>In the previous illustration, myFrame is not useful in a class library because it is an instance. The other classes might appear in a class library.</B.BODY
  85109. ></LABEL
  85110. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85111. >In this chapter</L.LABEL
  85112. ><B.BODY>This chapter contains the following sections:</B.BODY
  85113. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  85114. ></ENTRY
  85115. ></RBW-ROW
  85116. ></THEAD
  85117. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="30342" TYPE="XREF-TEXTCOPY">What Happens During Reverse Engineering&rbwtab;6–3</RBW-XREF
  85118. ></SB.SECTION.BLOCK.TABLE
  85119. ></ENTRY
  85120. ></RBW-ROW
  85121. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38598" TYPE="XREF-TEXTCOPY">Running Reverse Engineering&rbwtab;6–8</RBW-XREF
  85122. ></SB.SECTION.BLOCK.TABLE
  85123. ></ENTRY
  85124. ></RBW-ROW
  85125. ></TBODY
  85126. ></TGROUP
  85127. ></RBW-TABLE
  85128. ></LABEL
  85129. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="reverse engineering" TERM2="class library"></RBW-IDXTERM
  85130. ><RBW-IDXTERM TERM1="translating" TERM2="header files to Class Association Diagrams"></RBW-IDXTERM
  85131. ><RBW-ANCHOR ID="30342"></RBW-ANCHOR
  85132. >What Happens During Reverse Engineering</S.SECTION.HEAD
  85133. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85134. >Introduction</L.LABEL
  85135. ><B.BODY>This section describes how ObjectTeam reverse engineers NewEra header files.</B.BODY
  85136. ></LABEL
  85137. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85138. >Steps in the translation</L.LABEL
  85139. ><B.BODY>Reverse engineering uses the following steps to translate NewEra header files into CDs and CDMs that show the class hierarchy:</B.BODY
  85140. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  85141. ></RBW-AUTOGEN
  85142. ></RBW-MARKER
  85143. ><RBW-PARABODY>Parses the NewEra header files.</RBW-PARABODY
  85144. ></LN.LIST.NUM
  85145. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  85146. ></RBW-AUTOGEN
  85147. ></RBW-MARKER
  85148. ><RBW-PARABODY>Maps the NewEra elements to ObjectTeam elements.</RBW-PARABODY
  85149. ></LN.LIST.NUM
  85150. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  85151. ></RBW-AUTOGEN
  85152. ></RBW-MARKER
  85153. ><RBW-PARABODY>Combines the elements into draft diagrams.</RBW-PARABODY
  85154. ></LN.LIST.NUM
  85155. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  85156. ></RBW-AUTOGEN
  85157. ></RBW-MARKER
  85158. ><RBW-PARABODY>Uses detailed positioning and editing to transform the draft diagrams into finished CDs of reasonable size.</RBW-PARABODY
  85159. ></LN.LIST.NUM
  85160. ></LABEL
  85161. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85162. >Parsing the header files</L.LABEL
  85163. ><B.BODY>The parser processes the header files of the class libraries as follows:</B.BODY
  85164. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85165. ></RBW-AUTOGEN
  85166. ></RBW-MARKER
  85167. ><RBW-PARABODY>It recognizes the definitions of the following C++ constructs:</RBW-PARABODY
  85168. ></LB.LIST.BULLET
  85169. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  85170. ></RBW-MARKER
  85171. ><RBW-PARABODY>class</RBW-PARABODY
  85172. ></LB2.LIST.BULLET.2
  85173. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85174. ></RBW-AUTOGEN
  85175. ></RBW-MARKER
  85176. ><RBW-PARABODY>It treats complex constructs as follows:</RBW-PARABODY
  85177. ></LB.LIST.BULLET
  85178. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  85179. ></RBW-MARKER
  85180. ><RBW-PARABODY>Nested type definitions are recognized, but processed as if they are not nested. This can result in duplicate definitions.</RBW-PARABODY
  85181. ></LB2.LIST.BULLET.2
  85182. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  85183. ></RBW-MARKER
  85184. ><RBW-PARABODY>References to nested type definitions are transformed into references to type definitions that are not nested. For example, <CX5FX5FINPUT>nested::type</CX5FX5FINPUT
  85185. > becomes <CX5FX5FINPUT>nested@type</CX5FX5FINPUT
  85186. >.</RBW-PARABODY
  85187. ></LB2.LIST.BULLET.2
  85188. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  85189. ></RBW-MARKER
  85190. ><RBW-PARABODY>Definitions of templates are ignored; references to instances of the template are mapped to a reasonable name. For example, <CX5FX5FINPUT>List<Thing*></CX5FX5FINPUT
  85191. > becomes <CX5FX5FINPUT>List_ThingPtr</CX5FX5FINPUT
  85192. >.</RBW-PARABODY
  85193. ></LB2.LIST.BULLET.2
  85194. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85195. ></RBW-AUTOGEN
  85196. ></RBW-MARKER
  85197. ><RBW-PARABODY>It allows data types to be referenced before they are defined.</RBW-PARABODY
  85198. ></LB.LIST.BULLET
  85199. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85200. >Preprocessing directives</SL.SUBLABEL
  85201. ><B.BODY>The parser ignores all preprocessor symbols, such as #ifdef and #define. However, you can specify a preprocessor to be run before reverse engineering, as described in <RBW-XREF REFID="38598" TYPE="XREF-TEXTCOPY">Running Reverse Engineering</RBW-XREF
  85202. >.</B.BODY
  85203. ></LABEL
  85204. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85205. >Mapping the elements<RBW-IDXTERM TERM1="NewEra" TERM2="reverse engineering"></RBW-IDXTERM
  85206. ><RBW-IDXTERM TERM1="mapping" TERM2="in reverse engineering"></RBW-IDXTERM
  85207. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="mapping"></RBW-IDXTERM
  85208. ></L.LABEL
  85209. ><B.BODY>After parsing the header file, reverse engineering maps the C++ constructs to ObjectTeam elements, as shown in the following table:</B.BODY
  85210. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="306p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>newera construction</CELLHEADING
  85211. ></ENTRY
  85212. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam element</CELLHEADING
  85213. ></ENTRY
  85214. ></RBW-ROW
  85215. ></THEAD
  85216. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  85217. ></ENTRY
  85218. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  85219. ></ENTRY
  85220. ></RBW-ROW
  85221. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data member</CELLBODY
  85222. ></ENTRY
  85223. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute and the property <CX5FX5FOBJECT.NAME>attrib_access</CX5FX5FOBJECT.NAME
  85224. > is set</CELLBODY
  85225. ></ENTRY
  85226. ></RBW-ROW
  85227. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Member function</CELLBODY
  85228. ></ENTRY
  85229. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation and the <CX5FX5FOBJECT.NAME>method_access</CX5FX5FOBJECT.NAME
  85230. > property is set</CELLBODY
  85231. ></ENTRY
  85232. ></RBW-ROW
  85233. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Events</CELLBODY
  85234. ></ENTRY
  85235. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation and the properties <CX5FX5FTERM>method_access</CX5FX5FTERM
  85236. > and <CX5FX5FTERM>is_event</CX5FX5FTERM
  85237. > are set</CELLBODY
  85238. ></ENTRY
  85239. ></RBW-ROW
  85240. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constructor</CELLBODY
  85241. ></ENTRY
  85242. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>$create</CELLBODY
  85243. ></ENTRY
  85244. ></RBW-ROW
  85245. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Destructor</CELLBODY
  85246. ></ENTRY
  85247. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  85248. ></ENTRY
  85249. ></RBW-ROW
  85250. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Shared member</CELLBODY
  85251. ></ENTRY
  85252. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class feature (a $ is added to the front of the name)</CELLBODY
  85253. ></ENTRY
  85254. ></RBW-ROW
  85255. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Const attribute</CELLBODY
  85256. ></ENTRY
  85257. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute and the properties <CX5FX5FOBJECT.NAME>attrib_access</CX5FX5FOBJECT.NAME
  85258. > and <CX5FX5FTERM>is_const_attrib</CX5FX5FTERM
  85259. > is set</CELLBODY
  85260. ></ENTRY
  85261. ></RBW-ROW
  85262. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  85263. ></ENTRY
  85264. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  85265. ></ENTRY
  85266. ></RBW-ROW
  85267. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data type</CELLBODY
  85268. ></ENTRY
  85269. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data type (if the data type is a standard type, lower case is used)</CELLBODY
  85270. ></ENTRY
  85271. ></RBW-ROW
  85272. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Super class</CELLBODY
  85273. ></ENTRY
  85274. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam inheritance structure</CELLBODY
  85275. ></ENTRY
  85276. ></RBW-ROW
  85277. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nested types</CELLBODY
  85278. ></ENTRY
  85279. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name in which @ replaces ::</CELLBODY
  85280. ></ENTRY
  85281. ></RBW-ROW
  85282. ></TBODY
  85283. ></TGROUP
  85284. ></RBW-TABLE
  85285. ></LABEL
  85286. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85287. >Creating draft diagrams<RBW-IDXTERM TERM1="diagrams" TERM2="draft, in reverse engineering"></RBW-IDXTERM
  85288. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="draft diagrams"></RBW-IDXTERM
  85289. ></L.LABEL
  85290. ><BI.BODY.INTRO>After mapping the NewEra constructs to ObjectTeam elements, reverse engineering creates draft CDs, as shown below, to hold the elements.</BI.BODY.INTRO
  85291. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00773.tif" origseq="35" origtype="I" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85292. ></FA.FIGURE.ANCHOR
  85293. ></LABEL
  85294. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85295. >Finishing the diagrams<RBW-IDXTERM TERM1="diagrams" TERM2="finished, in reverse engineering"></RBW-IDXTERM
  85296. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="finished diagrams"></RBW-IDXTERM
  85297. ></L.LABEL
  85298. ><B.BODY>Finally, reverse engineering uses the following guidelines to transform the draft CDs into finished CDs:</B.BODY
  85299. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00774.tif" origseq="11" origtype="I" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85300. ></FA2.FIGURE.ANCHOR.2
  85301. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85302. ></RBW-AUTOGEN
  85303. ></RBW-MARKER
  85304. ><RBW-PARABODY>If classes are too large, reverse engineering folds them, as shown in the following illustration. Alternatively, if you specify the Create Reference Diagrams option in the Reverse Engineer NewEra dialog box, reverse engineering creates a separate reference diagram for the class.</RBW-PARABODY
  85305. ></LB.LIST.BULLET
  85306. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00775.tif" origseq="24" origtype="I" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85307. ></FA2.FIGURE.ANCHOR.2
  85308. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85309. ></RBW-AUTOGEN
  85310. ></RBW-MARKER
  85311. ><RBW-PARABODY>If generalizations are too large, reverse engineering transforms them into More Classes symbols.</RBW-PARABODY
  85312. ></LB.LIST.BULLET
  85313. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00776.tif" origseq="46" origtype="I" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85314. ></FA2.FIGURE.ANCHOR.2
  85315. ></LABEL
  85316. ></SECTION
  85317. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="38598"></RBW-ANCHOR
  85318. >Running Reverse Engineering</S.SECTION.HEAD
  85319. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85320. >Introduction</L.LABEL
  85321. ><B.BODY>This section describes how to run reverse engineering.</B.BODY
  85322. ></LABEL
  85323. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85324. >How to reverse engineer</L.LABEL
  85325. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  85326. ></RBW-AUTOGEN
  85327. ></RBW-MARKER
  85328. ><RBW-PARABODY>To reverse engineer a class library from one or more header files:</RBW-PARABODY
  85329. ></P.PROCEDURE
  85330. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  85331. ></RBW-AUTOGEN
  85332. ></RBW-MARKER
  85333. ><RBW-PARABODY>Move to System level in Object Design phase.</RBW-PARABODY
  85334. ></LN.LIST.NUM
  85335. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  85336. ></RBW-AUTOGEN
  85337. >Typically, you reverse engineer into an empty system. This prevents name conflicts with existing classes.</N2.NOTE.2
  85338. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  85339. ></RBW-AUTOGEN
  85340. ></RBW-MARKER
  85341. ><RBW-PARABODY>Select Utilities | Reverse Engineer NewEra.</RBW-PARABODY
  85342. ></LN.LIST.NUM
  85343. ><LR.LIST.RESULT>A Reverse Engineer NewEra dialog box appears (see <RBW-XREF REFID="39215" TYPE="XREF-TEXTCOPY">Files for reverse engineering</RBW-XREF
  85344. >), prompting you to select the files to be reverse engineered.</LR.LIST.RESULT
  85345. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  85346. ></RBW-AUTOGEN
  85347. ></RBW-MARKER
  85348. ><RBW-PARABODY>Select the files that you want to reverse engineer, then select OK.</RBW-PARABODY
  85349. ></LN.LIST.NUM
  85350. ><LR.LIST.RESULT>A Reverse Engineer NewEra dialog box appears (see <RBW-XREF REFID="18733" TYPE="XREF-TEXTCOPY">Options for reverse engineering</RBW-XREF
  85351. >), prompting you to select the options that you want to use. </LR.LIST.RESULT
  85352. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  85353. ></RBW-AUTOGEN
  85354. ></RBW-MARKER
  85355. ><RBW-PARABODY>Select the options, then select OK.</RBW-PARABODY
  85356. ></LN.LIST.NUM
  85357. ><LR.LIST.RESULT>ObjectTeam reverse engineers the selected file, reporting the results in a Monitoring window.</LR.LIST.RESULT
  85358. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00777.unk" origfile="pics/dbreveng.gif" origtype="X" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85359. ></FAR.FIGURE.ANCHOR.RIGHT
  85360. ><LR.LIST.RESULT>As shown in the following illustration, the generated CDs display the class hierarchy defined in the selected files. The display includes attributes and operations; associations between classes are not reverse engineered.</LR.LIST.RESULT
  85361. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00778.unk" origfile="pics/cadrvng.gif" origtype="X" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85362. ></FAR.FIGURE.ANCHOR.RIGHT
  85363. ></LABEL
  85364. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85365. ><RBW-ANCHOR ID="39215"></RBW-ANCHOR
  85366. >Files for reverse engineering</L.LABEL
  85367. ><B.BODY>During reverse engineering, ObjectTeam prompts you to select the files that you want to reverse engineer. In most cases, you select NewEra header files. </B.BODY
  85368. ><BI.BODY.INTRO>The following illustration shows the Windows dialog box and the UNIX dialog box. In Windows, use the File Name and File of Type fields to filter the list of files displayed. In UNIX, use the Filter field and Filter button.</BI.BODY.INTRO
  85369. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00779.unk" origfile="pics/rvngselw.gif" origtype="X" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85370. ></FA.FIGURE.ANCHOR
  85371. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00780.unk" origfile="pics/rvngselu.gif" origtype="X" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85372. ></FA.FIGURE.ANCHOR
  85373. ></LABEL
  85374. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85375. ><RBW-ANCHOR ID="18733"></RBW-ANCHOR
  85376. >Options for reverse engineering</L.LABEL
  85377. ><BI.BODY.INTRO>During reverse engineering, ObjectTeam displays the following dialog box prompting you to select the options that you want to use:</BI.BODY.INTRO
  85378. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00781.unk" origfile="pics/rvngopts.gif" origtype="X" origdoc="../../sources/ne/neeng.fm5.mif"></RBW-GRAPHIC
  85379. ></FA.FIGURE.ANCHOR
  85380. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering" TERM2="configuring options"></RBW-IDXTERM
  85381. >The following table describes each option (default values are as shown in the dialog box):</B.BODY
  85382. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  85383. ></ENTRY
  85384. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Descriptions</CELLHEADING
  85385. ></ENTRY
  85386. ></RBW-ROW
  85387. ></THEAD
  85388. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diagram</CELLBODY
  85389. ></ENTRY
  85390. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Name of the diagram to be generated. Multiple header files can be generated to a single diagram.</CELLBODY
  85391. ></ENTRY
  85392. ></RBW-ROW
  85393. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate</CELLBODY
  85394. ></ENTRY
  85395. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether to generate CDs, CDMs, or both:</CELLBODY
  85396. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85397. ></RBW-AUTOGEN
  85398. ></RBW-MARKER
  85399. ><RBW-PARABODY>CDs and CDMs</RBW-PARABODY
  85400. ></CELLBULLET
  85401. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85402. ></RBW-AUTOGEN
  85403. ></RBW-MARKER
  85404. ><RBW-PARABODY>Only CDs (only an inheritance structure is generated)</RBW-PARABODY
  85405. ></CELLBULLET
  85406. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85407. ></RBW-AUTOGEN
  85408. ></RBW-MARKER
  85409. ><RBW-PARABODY>Only CDMs (only features are generated)</RBW-PARABODY
  85410. ></CELLBULLET
  85411. ></ENTRY
  85412. ></RBW-ROW
  85413. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overwrite Existing Diagrams</CELLBODY
  85414. ></ENTRY
  85415. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, existing CDs are replaced.</CELLBODY
  85416. ></ENTRY
  85417. ></RBW-ROW
  85418. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Reference Diagrams</CELLBODY
  85419. ></ENTRY
  85420. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, separate CDs are generated for classes that exceed the maximum size. </CELLBODY
  85421. ></ENTRY
  85422. ></RBW-ROW
  85423. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Class Width & Height</CELLBODY
  85424. ></ENTRY
  85425. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class.</CELLBODY
  85426. ></ENTRY
  85427. ></RBW-ROW
  85428. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Tree Width & Height</CELLBODY
  85429. ></ENTRY
  85430. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class tree.</CELLBODY
  85431. ></ENTRY
  85432. ></RBW-ROW
  85433. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Screen Width & Height</CELLBODY
  85434. ></ENTRY
  85435. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a diagram.</CELLBODY
  85436. ></ENTRY
  85437. ></RBW-ROW
  85438. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Placement Algorithm</CELLBODY
  85439. ></ENTRY
  85440. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This field is disabled. It is not used by the NewEra code generator.</CELLBODY
  85441. ></ENTRY
  85442. ></RBW-ROW
  85443. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Number of classes per CD</CELLBODY
  85444. ></ENTRY
  85445. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>This field is disabled. It is not used by the NewEra code generator.</CELLBODY
  85446. ></ENTRY
  85447. ></RBW-ROW
  85448. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Case</CELLBODY
  85449. ></ENTRY
  85450. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>NewEra is case insensitive and ObjectTeam is case sensitive. Use this field to specify which case should be used in ObjectTeam.</CELLBODY
  85451. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85452. ></RBW-AUTOGEN
  85453. ></RBW-MARKER
  85454. ><RBW-PARABODY>FirstCase. For each identifier, use the case that is first encountered. (When reverse engineering multiple files, use this option with caution.)</RBW-PARABODY
  85455. ></CELLBULLET
  85456. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85457. ></RBW-AUTOGEN
  85458. ></RBW-MARKER
  85459. ><RBW-PARABODY>UpperCase. Always use uppercase characters.</RBW-PARABODY
  85460. ></CELLBULLET
  85461. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85462. ></RBW-AUTOGEN
  85463. ></RBW-MARKER
  85464. ><RBW-PARABODY>LowerCase. Always use lowercase characters.</RBW-PARABODY
  85465. ></CELLBULLET
  85466. ></ENTRY
  85467. ></RBW-ROW
  85468. ></TBODY
  85469. ></TGROUP
  85470. ></RBW-TABLE
  85471. ><RBWAUTO-0001></RBWAUTO-0001
  85472. ><!--
  85473.  
  85474.  
  85475.  
  85476.  
  85477.  
  85478. CONVERTING SOURCE FILE ../../sources/ne/necust.fm5.mif
  85479.  
  85480.  
  85481. --><B.BODY></B.BODY
  85482. ><B.BODY></B.BODY
  85483. ><B.BODY></B.BODY
  85484. ><B.BODY></B.BODY
  85485. ><B.BODY></B.BODY
  85486. ></LABEL
  85487. ></SECTION
  85488. ></CHAPTER
  85489. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 7&rbwtab;</CX5FX5FZCHAPTER.NUM
  85490. ></RBW-AUTOGEN
  85491. ><RBW-ANCHOR ID="36160"></RBW-ANCHOR
  85492. >Customizing Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  85493. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  85494. ></RBW-SYSOBJ
  85495. ></C.CHAPTER.HEAD
  85496. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85497. >Introduction</L.LABEL
  85498. ><B.BODY>This chapter contains an overview of the areas in ObjectTeam code generation that can be customized and configured.</B.BODY
  85499. ></LABEL
  85500. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85501. >In this chapter</L.LABEL
  85502. ><B.BODY>This chapter contains the following sections:</B.BODY
  85503. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  85504. ></ENTRY
  85505. ></RBW-ROW
  85506. ></THEAD
  85507. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="42656" TYPE="XREF-TEXTCOPY">Customizing Data Types&rbwtab;7–14</RBW-XREF
  85508. ></SB.SECTION.BLOCK.TABLE
  85509. ></ENTRY
  85510. ></RBW-ROW
  85511. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13618" TYPE="XREF-TEXTCOPY">Configuring NewEra Environment&rbwtab;7–19</RBW-XREF
  85512. ></SB.SECTION.BLOCK.TABLE
  85513. ></ENTRY
  85514. ></RBW-ROW
  85515. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17927" TYPE="XREF-TEXTCOPY">Customizing the Extension of Generated Files&rbwtab;7–25</RBW-XREF
  85516. ></SB.SECTION.BLOCK.TABLE
  85517. ></ENTRY
  85518. ></RBW-ROW
  85519. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24488" TYPE="XREF-TEXTCOPY">Customizing WIF Generation&rbwtab;7–27</RBW-XREF
  85520. ></SB.SECTION.BLOCK.TABLE
  85521. ></ENTRY
  85522. ></RBW-ROW
  85523. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="24352" TYPE="XREF-TEXTCOPY">Customizing Referential Integrity Policies&rbwtab;7–31</RBW-XREF
  85524. ></SB.SECTION.BLOCK.TABLE
  85525. ></ENTRY
  85526. ></RBW-ROW
  85527. ></TBODY
  85528. ></TGROUP
  85529. ></RBW-TABLE
  85530. ></LABEL
  85531. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="42656"></RBW-ANCHOR
  85532. >Customizing Data <RBW-IDXTERM TERM1="data type" TERM2="customizing"></RBW-IDXTERM
  85533. >Types</S.SECTION.HEAD
  85534. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85535. >Standard types</L.LABEL
  85536. ><B.BODY>In the Object Design phase you can use <CX5FX5FPROCEDURE.NAMES>standard types</CX5FX5FPROCEDURE.NAMES
  85537. > to define data types of data attributes and parameters. All the valid standard types are stored in the file:</B.BODY
  85538. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  85539. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  85540. >\<CX5FX5FFILE.NAME>newera</CX5FX5FFILE.NAME
  85541. >\<CX5FX5FFILE.NAME>etc\<RBW-IDXTERM TERM1="stand_types"></RBW-IDXTERM
  85542. >stand_types.stand_types</CX5FX5FFILE.NAME
  85543. ></B.BODY
  85544. ><B.BODY>This file also contains minimum and maximum values for the standard types. </B.BODY
  85545. ><B.BODY>Whenever you generate code or check a diagram’s contents, the data types used in the diagram are always checked against the data types in the standard types file. The standard types are then mapped to the appropriate language (i.e. NewEra) types.</B.BODY
  85546. ><B.BODY>Here is a sample of the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  85547. > file for NewEra:</B.BODY
  85548. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  85549. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  85550. ><EWM.EXAMPLEW.MONO># StandardType            | Min 1    | Max 1  | Min 2  | Max 2</EWM.EXAMPLEW.MONO
  85551. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  85552. ><EWM.EXAMPLEW.MONO>byte                      |0         |0       |0       |0</EWM.EXAMPLEW.MONO
  85553. ><EWM.EXAMPLEW.MONO>char                      |0         |32767   |0       |0</EWM.EXAMPLEW.MONO
  85554. ><EWM.EXAMPLEW.MONO>uns_char                  |0         |32767   |0       |0</EWM.EXAMPLEW.MONO
  85555. ><EWM.EXAMPLEW.MONO>date                      |0         |0       |0       |0</EWM.EXAMPLEW.MONO
  85556. ><EWM.EXAMPLEW.MONO>datetime_year_to_day      |0         |0       |0       |0</EWM.EXAMPLEW.MONO
  85557. ><EWM.EXAMPLEW.MONO>datetime_hour_to_minute   |0         |0       |0       |0</EWM.EXAMPLEW.MONO
  85558. ><EWM.EXAMPLEW.MONO>datetime_year_to_fraction |0         |5       |0       |0</EWM.EXAMPLEW.MONO
  85559. ><EWM.EXAMPLEW.MONO>dec                       |0         |32      |0       |32</EWM.EXAMPLEW.MONO
  85560. ><EWM.EXAMPLEW.MONO>decimal                   |0         |32      |0       |32</EWM.EXAMPLEW.MONO
  85561. ><EWM.EXAMPLEW.MONO>double_precision          |0         |13      |0       |0</EWM.EXAMPLEW.MONO
  85562. ><EWM.EXAMPLEW.MONO>float                     |0         |13      |0       |0</EWM.EXAMPLEW.MONO
  85563. ><EWM.EXAMPLEW.MONO>double                    |0         |0       |0       |0</EWM.EXAMPLEW.MONO
  85564. ><EWM.EXAMPLEW.MONO>short                     |0         |0       |0       |0</EWM.EXAMPLEW.MONO
  85565. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  85566. ></LABEL
  85567. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85568. >What do the columns mean</L.LABEL
  85569. ><B.BODY>The columns <CX5FX5FFILE.NAME>Min 1</CX5FX5FFILE.NAME
  85570. >, <CX5FX5FFILE.NAME>Max 1</CX5FX5FFILE.NAME
  85571. > and <CX5FX5FFILE.NAME>Min 2</CX5FX5FFILE.NAME
  85572. > and <CX5FX5FFILE.NAME>Max 2</CX5FX5FFILE.NAME
  85573. > can be used to specify constraints on array size or format values of the standard types.</B.BODY
  85574. ></LABEL
  85575. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85576. >Checking types</L.LABEL
  85577. ><B.BODY>Whenever you generate code or check a diagram’s contents, the data types used in the diagram are checked against the data types in the standard types file. This checking is always carried out, even when you don’t generate persistent code.</B.BODY
  85578. ><B.BODY>During code generation, the standard types are mapped to:</B.BODY
  85579. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85580. ></RBW-AUTOGEN
  85581. ></RBW-MARKER
  85582. ><RBW-PARABODY><CX5FX5FFILE.NAME>NewEra types</CX5FX5FFILE.NAME
  85583. > </RBW-PARABODY
  85584. ></LB.LIST.BULLET
  85585. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85586. ></RBW-AUTOGEN
  85587. ></RBW-MARKER
  85588. ><RBW-PARABODY><CX5FX5FFILE.NAME>SQL types</CX5FX5FFILE.NAME
  85589. > </RBW-PARABODY
  85590. ></LB.LIST.BULLET
  85591. ></LABEL
  85592. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85593. >Customization File</L.LABEL
  85594. ><B.BODY>You can create a customization file <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  85595. > if you want to extend or change the default <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  85596. > file. You can do that by selecting File | New on the Browser level of your choice with the pseudo object <customization files> as current object. The name of the new customization file must be <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  85597. >. After you have created the file, you can edit it and save it.</B.BODY
  85598. ><B.BODY>The next time you generate code, your user&truehy;defined customization file is evaluated by the code generator. The nearest customization file overrules all other customization files that might be defined on higher levels. So if you have, for instance, a user&truehy;defined customization file <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  85599. > defined on Configuration level, Project level and System level, the one on System level overrules all the other ones.</B.BODY
  85600. ></LABEL
  85601. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="NewEra types"></RBW-IDXTERM
  85602. >NewEra Types</SS.SUBSEC.HEAD
  85603. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85604. >NewEra types</L.LABEL
  85605. ><B.BODY>NewEra types are data types that are supported by the Relational Database System (RDBMS) used. The standard types are mapped to NewEra types during persistent code generation.</B.BODY
  85606. ><B.BODY>The mapping is taken care of by the configuration file:</B.BODY
  85607. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  85608. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  85609. >\<CX5FX5FFILE.NAME>newera</CX5FX5FFILE.NAME
  85610. >\<CX5FX5FFILE.NAME>etc\<RBW-IDXTERM TERM1="stand_types"></RBW-IDXTERM
  85611. >lang_types.lang_types</CX5FX5FFILE.NAME
  85612. ></B.BODY
  85613. ><B.BODY>Here is a sample of the <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  85614. > file for NewEra:</B.BODY
  85615. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  85616. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  85617. ><EWM.EXAMPLEW.MONO># Standard type             | NewEra         | range</EWM.EXAMPLEW.MONO
  85618. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  85619. ><EWM.EXAMPLEW.MONO>byte                        | BYTE           | *</EWM.EXAMPLEW.MONO
  85620. ><EWM.EXAMPLEW.MONO>char                        | CHAR           | ()</EWM.EXAMPLEW.MONO
  85621. ><EWM.EXAMPLEW.MONO>uns_char                    | CHAR           | ()</EWM.EXAMPLEW.MONO
  85622. ><EWM.EXAMPLEW.MONO>date                        | DATE           | *</EWM.EXAMPLEW.MONO
  85623. ><EWM.EXAMPLEW.MONO>datetime_year_to_day        | DATETIME YEAR TO DAY      | *</EWM.EXAMPLEW.MONO
  85624. ><EWM.EXAMPLEW.MONO>datetime_hour_to_minute     | DATETIME HOUR TO MINUTE   | *</EWM.EXAMPLEW.MONO
  85625. ><EWM.EXAMPLEW.MONO>datetime_year_to_fraction   | DATETIME YEAR TO FRACTION | ()</EWM.EXAMPLEW.MONO
  85626. ><EWM.EXAMPLEW.MONO>dec                         | DEC            | ()</EWM.EXAMPLEW.MONO
  85627. ><EWM.EXAMPLEW.MONO>decimal                     | DECIMAL        | ()</EWM.EXAMPLEW.MONO
  85628. ><EWM.EXAMPLEW.MONO>double_precision            | DOUBLE PRECISION          | ()</EWM.EXAMPLEW.MONO
  85629. ><EWM.EXAMPLEW.MONO>float                       | FLOAT          | ()</EWM.EXAMPLEW.MONO
  85630. ><EWM.EXAMPLEW.MONO>double                      | FLOAT          | *</EWM.EXAMPLEW.MONO
  85631. ><EWM.EXAMPLEW.MONO>short                       | SMALLINT       | *</EWM.EXAMPLEW.MONO
  85632. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  85633. ></LABEL
  85634. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85635. >What do the columns mean</L.LABEL
  85636. ><B.BODY>The first column in this file lists the standard types. These must be consistent with the types in the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  85637. > file. The second column lists the NewEra types the standard types must be mapped upon. In the column <CX5FX5FOBJECT.NAME>range</CX5FX5FOBJECT.NAME
  85638. > the type of brackets used in the target language is indicated.</B.BODY
  85639. ></LABEL
  85640. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85641. >Customization file</L.LABEL
  85642. ><B.BODY>You can create customization files for the files <CX5FX5FFILE.NAME>lang_types.lang_types</CX5FX5FFILE.NAME
  85643. >. The way to do that is analogous to creating a customization file for the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  85644. > file.</B.BODY
  85645. ></LABEL
  85646. ></SUBSECTION
  85647. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="SQL types"></RBW-IDXTERM
  85648. ><RBW-ANCHOR ID="31513"></RBW-ANCHOR
  85649. >SQL types</SS.SUBSEC.HEAD
  85650. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85651. >SQL types</L.LABEL
  85652. ><B.BODY>SQL types are data types that are supported by the SQL implementation of the RDBMS used.</B.BODY
  85653. ><B.BODY>The mapping is taken care of by the configuration file:</B.BODY
  85654. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  85655. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  85656. >\<CX5FX5FFILE.NAME>newera</CX5FX5FFILE.NAME
  85657. >\<CX5FX5FFILE.NAME>etc\db_types. db_types</CX5FX5FFILE.NAME
  85658. ></B.BODY
  85659. ><B.BODY>Here is a sample of the <CX5FX5FFILE.NAME>db_types</CX5FX5FFILE.NAME
  85660. > file for Informix:</B.BODY
  85661. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  85662. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  85663. ><EWM.EXAMPLEW.MONO># standard type            | Informix type             | has range?</EWM.EXAMPLEW.MONO
  85664. ><EWM.EXAMPLEW.MONO>#&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;&truehy;</EWM.EXAMPLEW.MONO
  85665. ><EWM.EXAMPLEW.MONO>byte                       | BYTE                      | *</EWM.EXAMPLEW.MONO
  85666. ><EWM.EXAMPLEW.MONO>char                       | CHAR                      | ()</EWM.EXAMPLEW.MONO
  85667. ><EWM.EXAMPLEW.MONO>date                       | DATE                      | *</EWM.EXAMPLEW.MONO
  85668. ><EWM.EXAMPLEW.MONO># some examples of DATETIME</EWM.EXAMPLEW.MONO
  85669. ><EWM.EXAMPLEW.MONO>datetime_year_to_day       | DATETIME YEAR TO DAY      | *</EWM.EXAMPLEW.MONO
  85670. ><EWM.EXAMPLEW.MONO>datetime_hour_to_minute    | DATETIME HOUR TO MINUTE   | *</EWM.EXAMPLEW.MONO
  85671. ><EWM.EXAMPLEW.MONO>datetime_year_to_fraction  | DATETIME YEAR TO FRACTION | ()</EWM.EXAMPLEW.MONO
  85672. ><EWM.EXAMPLEW.MONO>dec                        | DEC                       | ()</EWM.EXAMPLEW.MONO
  85673. ><EWM.EXAMPLEW.MONO>decimal                    | DECIMAL                   | ()</EWM.EXAMPLEW.MONO
  85674. ><EWM.EXAMPLEW.MONO>double_precision           | DOUBLE PRECISION          | ()</EWM.EXAMPLEW.MONO
  85675. ><EWM.EXAMPLEW.MONO>float                      | FLOAT                     | ()</EWM.EXAMPLEW.MONO
  85676. ><EWM.EXAMPLEW.MONO>int                        | INT                       | *</EWM.EXAMPLEW.MONO
  85677. ><EWM.EXAMPLEW.MONO>integer                    | INTEGER                   | *</EWM.EXAMPLEW.MONO
  85678. ><EWM.EXAMPLEW.MONO># some examples of INTERVAL</EWM.EXAMPLEW.MONO
  85679. ><EWM.EXAMPLEW.MONO># parameters not supported</EWM.EXAMPLEW.MONO
  85680. ><EWM.EXAMPLEW.MONO>interval_year_to_month     | INTERVAL YEAR TO MONTH    | *</EWM.EXAMPLEW.MONO
  85681. ><EWM.EXAMPLEW.MONO>interval_hour_to_minute    | INTERVAL HOUR TO MINUTE   | *</EWM.EXAMPLEW.MONO
  85682. ><EWM.EXAMPLEW.MONO>money                      | MONEY                     | ()</EWM.EXAMPLEW.MONO
  85683. ><EWM.EXAMPLEW.MONO>...</EWM.EXAMPLEW.MONO
  85684. ></LABEL
  85685. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85686. >What do the columns mean</L.LABEL
  85687. ><B.BODY>The first column in this file lists the standard types. These must be consistent with the types in the <CX5FX5FFILE.NAME>stand_types.stand_types</CX5FX5FFILE.NAME
  85688. > file. The second column lists the SQL types the standard types must be mapped upon. In the column has <CX5FX5FINPUT>range</CX5FX5FINPUT
  85689. > the type of brackets used in the target language is indicated.</B.BODY
  85690. ></LABEL
  85691. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85692. >Customization file</L.LABEL
  85693. ><B.BODY>You can create customization files for the files <CX5FX5FFILE.NAME>db_types</CX5FX5FFILE.NAME
  85694. >. The way to do that is analogous to creating a customization file for the <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  85695. > file.</B.BODY
  85696. ></LABEL
  85697. ></SUBSECTION
  85698. ></SECTION
  85699. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="13618"></RBW-ANCHOR
  85700. >Configuring NewEra Environment</S.SECTION.HEAD
  85701. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85702. >Introduction</L.LABEL
  85703. ><B.BODY>When you configure the NewEra environment (see <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your NewEra Environment</RBW-XREF
  85704. >), the following command is run behind the scenes:</B.BODY
  85705. ><B.BODY><CX5FX5FINPUT>otsh &truehy;f <RBWAUTO-0007>M4_home</RBWAUTO-0007
  85706. >\<RBWAUTO-0004>modules</RBWAUTO-0004
  85707. >\<RBWAUTO-0004>newera</RBWAUTO-0004
  85708. >\<RBWAUTO-0004>tcl</RBWAUTO-0004
  85709. >\<RBWAUTO-0004>config_ne.tcl</RBWAUTO-0004
  85710. > </CX5FX5FINPUT
  85711. ></B.BODY
  85712. ><B.BODY>This file copies the source files of the selected class library (<CX5FX5FOBJECT.NAME>lw4omtne</CX5FX5FOBJECT.NAME
  85713. >) to the user environment. You are supposed to build this library with the NewEra Application Builder.</B.BODY
  85714. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85715. >For more information</SL.SUBLABEL
  85716. ><B.BODY>For details on the class library lw4omtne, refer to <RBW-XREF REFID="18476" TYPE="XREF-TEXTCOPY">page 7–20</RBW-XREF
  85717. > and further.</B.BODY
  85718. ><B.BODY>If you don’t want to use the configuration script <CX5FX5FFILE.NAME>config_ne.tcl</CX5FX5FFILE.NAME
  85719. >, refer to <RBW-XREF REFID="23768" TYPE="XREF-TEXTCOPY">page 7–21</RBW-XREF
  85720. > and further for details on how to change the appropriate Tcl files.</B.BODY
  85721. ></LABEL
  85722. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-IDXTERM TERM1="class library"></RBW-IDXTERM
  85723. ><RBW-ANCHOR ID="18476"></RBW-ANCHOR
  85724. >Class Library <RBW-IDXTERM TERM1="lw4omtne"></RBW-IDXTERM
  85725. >lw4omtne</SS.SUBSEC.HEAD
  85726. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85727. >What is the class library lw4omtne for</L.LABEL
  85728. ><B.BODY>The classes in the class library <CX5FX5FOBJECT.NAME>lw4omtne</CX5FX5FOBJECT.NAME
  85729. > are used to provide NewEra storage structures for classes participating in associations and qualified associations. These type of classes are more commonly referred to as container classes or collector classes, since they can contain many occurrences of any type of class. They also provide maintenance and search methods. </B.BODY
  85730. ><B.BODY>The code generator maintains (qualified) associations specified in CDs by generating class member functions. See <RBW-XREF REFID="34119" TYPE="XREF-TEXTCOPY">Associations</RBW-XREF
  85731. > for the mapping of associations in diagrams and the implementation in (non&truehy;persistent) NewEra code.</B.BODY
  85732. ></LABEL
  85733. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85734. >Which classes does the class library include</L.LABEL
  85735. ><B.BODY>The next table summarizes the classes available in lw4omtne and a short description. </B.BODY
  85736. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="79p"><COLSPEC COLNAME="2" COLWIDTH="369p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING> Class </CELLHEADING
  85737. ></ENTRY
  85738. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING> Description</CELLHEADING
  85739. ></ENTRY
  85740. ></RBW-ROW
  85741. ></THEAD
  85742. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> RefSet </CELLBODY
  85743. ></ENTRY
  85744. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> A set containing object references</CELLBODY
  85745. ></ENTRY
  85746. ></RBW-ROW
  85747. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> ORefSet </CELLBODY
  85748. ></ENTRY
  85749. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> An ordered set containing object references</CELLBODY
  85750. ></ENTRY
  85751. ></RBW-ROW
  85752. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> RefDict </CELLBODY
  85753. ></ENTRY
  85754. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> A dictionary containing object references</CELLBODY
  85755. ></ENTRY
  85756. ></RBW-ROW
  85757. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> RSetDict </CELLBODY
  85758. ></ENTRY
  85759. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> A dictionary containing sets of object references</CELLBODY
  85760. ></ENTRY
  85761. ></RBW-ROW
  85762. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> ORSetDict</CELLBODY
  85763. ></ENTRY
  85764. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> A dictionary containing ordered sets of object references</CELLBODY
  85765. ></ENTRY
  85766. ></RBW-ROW
  85767. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> DBObject</CELLBODY
  85768. ></ENTRY
  85769. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> The root class of every persistent class</CELLBODY
  85770. ></ENTRY
  85771. ></RBW-ROW
  85772. ></TBODY
  85773. ></TGROUP
  85774. ></RBW-TABLE
  85775. ></LABEL
  85776. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85777. >What are these classes based on</L.LABEL
  85778. ><B.BODY>The current implementation of the set and dictionary classes are based on the NewEra class ixVector, which is part of the Data Class Library (DCL) that comes standard with the NewEra product. When these data structures are used heavily, they should be replaced with more efficient implementations to improve performance.</B.BODY
  85779. ><B.BODY>The class DBObject is the root class of every persistent class for which code is generated. DBObject offers general functions for database interaction (connections, transactions), but also functionality that is needed by every persistent class. (See <RBW-XREF REFID="14975" TYPE="XREF-TEXTCOPY">The Class DBObject</RBW-XREF
  85780. > for more information.)</B.BODY
  85781. ></LABEL
  85782. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85783. >The file main.4gl</L.LABEL
  85784. ><B.BODY>With the library comes a file called <CX5FX5FFILE.NAME>main.4gl</CX5FX5FFILE.NAME
  85785. > which contains an example of the <CX5FX5FOBJECT.NAME>MAIN</CX5FX5FOBJECT.NAME
  85786. > function every program needs. Note that this file must not be included in the library itself! </B.BODY
  85787. ></LABEL
  85788. ></SUBSECTION
  85789. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23768"></RBW-ANCHOR
  85790. >Adapting <RBW-ANCHOR ID="NewEra Configuration File"></RBW-ANCHOR
  85791. >NewEra Configuration Files</SS.SUBSEC.HEAD
  85792. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85793. >Which configuration files can you change</L.LABEL
  85794. ><B.BODY>If you want to use a different class library, you have to edit the following Tcl files:</B.BODY
  85795. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85796. ></RBW-AUTOGEN
  85797. ></RBW-MARKER
  85798. ><RBW-PARABODY><CX5FX5FFILE.NAME>ne_const.tcl</CX5FX5FFILE.NAME
  85799. > </RBW-PARABODY
  85800. ></LB.LIST.BULLET
  85801. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  85802. ></RBW-AUTOGEN
  85803. ></RBW-MARKER
  85804. ><RBW-PARABODY><CX5FX5FFILE.NAME>ne_config.tcl</CX5FX5FFILE.NAME
  85805. > </RBW-PARABODY
  85806. ></LB.LIST.BULLET
  85807. ><B.BODY>The elements you can change in these files are listed below. The files can be found in the following directory:</B.BODY
  85808. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  85809. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  85810. >\<CX5FX5FFILE.NAME>newera</CX5FX5FFILE.NAME
  85811. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  85812. ></B.BODY
  85813. ></LABEL
  85814. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  85815. ><RBW-IDXTERM TERM1="ne_const.tcl"></RBW-IDXTERM
  85816. >ne_const.tcl</L.LABEL
  85817. ><B.BODY>Adapt this file to change constants for code generation.</B.BODY
  85818. ><B.BODY>These are the Tcl variables in this file:</B.BODY
  85819. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="192p"><COLSPEC COLNAME="2" COLWIDTH="253p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl variables</CELLHEADING
  85820. ></ENTRY
  85821. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>defines</CELLHEADING
  85822. ></ENTRY
  85823. ></RBW-ROW
  85824. ></THEAD
  85825. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>TYPE_ID_NM</CELLBODY
  85826. ></ENTRY
  85827. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the type column in the database runtime system</CELLBODY
  85828. ><CELLBODY>default class_type</CELLBODY
  85829. ></ENTRY
  85830. ></RBW-ROW
  85831. ><RBW-ROW><ENTRY COLNAME="1" MOREROWS="1" VALIGN="TOP"><CELLBODY>START_INCLUDE_MESSAGE</CELLBODY
  85832. ><CELLBODY>END_INCLUDE_MESSAGE</CELLBODY
  85833. ><CELLBODY>START_CTOR_MESSAGE</CELLBODY
  85834. ><CELLBODY>END_CTOR_MESSAGE</CELLBODY
  85835. ></ENTRY
  85836. ><ENTRY COLNAME="2" MOREROWS="1" VALIGN="TOP"><CELLBODY>magic strings to be used for code regeneration; defaults are:</CELLBODY
  85837. ><CELLBODY>"&truehy;&truehy; Start user added include file section"</CELLBODY
  85838. ><CELLBODY>"&truehy;&truehy; End user added include file section"</CELLBODY
  85839. ><CELLBODY>"&truehy;&truehy; Start constructor user section"</CELLBODY
  85840. ><CELLBODY>"&truehy;&truehy; End constructor user section"</CELLBODY
  85841. ></ENTRY
  85842. ></RBW-ROW
  85843. ><RBW-ROW></RBW-ROW
  85844. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>START_DTOR_MESSAGE</CELLBODY
  85845. ></ENTRY
  85846. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>"&truehy;&truehy; Start destructor user section"</CELLBODY
  85847. ></ENTRY
  85848. ></RBW-ROW
  85849. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>END_DTOR_MESSAGE</CELLBODY
  85850. ></ENTRY
  85851. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>"&truehy;&truehy; End destructor user section"</CELLBODY
  85852. ></ENTRY
  85853. ></RBW-ROW
  85854. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>START_SOURCE_MESSAGE</CELLBODY
  85855. ></ENTRY
  85856. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>"&truehy;&truehy; Start user added source code section"</CELLBODY
  85857. ></ENTRY
  85858. ></RBW-ROW
  85859. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>END_SOURCE_MESSAGE</CELLBODY
  85860. ></ENTRY
  85861. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>"&truehy;&truehy; End user added source code section"</CELLBODY
  85862. ></ENTRY
  85863. ></RBW-ROW
  85864. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>REGEN_END</CELLBODY
  85865. ></ENTRY
  85866. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>"&truehy;&truehy; Do not delete this line &truehy;&truehy; regeneration end marker"</CELLBODY
  85867. ><CELLBODY>Changing these strings in an existing project can cause regeneration failures.</CELLBODY
  85868. ></ENTRY
  85869. ></RBW-ROW
  85870. ></TBODY
  85871. ></TGROUP
  85872. ></RBW-TABLE
  85873. ><B.BODY>These are the Tcl procedures in this file:</B.BODY
  85874. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="159p"><COLSPEC COLNAME="2" COLWIDTH="289p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl procedure</CELLHEADING
  85875. ></ENTRY
  85876. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>returns/generates/translates</CELLHEADING
  85877. ></ENTRY
  85878. ></RBW-ROW
  85879. ></THEAD
  85880. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class2file <CX5FX5FTERM>name</CX5FX5FTERM
  85881. ></CELLBODY
  85882. ></ENTRY
  85883. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>returns the source file name for a class name</CELLBODY
  85884. ></ENTRY
  85885. ></RBW-ROW
  85886. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>h_class2file <CX5FX5FTERM>name</CX5FX5FTERM
  85887. ></CELLBODY
  85888. ></ENTRY
  85889. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>returns the header file name for a class name</CELLBODY
  85890. ></ENTRY
  85891. ></RBW-ROW
  85892. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>gen_include <CX5FX5FTERM>class section</CX5FX5FTERM
  85893. ></CELLBODY
  85894. ></ENTRY
  85895. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>INCLUDE statement for <CX5FX5FTERM>name</CX5FX5FTERM
  85896. > in <CX5FX5FTERM>section</CX5FX5FTERM
  85897. ></CELLBODY
  85898. ><CELLBODY>with file protector</CELLBODY
  85899. ></ENTRY
  85900. ></RBW-ROW
  85901. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>gen_include_filename <CX5FX5FTERM>filename</CX5FX5FTERM
  85902. > <CX5FX5FTERM>sect</CX5FX5FTERM
  85903. ></CELLBODY
  85904. ></ENTRY
  85905. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>INCLUDE statement for <CX5FX5FTERM>filename</CX5FX5FTERM
  85906. > in <CX5FX5FTERM>section</CX5FX5FTERM
  85907. > </CELLBODY
  85908. ></ENTRY
  85909. ></RBW-ROW
  85910. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>reference_name <CX5FX5FTERM>class</CX5FX5FTERM
  85911. ></CELLBODY
  85912. ></ENTRY
  85913. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name for variable of reference type</CELLBODY
  85914. ><CELLBODY>default: <CX5FX5FTERM>class</CX5FX5FTERM
  85915. >Ref</CELLBODY
  85916. ></ENTRY
  85917. ></RBW-ROW
  85918. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set_name <CX5FX5FTERM>class</CX5FX5FTERM
  85919. ></CELLBODY
  85920. ></ENTRY
  85921. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name for variable of set type</CELLBODY
  85922. ><CELLBODY>default : <CX5FX5FTERM>class</CX5FX5FTERM
  85923. >Set</CELLBODY
  85924. ></ENTRY
  85925. ></RBW-ROW
  85926. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set_type_name <CX5FX5FTERM>class</CX5FX5FTERM
  85927. ></CELLBODY
  85928. ></ENTRY
  85929. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>set type name for <CX5FX5FTERM>class</CX5FX5FTERM
  85930. >, uses <CX5FX5FOBJECT.NAME>set:name</CX5FX5FOBJECT.NAME
  85931. > </CELLBODY
  85932. ></ENTRY
  85933. ></RBW-ROW
  85934. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dict_name <CX5FX5FTERM>class</CX5FX5FTERM
  85935. ></CELLBODY
  85936. ></ENTRY
  85937. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name for variable of dictionary type</CELLBODY
  85938. ><CELLBODY>default: <CX5FX5FTERM>name</CX5FX5FTERM
  85939. >Dict</CELLBODY
  85940. ></ENTRY
  85941. ></RBW-ROW
  85942. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dict_type_name <CX5FX5FTERM>key_type</CX5FX5FTERM
  85943. > <CX5FX5FTERM>value_type</CX5FX5FTERM
  85944. ></CELLBODY
  85945. ></ENTRY
  85946. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> dictionary type name for <CX5FX5FTERM>key_type</CX5FX5FTERM
  85947. > and <CX5FX5FTERM>value_type</CX5FX5FTERM
  85948. >, uses <CX5FX5FOBJECT.NAME>dict::name</CX5FX5FOBJECT.NAME
  85949. > </CELLBODY
  85950. ></ENTRY
  85951. ></RBW-ROW
  85952. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set_dict_name <CX5FX5FTERM>class</CX5FX5FTERM
  85953. ></CELLBODY
  85954. ></ENTRY
  85955. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name for variable of set dictionary type</CELLBODY
  85956. ><CELLBODY>default: <CX5FX5FTERM>class</CX5FX5FTERM
  85957. >RSDict</CELLBODY
  85958. ></ENTRY
  85959. ></RBW-ROW
  85960. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set_dict_type_name <CX5FX5FTERM>key_type</CX5FX5FTERM
  85961. > <CX5FX5FTERM>value_type</CX5FX5FTERM
  85962. ></CELLBODY
  85963. ></ENTRY
  85964. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY> set dictionary type name for <CX5FX5FTERM>key_type</CX5FX5FTERM
  85965. > and <CX5FX5FTERM>value_type</CX5FX5FTERM
  85966. > </CELLBODY
  85967. ></ENTRY
  85968. ></RBW-ROW
  85969. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set_dict_name <CX5FX5FTERM>class</CX5FX5FTERM
  85970. ></CELLBODY
  85971. ></ENTRY
  85972. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The set dict name for <CX5FX5FTERM>class</CX5FX5FTERM
  85973. > </CELLBODY
  85974. ></ENTRY
  85975. ></RBW-ROW
  85976. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set_dict_type_name <CX5FX5FTERM>key_type</CX5FX5FTERM
  85977. > <CX5FX5FTERM>value_type</CX5FX5FTERM
  85978. ></CELLBODY
  85979. ></ENTRY
  85980. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The set dict type name for <CX5FX5FTERM>key</CX5FX5FTERM
  85981. > and <CX5FX5FTERM>value</CX5FX5FTERM
  85982. >, uses rs<CX5FX5FOBJECT.NAME>dict::name</CX5FX5FOBJECT.NAME
  85983. > </CELLBODY
  85984. ></ENTRY
  85985. ></RBW-ROW
  85986. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>oset_dict_name <CX5FX5FTERM>class</CX5FX5FTERM
  85987. ></CELLBODY
  85988. ></ENTRY
  85989. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The ordered set dict name for <CX5FX5FTERM>class</CX5FX5FTERM
  85990. > </CELLBODY
  85991. ><CELLBODY>default: <CX5FX5FTERM>class</CX5FX5FTERM
  85992. >ORSDict</CELLBODY
  85993. ></ENTRY
  85994. ></RBW-ROW
  85995. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>oset_dict_type_name <CX5FX5FTERM>key_type</CX5FX5FTERM
  85996. > <CX5FX5FTERM>value_type</CX5FX5FTERM
  85997. ></CELLBODY
  85998. ></ENTRY
  85999. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The ordered set dict type name for <CX5FX5FTERM>key</CX5FX5FTERM
  86000. > and <CX5FX5FTERM>value</CX5FX5FTERM
  86001. >, uses <CX5FX5FTERM>orsdict</CX5FX5FTERM
  86002. ><CX5FX5FOBJECT.NAME>::name</CX5FX5FOBJECT.NAME
  86003. > </CELLBODY
  86004. ></ENTRY
  86005. ></RBW-ROW
  86006. ></TBODY
  86007. ></TGROUP
  86008. ></RBW-TABLE
  86009. ></LABEL
  86010. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86011. ><RBW-IDXTERM TERM1="ne_config.tcl"></RBW-IDXTERM
  86012. >ne_config.tcl</L.LABEL
  86013. ><B.BODY>Adapt this file to change class library settings. These are the Tcl variables in this file:</B.BODY
  86014. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="174p"><COLSPEC COLNAME="2" COLWIDTH="274p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl variable</CELLHEADING
  86015. ></ENTRY
  86016. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>defines</CELLHEADING
  86017. ></ENTRY
  86018. ></RBW-ROW
  86019. ></THEAD
  86020. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>exsrc_searchpath</CELLBODY
  86021. ></ENTRY
  86022. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>directories that are searched for external sources; directories are separated by a semicolon; the external sources are set through the External Class Source property</CELLBODY
  86023. ></ENTRY
  86024. ></RBW-ROW
  86025. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>string::name</CELLBODY
  86026. ></ENTRY
  86027. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the string class</CELLBODY
  86028. ><CELLBODY>(default: ixString )</CELLBODY
  86029. ></ENTRY
  86030. ></RBW-ROW
  86031. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set::name</CELLBODY
  86032. ></ENTRY
  86033. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the class library reference set class</CELLBODY
  86034. ><CELLBODY>(default: RefSet)</CELLBODY
  86035. ></ENTRY
  86036. ></RBW-ROW
  86037. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86038. ></ENTRY
  86039. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86040. ></ENTRY
  86041. ></RBW-ROW
  86042. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set::add</CELLBODY
  86043. ></ENTRY
  86044. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the add method</CELLBODY
  86045. ></ENTRY
  86046. ></RBW-ROW
  86047. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set::add_retval</CELLBODY
  86048. ></ENTRY
  86049. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the add_retval method (add retrurn value)</CELLBODY
  86050. ></ENTRY
  86051. ></RBW-ROW
  86052. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set::size</CELLBODY
  86053. ></ENTRY
  86054. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the size method</CELLBODY
  86055. ></ENTRY
  86056. ></RBW-ROW
  86057. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>set::remove</CELLBODY
  86058. ></ENTRY
  86059. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the remove method</CELLBODY
  86060. ></ENTRY
  86061. ></RBW-ROW
  86062. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86063. ></ENTRY
  86064. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86065. ></ENTRY
  86066. ></RBW-ROW
  86067. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>oset::name</CELLBODY
  86068. ></ENTRY
  86069. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the class library ordered reference set class</CELLBODY
  86070. ><CELLBODY>(default: ORefSet)</CELLBODY
  86071. ></ENTRY
  86072. ></RBW-ROW
  86073. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>oset::add</CELLBODY
  86074. ></ENTRY
  86075. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the add method</CELLBODY
  86076. ></ENTRY
  86077. ></RBW-ROW
  86078. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>oset::add_retval</CELLBODY
  86079. ></ENTRY
  86080. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the add_retval method (add retrurn value)</CELLBODY
  86081. ></ENTRY
  86082. ></RBW-ROW
  86083. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>oset::size</CELLBODY
  86084. ></ENTRY
  86085. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the size method</CELLBODY
  86086. ></ENTRY
  86087. ></RBW-ROW
  86088. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>oset::remove</CELLBODY
  86089. ></ENTRY
  86090. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the remove method</CELLBODY
  86091. ></ENTRY
  86092. ></RBW-ROW
  86093. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86094. ></ENTRY
  86095. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86096. ></ENTRY
  86097. ></RBW-ROW
  86098. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dict::name</CELLBODY
  86099. ></ENTRY
  86100. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the class library dictionary class</CELLBODY
  86101. ><CELLBODY>(default: RefDict)</CELLBODY
  86102. ></ENTRY
  86103. ></RBW-ROW
  86104. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dict::set</CELLBODY
  86105. ></ENTRY
  86106. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the set method</CELLBODY
  86107. ></ENTRY
  86108. ></RBW-ROW
  86109. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dict::size</CELLBODY
  86110. ></ENTRY
  86111. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the size method</CELLBODY
  86112. ></ENTRY
  86113. ></RBW-ROW
  86114. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dict::remove</CELLBODY
  86115. ></ENTRY
  86116. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the remove method</CELLBODY
  86117. ></ENTRY
  86118. ></RBW-ROW
  86119. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86120. ></ENTRY
  86121. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86122. ></ENTRY
  86123. ></RBW-ROW
  86124. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>rsdict::name</CELLBODY
  86125. ></ENTRY
  86126. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the class library set class</CELLBODY
  86127. ><CELLBODY>(default: RSetDict)</CELLBODY
  86128. ></ENTRY
  86129. ></RBW-ROW
  86130. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>rsdict::add</CELLBODY
  86131. ></ENTRY
  86132. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the add method</CELLBODY
  86133. ></ENTRY
  86134. ></RBW-ROW
  86135. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>rsdict::add_retval</CELLBODY
  86136. ></ENTRY
  86137. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the add_retval method (add retrurn value)</CELLBODY
  86138. ></ENTRY
  86139. ></RBW-ROW
  86140. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>rsdict::size</CELLBODY
  86141. ></ENTRY
  86142. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the size method</CELLBODY
  86143. ></ENTRY
  86144. ></RBW-ROW
  86145. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>rsdict::remove</CELLBODY
  86146. ></ENTRY
  86147. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the remove method</CELLBODY
  86148. ></ENTRY
  86149. ></RBW-ROW
  86150. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86151. ></ENTRY
  86152. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86153. ></ENTRY
  86154. ></RBW-ROW
  86155. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>orsdict::name</CELLBODY
  86156. ></ENTRY
  86157. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the class library ordered set class</CELLBODY
  86158. ><CELLBODY>(default: ORSetDict)</CELLBODY
  86159. ></ENTRY
  86160. ></RBW-ROW
  86161. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>orsdict::add</CELLBODY
  86162. ></ENTRY
  86163. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the add method</CELLBODY
  86164. ></ENTRY
  86165. ></RBW-ROW
  86166. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>orsdict::add_retval</CELLBODY
  86167. ></ENTRY
  86168. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the add_retval method (add retrurn value)</CELLBODY
  86169. ></ENTRY
  86170. ></RBW-ROW
  86171. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>orsdict::size</CELLBODY
  86172. ></ENTRY
  86173. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the size method</CELLBODY
  86174. ></ENTRY
  86175. ></RBW-ROW
  86176. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>orsdict::remove</CELLBODY
  86177. ></ENTRY
  86178. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>name of the remove method</CELLBODY
  86179. ></ENTRY
  86180. ></RBW-ROW
  86181. ></TBODY
  86182. ></TGROUP
  86183. ></RBW-TABLE
  86184. ><B.BODY>These are the Tcl procedures in this file:</B.BODY
  86185. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="225p"><COLSPEC COLNAME="2" COLWIDTH="225p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>tcl procedure</CELLHEADING
  86186. ></ENTRY
  86187. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>defined</CELLHEADING
  86188. ></ENTRY
  86189. ></RBW-ROW
  86190. ></THEAD
  86191. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> set::iter <CX5FX5FTERM>decl_sect impl_sect name type action</CX5FX5FTERM
  86192. ></CELLBODY
  86193. ></ENTRY
  86194. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generates an iterator of <CX5FX5FTERM>type</CX5FX5FTERM
  86195. > and <CX5FX5FTERM>name</CX5FX5FTERM
  86196. > in <CX5FX5FTERM>section</CX5FX5FTERM
  86197. >; <CX5FX5FTERM>action</CX5FX5FTERM
  86198. > contains the iterated code (RefSet)</CELLBODY
  86199. ></ENTRY
  86200. ></RBW-ROW
  86201. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> oset::iter <CX5FX5FTERM>decl_sect impl_sect name type action</CX5FX5FTERM
  86202. ></CELLBODY
  86203. ></ENTRY
  86204. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generates an iterator of <CX5FX5FTERM>type</CX5FX5FTERM
  86205. > and <CX5FX5FTERM>name</CX5FX5FTERM
  86206. > in <CX5FX5FTERM>section</CX5FX5FTERM
  86207. >; <CX5FX5FTERM>action</CX5FX5FTERM
  86208. > contains the iterated code (ORefSet)</CELLBODY
  86209. ></ENTRY
  86210. ></RBW-ROW
  86211. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> dict::get_and_return <CX5FX5FTERM>sect name key return_type</CX5FX5FTERM
  86212. ></CELLBODY
  86213. ></ENTRY
  86214. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>gets an element from the dictionary selected by <CX5FX5FTERM>key</CX5FX5FTERM
  86215. > and returns its value (RefDict)</CELLBODY
  86216. ></ENTRY
  86217. ></RBW-ROW
  86218. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> dict::get_test_and_act <CX5FX5FTERM>sect name key return_type action</CX5FX5FTERM
  86219. ></CELLBODY
  86220. ></ENTRY
  86221. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>gets an element from the dictionary selected by <CX5FX5FTERM>key</CX5FX5FTERM
  86222. >, tests its validity and calls <CX5FX5FTERM>action</CX5FX5FTERM
  86223. > for that element (RefDict)</CELLBODY
  86224. ></ENTRY
  86225. ></RBW-ROW
  86226. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> dict::iter <CX5FX5FTERM>decl_sect impl_sect name type qual_type action</CX5FX5FTERM
  86227. ></CELLBODY
  86228. ></ENTRY
  86229. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generates an iterator of <CX5FX5FTERM>type</CX5FX5FTERM
  86230. >, <CX5FX5FTERM>qual_type</CX5FX5FTERM
  86231. > and <CX5FX5FTERM>name</CX5FX5FTERM
  86232. > in <CX5FX5FTERM>section</CX5FX5FTERM
  86233. >; <CX5FX5FTERM>action</CX5FX5FTERM
  86234. > contains the iterated code (RefDict)</CELLBODY
  86235. ></ENTRY
  86236. ></RBW-ROW
  86237. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> dict::initializer <CX5FX5FTERM>name key value</CX5FX5FTERM
  86238. ></CELLBODY
  86239. ></ENTRY
  86240. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generates the dictionary initializer for the constructor (RefDict)</CELLBODY
  86241. ></ENTRY
  86242. ></RBW-ROW
  86243. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> rsdict::get_and_return <CX5FX5FTERM>sect name key return_type</CX5FX5FTERM
  86244. ></CELLBODY
  86245. ></ENTRY
  86246. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>gets an element from the dictionary selected by <CX5FX5FTERM>key</CX5FX5FTERM
  86247. > and returns its value (RSetDict)</CELLBODY
  86248. ></ENTRY
  86249. ></RBW-ROW
  86250. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> rsdict::iter <CX5FX5FTERM>decl_sect impl_sect name type qual_type action</CX5FX5FTERM
  86251. ></CELLBODY
  86252. ></ENTRY
  86253. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generates an iterator of <CX5FX5FTERM>type</CX5FX5FTERM
  86254. > and <CX5FX5FTERM>name</CX5FX5FTERM
  86255. > in <CX5FX5FTERM>section</CX5FX5FTERM
  86256. >; <CX5FX5FTERM>action</CX5FX5FTERM
  86257. > contains the iterated code (RSetDict)</CELLBODY
  86258. ></ENTRY
  86259. ></RBW-ROW
  86260. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> rsdict::initializer <CX5FX5FTERM>name key value</CX5FX5FTERM
  86261. ></CELLBODY
  86262. ></ENTRY
  86263. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generates the set initializer for the constructor (RefDict)</CELLBODY
  86264. ></ENTRY
  86265. ></RBW-ROW
  86266. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY> orsdict::get_and_return <CX5FX5FTERM>sect name key return_type</CX5FX5FTERM
  86267. ></CELLBODY
  86268. ></ENTRY
  86269. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>gets an element from the dictionary selected by <CX5FX5FTERM>key</CX5FX5FTERM
  86270. > and returns its value (ORSetDict)</CELLBODY
  86271. ></ENTRY
  86272. ></RBW-ROW
  86273. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>orsdict::iter <CX5FX5FTERM>decl_sect impl_sect name type qual_type action</CX5FX5FTERM
  86274. ></CELLBODY
  86275. ></ENTRY
  86276. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generates an iterator of <CX5FX5FTERM>type</CX5FX5FTERM
  86277. > and <CX5FX5FTERM>name</CX5FX5FTERM
  86278. > in <CX5FX5FTERM>section</CX5FX5FTERM
  86279. >; <CX5FX5FTERM>action</CX5FX5FTERM
  86280. > contains the iterated code (ORSetDict)</CELLBODY
  86281. ></ENTRY
  86282. ></RBW-ROW
  86283. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>orsdict::initializer <CX5FX5FTERM>name key value</CX5FX5FTERM
  86284. ></CELLBODY
  86285. ></ENTRY
  86286. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>generates the dictionary initializer for the constructor (ORSetDict)</CELLBODY
  86287. ></ENTRY
  86288. ></RBW-ROW
  86289. ></TBODY
  86290. ></TGROUP
  86291. ></RBW-TABLE
  86292. ></LABEL
  86293. ></SUBSECTION
  86294. ></SECTION
  86295. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17927"></RBW-ANCHOR
  86296. >Customizing the <RBW-IDXTERM TERM1="File extension" TERM2="customizing"></RBW-IDXTERM
  86297. >Extension of Generated Files</S.SECTION.HEAD
  86298. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86299. >Default File extensions</L.LABEL
  86300. ><B.BODY>By default, the extension for generated source files is <CX5FX5FFILE.NAME>4gl</CX5FX5FFILE.NAME
  86301. > for NewEra source files and <CX5FX5FFILE.NAME>4gh</CX5FX5FFILE.NAME
  86302. > for header files. You can, however, change this into something else.</B.BODY
  86303. ></LABEL
  86304. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86305. >How to change the extension</L.LABEL
  86306. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  86307. ></RBW-AUTOGEN
  86308. ></RBW-MARKER
  86309. ><RBW-PARABODY>To change the extension of generated source files:</RBW-PARABODY
  86310. ></P.PROCEDURE
  86311. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  86312. ></RBW-AUTOGEN
  86313. ></RBW-MARKER
  86314. ><RBW-PARABODY>Create a customization file <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  86315. >.</RBW-PARABODY
  86316. ></LN.LIST.NUM
  86317. ><LT.LIST.TEXT>You do this by opening up the pseudo object <customization files> on an appropriate browser level, select File | New and select <CX5FX5FFILE.NAME>objtype.objtype</CX5FX5FFILE.NAME
  86318. > from the dialog box.</LT.LIST.TEXT
  86319. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  86320. ></RBW-AUTOGEN
  86321. ></RBW-MARKER
  86322. ><RBW-PARABODY>Double&truehy;click on the new customization file in the information area of the browser.</RBW-PARABODY
  86323. ></LN.LIST.NUM
  86324. ><LR.LIST.RESULT>The Object Type Customization Editor starts up.</LR.LIST.RESULT
  86325. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  86326. ></RBW-AUTOGEN
  86327. ></RBW-MARKER
  86328. ><RBW-PARABODY>To change the extension for header files, for example, select the row containing the Repository Type <CX5FX5FOBJECT.NAME>External File Version</CX5FX5FOBJECT.NAME
  86329. > and the Browser Type <CX5FX5FOBJECT.NAME>4gh.</CX5FX5FOBJECT.NAME
  86330. ></RBW-PARABODY
  86331. ></LN.LIST.NUM
  86332. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  86333. ></RBW-AUTOGEN
  86334. ></RBW-MARKER
  86335. ><RBW-PARABODY>Select Edit | Redefine.</RBW-PARABODY
  86336. ></LN.LIST.NUM
  86337. ><LR.LIST.RESULT>A dialog box appears.</LR.LIST.RESULT
  86338. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  86339. ></RBW-AUTOGEN
  86340. ></RBW-MARKER
  86341. ><RBW-PARABODY>Click on the Interface tab in this dialog box.</RBW-PARABODY
  86342. ></LN.LIST.NUM
  86343. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00782.unk" origfile="pics/objextfv.gif" origtype="X" origdoc="../../sources/ne/necust.fm5.mif"></RBW-GRAPHIC
  86344. ></FA.FIGURE.ANCHOR
  86345. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  86346. ></RBW-AUTOGEN
  86347. ></RBW-MARKER
  86348. ><RBW-PARABODY>Change the value <CX5FX5FOBJECT.NAME>4gh</CX5FX5FOBJECT.NAME
  86349. > in the field File system extension into the preferred extension.</RBW-PARABODY
  86350. ></LN.LIST.NUM
  86351. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  86352. ></RBW-AUTOGEN
  86353. ></RBW-MARKER
  86354. ><RBW-PARABODY>Click OK and select File | Save in the Object Type Customization Editor.</RBW-PARABODY
  86355. ></LN.LIST.NUM
  86356. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>8&rbwtab;</CX5FX5FZLIST.NUMBER
  86357. ></RBW-AUTOGEN
  86358. ></RBW-MARKER
  86359. ><RBW-PARABODY>To make sure the new customization file is read by ObjectTeam, go to Corporate Level in the browser and go back to Implementation System level.</RBW-PARABODY
  86360. ></LN.LIST.NUM
  86361. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>9&rbwtab;</CX5FX5FZLIST.NUMBER
  86362. ></RBW-AUTOGEN
  86363. ></RBW-MARKER
  86364. ><RBW-PARABODY>To test if your customization takes effect, select File | New | External File Version.</RBW-PARABODY
  86365. ></LN.LIST.NUM
  86366. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>10&rbwtab;</CX5FX5FZLIST.NUMBER
  86367. ></RBW-AUTOGEN
  86368. ></RBW-MARKER
  86369. ><RBW-PARABODY>Select <CX5FX5FOBJECT.NAME>4gh</CX5FX5FOBJECT.NAME
  86370. > from the dialog box and click the Edit button.</RBW-PARABODY
  86371. ></LN.LIST.NUM
  86372. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>11&rbwtab;</CX5FX5FZLIST.NUMBER
  86373. ></RBW-AUTOGEN
  86374. ></RBW-MARKER
  86375. ><RBW-PARABODY>The text editor that is now started up should show the file name with the new extension.</RBW-PARABODY
  86376. ></LN.LIST.NUM
  86377. ><B.BODY>Newly generated files will have the new extension in your user environment. However, the column Type in the information area of the browser on Implementation System level still reads 4gh.</B.BODY
  86378. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  86379. ></RBW-AUTOGEN
  86380. >Delete files that were generated before you created the customization file. When you generate them again, they will have the new file extension.</T.TIP
  86381. ></LABEL
  86382. ></SECTION
  86383. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="24488"></RBW-ANCHOR
  86384. >Customizing WIF Generation</S.SECTION.HEAD
  86385. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86386. >Introduction</L.LABEL
  86387. ><B.BODY>You can customize the generation of wif template files (see <RBW-XREF REFID="16738" TYPE="XREF-TEXTCOPY">Chapter 5, Modeling the User Interface</RBW-XREF
  86388. >) by changing the Tcl variables in the following Tcl file:</B.BODY
  86389. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  86390. >\<CX5FX5FFILE.NAME>modules</CX5FX5FFILE.NAME
  86391. >\<CX5FX5FFILE.NAME>newera</CX5FX5FFILE.NAME
  86392. >\<CX5FX5FFILE.NAME>tcl\wif_const.tcl</CX5FX5FFILE.NAME
  86393. ></B.BODY
  86394. ><B.BODY>The Tcl variables you can change can be divided into two sections:</B.BODY
  86395. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86396. ></RBW-AUTOGEN
  86397. ></RBW-MARKER
  86398. ><RBW-PARABODY>Tcl variables that control the generation of graphical objects in the wif template file</RBW-PARABODY
  86399. ></LB.LIST.BULLET
  86400. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86401. ></RBW-AUTOGEN
  86402. ></RBW-MARKER
  86403. ><RBW-PARABODY>Tcl variables that control the generation of geometric properties of graphical objects in the wif template file</RBW-PARABODY
  86404. ></LB.LIST.BULLET
  86405. ><B.BODY>Both types of variables are discussed in this section.</B.BODY
  86406. ></LABEL
  86407. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86408. >How to create a customization file wif_const.tcl</L.LABEL
  86409. ><B.BODY>If you want to make any changes to the Tcl variables mentioned here, you have to create a customization file <CX5FX5FFILE.NAME>wif_const.tcl</CX5FX5FFILE.NAME
  86410. >. </B.BODY
  86411. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86412. >For more information</SL.SUBLABEL
  86413. ><B.BODY>Refer to <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  86414. ><CX5FX5FTITLE></CX5FX5FTITLE
  86415. > for details on how to create customization files.</B.BODY
  86416. ></LABEL
  86417. ><SUBSECTION><SS.SUBSEC.HEAD>Customizing the Generation of Graphical Objects</SS.SUBSEC.HEAD
  86418. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86419. >Introduction</L.LABEL
  86420. ><B.BODY>The next pages summarize the Tcl variables that control the generation of the different graphical objects in a wif template file. These variables are set in the Tcl file <CX5FX5FFILE.NAME>wif_const.tcl</CX5FX5FFILE.NAME
  86421. >.</B.BODY
  86422. ><B.BODY>The following graphical objects are covered:</B.BODY
  86423. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86424. ></RBW-AUTOGEN
  86425. ></RBW-MARKER
  86426. ><RBW-PARABODY><RBW-XREF REFID="41132" TYPE="XREF-TEXTCOPY">ixWindow</RBW-XREF
  86427. ></RBW-PARABODY
  86428. ></LB.LIST.BULLET
  86429. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86430. ></RBW-AUTOGEN
  86431. ></RBW-MARKER
  86432. ><RBW-PARABODY><RBW-XREF REFID="29565" TYPE="XREF-TEXTCOPY">ixSuperTable</RBW-XREF
  86433. ></RBW-PARABODY
  86434. ></LB.LIST.BULLET
  86435. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86436. ></RBW-AUTOGEN
  86437. ></RBW-MARKER
  86438. ><RBW-PARABODY><RBW-XREF REFID="22794" TYPE="XREF-TEXTCOPY">ixSuperField</RBW-XREF
  86439. ></RBW-PARABODY
  86440. ></LB.LIST.BULLET
  86441. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86442. ></RBW-AUTOGEN
  86443. ></RBW-MARKER
  86444. ><RBW-PARABODY><RBW-XREF REFID="29076" TYPE="XREF-TEXTCOPY">ixButton</RBW-XREF
  86445. ></RBW-PARABODY
  86446. ></LB.LIST.BULLET
  86447. ></LABEL
  86448. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86449. ><RBW-ANCHOR ID="41132"></RBW-ANCHOR
  86450. >ixWindow</L.LABEL
  86451. ><B.BODY>The following Tcl variables handle the generation of the object ixWindow in the wif template file:</B.BODY
  86452. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="141p"><COLSPEC COLNAME="2" COLWIDTH="307p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl variable</CELLHEADING
  86453. ></ENTRY
  86454. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>determines</CELLHEADING
  86455. ></ENTRY
  86456. ></RBW-ROW
  86457. ></THEAD
  86458. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>WindowProps</CELLBODY
  86459. ></ENTRY
  86460. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which properties are generated for the wif&truehy;object</CELLBODY
  86461. ></ENTRY
  86462. ></RBW-ROW
  86463. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UpdWindowProps</CELLBODY
  86464. ></ENTRY
  86465. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which ixWindow properties get calculated values (updated at each (re)generation; assigned with =)</CELLBODY
  86466. ></ENTRY
  86467. ></RBW-ROW
  86468. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DefWindowProps</CELLBODY
  86469. ></ENTRY
  86470. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default values for ixWindow properties (assigned with *=)</CELLBODY
  86471. ></ENTRY
  86472. ></RBW-ROW
  86473. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UserWindowProps</CELLBODY
  86474. ></ENTRY
  86475. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default values for ixWindow properties (assigned with =)</CELLBODY
  86476. ></ENTRY
  86477. ></RBW-ROW
  86478. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>WindowHandlers</CELLBODY
  86479. ></ENTRY
  86480. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which event handlers are generated for an ixWindow object</CELLBODY
  86481. ></ENTRY
  86482. ></RBW-ROW
  86483. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DefWindowHandlers</CELLBODY
  86484. ></ENTRY
  86485. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>bodies for the ixWindow event handlers</CELLBODY
  86486. ></ENTRY
  86487. ></RBW-ROW
  86488. ></TBODY
  86489. ></TGROUP
  86490. ></RBW-TABLE
  86491. ></LABEL
  86492. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86493. ><RBW-ANCHOR ID="29565"></RBW-ANCHOR
  86494. >ixSuperTable</L.LABEL
  86495. ><B.BODY>The following Tcl variables handle the generation of the object ixSuperTable in the wif template file:</B.BODY
  86496. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="132p"><COLSPEC COLNAME="2" COLWIDTH="316p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl variable</CELLHEADING
  86497. ></ENTRY
  86498. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>determines</CELLHEADING
  86499. ></ENTRY
  86500. ></RBW-ROW
  86501. ></THEAD
  86502. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SupTblProps</CELLBODY
  86503. ></ENTRY
  86504. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which properties are generated for an ixSuperTable object</CELLBODY
  86505. ></ENTRY
  86506. ></RBW-ROW
  86507. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SupTblProps</CELLBODY
  86508. ></ENTRY
  86509. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which ixSuperTable properties get calculated values (updated at each (re)generation; assigned with =)</CELLBODY
  86510. ></ENTRY
  86511. ></RBW-ROW
  86512. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DefSupTblProps</CELLBODY
  86513. ></ENTRY
  86514. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default values for ixSuperTable properties (assigned with *=)</CELLBODY
  86515. ></ENTRY
  86516. ></RBW-ROW
  86517. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UserSupTblProps</CELLBODY
  86518. ></ENTRY
  86519. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default values for ixSuperTable properties (assigned with =)</CELLBODY
  86520. ></ENTRY
  86521. ></RBW-ROW
  86522. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SupTblHandlers</CELLBODY
  86523. ></ENTRY
  86524. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which event handlers are generated for an ixSuperTable object</CELLBODY
  86525. ></ENTRY
  86526. ></RBW-ROW
  86527. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DefSupTblHandlers</CELLBODY
  86528. ></ENTRY
  86529. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>bodies for the ixSuperTable event handlers</CELLBODY
  86530. ></ENTRY
  86531. ></RBW-ROW
  86532. ></TBODY
  86533. ></TGROUP
  86534. ></RBW-TABLE
  86535. ></LABEL
  86536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86537. ><RBW-ANCHOR ID="22794"></RBW-ANCHOR
  86538. >ixSuperField</L.LABEL
  86539. ><B.BODY>The following Tcl variables handle the generation of the object ixSuperField in the wif template file:</B.BODY
  86540. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="120p"><COLSPEC COLNAME="2" COLWIDTH="328p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl variable</CELLHEADING
  86541. ></ENTRY
  86542. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>determines</CELLHEADING
  86543. ></ENTRY
  86544. ></RBW-ROW
  86545. ></THEAD
  86546. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SupFldProps</CELLBODY
  86547. ></ENTRY
  86548. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which properties are generated for an ixSuperField object</CELLBODY
  86549. ></ENTRY
  86550. ></RBW-ROW
  86551. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UpdSupFldProps</CELLBODY
  86552. ></ENTRY
  86553. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which ixSuperField properties get calculated values (updated at each (re)generation; assigned with =)</CELLBODY
  86554. ></ENTRY
  86555. ></RBW-ROW
  86556. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DefSupFldProps</CELLBODY
  86557. ></ENTRY
  86558. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default values for ixSuperField properties (assigned with *=)</CELLBODY
  86559. ></ENTRY
  86560. ></RBW-ROW
  86561. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UserSupFldProps</CELLBODY
  86562. ></ENTRY
  86563. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default values for ixSuperField properties (assigned with =)</CELLBODY
  86564. ></ENTRY
  86565. ></RBW-ROW
  86566. ></TBODY
  86567. ></TGROUP
  86568. ></RBW-TABLE
  86569. ></LABEL
  86570. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86571. ><RBW-ANCHOR ID="29076"></RBW-ANCHOR
  86572. >ixButton</L.LABEL
  86573. ><B.BODY>The following Tcl variables handle the generation of the object ixButton in the wif template file:</B.BODY
  86574. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="160p"><COLSPEC COLNAME="2" COLWIDTH="288p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Tcl variable</CELLHEADING
  86575. ></ENTRY
  86576. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>determines</CELLHEADING
  86577. ></ENTRY
  86578. ></RBW-ROW
  86579. ></THEAD
  86580. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SupTblBtnProps</CELLBODY
  86581. ></ENTRY
  86582. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which properties are generated for an ixButton object</CELLBODY
  86583. ></ENTRY
  86584. ></RBW-ROW
  86585. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UpdSupTblBtnProps</CELLBODY
  86586. ></ENTRY
  86587. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which ixButton properties get calculated values (updated at each (re)generation; assigned with =)</CELLBODY
  86588. ></ENTRY
  86589. ></RBW-ROW
  86590. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DefSupTblBtnProps</CELLBODY
  86591. ></ENTRY
  86592. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default values for ixButton properties (assigned with *=)</CELLBODY
  86593. ></ENTRY
  86594. ></RBW-ROW
  86595. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>UserSupTblBtnProps</CELLBODY
  86596. ></ENTRY
  86597. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>default values for ixButton properties (assigned with =)</CELLBODY
  86598. ></ENTRY
  86599. ></RBW-ROW
  86600. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>SupTblBtnHandlers</CELLBODY
  86601. ></ENTRY
  86602. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>which event handlers are generated for an ixButton object</CELLBODY
  86603. ></ENTRY
  86604. ></RBW-ROW
  86605. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>DefSTBtnActivateHdlrs</CELLBODY
  86606. ></ENTRY
  86607. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>contains the bodies for the active event handlers indexed on the name of the ixButton</CELLBODY
  86608. ></ENTRY
  86609. ></RBW-ROW
  86610. ></TBODY
  86611. ></TGROUP
  86612. ></RBW-TABLE
  86613. ></LABEL
  86614. ></SUBSECTION
  86615. ><SUBSECTION><SS.SUBSEC.HEAD>Customizing Geometric Properties</SS.SUBSEC.HEAD
  86616. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86617. >Which geometric properties are generated</L.LABEL
  86618. ><B.BODY>The picture below shows the lay&truehy;out of the initially generated WIF&truehy;file. Generated values of geometric properties can be influenced by the global Tcl variables as indicated in the figure below:</B.BODY
  86619. ><FAW.FIGURE.ANCHOR.WIDE><RBW-GRAPHIC filename="00783.unk" origfile="pics/geomprop.gif" origtype="X" origdoc="../../sources/ne/necust.fm5.mif"></RBW-GRAPHIC
  86620. ></FAW.FIGURE.ANCHOR.WIDE
  86621. ><B.BODY></B.BODY
  86622. ></LABEL
  86623. ></SUBSECTION
  86624. ></SECTION
  86625. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="24352"></RBW-ANCHOR
  86626. >Customizing <RBW-IDXTERM TERM1="referential integrity" TERM2="SQL generation"></RBW-IDXTERM
  86627. >Referential Integrity Policies</S.SECTION.HEAD
  86628. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86629. >Rules for Referential Integrity</L.LABEL
  86630. ><B.BODY>ObjectTeam offers the possibility to incorporate rules for referential integrity checking in the database. The default Referential Integrity rules are specified in the customization file:</B.BODY
  86631. ><B.BODY><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  86632. >\<CX5FX5FFILE.NAME>etc\sqlrules.sqlrules</CX5FX5FFILE.NAME
  86633. ></B.BODY
  86634. ></LABEL
  86635. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86636. >What does this file do</L.LABEL
  86637. ><B.BODY>In the <CX5FX5FFILE.NAME>sqlrules.sqlrules</CX5FX5FFILE.NAME
  86638. > file, a rule is specified for every type of association, aggregation and generalization. The rules, specified in the last column of the file, refer to Tcl procedures. During persistent code generation, the Tcl procedure specified for the specific type of relation is called. The SQL code that is generated by this procedure is inserted in the SQL script <CX5FX5FFILE.NAME>create_procs</CX5FX5FFILE.NAME
  86639. >. </B.BODY
  86640. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  86641. ><CX5FX5FTITLE></CX5FX5FTITLE
  86642. > for an overview of the mapping of the different types of relations to the SQL model.</B.BODY
  86643. ></LABEL
  86644. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86645. >What do the columns mean</L.LABEL
  86646. ><B.BODY>In the SQL rules file, a rule is specified for every combination of:</B.BODY
  86647. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86648. ></RBW-AUTOGEN
  86649. ></RBW-MARKER
  86650. ><RBW-PARABODY><CX5FX5FFILE.NAME>relation type</CX5FX5FFILE.NAME
  86651. >:</RBW-PARABODY
  86652. ></LB.LIST.BULLET
  86653. ><LT.LIST.TEXT>The relation type is determined by the (combination of) the master type and the detail type:</LT.LIST.TEXT
  86654. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86655. ></RBW-MARKER
  86656. ><RBW-PARABODY><CX5FX5FTERM>associative</CX5FX5FTERM
  86657. >: when the detail type is associative</RBW-PARABODY
  86658. ></LB2.LIST.BULLET.2
  86659. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86660. ></RBW-MARKER
  86661. ><RBW-PARABODY><CX5FX5FTERM>optional</CX5FX5FTERM
  86662. >: when both the master type and the detail type are optional</RBW-PARABODY
  86663. ></LB2.LIST.BULLET.2
  86664. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86665. ></RBW-MARKER
  86666. ><RBW-PARABODY><CX5FX5FTERM>total</CX5FX5FTERM
  86667. >: when the detail type is not associative and either the master type or the detail type is total</RBW-PARABODY
  86668. ></LB2.LIST.BULLET.2
  86669. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86670. ></RBW-MARKER
  86671. ><RBW-PARABODY><CX5FX5FTERM>supersubtype</CX5FX5FTERM
  86672. >: when the master type is super type and the detail type is subtype</RBW-PARABODY
  86673. ></LB2.LIST.BULLET.2
  86674. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86675. ></RBW-AUTOGEN
  86676. ></RBW-MARKER
  86677. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>database operation</CX5FX5FBULLET.EMPHASIS
  86678. >:</RBW-PARABODY
  86679. ></LB.LIST.BULLET
  86680. ><LT.LIST.TEXT><CX5FX5FTERM>insert</CX5FX5FTERM
  86681. >, <CX5FX5FTERM>update</CX5FX5FTERM
  86682. >, or <CX5FX5FTERM>delete</CX5FX5FTERM
  86683. > </LT.LIST.TEXT
  86684. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86685. ></RBW-AUTOGEN
  86686. ></RBW-MARKER
  86687. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>table type</CX5FX5FBULLET.EMPHASIS
  86688. >:</RBW-PARABODY
  86689. ></LB.LIST.BULLET
  86690. ><LT.LIST.TEXT><CX5FX5FTERM>master</CX5FX5FTERM
  86691. > or <CX5FX5FTERM>detail</CX5FX5FTERM
  86692. > </LT.LIST.TEXT
  86693. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86694. ></RBW-AUTOGEN
  86695. ></RBW-MARKER
  86696. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>master type</CX5FX5FBULLET.EMPHASIS
  86697. >:</RBW-PARABODY
  86698. ></LB.LIST.BULLET
  86699. ><LT.LIST.TEXT><CX5FX5FTERM>optional</CX5FX5FTERM
  86700. >, <CX5FX5FTERM>total</CX5FX5FTERM
  86701. > (i.e. mandatory), or <CX5FX5FTERM>super type</CX5FX5FTERM
  86702. > </LT.LIST.TEXT
  86703. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86704. ></RBW-AUTOGEN
  86705. ></RBW-MARKER
  86706. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>detail type</CX5FX5FBULLET.EMPHASIS
  86707. >:</RBW-PARABODY
  86708. ></LB.LIST.BULLET
  86709. ><LT.LIST.TEXT><CX5FX5FTERM>optional</CX5FX5FTERM
  86710. >, <CX5FX5FTERM>total</CX5FX5FTERM
  86711. > (i.e. mandatory), <CX5FX5FTERM>subtype</CX5FX5FTERM
  86712. >, or <CX5FX5FTERM>associative</CX5FX5FTERM
  86713. > </LT.LIST.TEXT
  86714. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86715. ></RBW-AUTOGEN
  86716. ></RBW-MARKER
  86717. ><RBW-PARABODY><RBW-IDXTERM TERM1="policies" TERM2="for referential integrity"></RBW-IDXTERM
  86718. ><RBW-IDXTERM TERM1="referential integrity" TERM2="policies"></RBW-IDXTERM
  86719. ><CX5FX5FBULLET.EMPHASIS>policy</CX5FX5FBULLET.EMPHASIS
  86720. >:</RBW-PARABODY
  86721. ></LB.LIST.BULLET
  86722. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86723. ></RBW-MARKER
  86724. ><RBW-PARABODY><CX5FX5FTERM>None<RBW-IDXTERM TERM1="none" TERM2="policy for referential integrity"></RBW-IDXTERM
  86725. ></CX5FX5FTERM
  86726. >: no checks are carried out when the database operation is executed. </RBW-PARABODY
  86727. ></LB2.LIST.BULLET.2
  86728. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86729. ></RBW-MARKER
  86730. ><RBW-PARABODY><CX5FX5FTERM>Cascade<RBW-IDXTERM TERM1="cascade" TERM2="policy for referential integrity"></RBW-IDXTERM
  86731. ></CX5FX5FTERM
  86732. >: referential integrity is maintained by propagating the database operation across the association. The most obvious use is for <CX5FX5FTERM>delete</CX5FX5FTERM
  86733. >.</RBW-PARABODY
  86734. ></LB2.LIST.BULLET.2
  86735. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86736. ></RBW-MARKER
  86737. ><RBW-PARABODY><CX5FX5FTERM>Restrict<RBW-IDXTERM TERM1="restrict" TERM2="policy for referential integrity"></RBW-IDXTERM
  86738. ></CX5FX5FTERM
  86739. >: the database operation is cancelled if a problem regarding referential integrity occurs.</RBW-PARABODY
  86740. ></LB2.LIST.BULLET.2
  86741. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86742. ></RBW-MARKER
  86743. ><RBW-PARABODY><CX5FX5FTERM>Nullify<RBW-IDXTERM TERM1="nullify" TERM2="policy for referential integrity"></RBW-IDXTERM
  86744. ></CX5FX5FTERM
  86745. >: when an object is removed, the foreign key value is changed to NULL, indicating that no link exists. This policy cannot be selected for <CX5FX5FTERM>insert</CX5FX5FTERM
  86746. >.</RBW-PARABODY
  86747. ></LB2.LIST.BULLET.2
  86748. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86749. ></RBW-AUTOGEN
  86750. ></RBW-MARKER
  86751. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>allowed</CX5FX5FBULLET.EMPHASIS
  86752. >:</RBW-PARABODY
  86753. ></LB.LIST.BULLET
  86754. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86755. ></RBW-MARKER
  86756. ><RBW-PARABODY><CX5FX5FTERM>default</CX5FX5FTERM
  86757. >: whether or not referential integrity is checked for this type of relation is determined by what is indicated at the top of the SQL rules file: <CX5FX5FTERM>on</CX5FX5FTERM
  86758. > or <CX5FX5FTERM>off</CX5FX5FTERM
  86759. >.</RBW-PARABODY
  86760. ></LB2.LIST.BULLET.2
  86761. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86762. ></RBW-MARKER
  86763. ><RBW-PARABODY><CX5FX5FTERM>yes</CX5FX5FTERM
  86764. >: referential integrity is checked</RBW-PARABODY
  86765. ></LB2.LIST.BULLET.2
  86766. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86767. ></RBW-MARKER
  86768. ><RBW-PARABODY><CX5FX5FTERM>no</CX5FX5FTERM
  86769. >: referential integrity is not checked</RBW-PARABODY
  86770. ></LB2.LIST.BULLET.2
  86771. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86772. ></RBW-AUTOGEN
  86773. ></RBW-MARKER
  86774. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>rule</CX5FX5FBULLET.EMPHASIS
  86775. >:</RBW-PARABODY
  86776. ></LB.LIST.BULLET
  86777. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86778. ></RBW-MARKER
  86779. ><RBW-PARABODY><CX5FX5FTERM>rej_not_exist</CX5FX5FTERM
  86780. >: this rule is only valid for the database operations <CX5FX5FTERM>insert</CX5FX5FTERM
  86781. > and <CX5FX5FTERM>update</CX5FX5FTERM
  86782. > and for the policy <CX5FX5FTERM>Restrict</CX5FX5FTERM
  86783. >. The database operation is cancelled if a tuple exports or imports keys and the tuple to which it export keys or from which it imports keys doesn’t exist</RBW-PARABODY
  86784. ></LB2.LIST.BULLET.2
  86785. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86786. ></RBW-MARKER
  86787. ><RBW-PARABODY><CX5FX5FTERM>rej_exist</CX5FX5FTERM
  86788. >: this rule is only valid for the database operations <CX5FX5FTERM>update</CX5FX5FTERM
  86789. > and <CX5FX5FTERM>delete</CX5FX5FTERM
  86790. > and for the policy <CX5FX5FTERM>Restrict</CX5FX5FTERM
  86791. >. The database operation is cancelled if the tuple export or imports keys.</RBW-PARABODY
  86792. ></LB2.LIST.BULLET.2
  86793. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86794. ></RBW-MARKER
  86795. ><RBW-PARABODY><CX5FX5FTERM>rej_last</CX5FX5FTERM
  86796. >: this rule is only valid for the database operation <CX5FX5FTERM>delete </CX5FX5FTERM
  86797. >and the table type is <CX5FX5FTERM>detail</CX5FX5FTERM
  86798. >.</RBW-PARABODY
  86799. ></LB2.LIST.BULLET.2
  86800. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86801. ></RBW-MARKER
  86802. ><RBW-PARABODY><CX5FX5FTERM>ins_in_master</CX5FX5FTERM
  86803. >: this rule is only valid for the database operations <CX5FX5FTERM>insert</CX5FX5FTERM
  86804. > and <CX5FX5FTERM>update</CX5FX5FTERM
  86805. > and for the policy <CX5FX5FTERM>Cascade</CX5FX5FTERM
  86806. >. If a tuple is inserted in the detail table and the corresponding keys do not exist in the master table, they are inserted in the master table.</RBW-PARABODY
  86807. ></LB2.LIST.BULLET.2
  86808. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86809. ></RBW-MARKER
  86810. ><RBW-PARABODY><CX5FX5FTERM>upd_in_detail</CX5FX5FTERM
  86811. >: this rule is only valid for the database operation <CX5FX5FTERM>update</CX5FX5FTERM
  86812. > and for the policy <CX5FX5FTERM>Cascade</CX5FX5FTERM
  86813. >. If keys in the master table are updated, the corresponding keys in the detail table are also updated.</RBW-PARABODY
  86814. ></LB2.LIST.BULLET.2
  86815. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86816. ></RBW-MARKER
  86817. ><RBW-PARABODY><CX5FX5FTERM>del_in_detail</CX5FX5FTERM
  86818. >: this rule is only valid for the database operations <CX5FX5FTERM>update</CX5FX5FTERM
  86819. > and <CX5FX5FTERM>delete</CX5FX5FTERM
  86820. > and for the policy <CX5FX5FTERM>Cascade</CX5FX5FTERM
  86821. >. If a tuple in the master table is deleted, all the detail tuples are also deleted.</RBW-PARABODY
  86822. ></LB2.LIST.BULLET.2
  86823. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86824. ></RBW-MARKER
  86825. ><RBW-PARABODY><CX5FX5FTERM>nullify_detail</CX5FX5FTERM
  86826. >: this rule is only valid for the database operations <CX5FX5FTERM>delete</CX5FX5FTERM
  86827. > and <CX5FX5FTERM>update</CX5FX5FTERM
  86828. >, for the table type <CX5FX5FTERM>master</CX5FX5FTERM
  86829. >, and for the policy <CX5FX5FTERM>Nullify</CX5FX5FTERM
  86830. >. If a tuple in the master table is deleted, all the corresponding keys in the detail table are set to NULL.</RBW-PARABODY
  86831. ></LB2.LIST.BULLET.2
  86832. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86833. ></RBW-MARKER
  86834. ><RBW-PARABODY><CX5FX5FTERM>none</CX5FX5FTERM
  86835. >: no rule is executed</RBW-PARABODY
  86836. ></LB2.LIST.BULLET.2
  86837. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  86838. ></RBW-MARKER
  86839. ><RBW-PARABODY><CX5FX5FTERM>not_applicable</CX5FX5FTERM
  86840. > </RBW-PARABODY
  86841. ></LB2.LIST.BULLET.2
  86842. ></LABEL
  86843. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86844. >Customizing RI globally </L.LABEL
  86845. ><B.BODY>If you want to change anything regarding Referential Integrity policies that must affect all relations of a particular type, you should create a customization file with the name <CX5FX5FFILE.NAME>sqlrules.sqlrules</CX5FX5FFILE.NAME
  86846. > on the browser level of your choice.</B.BODY
  86847. ><B.BODY>Refer to <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  86848. ><CX5FX5FTITLE></CX5FX5FTITLE
  86849. > for details on how to create customization files.</B.BODY
  86850. ></LABEL
  86851. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86852. >Customizing RI locally</L.LABEL
  86853. ><B.BODY>The default policy for a particular type of relation is specified in the SQL rules file. For every type of relation a certain rule is defined. However, for individual associations, aggregations or generalizations, you can overrule the following settings from the sqlrules file:</B.BODY
  86854. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86855. ></RBW-AUTOGEN
  86856. ></RBW-MARKER
  86857. ><RBW-PARABODY>The <CX5FX5FTERM>policy</CX5FX5FTERM
  86858. > for a particular <CX5FX5FTERM>operation</CX5FX5FTERM
  86859. > </RBW-PARABODY
  86860. ></LB.LIST.BULLET
  86861. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  86862. ></RBW-AUTOGEN
  86863. ></RBW-MARKER
  86864. ><RBW-PARABODY>Whether or not referential integrity must be checked </RBW-PARABODY
  86865. ></LB.LIST.BULLET
  86866. ><B.BODY>You can do that in the CD by editing the properties of the association, aggregation or generalization you want to overrule the default settings for:</B.BODY
  86867. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00784.unk" origfile="pics/prpriloc.gif" origtype="X" origdoc="../../sources/ne/necust.fm5.mif"></RBW-GRAPHIC
  86868. ></FA.FIGURE.ANCHOR
  86869. ><B.BODY></B.BODY
  86870. ><RBWAUTO-0001></RBWAUTO-0001
  86871. ><!--
  86872.  
  86873.  
  86874.  
  86875.  
  86876.  
  86877. CONVERTING SOURCE FILE ../../sources/ne/neprop.fm5.mif
  86878.  
  86879.  
  86880. --><B.BODY></B.BODY
  86881. ><B.BODY></B.BODY
  86882. ><B.BODY></B.BODY
  86883. ><B.BODY></B.BODY
  86884. ><B.BODY></B.BODY
  86885. ></LABEL
  86886. ></SECTION
  86887. ></CHAPTER
  86888. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  86889. ></RBW-AUTOGEN
  86890. >Properties<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  86891. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for NewEra</RBW-TEXTFLD
  86892. ></RBW-SYSOBJ
  86893. ></A.APPENDIX.HEAD
  86894. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  86895. >NewEra code generation properties</L.LABEL
  86896. ><B.BODY>The following table lists the properties that effect NewEra code generation. These are available in the CD in the Object Design phase.</B.BODY
  86897. ><RBW-TABLE><TGROUP COLS="5"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="108p"><COLSPEC COLNAME="3" COLWIDTH="99p"><COLSPEC COLNAME="4" COLWIDTH="126p"><COLSPEC COLNAME="5" COLWIDTH="153p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  86898. ></ENTRY
  86899. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Persistent non&truehy;persistent</CELLHEADING
  86900. ></ENTRY
  86901. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  86902. ></ENTRY
  86903. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  86904. ><CELLHEADING>Value</CELLHEADING
  86905. ></ENTRY
  86906. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLHEADING>For More Information</CELLHEADING
  86907. ></ENTRY
  86908. ></RBW-ROW
  86909. ></THEAD
  86910. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Abbreviation</CELLBODY
  86911. ></ENTRY
  86912. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  86913. ></ENTRY
  86914. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  86915. ><CELLBODY>Class</CELLBODY
  86916. ><CELLBODY>Qualifier</CELLBODY
  86917. ></ENTRY
  86918. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Ignored</CELLBODY
  86919. ></ENTRY
  86920. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="37407" TYPE="XREF-TEXTCOPY">Abbreviation</RBW-XREF
  86921. ></CELLBODY
  86922. ></ENTRY
  86923. ></RBW-ROW
  86924. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Access</CELLBODY
  86925. ></ENTRY
  86926. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Both</CELLBODY
  86927. ></ENTRY
  86928. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  86929. ></ENTRY
  86930. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  86931. ><CELLBODY>Protected</CELLBODY
  86932. ><CELLBODY>Private</CELLBODY
  86933. ><CELLBODY>None</CELLBODY
  86934. ></ENTRY
  86935. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="42104" TYPE="XREF-TEXTCOPY">Attribute Access</RBW-XREF
  86936. > and <RBW-XREF REFID="18253" TYPE="XREF-TEXTCOPY">Data Attribute Properties</RBW-XREF
  86937. ></CELLBODY
  86938. ></ENTRY
  86939. ></RBW-ROW
  86940. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Access</CELLBODY
  86941. ></ENTRY
  86942. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Both</CELLBODY
  86943. ></ENTRY
  86944. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  86945. ></ENTRY
  86946. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  86947. ><CELLBODY>Protected</CELLBODY
  86948. ><CELLBODY>Private</CELLBODY
  86949. ><CELLBODY>None</CELLBODY
  86950. ></ENTRY
  86951. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="40839" TYPE="XREF-TEXTCOPY">Association Properties</RBW-XREF
  86952. > and <RBW-XREF REFID="37283" TYPE="XREF-TEXTCOPY">Associations</RBW-XREF
  86953. ></CELLBODY
  86954. ></ENTRY
  86955. ></RBW-ROW
  86956. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant Attribute</CELLBODY
  86957. ></ENTRY
  86958. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  86959. ></ENTRY
  86960. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  86961. ></ENTRY
  86962. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86963. ></ENTRY
  86964. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="30471" TYPE="XREF-TEXTCOPY">Constant Attribute</RBW-XREF
  86965. ></CELLBODY
  86966. ></ENTRY
  86967. ></RBW-ROW
  86968. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Copy Qualification</CELLBODY
  86969. ></ENTRY
  86970. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  86971. ></ENTRY
  86972. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  86973. ></ENTRY
  86974. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Shallow</CELLBODY
  86975. ><CELLBODY>Deep</CELLBODY
  86976. ><CELLBODY>Null</CELLBODY
  86977. ></ENTRY
  86978. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="38900" TYPE="XREF-TEXTCOPY">Copy Qualification</RBW-XREF
  86979. ></CELLBODY
  86980. ></ENTRY
  86981. ></RBW-ROW
  86982. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  86983. ></ENTRY
  86984. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  86985. ></ENTRY
  86986. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  86987. ></ENTRY
  86988. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  86989. ></ENTRY
  86990. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="37646" TYPE="XREF-TEXTCOPY">Qualified Association Properties</RBW-XREF
  86991. ></CELLBODY
  86992. ></ENTRY
  86993. ></RBW-ROW
  86994. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default Value</CELLBODY
  86995. ></ENTRY
  86996. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  86997. ></ENTRY
  86998. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  86999. ></ENTRY
  87000. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87001. ></ENTRY
  87002. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19497" TYPE="XREF-TEXTCOPY">Default value</RBW-XREF
  87003. ></CELLBODY
  87004. ></ENTRY
  87005. ></RBW-ROW
  87006. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Delete Policy</CELLBODY
  87007. ></ENTRY
  87008. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87009. ></ENTRY
  87010. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  87011. ></ENTRY
  87012. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  87013. ><CELLBODY>None</CELLBODY
  87014. ><CELLBODY>Cascade</CELLBODY
  87015. ><CELLBODY>Restrict</CELLBODY
  87016. ><CELLBODY>Nullify</CELLBODY
  87017. ></ENTRY
  87018. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21782" TYPE="XREF-TEXTCOPY">Association</RBW-XREF
  87019. ></CELLBODY
  87020. ></ENTRY
  87021. ></RBW-ROW
  87022. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87023. ></ENTRY
  87024. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87025. ></ENTRY
  87026. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generalization</CELLBODY
  87027. ></ENTRY
  87028. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  87029. ></ENTRY
  87030. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23357" TYPE="XREF-TEXTCOPY">Generalization</RBW-XREF
  87031. ></CELLBODY
  87032. ></ENTRY
  87033. ></RBW-ROW
  87034. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  87035. ></ENTRY
  87036. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  87037. ></ENTRY
  87038. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  87039. ></ENTRY
  87040. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check Box</CELLBODY
  87041. ></ENTRY
  87042. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="33377" TYPE="XREF-TEXTCOPY">Event</RBW-XREF
  87043. ></CELLBODY
  87044. ></ENTRY
  87045. ></RBW-ROW
  87046. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>External Class Source</CELLBODY
  87047. ></ENTRY
  87048. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  87049. ></ENTRY
  87050. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  87051. ></ENTRY
  87052. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87053. ></ENTRY
  87054. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="18549" TYPE="XREF-TEXTCOPY">External Class Source</RBW-XREF
  87055. ></CELLBODY
  87056. ></ENTRY
  87057. ></RBW-ROW
  87058. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>External Include List</CELLBODY
  87059. ></ENTRY
  87060. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  87061. ></ENTRY
  87062. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  87063. ></ENTRY
  87064. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87065. ></ENTRY
  87066. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12344" TYPE="XREF-TEXTCOPY">External Include List</RBW-XREF
  87067. ></CELLBODY
  87068. ></ENTRY
  87069. ></RBW-ROW
  87070. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Insert Policy</CELLBODY
  87071. ></ENTRY
  87072. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87073. ></ENTRY
  87074. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  87075. ></ENTRY
  87076. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  87077. ><CELLBODY>None</CELLBODY
  87078. ><CELLBODY>Cascade</CELLBODY
  87079. ><CELLBODY>Restrict</CELLBODY
  87080. ></ENTRY
  87081. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21782" TYPE="XREF-TEXTCOPY">Association</RBW-XREF
  87082. ></CELLBODY
  87083. ></ENTRY
  87084. ></RBW-ROW
  87085. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87086. ></ENTRY
  87087. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87088. ></ENTRY
  87089. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generalization</CELLBODY
  87090. ></ENTRY
  87091. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  87092. ></ENTRY
  87093. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23357" TYPE="XREF-TEXTCOPY">Generalization</RBW-XREF
  87094. ></CELLBODY
  87095. ></ENTRY
  87096. ></RBW-ROW
  87097. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Access</CELLBODY
  87098. ></ENTRY
  87099. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  87100. ></ENTRY
  87101. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  87102. ></ENTRY
  87103. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  87104. ><CELLBODY>Private</CELLBODY
  87105. ><CELLBODY>Protected</CELLBODY
  87106. ></ENTRY
  87107. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="29834" TYPE="XREF-TEXTCOPY">Method Access</RBW-XREF
  87108. ></CELLBODY
  87109. ></ENTRY
  87110. ></RBW-ROW
  87111. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Nullable</CELLBODY
  87112. ></ENTRY
  87113. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Both</CELLBODY
  87114. ></ENTRY
  87115. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  87116. ></ENTRY
  87117. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  87118. ><CELLBODY>Yes</CELLBODY
  87119. ><CELLBODY>No</CELLBODY
  87120. ></ENTRY
  87121. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="30201" TYPE="XREF-TEXTCOPY">Nullable</RBW-XREF
  87122. > and <RBW-XREF REFID="18253" TYPE="XREF-TEXTCOPY">Data Attribute Properties</RBW-XREF
  87123. ></CELLBODY
  87124. ></ENTRY
  87125. ></RBW-ROW
  87126. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87127. ></ENTRY
  87128. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Both</CELLBODY
  87129. ></ENTRY
  87130. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier</CELLBODY
  87131. ></ENTRY
  87132. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  87133. ></ENTRY
  87134. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="37646" TYPE="XREF-TEXTCOPY">Qualified Association Properties</RBW-XREF
  87135. ></CELLBODY
  87136. ></ENTRY
  87137. ></RBW-ROW
  87138. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87139. ></ENTRY
  87140. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Both</CELLBODY
  87141. ></ENTRY
  87142. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  87143. ></ENTRY
  87144. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  87145. ></ENTRY
  87146. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="12066" TYPE="XREF-TEXTCOPY">Persistent</RBW-XREF
  87147. > and <RBW-XREF REFID="11158" TYPE="XREF-TEXTCOPY">How do you create a persistent class</RBW-XREF
  87148. ></CELLBODY
  87149. ></ENTRY
  87150. ></RBW-ROW
  87151. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Referential Integrity</CELLBODY
  87152. ></ENTRY
  87153. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87154. ></ENTRY
  87155. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  87156. ></ENTRY
  87157. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Global defined</CELLBODY
  87158. ><CELLBODY>On</CELLBODY
  87159. ><CELLBODY>Off</CELLBODY
  87160. ></ENTRY
  87161. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21782" TYPE="XREF-TEXTCOPY">Association</RBW-XREF
  87162. ></CELLBODY
  87163. ></ENTRY
  87164. ></RBW-ROW
  87165. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87166. ></ENTRY
  87167. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87168. ></ENTRY
  87169. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generalization</CELLBODY
  87170. ></ENTRY
  87171. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  87172. ></ENTRY
  87173. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23357" TYPE="XREF-TEXTCOPY">Generalization</RBW-XREF
  87174. ></CELLBODY
  87175. ></ENTRY
  87176. ></RBW-ROW
  87177. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Referred Class</CELLBODY
  87178. ></ENTRY
  87179. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  87180. ></ENTRY
  87181. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  87182. ></ENTRY
  87183. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87184. ></ENTRY
  87185. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23113" TYPE="XREF-TEXTCOPY">Modeling GUI Objects</RBW-XREF
  87186. ></CELLBODY
  87187. ></ENTRY
  87188. ></RBW-ROW
  87189. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Tcl Method Implementation Procedure</CELLBODY
  87190. ></ENTRY
  87191. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Non&truehy;persistent</CELLBODY
  87192. ></ENTRY
  87193. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  87194. ></ENTRY
  87195. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87196. ></ENTRY
  87197. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="18195" TYPE="XREF-TEXTCOPY">Tcl Method Implementation Procedure</RBW-XREF
  87198. ></CELLBODY
  87199. ></ENTRY
  87200. ></RBW-ROW
  87201. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text </CELLBODY
  87202. ></ENTRY
  87203. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Both</CELLBODY
  87204. ></ENTRY
  87205. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>All objects</CELLBODY
  87206. ></ENTRY
  87207. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87208. ></ENTRY
  87209. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="36796" TYPE="XREF-TEXTCOPY">Free Text</RBW-XREF
  87210. ></CELLBODY
  87211. ></ENTRY
  87212. ></RBW-ROW
  87213. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Update Policy</CELLBODY
  87214. ></ENTRY
  87215. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87216. ></ENTRY
  87217. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  87218. ></ENTRY
  87219. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default</CELLBODY
  87220. ><CELLBODY>None</CELLBODY
  87221. ><CELLBODY>Cascade</CELLBODY
  87222. ><CELLBODY>Restrict</CELLBODY
  87223. ><CELLBODY>Nullify</CELLBODY
  87224. ></ENTRY
  87225. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="21782" TYPE="XREF-TEXTCOPY">Association</RBW-XREF
  87226. ></CELLBODY
  87227. ></ENTRY
  87228. ></RBW-ROW
  87229. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  87230. ></ENTRY
  87231. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Persistent</CELLBODY
  87232. ></ENTRY
  87233. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generalization</CELLBODY
  87234. ></ENTRY
  87235. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY>as above</CELLBODY
  87236. ></ENTRY
  87237. ><ENTRY COLNAME="5" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="23357" TYPE="XREF-TEXTCOPY">Generalization</RBW-XREF
  87238. ></CELLBODY
  87239. ></ENTRY
  87240. ></RBW-ROW
  87241. ></TBODY
  87242. ></TGROUP
  87243. ><RBW-ICONIZE></RBW-TABLE
  87244. ><B.BODY></B.BODY
  87245. ><B.BODY></B.BODY
  87246. ><RBWAUTO-0001></RBWAUTO-0001
  87247. ><!--
  87248.  
  87249.  
  87250.  
  87251.  
  87252.  
  87253. CONVERTING SOURCE FILE ../../sources/pb/pbbk.mif
  87254.  
  87255.  
  87256. --><B.BODY></B.BODY
  87257. ><B.BODY></B.BODY
  87258. ><B.BODY></B.BODY
  87259. ><B.BODY></B.BODY
  87260. ><B.BODY></B.BODY
  87261. ></LABEL
  87262. ></APPENDIX
  87263. ></BOOK
  87264. ><BOOK><BH.BOOK.HEAD>PowerBuilder Code Generation Guide</BH.BOOK.HEAD
  87265. ><!--
  87266.  
  87267.  
  87268.  
  87269.  
  87270.  
  87271. CONVERTING SOURCE FILE ../../sources/pb/pbpref.fm5.mif
  87272.  
  87273.  
  87274. --><B.BODY></B.BODY
  87275. ><B.BODY></B.BODY
  87276. ><B.BODY></B.BODY
  87277. ><B.BODY></B.BODY
  87278. ><B.BODY></B.BODY
  87279. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  87280. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for PowerBuilder</RBW-TEXTFLD
  87281. ></RBW-SYSOBJ
  87282. ></CN.CHAPTER.NOX23
  87283. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87284. >About this manual</L.LABEL
  87285. ><B.BODY>The ObjectTeam <CX5FX5FTITLE><CX5FX5FTITLE>Code Generation Guide</CX5FX5FTITLE
  87286. ></CX5FX5FTITLE
  87287. > <CX5FX5FTERM>for PowerBuilder</CX5FX5FTERM
  87288. > contains information specific to the PowerBuilder<CX5FX5FSUPERSCRIPT>® </CX5FX5FSUPERSCRIPT
  87289. >programming language. This includes information for setting up, configuring, and specifying code generation details in CDs that you will use to generate PowerBuilder code. </B.BODY
  87290. ></LABEL
  87291. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87292. >Prerequisites</L.LABEL
  87293. ><B.BODY>This guide is intended for experienced users of ObjectTeam and the analysis and design method it supports. This guide gives you information on how to map ObjectTeam diagrams to PowerBuilder code; it does not teach you how to use PowerBuilder.</B.BODY
  87294. ><B.BODY>To customize or extend the capabilities of the PowerBuilder code generator, you must have a thorough understanding of the ObjectTeam Shell, the Object&truehy;Oriented Programming Language (OOPL) model structure, and the Tool Command Language (Tcl) commands.</B.BODY
  87295. ></LABEL
  87296. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87297. >PowerBuilder version</L.LABEL
  87298. ><B.BODY>The PowerBuilder code generator is designed for use with PowerBuilder 5.0, Professional or Enterprise edition. To avoid potential problems, ensure that the following PowerBuilder files are in your path before using the PowerBuilder code generator:</B.BODY
  87299. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87300. ></RBW-AUTOGEN
  87301. ></RBW-MARKER
  87302. ><RBW-PARABODY>PowerBuilder 5.0\pb050.exe </RBW-PARABODY
  87303. ></LB.LIST.BULLET
  87304. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87305. ></RBW-AUTOGEN
  87306. ></RBW-MARKER
  87307. ><RBW-PARABODY>Common Files\Powersoft Shared\pborc050.dll </RBW-PARABODY
  87308. ></LB.LIST.BULLET
  87309. ><RBWAUTO-0001></RBWAUTO-0001
  87310. ><!--
  87311.  
  87312.  
  87313.  
  87314.  
  87315.  
  87316. CONVERTING SOURCE FILE ../../sources/pb/pbobjdes.fm5.mif
  87317.  
  87318.  
  87319. --><B.BODY></B.BODY
  87320. ><B.BODY></B.BODY
  87321. ><B.BODY></B.BODY
  87322. ><B.BODY></B.BODY
  87323. ><B.BODY></B.BODY
  87324. ></LABEL
  87325. ></CHAPTERNONUM
  87326. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  87327. ></RBW-AUTOGEN
  87328. ><RBW-ANCHOR ID="13837"></RBW-ANCHOR
  87329. >Preparing Your ObjectTeam Model for Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  87330. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for PowerBuilder</RBW-TEXTFLD
  87331. ></RBW-SYSOBJ
  87332. ></C.CHAPTER.HEAD
  87333. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87334. >Introduction</L.LABEL
  87335. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  87336. ><CX5FX5FTITLE></CX5FX5FTITLE
  87337. >, you model the system without regard to the implementation environment.</B.BODY
  87338. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  87339. ></LABEL
  87340. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87341. >PowerBuilder module required</L.LABEL
  87342. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>PowerBuilder Code Generation</CX5FX5FEMPHASIS
  87343. > provides the menu items, the properties and the Tcl code required to use the PowerBuilder Code Generator. Therefore, before moving to the Object Design phase, make sure this module is active.</B.BODY
  87344. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  87345. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87346. >For more information</SL.SUBLABEL
  87347. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  87348. ><CX5FX5FTITLE></CX5FX5FTITLE
  87349. > for details on how to activate a module.</B.BODY
  87350. ></LABEL
  87351. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87352. >Object Design and Implementation</L.LABEL
  87353. ><B.BODY>This chapter describes the tasks of the Object Design phase. <RBW-XREF REFID="40013" TYPE="XREF-TEXTCOPY">Chapter 2, Generating Code</RBW-XREF
  87354. >, describes the tasks of the Implementation phase. You work iteratively in these two phases to generate code and complete your application.</B.BODY
  87355. ></LABEL
  87356. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87357. >Purpose of object design</L.LABEL
  87358. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  87359. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  87360. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  87361. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use oter diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  87362. ></LABEL
  87363. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87364. >In this chapter</L.LABEL
  87365. ><B.BODY>This chapter contains the following sections:</B.BODY
  87366. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  87367. ></ENTRY
  87368. ></RBW-ROW
  87369. ></THEAD
  87370. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11800" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;1–3</RBW-XREF
  87371. ></SB.SECTION.BLOCK.TABLE
  87372. ></ENTRY
  87373. ></RBW-ROW
  87374. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11719" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;1–6</RBW-XREF
  87375. ></SB.SECTION.BLOCK.TABLE
  87376. ></ENTRY
  87377. ></RBW-ROW
  87378. ></TBODY
  87379. ></TGROUP
  87380. ></RBW-TABLE
  87381. ></LABEL
  87382. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  87383. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  87384. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  87385. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  87386. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  87387. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  87388. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  87389. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  87390. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  87391. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  87392. >Refining the Class Diagrams</S.SECTION.HEAD
  87393. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87394. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  87395. ></L.LABEL
  87396. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  87397. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  87398. ></LABEL
  87399. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87400. >Using data from diagrams other than CDs</L.LABEL
  87401. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  87402. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  87403. ></ENTRY
  87404. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  87405. ></ENTRY
  87406. ></RBW-ROW
  87407. ></THEAD
  87408. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  87409. ></ENTRY
  87410. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  87411. ><CELLBODY>STD class</CELLBODY
  87412. ><CELLBODY>UCD actor</CELLBODY
  87413. ></ENTRY
  87414. ></RBW-ROW
  87415. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  87416. ></ENTRY
  87417. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  87418. ><CELLBODY>STD event or event message</CELLBODY
  87419. ><CELLBODY>UCD communication association</CELLBODY
  87420. ></ENTRY
  87421. ></RBW-ROW
  87422. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  87423. ></ENTRY
  87424. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  87425. ><CELLBODY>STD condition on an event</CELLBODY
  87426. ></ENTRY
  87427. ></RBW-ROW
  87428. ></TBODY
  87429. ></TGROUP
  87430. ></RBW-TABLE
  87431. ></LABEL
  87432. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87433. >Upper&truehy; and lower&truehy;case characters</L.LABEL
  87434. ><B.BODY>ObjectTeam is case&truehy;sensitive, but in many cases PowerBuilder allows only lower&truehy;case characters. To prevent potential problems, Cayenne strongly recommends that you use only lower&truehy;case characters to name items in systems that are used with the PowerBuilder code generator.</B.BODY
  87435. ></LABEL
  87436. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87437. >Classes</L.LABEL
  87438. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  87439. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions of the class type. In PowerBuilder, each ObjectTeam class must have a valid supertype. For more information, see <RBW-XREF REFID="15448" TYPE="XREF-TEXTCOPY">Mapping Classes</RBW-XREF
  87440. >.</B.BODY
  87441. ></LABEL
  87442. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87443. >External classes</L.LABEL
  87444. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  87445. ></LABEL
  87446. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87447. >Associations</L.LABEL
  87448. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  87449. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  87450. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87451. >Role names in Analysis and System Design</SL.SUBLABEL
  87452. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  87453. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00785.tif" origseq="1" origtype="I" origdoc="../../sources/pb/pbobjdes.fm5.mif"></RBW-GRAPHIC
  87454. ></FA.FIGURE.ANCHOR
  87455. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87456. >Role names in Object Design and Implementation</SL.SUBLABEL
  87457. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods  for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  87458. ></LABEL
  87459. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87460. >Attributes</L.LABEL
  87461. ><B.BODY>You must specify each attribute completely, including its data type. The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  87462. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  87463. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87464. >Data types</SL.SUBLABEL
  87465. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and derived types. </B.BODY
  87466. ></LABEL
  87467. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87468. >Operations</L.LABEL
  87469. ><BI.BODY.INTRO>You must specify each operation completely.  This includes specifying such aspects as:</BI.BODY.INTRO
  87470. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87471. ></RBW-AUTOGEN
  87472. ></RBW-MARKER
  87473. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  87474. ></LB.LIST.BULLET
  87475. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87476. ></RBW-AUTOGEN
  87477. ></RBW-MARKER
  87478. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  87479. ></LB.LIST.BULLET
  87480. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87481. ></RBW-AUTOGEN
  87482. ></RBW-MARKER
  87483. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  87484. ></LB.LIST.BULLET
  87485. ></LABEL
  87486. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87487. >Properties</L.LABEL
  87488. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  87489. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  87490. >These details are incorporated in the final code.</BI.BODY.INTRO
  87491. ></LABEL
  87492. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87493. >Checking</L.LABEL
  87494. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  87495. ><CX5FX5FTITLE></CX5FX5FTITLE
  87496. > for more information about the Check utility.</B.BODY
  87497. ></LABEL
  87498. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87499. >For more information</L.LABEL
  87500. ><B.BODY><RBW-XREF REFID="16205" TYPE="XREF-TEXTCOPY">Chapter 3, Modeling Nonvisual Elements</RBW-XREF
  87501. >, and <RBW-XREF REFID="41939" TYPE="XREF-TEXTCOPY">Chapter 4, Modeling the Visual Interface</RBW-XREF
  87502. >, describe how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  87503. ></LABEL
  87504. ></SECTION
  87505. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  87506. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  87507. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  87508. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  87509. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  87510. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  87511. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  87512. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  87513. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  87514. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  87515. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  87516. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87517. >Introduction</L.LABEL
  87518. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  87519. ></LABEL
  87520. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87521. >Understanding the translations</L.LABEL
  87522. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  87523. ></LABEL
  87524. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87525. >Naming conventions</L.LABEL
  87526. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, bear in mind that spaces between words (in class names, for instance) are deleted by ObjectTeam code generators.</B.BODY
  87527. ></LABEL
  87528. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87529. >Customizing code generation</L.LABEL
  87530. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own.. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  87531. ></LABEL
  87532. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87533. >Using multiple languages in a single application</L.LABEL
  87534. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  87535. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  87536. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  87537. ></RBW-AUTOGEN
  87538. ></RBW-MARKER
  87539. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  87540. ></LN.LIST.NUM
  87541. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  87542. ></RBW-AUTOGEN
  87543. ></RBW-MARKER
  87544. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  87545. ></LN.LIST.NUM
  87546. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  87547. ></RBW-AUTOGEN
  87548. ></RBW-MARKER
  87549. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  87550. ></LN.LIST.NUM
  87551. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  87552. ></RBW-AUTOGEN
  87553. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  87554. ></LABEL
  87555. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87556. ></L.LABEL
  87557. ><B.BODY></B.BODY
  87558. ><!--
  87559.  
  87560.  
  87561.  
  87562.  
  87563.  
  87564. CONVERTING SOURCE FILE ../../sources/pb/pbcodegn.fm5.mif
  87565.  
  87566.  
  87567. --><B.BODY></B.BODY
  87568. ><B.BODY></B.BODY
  87569. ><B.BODY></B.BODY
  87570. ><B.BODY></B.BODY
  87571. ><B.BODY></B.BODY
  87572. ></LABEL
  87573. ></SECTION
  87574. ></CHAPTER
  87575. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  87576. ></RBW-AUTOGEN
  87577. ><RBW-ANCHOR ID="40013"></RBW-ANCHOR
  87578. >Generating Code<RBWAUTO-0028><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  87579. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for PowerBuilder</RBW-TEXTFLD
  87580. ></RBW-SYSOBJ
  87581. ></RBWAUTO-0028
  87582. ></C.CHAPTER.HEAD
  87583. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87584. >Introduction</L.LABEL
  87585. ><B.BODY><RBW-IDXTERM TERM1="code generation"></RBW-IDXTERM
  87586. >Typically, the ultimate goal of modeling an application is to produce code that implements the application. In ObjectTeam, you can generate a significant portion of the code automatically, then complete the code by adding the details that not specified in the model.</B.BODY
  87587. ></LABEL
  87588. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87589. >Prerequisites</L.LABEL
  87590. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87591. ></RBW-AUTOGEN
  87592. ></RBW-MARKER
  87593. ><RBW-PARABODY>The ObjectTeam module <CX5FX5FEMPHASIS>PowerBuilder Code generation</CX5FX5FEMPHASIS
  87594. > must be active from Object Design Phase and Implementation Phase level down.</RBW-PARABODY
  87595. ></LB.LIST.BULLET
  87596. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87597. ></RBW-AUTOGEN
  87598. ></RBW-MARKER
  87599. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="13837" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  87600. >.</RBW-PARABODY
  87601. ></LB.LIST.BULLET
  87602. ></LABEL
  87603. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87604. >Generated files</L.LABEL
  87605. ><B.BODY>The PowerBuilder source files generated by ObjectTeam are ASCII files that can be imported into a PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87606. >) library.</B.BODY
  87607. ></LABEL
  87608. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87609. >Steps for generating code</L.LABEL
  87610. ><B.BODY>The following table provides an overview of the code generation process. This chapter describes each step in greater detail.</B.BODY
  87611. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  87612. ></ENTRY
  87613. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  87614. ></ENTRY
  87615. ></RBW-ROW
  87616. ></THEAD
  87617. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  87618. ></ENTRY
  87619. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Configure the PowerBuilder environment, copying required source files from the ObjectTeam installation directories to the appropriate user environment directories.</CELLBODY
  87620. ></ENTRY
  87621. ></RBW-ROW
  87622. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  87623. ></ENTRY
  87624. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Import your systems into the Implementation phase. During this step, ObjectTeam runs the Tcl scripts that generate the PowerBuilder source files.</CELLBODY
  87625. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  87626. > System level in the Implementation phase is fundamentally different than System level in other phases. The System files in the Implementation phase are source files, not diagram files.</CELLBODY
  87627. ></ENTRY
  87628. ></RBW-ROW
  87629. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  87630. ></ENTRY
  87631. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam generates a portion of your application, but not the entire application. To complete the generated source files, edit them in PowerBuilder, as described in the following table.</CELLBODY
  87632. ></ENTRY
  87633. ></RBW-ROW
  87634. ></TBODY
  87635. ></TGROUP
  87636. ></RBW-TABLE
  87637. ></LABEL
  87638. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87639. >Steps for editing and regenerating code</L.LABEL
  87640. ><B.BODY>The following table provides an overview of the process for editing and regenerating code. This chapter describes each step in greater detail.</B.BODY
  87641. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  87642. ></ENTRY
  87643. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  87644. ></ENTRY
  87645. ></RBW-ROW
  87646. ></THEAD
  87647. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  87648. ></ENTRY
  87649. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create a PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87650. >) library and import the generated source files into it. You can do this in either ObjectTeam or PowerBuilder.</CELLBODY
  87651. ></ENTRY
  87652. ></RBW-ROW
  87653. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  87654. ></ENTRY
  87655. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>In PowerBuilder, create a PowerBuilder application. Add the library you just created to the library search path of the application. The generated PowerBuilder objects are now available in your PowerBuilder application.</CELLBODY
  87656. ></ENTRY
  87657. ></RBW-ROW
  87658. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  87659. ></ENTRY
  87660. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>In PowerBuilder, complete the generated code. For example, ObjectTeam generates events for an object, but you must complete the event scripts in PowerBuilder.</CELLBODY
  87661. ><CELLBODY>The PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87662. >) library now contains the modified code.</CELLBODY
  87663. ></ENTRY
  87664. ></RBW-ROW
  87665. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  87666. ></ENTRY
  87667. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Export the modified code from the PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87668. >) library, overwriting the generated source files. The generated source files now contain the changes that you made in PowerBuilder.</CELLBODY
  87669. ></ENTRY
  87670. ></RBW-ROW
  87671. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  87672. ></ENTRY
  87673. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>In ObjectTeam, modify the model and regenerate the PowerBuilder source files.</CELLBODY
  87674. ><CELLBODY>The edits you made in PowerBuilder are not lost when you regenerate the source files (by reimporting systems into the Implementation phase). The code generator recognizes your changes and transfers them to the newly generated files.<RBWAUTO-0004><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  87675. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  87676. ></RBWAUTO-0004
  87677. > <RBWAUTO-0004><RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  87678. ></RBWAUTO-0004
  87679. ></CELLBODY
  87680. ></ENTRY
  87681. ></RBW-ROW
  87682. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  87683. ></ENTRY
  87684. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Import the generated source files into your PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87685. >) library and return to step 3.</CELLBODY
  87686. ></ENTRY
  87687. ></RBW-ROW
  87688. ></TBODY
  87689. ></TGROUP
  87690. ></RBW-TABLE
  87691. ></LABEL
  87692. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87693. >Importing and exporting source files</L.LABEL
  87694. ><B.BODY>ObjectTeam supports incremental development. You can edit the ObjectTeam model or the generated PowerBuilder code. The PowerBuilder code generator preserves your changes as long as you remember the following:</B.BODY
  87695. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87696. ></RBW-AUTOGEN
  87697. ></RBW-MARKER
  87698. ><RBW-PARABODY>After editing the model in ObjectTeam, generate the PowerBuilder source file and import it into your PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87699. >) library. Your changes are now available in PowerBuilder.</RBW-PARABODY
  87700. ></LB.LIST.BULLET
  87701. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87702. ></RBW-AUTOGEN
  87703. ></RBW-MARKER
  87704. ><RBW-PARABODY>After editing in PowerBuilder, export the code overwriting the originally generated source files. The PowerBuilder source file now contains your changes, which will be preserved when ObjectTeam regenerates the source file.</RBW-PARABODY
  87705. ></LB.LIST.BULLET
  87706. ><BI.BODY.INTRO>The following figure illustrates this process:</BI.BODY.INTRO
  87707. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00786.tif" origseq="1" origtype="I" origdoc="../../sources/pb/pbcodegn.fm5.mif"></RBW-GRAPHIC
  87708. ></FA.FIGURE.ANCHOR
  87709. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87710. >Automatic import and export</SL.SUBLABEL
  87711. ><B.BODY>It is critical to import generated source files into your PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87712. >) library and to export edited files out of the PowerBuilder library. <RBW-XREF REFID="31389" TYPE="XREF-TEXTCOPY">Workflow Using the Keep Synchronized Property</RBW-XREF
  87713. > describes how you can automate the process by using the System&truehy;level property Keep Synchronized With PowerBuilder Libraries.</B.BODY
  87714. ></LABEL
  87715. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87716. >Illustration of code generation</L.LABEL
  87717. ><BI.BODY.INTRO>The following illustration shows how ObjectTeam generates code, including the names of the Tcl scripts that it uses.</BI.BODY.INTRO
  87718. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00787.tif" origseq="23" origtype="I" origdoc="../../sources/pb/pbcodegn.fm5.mif"></RBW-GRAPHIC
  87719. ></FAR.FIGURE.ANCHOR.RIGHT
  87720. ></LABEL
  87721. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87722. >In this chapter</L.LABEL
  87723. ><B.BODY>This chapter contains the following sections:</B.BODY
  87724. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  87725. ></ENTRY
  87726. ></RBW-ROW
  87727. ></THEAD
  87728. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35736" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;2–5</RBW-XREF
  87729. ></SB.SECTION.BLOCK.TABLE
  87730. ></ENTRY
  87731. ></RBW-ROW
  87732. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your PowerBuilder Environment&rbwtab;2–7</RBW-XREF
  87733. ></SB.SECTION.BLOCK.TABLE
  87734. ></ENTRY
  87735. ></RBW-ROW
  87736. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23311" TYPE="XREF-TEXTCOPY">Generating PowerBuilder Source Files&rbwtab;2–9</RBW-XREF
  87737. ></SB.SECTION.BLOCK.TABLE
  87738. ></ENTRY
  87739. ></RBW-ROW
  87740. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="38296" TYPE="XREF-TEXTCOPY">Editing Generated Source Files&rbwtab;2–13</RBW-XREF
  87741. ></SB.SECTION.BLOCK.TABLE
  87742. ></ENTRY
  87743. ></RBW-ROW
  87744. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28110" TYPE="XREF-TEXTCOPY">Regenerating Code&rbwtab;2–22</RBW-XREF
  87745. ></SB.SECTION.BLOCK.TABLE
  87746. ></ENTRY
  87747. ></RBW-ROW
  87748. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15913" TYPE="XREF-TEXTCOPY">Using PowerBuilder With ObjectTeam&rbwtab;2–24</RBW-XREF
  87749. ></SB.SECTION.BLOCK.TABLE
  87750. ></ENTRY
  87751. ></RBW-ROW
  87752. ></TBODY
  87753. ></TGROUP
  87754. ></RBW-TABLE
  87755. ></LABEL
  87756. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="35736"></RBW-ANCHOR
  87757. >Components of Code Generation</S.SECTION.HEAD
  87758. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87759. >Tcl scripts for code generation</L.LABEL
  87760. ><B.BODY>The Tcl script <CX5FX5FFILE.NAME>import.tcl</CX5FX5FFILE.NAME
  87761. > activates, among other things, the Tcl script <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="gencpp.tcl"></RBW-IDXTERM
  87762. >pbimporter.tcl</CX5FX5FFILE.NAME
  87763. >, which contains Tcl procedures to retrieve information from internal models, format it and write it to PowerBuilder files. <CX5FX5FFILE.NAME>pbimporter.tcl</CX5FX5FFILE.NAME
  87764. > uses other Tcl scripts that use other Tcl scripts as well, and so on.</B.BODY
  87765. ><B.BODY>The default <RBW-IDXTERM TERM1="Tcl" TERM2="script files used for code generation"></RBW-IDXTERM
  87766. >Tcl scripts used to generate PowerBuilder files can be found under the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  87767. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  87768. >\<CX5FX5FFILE.NAME>l_pb</CX5FX5FFILE.NAME
  87769. > directory tree.</B.BODY
  87770. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87771. >For more information</SL.SUBLABEL
  87772. ><B.BODY>See <RBW-XREF REFID="22956" TYPE="XREF-TEXTCOPY">Chapter 6, Customizing PowerBuilder Code Generation</RBW-XREF
  87773. >.</B.BODY
  87774. ></LABEL
  87775. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87776. >OOPL model</L.LABEL
  87777. ><B.BODY>When you generate code, ObjectTeam converts the CDs and CDMs of the Object Design phase into an intermediate model: the OOPL model. The PowerBuilder code generator then generates the PowerBuilder source files based on the OOPL model.</B.BODY
  87778. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87779. >For more information</SL.SUBLABEL
  87780. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Programming Interface Guide</CX5FX5FTITLE
  87781. ><CX5FX5FTITLE></CX5FX5FTITLE
  87782. > provides a detailed description of the classes in the OOPL model.</B.BODY
  87783. ></LABEL
  87784. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87785. ><RBW-IDXTERM TERM1="VisualWorks"></RBW-IDXTERM
  87786. >PowerBuilder files</L.LABEL
  87787. ><B.BODY>You use ObjectTeam to model visual and nonvisual objects, as well as the associations among them. From the ObjectTeam model, you generate PowerBuilder source files that can be imported into a PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87788. >) library.</B.BODY
  87789. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87790. >For more information</SL.SUBLABEL
  87791. ><B.BODY>See <RBW-XREF REFID="23311" TYPE="XREF-TEXTCOPY">Generating PowerBuilder Source Files</RBW-XREF
  87792. > and <RBW-XREF REFID="38296" TYPE="XREF-TEXTCOPY">Editing Generated Source Files</RBW-XREF
  87793. >.</B.BODY
  87794. ></LABEL
  87795. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87796. >PowerBuilder</L.LABEL
  87797. ><B.BODY>PowerBuilder is an application development environment. All PowerBuilder objects are stored in PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87798. >) libraries. Every PowerBuilder application has a library search path that defines the set of PowerBuilder libraries that are used by the application. In PowerBuilder, you can edit any object defined in any library that is included in the library search path of the current application.</B.BODY
  87799. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87800. >For more information</SL.SUBLABEL
  87801. ><B.BODY>See the PowerBuilder documentation.</B.BODY
  87802. ></LABEL
  87803. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87804. ><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  87805. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  87806. >Code <RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  87807. >regeneration</L.LABEL
  87808. ><BI.BODY.INTRO>Code (re)generation is an automated process that (re)generates PowerBuilder files. ObjectTeam ensures that </BI.BODY.INTRO
  87809. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87810. ></RBW-AUTOGEN
  87811. ></RBW-MARKER
  87812. ><RBW-PARABODY>You can regenerate previously generated PowerBuilder source files when you change your ObjectTeam model.</RBW-PARABODY
  87813. ></LB.LIST.BULLET
  87814. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87815. ></RBW-AUTOGEN
  87816. ></RBW-MARKER
  87817. ><RBW-PARABODY>Changes that you make in PowerBuilder are preserved when you regenerate the PowerBuilder source files.</RBW-PARABODY
  87818. ></LB.LIST.BULLET
  87819. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87820. >For more information</SL.SUBLABEL
  87821. ><B.BODY>See <RBW-XREF REFID="28110" TYPE="XREF-TEXTCOPY">Regenerating Code</RBW-XREF
  87822. >.</B.BODY
  87823. ></LABEL
  87824. ></SECTION
  87825. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40480"></RBW-ANCHOR
  87826. >Configuring Your PowerBuilder Environment</S.SECTION.HEAD
  87827. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87828. >Introduction<RBW-IDXTERM TERM1="Visual Basic" TERM2="configuring environment"></RBW-IDXTERM
  87829. ></L.LABEL
  87830. ><B.BODY>In ObjectTeam, you configure your PowerBuilder environment in the Object Design phase <CX5FX5FEMPHASIS>and</CX5FX5FEMPHASIS
  87831. > the Implementation phase.</B.BODY
  87832. ></LABEL
  87833. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87834. >What happens in the Object Design phase</L.LABEL
  87835. ><B.BODY>When you configure your PowerBuilder environment in the Object Design phase, ObjectTeam adds a new system to this phase of your project: the PBBuiltins system. This system contains the classes that represent the PowerBuilder object types, such as window, check box, custom visual object, and custom class object.</B.BODY
  87836. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87837. >Purpose</SL.SUBLABEL
  87838. ><B.BODY>In ObjectTeam, you model a PowerBuilder application by creating an ObjectTeam class for each PowerBuilder object that you want to create. The supertype class of the ObjectTeam class indicates the type of PowerBuilder object that you want to create. In other words, when you model a PowerBuilder application, each ObjectTeam class that you create must be derived from one of the classes defined in the PBBuiltins system.</B.BODY
  87839. ></LABEL
  87840. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87841. >What happens in the Implementation phase</L.LABEL
  87842. ><B.BODY>When you configure your PowerBuilder environment in the Implementation phase, ObjectTeam copies the following files to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  87843. >\<CX5FX5FFILE.NAME>src</CX5FX5FFILE.NAME
  87844. > directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  87845. > is the file path for your generated files. (For more information about the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  87846. ><CX5FX5FTITLE></CX5FX5FTITLE
  87847. >.)</B.BODY
  87848. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87849. ></RBW-AUTOGEN
  87850. ></RBW-MARKER
  87851. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>classlib.pbl.</CX5FX5FBULLET.EMPHASIS
  87852. > A PowerBuilder library that contains the following custom class objects.</RBW-PARABODY
  87853. ></LB.LIST.BULLET
  87854. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87855. ></RBW-AUTOGEN
  87856. ></RBW-MARKER
  87857. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>classdict.sru, classset.sru, dictelement.sru, setelement.sru.</CX5FX5FBULLET.EMPHASIS
  87858. > PowerBuilder source files that define custom class objects used by the code that ObjectTeam generates for associations. For more information about how these classes are used, see <RBW-XREF REFID="14358" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  87859. >.</RBW-PARABODY
  87860. ></LB.LIST.BULLET
  87861. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87862. >Modify your library search path</SL.SUBLABEL
  87863. ><B.BODY>Include <CX5FX5FFILE.NAME>classlib.pbl</CX5FX5FFILE.NAME
  87864. > in the library search path of any PowerBuilder application that uses PowerBuilder files generated by ObjectTeam. If the <CX5FX5FFILE.NAME>classlib.pbl</CX5FX5FFILE.NAME
  87865. > is not in the library search path, the generated code cannot access the classes that it requires.</B.BODY
  87866. ></LABEL
  87867. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87868. >How to configure the environment in Object Design</L.LABEL
  87869. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  87870. ></RBW-AUTOGEN
  87871. ></RBW-MARKER
  87872. ><RBW-PARABODY>To configure the PowerBuilder environment in the Object Design phase:</RBW-PARABODY
  87873. ></P.PROCEDURE
  87874. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  87875. ></RBW-AUTOGEN
  87876. ></RBW-MARKER
  87877. ><RBW-PARABODY>Move to Object Design Phase level, or System level in the Object Design phase.</RBW-PARABODY
  87878. ></LN.LIST.NUM
  87879. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  87880. ></RBW-AUTOGEN
  87881. ></RBW-MARKER
  87882. ><RBW-PARABODY>Select Utilities | Configure PowerBuilder Environment.</RBW-PARABODY
  87883. ></LN.LIST.NUM
  87884. ><LR.LIST.RESULT>ObjectTeam creates the PBBuiltins system in the Object Design phase.</LR.LIST.RESULT
  87885. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  87886. ></RBW-AUTOGEN
  87887. >For an overview of the classes defined in this system, open the system in ObjectTeam and examine the CD named SystemObjectsHierarchy. For more detailed information, use Utilities | Reports | On Classes to generate a report of the classes in the system.</T.TIP
  87888. ></LABEL
  87889. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87890. ><RBW-ANCHOR ID="36159"></RBW-ANCHOR
  87891. >How to configure the environment in Implementation</L.LABEL
  87892. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  87893. ></RBW-AUTOGEN
  87894. ></RBW-MARKER
  87895. ><RBW-PARABODY>To configure the PowerBuilder environment in the Implementation phase:</RBW-PARABODY
  87896. ></P.PROCEDURE
  87897. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  87898. ></RBW-AUTOGEN
  87899. ></RBW-MARKER
  87900. ><RBW-PARABODY>Move to Implementation Phase level.</RBW-PARABODY
  87901. ></LN.LIST.NUM
  87902. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  87903. ></RBW-AUTOGEN
  87904. ></RBW-MARKER
  87905. ><RBW-PARABODY>Select Utilities | Configure PowerBuilder Environment.</RBW-PARABODY
  87906. ></LN.LIST.NUM
  87907. ><LR.LIST.RESULT>ObjectTeam copies the <CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  87908. > and <CX5FX5FFILE.NAME>.sru</CX5FX5FFILE.NAME
  87909. > files to the user_environment\<CX5FX5FFILE.NAME>src</CX5FX5FFILE.NAME
  87910. > directory.</LR.LIST.RESULT
  87911. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  87912. ></RBW-AUTOGEN
  87913. >You can also configure the PowerBuilder environment from System level in the Implementation phase. However, to avoid potential errors, it is best to configure your environment from the Implementation Phase level before importing any systems.</N.NOTE
  87914. ></LABEL
  87915. ></SECTION
  87916. ><SECTION><S.SECTION.HEAD><RBW-IDXTERM TERM1="Implementation" TERM2="importing systems"></RBW-IDXTERM
  87917. ><RBW-IDXTERM TERM1="importing" TERM2="in Implementation Phase"></RBW-IDXTERM
  87918. ><RBW-ANCHOR ID="23311"></RBW-ANCHOR
  87919. >Generating PowerBuilder Source Files</S.SECTION.HEAD
  87920. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87921. >Result of generating</L.LABEL
  87922. ><B.BODY>When you generate source files, the code generator uses the CDs and CDMs that are in the Object Design phase to create PowerBuilder source files in the Implementation phase. At System level of the Implementation phase, you can then refine the source code and complete the application.</B.BODY
  87923. ></LABEL
  87924. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87925. >Implementation Phase is different</L.LABEL
  87926. ><B.BODY>The System level of the Implementation phase is fundamentally different from System level of any other phase. In the Implementation phase, the System files are PowerBuilder files. In other phases, the System files are ObjectTeam diagrams.</B.BODY
  87927. ></LABEL
  87928. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87929. >Generate code on Phase or System level</L.LABEL
  87930. ><B.BODY>You can generate code on the Implementation Phase level or on the System level of the Implementation phase.</B.BODY
  87931. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87932. ></RBW-AUTOGEN
  87933. ></RBW-MARKER
  87934. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>Implementation Phase level</CX5FX5FBULLET.EMPHASIS
  87935. >, you can generate code for one or more systems. This creates a matching system in the Implementation Phase that contains the generated source files. To regenerate code for an existing system, use System level.</RBW-PARABODY
  87936. ></LB.LIST.BULLET
  87937. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  87938. ></RBW-AUTOGEN
  87939. ></RBW-MARKER
  87940. ><RBW-PARABODY>On the <CX5FX5FBULLET.EMPHASIS>System level of the Implementation phase</CX5FX5FBULLET.EMPHASIS
  87941. >, you can (re)generate code for the entire system, or regenerate selected source files.</RBW-PARABODY
  87942. ></LB.LIST.BULLET
  87943. ><B.BODY>Typically, you use Implementation Phase level to generate code for a system initially and System level to regenerate code subsequently.</B.BODY
  87944. ></LABEL
  87945. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87946. >How to generate code on Implementation Phase level</L.LABEL
  87947. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  87948. ></RBW-AUTOGEN
  87949. ></RBW-MARKER
  87950. ><RBW-PARABODY>To generate source files on the Implementation Phase level:</RBW-PARABODY
  87951. ></P.PROCEDURE
  87952. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  87953. ></RBW-AUTOGEN
  87954. ></RBW-MARKER
  87955. ><RBW-PARABODY>In the Browser, move to the Implementation Phase level.</RBW-PARABODY
  87956. ></LN.LIST.NUM
  87957. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  87958. ></RBW-AUTOGEN
  87959. ></RBW-MARKER
  87960. ><RBW-PARABODY>Select Utilities | Generate PowerBuilder.</RBW-PARABODY
  87961. ></LN.LIST.NUM
  87962. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  87963. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  87964. ></RBW-AUTOGEN
  87965. ></RBW-MARKER
  87966. ><RBW-PARABODY>Select New Systems or Specific Systems:</RBW-PARABODY
  87967. ></LN.LIST.NUM
  87968. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  87969. ></RBW-MARKER
  87970. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New Systems</CX5FX5FBULLET.EMPHASIS
  87971. > to generate code for all systems from the Object Design phase for which no code has been generated yet. </RBW-PARABODY
  87972. ></LB2.LIST.BULLET.2
  87973. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  87974. ></RBW-MARKER
  87975. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Specific Systems</CX5FX5FBULLET.EMPHASIS
  87976. > to generate code for one or more systems in the Object Design phase. You can select only systems that do not yet exist in the Implementation phase.</RBW-PARABODY
  87977. ></LB2.LIST.BULLET.2
  87978. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files.</LR.LIST.RESULT
  87979. ></LABEL
  87980. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  87981. >How to generate code on System level</L.LABEL
  87982. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  87983. ></RBW-AUTOGEN
  87984. ></RBW-MARKER
  87985. ><RBW-PARABODY>To generate (selected) source files for a system from System level of the Implementation phase:</RBW-PARABODY
  87986. ></P.PROCEDURE
  87987. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  87988. ></RBW-AUTOGEN
  87989. ></RBW-MARKER
  87990. ><RBW-PARABODY>In the Browser, move to the System level of the Implementation phase.</RBW-PARABODY
  87991. ></LN.LIST.NUM
  87992. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  87993. ></RBW-AUTOGEN
  87994. ></RBW-MARKER
  87995. ><RBW-PARABODY>Select Utilities | Generate PowerBuilder.</RBW-PARABODY
  87996. ></LN.LIST.NUM
  87997. ><LR.LIST.RESULT>A cascading menu appears.</LR.LIST.RESULT
  87998. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  87999. ></RBW-AUTOGEN
  88000. ></RBW-MARKER
  88001. ><RBW-PARABODY>Select New, Selected, or All:</RBW-PARABODY
  88002. ></LN.LIST.NUM
  88003. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  88004. ></RBW-MARKER
  88005. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>New</CX5FX5FBULLET.EMPHASIS
  88006. > to generate code for all classes that are defined in this system and that have not yet been generated into code.</RBW-PARABODY
  88007. ></LB2.LIST.BULLET.2
  88008. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  88009. ></RBW-MARKER
  88010. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>Selected</CX5FX5FBULLET.EMPHASIS
  88011. > to regenerate the files that you have selected in the Information area of the browser.</RBW-PARABODY
  88012. ></LB2.LIST.BULLET.2
  88013. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  88014. ></RBW-MARKER
  88015. ><RBW-PARABODY>Select <CX5FX5FBULLET.EMPHASIS>All</CX5FX5FBULLET.EMPHASIS
  88016. > to (re)generate code for all classes that are defined in this system.</RBW-PARABODY
  88017. ></LB2.LIST.BULLET.2
  88018. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then generates the source files. The following illustration shows the Monitor window after generating code for a system.</LR.LIST.RESULT
  88019. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00788.unk" origfile="pics/import.gif" origtype="X" origdoc="../../sources/pb/pbcodegn.fm5.mif"></RBW-GRAPHIC
  88020. ></FA2.FIGURE.ANCHOR.2
  88021. ></LABEL
  88022. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88023. >Location of the source files</L.LABEL
  88024. ><B.BODY>The PowerBuilder files are stored in the repository as external files. They are also written to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  88025. >\<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  88026. > directory, where <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  88027. > is the file path for your generated files. For more information on the user environment, see the <CX5FX5FTITLE>ObjectTeam Project Management Guide</CX5FX5FTITLE
  88028. ><CX5FX5FTITLE></CX5FX5FTITLE
  88029. >. </B.BODY
  88030. ><B.BODY>The following illustration shows how the source files appear in the Browser.</B.BODY
  88031. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00789.unk" origfile="pics/pbfiles.gif" origtype="X" origdoc="../../sources/pb/pbcodegn.fm5.mif"></RBW-GRAPHIC
  88032. ></FAR.FIGURE.ANCHOR.RIGHT
  88033. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88034. ><RBW-IDXTERM TERM1="user environment" TERM2="updating"></RBW-IDXTERM
  88035. ><RBW-IDXTERM TERM1="Update User Environment (Utilities menu)"></RBW-IDXTERM
  88036. >Update user environment</SL.SUBLABEL
  88037. ><B.BODY>Utilities | Update User Environment updates your user environment based on the repository. This can be particularly useful if you are working on two machines, and the user environment of each is set to a local drive. When you move between machines, you can use Utilities | Update User Environment to update the local drive of the current machine.</B.BODY
  88038. ></LABEL
  88039. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88040. >Generated files</L.LABEL
  88041. ><B.BODY>The PowerBuilder code generator generates the following files:<RBW-IDXTERM TERM1="C++ header file" TERM2="generating"></RBW-IDXTERM
  88042. ><RBW-IDXTERM TERM1="generating" TERM2="C++ header file"></RBW-IDXTERM
  88043. ></B.BODY
  88044. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="342p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>File Type</CELLHEADING
  88045. ></ENTRY
  88046. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  88047. ></ENTRY
  88048. ></RBW-ROW
  88049. ></THEAD
  88050. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>class</CX5FX5FVARIABLE
  88051. >.srw</CELLBODY
  88052. ></ENTRY
  88053. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>One for each ObjectTeam class that represents a PowerBuilder window.</CELLBODY
  88054. ></ENTRY
  88055. ></RBW-ROW
  88056. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>class</CX5FX5FVARIABLE
  88057. >.srm</CELLBODY
  88058. ></ENTRY
  88059. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>One for each ObjectTeam class that represents a PowerBuilder menu.</CELLBODY
  88060. ></ENTRY
  88061. ></RBW-ROW
  88062. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>class</CX5FX5FVARIABLE
  88063. >.sru</CELLBODY
  88064. ></ENTRY
  88065. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>One for each ObjectTeam class that represents a PowerBuilder user object (custom visual object, standard visual object, custom class object, or standard class object).</CELLBODY
  88066. ></ENTRY
  88067. ></RBW-ROW
  88068. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FVARIABLE>class</CX5FX5FVARIABLE
  88069. >.srs</CELLBODY
  88070. ></ENTRY
  88071. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>One for each ObjectTeam class that represents a PowerBuilder structure.</CELLBODY
  88072. ></ENTRY
  88073. ></RBW-ROW
  88074. ></TBODY
  88075. ></TGROUP
  88076. ></RBW-TABLE
  88077. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  88078. ></RBW-AUTOGEN
  88079. >ObjectTeam does not generate a PowerBuilder source file for every ObjectTeam class. Only for those classes that represent appropriate PowerBuilder objects and only if the Global Property of class is set to Yes. See <RBW-XREF REFID="15448" TYPE="XREF-TEXTCOPY">Mapping Classes</RBW-XREF
  88080. > for more information.</N.NOTE
  88081. ></LABEL
  88082. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88083. >When code is not generated</L.LABEL
  88084. ><B.BODY>The PowerBuilder code generator generates code for all classes defined in the current system. It does not generate code in the following situations:</B.BODY
  88085. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88086. ></RBW-AUTOGEN
  88087. ></RBW-MARKER
  88088. ><RBW-PARABODY>If a CD in the current system contains a class that is defined in another system, the code generator does not generate code for that class.</RBW-PARABODY
  88089. ></LB.LIST.BULLET
  88090. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88091. ></RBW-AUTOGEN
  88092. ></RBW-MARKER
  88093. ><RBW-PARABODY>If a CD in the current system contains a class <CX5FX5FEMPHASIS>component</CX5FX5FEMPHASIS
  88094. > (a graphical element) that does not have an associated <CX5FX5FEMPHASIS>item</CX5FX5FEMPHASIS
  88095. > (a semantic element), the code generator does not generate code for that class.</RBW-PARABODY
  88096. ></LB.LIST.BULLET
  88097. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  88098. ></RBW-AUTOGEN
  88099. >For more information about components and items, see <RBW-XREF REFID="29698" TYPE="XREF-TEXTCOPY">Working With Items on page 3–31</RBW-XREF
  88100. > in <RBW-XREF REFID="35957" TYPE="XREF-TEXTCOPY">Chapter 3, Working With Diagrams</RBW-XREF
  88101. >, of the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  88102. ><CX5FX5FTITLE></CX5FX5FTITLE
  88103. >.</N2.NOTE.2
  88104. ></LABEL
  88105. ></SECTION
  88106. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="38296"></RBW-ANCHOR
  88107. >Editing Generated Source Files</S.SECTION.HEAD
  88108. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88109. >Introduction</L.LABEL
  88110. ><B.BODY>The generated PowerBuilder files are ASCII text files that can be imported into a PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88111. >) library. This section describes how to edit the generated files.</B.BODY
  88112. ></LABEL
  88113. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88114. >Prerequisite</L.LABEL
  88115. ><B.BODY>At System level in the Implementation phase, the Browser displays a PowerBuilder menu that provides access to PowerBuilder features, such creating a PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88116. >) library. To use the items in the PowerBuilder menu, the following PowerBuilder files must be in your path:</B.BODY
  88117. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88118. ></RBW-AUTOGEN
  88119. ></RBW-MARKER
  88120. ><RBW-PARABODY><CX5FX5FFILE.NAME>PowerBuilder 5.0\pb050.exe</CX5FX5FFILE.NAME
  88121. > </RBW-PARABODY
  88122. ></LB.LIST.BULLET
  88123. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88124. ></RBW-AUTOGEN
  88125. ></RBW-MARKER
  88126. ><RBW-PARABODY><CX5FX5FFILE.NAME>Common Files\Powersoft Shared\pborc050.dll</CX5FX5FFILE.NAME
  88127. > </RBW-PARABODY
  88128. ></LB.LIST.BULLET
  88129. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88130. >Command line access</SL.SUBLABEL
  88131. ><B.BODY>The executable <CX5FX5FFILE.NAME>genpbl.exe</CX5FX5FFILE.NAME
  88132. > provides command line access to the items in the PowerBuilder menu. For a description of <CX5FX5FFILE.NAME>genpbl</CX5FX5FFILE.NAME
  88133. > and the other ObjectTeam executables, see the <CX5FX5FTITLE>ObjectTeam System Administrator’s Guide</CX5FX5FTITLE
  88134. ><CX5FX5FTITLE></CX5FX5FTITLE
  88135. >.</B.BODY
  88136. ></LABEL
  88137. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88138. >Edit generated files in PowerBuilder</L.LABEL
  88139. ><B.BODY>The recommended method for editing the generated source files is to import them into a PowerBuilder (<CX5FX5FBULLET.EMPHASIS>.pbl</CX5FX5FBULLET.EMPHASIS
  88140. >) library, edit the library in PowerBuilder, and then export the modified information from the library back to the generated source files. <RBW-XREF REFID="36293" TYPE="XREF-TEXTCOPY">Workflow for Editing Files</RBW-XREF
  88141. > describes this process.</B.BODY
  88142. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88143. >Text editor</SL.SUBLABEL
  88144. ><B.BODY>You can also edit the generated source files using your default text editor; however, the PowerBuilder documentation discourages this way of editing PowerBuilder information. To edit a generated file using your default text editor, double&truehy;click on the file that you want to edit.</B.BODY
  88145. ></LABEL
  88146. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88147. >Keep Synchronized... property</L.LABEL
  88148. ><B.BODY>The System&truehy;level property, Keep Synchronized With PowerBuilder Libraries, helps to automate the process of moving the generated PowerBuilder source files in and out of the PowerBuilder (<CX5FX5FBULLET.EMPHASIS>.pbl</CX5FX5FBULLET.EMPHASIS
  88149. >) libraries, as described in <RBW-XREF REFID="31389" TYPE="XREF-TEXTCOPY">Workflow Using the Keep Synchronized Property</RBW-XREF
  88150. >.</B.BODY
  88151. ></LABEL
  88152. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88153. >Editing generated files</L.LABEL
  88154. ><BI.BODY.INTRO>The generated PowerBuilder files serve as framework files. They contain the code that reflects your model, but not all of the code necessary for the application. Comments indicate where you should add code to complete the application:</BI.BODY.INTRO
  88155. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88156. ></RBW-AUTOGEN
  88157. ></RBW-MARKER
  88158. ><RBW-PARABODY><RBW-IDXTERM TERM1="C++" TERM2="function"></RBW-IDXTERM
  88159. ><RBW-IDXTERM TERM1="C++" TERM2="code from method"></RBW-IDXTERM
  88160. ><RBW-IDXTERM TERM1="method" TERM2="body"></RBW-IDXTERM
  88161. >A function or event is generated for each operation defined in an ObjectTeam class; however, you must add the code that implements the function or event. The script of the generated function or event contains one of the following comments. Add statements below the comment; optionally, delete the comment.</RBW-PARABODY
  88162. ></LB.LIST.BULLET
  88163. ><EM.EXAMPLE.MONO>// <RBWAUTO-0030>Implement this function</RBWAUTO-0030
  88164. >!</EM.EXAMPLE.MONO
  88165. ><EM.EXAMPLE.MONO>// <RBWAUTO-0030>Implement this event</RBWAUTO-0030
  88166. >!</EM.EXAMPLE.MONO
  88167. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88168. ></RBW-AUTOGEN
  88169. ></RBW-MARKER
  88170. ><RBW-PARABODY>A generated constructor or destructor event contains the following comments; it might also contain generated statements. Add statements between the comments.</RBW-PARABODY
  88171. ></LB.LIST.BULLET
  88172. ><EM.EXAMPLE.MONO>// Start user section</EM.EXAMPLE.MONO
  88173. ><EM.EXAMPLE.MONO>// End user section</EM.EXAMPLE.MONO
  88174. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  88175. ></RBW-AUTOGEN
  88176. >See <RBW-XREF REFID="15448" TYPE="XREF-TEXTCOPY">Mapping Classes</RBW-XREF
  88177. > for more information about generating constructor and destructor events.</N2.NOTE.2
  88178. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88179. ></RBW-AUTOGEN
  88180. ></RBW-MARKER
  88181. ><RBW-PARABODY>Other generated functions, such as the accessor methods for associations, also contain generated code. They do <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  88182. > contain comments indicating where you should add code; therefore, you should <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  88183. > add code to these functions. If you add code, it is not preserved when you regenerate the source files.</RBW-PARABODY
  88184. ></LB.LIST.BULLET
  88185. ></LABEL
  88186. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88187. >Changes are preserved</L.LABEL
  88188. ><B.BODY>Changes you make to generated PowerBuilder files are preserved when you regenerate the files, provided that you adhere to the following guidelines:</B.BODY
  88189. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88190. ></RBW-AUTOGEN
  88191. ></RBW-MARKER
  88192. ><RBW-PARABODY><RBWAUTO-0004><RBW-IDXTERM TERM1="code regeneration" TERM2="regeneration markers"></RBW-IDXTERM
  88193. ><RBW-IDXTERM TERM1="regeneration markers"></RBW-IDXTERM
  88194. ></RBWAUTO-0004
  88195. >Do not delete generated comments. The Visual Basic code generator uses the comments to parse the generated source files.</RBW-PARABODY
  88196. ></LB.LIST.BULLET
  88197. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88198. ></RBW-AUTOGEN
  88199. ></RBW-MARKER
  88200. ><RBW-PARABODY>Add code only where indicated by comments, as described above.</RBW-PARABODY
  88201. ></LB.LIST.BULLET
  88202. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88203. ></RBW-AUTOGEN
  88204. ></RBW-MARKER
  88205. ><RBW-PARABODY>If you add variables (instance variables, shared variables, or new variables in a structure), functions, events, structures, or window controls to a generated object, use round&truehy;trip engineering to add the appropriate attributes, operations, or classes to the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  88206. > regenerating the files. </RBW-PARABODY
  88207. ></LB.LIST.BULLET
  88208. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88209. >For more information</SL.SUBLABEL
  88210. ><B.BODY>See <RBW-XREF REFID="22218" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  88211. > for more information.</B.BODY
  88212. ></LABEL
  88213. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88214. >In this section</L.LABEL
  88215. ><B.BODY>This section contains the following topics:</B.BODY
  88216. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  88217. ></ENTRY
  88218. ></RBW-ROW
  88219. ></THEAD
  88220. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36293" TYPE="XREF-TEXTCOPY">Workflow for Editing Files&rbwtab;2–16</RBW-XREF
  88221. ></SB.SECTION.BLOCK.TABLE
  88222. ></ENTRY
  88223. ></RBW-ROW
  88224. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="31389" TYPE="XREF-TEXTCOPY">Workflow Using the Keep Synchronized Property&rbwtab;2–19</RBW-XREF
  88225. ></SB.SECTION.BLOCK.TABLE
  88226. ></ENTRY
  88227. ></RBW-ROW
  88228. ></TBODY
  88229. ></TGROUP
  88230. ></RBW-TABLE
  88231. ></LABEL
  88232. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36293"></RBW-ANCHOR
  88233. >Workflow for Editing Files</SS.SUBSEC.HEAD
  88234. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88235. >Introduction</L.LABEL
  88236. ><B.BODY>This section describes the workflow for generating PowerBuilder source files, editing the generated files, and then regenerating the source files.</B.BODY
  88237. ></LABEL
  88238. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88239. >PowerBuilder libraries</L.LABEL
  88240. ><B.BODY>You can create PowerBuilder libraries in ObjectTeam or PowerBuilder. However, the items in the PowerBuilder menu only work with the PowerBuilder libraries created by ObjectTeam; therefore, the workflow described here uses ObjectTeam to create the PowerBuilder libraries that hold the generated source files.</B.BODY
  88241. ></LABEL
  88242. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88243. ><RBW-ANCHOR ID="30704"></RBW-ANCHOR
  88244. >How to generate and edit source files</L.LABEL
  88245. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  88246. ></RBW-AUTOGEN
  88247. ></RBW-MARKER
  88248. ><RBW-PARABODY>To generate and edit PowerBuilder source files:</RBW-PARABODY
  88249. ></P.PROCEDURE
  88250. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  88251. ></RBW-AUTOGEN
  88252. ></RBW-MARKER
  88253. ><RBW-PARABODY>Generate the source files by importing systems or files into Implementation Phase level, as described in <RBW-XREF REFID="23311" TYPE="XREF-TEXTCOPY">Generating PowerBuilder Source Files</RBW-XREF
  88254. >.</RBW-PARABODY
  88255. ></LN.LIST.NUM
  88256. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  88257. ></RBW-AUTOGEN
  88258. ></RBW-MARKER
  88259. ><RBW-PARABODY>If you have not yet created a PowerBuilder library, do so now:</RBW-PARABODY
  88260. ></LN.LIST.NUM
  88261. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  88262. ></RBW-AUTOGEN
  88263. ></RBW-MARKER
  88264. ><RBW-PARABODY>Move to the System in the Implementation phase that contains the generated source files.</RBW-PARABODY
  88265. ></LN2.LIST.NUM.2
  88266. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  88267. ></RBW-AUTOGEN
  88268. ></RBW-MARKER
  88269. ><RBW-PARABODY>Select PowerBuilder | Library | Create.</RBW-PARABODY
  88270. ></LN2.LIST.NUM.2
  88271. ><LR2.LIST.RESULT.2>ObjectTeam opens a Monitoring window to display messages, creates a PowerBuilder library (<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  88272. >.<CX5FX5FFILE.NAME>pbl</CX5FX5FFILE.NAME
  88273. >), and updates the Information area to display the name of the library.</LR2.LIST.RESULT.2
  88274. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  88275. ></RBW-AUTOGEN
  88276. ></RBW-MARKER
  88277. ><RBW-PARABODY>Select PowerBuilder | Import Entries Into Library | All.</RBW-PARABODY
  88278. ></LN.LIST.NUM
  88279. ><LR.LIST.RESULT>ObjectTeam opens a Monitoring window to display messages and imports the generated files into the PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88280. >) library.</LR.LIST.RESULT
  88281. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>Alternative:</CX5FX5FBULLET.EMPHASIS
  88282. > Select the generated files that you want to import and select PowerBuilder | Import Entries Into Library | Selected.</LT.LIST.TEXT
  88283. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  88284. ></RBW-AUTOGEN
  88285. ></RBW-MARKER
  88286. ><RBW-PARABODY>Select PowerBuilder | Run PowerBuilder.</RBW-PARABODY
  88287. ></LN.LIST.NUM
  88288. ><LR.LIST.RESULT>ObjectTeam opens an Execution window and executes the command to start PowerBuilder.</LR.LIST.RESULT
  88289. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  88290. ></RBW-AUTOGEN
  88291. ></RBW-MARKER
  88292. ><RBW-PARABODY>In PowerBuilder:</RBW-PARABODY
  88293. ></LN.LIST.NUM
  88294. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  88295. ></RBW-AUTOGEN
  88296. ></RBW-MARKER
  88297. ><RBW-PARABODY>Create or open your application.</RBW-PARABODY
  88298. ></LN2.LIST.NUM.2
  88299. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  88300. ></RBW-AUTOGEN
  88301. ></RBW-MARKER
  88302. ><RBW-PARABODY>Add the ObjectTeam&truehy;created library to the library search path of your application.</RBW-PARABODY
  88303. ></LN2.LIST.NUM.2
  88304. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  88305. ></RBW-AUTOGEN
  88306. ></RBW-MARKER
  88307. ><RBW-PARABODY>Edit the objects in the library as you would any other PowerBuilder objects.</RBW-PARABODY
  88308. ></LN2.LIST.NUM.2
  88309. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>d&rbwtab;</CX5FX5FZLIST.NUMBER
  88310. ></RBW-AUTOGEN
  88311. ></RBW-MARKER
  88312. ><RBW-PARABODY>Exit from all PowerBuilder painters to ensure that you have saved all changes.</RBW-PARABODY
  88313. ></LN2.LIST.NUM.2
  88314. ></LABEL
  88315. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88316. >Library search paths</L.LABEL
  88317. ><B.BODY>In ObjectTeam, when you import source files into a PowerBuilder library, ObjectTeam constructs and uses a temporary library path. The temporary library path lists all PowerBuilder libraries in the current Implementation phase. This ensures that the <CX5FX5FFILE.NAME>classlib.pbl</CX5FX5FFILE.NAME
  88318. > library is also included in the temporary library path. (<CX5FX5FFILE.NAME>classlib.pbl</CX5FX5FFILE.NAME
  88319. > is the PowerBuilder library created for you when you configure the PowerBuilder environment in the Implementation phase, as described in <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your PowerBuilder Environment</RBW-XREF
  88320. >.)</B.BODY
  88321. ><B.BODY>In PowerBuilder, when you add a PowerBuilder library to your application, if that library references other libraries, you must ensure that you also add the referenced libraries to the library path of the application.</B.BODY
  88322. ></LABEL
  88323. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88324. >How to regenerate the edited source files</L.LABEL
  88325. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  88326. ></RBW-AUTOGEN
  88327. ></RBW-MARKER
  88328. ><RBW-PARABODY>To regenerate the edited source files:</RBW-PARABODY
  88329. ></P.PROCEDURE
  88330. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  88331. ></RBW-AUTOGEN
  88332. ></RBW-MARKER
  88333. ><RBW-PARABODY>Select PowerBuilder | Export Entries From Library | All.</RBW-PARABODY
  88334. ></LN.LIST.NUM
  88335. ><LT.LIST.TEXT><CX5FX5FBULLET.EMPHASIS>Alternative:</CX5FX5FBULLET.EMPHASIS
  88336. > Select the files that you want to export and select PowerBuilder | Export Entries From Library | Selected.</LT.LIST.TEXT
  88337. ><LR.LIST.RESULT>ObjectTeam exports the modified objects out of the PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88338. >) library, updating the generated files. The generated files now contain the changes that you made in PowerBuilder.</LR.LIST.RESULT
  88339. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  88340. ></RBW-AUTOGEN
  88341. ></RBW-MARKER
  88342. ><RBW-PARABODY>If, in PowerBuilder, you added variables (instance variables, shared variables, or new variables in a structure), functions, events, structures, or window controls to a generated object, use round&truehy;trip engineering to add the appropriate attributes, operations, or classes to the ObjectTeam model. See <RBW-XREF REFID="22218" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  88343. > for more information.</RBW-PARABODY
  88344. ></LN.LIST.NUM
  88345. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  88346. ></RBW-AUTOGEN
  88347. ></RBW-MARKER
  88348. ><RBW-PARABODY>Regenerate the source files, as described in the previous procedure (<RBW-XREF REFID="30704" TYPE="XREF-TEXTCOPY">How to generate and edit source files</RBW-XREF
  88349. >).</RBW-PARABODY
  88350. ></LN.LIST.NUM
  88351. ></LABEL
  88352. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88353. >Workflow</L.LABEL
  88354. ><BI.BODY.INTRO>The following figure shows the workflow graphically:</BI.BODY.INTRO
  88355. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00790.tif" origseq="40" origtype="I" origdoc="../../sources/pb/pbcodegn.fm5.mif"></RBW-GRAPHIC
  88356. ></FA.FIGURE.ANCHOR
  88357. ><B.BODY></B.BODY
  88358. ></LABEL
  88359. ></SUBSECTION
  88360. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="31389"></RBW-ANCHOR
  88361. >Workflow Using the Keep Synchronized Property</SS.SUBSEC.HEAD
  88362. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88363. >Keep Synchronized property</L.LABEL
  88364. ><B.BODY>When you select the System&truehy;level property Keep Synchronized With PowerBuilder Libraries, ObjectTeam automatically moves the generated files into and out of the PowerBuilder library for you:</B.BODY
  88365. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88366. ></RBW-AUTOGEN
  88367. ></RBW-MARKER
  88368. ><RBW-PARABODY>When you generate source files by importing systems or files into Implementation Phase level, the PowerBuilder code generator generates the source files <CX5FX5FEMPHASIS>and</CX5FX5FEMPHASIS
  88369. > imports them into the PowerBuilder library.</RBW-PARABODY
  88370. ></LB.LIST.BULLET
  88371. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  88372. ></RBW-MARKER
  88373. ><RBW-PARABODY>If you are generating the source files for the first time and have not yet created a PowerBuilder library does not yet exist, the code generator automatically creates the PowerBuilder library.</RBW-PARABODY
  88374. ></LB2.LIST.BULLET.2
  88375. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  88376. ></RBW-MARKER
  88377. ><RBW-PARABODY>If you are regenerating the files, the code generator automatically exports the generated (edited) source files from the PowerBuilder library before regenerating the source files.</RBW-PARABODY
  88378. ></LB2.LIST.BULLET.2
  88379. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88380. ></RBW-AUTOGEN
  88381. ></RBW-MARKER
  88382. ><RBW-PARABODY>When you use round&truehy;trip engineering, the code generator automatically exports the generated (edited) source files from the PowerBuilder library before running round&truehy;trip engineering.</RBW-PARABODY
  88383. ></LB.LIST.BULLET
  88384. ></LABEL
  88385. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88386. >How to use the Keep Synchronized property</L.LABEL
  88387. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  88388. ></RBW-AUTOGEN
  88389. ></RBW-MARKER
  88390. ><RBW-PARABODY>To use the Keep Synchronized With PowerBuilder Libraries property:</RBW-PARABODY
  88391. ></P.PROCEDURE
  88392. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  88393. ></RBW-AUTOGEN
  88394. ></RBW-MARKER
  88395. ><RBW-PARABODY>In the Browser, move to Implementation phase level.</RBW-PARABODY
  88396. ></LN.LIST.NUM
  88397. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  88398. ></RBW-AUTOGEN
  88399. ></RBW-MARKER
  88400. ><RBW-PARABODY>Select the system on which you want to set the Keep Synchronized property.</RBW-PARABODY
  88401. ></LN.LIST.NUM
  88402. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  88403. ></RBW-AUTOGEN
  88404. ></RBW-MARKER
  88405. ><RBW-PARABODY>Select File | Properties | Edit.</RBW-PARABODY
  88406. ></LN.LIST.NUM
  88407. ><LR.LIST.RESULT>The Edit Properties dialog box appears.</LR.LIST.RESULT
  88408. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  88409. ></RBW-AUTOGEN
  88410. ></RBW-MARKER
  88411. ><RBW-PARABODY>In the left pane, select the system name.</RBW-PARABODY
  88412. ></LN.LIST.NUM
  88413. ><LR.LIST.RESULT>The System&truehy;level properties appear in the right pane.</LR.LIST.RESULT
  88414. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  88415. ></RBW-AUTOGEN
  88416. ></RBW-MARKER
  88417. ><RBW-PARABODY>Select the Keep Synchronized With PowerBuilder Libraries check box.</RBW-PARABODY
  88418. ></LN.LIST.NUM
  88419. ></LABEL
  88420. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88421. >How to generate and edit source files</L.LABEL
  88422. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  88423. ></RBW-AUTOGEN
  88424. ></RBW-MARKER
  88425. ><RBW-PARABODY>To generate and edit PowerBuilder source files:</RBW-PARABODY
  88426. ></P.PROCEDURE
  88427. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  88428. ></RBW-AUTOGEN
  88429. ></RBW-MARKER
  88430. ><RBW-PARABODY>Select the Keep Synchronized With PowerBuilder Libraries property for the current system.</RBW-PARABODY
  88431. ></LN.LIST.NUM
  88432. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  88433. ></RBW-AUTOGEN
  88434. ></RBW-MARKER
  88435. ><RBW-PARABODY>Generate the source files by importing systems or files into Implementation Phase level, as described in <RBW-XREF REFID="23311" TYPE="XREF-TEXTCOPY">Generating PowerBuilder Source Files</RBW-XREF
  88436. >.</RBW-PARABODY
  88437. ></LN.LIST.NUM
  88438. ><LR.LIST.RESULT>ObjectTeam opens a Monitoring window to display messages, creates a PowerBuilder library (<CX5FX5FVARIABLE>system&truehy;name</CX5FX5FVARIABLE
  88439. >.<CX5FX5FFILE.NAME>pbl</CX5FX5FFILE.NAME
  88440. >), imports the generated files into the PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88441. >) library, and updates the Information area.</LR.LIST.RESULT
  88442. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  88443. ></RBW-AUTOGEN
  88444. ></RBW-MARKER
  88445. ><RBW-PARABODY>Select PowerBuilder | Run PowerBuilder.</RBW-PARABODY
  88446. ></LN.LIST.NUM
  88447. ><LR.LIST.RESULT>ObjectTeam opens an Execution window and executes the command to start PowerBuilder.</LR.LIST.RESULT
  88448. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  88449. ></RBW-AUTOGEN
  88450. ></RBW-MARKER
  88451. ><RBW-PARABODY>In PowerBuilder:</RBW-PARABODY
  88452. ></LN.LIST.NUM
  88453. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>a&rbwtab;</CX5FX5FZLIST.NUMBER
  88454. ></RBW-AUTOGEN
  88455. ></RBW-MARKER
  88456. ><RBW-PARABODY>Create or open your application.</RBW-PARABODY
  88457. ></LN2.LIST.NUM.2
  88458. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>b&rbwtab;</CX5FX5FZLIST.NUMBER
  88459. ></RBW-AUTOGEN
  88460. ></RBW-MARKER
  88461. ><RBW-PARABODY>Add the ObjectTeam&truehy;created library to the library search path of your application.</RBW-PARABODY
  88462. ></LN2.LIST.NUM.2
  88463. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>c&rbwtab;</CX5FX5FZLIST.NUMBER
  88464. ></RBW-AUTOGEN
  88465. ></RBW-MARKER
  88466. ><RBW-PARABODY>Edit the objects in the library as you would any other PowerBuilder objects.</RBW-PARABODY
  88467. ></LN2.LIST.NUM.2
  88468. ><LN2.LIST.NUM.2><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>d&rbwtab;</CX5FX5FZLIST.NUMBER
  88469. ></RBW-AUTOGEN
  88470. ></RBW-MARKER
  88471. ><RBW-PARABODY>Exit from all PowerBuilder painters to ensure that you have saved all changes.</RBW-PARABODY
  88472. ></LN2.LIST.NUM.2
  88473. ></LABEL
  88474. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88475. >How to regenerate the edited source files</L.LABEL
  88476. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  88477. ></RBW-AUTOGEN
  88478. ></RBW-MARKER
  88479. ><RBW-PARABODY>To regenerate the edited source files:</RBW-PARABODY
  88480. ></P.PROCEDURE
  88481. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  88482. ></RBW-AUTOGEN
  88483. ></RBW-MARKER
  88484. ><RBW-PARABODY>Select the Keep Synchronized With PowerBuilder Libraries property for the current system.</RBW-PARABODY
  88485. ></LN.LIST.NUM
  88486. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  88487. ></RBW-AUTOGEN
  88488. ></RBW-MARKER
  88489. ><RBW-PARABODY>If, in PowerBuilder, you added variables (instance variables, shared variables, or new variables in a structure), functions, events, structures, or window controls to a generated object, use round&truehy;trip engineering to add the appropriate attributes, operations, or classes to the ObjectTeam model. See <RBW-XREF REFID="22218" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering</RBW-XREF
  88490. > for more information.</RBW-PARABODY
  88491. ></LN.LIST.NUM
  88492. ><LR.LIST.RESULT>ObjectTeam exports the modified objects out of the PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88493. >) library, updating the generated files, before running running&truehy;trip engineering.</LR.LIST.RESULT
  88494. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  88495. ></RBW-AUTOGEN
  88496. ></RBW-MARKER
  88497. ><RBW-PARABODY>Regenerate the source files by importing systems or files into Implementation Phase level, as described in <RBW-XREF REFID="23311" TYPE="XREF-TEXTCOPY">Generating PowerBuilder Source Files</RBW-XREF
  88498. >.</RBW-PARABODY
  88499. ></LN.LIST.NUM
  88500. ><LR.LIST.RESULT>ObjectTeam exports the modified objects out of the PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88501. >) library, updating the generated files, before regenerating the source files.</LR.LIST.RESULT
  88502. ></LABEL
  88503. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88504. >Workflow</L.LABEL
  88505. ><B.BODY>The following figure shows the workflow graphically. The operations shown in the shaded area are performed automatically when the Keep Synchronized With PowerBuilder Libraries property is selected.</B.BODY
  88506. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00791.tif" origseq="54" origtype="I" origdoc="../../sources/pb/pbcodegn.fm5.mif"></RBW-GRAPHIC
  88507. ></FA.FIGURE.ANCHOR
  88508. ><B.BODY></B.BODY
  88509. ></LABEL
  88510. ></SUBSECTION
  88511. ></SECTION
  88512. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28110"></RBW-ANCHOR
  88513. >Regenerating Code<RBW-IDXTERM TERM1="code regeneration" TERM2="edited C++ source file"></RBW-IDXTERM
  88514. ></S.SECTION.HEAD
  88515. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88516. >Design changes and code changes</L.LABEL
  88517. ><B.BODY>ObjectTeam supports incremental development. You can generate code from your models, edit that code, and regenerate the code without losing your changes. You can work with models during design and with code during implementation, shifting your focus between the two as necessary.</B.BODY
  88518. ><B.BODY>It is, however, important that you make changes where appropriate.</B.BODY
  88519. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88520. ></RBW-AUTOGEN
  88521. ></RBW-MARKER
  88522. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the code</CX5FX5FBULLET.EMPHASIS
  88523. > when you are adding code that is not generated by ObjectTeam (for example, adding method bodies), or when you are making local changes to the code (for example, adding a missing variable or function to a class).</RBW-PARABODY
  88524. ></LB.LIST.BULLET
  88525. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  88526. ></RBW-AUTOGEN
  88527. >If you add variables, functions, events, structures, or controls to the code, you must add the appropriate attributes, operations, or classes to ObjectTeam before regenerating the source files. See <RBW-XREF REFID="38296" TYPE="XREF-TEXTCOPY">Editing Generated Source Files</RBW-XREF
  88528. > for more information.</N2.NOTE.2
  88529. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88530. ></RBW-AUTOGEN
  88531. ></RBW-MARKER
  88532. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Change the model</CX5FX5FBULLET.EMPHASIS
  88533. > when you are changing the structure of the model (for example, if you are changing the class hierarchy or class associations), or when you are making global changes to the code (for example, if you are changing the name of a class, attribute, or operation).</RBW-PARABODY
  88534. ></LB.LIST.BULLET
  88535. ></LABEL
  88536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88537. >Editing generated files</L.LABEL
  88538. ><B.BODY>The generated PowerBuilder files are framework files that you need to complete. Comments in the file indicate where you should add code.</B.BODY
  88539. ><B.BODY>Always edit the generated files in accordance with the guidelines described in <RBW-XREF REFID="38296" TYPE="XREF-TEXTCOPY">Editing Generated Source Files</RBW-XREF
  88540. >. This ensures that your changes are preserved when you regenerate the PowerBuilder files.</B.BODY
  88541. ></LABEL
  88542. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88543. >Editing the ObjectTeam model</L.LABEL
  88544. ><B.BODY>The ObjectTeam model is always used as the source for generating the PowerBuilder files. If you change the model, you generally want to regenerate the PowerBuilder files.</B.BODY
  88545. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88546. >Old files</SL.SUBLABEL
  88547. ><B.BODY>Changes to the ObjectTeam model can cause a previously generated PowerBuilder file to change. In this case, the code generator saves the originally generated file. This saved copy of the generated file is marked as an <CX5FX5FEMPHASIS>old file</CX5FX5FEMPHASIS
  88548. > and appears highlighted in the Information area of the Browser.</B.BODY
  88549. ><B.BODY>You can compare the old and new copies of a generated file and copy sections of the old file to the new file as necessary. However, you must always delete all old files before regenerating the PowerBuilder files.</B.BODY
  88550. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88551. >Preserving files</SL.SUBLABEL
  88552. ><B.BODY>If you want to save both the old files and the new files, you can copy the old files to another directory before deleting them from the Browser. Alternatively, before changing the ObjectTeam model, you can freeze both the model and the generated PowerBuilder files; this ensures that you have a stable version of the model and generated files to return to should your changes to the model not give the desired results.</B.BODY
  88553. ></LABEL
  88554. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88555. >How to regenerate code</L.LABEL
  88556. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  88557. ></RBW-AUTOGEN
  88558. >You must delete old files before you can regenerate code.</W.WARNING
  88559. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  88560. ></RBW-AUTOGEN
  88561. ></RBW-MARKER
  88562. ><RBW-PARABODY>To regenerate one or more PowerBuilder files:</RBW-PARABODY
  88563. ></P.PROCEDURE
  88564. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  88565. ></RBW-AUTOGEN
  88566. ></RBW-MARKER
  88567. ><RBW-PARABODY>In the Implementation phase, move to the System that contains the files that you want to regenerate.</RBW-PARABODY
  88568. ></LN.LIST.NUM
  88569. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  88570. ></RBW-AUTOGEN
  88571. ></RBW-MARKER
  88572. ><RBW-PARABODY>Select the files.</RBW-PARABODY
  88573. ></LN.LIST.NUM
  88574. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  88575. ></RBW-AUTOGEN
  88576. ></RBW-MARKER
  88577. ><RBW-PARABODY>Use Utilities | Generate PowerBuilder |  Selected.</RBW-PARABODY
  88578. ></LN.LIST.NUM
  88579. ><LR.LIST.RESULT>ObjectTeam opens a Monitor window for displaying log messages, then imports the files.</LR.LIST.RESULT
  88580. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88581. >For more information</SL.SUBLABEL
  88582. ><B.BODY>See <RBW-XREF REFID="23311" TYPE="XREF-TEXTCOPY">Generating PowerBuilder Source Files</RBW-XREF
  88583. > for more information about the Utilities | Generate PowerBuilder menu item.</B.BODY
  88584. ></LABEL
  88585. ></SECTION
  88586. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="15913"></RBW-ANCHOR
  88587. >Using PowerBuilder With ObjectTeam</S.SECTION.HEAD
  88588. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88589. >Introduction</L.LABEL
  88590. ><B.BODY>This section contains hints and tips for using PowerBuilder and ObjectTeam to build applications.</B.BODY
  88591. ></LABEL
  88592. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88593. >PowerBuilder libraries</L.LABEL
  88594. ><B.BODY>The following guidelines for creating and maintaining PowerBuilder libraries that contain objects generated by ObjectTeam are strongly recommended:</B.BODY
  88595. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88596. ></RBW-AUTOGEN
  88597. ></RBW-MARKER
  88598. ><RBW-PARABODY>Create the PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88599. >) library in ObjectTeam. This ensures that the library is in the Cayenne repository.</RBW-PARABODY
  88600. ></LB.LIST.BULLET
  88601. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88602. ></RBW-AUTOGEN
  88603. ></RBW-MARKER
  88604. ><RBW-PARABODY>Import into the library only PowerBuilder source files originally generated by ObjectTeam. This ensures that all objects in the library are in the Cayenne repository.</RBW-PARABODY
  88605. ></LB.LIST.BULLET
  88606. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88607. ></RBW-AUTOGEN
  88608. ></RBW-MARKER
  88609. ><RBW-PARABODY>An ObjectTeam system can contain at most one PowerBuilder library. Import into a PowerBuilder library only the source files that are contained in the same system. This ensures that the source files are correctly regenerated.</RBW-PARABODY
  88610. ></LB.LIST.BULLET
  88611. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88612. ></RBW-AUTOGEN
  88613. ></RBW-MARKER
  88614. ><RBW-PARABODY>When you add these libraries to the library search path of a PowerBuilder application, point directly to the library created by ObjectTeam. This ensures that you are using the library that is in the Cayenne repository.</RBW-PARABODY
  88615. ></LB.LIST.BULLET
  88616. ></LABEL
  88617. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88618. >PowerBuilder applications</L.LABEL
  88619. ><B.BODY>When you create an application in PowerBuilder, you can have PowerBuilder build an application template. Typically, you do <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  88620. > want to build the application template if you plan to use ObjectTeam.</B.BODY
  88621. ><B.BODY>If you choose to build a template application, PowerBuilder adds a number of objects to the default library of the application. Because these objects are originally created in PowerBuilder, you cannot use ObjectTeam to edit or maintain them.</B.BODY
  88622. ></LABEL
  88623. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88624. >Reusing objects</L.LABEL
  88625. ><B.BODY>If you have objects defined in existing PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  88626. >) libraries, you can reuse those objects by referencing them as external classes in ObjectTeam. See <RBW-XREF REFID="37141" TYPE="XREF-TEXTCOPY">Using External Objects</RBW-XREF
  88627. > for an example.</B.BODY
  88628. ><RBWAUTO-0001></RBWAUTO-0001
  88629. ><!--
  88630.  
  88631.  
  88632.  
  88633.  
  88634.  
  88635. CONVERTING SOURCE FILE ../../sources/pb/pbgen.fm5.mif
  88636.  
  88637.  
  88638. --><B.BODY></B.BODY
  88639. ><B.BODY></B.BODY
  88640. ><B.BODY></B.BODY
  88641. ><B.BODY></B.BODY
  88642. ><B.BODY></B.BODY
  88643. ></LABEL
  88644. ></SECTION
  88645. ></CHAPTER
  88646. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 3&rbwtab;</CX5FX5FZCHAPTER.NUM
  88647. ></RBW-AUTOGEN
  88648. >Modeling <RBW-ANCHOR ID="16205"></RBW-ANCHOR
  88649. >Nonvisual Elements<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  88650. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for PowerBuilder</RBW-TEXTFLD
  88651. ></RBW-SYSOBJ
  88652. ></C.CHAPTER.HEAD
  88653. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88654. >Introduction</L.LABEL
  88655. ><B.BODY>This chapter describes how to model the nonvisual aspects of an application. This includes:</B.BODY
  88656. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88657. ></RBW-AUTOGEN
  88658. ></RBW-MARKER
  88659. ><RBW-PARABODY>Nonvisual objects: custom class objects, class standard objects, and structures.</RBW-PARABODY
  88660. ></LB.LIST.BULLET
  88661. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88662. ></RBW-AUTOGEN
  88663. ></RBW-MARKER
  88664. ><RBW-PARABODY>Nonvisual aspects of visual objects (for example, variables and functions in a window).</RBW-PARABODY
  88665. ></LB.LIST.BULLET
  88666. ><B.BODY>Chapter 4, Modeling the Visual Interface, describes how to model the user interface of an application.</B.BODY
  88667. ></LABEL
  88668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88669. >Summary of mappings</L.LABEL
  88670. ><B.BODY>The following table summarizes the mappings between ObjectTeam and PowerBuilder:</B.BODY
  88671. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam</CELLHEADING
  88672. ></ENTRY
  88673. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>PowerBuilder</CELLHEADING
  88674. ></ENTRY
  88675. ></RBW-ROW
  88676. ></THEAD
  88677. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  88678. ></ENTRY
  88679. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>User object, structure, window, or menu</CELLBODY
  88680. ></ENTRY
  88681. ></RBW-ROW
  88682. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  88683. ></ENTRY
  88684. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Variable</CELLBODY
  88685. ></ENTRY
  88686. ></RBW-ROW
  88687. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  88688. ></ENTRY
  88689. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event or function</CELLBODY
  88690. ></ENTRY
  88691. ></RBW-ROW
  88692. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  88693. ></ENTRY
  88694. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Variable and access functions</CELLBODY
  88695. ></ENTRY
  88696. ></RBW-ROW
  88697. ></TBODY
  88698. ></TGROUP
  88699. ></RBW-TABLE
  88700. ></LABEL
  88701. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88702. >Upper&truehy; and lower&truehy;case characters</L.LABEL
  88703. ><B.BODY>ObjectTeam is case&truehy;sensitive, but in many cases PowerBuilder allows only lower&truehy;case characters. To prevent potential problems, Cayenne strongly recommends that you use only lower&truehy;case characters when naming items in ObjectTeam systems used with the PowerBuilder code generator.</B.BODY
  88704. ></LABEL
  88705. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88706. >Prerequisites</L.LABEL
  88707. ><B.BODY>This chapter assumes that you are familiar with generating and editing PowerBuilder source files, as described in Chapter 2, Generating Code.</B.BODY
  88708. ></LABEL
  88709. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88710. >Examples</L.LABEL
  88711. ><B.BODY>When you are using the PowerBuilder code generator, every ObjectTeam class must have a valid supertype class. For simplicity, the examples in this chapter do not show the supertype class. Unless otherwise indicated, you can assume that the supertype class is nonvisualobject, which generates a custom class object.</B.BODY
  88712. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88713. >For more information</SL.SUBLABEL
  88714. ><B.BODY>See <RBW-XREF REFID="15448" TYPE="XREF-TEXTCOPY">Mapping Classes</RBW-XREF
  88715. > for more information about the valid supertype classes.</B.BODY
  88716. ></LABEL
  88717. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88718. >In this chapter</L.LABEL
  88719. ><B.BODY>This chapter contains the following sections:</B.BODY
  88720. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  88721. ></ENTRY
  88722. ></RBW-ROW
  88723. ></THEAD
  88724. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15448" TYPE="XREF-TEXTCOPY">Mapping Classes&rbwtab;3–3</RBW-XREF
  88725. ></SB.SECTION.BLOCK.TABLE
  88726. ></ENTRY
  88727. ></RBW-ROW
  88728. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="21955" TYPE="XREF-TEXTCOPY">Mapping Attributes&rbwtab;3–10</RBW-XREF
  88729. ></SB.SECTION.BLOCK.TABLE
  88730. ></ENTRY
  88731. ></RBW-ROW
  88732. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14596" TYPE="XREF-TEXTCOPY">Mapping Operations&rbwtab;3–16</RBW-XREF
  88733. ></SB.SECTION.BLOCK.TABLE
  88734. ></ENTRY
  88735. ></RBW-ROW
  88736. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28744" TYPE="XREF-TEXTCOPY">Mapping Inheritance&rbwtab;3–24</RBW-XREF
  88737. ></SB.SECTION.BLOCK.TABLE
  88738. ></ENTRY
  88739. ></RBW-ROW
  88740. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="14358" TYPE="XREF-TEXTCOPY">Mapping Associations&rbwtab;3–26</RBW-XREF
  88741. ></SB.SECTION.BLOCK.TABLE
  88742. ></ENTRY
  88743. ></RBW-ROW
  88744. ></TBODY
  88745. ></TGROUP
  88746. ></RBW-TABLE
  88747. ></LABEL
  88748. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="15448"></RBW-ANCHOR
  88749. >Mapping Classes</S.SECTION.HEAD
  88750. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88751. >Introduction</L.LABEL
  88752. ><B.BODY>An ObjectTeam class maps to a PowerBuilder object.</B.BODY
  88753. ></LABEL
  88754. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88755. >Supertype class indicates object type</L.LABEL
  88756. ><B.BODY>The supertype of an ObjectTeam class indicates the type of PowerBuilder object that you want to generate. If an ObjectTeam class does not have a valid supertype class, ObjectTeam generates a custom class user object.</B.BODY
  88757. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88758. >PBBuiltins</SL.SUBLABEL
  88759. ><B.BODY>Each type of PowerBuilder object that ObjectTeam can generate is represented as a class in the PBBuiltins system; these classes are the valid supertype classes. ObjectTeam creates the PBBuiltins system when you configure the Object Design environment, as described in <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your PowerBuilder Environment</RBW-XREF
  88760. >.</B.BODY
  88761. ></LABEL
  88762. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88763. >Global and local objects</L.LABEL
  88764. ><B.BODY>The Global Type property of the ObjectTeam class determines whether the generated PowerBuilder object is global or local.</B.BODY
  88765. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  88766. ></RBW-AUTOGEN
  88767. >ObjectTeam generates PowerBuilder source files only for global objects. Typically, local objects are contained in a global object and, therefore, defined in the source file of that global object.</N.NOTE
  88768. ></LABEL
  88769. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88770. >Constructors and destructors</L.LABEL
  88771. ><B.BODY>PowerBuilder supports constructor and destructor events for many types of objects. ObjectTeam generates these events in the following situations:</B.BODY
  88772. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88773. ></RBW-AUTOGEN
  88774. ></RBW-MARKER
  88775. ><RBW-PARABODY>You define an operation named constructor or destructor and, in the operation properties, select the Event check box to indicate that the operation should be generated as an event. See <RBW-XREF REFID="14596" TYPE="XREF-TEXTCOPY">Mapping Operations</RBW-XREF
  88776. >.</RBW-PARABODY
  88777. ></LB.LIST.BULLET
  88778. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88779. ></RBW-AUTOGEN
  88780. ></RBW-MARKER
  88781. ><RBW-PARABODY>You define an association. In this case, ObjectTeam generates a constructor event to support creation and maintenance of the association. See <RBW-XREF REFID="14358" TYPE="XREF-TEXTCOPY">Mapping Associations</RBW-XREF
  88782. >.</RBW-PARABODY
  88783. ></LB.LIST.BULLET
  88784. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  88785. ></RBW-AUTOGEN
  88786. >Many ObjectTeam code generators generate constructors based on the existence of a $create operation. The PowerBuilder code generator does no special processing for a $create operation.</N.NOTE
  88787. ></LABEL
  88788. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88789. >Class properties</L.LABEL
  88790. ><B.BODY>You use ObjectTeam’s class properties to provide input to the code generator. <RBW-XREF REFID="39809" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  88791. > describes how to edit class properties, and the effect of each property.</B.BODY
  88792. ></LABEL
  88793. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88794. >In this section</L.LABEL
  88795. ><B.BODY>This section contains the following topics:</B.BODY
  88796. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  88797. ></ENTRY
  88798. ></RBW-ROW
  88799. ></THEAD
  88800. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16085" TYPE="XREF-TEXTCOPY">Specifying Object Type&rbwtab;3–5</RBW-XREF
  88801. ></SB.SECTION.BLOCK.TABLE
  88802. ></ENTRY
  88803. ></RBW-ROW
  88804. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13782" TYPE="XREF-TEXTCOPY">Specifying Global Type&rbwtab;3–7</RBW-XREF
  88805. ></SB.SECTION.BLOCK.TABLE
  88806. ></ENTRY
  88807. ></RBW-ROW
  88808. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39809" TYPE="XREF-TEXTCOPY">Editing Class Properties&rbwtab;3–8</RBW-XREF
  88809. ></SB.SECTION.BLOCK.TABLE
  88810. ></ENTRY
  88811. ></RBW-ROW
  88812. ></TBODY
  88813. ></TGROUP
  88814. ></RBW-TABLE
  88815. ></LABEL
  88816. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="16085"></RBW-ANCHOR
  88817. >Specifying Object Type</SS.SUBSEC.HEAD
  88818. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88819. >Introduction</L.LABEL
  88820. ><B.BODY>Every ObjectTeam class must have a valid supertype class. The code generator uses the supertype class to determine what type of PowerBuilder object to generate.</B.BODY
  88821. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88822. >Example</SL.SUBLABEL
  88823. ><B.BODY>To model a PowerBuilder window, for example, you create an ObjectTeam class whose supertype is window. (The window class is defined in the PBBuiltins system.)</B.BODY
  88824. ></LABEL
  88825. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88826. >Default supertype class</L.LABEL
  88827. ><B.BODY>If an ObjectTeam class does not have a supertype class, the PowerBuilder code generator displays a warning message and uses nonvisualobject as the supertype class. This indicates that the desired PowerBuilder object type is custom class user object.</B.BODY
  88828. ></LABEL
  88829. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88830. >Supertype classes for PowerBuilder types</L.LABEL
  88831. ><B.BODY>The following table lists the PowerBuilder object types generated by ObjectTeam and their matching supertype classes from the PBBuiltins system:</B.BODY
  88832. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="180p"><COLSPEC COLNAME="2" COLWIDTH="270p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>PowerBuilder Type</CELLHEADING
  88833. ></ENTRY
  88834. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>PBBuiltins Class</CELLHEADING
  88835. ></ENTRY
  88836. ></RBW-ROW
  88837. ></THEAD
  88838. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>window</CELLBODY
  88839. ></ENTRY
  88840. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>window</CELLBODY
  88841. ></ENTRY
  88842. ></RBW-ROW
  88843. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>menu</CELLBODY
  88844. ></ENTRY
  88845. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>menu, menucascade</CELLBODY
  88846. ></ENTRY
  88847. ></RBW-ROW
  88848. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>structure</CELLBODY
  88849. ></ENTRY
  88850. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>structure</CELLBODY
  88851. ></ENTRY
  88852. ></RBW-ROW
  88853. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>standard class user objects</CELLBODY
  88854. ></ENTRY
  88855. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>connection, datastore, dynamicdescriptionarea, dynamicstagingarea, error, mailsession, message, oleobject, olestorage, olestream, pipeline, transaction, transport</CELLBODY
  88856. ></ENTRY
  88857. ></RBW-ROW
  88858. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>custom class user object</CELLBODY
  88859. ></ENTRY
  88860. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>nonvisualobject</CELLBODY
  88861. ></ENTRY
  88862. ></RBW-ROW
  88863. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>standard visual user objects</CELLBODY
  88864. ></ENTRY
  88865. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>checkbox, commandbutton, datawindow, dropdownlistbox, dropdownpicturelistbox, editmask, graph, groupbox, hscrollbar, line, listbox, listview, multilineedit, olecontrol, oval, picture, picturebutton, picturelistbox, radiobutton, rectangle, richtextedit, roundrectangle, singlelineedit, statictext, tab, treeview, vscrollbar</CELLBODY
  88866. ></ENTRY
  88867. ></RBW-ROW
  88868. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>custom visual user objects</CELLBODY
  88869. ></ENTRY
  88870. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>userobject</CELLBODY
  88871. ></ENTRY
  88872. ></RBW-ROW
  88873. ></TBODY
  88874. ></TGROUP
  88875. ></RBW-TABLE
  88876. ></LABEL
  88877. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88878. >Structures</L.LABEL
  88879. ><B.BODY>A structure groups variables; therefore, an ObjectTeam class that represents a structure should contain only attributes. The PowerBuilder code generator ignores any operations that are specified for such a class.</B.BODY
  88880. ><B.BODY>A structure can be either a global or local object. As described in <RBW-XREF REFID="13782" TYPE="XREF-TEXTCOPY">Specifying Global Type</RBW-XREF
  88881. >, the Global Type property of the ObjectTeam class that represents the structure determines whether the structure is generated as a global or local object.</B.BODY
  88882. ></LABEL
  88883. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88884. >Standard class user objects</L.LABEL
  88885. ><B.BODY>A standard class user object inherits its definition from a built&truehy;in, nonvisual PowerBuilder object, such as a connection or datastore. The attributes and operations that you specify for an ObjectTeam class that represents a standard class user object enhance the behavior of the built&truehy;in PowerBuilder object.</B.BODY
  88886. ><B.BODY>A standard class user object should be a global object; therefore, the Global Type property of an ObjectTeam class that represents a standard class user object should be set to Yes.</B.BODY
  88887. ></LABEL
  88888. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88889. >Custom class user object</L.LABEL
  88890. ><B.BODY>A custom class user object is an object of your own design that encapsulates the attributes (variables) and operations (functions) that you specify.</B.BODY
  88891. ><B.BODY>A custom class user object should be a global object; therefore, the Global Type property of an ObjectTeam class that represents a custom class user object should be set to Yes.</B.BODY
  88892. ></LABEL
  88893. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88894. >Visual objects</L.LABEL
  88895. ><B.BODY>Chapter 4, Modeling the Visual Interface, provides more information about modeling windows, menus, standard visual user objects, and custom visual user objects.</B.BODY
  88896. ></LABEL
  88897. ></SUBSECTION
  88898. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="13782"></RBW-ANCHOR
  88899. >Specifying Global Type</SS.SUBSEC.HEAD
  88900. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88901. >Introduction</L.LABEL
  88902. ><B.BODY>In PowerBuilder, an object can be global or local.</B.BODY
  88903. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88904. ></RBW-AUTOGEN
  88905. ></RBW-MARKER
  88906. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Global</CX5FX5FBULLET.EMPHASIS
  88907. > objects are independent objects that can be used anywhere in the application. They are stored in PowerBuilder (.pbl) libraries.</RBW-PARABODY
  88908. ></LB.LIST.BULLET
  88909. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88910. ></RBW-AUTOGEN
  88911. ></RBW-MARKER
  88912. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Local</CX5FX5FBULLET.EMPHASIS
  88913. > objects are contained in global objects. A local object is defined in a global object and can only be accessed within the context of that object.</RBW-PARABODY
  88914. ></LB.LIST.BULLET
  88915. ></LABEL
  88916. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88917. >Global Type property</L.LABEL
  88918. ><B.BODY>The Global Type property of an ObjectTeam class determines whether the generated PowerBuilder object is global or local:</B.BODY
  88919. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88920. ></RBW-AUTOGEN
  88921. ></RBW-MARKER
  88922. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Yes</CX5FX5FBULLET.EMPHASIS
  88923. > (default) indicates that the object is global.</RBW-PARABODY
  88924. ></LB.LIST.BULLET
  88925. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  88926. ></RBW-AUTOGEN
  88927. ></RBW-MARKER
  88928. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>No</CX5FX5FBULLET.EMPHASIS
  88929. > indicates that the object is local.</RBW-PARABODY
  88930. ></LB.LIST.BULLET
  88931. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88932. >For more information</SL.SUBLABEL
  88933. ><B.BODY><RBW-XREF REFID="39809" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  88934. > describes how to set class properties.</B.BODY
  88935. ></LABEL
  88936. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88937. >Source files generated for global objects only</L.LABEL
  88938. ><B.BODY>The PowerBuilder code generator generates a PowerBuilder source file for each ObjectTeam class that represents a global PowerBuilder object.</B.BODY
  88939. ><B.BODY>The PowerBuilder code generator does not generate source files for local objects. Typically, a local object is contained in a global object and is defined in the source file generated for the global object.</B.BODY
  88940. ></LABEL
  88941. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88942. >Global objects must be defined items</L.LABEL
  88943. ><B.BODY>Before generating code, check that all classes that represent global objects are defined items. If a class is not a defined item, it is an external class; ObjectTeam does not generate code for external classes.</B.BODY
  88944. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  88945. ></RBW-AUTOGEN
  88946. ></RBW-MARKER
  88947. ><RBW-PARABODY>To check that a class is a defined item:</RBW-PARABODY
  88948. ></P.PROCEDURE
  88949. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  88950. ></RBW-AUTOGEN
  88951. ></RBW-MARKER
  88952. ><RBW-PARABODY>Display the Edit Properties dialog box for the class.</RBW-PARABODY
  88953. ></LN.LIST.NUM
  88954. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  88955. ></RBW-AUTOGEN
  88956. ></RBW-MARKER
  88957. ><RBW-PARABODY>Examine the Define Item button on the dialog box.</RBW-PARABODY
  88958. ></LN.LIST.NUM
  88959. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  88960. ></RBW-MARKER
  88961. ><RBW-PARABODY>If the Define Item button is available, the class is not a defined item. Select the Define Item button to define the item.</RBW-PARABODY
  88962. ></LB2.LIST.BULLET.2
  88963. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  88964. ></RBW-MARKER
  88965. ><RBW-PARABODY>If the Define Item button is unavailable (grayed out), the class is already a defined item.</RBW-PARABODY
  88966. ></LB2.LIST.BULLET.2
  88967. ></LABEL
  88968. ></SUBSECTION
  88969. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39809"></RBW-ANCHOR
  88970. >Editing Class Properties</SS.SUBSEC.HEAD
  88971. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88972. >Introduction</L.LABEL
  88973. ><B.BODY>In the Object Design phase, you use class properties to provide input to the PowerBuilder code generator.</B.BODY
  88974. ></LABEL
  88975. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  88976. >How to edit class properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for class"></RBW-IDXTERM
  88977. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  88978. ><RBW-IDXTERM TERM1="class property" TERM2="editing"></RBW-IDXTERM
  88979. ></L.LABEL
  88980. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  88981. ></RBW-AUTOGEN
  88982. ></RBW-MARKER
  88983. ><RBW-PARABODY>To edit properties of a class:</RBW-PARABODY
  88984. ></P.PROCEDURE
  88985. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  88986. ></RBW-AUTOGEN
  88987. ></RBW-MARKER
  88988. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  88989. ></LN.LIST.NUM
  88990. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  88991. ></RBW-AUTOGEN
  88992. ></RBW-MARKER
  88993. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  88994. ></LN.LIST.NUM
  88995. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  88996. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  88997. ></RBW-AUTOGEN
  88998. ></RBW-MARKER
  88999. ><RBW-PARABODY>Select the class name.</RBW-PARABODY
  89000. ></LN.LIST.NUM
  89001. ><LR.LIST.RESULT>The class properties appear on the right side of the dialog box.</LR.LIST.RESULT
  89002. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00792.unk" origfile="pics/clsprop.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89003. ></FA2.FIGURE.ANCHOR.2
  89004. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  89005. ></RBW-AUTOGEN
  89006. ></RBW-MARKER
  89007. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  89008. ></LN.LIST.NUM
  89009. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89010. ></RBW-MARKER
  89011. ><RBW-PARABODY>Use the Global Type field to indicate whether the object is global or local, as described in <RBW-XREF REFID="13782" TYPE="XREF-TEXTCOPY">Specifying Global Type</RBW-XREF
  89012. >.</RBW-PARABODY
  89013. ></LB2.LIST.BULLET.2
  89014. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89015. ></RBW-MARKER
  89016. ><RBW-PARABODY>Use the Autoinstantiate field to indicate that the generated object is autoinstantiated (that is, a variable whose data type is the same as this class is automatically assigned an instance of the class when the variable comes in scope).</RBW-PARABODY
  89017. ></LB2.LIST.BULLET.2
  89018. ><N3.NOTE.3><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  89019. ></RBW-AUTOGEN
  89020. >This field is ignored unless the supertype of the current class is userobject or nonvisualobject.</N3.NOTE.3
  89021. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89022. ></RBW-MARKER
  89023. ><RBW-PARABODY>Use the Window Type field to specify the type of the generated window: Child, Main (default), MDI, MDIHelp, Popup, or Response.</RBW-PARABODY
  89024. ></LB2.LIST.BULLET.2
  89025. ><N3.NOTE.3><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  89026. ></RBW-AUTOGEN
  89027. >This field is ignored unless the supertype of the current class is window. </N3.NOTE.3
  89028. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89029. ></RBW-MARKER
  89030. ><RBW-PARABODY>Use the Text tab to enter a description of the class. This text does not appear in the generated code.</RBW-PARABODY
  89031. ></LB2.LIST.BULLET.2
  89032. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  89033. ></RBW-AUTOGEN
  89034. ></RBW-MARKER
  89035. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  89036. ></LN.LIST.NUM
  89037. ></LABEL
  89038. ></SUBSECTION
  89039. ></SECTION
  89040. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="21955"></RBW-ANCHOR
  89041. >Mapping Attributes</S.SECTION.HEAD
  89042. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89043. >Introduction</L.LABEL
  89044. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="mapping of"></RBW-IDXTERM
  89045. ><RBW-IDXTERM TERM1="mapping" TERM2="attribute"></RBW-IDXTERM
  89046. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="variables"></RBW-IDXTERM
  89047. >ObjectTeam attributes map to PowerBuilder variables, either instance variables or shared variables.</B.BODY
  89048. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  89049. ></RBW-AUTOGEN
  89050. >If the Global Type property of an ObjectTeam class is set to No, the code generator ignores the data attributes of the class. See <RBW-XREF REFID="39809" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  89051. > for more information.</N.NOTE
  89052. ></LABEL
  89053. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89054. >Attribute syntax</L.LABEL
  89055. ><B.BODY>In ObjectTeam, you use the following syntax to specify attributes for a class:</B.BODY
  89056. ><E.EXAMPLE>[ * | $ | / ] name : type [ = initial&truehy;value ]</E.EXAMPLE
  89057. ><B.BODY>where</B.BODY
  89058. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89059. ></RBW-AUTOGEN
  89060. ></RBW-MARKER
  89061. ><RBW-PARABODY>* indicates a key attribute, which is generated as an instance variable.</RBW-PARABODY
  89062. ></LB.LIST.BULLET
  89063. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89064. ></RBW-AUTOGEN
  89065. ></RBW-MARKER
  89066. ><RBW-PARABODY>$ indicates a class attribute, which is generated as a shared variable.<RBW-IDXTERM TERM1="attribute" TERM2="class attribute"></RBW-IDXTERM
  89067. ><RBW-IDXTERM TERM1="class variable"></RBW-IDXTERM
  89068. ><RBW-IDXTERM TERM1="$ (class attribute)"></RBW-IDXTERM
  89069. ></RBW-PARABODY
  89070. ></LB.LIST.BULLET
  89071. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89072. ></RBW-AUTOGEN
  89073. ></RBW-MARKER
  89074. ><RBW-PARABODY>/ indicates a derived attribute. PowerBuilder does not support derived attributes; therefore, this indicator is ignored by the code generator.<RBW-IDXTERM TERM1="derived attribute"></RBW-IDXTERM
  89075. ><RBW-IDXTERM TERM1="/ (derived attribute)"></RBW-IDXTERM
  89076. ></RBW-PARABODY
  89077. ></LB.LIST.BULLET
  89078. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89079. ></RBW-AUTOGEN
  89080. ></RBW-MARKER
  89081. ><RBW-PARABODY><CX5FX5FVARIABLE>type</CX5FX5FVARIABLE
  89082. > is either a standard type or the name of another class, as described in <RBW-XREF REFID="19428" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  89083. >.</RBW-PARABODY
  89084. ></LB.LIST.BULLET
  89085. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89086. ></RBW-AUTOGEN
  89087. ></RBW-MARKER
  89088. ><RBW-PARABODY><CX5FX5FVARIABLE>initial&truehy;value</CX5FX5FVARIABLE
  89089. >, if specified, is the initial value assigned to the generated variable. The code generator does not validate the data type of the specified value. <RBW-IDXTERM TERM1="attribute" TERM2="default value"></RBW-IDXTERM
  89090. ><RBW-IDXTERM TERM1="default value, for attribute"></RBW-IDXTERM
  89091. ><RBW-IDXTERM TERM1="initial value, for attribute"></RBW-IDXTERM
  89092. ></RBW-PARABODY
  89093. ></LB.LIST.BULLET
  89094. ></LABEL
  89095. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89096. >Attribute maps to variable</L.LABEL
  89097. ><B.BODY><RBW-IDXTERM TERM1="variable, in Visual Basic"></RBW-IDXTERM
  89098. >By default, an attribute maps to an instance variable, as shown in the following example:</B.BODY
  89099. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00793.unk" origfile="pics/cust.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89100. ></FA.FIGURE.ANCHOR
  89101. ><EM.EXAMPLE.MONO>// User defined attributes</EM.EXAMPLE.MONO
  89102. ><EM.EXAMPLE.MONO>string name</EM.EXAMPLE.MONO
  89103. ><EM.EXAMPLE.MONO>string displayfont = “Helvetica”</EM.EXAMPLE.MONO
  89104. ></LABEL
  89105. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89106. >Attribute properties</L.LABEL
  89107. ><B.BODY>You use attribute properties to provide input to the code generator. <RBW-XREF REFID="17827" TYPE="XREF-TEXTCOPY">Editing Attribute Properties</RBW-XREF
  89108. > describes how to edit attribute properties, and the effect of each property.</B.BODY
  89109. ></LABEL
  89110. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89111. >In this section</L.LABEL
  89112. ><B.BODY>This section contains the following topics:</B.BODY
  89113. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  89114. ></ENTRY
  89115. ></RBW-ROW
  89116. ></THEAD
  89117. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19428" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types&rbwtab;3–12</RBW-XREF
  89118. ></SB.SECTION.BLOCK.TABLE
  89119. ></ENTRY
  89120. ></RBW-ROW
  89121. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17827" TYPE="XREF-TEXTCOPY">Editing Attribute Properties&rbwtab;3–13</RBW-XREF
  89122. ></SB.SECTION.BLOCK.TABLE
  89123. ></ENTRY
  89124. ></RBW-ROW
  89125. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17590" TYPE="XREF-TEXTCOPY">Specifying Constants&rbwtab;3–14</RBW-XREF
  89126. ></SB.SECTION.BLOCK.TABLE
  89127. ></ENTRY
  89128. ></RBW-ROW
  89129. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="34899" TYPE="XREF-TEXTCOPY">Specifying Attribute Access&rbwtab;3–15</RBW-XREF
  89130. ></SB.SECTION.BLOCK.TABLE
  89131. ></ENTRY
  89132. ></RBW-ROW
  89133. ></TBODY
  89134. ></TGROUP
  89135. ></RBW-TABLE
  89136. ></LABEL
  89137. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19428"></RBW-ANCHOR
  89138. >Specifying Attribute Data Types</SS.SUBSEC.HEAD
  89139. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89140. >Introduction</L.LABEL
  89141. ><B.BODY><RBW-IDXTERM TERM1="data type" TERM2="for attribute"></RBW-IDXTERM
  89142. ><RBW-IDXTERM TERM1="attribute" TERM2="data type"></RBW-IDXTERM
  89143. >Specify the data type of an attribute (or parameter) using either a standard data type or the name of another class. For example:</B.BODY
  89144. ><EM.EXAMPLE.MONO>attr:integer</EM.EXAMPLE.MONO
  89145. ></LABEL
  89146. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89147. >Declaring an array</L.LABEL
  89148. ><B.BODY><RBW-IDXTERM TERM1="array, in Java"></RBW-IDXTERM
  89149. >Use square brackets to declare an attribute as an array. The dimension is optional. For example:</B.BODY
  89150. ><EM.EXAMPLE.MONO>attr : integer [ 10 ]</EM.EXAMPLE.MONO
  89151. ><B.BODY>This syntax produces the following line of code.</B.BODY
  89152. ><EM.EXAMPLE.MONO>integer attr[ 10 ]</EM.EXAMPLE.MONO
  89153. ></LABEL
  89154. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89155. >Standard data types</L.LABEL
  89156. ><B.BODY>The standard data types are defined by the <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="stand_types customization file"></RBW-IDXTERM
  89157. >stand_types</CX5FX5FFILE.NAME
  89158. > customization file. These are the data types that are valid in the Object Design phase.</B.BODY
  89159. ><B.BODY>The translation between standard data types and PowerBuilder data types is defined by the <CX5FX5FFILE.NAME><RBW-IDXTERM TERM1="lang_types customization file"></RBW-IDXTERM
  89160. >lang_types</CX5FX5FFILE.NAME
  89161. > customization file. These are the translations used by the PowerBuilder code generator.</B.BODY
  89162. ></LABEL
  89163. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89164. >Customizing the standard data types</L.LABEL
  89165. ><B.BODY>You can add additional data types to the list of standard types by editing the <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  89166. > customization file. If you add additional standard types, you must also provide translations for those data types by editing the <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  89167. > customization file.</B.BODY
  89168. ><B.BODY>By default, the <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  89169. > and <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  89170. > customization files are defined on Corporate level in the <CX5FX5FFILE.NAME>\etc\l_pb</CX5FX5FFILE.NAME
  89171. > external directory. You can edit the customization files at Corporate level, or create and edit them at a lower level, such as Project level. (The customization files at the lower level override the customization files at the higher level.)</B.BODY
  89172. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89173. >For more information</SL.SUBLABEL
  89174. ><B.BODY>The <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  89175. ><CX5FX5FTITLE></CX5FX5FTITLE
  89176. > describes how to create and edit customization files. The <CX5FX5FFILE.NAME>stand_types</CX5FX5FFILE.NAME
  89177. > and <CX5FX5FFILE.NAME>lang_types</CX5FX5FFILE.NAME
  89178. > customization files are ASCII files that can be edited using any text editor.</B.BODY
  89179. ></LABEL
  89180. ></SUBSECTION
  89181. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17827"></RBW-ANCHOR
  89182. >Editing Attribute Properties</SS.SUBSEC.HEAD
  89183. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89184. >Introduction</L.LABEL
  89185. ><B.BODY>In the Object Design phase, you use attribute properties to specify attribute access and to indicate whether the attribute is a constant.</B.BODY
  89186. ></LABEL
  89187. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89188. >How to edit attribute properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for attribute"></RBW-IDXTERM
  89189. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89190. ><RBW-IDXTERM TERM1="attribute property" TERM2="editing"></RBW-IDXTERM
  89191. ></L.LABEL
  89192. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  89193. ></RBW-AUTOGEN
  89194. ></RBW-MARKER
  89195. ><RBW-PARABODY>To edit attribute properties:</RBW-PARABODY
  89196. ></P.PROCEDURE
  89197. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  89198. ></RBW-AUTOGEN
  89199. ></RBW-MARKER
  89200. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  89201. ></LN.LIST.NUM
  89202. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  89203. ></RBW-AUTOGEN
  89204. ></RBW-MARKER
  89205. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  89206. ></LN.LIST.NUM
  89207. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  89208. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  89209. ></RBW-AUTOGEN
  89210. ></RBW-MARKER
  89211. ><RBW-PARABODY>Select an attribute name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  89212. ></LN.LIST.NUM
  89213. ><LR.LIST.RESULT>The attribute properties appear on the right side of the dialog box.</LR.LIST.RESULT
  89214. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00794.unk" origfile="pics/attrprop.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89215. ></FA2.FIGURE.ANCHOR.2
  89216. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  89217. ></RBW-AUTOGEN
  89218. ></RBW-MARKER
  89219. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  89220. ></LN.LIST.NUM
  89221. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89222. ></RBW-MARKER
  89223. ><RBW-PARABODY>Use the Constant Attribute field to generate a constant rather than a variable, as described in <RBW-XREF REFID="17590" TYPE="XREF-TEXTCOPY">Specifying Constants</RBW-XREF
  89224. >.</RBW-PARABODY
  89225. ></LB2.LIST.BULLET.2
  89226. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89227. ></RBW-MARKER
  89228. ><RBW-PARABODY>Use the Attribute Access field to specify the read/write access for the attribute, as described in <RBW-XREF REFID="34899" TYPE="XREF-TEXTCOPY">Specifying Attribute Access</RBW-XREF
  89229. >.</RBW-PARABODY
  89230. ></LB2.LIST.BULLET.2
  89231. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89232. ></RBW-MARKER
  89233. ><RBW-PARABODY>Use the Text tab to enter comment text. The text does not appear in the generated code.<RBW-IDXTERM TERM1="comment" TERM2="for attribute"></RBW-IDXTERM
  89234. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89235. ><RBW-IDXTERM TERM1="attribute property" TERM2="for comment"></RBW-IDXTERM
  89236. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89237. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="comment, for attribute"></RBW-IDXTERM
  89238. ></RBW-PARABODY
  89239. ></LB2.LIST.BULLET.2
  89240. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  89241. ></RBW-AUTOGEN
  89242. ></RBW-MARKER
  89243. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  89244. ></LN.LIST.NUM
  89245. ></LABEL
  89246. ></SUBSECTION
  89247. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17590"></RBW-ANCHOR
  89248. >Specifying Constants</SS.SUBSEC.HEAD
  89249. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89250. >Introduction</L.LABEL
  89251. ><B.BODY>Select the Attribute Constant check box on the Misc tab of the Edit Properties dialog box to generate a constant rather than a variable.</B.BODY
  89252. ></LABEL
  89253. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89254. >Initial value required</L.LABEL
  89255. ><B.BODY>ObjectTeam uses the attribute’s initial value as the value of the constant. If you select the Attribute Constant checkbox for an attribute, you must also specify an initial value for the attribute.</B.BODY
  89256. ></LABEL
  89257. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89258. >Example</L.LABEL
  89259. ><B.BODY>In the following example, the Attribute Constant property is selected for the displayfont attribute; it is not selected for the name attribute.</B.BODY
  89260. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00795.unk" origfile="pics/cust.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89261. ></FA.FIGURE.ANCHOR
  89262. ><EM.EXAMPLE.MONO>// User defined attributes</EM.EXAMPLE.MONO
  89263. ><EM.EXAMPLE.MONO>string name</EM.EXAMPLE.MONO
  89264. ><EM.EXAMPLE.MONO>constant string displayfont = “Helvetica”</EM.EXAMPLE.MONO
  89265. ></LABEL
  89266. ></SUBSECTION
  89267. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="34899"></RBW-ANCHOR
  89268. >Specifying Attribute Access</SS.SUBSEC.HEAD
  89269. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89270. >Introduction</L.LABEL
  89271. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="access method"></RBW-IDXTERM
  89272. ><RBW-IDXTERM TERM1="attribute property" TERM2="access method"></RBW-IDXTERM
  89273. ><RBW-IDXTERM TERM1="access property" TERM2="for attribute access method"></RBW-IDXTERM
  89274. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89275. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="attribute access method"></RBW-IDXTERM
  89276. ><RBW-IDXTERM TERM1="attribute access method"></RBW-IDXTERM
  89277. ><RBW-IDXTERM TERM1="method" TERM2="attribute access"></RBW-IDXTERM
  89278. >The values you specify in the Attribute Access group box on the Misc tab of the Edit Properties dialog box determine which access keywords are included in the declaration of the generated variable or constant. In PowerBuilder, these access keywords control access to the variable or constant.</B.BODY
  89279. ></LABEL
  89280. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89281. >Examples</L.LABEL
  89282. ><B.BODY>The following examples show how the Attribute Access fields (Read&truehy;Write) affect code generation for the name attribute.</B.BODY
  89283. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00796.unk" origfile="pics/cust.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89284. ></FA.FIGURE.ANCHOR
  89285. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89286. >Public&truehy;Public (default)</SL.SUBLABEL
  89287. ><B.BODY></B.BODY
  89288. ><EM.EXAMPLE.MONO>string name</EM.EXAMPLE.MONO
  89289. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89290. >Public&truehy;Protected</SL.SUBLABEL
  89291. ><B.BODY></B.BODY
  89292. ><EM.EXAMPLE.MONO>protectedwrite string name</EM.EXAMPLE.MONO
  89293. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89294. >Public&truehy;Private</SL.SUBLABEL
  89295. ><B.BODY></B.BODY
  89296. ><EM.EXAMPLE.MONO>privatewrite string name</EM.EXAMPLE.MONO
  89297. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89298. >Protected&truehy;Public</SL.SUBLABEL
  89299. ><B.BODY></B.BODY
  89300. ><EM.EXAMPLE.MONO>protected string name</EM.EXAMPLE.MONO
  89301. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89302. >Protected&truehy;Protected</SL.SUBLABEL
  89303. ><B.BODY></B.BODY
  89304. ><EM.EXAMPLE.MONO>protected string name</EM.EXAMPLE.MONO
  89305. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89306. >Protected&truehy;Private</SL.SUBLABEL
  89307. ><B.BODY></B.BODY
  89308. ><EM.EXAMPLE.MONO>protected privatewrite string name</EM.EXAMPLE.MONO
  89309. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89310. >Private&truehy;Public</SL.SUBLABEL
  89311. ><B.BODY></B.BODY
  89312. ><EM.EXAMPLE.MONO>private string name</EM.EXAMPLE.MONO
  89313. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89314. >Private&truehy;Protected</SL.SUBLABEL
  89315. ><B.BODY></B.BODY
  89316. ><EM.EXAMPLE.MONO>private string name</EM.EXAMPLE.MONO
  89317. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89318. >Private&truehy;Private</SL.SUBLABEL
  89319. ><B.BODY></B.BODY
  89320. ><EM.EXAMPLE.MONO>private string name</EM.EXAMPLE.MONO
  89321. ></LABEL
  89322. ></SUBSECTION
  89323. ></SECTION
  89324. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="14596"></RBW-ANCHOR
  89325. >Mapping Operations</S.SECTION.HEAD
  89326. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89327. >Introduction</L.LABEL
  89328. ><B.BODY><RBW-IDXTERM TERM1="procedure" TERM2="mapping of"></RBW-IDXTERM
  89329. ><RBW-IDXTERM TERM1="mapping" TERM2="procedure"></RBW-IDXTERM
  89330. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="procedures"></RBW-IDXTERM
  89331. >Operations defined for an ObjectTeam class map to either a function or an event in the generated PowerBuilder object.</B.BODY
  89332. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89333. ></RBW-AUTOGEN
  89334. ></RBW-MARKER
  89335. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Functions.</CX5FX5FBULLET.EMPHASIS
  89336. > By default, an operation maps to a function. If the operation has a return type, the function has a return value; otherwise, it does not.</RBW-PARABODY
  89337. ></LB.LIST.BULLET
  89338. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89339. ></RBW-AUTOGEN
  89340. ></RBW-MARKER
  89341. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Events.</CX5FX5FBULLET.EMPHASIS
  89342. > If the Event property of an operation is selected, as described in <RBW-XREF REFID="19182" TYPE="XREF-TEXTCOPY">Editing Operation Properties</RBW-XREF
  89343. >, the operation maps to an event.</RBW-PARABODY
  89344. ></LB.LIST.BULLET
  89345. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  89346. ></RBW-AUTOGEN
  89347. >Functions are only generated if the Global Type property of the class is set to Yes. See <RBW-XREF REFID="39809" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  89348. > for more information about the Global Type property.</N.NOTE
  89349. ></LABEL
  89350. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89351. >Operation syntax</L.LABEL
  89352. ><B.BODY>In ObjectTeam, you use the following syntax to specify operations for a class:</B.BODY
  89353. ><E.EXAMPLE>[ $ ] name ( [ parameter&truehy;list ] ) [ : return_type ] [ {abstract} ]</E.EXAMPLE
  89354. ><B.BODY>where</B.BODY
  89355. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89356. ></RBW-AUTOGEN
  89357. ></RBW-MARKER
  89358. ><RBW-PARABODY>$ indicates a class operation. PowerBuilder does not support shared operations; therefore, this indicator is ignored by the code generator.<RBW-IDXTERM TERM1="class" TERM2="procedure"></RBW-IDXTERM
  89359. ><RBW-IDXTERM TERM1="procedure" TERM2="class procedure"></RBW-IDXTERM
  89360. ><RBW-IDXTERM TERM1="$ (class procedure)"></RBW-IDXTERM
  89361. ></RBW-PARABODY
  89362. ></LB.LIST.BULLET
  89363. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89364. ></RBW-AUTOGEN
  89365. ></RBW-MARKER
  89366. ><RBW-PARABODY><CX5FX5FVARIABLE>name</CX5FX5FVARIABLE
  89367. > is the operation name.</RBW-PARABODY
  89368. ></LB.LIST.BULLET
  89369. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  89370. ></RBW-AUTOGEN
  89371. >The parentheses following the operation name are mandatory, even if the operation has no parameters.</N2.NOTE.2
  89372. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89373. ></RBW-AUTOGEN
  89374. ></RBW-MARKER
  89375. ><RBW-PARABODY><CX5FX5FVARIABLE>parameter&truehy;list</CX5FX5FVARIABLE
  89376. > is a comma&truehy;separated list of parameters, where each parameter is specified as follows:</RBW-PARABODY
  89377. ></LB.LIST.BULLET
  89378. ><EM.EXAMPLE.MONO>parameter_name : data_type</EM.EXAMPLE.MONO
  89379. ><LT.LIST.TEXT>The <CX5FX5FVARIABLE>data_type</CX5FX5FVARIABLE
  89380. > of a parameter is either a standard type or a class modeled in the CD. Specifying the data type of a parameter is similar to specifying the data type of an attribute (see <RBW-XREF REFID="19428" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  89381. >).</LT.LIST.TEXT
  89382. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89383. ></RBW-AUTOGEN
  89384. ></RBW-MARKER
  89385. ><RBW-PARABODY><CX5FX5FVARIABLE>return_type</CX5FX5FVARIABLE
  89386. > is either a standard type or a class modeled in the CD. Specifying the return type for a function is similar to specifying the data type of an attribute (see <RBW-XREF REFID="19428" TYPE="XREF-TEXTCOPY">Specifying Attribute Data Types</RBW-XREF
  89387. >).</RBW-PARABODY
  89388. ></LB.LIST.BULLET
  89389. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89390. ></RBW-AUTOGEN
  89391. ></RBW-MARKER
  89392. ><RBW-PARABODY>{abstract} indicates an abstract operation. PowerBuilder does not support abstract operations; therefore, this indicator is ignored by the code generator.</RBW-PARABODY
  89393. ></LB.LIST.BULLET
  89394. ></LABEL
  89395. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89396. ><RBW-ANCHOR ID="18902"></RBW-ANCHOR
  89397. >Example</L.LABEL
  89398. ><B.BODY>The following code excerpt shows the default translation of two operations on the customer class:</B.BODY
  89399. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00797.unk" origfile="pics/cust2.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89400. ></FA.FIGURE.ANCHOR
  89401. ><EM.EXAMPLE.MONO>public function integer check_credit ();</EM.EXAMPLE.MONO
  89402. ><EM.EXAMPLE.MONO>// Implement this function !!</EM.EXAMPLE.MONO
  89403. ><EM.EXAMPLE.MONO>integer dummy</EM.EXAMPLE.MONO
  89404. ><EM.EXAMPLE.MONO>return dummy</EM.EXAMPLE.MONO
  89405. ><EM.EXAMPLE.MONO>end function</EM.EXAMPLE.MONO
  89406. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89407. ><EM.EXAMPLE.MONO>public subroutine print (integer copies);</EM.EXAMPLE.MONO
  89408. ><EM.EXAMPLE.MONO>// Implement this function !!</EM.EXAMPLE.MONO
  89409. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89410. ></LABEL
  89411. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89412. >Properties</L.LABEL
  89413. ><B.BODY>You use properties on operations and their parameters to provide input to the code generator. The following sections describe how to edit these properties, and the effect of each property.</B.BODY
  89414. ></LABEL
  89415. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89416. >Association accessor functions</L.LABEL
  89417. ><B.BODY>The PowerBuilder code generator also generates association accessor functions, as described in <RBW-XREF REFID="27062" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  89418. >. (You do not specify these functions as operations on the ObjectTeam class.)</B.BODY
  89419. ></LABEL
  89420. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89421. >In this section</L.LABEL
  89422. ><B.BODY>This section contains the following topics:</B.BODY
  89423. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  89424. ></ENTRY
  89425. ></RBW-ROW
  89426. ></THEAD
  89427. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19182" TYPE="XREF-TEXTCOPY">Editing Operation Properties&rbwtab;3–18</RBW-XREF
  89428. ></SB.SECTION.BLOCK.TABLE
  89429. ></ENTRY
  89430. ></RBW-ROW
  89431. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19034" TYPE="XREF-TEXTCOPY">Editing Parameter Properties&rbwtab;3–22</RBW-XREF
  89432. ></SB.SECTION.BLOCK.TABLE
  89433. ></ENTRY
  89434. ></RBW-ROW
  89435. ></TBODY
  89436. ></TGROUP
  89437. ></RBW-TABLE
  89438. ></LABEL
  89439. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19182"></RBW-ANCHOR
  89440. >Editing Operation Properties</SS.SUBSEC.HEAD
  89441. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89442. >Introduction</L.LABEL
  89443. ><B.BODY>In the Object Design phase, you define operation properties to specify operation access and whether the operation should be generated as an event.</B.BODY
  89444. ></LABEL
  89445. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89446. >How to edit operation properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for operation"></RBW-IDXTERM
  89447. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89448. ><RBW-IDXTERM TERM1="operation property" TERM2="editing"></RBW-IDXTERM
  89449. ></L.LABEL
  89450. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  89451. ></RBW-AUTOGEN
  89452. ></RBW-MARKER
  89453. ><RBW-PARABODY>To edit operation properties:</RBW-PARABODY
  89454. ></P.PROCEDURE
  89455. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  89456. ></RBW-AUTOGEN
  89457. ></RBW-MARKER
  89458. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  89459. ></LN.LIST.NUM
  89460. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  89461. ></RBW-AUTOGEN
  89462. ></RBW-MARKER
  89463. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  89464. ></LN.LIST.NUM
  89465. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  89466. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  89467. ></RBW-AUTOGEN
  89468. ></RBW-MARKER
  89469. ><RBW-PARABODY>Select an operation name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  89470. ></LN.LIST.NUM
  89471. ><LR.LIST.RESULT>The operation properties appear on the right side of the dialog box.</LR.LIST.RESULT
  89472. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00798.unk" origfile="pics/operprop.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89473. ></FA2.FIGURE.ANCHOR.2
  89474. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  89475. ></RBW-AUTOGEN
  89476. ></RBW-MARKER
  89477. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  89478. ></LN.LIST.NUM
  89479. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89480. ></RBW-MARKER
  89481. ><RBW-PARABODY>Use the Method Access field to specify the read/write access for the method, as described in <RBW-XREF REFID="29675" TYPE="XREF-TEXTCOPY">Specifying Method Access</RBW-XREF
  89482. >.</RBW-PARABODY
  89483. ></LB2.LIST.BULLET.2
  89484. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89485. ></RBW-MARKER
  89486. ><RBW-PARABODY>Use the Event check box to indicate that the operation should be generated as an event rather than a function.</RBW-PARABODY
  89487. ></LB2.LIST.BULLET.2
  89488. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89489. ></RBW-MARKER
  89490. ><RBW-PARABODY>Use the Text tab to enter comment text. This text does not appear in generated code.<RBW-IDXTERM TERM1="comment" TERM2="for operation"></RBW-IDXTERM
  89491. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89492. ><RBW-IDXTERM TERM1="operation property" TERM2="for comment"></RBW-IDXTERM
  89493. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89494. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="comment, for  procedures"></RBW-IDXTERM
  89495. ></RBW-PARABODY
  89496. ></LB2.LIST.BULLET.2
  89497. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  89498. ></RBW-AUTOGEN
  89499. ></RBW-MARKER
  89500. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  89501. ></LN.LIST.NUM
  89502. ></LABEL
  89503. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89504. >Example</L.LABEL
  89505. ><B.BODY>In the example at the beginning of this section (see <RBW-XREF REFID="18902" TYPE="XREF-TEXTCOPY">Example</RBW-XREF
  89506. >), the Method Access property for both operations is set to public (the default). In the following example, the Method Access property for the checkCredit operation is set to protected and the Method Access property for the print operation is set to private.</B.BODY
  89507. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00799.unk" origfile="pics/cust2.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89508. ></FA.FIGURE.ANCHOR
  89509. ><EM.EXAMPLE.MONO>protected function integer check_credit ();</EM.EXAMPLE.MONO
  89510. ><EM.EXAMPLE.MONO>// Implement this function !!</EM.EXAMPLE.MONO
  89511. ><EM.EXAMPLE.MONO>integer dummy</EM.EXAMPLE.MONO
  89512. ><EM.EXAMPLE.MONO>return dummy</EM.EXAMPLE.MONO
  89513. ><EM.EXAMPLE.MONO>end function</EM.EXAMPLE.MONO
  89514. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89515. ><EM.EXAMPLE.MONO>private subroutine print (integer copies);</EM.EXAMPLE.MONO
  89516. ><EM.EXAMPLE.MONO>// Implement this function !!</EM.EXAMPLE.MONO
  89517. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89518. ></LABEL
  89519. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89520. >Event example</L.LABEL
  89521. ><B.BODY>In the following example, the Event check box is selected for both operations.</B.BODY
  89522. ><EM.EXAMPLE.MONO>global type customer from userobject</EM.EXAMPLE.MONO
  89523. ><EM.EXAMPLE.MONO>...</EM.EXAMPLE.MONO
  89524. ><EM.EXAMPLE.MONO>event type integer check_credit ()</EM.EXAMPLE.MONO
  89525. ><EM.EXAMPLE.MONO>event print (integer copies)</EM.EXAMPLE.MONO
  89526. ><EM.EXAMPLE.MONO>end type</EM.EXAMPLE.MONO
  89527. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89528. ><EM.EXAMPLE.MONO>event check_credit;</EM.EXAMPLE.MONO
  89529. ><EM.EXAMPLE.MONO>// Implement this event !!</EM.EXAMPLE.MONO
  89530. ><EM.EXAMPLE.MONO>integer dummy</EM.EXAMPLE.MONO
  89531. ><EM.EXAMPLE.MONO>return dummy</EM.EXAMPLE.MONO
  89532. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  89533. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89534. ><EM.EXAMPLE.MONO>event print;</EM.EXAMPLE.MONO
  89535. ><EM.EXAMPLE.MONO>// Implement this event !!</EM.EXAMPLE.MONO
  89536. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  89537. ></LABEL
  89538. ></SUBSECTION
  89539. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29675"></RBW-ANCHOR
  89540. >Specifying Method Access</SS.SUBSEC.HEAD
  89541. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89542. >Introduction</L.LABEL
  89543. ><B.BODY><RBW-IDXTERM TERM1="attribute" TERM2="access method"></RBW-IDXTERM
  89544. ><RBW-IDXTERM TERM1="attribute property" TERM2="access method"></RBW-IDXTERM
  89545. ><RBW-IDXTERM TERM1="access property" TERM2="for attribute access method"></RBW-IDXTERM
  89546. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89547. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="attribute access method"></RBW-IDXTERM
  89548. ><RBW-IDXTERM TERM1="attribute access method"></RBW-IDXTERM
  89549. ><RBW-IDXTERM TERM1="method" TERM2="attribute access"></RBW-IDXTERM
  89550. >The values you specify in the Method Access field on the Misc tab of the Edit Properties dialog box determine wether the generated function is one of the following:</B.BODY
  89551. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89552. ></RBW-AUTOGEN
  89553. ></RBW-MARKER
  89554. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default)</CX5FX5FBULLET.EMPHASIS
  89555. >. A public function is accessible anywhere within the program.</RBW-PARABODY
  89556. ></LB.LIST.BULLET
  89557. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89558. ></RBW-AUTOGEN
  89559. ></RBW-MARKER
  89560. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected</CX5FX5FBULLET.EMPHASIS
  89561. >. A protected function behaves as a <CX5FX5FEMPHASIS>public</CX5FX5FEMPHASIS
  89562. > function to a derived class but as a <CX5FX5FEMPHASIS>private</CX5FX5FEMPHASIS
  89563. > function to the rest of the program.</RBW-PARABODY
  89564. ></LB.LIST.BULLET
  89565. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89566. ></RBW-AUTOGEN
  89567. ></RBW-MARKER
  89568. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private</CX5FX5FBULLET.EMPHASIS
  89569. >. A private function can only be accessed by the other functions of its class.</RBW-PARABODY
  89570. ></LB.LIST.BULLET
  89571. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  89572. ></RBW-AUTOGEN
  89573. >If the Event check box is selected, the Method Access field is ignored.<RBW-IDXTERM TERM1="operation property" TERM2="access"></RBW-IDXTERM
  89574. ><RBW-IDXTERM TERM1="access property" TERM2="for operation"></RBW-IDXTERM
  89575. ></N.NOTE
  89576. ></LABEL
  89577. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89578. ><RBW-ANCHOR ID="31329"></RBW-ANCHOR
  89579. >Visibility</L.LABEL
  89580. ><B.BODY>You can display the access level of methods in your diagram by checking Options | Show Visibility in the Class Diagram Editor. Method names will then be displayed with the following leading characters indicating the method’s access level:</B.BODY
  89581. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="130p"><COLSPEC COLNAME="2" COLWIDTH="318p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Special character</CELLHEADING
  89582. ></ENTRY
  89583. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Indicates</CELLHEADING
  89584. ></ENTRY
  89585. ></RBW-ROW
  89586. ></THEAD
  89587. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>+</CELLBODY
  89588. ></ENTRY
  89589. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  89590. ></ENTRY
  89591. ></RBW-ROW
  89592. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>#</CELLBODY
  89593. ></ENTRY
  89594. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Protected</CELLBODY
  89595. ></ENTRY
  89596. ></RBW-ROW
  89597. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>&truehy;</CELLBODY
  89598. ></ENTRY
  89599. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Private</CELLBODY
  89600. ></ENTRY
  89601. ></RBW-ROW
  89602. ></TBODY
  89603. ></TGROUP
  89604. ></RBW-TABLE
  89605. ><B.BODY>These special characters can also be used to <CX5FX5FEMPHASIS>set</CX5FX5FEMPHASIS
  89606. > the access level of methods. Typing a minus sign (&truehy;) before a method name will set the access level of the method to Private, for example. </B.BODY
  89607. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  89608. ></RBW-AUTOGEN
  89609. >The special characters only work if the menu entry Options | Show Visibility in the Class Diagram Editor has been checked. Otherwise, the special characters will just be regarded as part of the method name.</W.WARNING
  89610. ></LABEL
  89611. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89612. >Examples</L.LABEL
  89613. ><B.BODY>The following examples show how the Method Access field affect code generation for the print method.</B.BODY
  89614. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00800.unk" origfile="pics/cust2.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89615. ></FA.FIGURE.ANCHOR
  89616. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Public (default):</CX5FX5FBULLET.EMPHASIS
  89617. ></B.BODY
  89618. ><EM.EXAMPLE.MONO>public subroutine print (integer copies)</EM.EXAMPLE.MONO
  89619. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Protected:</CX5FX5FBULLET.EMPHASIS
  89620. ></B.BODY
  89621. ><EM.EXAMPLE.MONO>protected subroutine print (integer copies)</EM.EXAMPLE.MONO
  89622. ><B.BODY><CX5FX5FBULLET.EMPHASIS>Private:</CX5FX5FBULLET.EMPHASIS
  89623. ></B.BODY
  89624. ><EM.EXAMPLE.MONO>private subroutine print (integer copies)</EM.EXAMPLE.MONO
  89625. ></LABEL
  89626. ></SUBSECTION
  89627. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19034"></RBW-ANCHOR
  89628. >Editing Parameter Properties</SS.SUBSEC.HEAD
  89629. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89630. >Introduction</L.LABEL
  89631. ><B.BODY>In the Object Design phase, you define properties of operation parameters to specify how the parameter is passed.</B.BODY
  89632. ></LABEL
  89633. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89634. >How to edit parameter properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for parameter"></RBW-IDXTERM
  89635. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  89636. ><RBW-IDXTERM TERM1="parameter property" TERM2="editing"></RBW-IDXTERM
  89637. ></L.LABEL
  89638. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  89639. ></RBW-AUTOGEN
  89640. ></RBW-MARKER
  89641. ><RBW-PARABODY>To edit parameter properties:</RBW-PARABODY
  89642. ></P.PROCEDURE
  89643. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  89644. ></RBW-AUTOGEN
  89645. ></RBW-MARKER
  89646. ><RBW-PARABODY>Select a class symbol in the CD.</RBW-PARABODY
  89647. ></LN.LIST.NUM
  89648. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  89649. ></RBW-AUTOGEN
  89650. ></RBW-MARKER
  89651. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  89652. ></LN.LIST.NUM
  89653. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  89654. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  89655. ></RBW-AUTOGEN
  89656. ></RBW-MARKER
  89657. ><RBW-PARABODY>Select a parameter name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  89658. ></LN.LIST.NUM
  89659. ><LR.LIST.RESULT>The parameter properties appear on the right side of the dialog box.</LR.LIST.RESULT
  89660. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00801.unk" origfile="pics/parmprop.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89661. ></FA2.FIGURE.ANCHOR.2
  89662. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  89663. ></RBW-AUTOGEN
  89664. ></RBW-MARKER
  89665. ><RBW-PARABODY>Select the desired properties: </RBW-PARABODY
  89666. ></LN.LIST.NUM
  89667. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89668. ></RBW-MARKER
  89669. ><RBW-PARABODY>Use the Pass By field to specify how the parameter should be passed to the function: by value (default), by reference, or as a readonly parameter.</RBW-PARABODY
  89670. ></LB2.LIST.BULLET.2
  89671. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89672. ></RBW-MARKER
  89673. ><RBW-PARABODY>Use the Text tab to enter a description of the parameter. This text does not appear in the generated code.</RBW-PARABODY
  89674. ></LB2.LIST.BULLET.2
  89675. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  89676. ></RBW-AUTOGEN
  89677. ></RBW-MARKER
  89678. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  89679. ></LN.LIST.NUM
  89680. ></LABEL
  89681. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89682. >Examples</L.LABEL
  89683. ><BI.BODY.INTRO>The following examples show how the Pass By field affects code generation of the print subroutine and its copies parameter.</BI.BODY.INTRO
  89684. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89685. >Value (default)</SL.SUBLABEL
  89686. ><B.BODY></B.BODY
  89687. ><EM.EXAMPLE.MONO>private subroutine print (integer copies);</EM.EXAMPLE.MONO
  89688. ><EM.EXAMPLE.MONO>// Implement this function !!</EM.EXAMPLE.MONO
  89689. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89690. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89691. >Reference</SL.SUBLABEL
  89692. ><B.BODY></B.BODY
  89693. ><EM.EXAMPLE.MONO>public subroutine print (ref integer copies);</EM.EXAMPLE.MONO
  89694. ><EM.EXAMPLE.MONO>// Implement this function !!</EM.EXAMPLE.MONO
  89695. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89696. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89697. >Readonly</SL.SUBLABEL
  89698. ><B.BODY></B.BODY
  89699. ><EM.EXAMPLE.MONO>public subroutine print (readonly integer copies);</EM.EXAMPLE.MONO
  89700. ><EM.EXAMPLE.MONO>// Implement this function !!</EM.EXAMPLE.MONO
  89701. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89702. ></LABEL
  89703. ></SUBSECTION
  89704. ></SECTION
  89705. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28744"></RBW-ANCHOR
  89706. >Mapping Inheritance</S.SECTION.HEAD
  89707. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89708. >Single inheritance only</L.LABEL
  89709. ><B.BODY><RBW-IDXTERM TERM1="mapping" TERM2="class inheritance"></RBW-IDXTERM
  89710. ><RBW-IDXTERM TERM1="inheritance" TERM2="class"></RBW-IDXTERM
  89711. ><RBW-IDXTERM TERM1="class" TERM2="inheritance"></RBW-IDXTERM
  89712. >Both ObjectTeam and PowerBuilder provide full support for single inheritance. PowerBuilder does not support mulitple inheritance; therefore, the PowerBuilder code generator displays an error if an ObjectTeam class has more than one supertype class.</B.BODY
  89713. ></LABEL
  89714. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89715. >Disjoint and overlapping inheritance</L.LABEL
  89716. ><B.BODY><RBW-IDXTERM TERM1="disjoint inheritance"></RBW-IDXTERM
  89717. ><RBW-IDXTERM TERM1="overlapping inheritance"></RBW-IDXTERM
  89718. >In ObjectTeam, you can specify either disjoint or overlapping inheritance. The PowerBuilder code generator generates the code for disjoint inheritance, regardless of which symbol you use.</B.BODY
  89719. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Disjoint</CELLHEADING
  89720. ></ENTRY
  89721. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Overlapping</CELLHEADING
  89722. ></ENTRY
  89723. ></RBW-ROW
  89724. ></THEAD
  89725. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00802.unk" origfile="pics/hierdisj.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89726. ></CG.CELLBODY.GRAPHIC
  89727. ></ENTRY
  89728. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CG.CELLBODY.GRAPHIC><RBW-GRAPHIC filename="00803.unk" origfile="pics/hierover.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89729. ></CG.CELLBODY.GRAPHIC
  89730. ></ENTRY
  89731. ></RBW-ROW
  89732. ></TBODY
  89733. ></TGROUP
  89734. ></RBW-TABLE
  89735. ></LABEL
  89736. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89737. >Example</L.LABEL
  89738. ><B.BODY>The following code excerpt shows how the code generated for the rectangle subclass references the shape superclass.</B.BODY
  89739. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00804.unk" origfile="pics/inher.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89740. ></FA.FIGURE.ANCHOR
  89741. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89742. >Shape</SL.SUBLABEL
  89743. ><B.BODY>The following code excerpt is generated for the shape class.</B.BODY
  89744. ><EM.EXAMPLE.MONO>global type shape from nonvisualobject</EM.EXAMPLE.MONO
  89745. ><EM.EXAMPLE.MONO>end type</EM.EXAMPLE.MONO
  89746. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89747. ><EM.EXAMPLE.MONO>// User defined attributes</EM.EXAMPLE.MONO
  89748. ><EM.EXAMPLE.MONO>real area</EM.EXAMPLE.MONO
  89749. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89750. ><EM.EXAMPLE.MONO>public subroutine print ();</EM.EXAMPLE.MONO
  89751. ><EM.EXAMPLE.MONO>// Implement this function !!</EM.EXAMPLE.MONO
  89752. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89753. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89754. >Rectangle</SL.SUBLABEL
  89755. ><B.BODY>The following code excerpt is generated for the rectangle class.</B.BODY
  89756. ><EM.EXAMPLE.MONO>global type rectangle from shape</EM.EXAMPLE.MONO
  89757. ><EM.EXAMPLE.MONO>end type</EM.EXAMPLE.MONO
  89758. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89759. ><EM.EXAMPLE.MONO>// User defined attributes</EM.EXAMPLE.MONO
  89760. ><EM.EXAMPLE.MONO>real height</EM.EXAMPLE.MONO
  89761. ><EM.EXAMPLE.MONO>real width</EM.EXAMPLE.MONO
  89762. ></LABEL
  89763. ></SECTION
  89764. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="14358"></RBW-ANCHOR
  89765. >Mapping Associations</S.SECTION.HEAD
  89766. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89767. >Introduction</L.LABEL
  89768. ><B.BODY>An ObjectTeam association maps to a PowerBuilder variable and a set of accessor functions that maintain the variable.</B.BODY
  89769. ></LABEL
  89770. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89771. >Restrictions</L.LABEL
  89772. ><B.BODY>If the Global Type property of an ObjectTeam class is set to No, the code generator ignores the associations of the class. See <RBW-XREF REFID="39809" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  89773. > for more information about the Global Type property.</B.BODY
  89774. ><B.BODY>The constructor event of the generated PowerBuilder object is used to initialize the association variable. To allow associations for windows, the code generator creates a constructor event for the window and uses the window’s open event to trigger the window’s constructor event.</B.BODY
  89775. ></LABEL
  89776. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89777. >Supported associations</L.LABEL
  89778. ><B.BODY><RBW-IDXTERM TERM1="mapping" TERM2="association"></RBW-IDXTERM
  89779. ><RBW-IDXTERM TERM1="association" TERM2="mapping of"></RBW-IDXTERM
  89780. >ObjectTeam and the PowerBuilder code generator support the following:</B.BODY
  89781. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89782. ></RBW-AUTOGEN
  89783. ></RBW-MARKER
  89784. ><RBW-PARABODY>Binary association (associations between two classes)</RBW-PARABODY
  89785. ></LB.LIST.BULLET
  89786. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89787. ></RBW-AUTOGEN
  89788. ></RBW-MARKER
  89789. ><RBW-PARABODY>Qualified associations (associations that include a qualifier)</RBW-PARABODY
  89790. ></LB.LIST.BULLET
  89791. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89792. ></RBW-AUTOGEN
  89793. ></RBW-MARKER
  89794. ><RBW-PARABODY>Link attributes (attributes used to define an association)</RBW-PARABODY
  89795. ></LB.LIST.BULLET
  89796. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89797. ></RBW-AUTOGEN
  89798. ></RBW-MARKER
  89799. ><RBW-PARABODY>Association as class (class used to define an association)</RBW-PARABODY
  89800. ></LB.LIST.BULLET
  89801. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89802. ><RBW-IDXTERM TERM1="n-ary association"></RBW-IDXTERM
  89803. ><RBW-IDXTERM TERM1="association" TERM2="n-ary"></RBW-IDXTERM
  89804. >N&truehy;ary associations</SL.SUBLABEL
  89805. ><B.BODY>N&truehy;ary associations are ignored by the PowerBuilder code generator. Code is generated for the classes involved, but no code is generated for the n&truehy;ary association.</B.BODY
  89806. ></LABEL
  89807. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89808. >Optionality</L.LABEL
  89809. ><B.BODY>If a class has a mandatory association, the constructor for the class <CX5FX5FEMPHASIS>should</CX5FX5FEMPHASIS
  89810. > ensure that it is related to an instance of the associated class. PowerBuilder’s constructors do not support parameters; therefore, in the current release of the PowerBuilder generator, the generated class constructor does <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  89811. > initialize mandatory associations.</B.BODY
  89812. ></LABEL
  89813. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89814. >Aggregations</L.LABEL
  89815. ><B.BODY><RBW-IDXTERM TERM1="aggregation"></RBW-IDXTERM
  89816. >The PowerBuilder code generator translates aggregations like associations, unless the aggregrations are being used to model object containment. See Chapter 4, Modeling the Visual Interface, for more information about using aggregations to model container objects.</B.BODY
  89817. ></LABEL
  89818. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89819. >Ordered associations</L.LABEL
  89820. ><B.BODY>The {ordered} indicator on an association is ignored by the PowerBuilder code generator. In lists of associations generated by the PowerBuilder code generator, new elements are always added to the front of the list.</B.BODY
  89821. ></LABEL
  89822. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89823. >In this section</L.LABEL
  89824. ><B.BODY>This section contains the following topics:</B.BODY
  89825. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  89826. ></ENTRY
  89827. ></RBW-ROW
  89828. ></THEAD
  89829. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27062" TYPE="XREF-TEXTCOPY">Mapping Simple Associations&rbwtab;3–28</RBW-XREF
  89830. ></SB.SECTION.BLOCK.TABLE
  89831. ></ENTRY
  89832. ></RBW-ROW
  89833. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11388" TYPE="XREF-TEXTCOPY">Mapping Associations With Multiplicity of Many&rbwtab;3–32</RBW-XREF
  89834. ></SB.SECTION.BLOCK.TABLE
  89835. ></ENTRY
  89836. ></RBW-ROW
  89837. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="36884" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations&rbwtab;3–35</RBW-XREF
  89838. ></SB.SECTION.BLOCK.TABLE
  89839. ></ENTRY
  89840. ></RBW-ROW
  89841. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20798" TYPE="XREF-TEXTCOPY">Mapping Link Attributes and Classes as Associations&rbwtab;3–39</RBW-XREF
  89842. ></SB.SECTION.BLOCK.TABLE
  89843. ></ENTRY
  89844. ></RBW-ROW
  89845. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16465" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Associations&rbwtab;3–43</RBW-XREF
  89846. ></SB.SECTION.BLOCK.TABLE
  89847. ></ENTRY
  89848. ></RBW-ROW
  89849. ></TBODY
  89850. ></TGROUP
  89851. ></RBW-TABLE
  89852. ></LABEL
  89853. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="27062"></RBW-ANCHOR
  89854. >Mapping Simple Associations</SS.SUBSEC.HEAD
  89855. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89856. >Introduction</L.LABEL
  89857. ><B.BODY>This section describes how the PowerBuilder code generator implements the following simple associations between the customer class and the book class.</B.BODY
  89858. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89859. >Unidirectional association</SL.SUBLABEL
  89860. ><B.BODY></B.BODY
  89861. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00805.unk" origfile="pics/asscuni.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89862. ></FA.FIGURE.ANCHOR
  89863. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89864. >Bidirectional association</SL.SUBLABEL
  89865. ><B.BODY></B.BODY
  89866. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00806.unk" origfile="pics/asscbi.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  89867. ></FA.FIGURE.ANCHOR
  89868. ></LABEL
  89869. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89870. >Unidirectional and bidirectional</L.LABEL
  89871. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="unidirectional"></RBW-IDXTERM
  89872. ><RBW-IDXTERM TERM1="unidirectional association"></RBW-IDXTERM
  89873. ><RBW-IDXTERM TERM1="association" TERM2="bidirectional"></RBW-IDXTERM
  89874. ><RBW-IDXTERM TERM1="bidirectional association"></RBW-IDXTERM
  89875. ><RBW-IDXTERM TERM1="one-to-one association"></RBW-IDXTERM
  89876. ><RBW-IDXTERM TERM1="association" TERM2="one-to-one"></RBW-IDXTERM
  89877. >The direction of an association is defined by the role names on the association. A role name at the far end of the association indicates an association from the class at the near end to the class at the far end.</B.BODY
  89878. ><B.BODY>If an association has a role name at only one end, it is a <CX5FX5FEMPHASIS>unidirectional</CX5FX5FEMPHASIS
  89879. > association (implemented in one direction). If an association has role names at both ends, it is a <CX5FX5FEMPHASIS>bidirectional</CX5FX5FEMPHASIS
  89880. > association (implemented in both directions).</B.BODY
  89881. ></LABEL
  89882. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89883. >Mapping a unidirectional association</L.LABEL
  89884. ><B.BODY><RBW-IDXTERM TERM1="Visual Basic" TERM2="association attribute"></RBW-IDXTERM
  89885. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="association attribute access method"></RBW-IDXTERM
  89886. >The PowerBuilder code generator implements a unidirectional association by adding an <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  89887. > and a set of <CX5FX5FEMPHASIS>association accessor methods</CX5FX5FEMPHASIS
  89888. > to the code generated for the class at the near end of the association. This allows the class at the near of the association (customer) to access the class at the far end (book); the class at the far end of the association cannot access the class at the near end.</B.BODY
  89889. ></LABEL
  89890. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89891. >Mapping a bidirectional association</L.LABEL
  89892. ><B.BODY>The PowerBuilder code generator implements a bidirectional association by adding an <CX5FX5FEMPHASIS>association attribute</CX5FX5FEMPHASIS
  89893. > and a set of <CX5FX5FEMPHASIS>association accessor methods</CX5FX5FEMPHASIS
  89894. > to the code generated for both classes. This allows each class to access the other. To ensure integrity of a bidirectional association, the update method for a bidirectional association always maintains the association in both directions.</B.BODY
  89895. ></LABEL
  89896. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89897. >Association attributes</L.LABEL
  89898. ><B.BODY><RBW-IDXTERM TERM1="association attribute"></RBW-IDXTERM
  89899. ><RBW-IDXTERM TERM1="attribute" TERM2="association attribute"></RBW-IDXTERM
  89900. ><RBW-IDXTERM TERM1="association attribute access method"></RBW-IDXTERM
  89901. ><RBW-IDXTERM TERM1="method" TERM2="association attribute access"></RBW-IDXTERM
  89902. >The ObjectTeam documentation and generated PowerBuilder code use the term <CX5FX5FTERM>association attributes</CX5FX5FTERM
  89903. > to refer to data attributes generated to support ObjectTeam associations (as opposed to data attributes generated from ObjectTeam attributes). In PowerBuilder, an association attribute is simply another data attribute.</B.BODY
  89904. ></LABEL
  89905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89906. >Association accessor methods</L.LABEL
  89907. ><B.BODY>The <CX5FX5FTERM>association accessor methods</CX5FX5FTERM
  89908. > use the association attributes to implement and maintain the associations between the classes. By default, the code generator creates public methods that read and update the association (association attributes). However, you can use the Association Access property of the association to change this default behavior, as described in <RBW-XREF REFID="16465" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Associations</RBW-XREF
  89909. >.</B.BODY
  89910. ></LABEL
  89911. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89912. >Example of a unidirectional association</L.LABEL
  89913. ><B.BODY>Following is an excerpt from the code generated for the customer class in the unidirectional association. Because this is a unidirectional association, the book class does not contain any code related to the association.</B.BODY
  89914. ><B.BODY>Notice the following:</B.BODY
  89915. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89916. ></RBW-AUTOGEN
  89917. ></RBW-MARKER
  89918. ><RBW-PARABODY>The association attribute, customer.possession, defines the association between the customer and the book. The constructor initializes the association attribute.</RBW-PARABODY
  89919. ></LB.LIST.BULLET
  89920. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89921. ></RBW-AUTOGEN
  89922. ></RBW-MARKER
  89923. ><RBW-PARABODY>The remove, set, and get functions manage the association:</RBW-PARABODY
  89924. ></LB.LIST.BULLET
  89925. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89926. ></RBW-MARKER
  89927. ><RBW-PARABODY>The removePossession function can be used to remove the association — the customer no longer owns the book.</RBW-PARABODY
  89928. ></LB2.LIST.BULLET.2
  89929. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89930. ></RBW-MARKER
  89931. ><RBW-PARABODY>The setPossession function can be used to add the association — the customer purchases the book.</RBW-PARABODY
  89932. ></LB2.LIST.BULLET.2
  89933. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  89934. ></RBW-MARKER
  89935. ><RBW-PARABODY>The getPossession function can be used to retrieve the association — which book (if any) the customer owns.</RBW-PARABODY
  89936. ></LB2.LIST.BULLET.2
  89937. ><EM.EXAMPLE.MONO>// Association attributes</EM.EXAMPLE.MONO
  89938. ><EM.EXAMPLE.MONO>private book possession</EM.EXAMPLE.MONO
  89939. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89940. ><EM.EXAMPLE.MONO>public subroutine removePossession ();</EM.EXAMPLE.MONO
  89941. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  89942. ><EM.EXAMPLE.MONO>setNull(possession)</EM.EXAMPLE.MONO
  89943. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89944. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89945. ><EM.EXAMPLE.MONO>public subroutine setPossession (book newPossession);</EM.EXAMPLE.MONO
  89946. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  89947. ><EM.EXAMPLE.MONO>possession = newPossession</EM.EXAMPLE.MONO
  89948. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89949. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89950. ><EM.EXAMPLE.MONO>public function book getPossession ();</EM.EXAMPLE.MONO
  89951. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  89952. ><EM.EXAMPLE.MONO>return possession</EM.EXAMPLE.MONO
  89953. ><EM.EXAMPLE.MONO>end function</EM.EXAMPLE.MONO
  89954. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89955. ><EM.EXAMPLE.MONO>event constructor;</EM.EXAMPLE.MONO
  89956. ><EM.EXAMPLE.MONO>setNull(possession)</EM.EXAMPLE.MONO
  89957. ><EM.EXAMPLE.MONO>// Start user code section</EM.EXAMPLE.MONO
  89958. ><EM.EXAMPLE.MONO>// End user code section</EM.EXAMPLE.MONO
  89959. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  89960. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89961. ><EM.EXAMPLE.MONO>event destructor;</EM.EXAMPLE.MONO
  89962. ><EM.EXAMPLE.MONO>// Start user code section</EM.EXAMPLE.MONO
  89963. ><EM.EXAMPLE.MONO>// End user code section</EM.EXAMPLE.MONO
  89964. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  89965. ></LABEL
  89966. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  89967. >Example of a bidirectional association</L.LABEL
  89968. ><B.BODY>Following is an excerpt from the code generated for the customer class in the bidirectional association. Because this is a bidirectional association, the book class would contain similar code.</B.BODY
  89969. ><B.BODY>Notice that the remove, set and get functions maintain the association in both directions:</B.BODY
  89970. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89971. ></RBW-AUTOGEN
  89972. ></RBW-MARKER
  89973. ><RBW-PARABODY>As in the previous example, the functions update the association attribute customer.possession to reflect the association between the customer and the book.</RBW-PARABODY
  89974. ></LB.LIST.BULLET
  89975. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  89976. ></RBW-AUTOGEN
  89977. ></RBW-MARKER
  89978. ><RBW-PARABODY>Because this is a bidirectional association, the functions <CX5FX5FEMPHASIS>also</CX5FX5FEMPHASIS
  89979. > update the association attribute possession.owner (book.owner) to reflect the association between the book and the customer.</RBW-PARABODY
  89980. ></LB.LIST.BULLET
  89981. ><EM.EXAMPLE.MONO>// Association attributes</EM.EXAMPLE.MONO
  89982. ><EM.EXAMPLE.MONO>public book possession</EM.EXAMPLE.MONO
  89983. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89984. ><EM.EXAMPLE.MONO>public subroutine removePossession ();</EM.EXAMPLE.MONO
  89985. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  89986. ><EM.EXAMPLE.MONO>if not isNull(possession) then</EM.EXAMPLE.MONO
  89987. ><EM.EXAMPLE.MONO>    setNull(possession.owner)</EM.EXAMPLE.MONO
  89988. ><EM.EXAMPLE.MONO>end if</EM.EXAMPLE.MONO
  89989. ><EM.EXAMPLE.MONO>setNull(possession)</EM.EXAMPLE.MONO
  89990. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  89991. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  89992. ><EM.EXAMPLE.MONO>public subroutine setPossession (book newPossession);</EM.EXAMPLE.MONO
  89993. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  89994. ><EM.EXAMPLE.MONO>if not isNull(possession) then</EM.EXAMPLE.MONO
  89995. ><EM.EXAMPLE.MONO>    setNull(possession.owner)</EM.EXAMPLE.MONO
  89996. ><EM.EXAMPLE.MONO>end if</EM.EXAMPLE.MONO
  89997. ><EM.EXAMPLE.MONO>if not isNull(newPossession) then</EM.EXAMPLE.MONO
  89998. ><EM.EXAMPLE.MONO>    customer nullRef</EM.EXAMPLE.MONO
  89999. ><EM.EXAMPLE.MONO>    setNull(nullRef)</EM.EXAMPLE.MONO
  90000. ><EM.EXAMPLE.MONO>    newPossession.setOwner(nullRef)</EM.EXAMPLE.MONO
  90001. ><EM.EXAMPLE.MONO>    newPossession.owner = this</EM.EXAMPLE.MONO
  90002. ><EM.EXAMPLE.MONO>end if</EM.EXAMPLE.MONO
  90003. ><EM.EXAMPLE.MONO>possession = newPossession</EM.EXAMPLE.MONO
  90004. ><EM.EXAMPLE.MONO>end subroutine</EM.EXAMPLE.MONO
  90005. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90006. ><EM.EXAMPLE.MONO>public function book getPossession ();</EM.EXAMPLE.MONO
  90007. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  90008. ><EM.EXAMPLE.MONO>return possession</EM.EXAMPLE.MONO
  90009. ><EM.EXAMPLE.MONO>end function</EM.EXAMPLE.MONO
  90010. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90011. ><EM.EXAMPLE.MONO>event constructor;</EM.EXAMPLE.MONO
  90012. ><EM.EXAMPLE.MONO>setNull(possession)</EM.EXAMPLE.MONO
  90013. ><EM.EXAMPLE.MONO>// Start user code section</EM.EXAMPLE.MONO
  90014. ><EM.EXAMPLE.MONO>// End user code section</EM.EXAMPLE.MONO
  90015. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  90016. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90017. ><EM.EXAMPLE.MONO>event destructor;</EM.EXAMPLE.MONO
  90018. ><EM.EXAMPLE.MONO>// Start user code section</EM.EXAMPLE.MONO
  90019. ><EM.EXAMPLE.MONO>// End user code section</EM.EXAMPLE.MONO
  90020. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  90021. ></LABEL
  90022. ></SUBSECTION
  90023. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="11388"></RBW-ANCHOR
  90024. >Mapping Associations With Multiplicity of Many</SS.SUBSEC.HEAD
  90025. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90026. >Introduction</L.LABEL
  90027. ><B.BODY><RBW-XREF REFID="27062" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  90028. > shows the code generated for associations with a multiplicity of one. This section shows the code generated for associations with a multiplicity of many.</B.BODY
  90029. ></LABEL
  90030. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90031. >Prerequisite</L.LABEL
  90032. ><B.BODY>This section assumes that you are familiar with the information in the previous section, <RBW-XREF REFID="27062" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  90033. >.</B.BODY
  90034. ></LABEL
  90035. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90036. >Multiplicity of many</L.LABEL
  90037. ><B.BODY>In the following example, each customer can have zero or more books:</B.BODY
  90038. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00807.unk" origfile="pics/asscmany.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  90039. ></FA.FIGURE.ANCHOR
  90040. ></LABEL
  90041. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90042. >classset class</L.LABEL
  90043. ><B.BODY>For an association with multiplicity of many, the type of the association attribute is classset. The classset class, which is supplied with the PowerBuilder code generator, includes special methods for handling sets of associations. The association accessor methods use these special methods to get, add, and remove associations.</B.BODY
  90044. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  90045. ></RBW-AUTOGEN
  90046. >ObjectTeam copies the classset class to your user environment when you configure your Implementation environment, as described in <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your PowerBuilder Environment</RBW-XREF
  90047. >.</N.NOTE
  90048. ></LABEL
  90049. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90050. >Generated code</L.LABEL
  90051. ><B.BODY>Following is an excerpt from the code generated for the customer class shown above. Notice that</B.BODY
  90052. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90053. ></RBW-AUTOGEN
  90054. ></RBW-MARKER
  90055. ><RBW-PARABODY>The add function adds an association to the set of associations. (The add function is similar to the set function that is generated for an association with multiplicity of one.)</RBW-PARABODY
  90056. ></LB.LIST.BULLET
  90057. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90058. ></RBW-AUTOGEN
  90059. ></RBW-MARKER
  90060. ><RBW-PARABODY>The remove function removes an association from the set.</RBW-PARABODY
  90061. ></LB.LIST.BULLET
  90062. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90063. ></RBW-AUTOGEN
  90064. ></RBW-MARKER
  90065. ><RBW-PARABODY>The get function retrieves the set of associations.</RBW-PARABODY
  90066. ></LB.LIST.BULLET
  90067. ><EWM.EXAMPLEW.MONO>// Association attributes</EWM.EXAMPLEW.MONO
  90068. ><EWM.EXAMPLEW.MONO>private classset possessionSet</EWM.EXAMPLEW.MONO
  90069. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90070. ><EWM.EXAMPLEW.MONO>public subroutine addPossession (book newPossession);</EWM.EXAMPLEW.MONO
  90071. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90072. ><EWM.EXAMPLEW.MONO>if isNull(newPossession) then</EWM.EXAMPLEW.MONO
  90073. ><EWM.EXAMPLEW.MONO>    return</EWM.EXAMPLEW.MONO
  90074. ><EWM.EXAMPLEW.MONO>end if</EWM.EXAMPLEW.MONO
  90075. ><EWM.EXAMPLEW.MONO>possessionSet.add(newPossession)</EWM.EXAMPLEW.MONO
  90076. ><EWM.EXAMPLEW.MONO>end subroutine</EWM.EXAMPLEW.MONO
  90077. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90078. ><EWM.EXAMPLEW.MONO>public subroutine removePossession (book oldPossession);</EWM.EXAMPLEW.MONO
  90079. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90080. ><EWM.EXAMPLEW.MONO>if isNull(oldPossession) then</EWM.EXAMPLEW.MONO
  90081. ><EWM.EXAMPLEW.MONO>    return</EWM.EXAMPLEW.MONO
  90082. ><EWM.EXAMPLEW.MONO>end if</EWM.EXAMPLEW.MONO
  90083. ><EWM.EXAMPLEW.MONO>possessionSet.remove(oldPossession)</EWM.EXAMPLEW.MONO
  90084. ><EWM.EXAMPLEW.MONO>end subroutine</EWM.EXAMPLEW.MONO
  90085. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90086. ><EWM.EXAMPLEW.MONO>public function classset getPossessionSet ();</EWM.EXAMPLEW.MONO
  90087. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90088. ><EWM.EXAMPLEW.MONO>return possessionSet</EWM.EXAMPLEW.MONO
  90089. ><EWM.EXAMPLEW.MONO>end function</EWM.EXAMPLEW.MONO
  90090. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90091. ><EWM.EXAMPLEW.MONO>event constructor;</EWM.EXAMPLEW.MONO
  90092. ><EWM.EXAMPLEW.MONO>possessionSet = create classset</EWM.EXAMPLEW.MONO
  90093. ><EWM.EXAMPLEW.MONO>// Start user code section</EWM.EXAMPLEW.MONO
  90094. ><EWM.EXAMPLEW.MONO>// End user code section</EWM.EXAMPLEW.MONO
  90095. ><EWM.EXAMPLEW.MONO>end event</EWM.EXAMPLEW.MONO
  90096. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90097. ><EWM.EXAMPLEW.MONO>event destructor;</EWM.EXAMPLEW.MONO
  90098. ><EWM.EXAMPLEW.MONO>// Start user code section</EWM.EXAMPLEW.MONO
  90099. ><EWM.EXAMPLEW.MONO>// End user code section</EWM.EXAMPLEW.MONO
  90100. ><EWM.EXAMPLEW.MONO>destroy(possessionSet)</EWM.EXAMPLEW.MONO
  90101. ><EWM.EXAMPLEW.MONO>end event</EWM.EXAMPLEW.MONO
  90102. ></LABEL
  90103. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90104. >Many, numerically specified</L.LABEL
  90105. ><BI.BODY.INTRO>In the following example, each customer can have at most 10 books. The PowerBuilder code generator ignores the numeric specifier. The code generated for this association is the same as that shown above.</BI.BODY.INTRO
  90106. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00808.unk" origfile="pics/asscnum.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  90107. ></FA.FIGURE.ANCHOR
  90108. ></LABEL
  90109. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90110. >Association properties</L.LABEL
  90111. ><B.BODY>You can, of course, effect the code generated for any of these association by editing the association properties, as described in <RBW-XREF REFID="16465" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Associations</RBW-XREF
  90112. >.</B.BODY
  90113. ></LABEL
  90114. ></SUBSECTION
  90115. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="36884"></RBW-ANCHOR
  90116. >Mapping Qualified Associations</SS.SUBSEC.HEAD
  90117. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90118. >Introduction</L.LABEL
  90119. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="qualified"></RBW-IDXTERM
  90120. ><RBW-IDXTERM TERM1="qualified association"></RBW-IDXTERM
  90121. ><RBW-IDXTERM TERM1="mapping" TERM2="qualified association"></RBW-IDXTERM
  90122. >The mapping of a qualified association, is similar to that of an association with multiplicity of many. For a qualified association, however, the qualifier (bookid, in the following example) is used to identify each association in the set of associations.</B.BODY
  90123. ></LABEL
  90124. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90125. >Prerequisite</L.LABEL
  90126. ><B.BODY>This section assumes that you are familiar with the information in the previous section, <RBW-XREF REFID="27062" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  90127. >.</B.BODY
  90128. ></LABEL
  90129. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90130. >Qualified association</L.LABEL
  90131. ><B.BODY>This section describes how the PowerBuilder code generator implements the following associations between the customer class and the book class. </B.BODY
  90132. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00809.unk" origfile="pics/asscqual.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  90133. ></FA.FIGURE.ANCHOR
  90134. ></LABEL
  90135. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90136. >How to edit qualifier properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for qualifier"></RBW-IDXTERM
  90137. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  90138. ><RBW-IDXTERM TERM1="qualifier" TERM2="editing properties"></RBW-IDXTERM
  90139. ></L.LABEL
  90140. ><B.BODY>You must specify the data type of the qualifier by editing the association properties.</B.BODY
  90141. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  90142. ></RBW-AUTOGEN
  90143. ></RBW-MARKER
  90144. ><RBW-PARABODY>To edit qualifier properties:</RBW-PARABODY
  90145. ></P.PROCEDURE
  90146. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  90147. ></RBW-AUTOGEN
  90148. ></RBW-MARKER
  90149. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  90150. ></LN.LIST.NUM
  90151. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  90152. ></RBW-AUTOGEN
  90153. ></RBW-MARKER
  90154. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  90155. ></LN.LIST.NUM
  90156. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  90157. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  90158. ></RBW-AUTOGEN
  90159. ></RBW-MARKER
  90160. ><RBW-PARABODY>Select a qualifier from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  90161. ></LN.LIST.NUM
  90162. ><LR.LIST.RESULT>The qualifier properties appear on the right side of the dialog box.</LR.LIST.RESULT
  90163. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  90164. ></RBW-AUTOGEN
  90165. ></RBW-MARKER
  90166. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  90167. ></LN.LIST.NUM
  90168. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  90169. ></RBW-MARKER
  90170. ><RBW-PARABODY>Use the Misc tab to specify a data type for the qualifier.</RBW-PARABODY
  90171. ></LB2.LIST.BULLET.2
  90172. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  90173. ></RBW-MARKER
  90174. ><RBW-PARABODY><RBW-IDXTERM TERM1="comment" TERM2="for qualifier"></RBW-IDXTERM
  90175. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  90176. ><RBW-IDXTERM TERM1="qualifier" TERM2="comment for"></RBW-IDXTERM
  90177. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="comment, for qualifier"></RBW-IDXTERM
  90178. >Use the Text tab to describe the qualifier. This text does not appear in the generated code.</RBW-PARABODY
  90179. ></LB2.LIST.BULLET.2
  90180. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  90181. ></RBW-AUTOGEN
  90182. ></RBW-MARKER
  90183. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  90184. ></LN.LIST.NUM
  90185. ></LABEL
  90186. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90187. >classdict class</L.LABEL
  90188. ><B.BODY>For a qualified association, the type of the association attribute is classdict. The classdict class, which is supplied with the PowerBuilder code generator, includes special methods for handling qualifiers. The association accessor methods use these special methods to access the qualifier.</B.BODY
  90189. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  90190. ></RBW-AUTOGEN
  90191. >ObjectTeam copies the classdict class to your user environment when you configure your Implementation environment, as described in <RBW-XREF REFID="40480" TYPE="XREF-TEXTCOPY">Configuring Your PowerBuilder Environment</RBW-XREF
  90192. >.</N.NOTE
  90193. ></LABEL
  90194. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90195. >Example</L.LABEL
  90196. ><BI.BODY.INTRO>Following are excerpts from the code generated for the customer and book classes shown above. Notice that</BI.BODY.INTRO
  90197. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90198. ></RBW-AUTOGEN
  90199. ></RBW-MARKER
  90200. ><RBW-PARABODY>The association customer.possession is managed using an association attribute with type classdict class, and the bookid index.</RBW-PARABODY
  90201. ></LB.LIST.BULLET
  90202. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90203. ></RBW-AUTOGEN
  90204. ></RBW-MARKER
  90205. ><RBW-PARABODY>The association book.owner is managed using an association attribute with type customer class.</RBW-PARABODY
  90206. ></LB.LIST.BULLET
  90207. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90208. >Example code for the customer class</SL.SUBLABEL
  90209. ><B.BODY></B.BODY
  90210. ><EWM.EXAMPLEW.MONO>// Association attributes</EWM.EXAMPLEW.MONO
  90211. ><EWM.EXAMPLEW.MONO>public classdict possessionDict</EWM.EXAMPLEW.MONO
  90212. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90213. ><EWM.EXAMPLEW.MONO>public function classset getPossessionDict (integer bookid);</EWM.EXAMPLEW.MONO
  90214. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90215. ><EWM.EXAMPLEW.MONO>return possessionDict.get(bookid)</EWM.EXAMPLEW.MONO
  90216. ><EWM.EXAMPLEW.MONO>end function</EWM.EXAMPLEW.MONO
  90217. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90218. ><EWM.EXAMPLEW.MONO>public subroutine addPossession (integer bookid, book newPossession);</EWM.EXAMPLEW.MONO
  90219. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90220. ><EWM.EXAMPLEW.MONO>if isNull(newPossession) then</EWM.EXAMPLEW.MONO
  90221. ><EWM.EXAMPLEW.MONO>    return</EWM.EXAMPLEW.MONO
  90222. ><EWM.EXAMPLEW.MONO>end if</EWM.EXAMPLEW.MONO
  90223. ><EWM.EXAMPLEW.MONO>newPossession.owner = this</EWM.EXAMPLEW.MONO
  90224. ><EWM.EXAMPLEW.MONO>classset theSet</EWM.EXAMPLEW.MONO
  90225. ><EWM.EXAMPLEW.MONO>theSet = possessionDict.get(bookid)</EWM.EXAMPLEW.MONO
  90226. ><EWM.EXAMPLEW.MONO>if isNull(theSet) then</EWM.EXAMPLEW.MONO
  90227. ><EWM.EXAMPLEW.MONO>    theSet = create classset</EWM.EXAMPLEW.MONO
  90228. ><EWM.EXAMPLEW.MONO>    possessionDict.set(bookid, theSet)</EWM.EXAMPLEW.MONO
  90229. ><EWM.EXAMPLEW.MONO>end if</EWM.EXAMPLEW.MONO
  90230. ><EWM.EXAMPLEW.MONO>theSet.add(newPossession)</EWM.EXAMPLEW.MONO
  90231. ><EWM.EXAMPLEW.MONO>end subroutine</EWM.EXAMPLEW.MONO
  90232. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90233. ><EWM.EXAMPLEW.MONO>public subroutine removePossession (integer bookid, book oldPossession);</EWM.EXAMPLEW.MONO
  90234. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90235. ><EWM.EXAMPLEW.MONO>if isNull(oldPossession) then</EWM.EXAMPLEW.MONO
  90236. ><EWM.EXAMPLEW.MONO>    return</EWM.EXAMPLEW.MONO
  90237. ><EWM.EXAMPLEW.MONO>end if</EWM.EXAMPLEW.MONO
  90238. ><EWM.EXAMPLEW.MONO>classset theSet</EWM.EXAMPLEW.MONO
  90239. ><EWM.EXAMPLEW.MONO>theSet = possessionDict.get(bookid)</EWM.EXAMPLEW.MONO
  90240. ><EWM.EXAMPLEW.MONO>if not isNull(theSet) then</EWM.EXAMPLEW.MONO
  90241. ><EWM.EXAMPLEW.MONO>    theSet.remove(oldPossession)</EWM.EXAMPLEW.MONO
  90242. ><EWM.EXAMPLEW.MONO>end if</EWM.EXAMPLEW.MONO
  90243. ><EWM.EXAMPLEW.MONO>setNull(oldPossession.owner)</EWM.EXAMPLEW.MONO
  90244. ><EWM.EXAMPLEW.MONO>end subroutine</EWM.EXAMPLEW.MONO
  90245. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90246. ><EWM.EXAMPLEW.MONO>event constructor;</EWM.EXAMPLEW.MONO
  90247. ><EWM.EXAMPLEW.MONO>possessionDict = create classdict</EWM.EXAMPLEW.MONO
  90248. ><EWM.EXAMPLEW.MONO>// Start user code section</EWM.EXAMPLEW.MONO
  90249. ><EWM.EXAMPLEW.MONO>// End user code section</EWM.EXAMPLEW.MONO
  90250. ><EWM.EXAMPLEW.MONO>end event</EWM.EXAMPLEW.MONO
  90251. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90252. ><EWM.EXAMPLEW.MONO>event destructor;</EWM.EXAMPLEW.MONO
  90253. ><EWM.EXAMPLEW.MONO>// Start user code section</EWM.EXAMPLEW.MONO
  90254. ><EWM.EXAMPLEW.MONO>// End user code section</EWM.EXAMPLEW.MONO
  90255. ><EWM.EXAMPLEW.MONO>destroy(possessionDict)</EWM.EXAMPLEW.MONO
  90256. ><EWM.EXAMPLEW.MONO>end event</EWM.EXAMPLEW.MONO
  90257. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90258. >Example code for the book class</SL.SUBLABEL
  90259. ><B.BODY></B.BODY
  90260. ><EWM.EXAMPLEW.MONO>// Association attributes</EWM.EXAMPLEW.MONO
  90261. ><EWM.EXAMPLEW.MONO>public customer owner</EWM.EXAMPLEW.MONO
  90262. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90263. ><EWM.EXAMPLEW.MONO>public subroutine removeOwner (integer bookid);</EWM.EXAMPLEW.MONO
  90264. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90265. ><EWM.EXAMPLEW.MONO>if not isNull(owner) then</EWM.EXAMPLEW.MONO
  90266. ><EWM.EXAMPLEW.MONO>    owner.removePossession(bookid, this)</EWM.EXAMPLEW.MONO
  90267. ><EWM.EXAMPLEW.MONO>end if</EWM.EXAMPLEW.MONO
  90268. ><EWM.EXAMPLEW.MONO>setNull(owner)</EWM.EXAMPLEW.MONO
  90269. ><EWM.EXAMPLEW.MONO>end subroutine</EWM.EXAMPLEW.MONO
  90270. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90271. ><EWM.EXAMPLEW.MONO>public subroutine setOwner (integer bookid, customer newOwner);</EWM.EXAMPLEW.MONO
  90272. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90273. ><EWM.EXAMPLEW.MONO>if not isNull(newOwner) then</EWM.EXAMPLEW.MONO
  90274. ><EWM.EXAMPLEW.MONO>    newOwner.addPossession(bookid, this)</EWM.EXAMPLEW.MONO
  90275. ><EWM.EXAMPLEW.MONO>end if</EWM.EXAMPLEW.MONO
  90276. ><EWM.EXAMPLEW.MONO>owner = newOwner</EWM.EXAMPLEW.MONO
  90277. ><EWM.EXAMPLEW.MONO>end subroutine</EWM.EXAMPLEW.MONO
  90278. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90279. ><EWM.EXAMPLEW.MONO>public function customer getOwner ();</EWM.EXAMPLEW.MONO
  90280. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90281. ><EWM.EXAMPLEW.MONO>return owner</EWM.EXAMPLEW.MONO
  90282. ><EWM.EXAMPLEW.MONO>end function</EWM.EXAMPLEW.MONO
  90283. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90284. ><EWM.EXAMPLEW.MONO>event constructor;</EWM.EXAMPLEW.MONO
  90285. ><EWM.EXAMPLEW.MONO>setNull(owner)</EWM.EXAMPLEW.MONO
  90286. ><EWM.EXAMPLEW.MONO>// Start user code section</EWM.EXAMPLEW.MONO
  90287. ><EWM.EXAMPLEW.MONO>// End user code section</EWM.EXAMPLEW.MONO
  90288. ><EWM.EXAMPLEW.MONO>end event</EWM.EXAMPLEW.MONO
  90289. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90290. ><EWM.EXAMPLEW.MONO>event destructor;</EWM.EXAMPLEW.MONO
  90291. ><EWM.EXAMPLEW.MONO>// Start user code section</EWM.EXAMPLEW.MONO
  90292. ><EWM.EXAMPLEW.MONO>// End user code section</EWM.EXAMPLEW.MONO
  90293. ><EWM.EXAMPLEW.MONO>end event</EWM.EXAMPLEW.MONO
  90294. ></LABEL
  90295. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90296. >Association properties</L.LABEL
  90297. ><B.BODY>You can effect the code generated for any association by editing the association properties, as described in <RBW-XREF REFID="16465" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Associations</RBW-XREF
  90298. >.</B.BODY
  90299. ></LABEL
  90300. ></SUBSECTION
  90301. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="20798"></RBW-ANCHOR
  90302. >Mapping Link Attributes and Classes as Associations</SS.SUBSEC.HEAD
  90303. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90304. >Prerequisite</L.LABEL
  90305. ><B.BODY>This section assumes that you are familiar with the mapping of various types of associations, as described in the previous sections.</B.BODY
  90306. ></LABEL
  90307. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90308. ><RBW-ANCHOR ID="35128"></RBW-ANCHOR
  90309. >Attributes and classes on associations</L.LABEL
  90310. ><B.BODY>ObjectTeam allows you to specify information about an association by linking attributes, or a class, to the association. The following diagram shows a link attribute symbol; a class symbol could be used in the same location.</B.BODY
  90311. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00810.unk" origfile="pics/assclnk.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  90312. ></FA.FIGURE.ANCHOR
  90313. ></LABEL
  90314. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90315. ><RBW-ANCHOR ID="30454"></RBW-ANCHOR
  90316. >Association mapped as two associations</L.LABEL
  90317. ><B.BODY>An association that includes a link attribute or a class is transformed before code generation. The link attribute or class becomes a separate class, with appropriate associations to the original classes. The generated code is then based on the transformed association.</B.BODY
  90318. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90319. >Example</SL.SUBLABEL
  90320. ><B.BODY>The code generated for the CD shown above is actually based on the following CD:</B.BODY
  90321. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00811.unk" origfile="pics/assccnv.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  90322. ></FA.FIGURE.ANCHOR
  90323. ></LABEL
  90324. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90325. >Name used for the third class</L.LABEL
  90326. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90327. >Link attribute</SL.SUBLABEL
  90328. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="and link attribute"></RBW-IDXTERM
  90329. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  90330. ><RBW-IDXTERM TERM1="link attribute"></RBW-IDXTERM
  90331. ><RBW-IDXTERM TERM1="mapping" TERM2="link attribute"></RBW-IDXTERM
  90332. >If an attribute is linked to the association, the new class is assigned the name of the association. Therefore, an association that has a link attribute must have an association name.</B.BODY
  90333. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  90334. ></RBW-AUTOGEN
  90335. >The class created for the link attribute does not have a supertype class. As for any class that does not have a supertype class, the code generator uses nonvisualobject as the supertype class, which creates a custom class user object.</N.NOTE
  90336. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90337. >Link class</SL.SUBLABEL
  90338. ><B.BODY><RBW-IDXTERM TERM1="association" TERM2="and class"></RBW-IDXTERM
  90339. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  90340. ><RBW-IDXTERM TERM1="class" TERM2="as association"></RBW-IDXTERM
  90341. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  90342. ><RBW-IDXTERM TERM1="mapping" TERM2="class, as association"></RBW-IDXTERM
  90343. >If a class is linked to the association, that class is used as the third class. Therefore, an association that is described by a class does not need an association name.</B.BODY
  90344. ></LABEL
  90345. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90346. >Role names are required</L.LABEL
  90347. ><B.BODY>As with all associations, role names are required. If a role name is omitted, the association attributes and methods that would map to that role name are not generated.</B.BODY
  90348. ></LABEL
  90349. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90350. >Example</L.LABEL
  90351. ><BI.BODY.INTRO>Following is the code generated for the link attribute shown above (<RBW-XREF REFID="35128" TYPE="XREF-TEXTCOPY">Attributes and classes on associations</RBW-XREF
  90352. >). The code reflects the transformed CD (<RBW-XREF REFID="30454" TYPE="XREF-TEXTCOPY">Association mapped as two associations</RBW-XREF
  90353. >).</BI.BODY.INTRO
  90354. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  90355. ></RBW-AUTOGEN
  90356. >Only the get functions are generated for associations that include link attributes or classes. The remove and add functions are not generated.</N.NOTE
  90357. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90358. >Generated code for the purchase class</SL.SUBLABEL
  90359. ><B.BODY></B.BODY
  90360. ><EM.EXAMPLE.MONO>// Association attributes</EM.EXAMPLE.MONO
  90361. ><EM.EXAMPLE.MONO>public customer owner</EM.EXAMPLE.MONO
  90362. ><EM.EXAMPLE.MONO>public book possession</EM.EXAMPLE.MONO
  90363. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90364. ><EM.EXAMPLE.MONO>public function customer getOwner ();</EM.EXAMPLE.MONO
  90365. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  90366. ><EM.EXAMPLE.MONO>return owner</EM.EXAMPLE.MONO
  90367. ><EM.EXAMPLE.MONO>end function</EM.EXAMPLE.MONO
  90368. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90369. ><EM.EXAMPLE.MONO>public function book getPossession ();</EM.EXAMPLE.MONO
  90370. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  90371. ><EM.EXAMPLE.MONO>return possession</EM.EXAMPLE.MONO
  90372. ><EM.EXAMPLE.MONO>end function</EM.EXAMPLE.MONO
  90373. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90374. ><EM.EXAMPLE.MONO>event constructor;</EM.EXAMPLE.MONO
  90375. ><EM.EXAMPLE.MONO>setNull(owner)</EM.EXAMPLE.MONO
  90376. ><EM.EXAMPLE.MONO>setNull(possession)</EM.EXAMPLE.MONO
  90377. ><EM.EXAMPLE.MONO>// Start user code section</EM.EXAMPLE.MONO
  90378. ><EM.EXAMPLE.MONO>// End user code section</EM.EXAMPLE.MONO
  90379. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  90380. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90381. ><EM.EXAMPLE.MONO>event destructor;</EM.EXAMPLE.MONO
  90382. ><EM.EXAMPLE.MONO>// Start user code section</EM.EXAMPLE.MONO
  90383. ><EM.EXAMPLE.MONO>// End user code section</EM.EXAMPLE.MONO
  90384. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  90385. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90386. >Generated code for the customer class</SL.SUBLABEL
  90387. ><BI.BODY.INTRO></BI.BODY.INTRO
  90388. ><EWM.EXAMPLEW.MONO>// Association attributes</EWM.EXAMPLEW.MONO
  90389. ><EWM.EXAMPLEW.MONO>public classset purchaseOfPossessionSet</EWM.EXAMPLEW.MONO
  90390. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90391. ><EWM.EXAMPLEW.MONO>public function classset getPurchaseOfPossessionSet ();</EWM.EXAMPLEW.MONO
  90392. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90393. ><EWM.EXAMPLEW.MONO>return purchaseOfPossessionSet</EWM.EXAMPLEW.MONO
  90394. ><EWM.EXAMPLEW.MONO>end function</EWM.EXAMPLEW.MONO
  90395. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90396. ><EWM.EXAMPLEW.MONO>event constructor;</EWM.EXAMPLEW.MONO
  90397. ><EWM.EXAMPLEW.MONO>purchaseOfPossessionSet = create classset</EWM.EXAMPLEW.MONO
  90398. ><EWM.EXAMPLEW.MONO>// Start user code section</EWM.EXAMPLEW.MONO
  90399. ><EWM.EXAMPLEW.MONO>// End user code section</EWM.EXAMPLEW.MONO
  90400. ><EWM.EXAMPLEW.MONO>end event</EWM.EXAMPLEW.MONO
  90401. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90402. ><EWM.EXAMPLEW.MONO>event destructor;</EWM.EXAMPLEW.MONO
  90403. ><EWM.EXAMPLEW.MONO>// Start user code section</EWM.EXAMPLEW.MONO
  90404. ><EWM.EXAMPLEW.MONO>// End user code section</EWM.EXAMPLEW.MONO
  90405. ><EWM.EXAMPLEW.MONO>destroy(purchaseOfPossessionSet)</EWM.EXAMPLEW.MONO
  90406. ><EWM.EXAMPLEW.MONO>end event</EWM.EXAMPLEW.MONO
  90407. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90408. >Generated code for the book class</SL.SUBLABEL
  90409. ><BI.BODY.INTRO></BI.BODY.INTRO
  90410. ><EM.EXAMPLE.MONO>// Association attributes</EM.EXAMPLE.MONO
  90411. ><EM.EXAMPLE.MONO>public purchase purchaseOfOwner</EM.EXAMPLE.MONO
  90412. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90413. ><EM.EXAMPLE.MONO>public function purchase getPurchaseOfOwner ();</EM.EXAMPLE.MONO
  90414. ><EM.EXAMPLE.MONO>// Association accessor method</EM.EXAMPLE.MONO
  90415. ><EM.EXAMPLE.MONO>return purchaseOfOwner</EM.EXAMPLE.MONO
  90416. ><EM.EXAMPLE.MONO>end function</EM.EXAMPLE.MONO
  90417. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90418. ><EM.EXAMPLE.MONO>event constructor;</EM.EXAMPLE.MONO
  90419. ><EM.EXAMPLE.MONO>setNull(purchaseOfOwner)</EM.EXAMPLE.MONO
  90420. ><EM.EXAMPLE.MONO>// Start user code section</EM.EXAMPLE.MONO
  90421. ><EM.EXAMPLE.MONO>// End user code section</EM.EXAMPLE.MONO
  90422. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  90423. ><EM.EXAMPLE.MONO></EM.EXAMPLE.MONO
  90424. ><EM.EXAMPLE.MONO>event destructor;</EM.EXAMPLE.MONO
  90425. ><EM.EXAMPLE.MONO>// Start user code section</EM.EXAMPLE.MONO
  90426. ><EM.EXAMPLE.MONO>// End user code section</EM.EXAMPLE.MONO
  90427. ><EM.EXAMPLE.MONO>end event</EM.EXAMPLE.MONO
  90428. ></LABEL
  90429. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90430. >Association properties</L.LABEL
  90431. ><B.BODY>You can effect the code generated for any association by editing the association properties, as described in <RBW-XREF REFID="16465" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Associations</RBW-XREF
  90432. >.</B.BODY
  90433. ></LABEL
  90434. ></SUBSECTION
  90435. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="16465"></RBW-ANCHOR
  90436. >Specifying Access Methods for Associations</SS.SUBSEC.HEAD
  90437. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90438. >Introduction</L.LABEL
  90439. ><B.BODY>The values you specify in the Association Access group box on the Edit Properties dialog box for an association determines what association accessor methods are generated for the association.</B.BODY
  90440. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  90441. ></RBW-AUTOGEN
  90442. >The association accessor methods for bidirectional associations are always public. Therefore, for bidirectional associations, the Association Access group box on the Edit Properties dialog box is ignored.</N.NOTE
  90443. ></LABEL
  90444. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90445. >Read&truehy;write access</L.LABEL
  90446. ><B.BODY>The Association Access group box contains a Read field and a Write field. For each field, you can specify one of the following values:</B.BODY
  90447. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90448. ></RBW-AUTOGEN
  90449. ></RBW-MARKER
  90450. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Public (default).</CX5FX5FBULLET.EMPHASIS
  90451. > Generates public access methods.</RBW-PARABODY
  90452. ></LB.LIST.BULLET
  90453. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90454. ></RBW-AUTOGEN
  90455. ></RBW-MARKER
  90456. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Private.</CX5FX5FBULLET.EMPHASIS
  90457. > Generates private access methods.</RBW-PARABODY
  90458. ></LB.LIST.BULLET
  90459. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90460. ></RBW-AUTOGEN
  90461. ></RBW-MARKER
  90462. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Protected.</CX5FX5FBULLET.EMPHASIS
  90463. > Generates protected access methods.</RBW-PARABODY
  90464. ></LB.LIST.BULLET
  90465. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90466. ></RBW-AUTOGEN
  90467. ></RBW-MARKER
  90468. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>None.</CX5FX5FBULLET.EMPHASIS
  90469. > Prevents generation of the access methods.</RBW-PARABODY
  90470. ></LB.LIST.BULLET
  90471. ><B.BODY>The Read field controls generation of the get function; the Write field controls generation of the add (or set) and remove functions.</B.BODY
  90472. ></LABEL
  90473. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90474. >How to edit association properties<RBW-IDXTERM TERM1="Edit Properties (Item menu)" TERM2="for association"></RBW-IDXTERM
  90475. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  90476. ><RBW-IDXTERM TERM1="association attribute property" TERM2="editing"></RBW-IDXTERM
  90477. ></L.LABEL
  90478. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  90479. ></RBW-AUTOGEN
  90480. ></RBW-MARKER
  90481. ><RBW-PARABODY>To edit association properties:</RBW-PARABODY
  90482. ></P.PROCEDURE
  90483. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  90484. ></RBW-AUTOGEN
  90485. ></RBW-MARKER
  90486. ><RBW-PARABODY>Select an association symbol in the CD.</RBW-PARABODY
  90487. ></LN.LIST.NUM
  90488. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  90489. ></RBW-AUTOGEN
  90490. ></RBW-MARKER
  90491. ><RBW-PARABODY>Select Item | Edit Properties.</RBW-PARABODY
  90492. ></LN.LIST.NUM
  90493. ><LR.LIST.RESULT>The Edit Properties dialog appears.</LR.LIST.RESULT
  90494. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  90495. ></RBW-AUTOGEN
  90496. ></RBW-MARKER
  90497. ><RBW-PARABODY>Select a role name from the list in the left&truehy;hand pane of the dialog box.</RBW-PARABODY
  90498. ></LN.LIST.NUM
  90499. ><LR.LIST.RESULT>The association properties appear on the right side of the dialog box.</LR.LIST.RESULT
  90500. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00812.unk" origfile="pics/asscprop.gif" origtype="X" origdoc="../../sources/pb/pbgen.fm5.mif"></RBW-GRAPHIC
  90501. ></FA2.FIGURE.ANCHOR.2
  90502. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  90503. ></RBW-AUTOGEN
  90504. ></RBW-MARKER
  90505. ><RBW-PARABODY>Select the desired properties:</RBW-PARABODY
  90506. ></LN.LIST.NUM
  90507. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  90508. ></RBW-MARKER
  90509. ><RBW-PARABODY><RBW-IDXTERM TERM1="association attribute property" TERM2="access"></RBW-IDXTERM
  90510. ><RBW-IDXTERM TERM1="access property" TERM2="for association attribute"></RBW-IDXTERM
  90511. >Use the Association Access field to specify which association methods are generated for the association attribute. See the examples below.</RBW-PARABODY
  90512. ></LB2.LIST.BULLET.2
  90513. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  90514. ></RBW-MARKER
  90515. ><RBW-PARABODY><RBW-IDXTERM TERM1="comment" TERM2="for association"></RBW-IDXTERM
  90516. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  90517. ><RBW-IDXTERM TERM1="association attribute property" TERM2="for comment"></RBW-IDXTERM
  90518. ><RBW-IDXTERM TERM1=""></RBW-IDXTERM
  90519. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="comment, for association"></RBW-IDXTERM
  90520. >Use the Text tab to describe the association. This text does not appear in the generated code.</RBW-PARABODY
  90521. ></LB2.LIST.BULLET.2
  90522. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  90523. ></RBW-AUTOGEN
  90524. ></RBW-MARKER
  90525. ><RBW-PARABODY>Select OK.</RBW-PARABODY
  90526. ></LN.LIST.NUM
  90527. ></LABEL
  90528. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90529. >Example</L.LABEL
  90530. ><B.BODY><RBW-XREF REFID="27062" TYPE="XREF-TEXTCOPY">Mapping Simple Associations</RBW-XREF
  90531. > shows an example of a unidirectional association and the code generated for the association. If you modify the Association Access field for the possession role, specifying the Read field as Protected and the Write field as Private, the following code would be generated:</B.BODY
  90532. ><EWM.EXAMPLEW.MONO>private subroutine removePossession ();</EWM.EXAMPLEW.MONO
  90533. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90534. ><EWM.EXAMPLEW.MONO>setNull(possession)</EWM.EXAMPLEW.MONO
  90535. ><EWM.EXAMPLEW.MONO>end subroutine</EWM.EXAMPLEW.MONO
  90536. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90537. ><EWM.EXAMPLEW.MONO>private subroutine setPossession (book newPossession);</EWM.EXAMPLEW.MONO
  90538. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90539. ><EWM.EXAMPLEW.MONO>possession = newPossession</EWM.EXAMPLEW.MONO
  90540. ><EWM.EXAMPLEW.MONO>end subroutine</EWM.EXAMPLEW.MONO
  90541. ><EWM.EXAMPLEW.MONO></EWM.EXAMPLEW.MONO
  90542. ><EWM.EXAMPLEW.MONO>protected function book getPossession ();</EWM.EXAMPLEW.MONO
  90543. ><EWM.EXAMPLEW.MONO>// Association accessor method</EWM.EXAMPLEW.MONO
  90544. ><EWM.EXAMPLEW.MONO>return possession</EWM.EXAMPLEW.MONO
  90545. ><EWM.EXAMPLEW.MONO>end function</EWM.EXAMPLEW.MONO
  90546. ><B.BODY></B.BODY
  90547. ><RBWAUTO-0001></RBWAUTO-0001
  90548. ><!--
  90549.  
  90550.  
  90551.  
  90552.  
  90553.  
  90554. CONVERTING SOURCE FILE ../../sources/pb/pbgui.fm5.mif
  90555.  
  90556.  
  90557. --><B.BODY></B.BODY
  90558. ><B.BODY></B.BODY
  90559. ><B.BODY></B.BODY
  90560. ><B.BODY></B.BODY
  90561. ><B.BODY></B.BODY
  90562. ></LABEL
  90563. ></SUBSECTION
  90564. ></SECTION
  90565. ></CHAPTER
  90566. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 4&rbwtab;</CX5FX5FZCHAPTER.NUM
  90567. ></RBW-AUTOGEN
  90568. >Modeling <RBW-ANCHOR ID="41939"></RBW-ANCHOR
  90569. >the Visual Interface<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  90570. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for PowerBuilder</RBW-TEXTFLD
  90571. ></RBW-SYSOBJ
  90572. ></C.CHAPTER.HEAD
  90573. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90574. >Introduction</L.LABEL
  90575. ><B.BODY>This chapter describes how to model the visual interface of an application. This includes modeling windows, menus, visual custom user objects, and visual standard objects.</B.BODY
  90576. ><B.BODY><RBW-XREF REFID="16205" TYPE="XREF-TEXTCOPY">Chapter 3, Modeling Nonvisual Elements</RBW-XREF
  90577. >, describes how to model the nonvisual aspects of an application. This includes:</B.BODY
  90578. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90579. ></RBW-AUTOGEN
  90580. ></RBW-MARKER
  90581. ><RBW-PARABODY>Nonvisual aspects of visual objects (for example, variables and functions in a window).</RBW-PARABODY
  90582. ></LB.LIST.BULLET
  90583. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90584. ></RBW-AUTOGEN
  90585. ></RBW-MARKER
  90586. ><RBW-PARABODY>Nonvisual objects: custom class objects, class standard objects, and structures.</RBW-PARABODY
  90587. ></LB.LIST.BULLET
  90588. ></LABEL
  90589. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90590. >Upper&truehy; and lower&truehy;case characters</L.LABEL
  90591. ><B.BODY>ObjectTeam is case&truehy;sensitive, but in many cases PowerBuilder allows only lower&truehy;case characters. To prevent potential problems, Cayenne strongly recommends that you use only lower&truehy;case characters when naming items in ObjectTeam systems used with the PowerBuilder code generator.</B.BODY
  90592. ></LABEL
  90593. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90594. >Prerequisites</L.LABEL
  90595. ><B.BODY>This chapter assumes that you are familiar with the following:</B.BODY
  90596. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90597. ></RBW-AUTOGEN
  90598. ></RBW-MARKER
  90599. ><RBW-PARABODY>Valid supertype classes and the Global Type class property, as described in <RBW-XREF REFID="15448" TYPE="XREF-TEXTCOPY">Mapping Classes on page 3–3</RBW-XREF
  90600. >.</RBW-PARABODY
  90601. ></LB.LIST.BULLET
  90602. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90603. ></RBW-AUTOGEN
  90604. ></RBW-MARKER
  90605. ><RBW-PARABODY>Generating and editing PowerBuilder source files, as described in <RBW-XREF REFID="40013" TYPE="XREF-TEXTCOPY">Chapter 2, Generating Code</RBW-XREF
  90606. >.</RBW-PARABODY
  90607. ></LB.LIST.BULLET
  90608. ></LABEL
  90609. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90610. >Examples</L.LABEL
  90611. ><B.BODY>For simplicity, in the examples in this chapter, classes do not have attributes, operations, or associations (except those that are used to model the user interface). </B.BODY
  90612. ><B.BODY>Global classes can have attributes, operations, and/or associations. If included, these features are mapped to PowerBuilder variables and functions, as described in <RBW-XREF REFID="16205" TYPE="XREF-TEXTCOPY">Chapter 3, Modeling Nonvisual Elements</RBW-XREF
  90613. >.</B.BODY
  90614. ></LABEL
  90615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90616. >In this chapter</L.LABEL
  90617. ><B.BODY>This chapter contains the following sections:</B.BODY
  90618. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  90619. ></ENTRY
  90620. ></RBW-ROW
  90621. ></THEAD
  90622. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11320" TYPE="XREF-TEXTCOPY">Basic Modeling Technique&rbwtab;4–3</RBW-XREF
  90623. ></SB.SECTION.BLOCK.TABLE
  90624. ></ENTRY
  90625. ></RBW-ROW
  90626. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="20826" TYPE="XREF-TEXTCOPY">Modeling Menus&rbwtab;4–10</RBW-XREF
  90627. ></SB.SECTION.BLOCK.TABLE
  90628. ></ENTRY
  90629. ></RBW-ROW
  90630. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="11993" TYPE="XREF-TEXTCOPY">Modeling Windows&rbwtab;4–13</RBW-XREF
  90631. ></SB.SECTION.BLOCK.TABLE
  90632. ></ENTRY
  90633. ></RBW-ROW
  90634. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="40978" TYPE="XREF-TEXTCOPY">Modeling Standard Visual User Objects&rbwtab;4–15</RBW-XREF
  90635. ></SB.SECTION.BLOCK.TABLE
  90636. ></ENTRY
  90637. ></RBW-ROW
  90638. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="16125" TYPE="XREF-TEXTCOPY">Modeling Custom Visual User Objects&rbwtab;4–18</RBW-XREF
  90639. ></SB.SECTION.BLOCK.TABLE
  90640. ></ENTRY
  90641. ></RBW-ROW
  90642. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="28166" TYPE="XREF-TEXTCOPY">Modeling Data Windows&rbwtab;4–21</RBW-XREF
  90643. ></SB.SECTION.BLOCK.TABLE
  90644. ></ENTRY
  90645. ></RBW-ROW
  90646. ></TBODY
  90647. ></TGROUP
  90648. ></RBW-TABLE
  90649. ></LABEL
  90650. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="11320"></RBW-ANCHOR
  90651. >Basic Modeling Technique</S.SECTION.HEAD
  90652. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90653. >Introduction</L.LABEL
  90654. ><B.BODY>This section describes the basic technique for modeling PowerBuilder windows in ObjectTeam.</B.BODY
  90655. ></LABEL
  90656. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90657. >Sample window</L.LABEL
  90658. ><B.BODY>The w_welcome window from the PowerBuilder tutorial is modeled as an example:</B.BODY
  90659. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00813.unk" origfile="pics/weldone.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  90660. ></FA.FIGURE.ANCHOR
  90661. ></LABEL
  90662. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90663. >Sample CD</L.LABEL
  90664. ><BI.BODY.INTRO>The following CD models the w_welcome window:</BI.BODY.INTRO
  90665. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00814.unk" origfile="pics/welcad.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  90666. ></FAR.FIGURE.ANCHOR.RIGHT
  90667. ></LABEL
  90668. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90669. >In this section</L.LABEL
  90670. ><B.BODY>This section contains the following topics:</B.BODY
  90671. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  90672. ></ENTRY
  90673. ></RBW-ROW
  90674. ></THEAD
  90675. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39166" TYPE="XREF-TEXTCOPY">Modeling the Window&rbwtab;4–5</RBW-XREF
  90676. ></SB.SECTION.BLOCK.TABLE
  90677. ></ENTRY
  90678. ></RBW-ROW
  90679. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19610" TYPE="XREF-TEXTCOPY">Completing the Window&rbwtab;4–7</RBW-XREF
  90680. ></SB.SECTION.BLOCK.TABLE
  90681. ></ENTRY
  90682. ></RBW-ROW
  90683. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23395" TYPE="XREF-TEXTCOPY">Alternative Technique&rbwtab;4–9</RBW-XREF
  90684. ></SB.SECTION.BLOCK.TABLE
  90685. ></ENTRY
  90686. ></RBW-ROW
  90687. ></TBODY
  90688. ></TGROUP
  90689. ></RBW-TABLE
  90690. ></LABEL
  90691. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="39166"></RBW-ANCHOR
  90692. >Modeling the Window</SS.SUBSEC.HEAD
  90693. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90694. >PBBuiltin classes</L.LABEL
  90695. ><B.BODY><RBW-IDXTERM TERM1="vb_gui_lib system"></RBW-IDXTERM
  90696. >The folded classes in the CD (picture, window, singlelineedit, commandbutton, and statictext) are defined in the PBBuiltins system. The unfolded classes represent the window elements that you are modeling. </B.BODY
  90697. ><B.BODY>As described in <RBW-XREF REFID="15448" TYPE="XREF-TEXTCOPY">Mapping Classes on page 3–3</RBW-XREF
  90698. >, each ObjectTeam class must have a valid supertype class. The supertype class indicates the type of PowerBuilder object that you want to generate.</B.BODY
  90699. ></LABEL
  90700. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90701. >Aggregations</L.LABEL
  90702. ><B.BODY>In PowerBuilder, certain objects can contain other objects. For example, the w_welcome window contains a picture, 3 static text fields, 2 singleline edit fields, and 2 command buttons. </B.BODY
  90703. ><B.BODY>The w_welcome window is an <CX5FX5FEMPHASIS>aggregation</CX5FX5FEMPHASIS
  90704. > of these controls; therefore, in the CD, aggregations are used to show containment. The role name of the aggregation becomes the name of the control in PowerBuilder.</B.BODY
  90705. ></LABEL
  90706. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90707. >Steps for modeling the window</L.LABEL
  90708. ><B.BODY><RBW-IDXTERM TERM1="window" TERM2="representing in ObjectTeam"></RBW-IDXTERM
  90709. ><RBW-IDXTERM TERM1="Visual Basic" TERM2="forms, modeling"></RBW-IDXTERM
  90710. ><RBW-IDXTERM TERM1="form" TERM2="basic modeling"></RBW-IDXTERM
  90711. >The following table summarizes the steps used to create the CD:</B.BODY
  90712. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="36p"><COLSPEC COLNAME="2" COLWIDTH="414p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  90713. ></ENTRY
  90714. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  90715. ></ENTRY
  90716. ></RBW-ROW
  90717. ></THEAD
  90718. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  90719. ></ENTRY
  90720. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the w_welcome class to represent the window. Also, add the window class and make w_welcome a subclass of window.</CELLBODY
  90721. ></ENTRY
  90722. ></RBW-ROW
  90723. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  90724. ></ENTRY
  90725. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Add attributes and operations to the w_welcome class. For simplicity, in this example, only the wf_connect operation is added.</CELLBODY
  90726. ></ENTRY
  90727. ></RBW-ROW
  90728. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  90729. ></ENTRY
  90730. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the p_sports class to represent the picture control. Also, add the picture class and make p_sports a subclass of picture.</CELLBODY
  90731. ></ENTRY
  90732. ></RBW-ROW
  90733. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  90734. ></ENTRY
  90735. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the sle_userid and sle_password classes to represent the single line edit controls. Add the singlelineedit class and make sle_userid and sle_password subclasses of singlelineedit.</CELLBODY
  90736. ></ENTRY
  90737. ></RBW-ROW
  90738. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  90739. ></ENTRY
  90740. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the cb_ok and cb_cancel classes to represent the command button controls. Add the commandbutton class and make cb_ok and cb_cancel subclasses of commandbutton.</CELLBODY
  90741. ></ENTRY
  90742. ></RBW-ROW
  90743. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>6</CELLBODY
  90744. ></ENTRY
  90745. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create the st_welcome, st_userid, and st_password classes to represent the static text controls. Add the statictext class and make st_welcome, st_userid, and st_password subclasses of statictext.</CELLBODY
  90746. ></ENTRY
  90747. ></RBW-ROW
  90748. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>7</CELLBODY
  90749. ></ENTRY
  90750. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The w_welcome window contains all eight controls. It is an <CX5FX5FTERM>aggregation</CX5FX5FTERM
  90751. > of these controls. Create the eight relationships that define the aggregation. Each relationship must have a role name. </CELLBODY
  90752. ></ENTRY
  90753. ></RBW-ROW
  90754. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>8</CELLBODY
  90755. ></ENTRY
  90756. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Add a clicked event to the cb_ok class and cb_cancel class. </CELLBODY
  90757. ><CELLBODY>To do so: add a clicked() operation; select Item | Edit  Properties; select the clicked operation; and select the Event check box on the Misc tab of the Edit Properties dialog.</CELLBODY
  90758. ></ENTRY
  90759. ></RBW-ROW
  90760. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>9</CELLBODY
  90761. ></ENTRY
  90762. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The w_welcome window is a global object. The controls on the w_welcome window are local objects.</CELLBODY
  90763. ><CELLBODY>The Global Type property of an ObjectTeam class indicates whether the generated PowerBuilder object is global (default) or local. For each of the 8 control classes, change the value of the Global Type property from Yes to No.</CELLBODY
  90764. ></ENTRY
  90765. ></RBW-ROW
  90766. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>10</CELLBODY
  90767. ></ENTRY
  90768. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The w_welcome window is a Response window. Set the Window Type property of the w_welcome class to Response.</CELLBODY
  90769. ></ENTRY
  90770. ></RBW-ROW
  90771. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>11</CELLBODY
  90772. ></ENTRY
  90773. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each class that is not defined in the system, select Item | Edit properties. If the Define item button is available, select it to define the class item. See <RBW-XREF REFID="39577" TYPE="XREF-TEXTCOPY">All classes must be defined items</RBW-XREF
  90774. > for more information.</CELLBODY
  90775. ></ENTRY
  90776. ></RBW-ROW
  90777. ></TBODY
  90778. ></TGROUP
  90779. ></RBW-TABLE
  90780. ></LABEL
  90781. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90782. ><RBW-ANCHOR ID="39577"></RBW-ANCHOR
  90783. >All classes must be defined items</L.LABEL
  90784. ><B.BODY>ObjectTeam generates code for class items. It does not generate code for graphical elements that do not have associated class items.</B.BODY
  90785. ><B.BODY>When you create a class, ObjectTeam creates a graphical element. When you perform one of the following actions, ObjectTeam creates a class item:</B.BODY
  90786. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90787. ></RBW-AUTOGEN
  90788. ></RBW-MARKER
  90789. ><RBW-PARABODY>Add an attribute, operation, or association to the class</RBW-PARABODY
  90790. ></LB.LIST.BULLET
  90791. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90792. ></RBW-AUTOGEN
  90793. ></RBW-MARKER
  90794. ><RBW-PARABODY>Set a property on the class</RBW-PARABODY
  90795. ></LB.LIST.BULLET
  90796. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90797. ></RBW-AUTOGEN
  90798. ></RBW-MARKER
  90799. ><RBW-PARABODY>Open the Edit Properties dialog box for the class and select the Define item button.</RBW-PARABODY
  90800. ></LB.LIST.BULLET
  90801. ></LABEL
  90802. ></SUBSECTION
  90803. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19610"></RBW-ANCHOR
  90804. >Completing the Window</SS.SUBSEC.HEAD
  90805. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90806. >Generated window</L.LABEL
  90807. ><BI.BODY.INTRO>In ObjectTeam, you model the content of the window, not its layout. Therefore, the generated PowerBuilder file defines the window and its controls, but it does not define the properties of the window or its controls. <RBW-IDXTERM TERM1="form" TERM2="layout information"></RBW-IDXTERM
  90808. >When you open the generated window in PowerBuilder, it appears as shown below (the controls are stacked in the upper left corner):</BI.BODY.INTRO
  90809. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00815.unk" origfile="pics/welstart.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  90810. ></FA.FIGURE.ANCHOR
  90811. ></LABEL
  90812. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90813. >Completing the window</L.LABEL
  90814. ><B.BODY>In PowerBuilder, complete the window as follows:</B.BODY
  90815. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90816. ></RBW-AUTOGEN
  90817. ></RBW-MARKER
  90818. ><RBW-PARABODY>Arrange the controls.</RBW-PARABODY
  90819. ></LB.LIST.BULLET
  90820. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90821. ></RBW-AUTOGEN
  90822. ></RBW-MARKER
  90823. ><RBW-PARABODY>Specify the appropriate text for each static text and command button control by editing the control’s properties.</RBW-PARABODY
  90824. ></LB.LIST.BULLET
  90825. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90826. ></RBW-AUTOGEN
  90827. ></RBW-MARKER
  90828. ><RBW-PARABODY>Specify the bitmap for the picture control by editing the control’s properties.</RBW-PARABODY
  90829. ></LB.LIST.BULLET
  90830. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90831. ></RBW-AUTOGEN
  90832. ></RBW-MARKER
  90833. ><RBW-PARABODY>Adjust the size of the window.</RBW-PARABODY
  90834. ></LB.LIST.BULLET
  90835. ><B.BODY>When you are done, the window looks like the one shown at the beginning of this section (see <RBW-XREF REFID="11320" TYPE="XREF-TEXTCOPY">page 4–3</RBW-XREF
  90836. >).</B.BODY
  90837. ></LABEL
  90838. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90839. >Regenerating the window</L.LABEL
  90840. ><B.BODY><RBW-IDXTERM TERM1="form" TERM2="regenerating"></RBW-IDXTERM
  90841. >When you export the window from the PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  90842. >) library, the exported source file reflects the changes that you made in PowerBuilder. ObjectTeam preserves the changes when you regenerate the file. </B.BODY
  90843. ></LABEL
  90844. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90845. >What you can change in PowerBuilder</L.LABEL
  90846. ><BI.BODY.INTRO><RBW-XREF REFID="38296" TYPE="XREF-TEXTCOPY">Editing Generated Source Files on page 2–13</RBW-XREF
  90847. > provides guidelines for editing generated PowerBuilder files. When editing visual objects in PowerBuilder, adhere to those general guidelines <CX5FX5FEMPHASIS>and</CX5FX5FEMPHASIS
  90848. > to the following guidelines for visual objects:</BI.BODY.INTRO
  90849. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90850. ></RBW-AUTOGEN
  90851. ></RBW-MARKER
  90852. ><RBW-PARABODY>You can change the position and size of a window or control.</RBW-PARABODY
  90853. ></LB.LIST.BULLET
  90854. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90855. ></RBW-AUTOGEN
  90856. ></RBW-MARKER
  90857. ><RBW-PARABODY>You can change the properties of a window or control.</RBW-PARABODY
  90858. ></LB.LIST.BULLET
  90859. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  90860. ></RBW-AUTOGEN
  90861. >The name of window or control is also stored in ObjectTeam; therefore:</N2.NOTE.2
  90862. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  90863. ></RBW-MARKER
  90864. ><RBW-PARABODY>If you change the name of a window, you must also change the class name of the window in the ObjectTeam. </RBW-PARABODY
  90865. ></LB2.LIST.BULLET.2
  90866. ><LB2.LIST.BULLET.2><RBW-MARKER><RBW-AUTOGEN>&truehy;&rbwtab;</RBW-AUTOGEN
  90867. ></RBW-MARKER
  90868. ><RBW-PARABODY>If you change the name of a control, you must also change the role name in ObjectTeam.</RBW-PARABODY
  90869. ></LB2.LIST.BULLET.2
  90870. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90871. ></RBW-AUTOGEN
  90872. ></RBW-MARKER
  90873. ><RBW-PARABODY>You can add code to a generated event. The body of each generated event contains the following comment. Add your code below the comment.</RBW-PARABODY
  90874. ></LB.LIST.BULLET
  90875. ><EM.EXAMPLE.MONO>// <RBWAUTO-0030>Implement this event</RBWAUTO-0030
  90876. >!</EM.EXAMPLE.MONO
  90877. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90878. ></RBW-AUTOGEN
  90879. ></RBW-MARKER
  90880. ><RBW-PARABODY>You can add new control events; however, you must then add those events to the appropriate control class in ObjectTeam <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  90881. > regenerating the PowerBuilder files. Round&truehy;trip engineering can do this for you, as described in <RBW-XREF REFID="22218" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering on page 5–11</RBW-XREF
  90882. >.</RBW-PARABODY
  90883. ></LB.LIST.BULLET
  90884. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90885. ></RBW-AUTOGEN
  90886. ></RBW-MARKER
  90887. ><RBW-PARABODY>You can add controls to a window; however, you must then define the same controls in ObjectTeam by adding the appropriate classes to the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  90888. > regenerating the PowerBuilder files. Round&truehy;trip engineering can do this for you, as described in <RBW-XREF REFID="22218" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering on page 5–11</RBW-XREF
  90889. >.</RBW-PARABODY
  90890. ></LB.LIST.BULLET
  90891. ></LABEL
  90892. ></SUBSECTION
  90893. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23395"></RBW-ANCHOR
  90894. >Alternative Technique</SS.SUBSEC.HEAD
  90895. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90896. >Two ways to model windows</L.LABEL
  90897. ><B.BODY>ObjectTeam provides two ways to model windows:</B.BODY
  90898. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90899. ></RBW-AUTOGEN
  90900. ></RBW-MARKER
  90901. ><RBW-PARABODY>Model the window and controls</RBW-PARABODY
  90902. ></LB.LIST.BULLET
  90903. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90904. ></RBW-AUTOGEN
  90905. ></RBW-MARKER
  90906. ><RBW-PARABODY>Model the window only</RBW-PARABODY
  90907. ></LB.LIST.BULLET
  90908. ></LABEL
  90909. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90910. >Model the window and controls</L.LABEL
  90911. ><B.BODY>As described in the previous sections, you can use ObjectTeam to model windows and controls, then use PowerBuilder to complete the generated window. The benefit of this approach is that, while modeling the application, you remain focused on the functions of the application rather than becoming distracted by the details of the GUI.</B.BODY
  90912. ></LABEL
  90913. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90914. >Model the window only</L.LABEL
  90915. ><B.BODY>Alternatively, you can use the following approach:</B.BODY
  90916. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  90917. ></RBW-AUTOGEN
  90918. ></RBW-MARKER
  90919. ><RBW-PARABODY>In ObjectTeam, model only the window.</RBW-PARABODY
  90920. ></LN.LIST.NUM
  90921. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  90922. ></RBW-AUTOGEN
  90923. ></RBW-MARKER
  90924. ><RBW-PARABODY>Generate the window.</RBW-PARABODY
  90925. ></LN.LIST.NUM
  90926. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  90927. ></RBW-AUTOGEN
  90928. ></RBW-MARKER
  90929. ><RBW-PARABODY>In PowerBuilder, add the controls and events.</RBW-PARABODY
  90930. ></LN.LIST.NUM
  90931. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  90932. ></RBW-AUTOGEN
  90933. ></RBW-MARKER
  90934. ><RBW-PARABODY>In ObjectTeam, use round&truehy;trip engineering to add the controls and events to the ObjectTeam model.</RBW-PARABODY
  90935. ></LN.LIST.NUM
  90936. ></LABEL
  90937. ></SUBSECTION
  90938. ></SECTION
  90939. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="20826"></RBW-ANCHOR
  90940. >Modeling Menus</S.SECTION.HEAD
  90941. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90942. >Menu class</L.LABEL
  90943. ><B.BODY><RBW-IDXTERM TERM1="Menu class"></RBW-IDXTERM
  90944. >To model menus in ObjectTeam, create a class for each menu item. The supertype class of a menu item is the menu class, which is defined in the PBBuiltins system.</B.BODY
  90945. ></LABEL
  90946. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90947. >Menus can contain other objects</L.LABEL
  90948. ><B.BODY>In PowerBuilder, a menu is a container object. A menu object can contain menus and menu cascades. A menu cascade can contain menus.</B.BODY
  90949. ></LABEL
  90950. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90951. >Sample menu</L.LABEL
  90952. ><B.BODY>Following is a menu similar to one used in the PowerBuilder tutorial:</B.BODY
  90953. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00816.unk" origfile="pics/menu.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  90954. ></FA.FIGURE.ANCHOR
  90955. ></LABEL
  90956. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90957. >Sample CD</L.LABEL
  90958. ><B.BODY>The following CD models the File pull&truehy;down menu shown above:</B.BODY
  90959. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00817.unk" origfile="pics/menucad.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  90960. ></FAR.FIGURE.ANCHOR.RIGHT
  90961. ></LABEL
  90962. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90963. >About the CD</L.LABEL
  90964. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90965. >Supertype class</SL.SUBLABEL
  90966. ><B.BODY>All classes are subtypes of the menu class; for simplicity, the subtype&truehy;supertype relationships are not shown.</B.BODY
  90967. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90968. >Global Type property</SL.SUBLABEL
  90969. ><B.BODY>In PowerBuilder, a menu must be a global object; therefore, the Global Type property of the m_frame class must be set to Yes. Typically, the menu items are local objects; therefore, the Global Type property is set to No for all other classes in the CD.</B.BODY
  90970. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90971. >Aggregations</SL.SUBLABEL
  90972. ><B.BODY>The aggregations define the menu structure: </B.BODY
  90973. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90974. ></RBW-AUTOGEN
  90975. ></RBW-MARKER
  90976. ><RBW-PARABODY>The menu object contains the tool bar items</RBW-PARABODY
  90977. ></LB.LIST.BULLET
  90978. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90979. ></RBW-AUTOGEN
  90980. ></RBW-MARKER
  90981. ><RBW-PARABODY>Each tool bar item contains the menu items on its pull&truehy;down menu</RBW-PARABODY
  90982. ></LB.LIST.BULLET
  90983. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90984. ></RBW-AUTOGEN
  90985. ></RBW-MARKER
  90986. ><RBW-PARABODY>Each menu item contains its cascading menu items (if any)</RBW-PARABODY
  90987. ></LB.LIST.BULLET
  90988. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  90989. ></RBW-AUTOGEN
  90990. >The role names become the PowerBuilder control names.</N.NOTE
  90991. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90992. >Operations</SL.SUBLABEL
  90993. ><B.BODY>Each menu item has a clicked event. Therefore, each class that represents a menu item, has a clicked() operation with the Event property of the operation selected.</B.BODY
  90994. ></LABEL
  90995. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  90996. >Completing the menu</L.LABEL
  90997. ><BI.BODY.INTRO>The generated PowerBuilder file contains the menu declarations, but no menu properties. The name of each menu item defaults to its control name. In PowerBuilder, open and edit the menu as follows:</BI.BODY.INTRO
  90998. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  90999. ></RBW-AUTOGEN
  91000. ></RBW-MARKER
  91001. ><RBW-PARABODY>Edit the name of each menu item.</RBW-PARABODY
  91002. ></LB.LIST.BULLET
  91003. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91004. ></RBW-AUTOGEN
  91005. ></RBW-MARKER
  91006. ><RBW-PARABODY>Optionally, edit other menu item properties.</RBW-PARABODY
  91007. ></LB.LIST.BULLET
  91008. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91009. ></RBW-AUTOGEN
  91010. ></RBW-MARKER
  91011. ><RBW-PARABODY>For each menu item, add the script for the clicked() event.</RBW-PARABODY
  91012. ></LB.LIST.BULLET
  91013. ></LABEL
  91014. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91015. >Toolbars</L.LABEL
  91016. ><B.BODY>You do not model toolbars in ObjectTeam. To place a menu item in a toolbar, specify the appropriate menu properties in PowerBuilder. Only MDI applications can have toolbars.</B.BODY
  91017. ></LABEL
  91018. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91019. >Menu cascades</L.LABEL
  91020. ><B.BODY>A menu cascade in PowerBuilder is a toolbar icon that has a drop&truehy;down list of other toolbar icons. Only MDI applications can have menu cascades.</B.BODY
  91021. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  91022. ></RBW-AUTOGEN
  91023. ></RBW-MARKER
  91024. ><RBW-PARABODY>To model a menu cascade in ObjectTeam:</RBW-PARABODY
  91025. ></P.PROCEDURE
  91026. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  91027. ></RBW-AUTOGEN
  91028. ></RBW-MARKER
  91029. ><RBW-PARABODY>Model a menu, as shown above.</RBW-PARABODY
  91030. ></LN.LIST.NUM
  91031. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  91032. ></RBW-AUTOGEN
  91033. ></RBW-MARKER
  91034. ><RBW-PARABODY>Change the supertype of the parent menu item from menu to menucascade. (For example, change the supertype of m_open from menu to menucascade.)</RBW-PARABODY
  91035. ></LN.LIST.NUM
  91036. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  91037. ></RBW-AUTOGEN
  91038. ></RBW-MARKER
  91039. ><RBW-PARABODY>Generate the menu.</RBW-PARABODY
  91040. ></LN.LIST.NUM
  91041. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  91042. ></RBW-AUTOGEN
  91043. ></RBW-MARKER
  91044. ><RBW-PARABODY>In PowerBuilder, make sure that the child menu items have toolbar icons.</RBW-PARABODY
  91045. ></LN.LIST.NUM
  91046. ><LR.LIST.RESULT>When you run the MDI application, the toolbar contains a menu cascade that contains the icons for the child menu items.</LR.LIST.RESULT
  91047. ></LABEL
  91048. ></SECTION
  91049. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="11993"></RBW-ANCHOR
  91050. >Modeling Windows</S.SECTION.HEAD
  91051. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91052. >Window class</L.LABEL
  91053. ><B.BODY>To model a PowerBuilder window in ObjectTeam, create a class that represents the window and make it a subclass of the window class, which is defined in the PBBuiltins system.</B.BODY
  91054. ></LABEL
  91055. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91056. >Windows can contain other objects</L.LABEL
  91057. ><B.BODY>In PowerBuilder, a window is a container object. It can contain menus, structures, standard visual user objects, and custom visual user objects.</B.BODY
  91058. ></LABEL
  91059. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91060. >Class properties</L.LABEL
  91061. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91062. >Global Type</SL.SUBLABEL
  91063. ><B.BODY>ObjectTeam does not generate code for the window unless it is a global object; therefore, set the Global Type property of the class that represents the window to Yes.</B.BODY
  91064. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91065. >Window Type</SL.SUBLABEL
  91066. ><B.BODY>The Window Type property of the class that represents the window determines the type of window that is generated: Child, Main (default), MDI, MDIHelp, Popup, or Response.</B.BODY
  91067. ></LABEL
  91068. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91069. >Aggregations</L.LABEL
  91070. ><B.BODY>A window can contain other objects. As described in <RBW-XREF REFID="11320" TYPE="XREF-TEXTCOPY">Basic Modeling Technique</RBW-XREF
  91071. >, you use aggregations to indicate which objects are contained in a window.</B.BODY
  91072. ></LABEL
  91073. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91074. >Sample window</L.LABEL
  91075. ><B.BODY>Following is the main window of the MDI application built in the PowerBuilder tutorial:</B.BODY
  91076. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00818.unk" origfile="pics/wframe.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  91077. ></FA.FIGURE.ANCHOR
  91078. ></LABEL
  91079. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91080. >Sample CD</L.LABEL
  91081. ><BI.BODY.INTRO>The following CD models the window:</BI.BODY.INTRO
  91082. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00819.unk" origfile="pics/wfrmcad.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  91083. ></FA.FIGURE.ANCHOR
  91084. ></LABEL
  91085. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91086. >About the CD</L.LABEL
  91087. ><B.BODY>The w_frame window is a global PowerBuilder window of type MDI Frame With Microhelp. Therefore, in the w_frame class, the Global Type property is set to Yes and the Window Type property is set to MDIHelp. </B.BODY
  91088. ></LABEL
  91089. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91090. >Completing the window</L.LABEL
  91091. ><B.BODY>To complete the window in PowerBuilder, specify the title of the window by editing the window’s properties.</B.BODY
  91092. ></LABEL
  91093. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91094. >Inheritance</L.LABEL
  91095. ><B.BODY>PowerBuilder and ObjectTeam both support inheritance of windows. For an example of how to model inheritance of windows, see <RBW-XREF REFID="28166" TYPE="XREF-TEXTCOPY">Modeling Data Windows</RBW-XREF
  91096. >.</B.BODY
  91097. ></LABEL
  91098. ></SECTION
  91099. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="40978"></RBW-ANCHOR
  91100. >Modeling Standard Visual User Objects</S.SECTION.HEAD
  91101. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91102. >Standard visual user objects</L.LABEL
  91103. ><B.BODY>A standard visual user object is a global object that is predefined in PowerBuilder. In ObjectTeam, each stardard visual user object is represented as a class in the PBBuiltins system.</B.BODY
  91104. ></LABEL
  91105. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91106. >Events on standard visual user objects</L.LABEL
  91107. ><B.BODY>Each standard visual user object contains a set of predefined events.</B.BODY
  91108. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91109. ></RBW-AUTOGEN
  91110. ></RBW-MARKER
  91111. ><RBW-PARABODY>If you need only these predefined events, you can simply use the standard visual user object provided by PowerBuilder.</RBW-PARABODY
  91112. ></LB.LIST.BULLET
  91113. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91114. ></RBW-AUTOGEN
  91115. ></RBW-MARKER
  91116. ><RBW-PARABODY>If you want to redefine a predefined event or add new events, you create a new object based on the standard visual user object.</RBW-PARABODY
  91117. ></LB.LIST.BULLET
  91118. ></LABEL
  91119. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91120. >Modeling standard visual user object</L.LABEL
  91121. ><B.BODY><RBW-IDXTERM TERM1="standard visual user object"></RBW-IDXTERM
  91122. ><RBW-IDXTERM TERM1="modeling" TERM2="standard visual user object"></RBW-IDXTERM
  91123. >To model a standard visual user object, add the appropriate PBBuiltins class to your CD and use an aggregation to indicate that the window contains the standard visual user object.</B.BODY
  91124. ></LABEL
  91125. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91126. >Modeling new object based on standard visual user object</L.LABEL
  91127. ><B.BODY><RBW-IDXTERM TERM1="standard visual user object"></RBW-IDXTERM
  91128. ><RBW-IDXTERM TERM1="modeling" TERM2="standard visual user object"></RBW-IDXTERM
  91129. >To model a new object based on a standard visual user object, create a class that represents the user object and make it a subclass of the appropriate PBBuiltins class. Use an aggregation to indicate that the window contains the new object.</B.BODY
  91130. ></LABEL
  91131. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91132. >Example</L.LABEL
  91133. ><B.BODY>The following CD models a window with three controls: a picture control and two command buttons. For the picture control, the predefined events are sufficient so you can use the standard visual user object picture. For the command buttons, the clicked event must be redefined so you must create new objects: cb_ok and cb_cancel.</B.BODY
  91134. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00820.unk" origfile="pics/suserobj.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  91135. ></FAR.FIGURE.ANCHOR.RIGHT
  91136. ></LABEL
  91137. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91138. >Class properties</L.LABEL
  91139. ><B.BODY>Typically, if you define a new object based on a standard visual user object, the new object is used only within a single window. In this case, the window is a global object and the new object is a local object; therefore, in the class that represents the new object, you generally set the Global Type property to No. In the previous CD, for example, the Global Type property is set to No for both the cb_ok and cb_cancel classes.</B.BODY
  91140. ></LABEL
  91141. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91142. >PBBuiltins classes</L.LABEL
  91143. ><B.BODY>Following are the valid supertype classes for standard visual user objects:</B.BODY
  91144. ><RBW-TABLE><TGROUP COLS="3"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="162p"><COLSPEC COLNAME="3" COLWIDTH="144p"><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>checkbox</CELLBODY
  91145. ></ENTRY
  91146. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>commandbutton</CELLBODY
  91147. ></ENTRY
  91148. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>datawindow</CELLBODY
  91149. ></ENTRY
  91150. ></RBW-ROW
  91151. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>dropdownlistbox</CELLBODY
  91152. ></ENTRY
  91153. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>dropdownpicturelistbox</CELLBODY
  91154. ></ENTRY
  91155. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>editmask</CELLBODY
  91156. ></ENTRY
  91157. ></RBW-ROW
  91158. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>graph</CELLBODY
  91159. ></ENTRY
  91160. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>groupbox</CELLBODY
  91161. ></ENTRY
  91162. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>hscrollbar</CELLBODY
  91163. ></ENTRY
  91164. ></RBW-ROW
  91165. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>line</CELLBODY
  91166. ></ENTRY
  91167. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>listbox</CELLBODY
  91168. ></ENTRY
  91169. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>listview</CELLBODY
  91170. ></ENTRY
  91171. ></RBW-ROW
  91172. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>multilineedit</CELLBODY
  91173. ></ENTRY
  91174. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>olecontrol</CELLBODY
  91175. ></ENTRY
  91176. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>oval</CELLBODY
  91177. ></ENTRY
  91178. ></RBW-ROW
  91179. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>picture</CELLBODY
  91180. ></ENTRY
  91181. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>picturebutton</CELLBODY
  91182. ></ENTRY
  91183. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>picturelistbox</CELLBODY
  91184. ></ENTRY
  91185. ></RBW-ROW
  91186. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>radiobutton</CELLBODY
  91187. ></ENTRY
  91188. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>rectangle</CELLBODY
  91189. ></ENTRY
  91190. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>richtextedit</CELLBODY
  91191. ></ENTRY
  91192. ></RBW-ROW
  91193. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>roundrectangle</CELLBODY
  91194. ></ENTRY
  91195. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>singlelineedit</CELLBODY
  91196. ></ENTRY
  91197. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>statictext</CELLBODY
  91198. ></ENTRY
  91199. ></RBW-ROW
  91200. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>tab</CELLBODY
  91201. ></ENTRY
  91202. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>treeview</CELLBODY
  91203. ></ENTRY
  91204. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>vscrollbar</CELLBODY
  91205. ></ENTRY
  91206. ></RBW-ROW
  91207. ></TBODY
  91208. ></TGROUP
  91209. ></RBW-TABLE
  91210. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91211. >Data windows</SL.SUBLABEL
  91212. ><B.BODY>The datawindow class represents a data window <CX5FX5FEMPHASIS>control</CX5FX5FEMPHASIS
  91213. >. ObjectTeam does not generate data window <CX5FX5FEMPHASIS>objects</CX5FX5FEMPHASIS
  91214. >. Use PowerBuilder to create the data window object and to associate the data window object with the generated data window control. See <RBW-XREF REFID="28166" TYPE="XREF-TEXTCOPY">Modeling Data Windows</RBW-XREF
  91215. > for more information.</B.BODY
  91216. ></LABEL
  91217. ></SECTION
  91218. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="16125"></RBW-ANCHOR
  91219. >Modeling Custom Visual User Objects</S.SECTION.HEAD
  91220. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91221. >Introductions</L.LABEL
  91222. ><B.BODY>Custom visual user objects allow you to group visual user objects. By placing a custom visual user object in a window, you place the entire group of visual user objects in the window.</B.BODY
  91223. ></LABEL
  91224. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91225. >Userobject class</L.LABEL
  91226. ><B.BODY>To model a custom visual user object in ObjectTeam, create a class that represents the user object and make it a subclass of the userobject class, which is defined in the PBBuiltins system.</B.BODY
  91227. ></LABEL
  91228. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91229. >Userobjects can contain other objects</L.LABEL
  91230. ><B.BODY>In PowerBuilder, a custom visual user object is a container object. It can contain structures, standard visual user objects, and other custom visual user objects.</B.BODY
  91231. ></LABEL
  91232. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91233. >Class properties</L.LABEL
  91234. ><B.BODY>A custom visual user object is generally a global object, which allows it to be used on more than one window. Therefore, for a class that represents a custom visual user object, you generally set the Global Type property to Yes.</B.BODY
  91235. ></LABEL
  91236. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91237. >Aggregations</L.LABEL
  91238. ><B.BODY>A custom visual user object, like a window, can contain other objects. As described in <RBW-XREF REFID="11320" TYPE="XREF-TEXTCOPY">Basic Modeling Technique</RBW-XREF
  91239. >, you use aggregations to indicate containment.</B.BODY
  91240. ></LABEL
  91241. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91242. >Sample window</L.LABEL
  91243. ><B.BODY><RBW-XREF REFID="11320" TYPE="XREF-TEXTCOPY">Basic Modeling Technique</RBW-XREF
  91244. > shows the w_welcome window that is built in the PowerBuilder tutorial. The user name and password fields that appear in that window might be useful in a number of different windows.</B.BODY
  91245. ><B.BODY>The following CDs show how you might model those fields as a custom visual user object and how you would then include that custom visual user object on the w_welcome window.</B.BODY
  91246. ></LABEL
  91247. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91248. >Sample CD: define the userobject</L.LABEL
  91249. ><BI.BODY.INTRO>The following CD models a custom visual user object that contains the user name and password fields:</BI.BODY.INTRO
  91250. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00821.unk" origfile="pics/userodef.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  91251. ></FA.FIGURE.ANCHOR
  91252. ></LABEL
  91253. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91254. >Sample CD: use the userobject</L.LABEL
  91255. ><B.BODY>The following CD models the w_welcome window using the custom visual user object defined above:</B.BODY
  91256. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00822.unk" origfile="pics/userouse.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  91257. ></FA.FIGURE.ANCHOR
  91258. ></LABEL
  91259. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91260. >Control names for global objects</L.LABEL
  91261. ><B.BODY>In PowerBuilder, a control cannot have the same name as a global object. In the CD shown above, for example, if you used a role name of u_loginfields instead of u_login, the PowerBuilder code generator would display the following error:</B.BODY
  91262. ><EWM.EXAMPLEW.MONO>Name of aggregation “u_loginfields” from class “w_welcome” to class “u_loginfields” results in invalid type name in global class “w_welcome”.</EWM.EXAMPLEW.MONO
  91263. ></LABEL
  91264. ></SECTION
  91265. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="28166"></RBW-ANCHOR
  91266. >Modeling Data Windows</S.SECTION.HEAD
  91267. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91268. >Introduction</L.LABEL
  91269. ><B.BODY>This section uses an example from the PowerBuilder tutorial to show the use of inheritance, data windows, and external objects.</B.BODY
  91270. ></LABEL
  91271. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91272. >Sample window</L.LABEL
  91273. ><B.BODY>In the PowerBuilder tutorial, you create two windows, w_customers and w_products, that provide access to the Customer and Product tables in the Powersoft Demo Database. Following is the w_customers window; the w_products window is similar.</B.BODY
  91274. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00823.unk" origfile="pics/wcust.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  91275. ></FAR.FIGURE.ANCHOR.RIGHT
  91276. ></LABEL
  91277. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91278. >Implementation details</L.LABEL
  91279. ><B.BODY>To implement the w_customers and w_products window, you use inheritance and external objects:</B.BODY
  91280. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91281. ></RBW-AUTOGEN
  91282. ></RBW-MARKER
  91283. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Inheritance.</CX5FX5FBULLET.EMPHASIS
  91284. > The w_customers and w_products windows are both based on the ancestor window, w_master_detail. The ancestor window defines the data window controls, dw_master and dw_details, that appear in the descendant windows.</RBW-PARABODY
  91285. ></LB.LIST.BULLET
  91286. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91287. ></RBW-AUTOGEN
  91288. ></RBW-MARKER
  91289. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>External objects.</CX5FX5FBULLET.EMPHASIS
  91290. > The data window controls, dw_master and dw_detail, are both based on the data window control u_dwstandard. You do not create u_dwstandard; it is an external object defined in the PowerBuilder library <CX5FX5FFILE.NAME>pbtutor.pbl</CX5FX5FFILE.NAME
  91291. >.</RBW-PARABODY
  91292. ></LB.LIST.BULLET
  91293. ></LABEL
  91294. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91295. >In this section</L.LABEL
  91296. ><B.BODY>This section contains the following topics:</B.BODY
  91297. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  91298. ></ENTRY
  91299. ></RBW-ROW
  91300. ></THEAD
  91301. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17760" TYPE="XREF-TEXTCOPY">Using Inheritance&rbwtab;4–23</RBW-XREF
  91302. ></SB.SECTION.BLOCK.TABLE
  91303. ></ENTRY
  91304. ></RBW-ROW
  91305. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="37141" TYPE="XREF-TEXTCOPY">Using External Objects&rbwtab;4–25</RBW-XREF
  91306. ></SB.SECTION.BLOCK.TABLE
  91307. ></ENTRY
  91308. ></RBW-ROW
  91309. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="19080" TYPE="XREF-TEXTCOPY">Completing the Generated Windows&rbwtab;4–27</RBW-XREF
  91310. ></SB.SECTION.BLOCK.TABLE
  91311. ></ENTRY
  91312. ></RBW-ROW
  91313. ></TBODY
  91314. ></TGROUP
  91315. ></RBW-TABLE
  91316. ></LABEL
  91317. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="17760"></RBW-ANCHOR
  91318. >Using Inheritance</SS.SUBSEC.HEAD
  91319. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91320. >Sample CD</L.LABEL
  91321. ><B.BODY>The following CD models the w_customers and w_products windows:</B.BODY
  91322. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00824.unk" origfile="pics/wcustcad.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  91323. ></FAR.FIGURE.ANCHOR.RIGHT
  91324. ></LABEL
  91325. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91326. >Windows</L.LABEL
  91327. ><B.BODY>The w_customers and w_products windows are both based on the w_master_details window. All three windows are global objects; therefore, the Global Type property is set to Yes for all three classes.</B.BODY
  91328. ></LABEL
  91329. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91330. >Events</L.LABEL
  91331. ><B.BODY>The operations specified in the w_master_details class are events; therefore, the Event property is specified for each operation. The events are generated in the source file for the w_master_detail window; they are then available to the descendant windows.</B.BODY
  91332. ></LABEL
  91333. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91334. >Menu</L.LABEL
  91335. ><B.BODY>The menu is a global object; therefore, its Global Type property is set to Yes. It is associated with the w_master_detail window, so it is also available to the descendant windows.</B.BODY
  91336. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  91337. ></RBW-AUTOGEN
  91338. >This example assumes that the m_fileopen class is further defined by another CD in the current system. See <RBW-XREF REFID="20826" TYPE="XREF-TEXTCOPY">Modeling Menus</RBW-XREF
  91339. > for more information about menus.</N.NOTE
  91340. ></LABEL
  91341. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91342. >Data window controls</L.LABEL
  91343. ><B.BODY>The data window controls, dw_master and dw_detail, are both local objects; therefore, their Global Type properties are set to No. They are defined in the source file generated for the w_master_detail window; therefore, they also appear in the descendant windows.</B.BODY
  91344. ><B.BODY>The dw_master and dw_detail data window controls are both based on the u_dwstandard data window control, which is defined in another PowerBuilder library (another ObjectTeam system). See <RBW-XREF REFID="37141" TYPE="XREF-TEXTCOPY">Using External Objects</RBW-XREF
  91345. > for more information.</B.BODY
  91346. ></LABEL
  91347. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91348. >Data window objects</L.LABEL
  91349. ><B.BODY>In PowerBuilder, a data window <CX5FX5FEMPHASIS>control</CX5FX5FEMPHASIS
  91350. > contains a data window <CX5FX5FEMPHASIS>object</CX5FX5FEMPHASIS
  91351. >. ObjectTeam does not generate data window <CX5FX5FEMPHASIS>objects</CX5FX5FEMPHASIS
  91352. >, therefore, they are not included in the CD.</B.BODY
  91353. ><B.BODY>After generating the PowerBuilder source files, in PowerBuilder, you create the data window <CX5FX5FEMPHASIS>objects</CX5FX5FEMPHASIS
  91354. > and add them to generated data window <CX5FX5FEMPHASIS>controls</CX5FX5FEMPHASIS
  91355. >. See <RBW-XREF REFID="19080" TYPE="XREF-TEXTCOPY">Completing the Generated Windows</RBW-XREF
  91356. > for more information.</B.BODY
  91357. ></LABEL
  91358. ></SUBSECTION
  91359. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="37141"></RBW-ANCHOR
  91360. >Using External Objects</SS.SUBSEC.HEAD
  91361. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91362. >Introduction</L.LABEL
  91363. ><B.BODY>This section describes how to use <CX5FX5FEMPHASIS>external objects</CX5FX5FEMPHASIS
  91364. > — objects that are defined in a PowerBuilder library other than the current PowerBuilder library.</B.BODY
  91365. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  91366. ></RBW-AUTOGEN
  91367. >The term external objects used in this section does not refer to PowerBuilder’s external visual user objects. ObjectTeam does not generate external visual user objects.</N.NOTE
  91368. ></LABEL
  91369. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91370. >External objects in PowerBuilder</L.LABEL
  91371. ><B.BODY>A PowerBuilder library defines a set of objects. An object defined in one PowerBuilder library can reference the objects defined in another PowerBuilder library. </B.BODY
  91372. ><B.BODY>For example, the dw_master and dw_detail data window controls are defined in the current PowerBuilder library, but they are based on the u_dwstandard data window control defined in the <CX5FX5FFILE.NAME>pbtutor.pbl</CX5FX5FFILE.NAME
  91373. > PowerBuilder library.</B.BODY
  91374. ></LABEL
  91375. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91376. >External classes in ObjectTeam</L.LABEL
  91377. ><B.BODY>In ObjectTeam, each system defines a PowerBuilder library. A class defined in the current system represents an object that is defined in the PowerBuilder library. An external class — one that appears in the current system, but is defined another system — represents an object that is defined in another PowerBuilder library.</B.BODY
  91378. ><B.BODY>For example, the dw_master and dw_detail classes shown in the CD at the beginning of this section (<RBW-XREF REFID="28166" TYPE="XREF-TEXTCOPY">Modeling Data Windows</RBW-XREF
  91379. >) are defined in the current system. The u_dwstandard class is defined in another system.</B.BODY
  91380. ></LABEL
  91381. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91382. >Generated code references external objects</L.LABEL
  91383. ><B.BODY>ObjectTeam does not generate code for external classes. However, the code it generates for the classes defined in the current system can reference external classes. To generate the appropriate references to the external classes, ObjectTeam must know the supertype of the external class; that is, it must know the type of the referenced object.</B.BODY
  91384. ></LABEL
  91385. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91386. >External classes must be defined</L.LABEL
  91387. ><B.BODY>Every external class used in a system, must be defined in another system that is in the same phase as the current system. For PowerBuilder code generation, the only information required for the external class is its supertype. </B.BODY
  91388. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91389. >Example</SL.SUBLABEL
  91390. ><B.BODY>The following CD defines the external class u_dwstandard.</B.BODY
  91391. ><T.TIP><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  91392. ></RBW-AUTOGEN
  91393. >You can create this CD by reverse engineering the PowerBuilder library <CX5FX5FFILE.NAME>pbtutor.pbl</CX5FX5FFILE.NAME
  91394. >. <RBW-XREF REFID="32714" TYPE="XREF-TEXTCOPY">Chapter 5, Reverse and Round&truehy;Trip Engineering</RBW-XREF
  91395. >, describes how you can use reverse engineering to build systems that define external classes.</T.TIP
  91396. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00825.unk" origfile="pics/udwcad.gif" origtype="X" origdoc="../../sources/pb/pbgui.fm5.mif"></RBW-GRAPHIC
  91397. ></FAR.FIGURE.ANCHOR.RIGHT
  91398. ></LABEL
  91399. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91400. >Library search path</L.LABEL
  91401. ><B.BODY>When you import a source file into a PowerBuilder library, PowerBuilder must be able to resolve all references to external objects. The library search path defines the list of libraries that PowerBuilder uses to resolve external objects.</B.BODY
  91402. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91403. ></RBW-AUTOGEN
  91404. ></RBW-MARKER
  91405. ><RBW-PARABODY>In PowerBuilder, you define the library search path by editing the application properties.</RBW-PARABODY
  91406. ></LB.LIST.BULLET
  91407. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91408. ></RBW-AUTOGEN
  91409. ></RBW-MARKER
  91410. ><RBW-PARABODY>In ObjectTeam, the code generator defines the library search path as the list of all PowerBuilder libraries in all subdirectories of the current <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  91411. >.</RBW-PARABODY
  91412. ></LB.LIST.BULLET
  91413. ></LABEL
  91414. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91415. >How to add libraries to ObjectTeam search path</L.LABEL
  91416. ><B.BODY>When you create a PowerBuilder library in ObjectTeam, the <CX5FX5FVARIABLE>system</CX5FX5FVARIABLE
  91417. >.<CX5FX5FFILE.NAME>pbl</CX5FX5FFILE.NAME
  91418. > library appears in the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  91419. >\<CX5FX5FVARIABLE>system</CX5FX5FVARIABLE
  91420. > directory. When you configure the PowerBuilder environment in the Implementation phase, the <CX5FX5FFILE.NAME>classlib.pbl</CX5FX5FFILE.NAME
  91421. > library appears in the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  91422. >\<CX5FX5FFILE.NAME>src</CX5FX5FFILE.NAME
  91423. > directory. </B.BODY
  91424. ><B.BODY>If you want to include additional PowerBuilder libraries in the library search path used by the code generator, copy the PowerBuilder libraries into the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  91425. >\<CX5FX5FFILE.NAME>src</CX5FX5FFILE.NAME
  91426. > directory. For example, to add <CX5FX5FFILE.NAME>pbtutor.pbl</CX5FX5FFILE.NAME
  91427. > to the library search path, copy <CX5FX5FFILE.NAME>pbtutor.pbl</CX5FX5FFILE.NAME
  91428. > to the <CX5FX5FVARIABLE>user_environment</CX5FX5FVARIABLE
  91429. >\<CX5FX5FFILE.NAME>src</CX5FX5FFILE.NAME
  91430. > directory.</B.BODY
  91431. ></LABEL
  91432. ></SUBSECTION
  91433. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="19080"></RBW-ANCHOR
  91434. >Completing the Generated Windows</SS.SUBSEC.HEAD
  91435. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91436. >Introduction</L.LABEL
  91437. ><B.BODY>After generating the PowerBuilder source files, in PowerBuilder, complete them as described below.</B.BODY
  91438. ></LABEL
  91439. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91440. >w_master_details</L.LABEL
  91441. ><B.BODY>To complete the w_master_details window:</B.BODY
  91442. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91443. ></RBW-AUTOGEN
  91444. ></RBW-MARKER
  91445. ><RBW-PARABODY>Resize the dw_master and dw_detail controls.</RBW-PARABODY
  91446. ></LB.LIST.BULLET
  91447. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91448. ></RBW-AUTOGEN
  91449. ></RBW-MARKER
  91450. ><RBW-PARABODY>Add the script for the rowfocuschanged event of the dw_master control.</RBW-PARABODY
  91451. ></LB.LIST.BULLET
  91452. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91453. ></RBW-AUTOGEN
  91454. ></RBW-MARKER
  91455. ><RBW-PARABODY>Add the scripts for the ue_retrieve, ue_insert, ue_update, ue_delete, and open events of the w_master_details window.</RBW-PARABODY
  91456. ></LB.LIST.BULLET
  91457. ></LABEL
  91458. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91459. >w_customers</L.LABEL
  91460. ><B.BODY>In the w_customers window, the data window <CX5FX5FEMPHASIS>control</CX5FX5FEMPHASIS
  91461. > dw_master contains the data window <CX5FX5FEMPHASIS>object</CX5FX5FEMPHASIS
  91462. > d_custlist and the data window <CX5FX5FEMPHASIS>control</CX5FX5FEMPHASIS
  91463. > dw_details contains the data window <CX5FX5FEMPHASIS>object</CX5FX5FEMPHASIS
  91464. > d_customer.</B.BODY
  91465. ><B.BODY>To complete the w_customers window:</B.BODY
  91466. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91467. ></RBW-AUTOGEN
  91468. ></RBW-MARKER
  91469. ><RBW-PARABODY>Edit the title of the window by editing the window properties.</RBW-PARABODY
  91470. ></LB.LIST.BULLET
  91471. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91472. ></RBW-AUTOGEN
  91473. ></RBW-MARKER
  91474. ><RBW-PARABODY>Create the d_custlist data window object.</RBW-PARABODY
  91475. ></LB.LIST.BULLET
  91476. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91477. ></RBW-AUTOGEN
  91478. ></RBW-MARKER
  91479. ><RBW-PARABODY>Specify d_custlist as the data window object associated with the dw_master control by editing the control’s properties.</RBW-PARABODY
  91480. ></LB.LIST.BULLET
  91481. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91482. ></RBW-AUTOGEN
  91483. ></RBW-MARKER
  91484. ><RBW-PARABODY>Create the d_customer data window object.</RBW-PARABODY
  91485. ></LB.LIST.BULLET
  91486. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91487. ></RBW-AUTOGEN
  91488. ></RBW-MARKER
  91489. ><RBW-PARABODY>Specify d_customer as the data window object associated with the dw_details control by editing the control’s properties.</RBW-PARABODY
  91490. ></LB.LIST.BULLET
  91491. ></LABEL
  91492. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91493. >w_products</L.LABEL
  91494. ><B.BODY>In the w_products window, the data window <CX5FX5FEMPHASIS>control</CX5FX5FEMPHASIS
  91495. > dw_master contains the data window <CX5FX5FEMPHASIS>object</CX5FX5FEMPHASIS
  91496. > d_prodlist and the data window <CX5FX5FEMPHASIS>control</CX5FX5FEMPHASIS
  91497. > dw_details contains the data window <CX5FX5FEMPHASIS>object</CX5FX5FEMPHASIS
  91498. > d_product.</B.BODY
  91499. ><B.BODY>To complete the w_products window:</B.BODY
  91500. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91501. ></RBW-AUTOGEN
  91502. ></RBW-MARKER
  91503. ><RBW-PARABODY>Edit the title of the window by editing the window properties.</RBW-PARABODY
  91504. ></LB.LIST.BULLET
  91505. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91506. ></RBW-AUTOGEN
  91507. ></RBW-MARKER
  91508. ><RBW-PARABODY>Create the d_prodlist data window object.</RBW-PARABODY
  91509. ></LB.LIST.BULLET
  91510. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91511. ></RBW-AUTOGEN
  91512. ></RBW-MARKER
  91513. ><RBW-PARABODY>Specify d_prodlist as the data window object associated with the dw_master control by editing the control’s properties.</RBW-PARABODY
  91514. ></LB.LIST.BULLET
  91515. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91516. ></RBW-AUTOGEN
  91517. ></RBW-MARKER
  91518. ><RBW-PARABODY>Create the d_product data window object.</RBW-PARABODY
  91519. ></LB.LIST.BULLET
  91520. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91521. ></RBW-AUTOGEN
  91522. ></RBW-MARKER
  91523. ><RBW-PARABODY>Specify d_product as the data window object associated with the dw_details control by editing the control’s properties.</RBW-PARABODY
  91524. ></LB.LIST.BULLET
  91525. ><B.BODY></B.BODY
  91526. ><RBWAUTO-0001></RBWAUTO-0001
  91527. ><!--
  91528.  
  91529.  
  91530.  
  91531.  
  91532.  
  91533. CONVERTING SOURCE FILE ../../sources/pb/pbeng.fm5.mif
  91534.  
  91535.  
  91536. --><B.BODY></B.BODY
  91537. ><B.BODY></B.BODY
  91538. ><B.BODY></B.BODY
  91539. ><B.BODY></B.BODY
  91540. ><B.BODY></B.BODY
  91541. ></LABEL
  91542. ></SUBSECTION
  91543. ></SECTION
  91544. ></CHAPTER
  91545. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 5&rbwtab;</CX5FX5FZCHAPTER.NUM
  91546. ></RBW-AUTOGEN
  91547. ><RBW-ANCHOR ID="32714"></RBW-ANCHOR
  91548. >Reverse and Round&truehy;Trip Engineering<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  91549. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for PowerBuilder</RBW-TEXTFLD
  91550. ></RBW-SYSOBJ
  91551. ></C.CHAPTER.HEAD
  91552. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91553. >Introduction</L.LABEL
  91554. ><B.BODY>This chapter describes how to use reverse engineering and round&truehy;trip engineering with the PowerBuilder code generator.</B.BODY
  91555. ></LABEL
  91556. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91557. >Reverse engineering</L.LABEL
  91558. ><B.BODY><CX5FX5FEMPHASIS>Reverse engineering</CX5FX5FEMPHASIS
  91559. > objects defined in an existing PowerBuilder library makes them available as classes in ObjectTeam. ObjectTeam projects can use the classes to reference the existing objects. In this way, reverse engineering supports reuse of software components.</B.BODY
  91560. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  91561. ></RBW-AUTOGEN
  91562. >Classes created by reverse engineering should not be edited or regenerated from within ObjectTeam. They should only be used as external classes.</N.NOTE
  91563. ></LABEL
  91564. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91565. >Round&truehy;trip engineering</L.LABEL
  91566. ><B.BODY><CX5FX5FTERM>Round&truehy;trip engineering</CX5FX5FTERM
  91567. > updates the ObjectTeam model based on the changes you have made to the generated PowerBuilder source files. Use round&truehy;trip engineering to update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  91568. > you regenerate the source files. If you add variables, functions, controls, or structures to the generated source file, but do not add them to the ObjectTeam model, they are lost when you regenerate the source files.</B.BODY
  91569. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91570. >Explanation</SL.SUBLABEL
  91571. ><B.BODY>The code generator generates code based on the ObjectTeam model. When you regenerate the source file, only the attributes, operations, and controls defined in the model appear in the generated source file.</B.BODY
  91572. ></LABEL
  91573. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91574. >In this chapter</L.LABEL
  91575. ><B.BODY>This chapter contains the following sections:</B.BODY
  91576. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  91577. ></ENTRY
  91578. ></RBW-ROW
  91579. ></THEAD
  91580. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="17925" TYPE="XREF-TEXTCOPY">Reverse Engineering&rbwtab;5–2</RBW-XREF
  91581. ></SB.SECTION.BLOCK.TABLE
  91582. ></ENTRY
  91583. ></RBW-ROW
  91584. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22218" TYPE="XREF-TEXTCOPY">Round&truehy;Trip Engineering&rbwtab;5–11</RBW-XREF
  91585. ></SB.SECTION.BLOCK.TABLE
  91586. ></ENTRY
  91587. ></RBW-ROW
  91588. ></TBODY
  91589. ></TGROUP
  91590. ></RBW-TABLE
  91591. ></LABEL
  91592. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="17925"></RBW-ANCHOR
  91593. >Reverse Engineering</S.SECTION.HEAD
  91594. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91595. >Introduction</L.LABEL
  91596. ><B.BODY><RBW-IDXTERM TERM1="project" TERM2="using data from other sources"></RBW-IDXTERM
  91597. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  91598. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  91599. ><RBW-IDXTERM TERM1="reverse engineering"></RBW-IDXTERM
  91600. ><RBW-IDXTERM TERM1="class library, reverse engineering"></RBW-IDXTERM
  91601. >Reverse engineering parses files exported from PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  91602. >) libraries and builds CDs and CDMs that model the objects defined in those files. It can be particularly useful if you want to reference existing PowerBuilder objects from within an ObjectTeam project.</B.BODY
  91603. ></LABEL
  91604. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91605. >Purpose </L.LABEL
  91606. ><B.BODY>Use reverse engineering to capture and display the objects defined in your PowerBuilder (<CX5FX5FFILE.NAME>.pbl</CX5FX5FFILE.NAME
  91607. >) libraries. This serves two primary purposes:</B.BODY
  91608. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91609. ></RBW-AUTOGEN
  91610. ></RBW-MARKER
  91611. ><RBW-PARABODY>Makes the PowerBuilder objects available as ObjectTeam classes.</RBW-PARABODY
  91612. ></LB.LIST.BULLET
  91613. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91614. ></RBW-AUTOGEN
  91615. ></RBW-MARKER
  91616. ><RBW-PARABODY>Helps you to understand the structure and functionality of the PowerBuilder objects.</RBW-PARABODY
  91617. ></LB.LIST.BULLET
  91618. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91619. >Not an import utility</SL.SUBLABEL
  91620. ><B.BODY>Reverse engineering is not designed to capture all the information in a PowerBuilder export file. Therefore, do not use reverse engineering to import objects in order to edit and regenerate them from ObjectTeam. If you generate PowerBuilder files from the CDs and CDMs created by reverse engineering, the generated files are <CX5FX5FEMPHASIS>not</CX5FX5FEMPHASIS
  91621. > the same as the original files.</B.BODY
  91622. ></LABEL
  91623. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91624. ><RBW-ANCHOR ID="19526"></RBW-ANCHOR
  91625. >What happens during reverse engineering</L.LABEL
  91626. ><B.BODY>Reverse engineering uses the following steps to translate PowerBuilder files into CDs and CDMs:</B.BODY
  91627. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  91628. ></RBW-AUTOGEN
  91629. ></RBW-MARKER
  91630. ><RBW-PARABODY>Parses the following types of PowerBuilder files, which are exported from PowerBuilder libraries: <CX5FX5FFILE.NAME>.srw</CX5FX5FFILE.NAME
  91631. > (window), <CX5FX5FFILE.NAME>.srm</CX5FX5FFILE.NAME
  91632. > (menu), <CX5FX5FFILE.NAME>.sru</CX5FX5FFILE.NAME
  91633. > (user object), and <CX5FX5FFILE.NAME>.srs</CX5FX5FFILE.NAME
  91634. > (structure). Then, maps the PowerBuilder elements to ObjectTeam elements.</RBW-PARABODY
  91635. ></LN.LIST.NUM
  91636. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  91637. ></RBW-AUTOGEN
  91638. ></RBW-MARKER
  91639. ><RBW-PARABODY>Creates CDs and CDMs that define the ObjectTeam elements.</RBW-PARABODY
  91640. ></LN.LIST.NUM
  91641. ></LABEL
  91642. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91643. >In this section</L.LABEL
  91644. ><B.BODY>This section contains the following topics:</B.BODY
  91645. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  91646. ></ENTRY
  91647. ></RBW-ROW
  91648. ></THEAD
  91649. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="29399" TYPE="XREF-TEXTCOPY">Parsing the Files&rbwtab;5–3</RBW-XREF
  91650. ></SB.SECTION.BLOCK.TABLE
  91651. ></ENTRY
  91652. ></RBW-ROW
  91653. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="32959" TYPE="XREF-TEXTCOPY">Creating the Diagrams&rbwtab;5–5</RBW-XREF
  91654. ></SB.SECTION.BLOCK.TABLE
  91655. ></ENTRY
  91656. ></RBW-ROW
  91657. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23625" TYPE="XREF-TEXTCOPY">Running Reverse Engineering&rbwtab;5–10</RBW-XREF
  91658. ></SB.SECTION.BLOCK.TABLE
  91659. ></ENTRY
  91660. ></RBW-ROW
  91661. ></TBODY
  91662. ></TGROUP
  91663. ></RBW-TABLE
  91664. ></LABEL
  91665. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="29399"></RBW-ANCHOR
  91666. >Parsing the Files</SS.SUBSEC.HEAD
  91667. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91668. >Parsing the PowerBuilder files</L.LABEL
  91669. ><B.BODY>The parser recognizes the following elements in the PowerBuilder files:</B.BODY
  91670. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91671. ></RBW-AUTOGEN
  91672. ></RBW-MARKER
  91673. ><RBW-PARABODY>Windows, menus, structures, standard and custom class user objects, and standard and custom visual user objects</RBW-PARABODY
  91674. ></LB.LIST.BULLET
  91675. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91676. ></RBW-AUTOGEN
  91677. ></RBW-MARKER
  91678. ><RBW-PARABODY>Instance and shared variables; global variables are ignored</RBW-PARABODY
  91679. ></LB.LIST.BULLET
  91680. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91681. ></RBW-AUTOGEN
  91682. ></RBW-MARKER
  91683. ><RBW-PARABODY>Object functions and user events; external functions are ignored</RBW-PARABODY
  91684. ></LB.LIST.BULLET
  91685. ></LABEL
  91686. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91687. >Mapping the elements<RBW-IDXTERM TERM1="Visual Basic" TERM2="reverse engineering"></RBW-IDXTERM
  91688. ><RBW-IDXTERM TERM1="mapping" TERM2="in reverse engineering"></RBW-IDXTERM
  91689. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="mapping"></RBW-IDXTERM
  91690. ></L.LABEL
  91691. ><B.BODY>After parsing the PowerBuilder file, reverse engineering maps the PowerBuilder constructs to ObjectTeam elements, as shown in the following table:</B.BODY
  91692. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>PowerBuilder Construction</CELLHEADING
  91693. ></ENTRY
  91694. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>ObjectTeam Element</CELLHEADING
  91695. ></ENTRY
  91696. ></RBW-ROW
  91697. ></THEAD
  91698. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Object</CELLBODY
  91699. ></ENTRY
  91700. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class with Global Type and Window Type properties set. Class hierarchies and aggregations show the relationships among classes.</CELLBODY
  91701. ></ENTRY
  91702. ></RBW-ROW
  91703. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Instance variable</CELLBODY
  91704. ></ENTRY
  91705. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute, data type, and default value (if any). Attribute Access property is set.</CELLBODY
  91706. ></ENTRY
  91707. ></RBW-ROW
  91708. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Shared variable</CELLBODY
  91709. ></ENTRY
  91710. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class attribute (name is prefixed with $), data type, and default value (if any). Attribute Access property is set.</CELLBODY
  91711. ></ENTRY
  91712. ></RBW-ROW
  91713. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant</CELLBODY
  91714. ></ENTRY
  91715. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute and data type. The Constant attribute property is set and default value of the attribute is set to the value of the constant. Attribute Access property is set.</CELLBODY
  91716. ></ENTRY
  91717. ></RBW-ROW
  91718. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Function</CELLBODY
  91719. ></ENTRY
  91720. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation and parameters. Method Access operation property and Pass By parameter property are set. </CELLBODY
  91721. ></ENTRY
  91722. ></RBW-ROW
  91723. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  91724. ></ENTRY
  91725. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation and parameters. The Event operation property and Pass By parameter property are set.</CELLBODY
  91726. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  91727. > For an event with an event ID, the eventID name is the only parameter. For example: eventName(pbm_custom01: eventid)</CELLBODY
  91728. ></ENTRY
  91729. ></RBW-ROW
  91730. ></TBODY
  91731. ></TGROUP
  91732. ></RBW-TABLE
  91733. ></LABEL
  91734. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91735. >Customizing reverse engineering</L.LABEL
  91736. ><B.BODY>The customization file <CX5FX5FFILE.NAME>tcl\rev_assoc.tcl</CX5FX5FFILE.NAME
  91737. > file in the powerbuilder module defines the reverse engineering rules used to detect associations and attribute accessors. You can modify reverse engineering by editing this customization file, as described in the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  91738. ><CX5FX5FTITLE></CX5FX5FTITLE
  91739. >.</B.BODY
  91740. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  91741. ></RBW-AUTOGEN
  91742. >This customization file is not used unless you select the Reverse Engineer Associations option during reverse engineering.</W.WARNING
  91743. ></LABEL
  91744. ></SUBSECTION
  91745. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="32959"></RBW-ANCHOR
  91746. >Creating the Diagrams</SS.SUBSEC.HEAD
  91747. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91748. >Creating diagrams<RBW-IDXTERM TERM1="diagrams" TERM2="draft, in reverse engineering"></RBW-IDXTERM
  91749. ><RBW-IDXTERM TERM1="reverse engineering" TERM2="draft diagrams"></RBW-IDXTERM
  91750. ></L.LABEL
  91751. ><BI.BODY.INTRO>After mapping the PowerBuilder constructs to ObjectTeam elements, reverse engineering creates the CDs and CDMs that define the ObjectTeam elements. It creates the following CDs:</BI.BODY.INTRO
  91752. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91753. ></RBW-AUTOGEN
  91754. ></RBW-MARKER
  91755. ><RBW-PARABODY>One or more CDs to show the class hierarchy</RBW-PARABODY
  91756. ></LB.LIST.BULLET
  91757. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  91758. ></RBW-AUTOGEN
  91759. >In PowerBuilder, each object type is a class. Therefore, reverse engineering creates a CD for each type of object that shows all objects of that type.</N2.NOTE.2
  91760. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91761. ></RBW-AUTOGEN
  91762. ></RBW-MARKER
  91763. ><RBW-PARABODY>One or more CDs to show the associations among the classes</RBW-PARABODY
  91764. ></LB.LIST.BULLET
  91765. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91766. >Naming conventions for CDs</SL.SUBLABEL
  91767. ><B.BODY>Each CD is named for the primary class in the CD; for example, Class1. The word Tree is appended to the name of each CD that defines part of the class hierarchy; for example, TestClass1Tree.</B.BODY
  91768. ></LABEL
  91769. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91770. >How many diagrams are created</L.LABEL
  91771. ><B.BODY>The number and complexity of the CDs created by reverse engineering depend largely on the following:</B.BODY
  91772. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91773. ></RBW-AUTOGEN
  91774. ></RBW-MARKER
  91775. ><RBW-PARABODY>The files that you select for reverse engineering, particularly the number and complexity of classes defined in the files.</RBW-PARABODY
  91776. ></LB.LIST.BULLET
  91777. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91778. ></RBW-AUTOGEN
  91779. ></RBW-MARKER
  91780. ><RBW-PARABODY>The reverse engineering options that you select, particularly whether you choose to reverse engineer associations.</RBW-PARABODY
  91781. ></LB.LIST.BULLET
  91782. ></LABEL
  91783. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91784. ><RBW-ANCHOR ID="22283"></RBW-ANCHOR
  91785. >Options for reverse engineering</L.LABEL
  91786. ><BI.BODY.INTRO>During reverse engineering, ObjectTeam displays the following dialog box prompting you to select the options that you want to use:</BI.BODY.INTRO
  91787. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00826.unk" origfile="pics/reoption.gif" origtype="X" origdoc="../../sources/pb/pbeng.fm5.mif"></RBW-GRAPHIC
  91788. ></FA.FIGURE.ANCHOR
  91789. ><B.BODY><RBW-IDXTERM TERM1="reverse engineering" TERM2="configuring options"></RBW-IDXTERM
  91790. >The following table describes each option (default values are as shown in the dialog box):</B.BODY
  91791. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="126p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Option</CELLHEADING
  91792. ></ENTRY
  91793. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Descriptions</CELLHEADING
  91794. ></ENTRY
  91795. ></RBW-ROW
  91796. ></THEAD
  91797. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Diagram</CELLBODY
  91798. ></ENTRY
  91799. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Prefix used to name each generated CD.</CELLBODY
  91800. ></ENTRY
  91801. ></RBW-ROW
  91802. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate</CELLBODY
  91803. ></ENTRY
  91804. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies whether to generate CDs, CDMs, or both:</CELLBODY
  91805. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91806. ></RBW-AUTOGEN
  91807. ></RBW-MARKER
  91808. ><RBW-PARABODY>CDs and CDMs</RBW-PARABODY
  91809. ></CELLBULLET
  91810. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91811. ></RBW-AUTOGEN
  91812. ></RBW-MARKER
  91813. ><RBW-PARABODY>Only CDs (only class structure is generated)</RBW-PARABODY
  91814. ></CELLBULLET
  91815. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91816. ></RBW-AUTOGEN
  91817. ></RBW-MARKER
  91818. ><RBW-PARABODY>Only CDMs (only class features are generated)</RBW-PARABODY
  91819. ></CELLBULLET
  91820. ></ENTRY
  91821. ></RBW-ROW
  91822. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Overwrite Existing Diagrams</CELLBODY
  91823. ></ENTRY
  91824. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, existing CDs are replaced.</CELLBODY
  91825. ></ENTRY
  91826. ></RBW-ROW
  91827. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Create Reference Diagrams</CELLBODY
  91828. ></ENTRY
  91829. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering creates a separate reference CD for each class that exceeds the maximum size. The class is folded in all diagrams other than the reference diagram.</CELLBODY
  91830. ></ENTRY
  91831. ></RBW-ROW
  91832. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Class Width & Height</CELLBODY
  91833. ></ENTRY
  91834. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class. When a class exceeds this size, it is folded.</CELLBODY
  91835. ></ENTRY
  91836. ></RBW-ROW
  91837. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Tree Width & Height</CELLBODY
  91838. ></ENTRY
  91839. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a class tree. When a class hierarchy exceeds this size, it is split.</CELLBODY
  91840. ></ENTRY
  91841. ></RBW-ROW
  91842. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Max Screen Width & Height</CELLBODY
  91843. ></ENTRY
  91844. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specifies the maximum size of a diagram. When a diagram exceeds this size, it is split.</CELLBODY
  91845. ></ENTRY
  91846. ></RBW-ROW
  91847. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Placement Algorithm</CELLBODY
  91848. ></ENTRY
  91849. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Reverse Engineering Associations is selected</CX5FX5FBULLET.EMPHASIS
  91850. >, specifies the algorithm reverse engineering uses to create the CDs that show the associations:</CELLBODY
  91851. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91852. ></RBW-AUTOGEN
  91853. ></RBW-MARKER
  91854. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Simple.</CX5FX5FBULLET.EMPHASIS
  91855. > Creates a CD for each class that has associations.</RBW-PARABODY
  91856. ></CELLBULLET
  91857. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91858. ></RBW-AUTOGEN
  91859. ></RBW-MARKER
  91860. ><RBW-PARABODY><CX5FX5FBULLET.EMPHASIS>Grid.</CX5FX5FBULLET.EMPHASIS
  91861. > Creates a CD for each <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  91862. > unfolded classes, where <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  91863. > is the number specified in the Number of Classes per CD field.</RBW-PARABODY
  91864. ></CELLBULLET
  91865. ></ENTRY
  91866. ></RBW-ROW
  91867. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Number of Classes per CD</CELLBODY
  91868. ></ENTRY
  91869. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY><CX5FX5FBULLET.EMPHASIS>If Placement Algorithm is Grid</CX5FX5FBULLET.EMPHASIS
  91870. >, specifies the number of unfolded classes per CD.</CELLBODY
  91871. ></ENTRY
  91872. ></RBW-ROW
  91873. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Reverse Engineer Associations</CELLBODY
  91874. ></ENTRY
  91875. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If selected, reverse engineering examines the attributes and accessor methods defined on each class to determine the associations among classes. It then creates CDs that show those associations.</CELLBODY
  91876. ></ENTRY
  91877. ></RBW-ROW
  91878. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Case</CELLBODY
  91879. ></ENTRY
  91880. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>PowerBuilder almost always uses lowercase and ObjectTeam is case sensitive. Use this field to specify which case should be used in ObjectTeam.</CELLBODY
  91881. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91882. ></RBW-AUTOGEN
  91883. ></RBW-MARKER
  91884. ><RBW-PARABODY>FirstCase. For each identifier, use the case that is first encountered. (When reverse engineering multiple files, use this option with caution.)</RBW-PARABODY
  91885. ></CELLBULLET
  91886. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91887. ></RBW-AUTOGEN
  91888. ></RBW-MARKER
  91889. ><RBW-PARABODY>UpperCase. Always use uppercase characters.</RBW-PARABODY
  91890. ></CELLBULLET
  91891. ><CELLBULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91892. ></RBW-AUTOGEN
  91893. ></RBW-MARKER
  91894. ><RBW-PARABODY>LowerCase. Always use lowercase characters.</RBW-PARABODY
  91895. ></CELLBULLET
  91896. ></ENTRY
  91897. ></RBW-ROW
  91898. ></TBODY
  91899. ></TGROUP
  91900. ></RBW-TABLE
  91901. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91902. >GUI aggregations</SL.SUBLABEL
  91903. ><B.BODY>Reverse engineering always creates CDs that show the aggregations that define the GUI, even if you have not selected the Reverse Engineer Associations option. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box.</B.BODY
  91904. ></LABEL
  91905. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91906. >CDs that show the class hierarchy</L.LABEL
  91907. ><BI.BODY.INTRO>Following are the guidelines used to draw the CDs that show the class hierarchy:</BI.BODY.INTRO
  91908. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91909. ></RBW-AUTOGEN
  91910. ></RBW-MARKER
  91911. ><RBW-PARABODY>Reverse engineering creates a CD for each top&truehy;level parent class. The CD contains the parent class and all subclasses.</RBW-PARABODY
  91912. ></LB.LIST.BULLET
  91913. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  91914. ></RBW-AUTOGEN
  91915. ></RBW-MARKER
  91916. ><RBW-PARABODY>If a class has multiple parent classes, reverse engineering creates a CD for each parent. The CD for the first parent class contains the parent class, the child class, and all subclasses of the child class. The CD for each of the other parent classes contains only the parent class and the child class; in these diagrams, the child class is folded.</RBW-PARABODY
  91917. ></LB.LIST.BULLET
  91918. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00827.tif" origseq="5" origtype="I" origdoc="../../sources/pb/pbeng.fm5.mif"></RBW-GRAPHIC
  91919. ></FA2.FIGURE.ANCHOR.2
  91920. ></LABEL
  91921. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91922. >CDs that show associations</L.LABEL
  91923. ><B.BODY>If you select the Reverse Engineer Associations option in the Reverse Engineer dialog box, reverse engineering creates CDs that show the associations. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box. Both algorithms are described below.</B.BODY
  91924. ><B.BODY>If you do not select the Reverse Engineer Associations option, reverse engineering shows associations only as attributes and accessor methods in the appropriate classes.</B.BODY
  91925. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  91926. ></RBW-AUTOGEN
  91927. >Bidirectional associations are reverse engineered as two unidirectional associations.</N.NOTE
  91928. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91929. >GUI aggregations</SL.SUBLABEL
  91930. ><B.BODY>Reverse engineering always creates CDs that show the aggregations that define the GUI, even if you have not selected the Reverse Engineer Associations option. How it creates these CDs depends on which Placement Algorithm option you selected in the Reverse Engineer dialog box.</B.BODY
  91931. ></LABEL
  91932. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91933. >Simple algorithm</L.LABEL
  91934. ><B.BODY>If you select Simple in the Placement Algorithm field of the Reverse Engineer dialog box, reverse engineering draws the CDs as follows:</B.BODY
  91935. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  91936. ></RBW-AUTOGEN
  91937. ></RBW-MARKER
  91938. ><RBW-PARABODY>Creates a CD for each class that has one or more associations. </RBW-PARABODY
  91939. ></LN.LIST.NUM
  91940. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  91941. ></RBW-AUTOGEN
  91942. ></RBW-MARKER
  91943. ><RBW-PARABODY>Unfolds the main class in each CD and folds all associated classes.</RBW-PARABODY
  91944. ></LN.LIST.NUM
  91945. ><BI.BODY.INTRO>The following illustration shows a CD created by the simple algorithm:</BI.BODY.INTRO
  91946. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00828.unk" origfile="pics/resimp.gif" origtype="X" origdoc="../../sources/pb/pbeng.fm5.mif"></RBW-GRAPHIC
  91947. ></FA.FIGURE.ANCHOR
  91948. ></LABEL
  91949. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91950. >Grid algorithm</L.LABEL
  91951. ><B.BODY>If you select Grid in the Placement Algorithm field of the Reverse Engineer dialog box, reverse engineering draws the CDs as follows:</B.BODY
  91952. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  91953. ></RBW-AUTOGEN
  91954. ></RBW-MARKER
  91955. ><RBW-PARABODY>Divides all classes into groups of <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  91956. >, where <CX5FX5FEMPHASIS>n</CX5FX5FEMPHASIS
  91957. > is the number specified by the Number of Classes per CD field of the Reverse Engineer dialog box. The algorithm attempts to group associated classes.</RBW-PARABODY
  91958. ></LN.LIST.NUM
  91959. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  91960. ></RBW-AUTOGEN
  91961. >To create a diagram that contains all classes, specify <CX5FX5FVARIABLE>n</CX5FX5FVARIABLE
  91962. > as the number of classes being reverse engineered (or greater).</T2.TIP.2
  91963. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  91964. ></RBW-AUTOGEN
  91965. ></RBW-MARKER
  91966. ><RBW-PARABODY>For each group of classes, creates a CD and adds the classes (unfolded) to the CD. To position the classes, reverse engineering uses a uniform grid whose squares are the size of the largest class in the group and its longest association.</RBW-PARABODY
  91967. ></LN.LIST.NUM
  91968. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  91969. ></RBW-AUTOGEN
  91970. ></RBW-MARKER
  91971. ><RBW-PARABODY>For each class in each CD, draws all associations from the class to all associated classes. If an associated class is not in the CD, reverse engineering adds it (folded) to the CD.</RBW-PARABODY
  91972. ></LN.LIST.NUM
  91973. ><BI.BODY.INTRO>The following illustration shows a CD created by the grid algorithm. (The classes in the illustration have been rearranged slightly to fit more easily on the page.)</BI.BODY.INTRO
  91974. ><FAW.FIGURE.ANCHOR.WIDE><RBW-GRAPHIC filename="00829.unk" origfile="pics/regrid.gif" origtype="X" origdoc="../../sources/pb/pbeng.fm5.mif"></RBW-GRAPHIC
  91975. ></FAW.FIGURE.ANCHOR.WIDE
  91976. ><B.BODY></B.BODY
  91977. ></LABEL
  91978. ></SUBSECTION
  91979. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="23625"></RBW-ANCHOR
  91980. >Running Reverse Engineering</SS.SUBSEC.HEAD
  91981. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91982. >Introduction</L.LABEL
  91983. ><B.BODY>This section describes how to run reverse engineering.</B.BODY
  91984. ></LABEL
  91985. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  91986. >How to reverse engineer</L.LABEL
  91987. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  91988. ></RBW-AUTOGEN
  91989. ></RBW-MARKER
  91990. ><RBW-PARABODY>To reverse engineer PowerBuilder files:</RBW-PARABODY
  91991. ></P.PROCEDURE
  91992. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  91993. ></RBW-AUTOGEN
  91994. ></RBW-MARKER
  91995. ><RBW-PARABODY>Move to System level in Object Design phase.</RBW-PARABODY
  91996. ></LN.LIST.NUM
  91997. ><N2.NOTE.2><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  91998. ></RBW-AUTOGEN
  91999. >Typically, you reverse engineer into an empty system. However, name conflicts can still occur since classes are created with scope Phase.</N2.NOTE.2
  92000. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  92001. ></RBW-AUTOGEN
  92002. ></RBW-MARKER
  92003. ><RBW-PARABODY>Select Utilities | Reverse Engineer PowerBuilder.</RBW-PARABODY
  92004. ></LN.LIST.NUM
  92005. ><LR.LIST.RESULT>The Reverse Engineer PowerBuilder dialog box appears, prompting you to select the files to be reverse engineered.</LR.LIST.RESULT
  92006. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00830.unk" origfile="pics/refiles.gif" origtype="X" origdoc="../../sources/pb/pbeng.fm5.mif"></RBW-GRAPHIC
  92007. ></FA2.FIGURE.ANCHOR.2
  92008. ><T2.TIP.2><RBW-AUTOGEN><CX5FX5FZNOTE>Tip: </CX5FX5FZNOTE
  92009. ></RBW-AUTOGEN
  92010. >Reverse engineering creates CDs and CDMs based on the files that you select. Therefore, you generally want to reverse engineer all related files at the same time.</T2.TIP.2
  92011. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  92012. ></RBW-AUTOGEN
  92013. ></RBW-MARKER
  92014. ><RBW-PARABODY>Select the files that you want to reverse engineer, then select Open.</RBW-PARABODY
  92015. ></LN.LIST.NUM
  92016. ><LR.LIST.RESULT>A second Reverse Engineer PowerBuilder dialog box appears (see <RBW-XREF REFID="22283" TYPE="XREF-TEXTCOPY">Options for reverse engineering</RBW-XREF
  92017. >), prompting you to select the options that you want to use. </LR.LIST.RESULT
  92018. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  92019. ></RBW-AUTOGEN
  92020. ></RBW-MARKER
  92021. ><RBW-PARABODY>Select the options, then select OK.</RBW-PARABODY
  92022. ></LN.LIST.NUM
  92023. ><LR.LIST.RESULT>ObjectTeam reverse engineers the selected file, reporting the results in a Monitoring window.</LR.LIST.RESULT
  92024. ></LABEL
  92025. ></SUBSECTION
  92026. ></SECTION
  92027. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22218"></RBW-ANCHOR
  92028. >Round&truehy;Trip Engineering</S.SECTION.HEAD
  92029. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92030. >Introduction</L.LABEL
  92031. ><B.BODY>Round&truehy;trip engineering updates the ObjectTeam model based on the changes you have made to the generated PowerBuilder source files. Use round&truehy;trip engineering to update the ObjectTeam model <CX5FX5FEMPHASIS>before</CX5FX5FEMPHASIS
  92032. > you regenerate the source files.</B.BODY
  92033. ></LABEL
  92034. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92035. >Purpose</L.LABEL
  92036. ><B.BODY>The code generator generates code based on the ObjectTeam model. If you do not update the ObjectTeam model before regenerating the source files, the new source files do not include your changes. </B.BODY
  92037. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92038. >Example</SL.SUBLABEL
  92039. ><B.BODY>You generate PowerBuilder files. You then edit the generated source file, adding a new function. If you do not update the ObjectTeam model, the model does not contain the operation that corresponds to the function. When you regenerate the source file, the code generator assumes that you <CX5FX5FEMPHASIS>deleted</CX5FX5FEMPHASIS
  92040. > the operation from ObjectTeam and, therefore, does not include the <CX5FX5FEMPHASIS>obsolete</CX5FX5FEMPHASIS
  92041. > function in the newly generated source file.</B.BODY
  92042. ></LABEL
  92043. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92044. >Changes captured by round&truehy;trip engineering</L.LABEL
  92045. ><B.BODY>If you have made the following types of changes to the generated PowerBuilder source, round&truehy;trip engineering updates the ObjectTeam model based on those changes:</B.BODY
  92046. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92047. ></RBW-AUTOGEN
  92048. ></RBW-MARKER
  92049. ><RBW-PARABODY>Added or deleted variables, or edited variable declarations</RBW-PARABODY
  92050. ></LB.LIST.BULLET
  92051. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92052. ></RBW-AUTOGEN
  92053. ></RBW-MARKER
  92054. ><RBW-PARABODY>Added or deleted procedures or edited procedure declarations</RBW-PARABODY
  92055. ></LB.LIST.BULLET
  92056. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92057. ></RBW-AUTOGEN
  92058. ></RBW-MARKER
  92059. ><RBW-PARABODY>Added controls to a window</RBW-PARABODY
  92060. ></LB.LIST.BULLET
  92061. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92062. ></RBW-AUTOGEN
  92063. ></RBW-MARKER
  92064. ><RBW-PARABODY>Added structures to an object, such as a window or custom class object</RBW-PARABODY
  92065. ></LB.LIST.BULLET
  92066. ></LABEL
  92067. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92068. >Changes not captured by round&truehy;trip engineering</L.LABEL
  92069. ><B.BODY>Round&truehy;trip engineering ignores the following types of changes that you might have made to the generated source files. If you have made these types of changes, you must update the ObjectTeam model manually:</B.BODY
  92070. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92071. ></RBW-AUTOGEN
  92072. ></RBW-MARKER
  92073. ><RBW-PARABODY>Deleted controls from a window</RBW-PARABODY
  92074. ></LB.LIST.BULLET
  92075. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92076. ></RBW-AUTOGEN
  92077. ></RBW-MARKER
  92078. ><RBW-PARABODY>Deleted structures from an object</RBW-PARABODY
  92079. ></LB.LIST.BULLET
  92080. ></LABEL
  92081. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92082. >Round&truehy;trip engineering and events</L.LABEL
  92083. ><B.BODY>Adding events in Powerbuilder is not discouraged, since the code attached to an event may get lost during a roundtrip action in ObjectTeam. </B.BODY
  92084. ><B.BODY>The preferred way to add events is to add them in ObjectTeam, and regenerate the code. Next, you can attach code to the event in Powerbuilder, without running the risk of losing code during a roundtrip action.</B.BODY
  92085. ></LABEL
  92086. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92087. >What happens during round&truehy;trip engineering</L.LABEL
  92088. ><B.BODY>The following table shows the steps that occur during round&truehy;trip engineering:</B.BODY
  92089. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  92090. ></ENTRY
  92091. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  92092. ></ENTRY
  92093. ></RBW-ROW
  92094. ></THEAD
  92095. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  92096. ></ENTRY
  92097. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>You select the generated (edited) source files that you are interested in and start round&truehy;trip engineering.</CELLBODY
  92098. ></ENTRY
  92099. ></RBW-ROW
  92100. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  92101. ></ENTRY
  92102. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>ObjectTeam parses the selected files and compares the information in the files with the information in the ObjectTeam model.</CELLBODY
  92103. ></ENTRY
  92104. ></RBW-ROW
  92105. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  92106. ></ENTRY
  92107. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>For each difference it finds, ObjectTeam proposes an action and prompts you for confirmation. For example:</CELLBODY
  92108. ><CELLBODY><CX5FX5FINPUT>In class “Account”: delete attribute “Address”?</CX5FX5FINPUT
  92109. ></CELLBODY
  92110. ></ENTRY
  92111. ></RBW-ROW
  92112. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  92113. ></ENTRY
  92114. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Based on your answers, ObjectTeam updates the ObjectTeam model.</CELLBODY
  92115. ></ENTRY
  92116. ></RBW-ROW
  92117. ></TBODY
  92118. ></TGROUP
  92119. ></RBW-TABLE
  92120. ></LABEL
  92121. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92122. >In this section</L.LABEL
  92123. ><B.BODY>This section contains the following topics:</B.BODY
  92124. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Topic&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  92125. ></ENTRY
  92126. ></RBW-ROW
  92127. ></THEAD
  92128. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15830" TYPE="XREF-TEXTCOPY">Parsing the Generated (Edited) Source Files&rbwtab;5–13</RBW-XREF
  92129. ></SB.SECTION.BLOCK.TABLE
  92130. ></ENTRY
  92131. ></RBW-ROW
  92132. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33338" TYPE="XREF-TEXTCOPY">Running Round&truehy;Trip Engineering&rbwtab;5–15</RBW-XREF
  92133. ></SB.SECTION.BLOCK.TABLE
  92134. ></ENTRY
  92135. ></RBW-ROW
  92136. ></TBODY
  92137. ></TGROUP
  92138. ></RBW-TABLE
  92139. ></LABEL
  92140. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="15830"></RBW-ANCHOR
  92141. >Parsing the Generated (Edited) Source Files</SS.SUBSEC.HEAD
  92142. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92143. >Introduction</L.LABEL
  92144. ><B.BODY>This section describes which changes to the generated source files are captured by round&truehy;trip engineering. </B.BODY
  92145. ></LABEL
  92146. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92147. >Changes to attributes</L.LABEL
  92148. ><B.BODY>You can add, delete, and modify shared or instance variables. In PowerBuilder, when you edit the variables in a generated file, you see the following comments:</B.BODY
  92149. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92150. ></RBW-AUTOGEN
  92151. ></RBW-MARKER
  92152. ><RBW-PARABODY>// User defined attributes</RBW-PARABODY
  92153. ></LB.LIST.BULLET
  92154. ><LT.LIST.TEXT>Round&truehy;trip engineering updates the ObjectTeam model based on the variable declarations that appear under this comment. Typically, these are the variable declarations that you edit.</LT.LIST.TEXT
  92155. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92156. ></RBW-AUTOGEN
  92157. ></RBW-MARKER
  92158. ><RBW-PARABODY>// Non modeled user defined attributes</RBW-PARABODY
  92159. ></LB.LIST.BULLET
  92160. ><LT.LIST.TEXT>Round&truehy;trip engineering ignores variable declarations that appear under this comment. However, the code generator preserves these variables when you regenerate the source files. These are variables, such as SQL cursors, that you want to use in PowerBuilder, but do not want to model in ObjectTeam.</LT.LIST.TEXT
  92161. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92162. ></RBW-AUTOGEN
  92163. ></RBW-MARKER
  92164. ><RBW-PARABODY>// Association attributes</RBW-PARABODY
  92165. ></LB.LIST.BULLET
  92166. ><LT.LIST.TEXT>This comment appears only for instance variables. It lists the variables that ObjectTeam uses to implement associations. Round&truehy;trip engineering ignores these variable declarations and the code generator generates them based on the associations defined in the ObjectTeam model. Therefore, changes that you make to these variable declarations are not preserved.</LT.LIST.TEXT
  92167. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92168. >Attribute Access property</SL.SUBLABEL
  92169. ><B.BODY>The Attribute Access property of an attribute is based on the access keyword in the attribute declaration. If you do not specify an access keyword, the Read and Write fields of the Attribute Access property are set to Public.</B.BODY
  92170. ></LABEL
  92171. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92172. ><RBW-ANCHOR ID="34671"></RBW-ANCHOR
  92173. >Changes to functions </L.LABEL
  92174. ><BI.BODY.INTRO>You can add and delete functions. </BI.BODY.INTRO
  92175. ><B.BODY>You can modify function declarations by adding, removing, or reordering parameters, changing default values, changing the return type, or changing the access method (public, protected, private). </B.BODY
  92176. ><B.BODY>You can change the code in the body of any function. Such changes are ignored by round&truehy;trip engineering, but are preserved by the code generator when you regenerate the source files.</B.BODY
  92177. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92178. >Overloaded functions</SL.SUBLABEL
  92179. ><B.BODY>If you have multiple functions with the same name, do not delete one and change the declaration of another at the same time. Delete one, run round&truehy;trip engineering, change the declaration of the other, and run round&truehy;trip engineering. This approach prevents potential errors in round&truehy;trip engineering.</B.BODY
  92180. ></LABEL
  92181. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92182. >Changes to events</L.LABEL
  92183. ><B.BODY>You can modify event declarations by adding, removing, or reordering parameters, changing default values, or changing the return type.</B.BODY
  92184. ><B.BODY>You can change the code in the body of any event. Such changes are ignored by round&truehy;trip engineering, but are preserved by the code generator when you regenerate the source files.</B.BODY
  92185. ></LABEL
  92186. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92187. >Changes to controls and structures</L.LABEL
  92188. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92189. >Changes to controls</SL.SUBLABEL
  92190. ><B.BODY>You can add controls to a generated window. However, <CX5FX5FEMPHASIS>if you delete a control, you must edit the ObjectTeam</CX5FX5FEMPHASIS
  92191. ><CX5FX5FEMPHASIS> model manually</CX5FX5FEMPHASIS
  92192. >. In ObjectTeam, controls are modeled as classes and round&truehy;trip engineering does not delete classes from the ObjectTeam model.</B.BODY
  92193. ><B.BODY>If you add controls to a generated window, round&truehy;trip engineering updates the ObjectTeam model. Round&truehy;trip engineering does not modify existing CDs. It creates the following CDs to hold the classes that represent the new controls:</B.BODY
  92194. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92195. ></RBW-AUTOGEN
  92196. ></RBW-MARKER
  92197. ><RBW-PARABODY>A CD for each type of new control; these CDs show the superclass of each newly created ObjectTeam class</RBW-PARABODY
  92198. ></LB.LIST.BULLET
  92199. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92200. ></RBW-AUTOGEN
  92201. ></RBW-MARKER
  92202. ><RBW-PARABODY>A CD for each modified window; these CDs show the associations between the new controls and their windows</RBW-PARABODY
  92203. ></LB.LIST.BULLET
  92204. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92205. >Changes to structures</SL.SUBLABEL
  92206. ><B.BODY>You can add structures to a generated window or class. Adding a structure to a window or class is similar to adding a control to a window.</B.BODY
  92207. ></LABEL
  92208. ></SUBSECTION
  92209. ><SUBSECTION><SS.SUBSEC.HEAD><RBW-ANCHOR ID="33338"></RBW-ANCHOR
  92210. >Running Round&truehy;Trip Engineering</SS.SUBSEC.HEAD
  92211. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92212. >Customizing round&truehy;trip engineering</L.LABEL
  92213. ><B.BODY>The customization file <CX5FX5FFILE.NAME>roundtrip.roundtrip</CX5FX5FFILE.NAME
  92214. > in the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  92215. >/etc directory controls what actions round&truehy;trip engineering proposes, as well as the default answers it supplies. To examine or modify the current behavior of round&truehy;trip engineering, examine or modify the customization file.</B.BODY
  92216. ></LABEL
  92217. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92218. >How to run round&truehy;trip engineering</L.LABEL
  92219. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  92220. ></RBW-AUTOGEN
  92221. ></RBW-MARKER
  92222. ><RBW-PARABODY>To run round&truehy;trip engineering:</RBW-PARABODY
  92223. ></P.PROCEDURE
  92224. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  92225. ></RBW-AUTOGEN
  92226. ></RBW-MARKER
  92227. ><RBW-PARABODY>Move to the System level of the Implementation phase.</RBW-PARABODY
  92228. ></LN.LIST.NUM
  92229. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  92230. ></RBW-AUTOGEN
  92231. ></RBW-MARKER
  92232. ><RBW-PARABODY>Select the PowerBuilder files on which you want to run round&truehy;trip engineering.</RBW-PARABODY
  92233. ></LN.LIST.NUM
  92234. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  92235. ></RBW-AUTOGEN
  92236. ></RBW-MARKER
  92237. ><RBW-PARABODY>Select Utilities | Round Trip Selected.</RBW-PARABODY
  92238. ></LN.LIST.NUM
  92239. ><LR.LIST.RESULT>The following dialog box appears.</LR.LIST.RESULT
  92240. ><FA2.FIGURE.ANCHOR.2><RBW-GRAPHIC filename="00831.unk" origfile="pics/rndtrip1.gif" origtype="X" origdoc="../../sources/pb/pbeng.fm5.mif"></RBW-GRAPHIC
  92241. ></FA2.FIGURE.ANCHOR.2
  92242. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  92243. ></RBW-AUTOGEN
  92244. ></RBW-MARKER
  92245. ><RBW-PARABODY>Optionally, enter a prefix to be used in naming any CDs created by round&truehy;trip engineering, then select OK. If you do not enter a prefix, round&truehy;trip engineering uses the prefix <CX5FX5FINPUT>NewRT</CX5FX5FINPUT
  92246. >.</RBW-PARABODY
  92247. ></LN.LIST.NUM
  92248. ><LR.LIST.RESULT>ObjectTeam opens the Roundtrip Selected Files dialog box, compares the classes in the PowerBuilder files to the classes in the Object Design phase, and then begins proposing actions and prompting you for confirmation.</LR.LIST.RESULT
  92249. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00832.unk" origfile="pics/rndtrip2.gif" origtype="X" origdoc="../../sources/pb/pbeng.fm5.mif"></RBW-GRAPHIC
  92250. ></FAR.FIGURE.ANCHOR.RIGHT
  92251. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  92252. ></RBW-AUTOGEN
  92253. ></RBW-MARKER
  92254. ><RBW-PARABODY>Use the buttons to respond to the proposed actions:</RBW-PARABODY
  92255. ></LN.LIST.NUM
  92256. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="108p"><COLSPEC COLNAME="2" COLWIDTH="324p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Button</CELLHEADING
  92257. ></ENTRY
  92258. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Action</CELLHEADING
  92259. ></ENTRY
  92260. ></RBW-ROW
  92261. ></THEAD
  92262. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  92263. ></ENTRY
  92264. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Make the proposed change.</CELLBODY
  92265. ></ENTRY
  92266. ></RBW-ROW
  92267. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>No</CELLBODY
  92268. ></ENTRY
  92269. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Do not make the proposed change.</CELLBODY
  92270. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  92271. > When you regenerate the PowerBuilder file, the change to the PowerBuilder file will be lost.</CELLBODY
  92272. ></ENTRY
  92273. ></RBW-ROW
  92274. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Default to All</CELLBODY
  92275. ></ENTRY
  92276. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Use the default response for all remaining questions.</CELLBODY
  92277. ></ENTRY
  92278. ></RBW-ROW
  92279. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Stop</CELLBODY
  92280. ></ENTRY
  92281. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Cancel all changes</CELLBODY
  92282. ></ENTRY
  92283. ></RBW-ROW
  92284. ></TBODY
  92285. ></TGROUP
  92286. ></RBW-TABLE
  92287. ><LR.LIST.RESULT>ObjectTeam updates the model based on your responses.</LR.LIST.RESULT
  92288. ><RBWAUTO-0001></RBWAUTO-0001
  92289. ><!--
  92290.  
  92291.  
  92292.  
  92293.  
  92294.  
  92295. CONVERTING SOURCE FILE ../../sources/pb/pbtcl.fm5.mif
  92296.  
  92297.  
  92298. --><B.BODY></B.BODY
  92299. ><B.BODY></B.BODY
  92300. ><B.BODY></B.BODY
  92301. ><B.BODY></B.BODY
  92302. ><B.BODY></B.BODY
  92303. ></LABEL
  92304. ></SUBSECTION
  92305. ></SECTION
  92306. ></CHAPTER
  92307. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 6&rbwtab;</CX5FX5FZCHAPTER.NUM
  92308. ></RBW-AUTOGEN
  92309. ><RBW-ANCHOR ID="22956"></RBW-ANCHOR
  92310. >Customizing PowerBuilder Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  92311. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for PowerBuilder</RBW-TEXTFLD
  92312. ></RBW-SYSOBJ
  92313. ></C.CHAPTER.HEAD
  92314. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92315. >Introduction</L.LABEL
  92316. ><B.BODY>Expert users can extend the PowerBuilder code generator by modifying the Tcl scripts that are supplied in the <CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  92317. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  92318. >\<CX5FX5FFILE.NAME>l_pb</CX5FX5FFILE.NAME
  92319. > directory. </B.BODY
  92320. ><B.BODY>Editing these Tcl scripts, or writing new ones that add functionality to the code generator, requires a thorough knowledge of the OOPL model structure, Tcl commands, and the ObjectTeam Shell.</B.BODY
  92321. ></LABEL
  92322. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92323. >Modifying Tcl procedures</L.LABEL
  92324. ><B.BODY>You can adapt existing methods of Object Tcl classes that are used in the code generation by redefining them in a user&truehy;defined Tcl file.</B.BODY
  92325. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  92326. ></RBW-AUTOGEN
  92327. >Cayenne Software cannot support any provided Tcl scripts that you modify. Therefore, the scripts and their structures are not documented. If you choose to modify any Tcl scripts or procedures, you must have a thorough knowledge of the script’s structures to avoid introducing errors. </W.WARNING
  92328. ></LABEL
  92329. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92330. >In this chapter</L.LABEL
  92331. ><B.BODY>This chapter contains the following sections:</B.BODY
  92332. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  92333. ></ENTRY
  92334. ></RBW-ROW
  92335. ></THEAD
  92336. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="22291" TYPE="XREF-TEXTCOPY">How Tcl is Used in the Code Generation&rbwtab;6–18</RBW-XREF
  92337. ></SB.SECTION.BLOCK.TABLE
  92338. ></ENTRY
  92339. ></RBW-ROW
  92340. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="15580" TYPE="XREF-TEXTCOPY">Customizing Tcl Scripts Used for Code Generation&rbwtab;6–21</RBW-XREF
  92341. ></SB.SECTION.BLOCK.TABLE
  92342. ></ENTRY
  92343. ></RBW-ROW
  92344. ></TBODY
  92345. ></TGROUP
  92346. ></RBW-TABLE
  92347. ></LABEL
  92348. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="22291"></RBW-ANCHOR
  92349. >How Tcl is Used in the <RBW-IDXTERM TERM1="Tcl" TERM2="in ObjectTeam environment"></RBW-IDXTERM
  92350. >Code Generation<RBW-IDXTERM SEE="Tcl" TERM1="Tool Command Language"></RBW-IDXTERM
  92351. ></S.SECTION.HEAD
  92352. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92353. >Introduction</L.LABEL
  92354. ><B.BODY>This chapter provides information on the use of Tcl (Tool command language) in ObjectTeam. It does not provide an introduction to Tcl itself. If you want to become familiar with Tcl, try the following introductory book:</B.BODY
  92355. ><LT.LIST.TEXT>John K. Ousterhout, <CX5FX5FTITLE>Tcl and the Tk Toolkit</CX5FX5FTITLE
  92356. >. (Reading, Massachusetts: Addison--&truehy;Wesley Publishing Company, 1994).</LT.LIST.TEXT
  92357. ></LABEL
  92358. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92359. >What is Tcl?</L.LABEL
  92360. ><B.BODY>Tcl (Tool command language) is an interpretive command language that resembles C. By default all arguments are passed as strings. These strings are C&truehy;compatible. Tcl consists of:</B.BODY
  92361. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92362. ></RBW-AUTOGEN
  92363. ></RBW-MARKER
  92364. ><RBW-PARABODY>A library of C procedures</RBW-PARABODY
  92365. ></LB.LIST.BULLET
  92366. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92367. ></RBW-AUTOGEN
  92368. ></RBW-MARKER
  92369. ><RBW-PARABODY>An interpreter</RBW-PARABODY
  92370. ></LB.LIST.BULLET
  92371. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92372. ></RBW-AUTOGEN
  92373. ></RBW-MARKER
  92374. ><RBW-PARABODY>The Tcl core</RBW-PARABODY
  92375. ></LB.LIST.BULLET
  92376. ><B.BODY>The Tcl core is a simple language that can be completely programmed. It provides a collection of commonly used features such as these:</B.BODY
  92377. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92378. ></RBW-AUTOGEN
  92379. ></RBW-MARKER
  92380. ><RBW-PARABODY>Variables</RBW-PARABODY
  92381. ></LB.LIST.BULLET
  92382. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92383. ></RBW-AUTOGEN
  92384. ></RBW-MARKER
  92385. ><RBW-PARABODY>Conditional and looping commands</RBW-PARABODY
  92386. ></LB.LIST.BULLET
  92387. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92388. ></RBW-AUTOGEN
  92389. ></RBW-MARKER
  92390. ><RBW-PARABODY>Procedures</RBW-PARABODY
  92391. ></LB.LIST.BULLET
  92392. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92393. ></RBW-AUTOGEN
  92394. ></RBW-MARKER
  92395. ><RBW-PARABODY>Associative arrays</RBW-PARABODY
  92396. ></LB.LIST.BULLET
  92397. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92398. ></RBW-AUTOGEN
  92399. ></RBW-MARKER
  92400. ><RBW-PARABODY>Lists</RBW-PARABODY
  92401. ></LB.LIST.BULLET
  92402. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92403. ></RBW-AUTOGEN
  92404. ></RBW-MARKER
  92405. ><RBW-PARABODY>Expressions</RBW-PARABODY
  92406. ></LB.LIST.BULLET
  92407. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  92408. ></RBW-AUTOGEN
  92409. ></RBW-MARKER
  92410. ><RBW-PARABODY>File manipulation</RBW-PARABODY
  92411. ></LB.LIST.BULLET
  92412. ></LABEL
  92413. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92414. >How is Tcl used in the code generation?</L.LABEL
  92415. ><BI.BODY.INTRO>When the ObjectTeam shell executes a Tcl script file, it translates information from the repository, internal models, and <RBW-IDXTERM TERM1="code generation model" TERM2="and Tcl"></RBW-IDXTERM
  92416. ><RBW-IDXTERM TERM1="model" TERM2="code generation"></RBW-IDXTERM
  92417. >code generation models into source code. The following illustration shows this process schematically:</BI.BODY.INTRO
  92418. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00833.tif" origseq="1" origtype="I" origdoc="../../sources/pb/pbtcl.fm5.mif"></RBW-GRAPHIC
  92419. ></FA.FIGURE.ANCHOR
  92420. ></LABEL
  92421. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92422. >Types of Tcl used</L.LABEL
  92423. ><B.BODY>The methods in the default Tcl script files used for code generation use different levels of Tcl.</B.BODY
  92424. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="168p"><COLSPEC COLNAME="2" COLWIDTH="280p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Type</CELLHEADING
  92425. ></ENTRY
  92426. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>description</CELLHEADING
  92427. ></ENTRY
  92428. ></RBW-ROW
  92429. ></THEAD
  92430. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Standard Tcl</CELLBODY
  92431. ></ENTRY
  92432. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Refer to general Tcl documentation for details.</CELLBODY
  92433. ></ENTRY
  92434. ></RBW-ROW
  92435. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calls to Tcl </CELLBODY
  92436. ><CELLBODY>procedures</CELLBODY
  92437. ></ENTRY
  92438. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These procedures are stored in Tcl files. They become available when the file in which the procedure is defined is sourced.</CELLBODY
  92439. ></ENTRY
  92440. ></RBW-ROW
  92441. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Calls to methods of classes</CELLBODY
  92442. ><CELLBODY>in the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  92443. ><RBWAUTO-0024></RBWAUTO-0024
  92444. > </CELLBODY
  92445. ><CELLBODY>models</CELLBODY
  92446. ></ENTRY
  92447. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>The classes of the ObjectTeam models (including the OOPL model and SQL model) are documented in <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  92448. ><CX5FX5FTITLE></CX5FX5FTITLE
  92449. >. </CELLBODY
  92450. ></ENTRY
  92451. ></RBW-ROW
  92452. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Built&truehy;in classes</CELLBODY
  92453. ></ENTRY
  92454. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Besides methods of classes belonging to the <RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  92455. ><RBWAUTO-0024></RBWAUTO-0024
  92456. > models, methods belonging to other built&truehy;in classes can also be called. Refer to the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  92457. ><CX5FX5FTITLE></CX5FX5FTITLE
  92458. > for details.</CELLBODY
  92459. ></ENTRY
  92460. ></RBW-ROW
  92461. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Built&truehy;in </CELLBODY
  92462. ><CELLBODY><RBWAUTO-0024>ObjectTeam</RBWAUTO-0024
  92463. ><RBWAUTO-0024></RBWAUTO-0024
  92464. > </CELLBODY
  92465. ><CELLBODY>commands</CELLBODY
  92466. ></ENTRY
  92467. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>These commands are built&truehy;in to otsh and otk. You can use these commands, but you cannot edit or view them like Tcl procedures. Refer to the <CX5FX5FTITLE>ObjectTeam Repository Interface Guide</CX5FX5FTITLE
  92468. ><CX5FX5FTITLE></CX5FX5FTITLE
  92469. > for details. </CELLBODY
  92470. ></ENTRY
  92471. ></RBW-ROW
  92472. ></TBODY
  92473. ></TGROUP
  92474. ></RBW-TABLE
  92475. ></LABEL
  92476. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92477. ><RBW-ANCHOR ID="35220"></RBW-ANCHOR
  92478. >Which Tcl files are used?</L.LABEL
  92479. ><B.BODY>Tcl procedures used for code generation are stored in Object Tcl script files. During code generation, these scripts are interpreted and executed by the ObjectTeam shell (otsh). When you use Utilities | Import From Previous Phase in the Browser at the system level of the Implementation phase, otsh interprets the Object Tcl code in the Tcl file tcl\l_pb\pbimporter.tcl. In the implementation of these methods, Tcl methods from other classes are called.</B.BODY
  92480. ><B.BODY>Most of the Tcl script files that the  code generator uses are located under the <CX5FX5FTERM>M4_home</CX5FX5FTERM
  92481. > directory in tcl\l_pb\*.tcl. The Tcl script files fstorage.tcl and caynutil.tcl in the tcl directory contain utility procedures that are also used.</B.BODY
  92482. ></LABEL
  92483. ></SECTION
  92484. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="15580"></RBW-ANCHOR
  92485. >Customizing Tcl Scripts Used for <RBW-IDXTERM TERM1="code generation" TERM2="adapting"></RBW-IDXTERM
  92486. >Code Generation</S.SECTION.HEAD
  92487. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92488. >User&truehy;defined Tcl files</L.LABEL
  92489. ><B.BODY>Because of the open character of Tcl, you can redefine the existing Object Tcl methods of the Tcl scripts, if you want to adapt the code generation to your needs and circumstances. You can include your own properties, control flow keywords, and section keywords in the code generation this way. You can even build your own code generator by creating your own Tcl scripts. </B.BODY
  92490. ><W.WARNING><RBW-AUTOGEN><CX5FX5FZNOTE>Warning: </CX5FX5FZNOTE
  92491. ></RBW-AUTOGEN
  92492. >Note that existing Object Tcl classes cannot be redefined. However, you can add new, user&truehy;defined Object Tcl classes.</W.WARNING
  92493. ></LABEL
  92494. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92495. ><RBW-ANCHOR ID="37212"></RBW-ANCHOR
  92496. >Where to store user&truehy;defined Tcl procedures</L.LABEL
  92497. ><B.BODY>The Tcl script files used for the default code generation are stored in the file system. They can be found in the following directory:</B.BODY
  92498. ><E.EXAMPLE><CX5FX5FVARIABLE>M4_home</CX5FX5FVARIABLE
  92499. >\<CX5FX5FFILE.NAME>tcl</CX5FX5FFILE.NAME
  92500. > </E.EXAMPLE
  92501. ><B.BODY>If you want to adapt the default code generation, you can edit the Tcl files in this directory, but it is better to modify copies of the original files. There are several ways available to make otsh use user&truehy;defined files. These ways are briefly discussed in this section. </B.BODY
  92502. ><B.BODY>You can overrule existing Tcl files or you can extend them by creating new Tcl files with new user&truehy;defined Tcl procedures and methods, or redefinitions of existing methods. The ways to do that are also covered in this section.</B.BODY
  92503. ></LABEL
  92504. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92505. >Storing Tcl files in the same System as where the code is generated</L.LABEL
  92506. ><B.BODY>One of the available file types on the system level of the Implementation phase is Tcl. You can create new files of this type and redefine methods of existing Object Tcl classes in such a file. During code generation, otsh sources all files of the type Tcl in the current system, regardless of their names.</B.BODY
  92507. ><P.PROCEDURE><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZPROCEDURE.CARET>Σ&rbwtab;</CX5FX5FZPROCEDURE.CARET
  92508. ></RBW-AUTOGEN
  92509. ></RBW-MARKER
  92510. ><RBW-PARABODY>To create such a Tcl file:</RBW-PARABODY
  92511. ></P.PROCEDURE
  92512. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  92513. ></RBW-AUTOGEN
  92514. ></RBW-MARKER
  92515. ><RBW-PARABODY>Open the implementation system.</RBW-PARABODY
  92516. ></LN.LIST.NUM
  92517. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  92518. ></RBW-AUTOGEN
  92519. ></RBW-MARKER
  92520. ><RBW-PARABODY>Select File | New | External File Version.</RBW-PARABODY
  92521. ></LN.LIST.NUM
  92522. ><LR.LIST.RESULT>A dialog box of file types appears.</LR.LIST.RESULT
  92523. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  92524. ></RBW-AUTOGEN
  92525. ></RBW-MARKER
  92526. ><RBW-PARABODY>Select Tcl as the file type, specify a name for the Tcl file (without the extension .tcl), and click OK.</RBW-PARABODY
  92527. ></LN.LIST.NUM
  92528. ><LT.LIST.TEXT>You can enter the name of an existing Tcl file used for code generation or any other name. If you enter an existing name, the original Tcl file is replaced by this new file during code generation.</LT.LIST.TEXT
  92529. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  92530. ></RBW-AUTOGEN
  92531. ></RBW-MARKER
  92532. ><RBW-PARABODY>Edit and save the new Tcl file.</RBW-PARABODY
  92533. ></LN.LIST.NUM
  92534. ><LR.LIST.RESULT>The next time you generate code (by using Utilities | Import From Previous Phase) the new Tcl file is sourced by otsh.</LR.LIST.RESULT
  92535. ></LABEL
  92536. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92537. >Storing Tcl files in a system Tcl</L.LABEL
  92538. ><B.BODY>If you do not want to store user&truehy;defined Tcl files in the same system in which your code is generated, you can create a system called Tcl and store your user&truehy;defined Tcl files in there. Any Tcl file that is defined in such a system is sourced during code generation. You can use this mechanism for user&truehy;defined Tcl files or for user&truehy;defined Tcl files that are meant to replace existing ones.</B.BODY
  92539. ><B.BODY>To store files in a Tcl system:</B.BODY
  92540. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  92541. ></RBW-AUTOGEN
  92542. ></RBW-MARKER
  92543. ><RBW-PARABODY>Make sure the Browser is on the Implementation phase level.</RBW-PARABODY
  92544. ></LN.LIST.NUM
  92545. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  92546. ></RBW-AUTOGEN
  92547. ></RBW-MARKER
  92548. ><RBW-PARABODY>Select File | New | System Version.</RBW-PARABODY
  92549. ></LN.LIST.NUM
  92550. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  92551. ></RBW-AUTOGEN
  92552. ></RBW-MARKER
  92553. ><RBW-PARABODY>Type <CX5FX5FINPUT>Tcl</CX5FX5FINPUT
  92554. > as the system name, being sure to use a capital T.</RBW-PARABODY
  92555. ></LN.LIST.NUM
  92556. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>4&rbwtab;</CX5FX5FZLIST.NUMBER
  92557. ></RBW-AUTOGEN
  92558. ></RBW-MARKER
  92559. ><RBW-PARABODY>Open the system Tcl.</RBW-PARABODY
  92560. ></LN.LIST.NUM
  92561. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>5&rbwtab;</CX5FX5FZLIST.NUMBER
  92562. ></RBW-AUTOGEN
  92563. ></RBW-MARKER
  92564. ><RBW-PARABODY>Select File | New | External File Version.</RBW-PARABODY
  92565. ></LN.LIST.NUM
  92566. ><LR.LIST.RESULT>A dialog box of file types appears.</LR.LIST.RESULT
  92567. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>6&rbwtab;</CX5FX5FZLIST.NUMBER
  92568. ></RBW-AUTOGEN
  92569. ></RBW-MARKER
  92570. ><RBW-PARABODY>Select Tcl as the file type, specify a name for the Tcl file (without the extension <CX5FX5FFILE.NAME>.tcl</CX5FX5FFILE.NAME
  92571. >), and click OK.</RBW-PARABODY
  92572. ></LN.LIST.NUM
  92573. ><LT.LIST.TEXT>You can enter the name of an existing Tcl file used for code generation or any other name. If you enter an existing name, the original Tcl file is replaced by this new file during code generation.</LT.LIST.TEXT
  92574. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>7&rbwtab;</CX5FX5FZLIST.NUMBER
  92575. ></RBW-AUTOGEN
  92576. ></RBW-MARKER
  92577. ><RBW-PARABODY>Edit and save the new Tcl file.</RBW-PARABODY
  92578. ></LN.LIST.NUM
  92579. ><LR.LIST.RESULT>The next time you generate code, the new Tcl file is sourced by otsh.</LR.LIST.RESULT
  92580. ></LABEL
  92581. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92582. ><RBW-IDXTERM TERM1="Tcl" TERM2="script files, testing"></RBW-IDXTERM
  92583. >Testing Tcl files</L.LABEL
  92584. ><B.BODY>If you want to test a customized Tcl file before you add it to a system in ObjectTeam, you can create the Tcl file in your file system and feed it to otsh outside the ObjectTeam environment. </B.BODY
  92585. ><B.BODY>See the <CX5FX5FTITLE>ObjectTeam Customization Guide</CX5FX5FTITLE
  92586. ><CX5FX5FTITLE></CX5FX5FTITLE
  92587. > for details on how to start otsh from the command line.</B.BODY
  92588. ><B.BODY>When the Tcl file has reached its final state, you can decide to add it to a system in ObjectTeam, as described above. </B.BODY
  92589. ></LABEL
  92590. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92591. ></L.LABEL
  92592. ><!--
  92593.  
  92594.  
  92595.  
  92596.  
  92597.  
  92598. CONVERTING SOURCE FILE ../../sources/pb/pbprop.fm5.mif
  92599.  
  92600.  
  92601. --><B.BODY></B.BODY
  92602. ><B.BODY></B.BODY
  92603. ><B.BODY></B.BODY
  92604. ><B.BODY></B.BODY
  92605. ><B.BODY></B.BODY
  92606. ></LABEL
  92607. ></SECTION
  92608. ></CHAPTER
  92609. ><APPENDIX><A.APPENDIX.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Appendix A&rbwtab;</CX5FX5FZCHAPTER.NUM
  92610. ></RBW-AUTOGEN
  92611. >Properties<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  92612. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for PowerBuilder</RBW-TEXTFLD
  92613. ></RBW-SYSOBJ
  92614. ></A.APPENDIX.HEAD
  92615. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92616. >PowerBuilder code generation properties</L.LABEL
  92617. ><B.BODY>The following table lists the properties that effect PowerBuilder code generation. These are available in the CD in the Object Design phase.</B.BODY
  92618. ><RBW-TABLE><TGROUP COLS="4"><COLSPEC COLNAME="1" COLWIDTH="144p"><COLSPEC COLNAME="2" COLWIDTH="99p"><COLSPEC COLNAME="3" COLWIDTH="117p"><COLSPEC COLNAME="4" COLWIDTH="180p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  92619. ></ENTRY
  92620. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Object Type</CELLHEADING
  92621. ></ENTRY
  92622. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Property</CELLHEADING
  92623. ><CELLHEADING>Value</CELLHEADING
  92624. ></ENTRY
  92625. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLHEADING>For More Information</CELLHEADING
  92626. ></ENTRY
  92627. ></RBW-ROW
  92628. ></THEAD
  92629. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association Access</CELLBODY
  92630. ></ENTRY
  92631. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  92632. ></ENTRY
  92633. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  92634. ><CELLBODY>Protected</CELLBODY
  92635. ><CELLBODY>Private</CELLBODY
  92636. ><CELLBODY>None</CELLBODY
  92637. ></ENTRY
  92638. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="16465" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Associations</RBW-XREF
  92639. ></CELLBODY
  92640. ></ENTRY
  92641. ></RBW-ROW
  92642. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute Access</CELLBODY
  92643. ></ENTRY
  92644. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  92645. ></ENTRY
  92646. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  92647. ><CELLBODY>Protected</CELLBODY
  92648. ><CELLBODY>Private</CELLBODY
  92649. ></ENTRY
  92650. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="34899" TYPE="XREF-TEXTCOPY">Specifying Attribute Access</RBW-XREF
  92651. ></CELLBODY
  92652. ></ENTRY
  92653. ></RBW-ROW
  92654. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Autoinstantiate</CELLBODY
  92655. ></ENTRY
  92656. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  92657. ></ENTRY
  92658. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  92659. ></ENTRY
  92660. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39809" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  92661. ></CELLBODY
  92662. ></ENTRY
  92663. ></RBW-ROW
  92664. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Constant Attribute</CELLBODY
  92665. ></ENTRY
  92666. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  92667. ></ENTRY
  92668. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  92669. ></ENTRY
  92670. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17590" TYPE="XREF-TEXTCOPY">Specifying Constants</RBW-XREF
  92671. ></CELLBODY
  92672. ></ENTRY
  92673. ></RBW-ROW
  92674. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Data Type</CELLBODY
  92675. ></ENTRY
  92676. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Qualifier for qualified association</CELLBODY
  92677. ></ENTRY
  92678. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92679. ></ENTRY
  92680. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="36884" TYPE="XREF-TEXTCOPY">Mapping Qualified Associations</RBW-XREF
  92681. ></CELLBODY
  92682. ></ENTRY
  92683. ></RBW-ROW
  92684. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Event</CELLBODY
  92685. ></ENTRY
  92686. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  92687. ></ENTRY
  92688. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Check box</CELLBODY
  92689. ></ENTRY
  92690. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19182" TYPE="XREF-TEXTCOPY">Editing Operation Properties</RBW-XREF
  92691. ></CELLBODY
  92692. ></ENTRY
  92693. ></RBW-ROW
  92694. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Global Type</CELLBODY
  92695. ></ENTRY
  92696. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  92697. ></ENTRY
  92698. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Yes</CELLBODY
  92699. ><CELLBODY>No</CELLBODY
  92700. ></ENTRY
  92701. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="13782" TYPE="XREF-TEXTCOPY">Specifying Global Type</RBW-XREF
  92702. ></CELLBODY
  92703. ></ENTRY
  92704. ></RBW-ROW
  92705. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Method Access</CELLBODY
  92706. ></ENTRY
  92707. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  92708. ></ENTRY
  92709. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Public</CELLBODY
  92710. ><CELLBODY>Protected</CELLBODY
  92711. ><CELLBODY>Private</CELLBODY
  92712. ></ENTRY
  92713. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19182" TYPE="XREF-TEXTCOPY">Editing Operation Properties</RBW-XREF
  92714. ></CELLBODY
  92715. ></ENTRY
  92716. ></RBW-ROW
  92717. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Pass By</CELLBODY
  92718. ></ENTRY
  92719. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  92720. ></ENTRY
  92721. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Value</CELLBODY
  92722. ><CELLBODY>Readonly</CELLBODY
  92723. ><CELLBODY>Reference</CELLBODY
  92724. ></ENTRY
  92725. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19034" TYPE="XREF-TEXTCOPY">Editing Parameter Properties</RBW-XREF
  92726. ></CELLBODY
  92727. ></ENTRY
  92728. ></RBW-ROW
  92729. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Text </CELLBODY
  92730. ></ENTRY
  92731. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  92732. ></ENTRY
  92733. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92734. ></ENTRY
  92735. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="39809" TYPE="XREF-TEXTCOPY">Editing Class Properties</RBW-XREF
  92736. ></CELLBODY
  92737. ></ENTRY
  92738. ></RBW-ROW
  92739. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92740. ></ENTRY
  92741. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Association</CELLBODY
  92742. ></ENTRY
  92743. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92744. ></ENTRY
  92745. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="16465" TYPE="XREF-TEXTCOPY">Specifying Access Methods for Associations</RBW-XREF
  92746. ></CELLBODY
  92747. ></ENTRY
  92748. ></RBW-ROW
  92749. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92750. ></ENTRY
  92751. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Attribute</CELLBODY
  92752. ></ENTRY
  92753. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92754. ></ENTRY
  92755. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="17827" TYPE="XREF-TEXTCOPY">Editing Attribute Properties</RBW-XREF
  92756. ></CELLBODY
  92757. ></ENTRY
  92758. ></RBW-ROW
  92759. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92760. ></ENTRY
  92761. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Operation</CELLBODY
  92762. ></ENTRY
  92763. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92764. ></ENTRY
  92765. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19182" TYPE="XREF-TEXTCOPY">Editing Operation Properties</RBW-XREF
  92766. ></CELLBODY
  92767. ></ENTRY
  92768. ></RBW-ROW
  92769. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92770. ></ENTRY
  92771. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Parameter</CELLBODY
  92772. ></ENTRY
  92773. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY></CELLBODY
  92774. ></ENTRY
  92775. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="19034" TYPE="XREF-TEXTCOPY">Editing Parameter Properties</RBW-XREF
  92776. ></CELLBODY
  92777. ></ENTRY
  92778. ></RBW-ROW
  92779. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>Window Type</CELLBODY
  92780. ></ENTRY
  92781. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Class</CELLBODY
  92782. ></ENTRY
  92783. ><ENTRY COLNAME="3" VALIGN="TOP" MOREROWS="0"><CELLBODY>Child</CELLBODY
  92784. ><CELLBODY>Main</CELLBODY
  92785. ><CELLBODY>MDI</CELLBODY
  92786. ><CELLBODY>MDIHelp</CELLBODY
  92787. ><CELLBODY>Popup</CELLBODY
  92788. ><CELLBODY>Response</CELLBODY
  92789. ></ENTRY
  92790. ><ENTRY COLNAME="4" VALIGN="TOP" MOREROWS="0"><CELLBODY><RBW-XREF REFID="11993" TYPE="XREF-TEXTCOPY">Modeling Windows</RBW-XREF
  92791. ></CELLBODY
  92792. ></ENTRY
  92793. ></RBW-ROW
  92794. ></TBODY
  92795. ></TGROUP
  92796. ><RBW-ICONIZE></RBW-TABLE
  92797. ><B.BODY></B.BODY
  92798. ><B.BODY></B.BODY
  92799. ><RBWAUTO-0001></RBWAUTO-0001
  92800. ><!--
  92801.  
  92802.  
  92803.  
  92804.  
  92805.  
  92806. CONVERTING SOURCE FILE ../../sources/st/stbk.mif
  92807.  
  92808.  
  92809. --><B.BODY></B.BODY
  92810. ><B.BODY></B.BODY
  92811. ><B.BODY></B.BODY
  92812. ><B.BODY></B.BODY
  92813. ><B.BODY></B.BODY
  92814. ></LABEL
  92815. ></APPENDIX
  92816. ></BOOK
  92817. ><BOOK><BH.BOOK.HEAD>Smalltalk Code Generation Guide</BH.BOOK.HEAD
  92818. ><!--
  92819.  
  92820.  
  92821.  
  92822.  
  92823.  
  92824. CONVERTING SOURCE FILE ../../sources/st/stpref.fm5.mif
  92825.  
  92826.  
  92827. --><B.BODY></B.BODY
  92828. ><B.BODY></B.BODY
  92829. ><B.BODY></B.BODY
  92830. ><B.BODY></B.BODY
  92831. ><B.BODY></B.BODY
  92832. ><CHAPTERNONUM><CN.CHAPTER.NOX23>About This Manual<RBWAUTO-0028><RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  92833. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Smalltalk</RBW-TEXTFLD
  92834. ></RBW-SYSOBJ
  92835. ></RBWAUTO-0028
  92836. ></CN.CHAPTER.NOX23
  92837. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92838. >About this manual</L.LABEL
  92839. ><B.BODY>The <CX5FX5FTERM>ObjectTeam</CX5FX5FTERM
  92840. ><CX5FX5FTERM></CX5FX5FTERM
  92841. > <CX5FX5FTITLE>Code Generation Guide</CX5FX5FTITLE
  92842. ><CX5FX5FTITLE></CX5FX5FTITLE
  92843. > <CX5FX5FTITLE>for Smalltalk</CX5FX5FTITLE
  92844. > contains information specific to the Smalltalk programming language. This includes information for setting up, configuring, and specifying code generation details in CDs that you will use to generate Smalltalk code. Refer to the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  92845. ><CX5FX5FTITLE></CX5FX5FTITLE
  92846. > for general information about the code generation process.</B.BODY
  92847. ></LABEL
  92848. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92849. >Prerequisites</L.LABEL
  92850. ><B.BODY>This guide is intended for experienced users of ObjectTeam and the analysis and design method it supports. This guide gives you information on how to map ObjectTeam diagrams to Smalltalk code; it does not teach you how to use Smalltalk.</B.BODY
  92851. ><B.BODY>To customize or extend the capabilities of the Smalltalk code generator, you must have a thorough understanding of the ObjectTeam Shell, the Object&truehy;Oriented Programming Language (OOPL) model structure, and the Tool Command Language (Tcl) commands.</B.BODY
  92852. ><RBWAUTO-0001></RBWAUTO-0001
  92853. ><!--
  92854.  
  92855.  
  92856.  
  92857.  
  92858.  
  92859. CONVERTING SOURCE FILE ../../sources/st/stobjd.fm5.mif
  92860.  
  92861.  
  92862. --><B.BODY></B.BODY
  92863. ><B.BODY></B.BODY
  92864. ><B.BODY></B.BODY
  92865. ><B.BODY></B.BODY
  92866. ><B.BODY></B.BODY
  92867. ></LABEL
  92868. ></CHAPTERNONUM
  92869. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 1&rbwtab;</CX5FX5FZCHAPTER.NUM
  92870. ></RBW-AUTOGEN
  92871. ><RBW-ANCHOR ID="37544"></RBW-ANCHOR
  92872. >Preparing Your ObjectTeam Model for Code Generation<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  92873. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Smalltalk</RBW-TEXTFLD
  92874. ></RBW-SYSOBJ
  92875. ></C.CHAPTER.HEAD
  92876. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92877. >Introduction</L.LABEL
  92878. ><B.BODY>In the Analysis and System Design phases, as described in the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  92879. ><CX5FX5FTITLE></CX5FX5FTITLE
  92880. >, you model the system without regard to the implementation environment.</B.BODY
  92881. ><B.BODY>In the Object Design phase, you add language&truehy;specific elements to your model. In the Implementation phase, you generate code.</B.BODY
  92882. ></LABEL
  92883. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92884. >Smalltalk module required</L.LABEL
  92885. ><B.BODY>The ObjectTeam module <CX5FX5FEMPHASIS>Smalltalk Code Generation</CX5FX5FEMPHASIS
  92886. > provides the menu items, the properties and the Tcl code required to use the Smalltalk Code Generator. Therefore, before moving to the Object Design phase, make sure this module is active.</B.BODY
  92887. ><B.BODY>You can check if a module is active on a particular Browser level by selecting Utilities | Show Active Modules on that level.</B.BODY
  92888. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92889. >For more information</SL.SUBLABEL
  92890. ><B.BODY>See <CX5FX5FTITLE>ObjectTeam Installation Guide</CX5FX5FTITLE
  92891. ><CX5FX5FTITLE></CX5FX5FTITLE
  92892. > for details on how to activate a module.</B.BODY
  92893. ></LABEL
  92894. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92895. >Object Design and Implementation</L.LABEL
  92896. ><B.BODY>This chapter describes the tasks of the Object Design phase. <RBW-XREF REFID="28728" TYPE="XREF-TEXTCOPY">Chapter 2, Generating Code</RBW-XREF
  92897. >, describes the tasks of the Implementation phase. You work iteratively in these two phases to generate code and complete your application.</B.BODY
  92898. ></LABEL
  92899. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92900. >Purpose of object design</L.LABEL
  92901. ><B.BODY><RBW-IDXTERM TERM1="Object Design" TERM2="activities in this phase"></RBW-IDXTERM
  92902. ><RBW-IDXTERM TERM1="Object Design" TERM2="development phase in ObjectTeam project"></RBW-IDXTERM
  92903. >In ObjectTeam, the CDs (and the objects defined in the CDs) provide all the source data needed for code generation. The goal of object design is to add to the CDs all the data required for successful code generation. For example, you add properties (such as the Attribute Access property, which establishes read/write access to an attribute) and incorporate language&truehy;specific syntax (such as data type specifications for attributes and the arguments of operations).</B.BODY
  92904. ><B.BODY>You might also add data to diagrams other than CDs. The code generator does not use oter diagrams, but they are useful for describing the behavior of classes, their attributes and operations.</B.BODY
  92905. ></LABEL
  92906. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92907. >In this chapter</L.LABEL
  92908. ><B.BODY>This chapter contains the following sections:</B.BODY
  92909. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>Section&rbwtab;Page</SBH.SECTION.BLOCK.TABLE.HEAD
  92910. ></ENTRY
  92911. ></RBW-ROW
  92912. ></THEAD
  92913. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="13501" TYPE="XREF-TEXTCOPY">Refining the Class Diagrams&rbwtab;1–3</RBW-XREF
  92914. ></SB.SECTION.BLOCK.TABLE
  92915. ></ENTRY
  92916. ></RBW-ROW
  92917. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="35686" TYPE="XREF-TEXTCOPY">Hints and Tips for Effective Code Generation&rbwtab;1–6</RBW-XREF
  92918. ></SB.SECTION.BLOCK.TABLE
  92919. ></ENTRY
  92920. ></RBW-ROW
  92921. ></TBODY
  92922. ></TGROUP
  92923. ></RBW-TABLE
  92924. ></LABEL
  92925. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="25958"></RBW-ANCHOR
  92926. ><RBW-ANCHOR ID="13501"></RBW-ANCHOR
  92927. ><RBW-ANCHOR ID="36358"></RBW-ANCHOR
  92928. ><RBW-ANCHOR ID="19276"></RBW-ANCHOR
  92929. ><RBW-ANCHOR ID="15756"></RBW-ANCHOR
  92930. ><RBW-ANCHOR ID="20855"></RBW-ANCHOR
  92931. ><RBW-ANCHOR ID="11800"></RBW-ANCHOR
  92932. ><RBW-ANCHOR ID="23233"></RBW-ANCHOR
  92933. ><RBW-ANCHOR ID="23234"></RBW-ANCHOR
  92934. ><RBW-ANCHOR ID="23235"></RBW-ANCHOR
  92935. >Refining the Class Diagrams</S.SECTION.HEAD
  92936. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92937. >Introduction<RBW-IDXTERM TERM1="Class Association Diagram"></RBW-IDXTERM
  92938. ></L.LABEL
  92939. ><B.BODY>The CDs and the objects defined in the CDs provide all the source data needed for code generation. <RBW-IDXTERM TERM1="Class Association Model"></RBW-IDXTERM
  92940. >These diagrams distinguish the classes in a system and describe their identities and their features. In the Object Design phase, you must add to the CDs sufficient detail for successful code generation.</B.BODY
  92941. ></LABEL
  92942. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92943. >Using data from diagrams other than CDs</L.LABEL
  92944. ><B.BODY>Diagrams other than the CDs are not used as input for code generation. However, they contain valuable information that can help you to complete and verify the CDs. The following table summarizes how you can use these other diagrams to help you find important objects that are not yet in the CDs.</B.BODY
  92945. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="90p"><COLSPEC COLNAME="2" COLWIDTH="360p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>CD Object</CELLHEADING
  92946. ></ENTRY
  92947. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Objects In Other Diagrams</CELLHEADING
  92948. ></ENTRY
  92949. ></RBW-ROW
  92950. ></THEAD
  92951. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>class</CELLBODY
  92952. ></ENTRY
  92953. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD object or initiator</CELLBODY
  92954. ><CELLBODY>STD class</CELLBODY
  92955. ><CELLBODY>UCD actor</CELLBODY
  92956. ></ENTRY
  92957. ></RBW-ROW
  92958. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>operation</CELLBODY
  92959. ></ENTRY
  92960. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>SD event</CELLBODY
  92961. ><CELLBODY>STD event or event message</CELLBODY
  92962. ><CELLBODY>UCD communication association</CELLBODY
  92963. ></ENTRY
  92964. ></RBW-ROW
  92965. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>attribute</CELLBODY
  92966. ></ENTRY
  92967. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>STD state names (enumerated list as an attribute value)</CELLBODY
  92968. ><CELLBODY>STD condition on an event</CELLBODY
  92969. ></ENTRY
  92970. ></RBW-ROW
  92971. ></TBODY
  92972. ></TGROUP
  92973. ></RBW-TABLE
  92974. ></LABEL
  92975. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92976. >Classes</L.LABEL
  92977. ><B.BODY>When you work on CDs, you focus on the implementation of classes. The CD must include all classes and the associations (and inheritance) between classes. In the Object Design phase, you may introduce new classes to ease implementation and improve performance.</B.BODY
  92978. ><B.BODY>You must include all attributes and operations for each class. The attributes of a class map to the attributes of the class type. The operations of the class map to functions and procedures of the class type. </B.BODY
  92979. ></LABEL
  92980. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92981. >External classes</L.LABEL
  92982. ><B.BODY>A class must have at least one attribute or one operation to generate code. Classes that have no attributes or operations are translated as external classes.</B.BODY
  92983. ></LABEL
  92984. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92985. >Associations</L.LABEL
  92986. ><B.BODY>You must define the associations between all classes, including any constraints.</B.BODY
  92987. ><B.BODY>Role names must also be defined. Every association needs at least one role name. Every mandatory association must have a role name. Without a role name, you cannot use the association.</B.BODY
  92988. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92989. >Role names in Analysis and System Design</SL.SUBLABEL
  92990. ><B.BODY>In the Analysis and System Design phases, role names distinguish a class by showing the role the class is playing in a relationship with another class. Each role name defines the role of the class within the context of a single association. It also indicates the use and direction of the association toward the class that plays a role. For example, a manager can be both the boss of a coworker and an employee of a company.</B.BODY
  92991. ><FA.FIGURE.ANCHOR><RBW-GRAPHIC filename="00834.tif" origseq="1" origtype="I" origdoc="../../sources/st/stobjd.fm5.mif"></RBW-GRAPHIC
  92992. ></FA.FIGURE.ANCHOR
  92993. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92994. >Role names in Object Design and Implementation</SL.SUBLABEL
  92995. ><BI.BODY.INTRO>In the Object Design and Implementation phases, the use of role names is extended. The code generator creates access methods  for an association if the class at the far end has a role name for the association. In the previous example, the code generated for Coworker includes access methods for Manager; the code generated for Manager does not include access methods for Coworker.</BI.BODY.INTRO
  92996. ></LABEL
  92997. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  92998. >Attributes</L.LABEL
  92999. ><B.BODY>You must specify each attribute completely, including its data type. (See <RBW-XREF REFID="11934" TYPE="XREF-TEXTCOPY">Data Attributes</RBW-XREF
  93000. > for attribute syntax.)The way to specify a data type for an attribute is to include the type in the class symbol, for example:</B.BODY
  93001. ><EM.EXAMPLE.MONO>memberNo : integer</EM.EXAMPLE.MONO
  93002. ><SL.SUBLABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93003. >Data types</SL.SUBLABEL
  93004. ><B.BODY>Data types of attributes and arguments can be standard ObjectTeam types, standard types for your target language, or class types and derived types. Types are abstracted from the data types recognized by the OOPL environment. The code generator translates the standard types to the target types. </B.BODY
  93005. ><B.BODY>Take care when customizing the files that define standard types. Any additions you make must conform to the target language or the generated code may not be usable. For details on customizing the standard types, see <RBW-XREF REFID="24015" TYPE="XREF-TEXTCOPY">Customizing Data Types</RBW-XREF
  93006. >.</B.BODY
  93007. ></LABEL
  93008. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93009. >Operations</L.LABEL
  93010. ><BI.BODY.INTRO>You must specify each operation completely.  This includes specifying such aspects as:</BI.BODY.INTRO
  93011. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  93012. ></RBW-AUTOGEN
  93013. ></RBW-MARKER
  93014. ><RBW-PARABODY>Whether the operation is a normal or class feature</RBW-PARABODY
  93015. ></LB.LIST.BULLET
  93016. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  93017. ></RBW-AUTOGEN
  93018. ></RBW-MARKER
  93019. ><RBW-PARABODY>The return type of the operation, if any</RBW-PARABODY
  93020. ></LB.LIST.BULLET
  93021. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  93022. ></RBW-AUTOGEN
  93023. ></RBW-MARKER
  93024. ><RBW-PARABODY>Any parameters, as well as their data types</RBW-PARABODY
  93025. ></LB.LIST.BULLET
  93026. ></LABEL
  93027. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93028. >Properties</L.LABEL
  93029. ><BI.BODY.INTRO><RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  93030. >In the Object Design phase, a variety of properties allow you to specify many implementation details. <RBW-IDXTERM TERM1="property" TERM2="using - to specify implementation details"></RBW-IDXTERM
  93031. >These details are incorporated in the final code.</BI.BODY.INTRO
  93032. ></LABEL
  93033. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93034. >Checking</L.LABEL
  93035. ><B.BODY>The last activity in object design is to use Check | Global Model to check the CDs. The CDs must be error&truehy;free before they can be used for code generation. See the <CX5FX5FTITLE>ObjectTeam Modeling Guide</CX5FX5FTITLE
  93036. ><CX5FX5FTITLE></CX5FX5FTITLE
  93037. > for more information about the Check utility.</B.BODY
  93038. ></LABEL
  93039. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93040. >For more information</L.LABEL
  93041. ><B.BODY><RBW-XREF REFID="17827" TYPE="XREF-TEXTCOPY">Chapter 3, Mapping Modeling Data to Smalltalk</RBW-XREF
  93042. >, describes how the ObjectTeam model is translated into code. You can use this information to help you complete the CDs in the Object Design phase.</B.BODY
  93043. ></LABEL
  93044. ></SECTION
  93045. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="36972"></RBW-ANCHOR
  93046. ><RBW-ANCHOR ID="35686"></RBW-ANCHOR
  93047. ><RBW-ANCHOR ID="15189"></RBW-ANCHOR
  93048. ><RBW-ANCHOR ID="40198"></RBW-ANCHOR
  93049. ><RBW-ANCHOR ID="24561"></RBW-ANCHOR
  93050. ><RBW-ANCHOR ID="13193"></RBW-ANCHOR
  93051. ><RBW-ANCHOR ID="11719"></RBW-ANCHOR
  93052. ><RBW-ANCHOR ID="11506"></RBW-ANCHOR
  93053. ><RBW-ANCHOR ID="11510"></RBW-ANCHOR
  93054. ><RBW-ANCHOR ID="11520"></RBW-ANCHOR
  93055. >Hints and Tips for Effective Code Generation</S.SECTION.HEAD
  93056. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93057. >Introduction</L.LABEL
  93058. ><B.BODY>Following are a few tips for effective code generation. It may be helpful to be aware of these items as you prepare for code generation, and then again as you generate and regenerate your source files.</B.BODY
  93059. ></LABEL
  93060. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93061. >Understanding the translations</L.LABEL
  93062. ><B.BODY>Before generating code, read through this guide. It contains detailed information about the data that you must include in your CDs for successful code generation. It also explains how the code generator translates the ObjectTeam model into source code files, what changes you can make to the source code files, and how to regenerate them without losing your changes.</B.BODY
  93063. ></LABEL
  93064. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93065. >Naming conventions</L.LABEL
  93066. ><B.BODY>Agree upon and follow a naming convention for projects, configurations, systems, classes, special characters, and so on. In addition, bear in mind that spaces between words (in class names, for instance) are deleted by ObjectTeam code generators.</B.BODY
  93067. ></LABEL
  93068. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93069. >Customizing code generation</L.LABEL
  93070. ><B.BODY>The code generators execute Tcl scripts that translate a model into source code. You can modify these scripts or create your own.. Always use caution when customizing or creating scripts; such scripts are not supported.</B.BODY
  93071. ></LABEL
  93072. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93073. >Using multiple languages in a single application</L.LABEL
  93074. ><B.BODY>Each ObjectTeam code generator is designed to generate code for one language. You can create an application that uses multiple languages by using different code generators to generate code for different systems; however, the generated code is not integrated across systems. </B.BODY
  93075. ><B.BODY>The ObjectTeam code generators are not designed to provide language integration. To build an application that uses multiple languages, you must do the following: </B.BODY
  93076. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>1&rbwtab;</CX5FX5FZLIST.NUMBER
  93077. ></RBW-AUTOGEN
  93078. ></RBW-MARKER
  93079. ><RBW-PARABODY>Create a separate ObjectTeam system for each language&truehy;specific subsystem.</RBW-PARABODY
  93080. ></LN.LIST.NUM
  93081. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>2&rbwtab;</CX5FX5FZLIST.NUMBER
  93082. ></RBW-AUTOGEN
  93083. ></RBW-MARKER
  93084. ><RBW-PARABODY>Generate code for each of the ObjectTeam systems.</RBW-PARABODY
  93085. ></LN.LIST.NUM
  93086. ><LN.LIST.NUM><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZLIST.NUMBER>3&rbwtab;</CX5FX5FZLIST.NUMBER
  93087. ></RBW-AUTOGEN
  93088. ></RBW-MARKER
  93089. ><RBW-PARABODY>Complete the application by adding the code necessary to provide the language integration.</RBW-PARABODY
  93090. ></LN.LIST.NUM
  93091. ><N.NOTE><RBW-AUTOGEN><CX5FX5FZNOTE>Note: </CX5FX5FZNOTE
  93092. ></RBW-AUTOGEN
  93093. >When you create a separate ObjectTeam system for each language&truehy;specific subsystem, be sure to define your classes in the appropriate system. When ObjectTeam generates code for the current system, it generates code for the classes that are defined in that system. It does not generate code for classes referenced, but not defined in, the current system; such classes are treated as external classes.</N.NOTE
  93094. ></LABEL
  93095. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93096. ></L.LABEL
  93097. ><!--
  93098.  
  93099.  
  93100.  
  93101.  
  93102.  
  93103. CONVERTING SOURCE FILE ../../sources/st/stcodg.fm5.mif
  93104.  
  93105.  
  93106. --><B.BODY></B.BODY
  93107. ><B.BODY></B.BODY
  93108. ><B.BODY></B.BODY
  93109. ><B.BODY></B.BODY
  93110. ><B.BODY></B.BODY
  93111. ></LABEL
  93112. ></SECTION
  93113. ></CHAPTER
  93114. ><CHAPTER><C.CHAPTER.HEAD><RBW-AUTOGEN><CX5FX5FZCHAPTER.NUM>Chapter 2&rbwtab;</CX5FX5FZCHAPTER.NUM
  93115. ></RBW-AUTOGEN
  93116. >Generating <RBW-ANCHOR ID="28728"></RBW-ANCHOR
  93117. >Code<RBW-SYSOBJ TYPE="MIFmarker"><RBW-DATAFLD TYPE="number">0</RBW-DATAFLD
  93118. ><RBW-TEXTFLD TYPE="text">Code Generation Guide for Smalltalk</RBW-TEXTFLD
  93119. ></RBW-SYSOBJ
  93120. ></C.CHAPTER.HEAD
  93121. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93122. >Introduction</L.LABEL
  93123. ><B.BODY><RBW-IDXTERM TERM1="code generation"></RBW-IDXTERM
  93124. >Typically, the ultimate goal of modeling an application is to produce code that implements the application. In ObjectTeam, you can generate a significant portion of the code automatically, then complete the code by adding the details that not specified in the model.</B.BODY
  93125. ></LABEL
  93126. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93127. >Prerequisites</L.LABEL
  93128. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  93129. ></RBW-AUTOGEN
  93130. ></RBW-MARKER
  93131. ><RBW-PARABODY>The ObjectTeam module <CX5FX5FEMPHASIS>Smalltalk Code generation</CX5FX5FEMPHASIS
  93132. > must be active from Object Design Phase and Implementation Phase level down.</RBW-PARABODY
  93133. ></LB.LIST.BULLET
  93134. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  93135. ></RBW-AUTOGEN
  93136. ></RBW-MARKER
  93137. ><RBW-PARABODY>Only the CDs (and the objects defined in the CDs) are used for code generation. Therefore, before code generation, it is critical that the CDs be fully defined, as described in <RBW-XREF REFID="37544" TYPE="XREF-TEXTCOPY">Chapter 1, Preparing Your ObjectTeam Model for Code Generation</RBW-XREF
  93138. >.</RBW-PARABODY
  93139. ></LB.LIST.BULLET
  93140. ></LABEL
  93141. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93142. >Steps in code generation</L.LABEL
  93143. ><B.BODY>The following table provides an overview of the code generation process. This chapter describes each step in greater detail.</B.BODY
  93144. ><RBW-TABLE><TGROUP COLS="2"><COLSPEC COLNAME="1" COLWIDTH="54p"><COLSPEC COLNAME="2" COLWIDTH="396p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Step</CELLHEADING
  93145. ></ENTRY
  93146. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLHEADING>Description</CELLHEADING
  93147. ></ENTRY
  93148. ></RBW-ROW
  93149. ></THEAD
  93150. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>1</CELLBODY
  93151. ></ENTRY
  93152. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Specify the Smalltalk code generation settings.</CELLBODY
  93153. ></ENTRY
  93154. ></RBW-ROW
  93155. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>2</CELLBODY
  93156. ></ENTRY
  93157. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Generate Smalltalk files. During this step, ObjectTeam creates Smalltalk files at System level in the Implementation phase.s</CELLBODY
  93158. ><CELLBODY><CX5FX5FEMPHASIS>Note:</CX5FX5FEMPHASIS
  93159. > System level in the Implementation phase is fundamentally different than System level in other phases. The System files in the Implementation phase are source files, not diagram files.</CELLBODY
  93160. ></ENTRY
  93161. ></RBW-ROW
  93162. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>3</CELLBODY
  93163. ></ENTRY
  93164. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Optionally, import the classes into the VisualWorks environment.</CELLBODY
  93165. ></ENTRY
  93166. ></RBW-ROW
  93167. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>4</CELLBODY
  93168. ></ENTRY
  93169. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>Edit the source files in either ObjectTeam or VisualWorks. ObjectTeam generates a large portion of your application code, but not all of it. In this stage, you finish writing the application code.</CELLBODY
  93170. ><CELLBODY>Changes you make to the source files are not lost. When you regenerate the source files, the code generator recognizes your changes and transfers them to the newly generated files.<RBWAUTO-0004><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  93171. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  93172. ></RBWAUTO-0004
  93173. > <RBWAUTO-0004><RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  93174. ></RBWAUTO-0004
  93175. ></CELLBODY
  93176. ></ENTRY
  93177. ></RBW-ROW
  93178. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><CELLBODY>5</CELLBODY
  93179. ></ENTRY
  93180. ><ENTRY COLNAME="2" VALIGN="TOP" MOREROWS="0"><CELLBODY>If you have not done so already, import the classes into the VisualWorks environment and test the application. If necessary: correct the source files, the model, or both; regenerate the Smalltalk files; and return to step 4.</CELLBODY
  93181. ></ENTRY
  93182. ></RBW-ROW
  93183. ></TBODY
  93184. ></TGROUP
  93185. ></RBW-TABLE
  93186. ></LABEL
  93187. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93188. >Illustration of code generation</L.LABEL
  93189. ><BI.BODY.INTRO>The following illustration shows how ObjectTeam generates code, including the names of the Tcl scripts that it uses. The CDs and CDMs shown at the top are in the Object Design phase.</BI.BODY.INTRO
  93190. ><FAR.FIGURE.ANCHOR.RIGHT><RBW-GRAPHIC filename="00835.tif" origseq="8" origtype="I" origdoc="../../sources/st/stcodg.fm5.mif"></RBW-GRAPHIC
  93191. ></FAR.FIGURE.ANCHOR.RIGHT
  93192. ></LABEL
  93193. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93194. >In this chapter</L.LABEL
  93195. ><B.BODY>This chapter contains the following sections:</B.BODY
  93196. ><RBW-TABLE><TGROUP COLS="1"><COLSPEC COLNAME="1" COLWIDTH="450p"><THEAD><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SBH.SECTION.BLOCK.TABLE.HEAD>section&rbwtab;page</SBH.SECTION.BLOCK.TABLE.HEAD
  93197. ></ENTRY
  93198. ></RBW-ROW
  93199. ></THEAD
  93200. ><TBODY><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12152" TYPE="XREF-TEXTCOPY">Components of Code Generation&rbwtab;2–3</RBW-XREF
  93201. ></SB.SECTION.BLOCK.TABLE
  93202. ></ENTRY
  93203. ></RBW-ROW
  93204. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="33329" TYPE="XREF-TEXTCOPY">Changing Smalltalk Code Generation Properties&rbwtab;2–4</RBW-XREF
  93205. ></SB.SECTION.BLOCK.TABLE
  93206. ></ENTRY
  93207. ></RBW-ROW
  93208. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="39919" TYPE="XREF-TEXTCOPY">Generating Smalltalk Source Files&rbwtab;2–6</RBW-XREF
  93209. ></SB.SECTION.BLOCK.TABLE
  93210. ></ENTRY
  93211. ></RBW-ROW
  93212. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="23542" TYPE="XREF-TEXTCOPY">Importing Classes in VisualWorks&rbwtab;2–12</RBW-XREF
  93213. ></SB.SECTION.BLOCK.TABLE
  93214. ></ENTRY
  93215. ></RBW-ROW
  93216. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="27253" TYPE="XREF-TEXTCOPY">Editing (Generated) Source Files&rbwtab;2–14</RBW-XREF
  93217. ></SB.SECTION.BLOCK.TABLE
  93218. ></ENTRY
  93219. ></RBW-ROW
  93220. ><RBW-ROW><ENTRY COLNAME="1" VALIGN="TOP" MOREROWS="0"><SB.SECTION.BLOCK.TABLE><RBW-XREF REFID="12958" TYPE="XREF-TEXTCOPY">Regenerating Code&rbwtab;2–16</RBW-XREF
  93221. ></SB.SECTION.BLOCK.TABLE
  93222. ></ENTRY
  93223. ></RBW-ROW
  93224. ></TBODY
  93225. ></TGROUP
  93226. ></RBW-TABLE
  93227. ></LABEL
  93228. ><SECTION><S.SECTION.HEAD><RBW-ANCHOR ID="12152"></RBW-ANCHOR
  93229. >Components of Code Generation</S.SECTION.HEAD
  93230. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93231. >Tcl scripts for code generation</L.LABEL
  93232. ><B.BODY>The scripts written for code generation retrieve information from the code generation models, format this information and write the results to source code files. Code generation models are built from the CDs in the Object Design phase.</B.BODY
  93233. ></LABEL
  93234. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93235. ><RBW-IDXTERM TERM1="code regeneration"></RBW-IDXTERM
  93236. ><RBW-IDXTERM TERM1="regeneration" TERM2="code"></RBW-IDXTERM
  93237. >Code <RBW-IDXTERM TERM1="otsh" TERM2="code regeneration"></RBW-IDXTERM
  93238. >regeneration</L.LABEL
  93239. ><B.BODY>Code generation is an automated process that generates Smalltalk files. ObjectTeam ensures that </B.BODY
  93240. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  93241. ></RBW-AUTOGEN
  93242. ></RBW-MARKER
  93243. ><RBW-PARABODY>You can regenerate these files when you change your model.</RBW-PARABODY
  93244. ></LB.LIST.BULLET
  93245. ><LB.LIST.BULLET><RBW-MARKER><RBW-AUTOGEN><CX5FX5FZBULLET>n&rbwtab;</CX5FX5FZBULLET
  93246. ></RBW-AUTOGEN
  93247. ></RBW-MARKER
  93248. ><RBW-PARABODY>Changes that you make to the generated files are preserved when you regenerate the files.</RBW-PARABODY
  93249. ></LB.LIST.BULLET
  93250. ><B.BODY>For more information, see <RBW-XREF REFID="12958" TYPE="XREF-TEXTCOPY">Regenerating Code</RBW-XREF
  93251. >.</B.BODY
  93252. ></LABEL
  93253. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93254. ><RBW-IDXTERM TERM1="class library" TERM2="including in code generation"></RBW-IDXTERM
  93255. >Class library integration</L.LABEL
  93256. ><B.BODY>You can include external class libraries in your design. Such an external class library is automatically included during the code generation. In addition, ObjectTeam helps you to understand and reuse existing class libraries through reverse engineering.</B.BODY
  93257. ><B.BODY>For more information, see <RBW-XREF REFID="32714" TYPE="XREF-TEXTCOPY">Chapter 4, Reverse Engineering</RBW-XREF
  93258. >.</B.BODY
  93259. ></LABEL
  93260. ><LABEL><L.LABEL><RBW-AUTOGEN></RBW-AUTOGEN
  93261. ><RBW-IDXTERM TERM1=