50 MapEditor
50 MapEditor
50 MapEditor
Copyright 2007 Sterling Commerce, Inc. All rights reserved. [Location of additional copyright information].
Contents
15
16 16 16 17 17 17 18 18 19 19 19 19 20 20 21 21 22 22 23 23 25 26 27 28 28 29 29 30 30 30 31 31 33 34 34 35 35
Contents
Creating a DDF or IFD File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Defining Map Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Adding Map Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Defining Map Component Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Using Copy, Cut, and Paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Splitting Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Promoting Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Finding Information in the Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Formatting Data in Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Using a String Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Using a Number Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Truncating Number Fields When Converting Strings to Numbers . . . . . . . . . . . 48 Truncating Trailing Zeros in a Specific Map . . . . . . . . . . . . . . . . . . . . . . . . . 49 BigDecimal Support for Real Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Using BigDecimal in a Specific Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Using a Plus Sign in a Number Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Caveats for Allowing and Generating the Plus Sign in Numeric Fields . . . . 52 Global Translator Properties Configuration . . . . . . . . . . . . . . . . . . . . . . . . . 53 Using + in All Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Using + in a Single Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Field-level Validation Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Using a Date/Time Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Completing a Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Creating Simple Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Using Autolink in the Map Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Compiling a Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Compiling Maps Using the Command Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Saving and Compiling Maps as the Sterling Integrator Map Type from the Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Compiling an XML Encoder Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Printing a Mapping Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Testing a Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
71
71 72 74 75 76 78 79 80 81 81 82 83 83 84 84
Contents
Insert Segment or Transaction Set from Standards . . . . . . . . . . . . . . . . . . . . . . . . . Using the Generate UBFI Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up a Syntax Record for an EDIFACT UNA Segment . . . . . . . . . . . . . . . . . .
85 86 86
89
About the Positional Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Positional Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Creating a Positional Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Importing Positional Maps from Gentran:Server for Windows and Gentran:Server for UNIX 92 About Record Delimiters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 About Decimal Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 About Double-Byte Character Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Creating Fields with the Positional Field Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Creating Temporary Records and Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 When to Use Temporary Records and Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Where to Use Temporary Records and Fields . . . . . . . . . . . . . . . . . . . . . . . . . . 97
101
About the Variable-Length-Delimited Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Variable-Length-Delimited Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Creating a Variable-Length-Delimited Layout from a Delimited File . . . . . . . . . . . . . 102
105
105 106 106 106 107 107 108 109 109 110 110 110
113
113 114 116 116 117 118
Contents
Managing the SQL File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying SQL File Format Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a SQL Data Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Statement Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Statement Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Cursor Operation Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Cursor Operation Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Input Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Key Field Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Auto Get Next Row Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Output Records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Auto Get Next Cursor Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generating Database Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generating Input Record Database Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generating Output Record Database Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating SQL Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Field In an Input Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Field In an Output Record (Input or Output Side of Map) . . . . . . . . . . . . . . . . . . Field In an Output Record (Input Side of Map) . . . . . . . . . . . . . . . . . . . . . . . . . . Checking Database Consistency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
118 119 119 120 121 122 122 123 123 123 125 125 127 127 127 128 128 129 129 131
133
133 134 135 136 137 137 138 140 141 143 145 146 146 147 147 148 148 149 151 151 152 153 153 154 154 154 155 156 157
Contents
Using Namespaces on the Input Side of the XML Map . . . . . . . . . . . . . . . . . . . 157 Using Namespaces on the Output Side of the XML Map . . . . . . . . . . . . . . . . . . 157
159
159 159 160 161 161 161 162 162 162 163 163 163 164 164 166 167 168 170 171 171 172 172 173 173 174 174 174 175 176 177 178 179 180 181 182 182 182 183 183 184 185 185 186 187 188 189
Contents
191
191 192 193 193 194 195 196 196 197 197 198 198 199 200 200 201 205 206 207 208 209 211 212 212 213 213 213 213 214 214 215 216 217 217 218 218 223 225 226 226 227 228 229 229 230 230 231
Contents
if...then...else. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . left . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . len . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . messagebox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ntoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . numerrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . occurrencetotal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . readblock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . resetoccurrencetotal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . right . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . select. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . strdate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . strstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sumtotal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . trim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . trimleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . trimright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . unreadblock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . while...do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . writeblock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Select and Update Available Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trading Partner Code List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Process Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Correlation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Document Extraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Envelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transaction Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
232 233 234 234 235 236 236 237 237 238 240 241 241 242 243 243 245 245 246 247 248 249 250 251 252 252 254 254 255 255 255 256 256
257
257 258 259 259 259 260 260 261 261 261 261 262 262 263 264 264
Contents
Importing and Exporting Extended Rule Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exporting Extended Rule Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exporting Extended Rule Libraries Using a Resource Tag . . . . . . . . . . . . . Exporting Extended Rule Libraries Without a Resource Tag . . . . . . . . . . . . Importing Extended Rule Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Importing an Extended Rule Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
271
271 272 272 273 273 274
277
278 279 279 279 280 280 280 280 281 282 283 283 283 284 284
285
299
299 299 300 300 300 301
10
Contents
Other Unsupported Extended Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 User Exits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 User Exit Migration Tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Select and Update Standard Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Tracking Migration Tip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Trading Partner Code List Migration Tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Document Name Migration Tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Synonym Table by In Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Synonym Table by Out Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 NCPDP Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Transaction Data File (TDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 ODBC (Open Database Connectivity) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 Differences Between the Application Translator and the Gentran:Server for Windows Translator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
307
309 309 310 310 310 311 312 312 313 314 314 316 318 318 318 319 320 320 321 321 322 322 323 323 324 324 325 325 326 327 328 329 329 330
11
Contents
Looping Tab (EDI, Positional, Variable Length Delimited, SWIFT Record). . . . . . . . Looping Tab (Groups) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Looping Tab (SQL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Map Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Map Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Map Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Message Type Tab (SWIFT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mode Tab (CII) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Name Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Namespace Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Numeric Validation Tab (SWIFT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ordering Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Output Tab (XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Position Tab (Positional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Positional Defaults Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Positional Field Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Query Tab (SQL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Record Tab (Positional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Repeat Tab (EDI and SWIFT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Repeating Tab (XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Repeat Suppression (Positional, EDI, Variable-Length Delimited) . . . . . . . . . . . . . . Rule Library Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rule Library Manager Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Settings Tab (Positional and XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Special Tab (EDI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Operation Tab (SQL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Tab (SQL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standard Formats Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standard Rule Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SWIFT Validation Tab (SWIFT Record) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Syntax Record Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Syntax Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tag Tab (CII) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tag Tab (EDI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tag Tab (Positional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tag Tab (SWIFT Record) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tag Tab (VLD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tag Tab (XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tree Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Type Tab (SWIFTNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Type Tab, Attributes (XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Type Tab, Content Particles (XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Tab (EDI Composites and SWIFT Composites) . . . . . . . . . . . . . . . . . . . Validation Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
331 332 333 333 333 335 336 336 336 337 337 338 339 339 340 341 342 343 343 343 344 344 345 346 346 348 348 349 350 351 351 352 353 353 354 354 354 355 355 356 356 357 357 358 360
361
Introduction to Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Background Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 Simple Example of Using Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
12
Contents
Extended Rule without Indexes (Simple Example) . . . . . . . . . . . . . . . . . . . . . . . Adding Indexes (Simple Example) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Translation with Indexes (Simple Example) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Complex Example of Using Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Map Setup (Complex Example) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extended Rule without Indexes (Complex Example) . . . . . . . . . . . . . . . . . . . . . Adding Indexes (Complex Example). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Translation with Incomplete Indexes (Complex Example) . . . . . . . . . . . . . . . . . Map Setup Using Complete Indexes (Complex Example) . . . . . . . . . . . . . . . . . Using Indexes with an XML File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Example of Using Indexes with XML File Format . . . . . . . . . . . . . . . . . . . . . . . .
365 367 368 369 371 372 375 377 378 379 379
387
387 387 388 389 391 392 394 396 397 399 400 400
403
403 404 405 406 407 408 411 411
413
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Prerequisite Knowledge and Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Notes to be Aware of Prior to Implementing COBOL Copybook Conversion . . . 414 Checklist of User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Creating a Map Using a COBOL Copybook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Tasks you Must Complete After Creating a Map with a Copybook. . . . . . . . . . . 421 Creating a CB2XML.properties File if Descriptions Exceed the Maximum Length 422 Modifying Records After a COBOL Copybook Conversion. . . . . . . . . . . . . . . . . 423 Troubleshooting for COBOL Copybook Conversions . . . . . . . . . . . . . . . . . . . . . . . . 424
13
Contents
Index
425
14
Chapter 1
The Map Editor Guide explains how to use the Sterling Commerce Application Map Editor to map the data formats supported by Application. This documentation assumes knowledge of: UNIX operating system Windows operating system Data formats Data mapping concepts You can use the Application Map Editor to map documents in the following data formats: Electronic Data Interchange (EDI), positional, variable-length-delimited, Japanese Center for Informatization of Industry (CII), Extensible Markup Language (XML), and Simple Query Language (SQL). This section covers the following topics: About Application Mapping About the Data Formats in Application About the Map Editor Mapping Preparation and Analysis Customizing the Map Editor Display Creating a Map Opening a Map Using Data Definition Format and Integrator File Definition Files Defining Map Details Adding Map Components Defining Map Component Properties Using Copy, Cut, and Paste Splitting Groups Promoting Groups Finding Information in the Map
15
Translation
When you have an electronic document in one format and the document is needed in a different format, you must transform the data in your document from one format to another. In Application, you use the Translation service to transform data.
Mapping
To translate data from one format to another, you must specify how the data in one format relates to data in another format. To relate one format to another for the translator, you must define a set of instructions in the Map Editor. These instructions indicate the relationship between the two formats.
16
Source Map
In the Map Editor, you specify mapping instructions for translation in a source map (a file with the extension .mxlthis is the default extension, when the map is saved as an XML-formatted fileor .map). The source map displays mapping instructions graphically. The data format that you are translating from is represented in a visual layout on the left side. The data format that you are translating to is represented in a visual layout on the right side.
Note: To save your source map as an XML file (.mxl file extension), you must have the Microsoft XML Core Services (MSXML) 4.0 installed on the same computer as Map Editor. If you do not have Microsoft XML Core Services (MSXML) 4.0 installed, you cannot save source maps as .mxl files and must use the .map extension.
Tip:
One benefit of using the .mxl format is that you could potentially manipulate it using other text editors.
The data formats that you can map using the Map Editor are: Electronic Data Interchange (EDI) Positional Variable-length-delimited Japanese Center for Informatization of Industry (CII) Extensible Markup Language (XML) Structured Query Language (SQL) The translator cannot use a source map to translate data. The source map must be compiled into a translation object, which the translator can use to translate data.
Translation Object
To use the instructions in a source map, you must compile the map. A compiled map has a different extension, .txo, and is called a translation object. It provides instructions for translating one format to another in a way that can be interpreted by a translator. The translator does the work of converting a file from one format to another.
17
side represents the data format you are translating to. Each part of a data format is represented by specific map components.
Map Map Components
18
20
For more information, see: Removing the Map Editor on page 22 Navigating in the Map Editor on page 22
To download and install the Map Editor: 1. From the Application Deployment menu, select Maps. 2. In the Download and Install section next to Download Map Editor (EN), click Go!
Note: For the Japanese version, click Go! next to Download Map Editor (JP).
3. From the File Download dialog box, select a download option, then click OK. If you choose to run the file, the operating system downloads the installation files immediately. If you choose to save the file, the operating system prompts you to save the file. Browse to the location where you want to download the file and click OK. If you want to continue installing, run the file you just saved from the location you specified.
21
4. In the Security Warning page, select Always trust content from Sterling Commerce (Mid America), Inc. if you do not want to see similar security messages in the future when you download software from Sterling Commerce. Click Yes. 5. In the Map Editor Setup Welcome window, click Next. 6. In the Choose Destination Location window, select where you want to install the Map Editor: If you accept the default location, click Next. If you want to specify a different location, click Browse, specify the path to the folder, click OK, and click Next.
Note: If you specify a folder name that does not exist, you get a message asking you if you want to create that folder.
7. In the Select Program Folder window, specify the program folder where you want the Map Editor to be located. If you accept the default folder, click Next. If you want to specify a different folder, type a new name in place of Sterling Commerce or from the Existing Folders list, select a folder and click Next. The Map Editor setup wizard installs the Map Editor. 8. In the Setup Complete window, click Finish.
22
Function Enables you to access some of the most common functions in the Map Editor. Unavailable items are shaded. The Main toolbar is dockable, so you can affix it to any edge of the client window. Displays status information about a selection, command, or process; defines commands as you select each item in the menu; indicates any current keyboard-started modes for typing.
Status bar
The Map Editor window enables you to navigate in four ways: Select the command from the Main Menu bar. Click the appropriate button on the Main toolbar. Click the appropriate part of the map. Right-click a map component to access a shortcut menu that contains all the available functions for that map component. The shortcut menus enable you to quickly and easily access available functions. The content of the shortcut menus varies, depending on the type and level of the selected map component. When you start the Map Editor, the Main Menu bar contains a subset of commands. The full set of commands opens after you create a new map or open (load) an existing map.
Note: The transaction data file (TDF) button is disabled in Application. TDF is a proprietary Sterling Commerce data format that is supported in the Gentran:Server for Windows product. The TDF format is not supported in Application.
Planning on Paper
The first and most important task when creating a map is to analyze the mapping requirements. These are the steps of mapping analysis: 1. Analyze the input and output documents.
23
2. Map the information (correlate the two documents). 3. Use temporary storage map components (if necessary).
Analyzing Documents
The first step of mapping analysis is analyzing the input and output documents. You must define these documents to Application. If you have a document format layout for either the input or output, start with that. Otherwise, you can create one by determining which fields are necessary to process the data correctly. Then, group the fields logically under records.
Mapping Information
To reconcile the two sides of the map, you must relate each input field to its corresponding output field and select a method for mapping it. To map information to a field, you use linking, standard rules, extended rules, or a combination of all three. Linking Or simple mapping, enables you to map a field from the input side of the map to a field on the output side of the map. The link between two map components (fields) is visually represented with a line connecting the two fields. Standard rules Give you access to mapping operation functions that are more complex than simple linking but less complex than extended rules. Extended rules Enable you to perform virtually any mapping operation you require. The best practice is to determine which mapping operations are necessary on a field-by-field basis for the input and output documents. After you finish correlating your input and output formats on paper, you can begin creating the map.
24
not repeat (because you can only map components which occur at the same hierarchical level on both sides of the map). You can use an extended rule to extract the shipping and billing information from the EDI group that contains the Shipping/Billing information, and move it to the appropriate temporary storage elements (the extended rule must be run after the translator reads an occurrence of the EDI group). Then you can link the shipping and billing information directly from the temporary storage elements to your application fields. Example 2 Another example (again using an EDI-to-Positional map) is if you do not know the order in which delivery and cancel dates appear in the EDI data. To map the delivery and cancel by date information to your application file, you must create a temporary storage segment and elements on the EDI side of the map. You can use an extended rule to extract the delivery and cancel by date information from the appropriate Date segment and move it to the appropriate temporary storage elements. Then you can map the delivery and cancel by date information directly from the temporary storage elements to your application fields.
25
Chapter 4, Mapping Variable-Length-Delimited Documents Chapter 5, Mapping CII Documents Chapter 7, Mapping XML Documents Chapter 6, Mapping SQL Documents 6. Define your output document (EDI, positional, variable-length-delimited, CII, XML, or SQL). For information about defining a document, see any of the sections listed in the previous step. 7. Map the appropriate data for each field. For more information about: Simple links, see Creating Simple Links on page 61. Autolink function, see Using Autolink in the Map Editor on page 62. Standard rules, see Chapter 8, Using Standard Rules. Extended rules, see Chapter 9, Using Extended Rules. User exits, see Chapter 11, Using User Exits. 8. Determine whether you must use temporary storage map components. For information about using temporary storage map components, see Using Temporary Storage Map Components on page 24. 9. Save and compile the map. For information about compiling a map, see Compiling a Map on page 63. 10. Print the mapping report. Validate and review the map, and make modifications as needed. For information about printing the mapping report, see Printing a Mapping Report on page 68. 11. Test the map. For information about testing a map, see Testing a Map on page 69.
26
Setting the Default Date Format on page 30 Changing Default File Settings on page 31 The Map Editor Preferences dialog box enables you to set global defaults for Application. You can change the display options at any time.
27
To customize colors for all maps: 1. From the Map Editor Options menu, select Preferences. 2. Click Colours. 3. From the Item list, select the type of map component. 4. From the Attributes list, select the attributes of the map component you selected. 5. Select the foreground and background colors for the item. 6. Repeat steps 3 - 5 for each item you want to customize. 7. When you are finished customizing the colors for all items, click OK to save changes.
28
To customize the global display of mapping links: 1. From the Map Editor Options menu, select Preferences. 2. Click the Links tab. 3. Select the linking option that you want to set as the default for all maps. Show no links Do not display mapping links. Show links to or from the currently selected field Display only mapping links for the currently selected field (this option enables you to concentrate on the selected field and removes the confusion of viewing many links at once). Show links to or from all visible fields Display all mapping links. 4. Click OK to save changes.
29
Customizing Confirmations
The Confirmations tab on the Preferences dialog box enables you to specify when you want confirmation messages displayed. To customize the Map Editor confirmations: 1. From the Map Editor Options menu, select Preferences. 2. Click the Confirmations tab. The Map Editor displays the confirmation options. 3. Set the global confirmation options by either selecting the Confirm everything check box (displays all confirmation messages) or by clearing the Confirm everything check box and then selecting individual confirmation messages by action performed.
Note: To increase the likelihood that the links in your maps are valid, select the link objects at different levels and link objects with different maximum usages confirmations.
30
Creating a Map
Creating a Map
Create Application maps for document-to-document mapping. Each map has two sides. Each side represents a data format; the input side is what you are translating from and the output side is what you are translating to. Each data format has specific map components. For information about creating a map using the customize option for the EDI, variable-length-delimited, CII, XML, CHIPS, Fedwire, SWIFT, or SQL data format, or using the additional positional format options, see those respective sections or documentation. When you create a map, for both the input and output sides, you choose whether you want to use a preloaded standard, an existing file format, or want to create a new file format for that side of the map (including selecting from standards that you have previously downloaded to the standards database). The preloaded standards are downloaded when you
31
download the Map Editor to your machine or any optional standards (such as those included with the Financial Services XML Standards bundle).
Note: If the map you are creating contains greater than 20,000 objects, you will receive a message noting that this map contains a very large number of objects. For best performance, it is recommended that you consider whether any unnecessary objects in the map can be removed, do not expand the entire object treeexpand only the section of the tree you are currently mapping, consider using the Show links to or from the currently selected element option instead of the Show links to or from all visible elements option, and save the map using the.MAP file format (using the Save As function).
To create a map: 1. From the Map Editor File menu, select New. 2. In the New Map wizard, answer the following questions and then click Next. What kind of map are you creating? Accept the default, Sterling Integrator.
Caution: Always accept the Sterling Integrator default when you are using the Application product.
Note: The other map options enable you to import maps from other Sterling Commerce products in order to convert them to Sterling Integrator-type maps.
What is the name of the map? Type the unique name of the map. The Map Editor adds the default .mxl extension. What is your name? Type your name if it differs from the user name prompted by the New Map wizard. The New Map wizard displays Input Format fields. You must complete the format of the input side of the map. This is the format of the data that is translated by Application. 3. In the Input Format window, specify how you want to define the data format by selecting one of the following: Create a new data format using this standard
Note: This selection allows you to use a preloaded standard (that is, you do not have to load the data format for the standard to the Map Editor).
Select the standard and click Messages Complete the Map Wizard
32
Opening a Map
Type the path and file name of the saved definition (.ddf or .ifd extension). Click Browse to display the Open File Definition dialog box.
Create a new data format using this syntax Select a format. 4. In the Output Format window, specify how you want to define the data format by selecting one of the following: Create a new data format using this standard
Note: This selection allows you to use a preloaded standard (that is, you do not have to load the data format for the standard to the Map Editor).
Select the standard and click Messages Complete the Map Wizard
Type the path and file name of the saved definition (.ddf or .ifd extension). Click Browse to display the Open File Definition dialog box.
Create a new data format using this syntax Select a format. 5. Click Finish to create the map. The map opens in the Map Editor window. 6. In the Map Editor, select File > Save to save the map. Do not use spaces or apostrophes in the map name.
Note: A progress dialog box displays and updates during the compilation process. If the map contains a large number of objects, you may be prompted that you should save the map in .MAP format.
7. To save a map as a .map file, select File > Save As and then select Source Maps (*.map) from the Save as type list.
Note: Prior to opening an .mxl (XML-formatted) file, the Map Editor verifies that you have the Microsoft XML Core Services (MSXML) 4.0 installed on the same computer as Map Editor. If you do not have the Microsoft XML Core Services (MSXML) 4.0 installed, the Map Editor cannot save or load .mxl source files.
Opening a Map
To open a map or several maps at one time: 1. From the Map Editor File menu, select Open.
Map Editor Guide 33
2. In the Open dialog box, select one .mxl or .map file, or select several files by one of the following methods: Hold Shift as you select a range of files. Hold Ctrl as you select individual files.
Tip: If the Open dialog box does not display .mxl or .map files, browse to the folder where your maps are located. Later, you can change the default folder that opens when you browse for maps. For more information, see Changing the Default Folder in the Open Dialog Box on page 34.
3. Click Open. When you load a .mxl file, the Map Editor references the Mapper.xsd schema file (installed with the Map Editor) to validate the .mxl file prior to processing it. Prior to opening an .mxl (XML-formatted) file, the Map Editor verifies that you have the Microsoft XML Core Services (MSXML) 4.0 installed on the same computer as Map Editor. If you do not have the Microsoft XML Core Services (MSXML) 4.0 installed, the Map Editor cannot save or load .mxl source files.
Note: When you open a Gentran:Server for UNIX or Gentran:Server for Windows map in Application, you need to save it as a Sterling Integrator type map. See Defining Map Details on page 36 for more information.
34
extension .idf. Both DDF and IFD files include the hierarchical and looping structure of the data, the map objects (groups, records, fields) and their attributes (for example, names, descriptions, data types). A DDF or IFD file can be loaded (imported) or created (for export) from the Map Editor.
Note: DDF and IFD files do not contain standard or extended rules, links, or any other map information unrelated to the data format. The one exception is the Use Code code lists. If the map references a Use Code standard rule and instructs Application to raise a compliance error if the code is not found in the Use Code code list, Application saves the standard rule and the associated code list. For more information about code lists and using the Use Code standard rule, see Chapter 8, Using Standard Rules.
For more information, see: Requirement for Using DDF Files on page 35 Opening a DDF or IFD File on page 35 Creating a DDF or IFD File on page 36
35
1. In the Map Editor, right-click the data format icon on the side of the map where you want to open the DDF or IFD file and select Open File Definition from the shortcut menu.
Note: If you already used Application to create that side of the map, you are prompted with a message that warns you that the existing file format will be replaced. Click Yes to continue.
2. Browse to locate the DDF or IFD file. 3. Click Open to open the selected DDF or IFD file into the map.
For more information about Map Details Dialog Box properties, press F1 for Help or see Appendix C, Map Editor Properties. To specify map details: 1. From the Map Editor Edit menu, select Details. 2. To change the map description, type the new description in the Description box.
36
3. If the Map Function list does not contain Sterling Integrator, select Sterling Integrator. All Application maps must be the Sterling Integrator type Map Function. 4. If you are using a map that was created with Gentran:Server for Windows NT 2.x and you need the rules to run exactly as they did in that product, then select the Gentran:Server for Windows NT 2.x Compatible Rule Execution check box. 5. If you want to change the map version, type the appropriate version numbers in the Major version and Minor version boxes. 6. Click OK to save changes.
1. In the Map Editor, right-click the map component that precedes what you want to add and select either: Create Sub Makes the new component subordinate to the selected map component Insert Puts the component at the same level as the selected map component 2. When you import a map from Gentran:Server for Windows (or from Gentran:Server for UNIX, if the maps were created using the Application Integration MAPPER.EXE), you must change the Map Function to Sterling Integrator. 3. In the map component properties dialog box, name the component. You can specify the other properties now or later. For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. 4. Click OK to save changes and close the dialog box.
37
See Appendix C, Map Editor Properties for more information about map component properties.
Tip: While you are working on the map, it is a good practice to save the map often.
To define, modify, or view property information: 1. In the Map Editor, right-click the map component. From the shortcut menu, select Properties. 2. In the properties dialog box, specify the properties as necessary. For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. 3. Click OK to save changes and close the dialog box.
3. Select the map component that you want the cut or copied selection to be pasted after. You must match the type of input or output you cut or copied from to the type of the side of the map where you paste it. For example, if you copied an XML component, you can paste that component into only the XML side of a map. 4. Click Paste on the Main toolbar to paste the contents of the Clipboard. If the map component that you selected is a group, Application prompts you to specify whether you want the contents of the Clipboard pasted as a child (subordinate) of the
38
Splitting Groups
group or pasted at the same level as the group. Select the appropriate option and click OK.
Splitting Groups
The Split function enables you to split (break) the following objects into two loops: Group Repeating record Repeating element Repeating composite If you split a group (or any one of these map components), the individual iterations of the two groups that you created by splitting a group add up to the original number of iterations of the group before being split. For example, you might have a group with 50 iterations. You could split that group into two groups: one that iterates 20 times and one that iterates 30 times. Use the Split function when you need more than one instance of a map component that occurs multiple times. The Split function is available only if a group or repeating record, element, or composite is selected. To split a group or repeating record, element, or composite: 1. In the Map Editor, select an item from which you want to extract one iteration. 2. In the Main toolbar, click Split. 3. In the First Loop Entries box, type the number of iterations that you want the group or repeating record, repeating element, or repeating composite to split. The number you type must be greater than zero and less than the maximum number of iterations of the loop. For example, if the X loop repeats a maximum number of five times, and you type 2, the resulting split generates one X loop that repeats a maximum of two times and a second X loop that repeats a maximum of three times. 4. Click OK to complete the split.
Note: You can use the Copy and Paste functions (and then change the number in the Maximum usage box on the map components Properties dialog box) to accomplish the same task.
Promoting Groups
The Promote function extracts one iteration (instance) of one of the following map components: Group
39
Repeating record Repeating element Repeating composite Promote is a specialized version of the Split function. For example, if you have a group with 50 iterations and you select Promote, you then have two groups: one group with an iteration of 1 and a group that iterates 49 times. This function enables you to map unique data from a document and to type a specialized definition. Application specifies that only one-to-one (no loop) or many-to-many (loop) mapping relationships are valid. The Promote function is available only if a group or repeating record, element, or composite is selected. To promote a group or repeating record, element, or composite: 1. In the Map Editor, select an item from which you want to extract one iteration. 2. In the Main toolbar, click Promote. The Map Editor extracts one iteration (instance) of the looping structure.
Note: Promoting is the same as splitting off one iteration. You can use the Copy and Paste functions (and change the number in the Maximum usage box on the appropriate Properties dialog box of the map component) to accomplish the same task. Depending on the circumstances, you can use the Split or Copy and Paste functions instead.
40
5. Click Find Next to locate the next occurrence of the specified text.
Note: You can also press F3 or select Find Next from the Edit menu to locate the next occurrence of text you specified using the Find feature.
For more information, see the following sections: Using a String Field on page 41 Creating Syntax Tokens on page 42 Deleting a Syntax Token on page 45 Deleting a Character Range on page 45 Using a Number Field on page 45 Using a Plus Sign in a Number Field on page 52 Using a Date/Time Field on page 58
41
Format option, which indicates that any characters are acceptable in the field, and the translator does not check the characters for compliance. You can also create special syntax tokens to meet your specific needs. You assign a syntax token to a field to check the field for compliance during translation. For example, if a field with syntax token A assigned to it (character range A through Z and a through z) contains a number, the translator generates a compliance error. You specify that a field is a string and assign a syntax token in the Field, Element, or TFD Properties dialog box, on the Validation tab, in the data format field. To specify a string field: 1. In the Map Editor, double-click an existing field or create a new one. For more information about creating fields, see Adding Map Components on page 37. 2. In the appropriate Properties dialog box, click the Validation tab. 3. From the data-type list, select String. 4. From the data format list, select Free Format or the appropriate syntax token. Free Format indicates that any characters are acceptable in the field. The translator does not check the characters for compliance. If you select Free Format, the drop-down list becomes an editable text box. Free Format indicates that any characters are acceptable in the field. The translator does not check the characters for compliance. 5. In the text box, type the appropriate characters or complex syntax for this field. 6. Click OK to save your selections.
Creating a Syntax Token for Western European Languages The Map Editor uses the ANSI character set when determining the start and end range for a syntax token. To create a syntax token: 1. From the Map Editor Edit menu, select Syntax Tokens. The Syntax Tokens dialog box opens. 2. Click New.
42
3. In the Edit Syntax Token dialog box, in the Token field, type the unique one-character alphanumeric value that the Map Editor recognizes as containing the permitted range of characters you designate. The token can be only one unique character, uppercase or lowercase, alphabetical or numeric, 1 9. 4. To specify the character range, click New. The Character Ranges list contains the character range or ranges that you define for this token. You can define more than one character range for each token. For example, you can define the token A as permitting the character ranges A Z and a z. This definition indicates that token A permits only uppercase and lowercase alphabetical characters. 5. In the Edit Character Range dialog box, in the Start character box, type the character that begins the permitted character range. For example, if the character range you want to define is B D, type B in the Start character box. If you type a character, such as , that is not accepted, you must type it in hexadecimal code. To type hexadecimal characters, type 0(zero)x (that is, 0X), followed by the hexadecimal code. For example, the hexadecimal equivalent of is 0xE9.
Note: You can now use the null character (hexadecimal 0x00) in your maps.
The Start character and End character can each be only one character, uppercase or lowercase, alphabetical or numeric, 1 9. For more information about possible character ranges, see Character Ranges for Western European Languages on page 43. 6. In the End character box, type the character that terminates the permitted token range. Use the guidelines from step 5. 7. Click OK to return to the Edit Syntax Token dialog box. 8. Add additional character ranges as necessary. 9. Click OK to save the syntax token. Character Ranges for Western European Languages For Western European languages, refer to the ANSI character chart (Windows codepage 1252 or ISO-8859-1, Latin-1). This chart also displays ranges so that you can type appropriate ranges for the characters in your language. If no chart is available, use the following guidelines: To include all the accented characters in the major languages of Western Europe, add the following ranges:
Start 0xC0 End 0xD6
43
Scandinavian users must also add the following ranges in order to include and .
Start 0x8C 0x9C End 0x8C 0x9C
Creating a Syntax Token for Asian Languages Double-byte character set (DBCS) syntax tokens enable you to create a map that accepts double-byte characters. The DBCS button is active on the Syntax Tokens dialog box if: You are running the Map Editor on a Chinese, Japanese, or Korean version of the Windows operating system. You have added font support for one of these languages to a Windows 2000 system. DBCS tokens are displayed only in the DBCS Syntax Tokens dialog box, not in the list on the Syntax Tokens dialog box. To create a DBCS syntax token: 1. From the Map Editor Edit menu, select Syntax Tokens. 2. Click DBCS. 3. In the DBCS Syntax Tokens dialog box, select the codepage that most closely matches the character set that you are mapping. For example, if you are mapping Japanese characters, use codepage 932. 4. Click New. 5. In the Edit DBCS Syntax Token dialog box, in the Token field, type the unique one-character alphanumeric value that the Map Editor recognizes as containing the permitted range of characters you designate. 6. Select the lead byte from the Lead-Byte box. Double-byte characters are composed of a lead byte and a trail byte. For example, the character is code point 93F9 (lead byte 93, trail byte F9). 7. To exclude individual characters or groups of characters from the token (you do this if there are certain characters that you will not accept in your data), make characters unavailable by either: Clicking a character to make it appear shaded Dragging the cursor across a group of characters to make them appear shaded
44
45
For the Packed decimal format, two digits are put (packed) into each byte of storage, and thus each byte (except for the low-order byte) can contain two decimal numbersthus halving the storage requirements. The low-order byte contains one digit in the leftmost position and the sign (positive or negative) in the rightmost position. The sign portion of the low-order byte indicates whether the numeric value represented in the digit portions is positive or negative. Since a digit only has ten possible values (0 9), it can be represented in only 4 bits. Therefore, you can get two digits in each eight-bit byte (for example, decimal 92 would be encoded as the eight-bit sequence 1001 0010). Normal character representation only stores one character (digit) per byte, so packed data only requires half the storage of character (unpacked) data. Each four bits of a byte is called a nibble, and each nibble contains one digit of the value, stored in binary form, known as Binary Coded Decimal (BCD). The last nibblethe low-order byteis used to store the sign for the number. This nibble stores only the sign, not a digit: C hex indicates a positive sign, D hex indicates a negative sign, and F hex indicates that the number is unsigned.
Note: When you use packed decimal numbers on the input side of a map, the translator truncates trailing zeros when it converts the value to a floating point numeric value.
The nibble (one-half byte) used for marking the sign for packed decimal number in the Map Editor is different for zSeries (mainframe) operating systems and iSeries (AS/400) operating systems. For zSeries data, the last nibble of a packed decimal number is 0x0C if the sign is positive and 0x0D if the sign is negative. For iSeries data, the last nibble of a packed decimal number is 0x0F if the sign is positive and 0x0D if the sign is negative. Incoming data is handled by the Application libraries and outgoing data is handled by the datatype.PackedDecimal property in the customer_overrides.properties property file. If the datatype.PackedDecimal property exists then packed data is converted using the zSeries format (unsigned). If the customer_overrides.properties file is missing or if the datatype.PackedDecimal property is missing from the property file, the packed data is converted as signed by default. The following table lists the available number options:
Field R0 R1 R2 R3 R4 R5 R6 Type of Decimal Point Explicit Explicit Explicit Explicit Explicit Explicit Explicit Number of Decimal Places None Up to one Up to two Up to three Up to four Up to five Up to six
46
Field R7 R8 R9 N0 N1 N2 N3 N4 N5 N6 N7 N8 N9 Overpunch0 Overpunch1 Overpunch2 Overpunch3 Overpunch4 Overpunch5 Overpunch6 Overpunch7 Overpunch8 Overpunch9 Packed0 Packed1 Packed2 Packed3 Packed4 Packed5 Packed6 Packed7
Type of Decimal Point Explicit Explicit Explicit Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied Implied
Number of Decimal Places Up to seven Up to eight Up to nine None One Two Three Four Five Six Seven Eight Nine None One Two Three Four Five Six Seven Eight Nine None One Two Three Four Five Six Seven
47
If you select an implied decimal (N format) for a field, and the data in that field has fewer than the specified number of decimal places, the translator pads the data with zeros to the right so that it still interprets the data within the specified format. For example, if you specify a format of N3 for a field, and the data in that field is 1, the translator interprets the data as .001. To specify a number field: 1. In the Map Editor, double-click an existing field or create a new one. For more information about creating fields, see Adding Map Components on page 37. 2. In the appropriate Properties dialog box, click the Validation tab. 3. From the data-type list, select Number. Number indicates that the field is an implied decimal number, a real number, an overpunched number, or a packed decimal number (for Positional formats only) that can be manipulated mathematically. 4. From the data format list, select the appropriate option. 5. Click OK to save your choices.
48
In this syntax, mapName refers to the content of the Description field when you access the Map Details (Edit > Details) for the map in which you want to truncate trailing zeros. The value true indicates that you want to truncate trailing zeros for the specified map, and false indicates that you do not want to truncate trailing zeros for the specified map.
Rounding mode is to round towards positive infinity. Rounding mode is to round towards zero. Rounding mode is to round towards negative infinity. Rounding mode is to round toward the nearest neighbor unless both neighbors are equidistant (n this case, round down). Rounding mode is to round toward the nearest neighbor unless both neighbors are equidistant, (and in this case, round toward the even neighbor). Rounding mode is to round toward the nearest neighbor, unless both neighbors are equidistant (and in this case, round up).
HALF_UP
49
Description
Rounding mode is to assert that the requested operation has an exact result, and therefore no rounding is necessary. Rounding mode is to round away from zero.
The following table exemplifies how different two-digit decimal values would round to a one digit decimal value, using the BigDecimal rounding mode specified.
Input Number 5.5 2.5 1.6 1.1 1.0 -1.0 -1.1 -1.6 -2.5 -5.5 UP DOWN CEILING FLOOR HALF_ UP 6 3 2 1 1 -1 -1 -2 -3 -6 HALF_ DOWN 5 2 2 1 1 -1 -1 -2 -2 -5 HALF_ EVEN 6 2 2 1 1 -1 -1 -2 -2 -6 UNNECESSARY
6 3 2 2 1 -1 -2 -2 -3 -6
5 2 1 1 1 -1 -1 -1 -2 -5
6 3 2 2 1 -1 -1 -1 -2 -5
5 2 1 1 1 -1 -2 -2 -3 -6
throw ArithmeticException throw ArithmeticException throw ArithmeticException throw ArithmeticException 1 -1 throw ArithmeticException throw ArithmeticException throw ArithmeticException throw ArithmeticException
The properties in the customer_overrides.properties file that govern rounding behavior are as follows: The storage.useBigDecimal property determines whether or not BigDecimal or Double is used internally. The default is false, meaning that Double is used internally unless you set the property to true. Setting this property to true enables BigDecimal support for all arithmetic operations.
storage.useBigDecimal=false
The extendedRules.useRoundingModeForDoubles property allows you to maintain backward compatibility for maps created prior to the initiation of BigDecimal support.
50
When you enable BigDecimal mode (using the storage.useBigDecimal property), you must set this parameter to false.
extendedRules.useRoundingModeForDouble=false
If you are not using BigDecimal, leave this property set to true.
extendedRules.useRoundingModeForDoubles=true
The storage.bigDecimalRoundingMode property sets the rounding mode when BigDecimal is used. The default is HALF_UP, meaning that the rounding mode is to round toward the nearest neighbor unless both neighbors are equidistant, (and in this case, round toward the even neighbor). This property allows you great control over rounding behavior because it enables you to invoke rounding modes equivalent to the BigDecimal rounding modes (listed below).
storage.bigDecimalRoundingMode=HALF_UP
This property can be set to the following values (BigDecimal rounding modes): CEILING FLOOR UP DOWN HALF_DOWN HALF_EVEN HALF_UP UNNECESSARY. The storage.<mapName>.useBigDecimal property allows you to enable BigDecimal mode for a specific map. The <mapName> parameter is the value of the Description field in the Map Details dialog box. Setting this property to true enables BigDecimal support for all arithmetic operations in the specified map.
storage.<mapName>.useBigDecimal=true
The storage.bigDecimalMaximumDefaultScale property sets the default maximum scale for when BigDecimal is used and an explicit scale is not defined based on the field limits (such as, accumulator operations). The default for this property is 10.
storage.bigDecimalMaximumDefaultScale=10
In this syntax, mapName refers to the content of the Description field when you access the Map Details (Edit > Details) for the map in which you want to use BigDecimal. The value
51
true indicates that you want to use BigDecimal with the specified map, and false indicates that you do not want to use BigDecimal with the specified map.
Note: If you are using BigDecimal mode on a per map basis for the SWIFT standard, you also need to enable BigDecimal (turn it on) for any validation pass-through maps you are using.
Caveats for Allowing and Generating the Plus Sign in Numeric Fields
The following requirements must be noted prior to configuring Map Editor and/or translator properties to allow and generate the plus sign in numeric fields: Ensure that the field length is sufficient to accommodate the plus signotherwise the data may be truncated. On the input side of the map, the field in which the plus sign will be read must be long enough to accept the addition of a plus sign in the data. Additionally, on the output side of the map, the field to which the data is being
52
mapped must be long enough to accommodate the generation of the plus sign in the data. If you currently use the plus sign as a delimiter (this is a default for EDIFACT), when you add the plus sign to input data, you must use preface the plus sign with the release character you have specified. For example, if you specified the plus sign as the delimiter for elements and specified the release character as a question mark (?), then you would specify the value 5.000 in the data as follows:
+?+5.000
delimiter release character plus sign in data
If you currently use the plus sign as a delimiter (this is a default for EDIFACT), when a plus sign is generated in your output data, it will be preceded by the release character that you specified.
53
The translator.output.generatesigneddecimal property enables the generation of a plus sign on the output side (only) for all maps. The default is FALSE (disabled), but you can configure it to TRUE.
Note: Regardless of whether you set the translator.input.allowsigneddecimal property to true (enabled) or false (disabled), it may be overridden by any plus sign parameters specified by using field-level validation.
You can disable the use of the + for the input side of all maps, as follows: 1. If you want to disable the use of a plus sign on the input side of all maps, in the install_dir/properties/customer_overrides.properties file, set the translator.input.allowsigneddecimal property to false, as shown in the example below:
translator.input.allowsigneddecimal=false
2. Save the customer_overrides.properties file. You can enable the use of the + for the output side of all maps, as follows: 1. If you want to be able to generate a plus sign on the output side of all maps, in the install_dir/properties/customer_overrides.properties file, set the translator.output.generatesigneddecimal property to true, as shown in the example below:
translator.output.generatesigneddecimal=true
2. Save the customer_overrides.properties file. 3. Restart your Application instance so the property file changes are recognized.
The translator.<mapname>.output.generatesigneddecimal property enables the generation of a plus sign on the output side (only) of a specific map, where <mapname> is the name of the map as specified on the Map Details dialog box (Description field). The default is FALSE (disabled), but you can configure it to TRUE (enabled).
Note: Regardless of whether you set the translator.<mapname>.input.allowsigneddecimal property to true (enabled) or false (disabled), it is overridden by any plus sign parameters specified by using field-level validation.
54
You can disable the use of the + on the input side in a single map, as follows: 1. If you want to disable the use of the plus sign on the input side of a map, in the install_dir/properties/customer_overrides.properties file, add the line translator.<mapname>.input.allowsigneddecimal=false and replace <mapname> with the actual name of the map in which you want to disallow the use the plus sign, as specified on the Map Details dialog box (Description field) for that map. This triggers a translation error when a plus sign precedes a number. For example, if the name of the map in which you want to disallow the use of the plus sign on the input side of the map is RomanMap.mxl, replace the <mapname> with RomanMap, as shown in the example below:
translator.RomanMap.input.allowsigneddecimal=false
Note: If a map Description contains spaces, you must amend it in the customer_overrides.properties file by putting a backslash before every space. Thus if the map Description is Roman Map, the example statement is:
translator.Roman\ Map.output.generatesigneddecimal=false
2. Save the customer_overrides.properties file. You can enable the use of the + on the output side in a single map, as follows: 1. If you want to be able to generate the plus sign on the output side of a map, in the install_dir/properties/customer_overrides.properties file, add the line translator.<mapname>.output.generatesigneddecimal=true and replace <mapname> with the actual name of the map in which you want to use the plus sign, as specified on the Map Details dialog box (Description field) for that map. For example, if the name of the map in which you want to use the plus sign is RomanMap.mxl, replace the <mapname> with RomanMap, as shown in the example below:
translator.RomanMap.output.generatesigneddecimal=true
Note: If a map Description contains spaces, you must amend it in the customer_overrides.properties file by putting a backslash before every space. Thus if the map Description is Roman Map, the example statement is:
translator.Roman\ Map.output.generatesigneddecimal=true
2. Save the customer_overrides.properties file. 3. Restart your Application instance so the property file changes are recognized.
55
Using the field-level validation setting enables you to override (for a specific field) any settings that you configured in the customer_overrides.properties file. Using the Validation Tab The Validation tab enables you to set validation options for the lowest level map components. To access the Validation dialog box, right-click the map component and select Properties to access the appropriate Properties dialog box, and then select the Validation tab. A new section on the Validation tab, Positive Number Format, enables you to specify how the Map Editor should handle the use and generation of a plus sign for the map component whose properties you are editing. By default, the Positive Number Format section will initially display the field option that you configured on the Standard Formats tab of the Preferences dialog (see Field-level Validation Configuration on page 55), and you can change the parameter to a setting that will only affect the map component you are currently accessing (when the data-type of the map component is Number). If you do not configure the Standard Formats tab, the default is Use properties file. Configuring the Positive Number Format for a Specific Map Component Within Map Editor you can override the setting on the Preferences dialog box (Standard Formats tab) and customer_overrides.properties file setting, and configure the use of the plus sign for positive number format for a specific field, as follows: 1. From the Map Editor, right-click the map component and select Properties to access the appropriate Properties dialog box. 2. Click the Validation tab. 3. Select the appropriate option, as follows: Use properties file settingspecifies that the rule or rules configured in the customer_overrides.properties file should be followed for this map component Dont allow/generate + prefixspecifies that regardless of whether the Preference dialog box (Standard Formats tab) or the customer_overrides.properties file contains a rule or rules to allow the + prefix, the plus sign will not be allowed for this map component Allow/generate + prefixspecifies that regardless of whether the Preference dialog box (Standard Formats tab) or the customer_overrides.properties file indicates that the + prefix is not allowed in maps, the rule or rules will be
56
overridden and the plus sign will be allowed to be used and generated for this map component
Note: By default, the Positive Number Format section will display the global option that you configured on the Standard Formats tab of the Preferences dialog (see Field-level Validation Configuration on page 55), and you can change the parameter to a setting that will only affect the map component you are currently accessing (when the data-type of the map component is Number).
57
Format YYMMDD MMDDYY YYYYMMDD DDMMYYYY MMDDYYYY DDMMYY YYMMMDD DDMMMYY MMMDDYY YYYYMMMDD DDMMMYYYY MMMDDYYYY YYDDD DDDYY YYYYDDD DDDYYYY YY/MM/DD DD/MM/YY
Description Two-digit year, two-digit month, two-digit day Two-digit month, two-digit day, last two digits of year (example: 121599) Four-digit year, two-digit month, two-digit day (example: 19991215) Two-digit day, two-digit month, four-digit year (example: 15121999) Two-digit month, two-digit day, four-digit year (example: 12151999) Two-digit day, two-digit month, last two digits of year (example: 151299) Last two digits of year, three-letter abbreviation of the month, two-digit day (example: 99JAN02) Two-digit day, three-letter abbreviation of the month, last two digits of year (example: 02JAN99) Three-letter abbreviation of the month, two-digit day, last two digits of year (example: JAN0299) Four-digit year, three-letter abbreviation of the month, two-digit day (example: 2003JUL04) Two-digit day, three-letter abbreviation of the month, four-digit year (example: 04JUL2003) Three-letter abbreviation of the month, two-digit day, four-digit year (example: JUL042003) Last two digits of year, three-digit Julian day (example: 99349 for the 349th day of 1999) Three-digit Julian day, last two digits of year (example: 34999) Four-digit year, three-digit Julian day (example: 1999349) Three-digit Julian day, four-digit year (example: 3491999) Last two digits of year, separator, two-digit month, separator, two-digit day (example: 99/12/05) Two-digit day, separator, two-digit month, separator, last two digits of year (example: 05/12/99)
58
Format MM/DD/YY YYYY/MM/DD DD/MM/YYYY MM/DD/YYYY YY/MMM/DD DD/MMM/YY MMM/DD/YY YYYY/MMM/DD DD/MMM/YYYY MMM/DD/YYYY YY/DDD DDD/YY YYYY/DDD DDD/YYYY MONTH DAY HHMM HHMMSS HH:MM HH:MM:SS ISO-8601
Description Two-digit month, separator, two-digit day, separator, last two digits of year (example: 12/15/99) Four-digit year, separator, two-digit month, separator, two-digit day (example: 1999/12/15) Two-digit day, separator, two-digit month, separator, four-digit year (example: 15/12/1999) Two-digit month, separator, two-digit day, separator, four-digit year (example: 12/15/1999) Two-digit year, separator, three-letter abbreviation of the month, separator, two-digit day (example: 99/JUL/20) Two-digit day, separator, three-letter abbreviation of the month, separator, two-digit year (example: 20/JUL/99) Three-letter abbreviation of the month, separator, two-digit day, separator, two-digit year (example: JUL/20/99) Four-digit year, separator, three-letter abbreviation of the month, separator, two-digit day (example: 2003/JUL/25) Two-digit day, separator, three-letter abbreviation of the month, separator, four-digit year (example: 25/JUL/2003) Three-letter abbreviation of the month, separator, two-digit day, separator, four-digit year (example: JUL/25/2003) Last two digits of year, separator, three-digit Julian day (example: 99/349) Three-digit Julian day, separator, last two digits of year (example: 349/99) Four-digit year, separator, three-digit Julian day (example: 1999/349) Three-digit Julian day, separator, four-digit year (example: 349/1999) Month (example: December) Day of the week (example: Friday) Two-digit hour, two-digit minutes (example: 0330 for 30 minutes past 3 o'clock) Two-digit hour, two-digit minutes, two-digit seconds (example: 033045 for 30 minutes and 45 seconds past 3 oclock) Two-digit hour, separator, two-digit minutes (example: 03:30) Two-digit hour, separator, two-digit minutes, separator, two-digit seconds (example: 03:30:45) YYYYMMDDTHHMMSS.mmmZ format: Four-digit year, two-digit month, two-digit day, T (time) indicator, two-digit hour, two-digit minutes, two-digit seconds in Universal Time (also called Zulu Time or Greenwich Mean Time), Z (Zulu time) indicator (example: 20031209T123000.000Z)
59
Description ISO-8601 date format: YYYYMMDDZ, Four-digit year, two-digit month, two-digit day, Z (Zulu time) indicator (example: 20031209Z) XSD:Time format: HH:MM:SS[.sss][+-HH:MM]. HH is hours MM is minutes SS is seconds .sss is fractional sections and is optional. If present, it can be .s (tenths), .ss (hundredths), or .sss (thousandths). +-HH:MM is the timezone difference and is optional. If present, + or - will be present followed by HH:MM where HH is hours and MM is minutes. Long example: 14:30:30.050+05:00 Medium example: 14:30:30.05 Short example: 14:30:30
MM/DD/YY HH:MM:SS YYMMDD HHMMSS YYYY-MM-DDTHH: MM:SS YYYY-MM-DD YYYY-MM YYYY --MM-DD ---DD
Two-digit month, separator, two-digit day, separator, last two digits of year, two-digit hour, separator, two-digit minutes, separator, two-digit seconds (example: 12/15/99 03:30:45) Last two digits of year, two-digit month, two-digit day, two-digit hour, two-digit minutes, two-digit seconds (example: 991025 033045) Four-digit year, separator, two-digit month, separator, two-digit day, T represents a blank separator, two-digit hour, separator, two-digit minutes, separator, two-digit seconds (example: 2002-02-02 03:30:45) Four-digit year, separator, two-digit month, separator, two-digit day (example: 2002-02-02) Four-digit year, separator, two-digit month (example: 2002-02) Four-digit year (example: 2002) Two dashes, two-digit month, separator, two-digit day (example: --12-02) Three dashes, two-digit day (example: ---02)
To specify a date/time field: 1. In the Map Editor, double-click an existing field or create a new one. 2. In the appropriate Properties dialog box, click the Validation tab. 3. From the data-type list, select Date/Time. Date/Time indicates whether the field is a date or time. 4. From the data format list, select the appropriate date or time option. 5. Click OK to save your choice.
60
Completing a Map
Completing a Map
Completing a map can involve creating simple links (or using the Autolink function), compiling the map, compiling an XML encoder object, printing a mapping report, and testing the map. For more information, see: Creating Simple Links on page 61 Using Autolink in the Map Editor on page 62 Compiling a Map on page 63 Compiling Maps Using the Command Line on page 64 Saving and Compiling Maps as the Sterling Integrator Map Type from the Command Line on page 65 Compiling an XML Encoder Object on page 67 Printing a Mapping Report on page 68 Testing a Map on page 69
The Map Editor uses the following linking rules: Link map components with the same maximum usages (loops). Link map components at the same mapping level. For example, a map header level map component to a header level map component, detail level to detail level. Link map components with the same data type. For example, map a string field to a string field, a numeric field to a numeric field. If you must link two input fields to the same output field because of conditions established in your map, you must use an extended rule.
Note: You must have at least one direct link (using the Link function) to every record on the output side of the map, so the translator can create the record. This link must pass data from the input side of the map to create an output record.
61
To link two fields: 1. From the Map Editor Functions menu, select Link. 2. Select a field on the input side of the map. The cursor changes to a Link arrow:
3. Select the field on the output side of the map that the data from the field selected on the input side of the map is mapped to. A line connects the two fields to visually represent the link. If a line does not appear when the two fields are linked, check the Preferences dialog box. In the Links tab of the Preferences dialog box, select Show links to or from all visible elements.
The Map Editor uses the following linking rules: Link map components with the same maximum usages (loops). Link map components at the same mapping level. For example, a map header level map component to a header level map component, detail level to detail level. Link map components with the same data type. For example, map a string field to a string field, a numeric field to a numeric field. If two input fields must be linked to the same output field because of conditions established in your map, you must use an extended rule.
Note: You must have at least one direct link (using the Link or Autolink function) to every record on the output side of the map, so the translator can create the record. This link must pass data from the input side of the map to create an output record.
62
Completing a Map
When you run Autolink, by default a link is created between any field on the input side of the map that has the same name as a field on the output side of the map. Additionally, there is parameter on the Name tab of the lowest level map components (such as fields and elements), Business Name, that the Autolink function also uses to match fields on the input and output sides of the map if you choose to do so (and if a field on the input side of the map has the same Business Name as a field on the output side of the map, Autolink establishes a link between the two). The Business Name parameter enables you to add another name to each field to indicate the business data that the field contains.
Best Practice
Use Autolink before you create manual links between the input and output sides of your map, rather than running Autolink after you have already established links.
Running Autolink
To use Autolink: 1. From the Map Editor Functions menu, select Auto Link. 2. Choose whether to autolink by Field Name or by Business Name and click OK.
Note: If you want remove any existing links in the map prior to running Autolink, select the Remove All check box.
Map Editor automatically links all the fields on the input and output sides of the map that have either the same Name or the same Business Name.
Note: If a line does not appear when the two fields are linked, check the Options > Preferences dialog box. In the Links tab of the Preferences dialog box, select Show links to or from all visible elements.
Compiling a Map
The Compile function compiles the map. The map that you create using Application is a source map (.mxl or .map extension), which is the graphical representation of the data you are mapping. When that source map is compiled, the result is a translation object (.txo extension), which is what the translator uses to translate data. You use the Compile function after the map is completed and saved. To compile a map: 1. From the Map Editor File menu, select Compile. The Translation Object Name dialog box opens.
63
2. In the File name box, type the name of the translation object. Use the default .txo extension. Do not use spaces or apostrophes in the name.
Caution: Do not overlay the source map with the translation object by erroneously selecting the .mxl or .map extension for the compiled translation object. To save a map as a .map file (save the source file), select File > Save As and then select Source Maps (*.map) from the Save as type list.
A good practice is to name the translation object (.txo extension) with the same file name as the source map (.mxl or .map extension). Preserving the same file name (with different extensions) means that the relationship between the source map and the translation object remains evident.
Note: To save your source map as an XML file (.mxl file extension), you must have the Microsoft XML Core Services (MSXML) 4.0 installed on the same computer as Map Editor. If you do not have Microsoft XML Core Services (MSXML) 4.0 installed, you cannot save source maps as .mxl files and must use the .map extension.
3. In the Save in list, change the drive\folder where the translation object is stored, if necessary. 4. Click Save to compile the map.
Note: A progress dialog box displays and updates during the compilation process. If the map contains a large number of objects, you may be prompted that you should save the map in .MAP format.
5. Verify that no errors occurred and click OK. The date that the map was compiled on is automatically loaded into the Compiled on box in the Map Details dialog box. 6. From the File menu, select Save to save the source map with the Compiled on date.To save a map as a .map file, select File > Save As and then select Source Maps (*.map) from the Save as type list.
Note: Prior to opening an .mxl (XML-formatted) file, the Map Editor verifies that you have the Microsoft XML Core Services (MSXML) 4.0 installed on the same computer as Map Editor. If you do not have the Microsoft XML Core Services (MSXML) 4.0 installed, the Map Editor cannot save or load .mxl source files.
64
Completing a Map
Syntax
The command line syntax (from the folder where the map or maps you want to compile are located) follows:
mapper.exe -c [mapSourceFile]
Note: You can use either - or / to designate the compile (c or C) option. The [mapSourceFile] is either a single map or a map file name that contains a wildcard character (*). Using the wildcard character causes MAPPER.EXE to compile all maps in the designated folder with that file name pattern. MAPPER.EXE does not recurse through subfolders.
Example 1
In this example, all maps in the GentranIntegrationSuite folder are compiled.
mapper.exe -c c:\GentranIntegrationSuite\*.mxl
Example 2
In this example, all maps with names beginning with pet in the GentranIntegrationSuite folder are compiled.
mapper.exe -c c:\GentranIntegrationSuite\pet*.mxl
Saving and Compiling Maps as the Sterling Integrator Map Type from the Command Line
The Map Editor also enables you to automatically save and compile a single map (or a group of maps located in a specified folder) as a different map type from the command line. This function gives you a quick and easy alternative to having to manually open a non-Sterling Integrator-type map in the Map Editor, access the Map Details dialog box, change the map type to Sterling Integrator, and then save and compile the map.
Note: This option is very flexible; you may use it to, for example, save and compile an Export map created in Gentran:Server for Windows (or maps created using Gentran:Server for UNIX with the Application Integration MAPPER.EXE) to the Sterling Integrator map type.
Tip:
The compiled translation objects are written to same folder as the map source files. Therefore, always save a copy of your original maps to another folder prior to running any command line option, in case you make an error in the syntax.
65
Syntax
The command line syntax (from the folder where the map or maps you want to compile are located) follows:
mapper.exe -c -s [numeric map type] [map filenames]
Note: You can use either - or / to designate the compile (c or C) and save (s or S) options. The [map filenames] is either a single map or a map file name that contains a wildcard character (*). Using the wildcard character causes MAPPER.EXE to compile all maps in the designated folder with that file name pattern. MAPPER.EXE does not recurse through subfolders.
Numeric Map Types The available numeric map types are listed in the following table:
Note: If you change a map type to Sterling Integrator (map type 24 in the following table), you can then, if necessary, use this command line save function to change the map type to any other map type listed in the following table (if, for example, you want to change the map back to its original type). However, if you compiled a map using a later version of the translator, it will not be backward-compatible. That is, if you use the Application version 2.2 translator to save and compile a map (Sterling Integrator map type), and then you save (with the same 2.2 translator) and change the map to a type used in Gentran:Server for Windows or Gentran:Server for UNIX, you will not be able to use the map with a version of Gentran:Server that uses a previous version of the translator.
Map Type Import Export Print Screen Entry Turnaround Transaction Build Transaction Break Functional Group Build Functional Group Break Interchange Build Interchange Break Functional Acknowledgement Inbound
66
Completing a Map
Map Type Functional Acknowledgement Outbound System Import Header Direct Map Standard to Standard Standard to Application Application to Application Application to Standard XML to Application Application to XML XML to Standard Standard to XML XML to XML Sterling Integrator
Example 1
In this example, all maps in the GentranIntegrationSuite folder are saved and compiled as the Sterling Integrator map type.
mapper.exe -c -s 24 c:\GentranIntegrationSuite\*.mxl
Example 2
In this example, the PET_810.map (in the GentranIntegrationSuite folder) is saved as the Sterling Integrator map type.
mapper.exe -s 24 c:\GentranIntegrationSuite\PET_810.map
67
Variable-length-delimited CII For an XML encoder object, you do not map fields between formats. Instead, you select input or output and compile a map into an XML encoder object. XML encoder objects send data to a decision engine where the data is directed and processed according to predefined factors. All elements in XML encoder object output correspond to the blocks and fields of the original file. Each element has the same name as the block or field that it corresponds to in the original file. To create an XML encoder object: 1. In the Map Editor, select the root element on the side from which you want to create an XML encoder object. 2. Right-click the root element and select Compile XML Encoder Object. 3. In the XML Encoder Object Name dialog box, specify the location and name of the XML encoder object. Do not use spaces or apostrophes in the name. 4. Click Save. A message indicates that the XML encoder object was compiled.
To print a mapping report: 1. From the Map Editor File menu, select Print. 2. Select the reports that you want to print by selecting the appropriate check boxes in the Report section. 3. Click OK. 4. In the Print dialog box, set the appropriate options and click OK to print.
68
Testing a Map
Testing a Map
The Map Test feature enables you to remotely test a map (.txo) on a client machine prior to checking the map in to the Application server. This feature executes the map through the translator and returns results to you in the Web browser and text editor configured as the default for the machine, so you can make any necessary changes prior to checking in and using the map.
Note: You can turn off the Map Test service to prevent users who have access to a trading partners Application system from attempting to use the Map Test feature to run translation on that trading partners system. Turning off the Map Test service prevents the possible execution of JDBC maps that could access production data. To turn off the Map Test service, access the customer_overrides.properties file and set the maptest.MaptestServiceEnabled property to false.
To test your map: 1. In Map Editor, open the map. 2. If the map accesses a database (for example, JDBC or ODBC), configure the map to point to a non-production database. Any map that accesses a database may change the database; for the map test, you should ensure that the map is not changing a production database. 3. Ensure that the map is completed and compile the map. See Compiling a Map on page 63 for more information. 4. Select Functions > Map Test. 5. In the Login Server and dashboard port box, type the Application server name and dashboard port in the format [Application server name]:[dashboard port]. The port number required for this parameter is not the base port for the install but rather the dashboard port. The dashboard URL and port are typically listed in the UNIX shell after Application is successfully started. This box cannot be left blank.
Note: The dashboard port is displayed to your administrator when your Application server is started. If you specify your base port, the Map Test will fail.
6. In the Login Server User Name box, type the Application user name that is used by the Map Editor to access the Map Test service. 7. In the Login Server User Password box, type the Application password that is used by the Map Editor to access the Map Test service. 8. In the Proxy Server and port box, type the proxy server name and port for the client machine in the format [proxy server name]:[port].
Note: This parameter is only necessary if you are executing translation beyond a system firewall.
69
9. In the Translation Object box, type the name of the compiled translation object (or click Browse, select the translation object, and click Open). The path you supply must be valid and the translation object extension must be .txo. This parameter is mandatory. 10. In the Data File box, type the name of the data file you wish to use when translating data with the test map (or click Browse, select the data file, and click Open). If you supply a path, it must be valid. 11. Click Run Test. While the test is running, this state is indicated in the information bar at the bottom of the dialog box. The Map Editor forwards the translation object and data file to the Application system where it is translated. Results are returned in the Web browser and text editor configured as the default for the machine, reporting success or any errors encountered. Map Editor also returns the translated data (if present, as a .txt file), an XML-formatted translation report (which is empty if no errors occurred), and the file/path location of the where Map Editor stored the data and translation report. If there is no translation report, Map Editor returns a file stating that no translation report is available. The Map Editor also returns the location of the files in a dialog box, to enable you to save them. These files are overwritten each time the Map Test feature is used. On the client machine, the translation report and output data are written to the directory where the translation object is located.
Note: If you have not configured your operating system to specify default programs to open .txt and .xml files, the test result files may not be automatically displayed. If this is the case, however, you can locate and open the files using the file/path location returned in the post-test message box.
If Map Editor is unable to test the map, it displays an error message noting the problem encountered, which enables you to correct the specified error and re-test the map.
70
Chapter 2
The Map Editor enables you to map to and from electronic data interchange (EDI) documents. This section covers the following topics: About the EDI Data Format Creating an EDI Layout from an EDI Standard Activating Map Components Converting to Another Standards Version Verifying EDI Delimiters Using Auto Trim Defining and Modifying Relational Conditions Using Loop Start and Loop End Segments Using Binary Data Segments Insert Segment or Transaction Set from Standards Using the Generate UBFI Function Setting Up a Syntax Record for an EDIFACT UNA Segment
71
However, if you want to use a specialized version of an EDI standard that is not available in the Application standards database, it may be appropriate for you either to load an EDI file definition or to define the EDI file yourself. Alternatively, you could use an EDI standard that is similar to what is required and customize it yourself. Whether the Map Editor generates the EDI file or you load or define it, the EDI map components that you use depend on the map you are creating. The map components can include the standard, version, and transaction set (document) selected as well as the groups, segments, composites, and elements your company requires. Determine which map components you are using before generating or defining an EDI file. For more information, see: EDI Components on page 72
EDI Components
The following table lists the components that make up the EDI layout in the Map Editor, the icons that represent the components, and descriptions of the components. For information about adding a map component to a layout, see Chapter 1, Map Editor Basics. For information about the properties of these map components, see Appendix C, Map Editor Properties.
Component EDI root element Icon Description The EDI root element represents the EDI document that Application is mapping. At the EDI file root element, you define delimiters and syntax records. It is a group and can contain groups and segments.
Group
A group is a looping structure that contains related segments and groups that repeat in sequence until either the group data ends, or the maximum number of times that the loop is permitted to repeat is exhausted. Groups are defined by the EDI standards. A group that is subordinate to another group is a subgroup (and corresponds to a nested looping structure, a loop within a loop). When a group contains an extended rule or a standard rule, an asterisk appears to the right of the group icon.
Segment
A segment contains a group of related elements or composite data elements that combine to communicate useful data. Segments are defined by the EDI standards. A segment can occur once or can repeat multiple times. Note: If a segment occurs more than once in a map, it is identified by its name <ID>. The second and subsequent occurrences are identified by <ID>:n, where n is the number of the occurrence in the map.
72
Component Composite
Icon
Description A composite is a data element that contains two or more component data elements or subelements. Composites are defined by the EDI standards that use them (EDIFACT and certain ANSI X12 standards). A composite can occur once or repeat multiple times. Note: If a composite occurs more than once in a map, it is identified by its name <ID>. The second and subsequent occurrences are identified by <ID>:n, where n is the number of the occurrence in the map. A repeating composite is a related group of EDI subelements that have the ability to loop as a whole (occur more than once) within a particular EDI segment. To enable a composite to repeat multiple times within a segment, each occurrence of the composite must be separated by a special delimiter, known as the repeating element delimiter. Example: Your delimiters are set as follows: Segment Element Tag Sub Element Repeating Ele ~ * * : ^
Then, if a BGM segment contains a repeating composite that occurs 3 times within the data followed by 1 regular element, and the composite contains 2 subelements, the segment is in the following form:
BGM*SubA-1:SubB-1^SubA-2:SubB-2^SubA-3:SubB-3* Field2~
73
Component Element
Icon
Description An element is the smallest piece of information defined by the EDI standards. An element can have different meanings depending on the context. Elements are typically not considered to have useful meaning until they are combined into segments. An element is the EDI map component that corresponds to a field in other data formats. Note: If an element occurs more than once in a map it is identified by its name <ID>. The second and subsequent occurrences are identified by <ID>:n, where n is the number of the occurrence in the map. A repeating element is an EDI element with the ability to loop (occur more than once) within a particular EDI segment. To enable a single element to repeat multiple times within a segment, each element must be separated by a special delimiter, known as the repeating element delimiter. The use of this delimiter prevents the translator from mistaking the repeating elements for typical elements. Example: Your delimiters are set as follows: Segment Element Tag Sub Element Repeating Ele ~ * * : ^
Then, if a BGM segment contains 3 elements and the second element is a repeating element that occurs 4 times, the segment is in the following form:
BGM*Field1*Field2.1^Field2.2^Field2.3^Field2.4 *Field3~
When an element has a link performed against it, a red check mark appears over the element icon. When an element contains an extended rule or a standard rule, an asterisk appears to the right of the element icon.
To create an EDI layout from an EDI standard, including BECS and ACH:
74
1. From the Map Editor File menu, select New. 2. In the New Map Wizard, complete the questions in the first window and click Next.
Note: Be sure that Sterling Integrator is selected in the What kind of map are you creating list.
3. If you are translating from EDI, in the Input Format window select Delimited EDI and click Customize. If you are translating from another format, select that format and continue to the next screen. 4. To specify HIPAA, select the HIPAA Transaction check box and click Next. 5. If you want to import codes lists from the database, select Import code list. 6. Select the ODBC data source that contains the standards database and click Next.
Note: The default data source names used by Map Editor are HIPAA Standards and Sterling Integrator Standards.
7. Select the standards agency, version, and transaction set and click Next. 8. Click Finish to load the transaction set you selected. 9. If you are translating to EDI, in the Output Format window, select Delimited EDI and click Customize. 10. To specify HIPAA, select the HIPAA Transaction check box and click Next. 11. If you want to import codes lists from the database, select Import code list. 12. Select the ODBC data source that contains the standards database and click Next.
Note: The default data source names used by Map Editor are HIPAA Standards and Sterling Integrator Standards.
13. Select the standards agency, version, and transaction set and click Next. 14. Click Finish. The Map Editor displays the new map in the Map Editor window.
75
groups, segments, composites, and elements that are not defined as mandatory by the standard, but that you have determined that you need to use in mapping. If a segment is received in the input file and is not activated in the map, the translator will not be able to match the segment to a component in the mapand this can cause unexpected results. When the translator is not able to match a segment in the data to a segment in the map, a warning code (25 Unknown Block) is issued to the translation report to indicate that a segment was found in the input file that does not match a segment defined on the input side of the map.
Tip: As an alternative to activation, you can use the Auto Trim feature if you have a sample EDI file defined. For more information about using Auto Trim, see Using Auto Trim on page 79.
To activate groups, segments, composites, and elements: 1. From the Functions menu, select Activate. 2. Open (double-click) each group that contains segments or groups that need to be activated.
Note: As an alternative to opening each map component (steps 2, 5, and 7), you can select View > Expand All to open every map component. You can also select a map component and select View > Expand Branch to open that map component.
Note: If you accidentally click a group, segment, composite, or element that you did not mean to activate, right-click the map component and select Deactivate from the shortcut menu.
3. Select each inactive segment that you need to use. 4. Open (double-click) each segment that contains composites or elements that need to be activated. 5. Select each inactive composite that you need to use. 6. Open (double-click) each composite that contains elements that need to be activated. 7. Select each inactive element that you need to use. 8. Once you have activated all the necessary groups, segments, and elements, select Activate from the Functions menu to turn activation mode off.
76
Identifies the differences between the required (mandatory) segments, elements, and groups in the old version as compared with the new version. Inserts the new required segments, elements, and groups into the old map. Ignores temporary segments and elements. Provides you with a report that denotes the differences between the two standard versions and lists the segments and elements that are required for the new standard version and were not in the old map, as well as the map components that are not required for the new version.
Note: The report displays a delete indicator (%delete%) next to the field and record names that are no longer used in the new standard. You must manually delete field and record names from your map. The Map Editor does not delete these fields and records automatically because there may be links or rules associated with them that would then be lost. When you delete the specified fields and records manually, you are able to see where the information is mapped in the older standard, and then determine how in the map (using the new standard) the information should be mapped.
To upgrade to a newer EDI standards version: 1. In Map Editor, open the map. 2. Select a map component on the side of the map you want to upgrade. 3. Select Functions > Update > EDI Version. 4. Select the ODBC data source that contains the Application standards database and click Next. 5. Select the standard version to which you want to upgrade and click Next. 6. Select the appropriate customization options and click Next: Insert new items from the old version Field data type and minimum/maximum length (update with the new version) Field conditional relationships (update with the new version) Conditional/Mandatory (update with the new version) Min/Max usage (update with the new version) 7. Type the name of the new map or accept the Application default, and click Next. 8. Click Finish to start the standard version upgrade process and create the new map. If the conversion process fails, the new map and report still exist and contain conversion information up to the point of failure. If the conversion process fails, you are made aware of the failure when the new map is not created. If a failure occurs, verify that your standards database is installed correctly. For more information about installing EDI standards, see the documentation on Downloading the Standards Database. If the problem still exists, contact Customer Support.
77
5. Are you using an X12, EDIFACT, or TRADACOMS standard on the output side of a map and you want to suppress leading zeros for the EDI elements that use an R-format numeric (including decimal values less than one)? If Yes, select the Suppress leading zero on Numeric R* format values (e.g., 0.25---> .25) option. If No, continue with Step 6. 6. Are you using an X12, EDIFACT, or TRADACOMS standard on the output side of a map and you want to pad numeric values (regardless of format) for the EDI elements with leading zeros? If Yes, select the Pad with leading zero on Numeric values (e.g., 25---> 000025) option. When you select this option, Numeric values (regardless of format) are padded with leading zeros out to the maximum length of the field. If No, continue with Step 7. 7. Click OK to exit the File Properties dialog box.
78
To use Auto Trim: 1. In the Map Editor, right-click the EDI file icon (the EDI root element) on the EDI side of the map. Select Auto Trim from the shortcut menu. 2. From the Look in list, select the drive and folder where the EDI file is stored. The default path is Program Files\Sterling Commerce\Map Editor\Source Maps. 3. If necessary, select the type of file that you want to display from the Files of type list. 4. From the list, select the sample EDI file. 5. Click Open to begin the Auto Trim process. When Auto Trim is complete, the Map Editor displays a message indicating whether the process was successful. Click OK to acknowledge the message.
79
To define and modify field and element relational conditions: 1. In the Map Editor, double-click the field or element you want to modify. 2. In the Element Properties dialog box, click the Conditions tab. 3. Select the field connection condition from the type of relationship list. Valid values are: Paired/Multiple If any of the specified fields are present, all fields must be present. Required At least one of the specified fields must be present. Exclusion No more than one of the specified fields can be present. Conditional If the first condition field is present, the rest of the fields must also be present. List Conditional If the first condition field is present, at least one of the specified fields must also be present. 4. Select the first field from the condition field list. This is the field on which the conditional relationship depends if you chose Conditional or List Conditional from the type of relationship list. The condition field list is active only if you chose either Conditional or List Conditional from the Type of relationship list.
80
5. From the Available fields list, select a field or fields and click Add. The Map Editor moves the fields to the Fields used in relationship list, to include the fields as a part of the conditional relationship. The Available fields list contains all the fields in the map that are valid to be used in a condition at this point. The Fields used in relationship list contains the fields that you selected to be a part of the conditional relationship. To remove the fields from the conditional relationship, select a field or fields from the Fields used in relationship list and click Remove to move the fields back to the Available fields list. 6. Click OK to add the conditional relationship to the field.
For more information, see: Defining an LS Segment for Input on page 81 Defining an LE Segment for Input on page 82 Defining an LS Segment for Output on page 83 Defining an LE Segment for Output on page 83
81
2. In the EDI Segment Properties dialog box, click the Looping tab to access the loop options and verify that the Loop Start option is selected. For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. 3. If you are creating a map from the standards, go to step 13. If you are creating a map from scratch, click the Key Field tab. The Map Editor displays the key field options. 4. From the Field list, select Loop Identifier Code. This field list contains all the elements that are contained in the segment and enables you to define the Loop Start segment definition by specifying that the loop identifier code must have the value you specify in the Matching rules section. 5. Select the Use constant option. The Matching rules section enables you to access all the constants and code lists currently defined for this map. 6. Click Edit (to the right of the Use constant list). 7. In the Map Constants dialog box, click New. 8. From the Edit Constant dialog box, in the ID box, type the constant identifier. 9. From the Type list, select String. This is the category of this constant. 10. In the Value box, type the value of the constant. For an inbound map, this is the loop identifier code that you expect to receive from a trading partner. 11. Click OK to add the constant. 12. Select the constant you created from the list. The Map Editor matches the selected constant against the loop identifier code. 13. Click OK to exit the EDI Segment Properties dialog box.
82
4. From the Field list, select the Loop Identifier Code. This list contains all the elements in the segment and enables you to define the Loop End segment by specifying that the loop identifier code matches the value in the Matching rules section. 5. Select the constant you created for the LS segment from the list. Application matches the selected constant against the loop identifier code. The Matching rules section enables you to access all the constants and code lists currently defined for this map. 6. Click OK to exit the EDI Segment Properties dialog box.
83
1. In the Map Editor, double-click the loop identifier code element in the loop end segment. 2. In the Element Properties dialog box, select the Standard Rule tab to access the standard rule options. For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. 3. From the standard rule list, select Use Constant. 4. From the constant list, select the constant that you created. 5. Click OK to exit the Element Properties dialog box.
84
To use BIN segments for ANSI X12 maps: 1. Right-click the BIN segment and select Activate from the submenu to activate the segment. 2. Right-click the BIN segment and select Properties from the submenu (the EDI Segment Properties dialog box is displayed). 3. Click the Special tab. 4. Select the Binary check box and click OK.
Note: If you select Binary, you must define an element of data-type Bin Length and another element of data-type Bin Data. The Bin Length element must precede the Bin Data element.
5. Double-click the BIN01 element (the Element Properties dialog box is displayed). 6. Select the Validation tab. 7. From the data-type list, select Bin Len to designate this element as binary length and click OK. 8. Double-click the BIN02 element (the Element Properties dialog box is displayed). 9. Select the Validation tab. 10. From the data-type list, select Bin Data to designate this element as binary data and click OK.
85
2. Select a data source name from which to access the standards and click OK. 3. Select the Agency, Version, Transaction, and Release (for TRADACOMS only) from the lists and click OK. The Map Editor inserts the specified transaction set into your map as a group containing the appropriate map components.
To use the Generate UBFI function: 1. Select the Positional File Format icon (or any map component on the Positional side of the map). 2. From the Functions menu, select Generate UBFI. If the Positional side of the map does not contain any map components before you start this function, the translator generates an exact flat file representation of the EDI data and automatically links the corresponding map components on both sides of the map. 3. If the Positional side of the map contains any map components prior to invoking the Generate UBFI function, the translator prompts you with a warning message stating that generating a UBFI format will replace the existing [input | output] format. To proceed, click Yes. To cancel the function, click No.
86
3. Select the Syntax Record tab. 4. Select the Use syntax record check box. 5. Type the values in the following table:
Property Tag Position Length Contains data Value UNA 1 9 Note: Do not select this check box.
Release Character Pos 7 Decimal Separator Pos 6 Tag (Delimiter Position) Segment (Delimiter Position) Element (Delimiter Position) Repeating Element (Delimiter Position) Sub Element (Delimiter Position) 5 9 5 8 4
6. Recompile the map. 7. Save the map. 8. Check the map and translation object into Application. See Checking In Maps on page 278 for more information about checking maps and translation objects in to Application.
87
88
Chapter 3
The Map Editor enables you to map to and from positional data documents. This section covers the following topics: About the Positional Data Format Creating a Positional Map Importing Positional Maps from Gentran:Server for Windows and Gentran:Server for UNIX Creating Fields with the Positional Field Editor Creating Temporary Records and Fields
Positional Components
The following table lists the components that make up the positional layout in the Map Editor, the icons that represent the components, and descriptions of the components. For information about adding a map component to a layout, see Chapter 1, Map Editor Basics.
89
For information about the properties of these map components, see Appendix C, Map Editor Properties.
Component Positional root element Icon Description The positional root element represents the positional document that Application is mapping. The positional root element defines the characteristics of a positional file, such as delimiters or record length. It is a group and can contain groups and records. A group is a looping structure that contains related records and groups that repeat in sequence until either the group data ends or the maximum number of times that the loop is permitted to repeat is exhausted. A group that is subordinate to another group is a subgroup (and corresponds to a nested looping structure, a loop within a loop). When a group contains an extended rule or a standard rule, an asterisk appears to the right of the group icon. Record A record contains related fields. A record can occur once or can repeat multiple times. Each positional file layout must have a header record, which is generally the first record. The header record is mandatory and repeats only once (it is not a looping structure). Field A field is the smallest piece of information defined in the positional file. You map corresponding fields to move data to or from a positional file. When a field has a link performed against it, a red check mark appears over the field icon. When a field contains an extended rule or a standard rule, an asterisk appears to the right of the field icon.
Group
90
What kind of map are you creating? Accept the default, Sterling Integrator.
Caution: Always accept the Sterling Integrator default when you are using the Application product.
Note: The other map options enable you to import maps from other Sterling Commerce products in order to convert them to Sterling Integrator-type maps.
What is the name of the map? Type the unique name of the map. The Map Editor adds the default .mxl extension. What is your name? Type your name if it differs from the user name prompted by the New Map wizard. The New Map wizard displays Input Format fields. You must complete the format of the input side of the map. This is the format of the data that is translated by Application. 3. In the Input Format window, specify how you want to define the data format by selecting one of the following: Create a new data format using this standard
Note: The choices available depend on the standard or standards that you downloaded. Use this option if you want the input side of the map to use NACHA ACH (NACHA Automated Clearinghouse), SAP IDocs, or BECS DE (Bulk Electronic Clearing System Direct Entry).
Select the standard and click Messages Complete the Map Wizard by selecting the version of the standard, the desired message, the maximum length of the data elements, and whether to build codelists for enumerated attributes. Type the path and file name of the saved definition (.ddf or .ifd extension). Click Browse to display the Open File Definition dialog box.
4. In the Output Format window, specify how you want to define the data format by selecting one of the following:
91
Select the standard and click Messages Complete the Map Wizard by selecting the version of the standard, the desired message, the maximum length of the data elements, and whether to build codelists for enumerated attributes. Type the path and file name of the saved definition (.ddf or .ifd extension). Click Browse to display the Open File Definition dialog box.
5. Click Finish to create the map. The map opens in the Map Editor window. 6. In the Map Editor, select File > Save to save the map. Do not use spaces or apostrophes in the map name. To save a map as a .map file, select File > Save As and then select Source Maps (*.map) from the Save as type list.
Importing Positional Maps from Gentran:Server for Windows and Gentran:Server for UNIX
When you import maps into Application that were created in Gentran:Server for Windows and in Gentran:Server for UNIX (using the Application Integration MAPPER.EXE), you must change the map type. To do so, open the Map Details dialog box (from the Edit menu) and change the Map Function to Sterling Integrator. Or, for more information about using the command line compile to change the map type to Sterling Integrator outside of the Map
92
Importing Positional Maps from Gentran:Server for Windows and Gentran:Server for UNIX
Editor, see Saving and Compiling Maps as the Sterling Integrator Map Type from the Command Line on page 65.
Note: For more information about how to migrate maps from Gentran:Server for Windows to Application, see Appendix B, Map Editor Migration Information. For more information about importing Gentran:Server for UNIX maps directly into Application, see Appendix F, Map Conversion.
For more information on other information related to importing maps from Gentran:Server for Windows or Gentran:Server for UNIX, see: About Record Delimiters on page 93 About Decimal Points on page 93 About Double-Byte Character Sets on page 94
93
4. In the Decimal Point Character box, type the value you want Application to use as a decimal pointfor example, a comma (,). This resets the decimal point default to use what you specified instead of a period. 5. Click OK. 6. Save the map. 7. Compile the map. The decimal point setting is now correctly set to use your specification.
To create the positional fields for a record using the Positional Field Editor:
94
1. In the Map Editor, right-click the positional record. From the shortcut menu, select Edit Fields. The Positional Field Editor dialog box opens. 2. Is the field you are creating the first field in the record? If Yes, click New and continue with the next step. If No, select the field that precedes the field you are creating in the record layout and click New. A select bar appears in the Fields section where the new field is positioned. Complete the field values in the Field Details section. 3. In the Name box, type the field name.
Note: Do not use spaces or hyphens (-) in the field name. You can use the underscore (_) to separate words.
Each positional field must have a unique name. It is useful to tag the end of the field that occurs in multiple records with a suffix that identifies the record that contains the field. 4. Do you want to designate the field as required? If Yes, select the Mandatory check box. If No, continue with the next step. 5. In the Description box, type a description of the field. The description briefly explains the field to enable you to differentiate it from similar fields. 6. From the Data Type list, select the type of the field. Valid values are: String Alphanumeric field Number Numeric, real, overpunched, or packed field Date/Time Date or time field 7. From the Format list, select how the field is formatted. The choices for this field depend on the type of field you select from the Data Type list. If you select Number or Date/Time in the Data Type list, you can select the data format from the Format list. If you select String from the Data Type list, you must type a syntax token to denote that this field must be formatted as the specified syntax token dictates (the default syntax token is X). 8. Do you want to indicate the exact position of the field in the record?
95
If Yes, type the starting position of the field in the Start Pos box. Specify field start positions if, for example, you are using only a few fields but you want them positioned exactly in the record. The alternative to specifying the start position of each field is to add the fields sequentially in the record and then use the Auto Position function. If No, continue with the next step. See step 13 for more information about the Auto Position function. 9. In the Min Length box, type the minimum length of this field. 10. In the Max Length box, type the maximum length of the field. 11. Click New. The Map Editor adds the field and creates a new field with blank values ready for you to identify, positioned after the newly added field. 12. Create the rest of the fields according to your record layout. To stop adding fields, click Delete. 13. After adding the last field, do you want Application to automatically position the fields in the record?
Note: You must either specify the start position of each field or use the Auto Position function; otherwise, the translator will not be able to read or write the record correctly.
If Yes, click Auto Position. Auto Position automatically calculates the start position in the record of each field, using the criteria that each field is positioned directly after the previous field and is of the length specified in the Max Length box. Click Yes to acknowledge the warning message that fields are sequenced in order.
Note: The Auto Position function is valid only if you define a record tag and if you define every field in the record in the sequence that each field occurs.
If No, continue with the next step. 14. Are you completely finished adding fields to the record? If Yes, click Close. If No, repeat steps 2 - 13. Complete this procedure to add fields to the other records you defined.
96
97
Example
To map the shipping information from the Input side of your map (EDI, from the N1 Group that repeats a maximum of 200 times) to the ShipTo record in your application (Positional) file format (that does not repeat), you must create a temporary storage record and fields on the EDI side of the map that do not repeat. Then you use an extended rule to extract the shipping and billing information from the N1 group and move it to the appropriate temporary storage elements. Finally, you map the shipping and billing information directly from the temporary storage elements to your application fields. Step 1 First, you must create a temporary storage record and fields on the EDI side of the map that do not repeat. The temporary record is located outside the N1 Group at the same hierarchical level as it, and has a maximum repeat number of 1 (that is, it does not repeat). Then you will create the appropriate temporary fields. The following table describes the temporary storage record that you are creating:
Name ShipToDet Description Ship To Details Tag $$$ Min Usage 0 Max Usage 1
Sample Procedure To create the ShipToDet temporary storage record: 1. Select the N1 group. The two temporary storage segments are located after the N1 group, at the same level. 2. From the Edit menu, select Insert. From the submenu, select Segment (you select Segment instead of Record because you are creating the temporary record on the EDI side of the map). The EDI Segment Properties dialog box is displayed. 3. In the Name box, type ShipToDet. 4. In the Description box, type Ship To Details. 5. Click the Tag tab. 6. In the Tag box, type $$$.
Note: The translator does not read a segment with a value of $$$ in the Tag box. Therefore, it does not flag this temporary storage segment as an error during compliance checking.
7. Click the Looping tab. 8. In the Min Usage box, type 0 (zero).
Note: A minimum usage value of zero prevents the translator from reporting an error during compliance checking.
98
9. Click OK to create the ShipToDet temporary storage segment. 10. Create the appropriate temporary fields. SHIPTONAME SHIPTOADDR1 SHIPTOADDR2 SHIPTOCITY SHIPTOSTATE SHIPTOPCODE Step 2 Create an On End extended rule for the N1 Group that assigns the necessary information to the temporary fields. Sample Procedure To create the On End extended rule:
Note: In this example, the data is written to singly occurring record (maximum usage of 1), so the extended rule does not require an index. For more information about using indexes, see Appendix D, Using Indexes in the Map Editor and Translator.
1. Right-click the N1 group to access the shortcut menu. 2. From the shortcut menu, select Extended Rules to display the Group Properties dialog box. 3. Select the On End option. This specifies that the rule is run when the loop terminates. The translator loads an occurrence of the N1 group (containing the billing or shipping information), and then runs this rule. 4. In the Editor list, type the following:
IF #0098 = ST THEN BEGIN $850.#SHIPTONAME = #0093; $850.#SHIPTOADDR1 = #0166; $850.#SHIPTOADDR2 = #0166:2; $850.#SHIPTOCITY = #0019; $850.#SHIPTOSTATE = #0156; $850.#SHIPTOPCODE = #0116; END
Note: If a segment/record or element/field occurs more than once in a map, it is identified by its name <ID>. The second and subsequent occurrences are identified by <ID>:n, where n is the number of occurrences in the map.
99
5. Click Compile to validate the syntax of the extended rule. Every rule in the map is compiled when you compile the translation object, after you complete the map. However, the translator enables you to compile each rule individually, so that you can verify the accuracy of the rule after you create it.
Note: This compiles the rule interactively, and enables you to correct any errors that are generated. Any errors or warnings generated in the compilation process are displayed in the Errors list.
6. Click OK to add the extended rule to the N1 group. Step 3 Link the temporary fields on the Input side of the map with the corresponding Output fields.
100
Chapter 4
The Map Editor enables you to map to and from variable-length-delimited documents. This section covers the following topics: About the Variable-Length-Delimited Data Format Creating a Variable-Length-Delimited Layout from a Delimited File
101
Variable-Length-Delimited Components
The following table lists the components that make up the variable-length-delimited layout in the Map Editor, the icons that represent the components, and descriptions of the components. For information about adding or modifying a map component in a layout, see Chapter 1, Map Editor Basics. For information about the properties of these map components, see Appendix C, Map Editor Properties.
Component Variable-lengthdelimited root element Group Icon Description The variable-length-delimited root element represents files that contain data separated by delimiters, such as .csv files. A group is a looping structure that contains related groups or records that repeat in sequence until either the group data ends or the maximum number of times that the loop is permitted to repeat is exhausted. When a group contains an extended rule or a standard rule, an asterisk appears to the right of the group icon. Record A record is one line of data that contains fields separated by delimiters. Each record is separated by a carriage return. A field is one segment of data in a record, separated by delimiters. When a field has a link performed against it, a red check mark appears over the field icon. When a field contains an extended rule or a standard rule, an asterisk appears to the right of the field icon.
Field
102
1. From the Map Editor File menu, select New. 2. In the New Map Wizard, complete the questions on the first screen. For more information about creating a new map, see Chapter 1, Map Editor Basics. 3. If you are translating from variable-length-delimited format, on the Input screen, select Variable Delimited and click Customize. If you are translating from another format, select that format and continue to the next screen. 4. If you are translating to variable-length-delimited format, on the Output screen, select Variable Delimited and click Customize. If you are translating from another format, select that format and continue to the next screen. 5. In the New Variable Length Delimited Data Wizard, type the name or browse to the location of the delimited file. 6. Specify the field delimiter and quote character, as necessary. 7. If you want the first record to act as a header, select Include column (field) names from first record and click Next. 8. On the output side, select the type of quote handling and click Finish:
Type Quote fields containing delimiter (default) Quote text fields and fields containing delimiter Quote all fields Description Only fields that contain the delimiter are quoted.
All string fields and all fields that contain the delimiter are quoted.
All fields are quoted. Note: By default, the translator does not quote empty output fields. To enable the translator quote empty output fields, add the line varDelim.quoteEmptyFields=Yes to the customer_overrides.properties file in the Properties directory.
9. Continue with the New Map Wizard as directed. When you click Finish, the Map Editor displays the new map in the Map Editor window. 10. If necessary, modify the map so the record has the exact amount of fields that are in the data.
103
104
Chapter 5
The Map Editor enables you to map to and from Japanese Center for Informatization of Industry (CII) data documents. This section covers the following topics: About the CII Data Format Creating a CII Layout from a Standard Configuring a Loop About Character Encoding Relating CII Data Attributes to Map Editor Data Types Preserving Leading Spaces When Mapping to a Positional Data Format Importing CII Maps from Gentran:Server for Windows
105
Group
A group contains related groups and transfer form data (TFDs). When a group contains an extended rule or a standard rule, an asterisk appears to the right of the group icon.
TFD
Transfer form data (TFD) is a block of data that consists of a tag, a length indicator, and data. The length of the element is always indicated, so delimiters are unnecessary. When a TFD has a link performed against it, a red check mark appears over the TFD icon. When a TFD contains an extended rule or a standard rule, an asterisk appears to the right of the TFD icon.
106
A typical TFD consists of a tag, a length indicator, and data. The length of the element is always indicated, so delimiters are unnecessary. The Application Translation service handles hexadecimal data in the range of 0x01 through 0xFF. The Translation service does not handle 0x00, and thus it cannot translate pure binary data such as bitmaps.
107
7. If you want Japanese descriptions, select the check box and click Next.
Note: Descriptions are available only in Japanese.
8. Click Finish. 9. Continue with the New Map Wizard as directed. When you click Finish, the Map Editor displays the new map in the Map Editor window.
Configuring a Loop
In CII terminology, a loop is expressed as a multi-detail. Multi-details are indicated through the use of specific TFDs. A multi-detail header (MDH) is used before the start of a loop, and at the end of each iteration there is a multi-detail return (MDR). The multi-detail trailer (MDT) is located at the end of the loop. The following table shows how a multi-detail is typically configured:
TFD Type Multi-detail header (MDH) MDH Multi-detail return (MDR) Multi-detail trailer (MDT) Tag 0xFA 0xFD 0xFB 0xFC Properties One-byte string Two-byte binary numeric type N0 No data No data
To configure a key field for a multi-detail header: 1. In the Map Editor, double-click or right-click the multi-detail header and select Properties. 2. Click the Key Field tab. For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. 3. Select Use constant and click Edit.
108
4. In the Map Constants dialog box, type the constant you need.
Tag 0xFA 0xFD Data Type String String Range of Values A to Z, 1 to 9 0000 to 65535
109
110
Application and Gentran:Server for Windows process data differently. When Gentran:Server reads and validates data, the Gentran:Server translator counts bytes. When Application reads and validates data, the Application Translation service counts characters. So, a double-byte character is counted as two positions by Gentran:Server and one position by Application. When you import a map created in Gentran:Server that maps CII (input or output), the Map Editor automatically adjusts the minimum and maximum fields on the Validation tab for you. For example, if a TFD has a maximum length of 32 specified in a Gentran:Server map, then in the Map Editor, the TFD maximum is 16.
111
112
Chapter 6
The Map Editor enables you to map Structured Query Language (SQL) documents. This section covers the following topics: About the SQL Data Format Considerations for SQL Mapping Overview: How to Create Map Objects Managing the SQL File Format Managing Statement Records Managing Cursor Operation Records Managing Input Records Managing Output Records Generating Database Fields Creating SQL Fields Checking Database Consistency
113
View a model of the database schema, including lists of tables and columns. Generate fields directly from your database schema. Check the consistency of the map with your database.
Note: SQL functions cannot be inserted in any other type of map.
SQL Components
The following table lists the components that make up the SQL layout in the Map Editor, the icons that represent the components, and descriptions of the components. For information about adding a map component to a layout, see Chapter 1, Map Editor Basics and Overview: How to Create Map Objects on page 118. For information about the properties of these map components, see Appendix C, Map Editor Properties.
Component SQL root element Icon Description The SQL root element is where you specify the SQL data sources that Application uses during translation. It is a looping structure that contains groups, SQL statements, cursor operations, and input and output records that repeat in sequence until either the group data ends or the maximum number of times that the loop is permitted to repeat is exhausted. The SQL root element cannot be referenced by standard rules or links. A group is a looping structure that contains related groups, statement records, cursor operations, and input and output records that repeat in sequence until either the group data ends or the maximum number of times that the loop is permitted to repeat is exhausted. A group cannot be referenced by standard rules or links. When a group contains an extended rule or a standard rule, an asterisk appears to the right of the group icon.
Group
114
Icon
Description A statement record represents a unit of SQL, which includes a SQL query (which may or may not return a result set), a command (which does not return a result set), or a stored procedure invocation (which may or may not return a result set). Each statement record is associated with a single data source. If the schema for that data source already exists, Application displays all the tables for your reference. To use a statement record, you must first select a data source. If a schema was generated for the selected data source, Application displays a list containing all the tables and views. Then you can type a SQL statement, test its validity, and generate a result set of columns returned from the query or stored procedure. This result set is used in the SQL field generator for input records. If you specify the name of a stored procedure instead of a SQL statement, you must select the Stored Procedure option. The statement record cannot be referenced by standard rules, extended rules, or links.
A cursor operation record contains instructions for the translator on moving through the result set returned by a query to a new record. Each operation record is associated with a single SQL statement record that returns a result set. The translator performs cursor operations as it encounters them while processing the map. The cursor operation record is enabled only on the input side of the map and cannot be referenced by standard rules, extended rules, or links. An input record contains a logical group of fields that can be mapped to the output format. The input record is enabled only on the input side of the map and cannot be referenced by standard rules or links. For example, the input side of the map is SQL and the output side is Positional, and you must generate a record using information from two separate queries. You can create a SQL input record containing fields that obtain data from the appropriate columns of both queries. Then you can link those fields directly to the corresponding positional fields.
Input record
Output record
An output record represents UPDATE, INSERT, or DELETE SQL statements, and contains database output fields. You specify the name of the table that Application modifies and whether to insert, update, or delete. Output record fields represent the columns Application is updating or inserting and the key to the affected row or rows. Output records can be created on both the input and output sides of a map and cannot be referenced by standard rules or links.
115
Component Field
Icon
Description A field corresponds to a column in a database table and contains the attributes of that column. On the input side, the field receives data from a column of the current row of the open SQL query. On the output side, the field represents a column Application updates or inserts, or a key column. Additionally, you can create fields that are not related to a database table or result set of a query. When a field has a link performed against it, a red check mark appears over the field icon. When a field contains an extended rule or a standard rule, an asterisk appears to the right of the field icon.
For outbound processing, you need a way to determine which records in the database tables were processed. Therefore, you must be able to mark records so that when you process the map, you can select only the unprocessed records in the tables. To mark records as processed or not processed, you must designate a column in your database to contain a processing flag. This can be a process column that you insert into your database, or an unused column. You must incorporate this column into the SQL statement
116
record in your map. Also, you must update this column from the map to indicate that a data record was processed.
Caution: Before adding a process column to your database or changing the function of an existing column, copy your data to separate work tables in your database. Copying your data ensures that your testing will not overwrite existing data.
The Map Editor enables you to export data directly to a database. For more information, see How the Translator Works with SQL Maps on page 117.
On the Input side of a map you cannot pass parameters to the query being issued. That is, you cannot pass to the query: a value from the map, a variable, or any data that is hard-coded by using constants or a codelist. You cannot generate a result set on the Output side of a map because you cannot use an Input record on the Output side of a map (and an Input record is the only map component able to generate a result set). At least one field (column) in an Output Record must be defined as a TableKey.
117
Application is Java-based, and uses Java Database Connectivity (JDBC) to connect to external databases. Map Editor is Windows-based, and uses Open Database Connectivity (ODBC) to connect to external databases. To use the JDBC adapter or Lightweight JDBC adapter, you must set up a connection to the external database that contains the tables you want to access.
118
For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see: Modifying SQL File Format Properties on page 119 Creating a SQL Data Source on page 119
119
5. In the Machine Data Source tab, select the computer data source you want to use and click OK. Application closes the Select Data Source dialog box and displays a Login dialog box. 6. Verify the login information and click OK. 7. In the SQL File Properties Data Sources tab, complete the following fields: DSN (required) DATABASE (optional) Password (optional) User-defined name for this data source (optional) 8. Click Add. Application adds the data source to the list and prompts you that it is creating the schema for that data source if you selected the connect option. 9. Do you want to test the connection to a data source? If Yes, select the data source and click Test Connection. Application attempts to rebuild the schema whenever you perform an update or check database consistency, and it tests all queries running against that data source. Application tests the connection of the selected data source and prompts you with a dialog box containing the results of the test. Click OK to close the dialog box. If No, continue with the next step. 10. Click OK to close the SQL File Properties dialog box.
120
For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see Creating a Statement Record on page 121.
See Managing the SQL File Format on page 118 for more information. The Map Editor tests the statement and, if specified, returns a result set. 10. Click OK. The Map Editor saves the statement record and closes the SQL Statement Record Properties dialog box.
121
The Map Editor performs cursor operations when the translator encounters them as it processes the map.
Note: The cursor operation record cannot be referenced by standard rules, extended rules, or links.
For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see Creating a Cursor Operation Record on page 122.
122
For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see: About Key Field Matching on page 123 Auto Get Next Row Operation on page 123
When to Use
The Automatically get next row from Statement record option must be used (selected) in the following scenarios:
123
When retrieving all the data from one table and all the rows must be processed as one document When processing a repeating Detail record and all corresponding Detail rows must be processed in order
Note: You must also use Key Fields in this scenario. When the key fields no longer match, the Automatically get next row from statement record function is not performed.
When mapping SQL with the Map Editor, you must use automatically get next row when you want to move to the next row of the result set. If you do not instruct the translator to get the next row, it will never do so when running the map. Most often this function is used on a repeating record, when you want to map data from multiple rows of the result set, one row right after another.
124
If Yes, click the Loop Extended Rules tab, define the rule, and continue with the next step. If No, continue with the next step. 11. Click OK to save the input record and close the SQL Input Record Properties dialog box.
For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see Using the Auto Get Next Cursor Operation on page 125.
In the Looping tab of the SQL Output Record Properties dialog box on the input side of the map, specify the Automatically get next row from Statement record option.
125
2. From the shortcut menu, select Output Record. The SQL Output Record Properties dialog box opens. For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. 3. In the Name tab, specify the following: Unique output record name Description Additional notes (if applicable) 4. Click the SQL Operations tab to access operation options.
Note: If you choose to perform an Insert or Update operation, you can also select the On failure, automatically switch selected operation and retry Inserts as Updates or Updates as Inserts option to specify that if the operation is not completed, the translator will automatically switch the operation type (that is, update to insert or insert to update) and retry the operation.
5. From the Data Sources list, select the appropriate data source. 6. From the Table list, select the table you want to modify, then select the appropriate table operation. 7. Click the Key Field tab to access the key field options. 8. If the output record is on the input side of the map, select the appropriate options to define the key field. 9. Click the Looping tab to access the occurrence options. 10. In the Maximum usage box, type the number of times the record can repeat (loop). 11. Did you specify that the record repeats (loops)? If Yes, continue with the next step. If No, continue with step 13. 12. Do you want to specify an extended rule for this output record? If Yes, click the Loop Extended Rules tab, define the rule, and continue with the next step. If No, continue with the next step. 13. Click OK to save the output record and close the SQL Output Record Properties dialog box.
126
For more information, see: Generating Input Record Database Fields on page 127 Generating Output Record Database Fields on page 127
Update Delete The SQL Field Generator Wizard: Select Column(s) dialog box opens. 5. From the Columns list, select the result columns and click Finish. Click Choose All to select all the columns. Click Clear to clear all columns. Application adds the specified result columns to the record and automatically generates all the validation settings.
For more information, see: Field In an Input Record on page 128 Field In an Output Record (Input or Output Side of Map) on page 129 Field In an Output Record (Input Side of Map) on page 129
128
To verify whether a link is valid when using SQL in an output record: 1. Verify all fields that are linked are of same data type. 2. Verify all columns in the table that defined as not null are populated with data in the map. 3. Verify that, for any linked fields, the input field length is not greater than the output field length. 4. Verify that the data to be inserted does not violate any unique key or any other constraints on the tables.
For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. To create a output record field on the input side of the map: 1. In the Map Editor, right-click a map object. From the shortcut menu, select either Create Sub or Insert. 2. From the shortcut menu, select Field. The SQL Field Properties dialog box opens. For more information about properties, press F1 for Help or see Appendix C, Map Editor Properties. 3. In the Name tab, specify the following: Unique field name Description Additional notes (if applicable) 4. Is this a field on the input side of the map? If Yes, click the Query tab and continue with the next step.
129
If No (this is a field on the output side), select the Column tab and continue with step 8. 5. From the Associate Statement Record list, select the record with which this field is associated. 6. From the Name list, select the table name. If the Name list is not available, you did not test the SQL query. Instead, select a number from the Number box. 7. Do you want to enable nulls? If Yes, select the Nulls Allowed option and continue with step 11. If No, continue with step 11. 8. In the Column tab, select the column name from the Name list. If the Name list is not available, you did not select to connect to a data source to create a table in the SQL File Properties dialog box. Instead, select a number from the Number box. 9. Do you want to enable nulls? If Yes, select the Nulls Allowed option and continue with the next step. If No, continue with the next step. This option is applicable only for fields in an output record. 10. Will this field be used in a WHERE clause? If Yes, select the Table Key option and continue with the next step. If No, continue with the next step. 11. In the Validation tab, specify the following: Whether the field is required Minimum length Maximum length Type of data How the data is formatted 12. Do you want to specify a standard rule for this field? If Yes, click the Standard Rule tab, define the rule, and continue with the next step. If No, continue with the next step. 13. Do you want to specify an extended rule for this field? If Yes, click the Extended Rule tab, define the rule, and continue with the next step. If No, continue with the next step.
130
14. Click OK to save the field and close the SQL Field Properties dialog box.
131
132
Chapter 7
The Map Editor enables you to map to and from Extensible Markup Language (XML) documents. This section covers the following topics: About the XML Data Format Creating an XML Layout from a DTD or Schema Creating an XML Map from a Preloaded Standard Creating an XML Map from a Financial Services Standard Overview: Creating Map Objects Managing the XML File Managing XML Elements Managing Content Particles Managing Pcdata Managing Attributes About XML Namespaces Using Namespaces in the XML File
133
Repeat an element (with a structure different from the structure of the original element) in a different part of the document. For more information, see: XML Components on page 134 XML Considerations on page 135 Support for XML Schemas in Application on page 136 Abstract Elements and Application on page 137 Importing Large XML Files on page 137 Application allows you to select a COBOL copybook file layout (in ASCII text) as input to the Map Editor for the positional side of a map. The conversion of COBOL copybook is accomplished using the third-party open source tool CB2XML (Copy-Book-to-XML), which is a COBOL copybook to XML converter. CB2XML accepts a COBOL copybook file layout as input and returns an XML file as output, and the Map Editor then converts the intermediate XML file to the positional format. See COBOL Copybook Conversion for Use with Map Editor on page 413 for more information.
XML Components
The following table lists the components that make up the XML layout in the Map Editor, the icons that represent the components, and descriptions of the components. For information about adding a map component to a layout, see Chapter 1, Map Editor Basics and Overview: Creating Map Objects on page 145. For information about the properties of these map components, see Appendix C, Map Editor Properties.
Component XML root element Icon Description The XML root element represents the XML document that Application is mapping. The XML root element is a looping structure that contains elements and content particles that repeat in sequence until either the group data ends or the maximum number of times that the loop is permitted to repeat is exhausted. The root element cannot be referenced by standard rules or links.
Element
An element contains related elements and content particles. In addition, an element can contain one pcdata and one attribute container. These objects repeat in sequence until either the element data ends or the maximum number of times that the loop is permitted to repeat is exhausted. A repeating element that contains another repeating element corresponds to a nested looping structure. The XML Element object cannot be referenced by standard rules or links.
134
Icon
Description An abstract element is an inconcrete element from an XML schema (for example, the term appliance may be considered an abstract element while dishwasher is a concrete one). An abstract element must be substituted with a non-abstract element for a map to be successfully compiled.
Content particle
A content particle contains related subordinate objects that define either a choice, a sequence, or an all. A content particle can contain only one pcdata. If specified, these objects can repeat in sequence until either the content particle data ends or the maximum number of times that the loop is permitted to repeat is exhausted. If you create a content particle that is subordinate to another content particle, the content particle corresponds to a nested looping structure (a loop within a loop). A content particle cannot be referenced by standard rules or links.
Pcdata
A pcdata contains character data in an XML document. Only one pcdata can be defined per element or content particle. Application automatically names the pcdata with the name of the parent element or content particle. When a pcdata has a link performed against it, a red check mark appears over the pcdata icon. When a pcdata contains an extended rule or a standard rule, an asterisk appears to the right of the pcdata icon.
Attribute container
An attribute container does not correspond to an XML function. Application uses attribute containers to contain the attributes of an XML element. The attribute container has no properties. When you create the first attribute of an XML element, the Map Editor automatically creates an attribute container object. An element can have only one attribute container, but the attribute container object can enclose many attribute objects.
Attribute
An attribute specifies information associated with an element that further defines the element. The attribute is located within an attribute container. Attributes do not have to occur in sequence in the input data. When an attribute has a link performed against it, a red check mark appears over the attribute icon. When an attribute contains an extended rule or a standard rule, an asterisk appears to the right of the attribute icon.
XML Considerations
Before you create an XML layout, consider:
135
You have two options for creating an XML layout: manually create an XML layout or create an XML layout from a document type definition (DTD) or XML schema. If you are using an XML schema, you must install the following software. Both are available from the Microsoft Web site. Microsoft XML Core Services 4.0 RTM (XML parser) Windows Installer 2.0 (to install the preceding XML parser) An XML schema defines rules for the structure and content of an XML document. The schema you use must meet www.w3.org schema standards. Only valid schemas will generate an XML map structure.
Note: Verify the schema is valid by using a Schema Validator.
The Map Editor uses the Microsoft XML Core Services 4.0 RTM (XML parser) to read and validate XML schemas. The Map Editor does not display the following features of XML schemas: Substitution groups Data type facets other than minimum and maximum length Abstract element types (for more information about how abstract element types are supported in the Map Editor, see Abstract Elements and Application on page 137) Data type derivations The Map Editor uses XML schemas to create the initial file format. You cannot create a new element after importing a schema by referring to a type defined in the schema. Annotations Prohibited attribute constraints The nillable, fixed-value, and default value attributes of an element The Map Editor supports the following XML schema features, and: Treats list data types as strings Creates a code list to contain the enumeration values of a simple type derived by enumeration If a simple data type is derived by the union of differing integral types, treats the data type as a string (for example, a date/time type joined with an integer type would be treated as a string)
136
The translator currently wraps a CDATA section around any text that contains one of the five special characters (< (less than), > (greater than), & (ampersand), (single quote or apostrophe), and (double quote)
To change the settings for XML Import file size, modify the size of the maxImportUpload parameter in the following files: tp_import_export.properties tp_import_export.properties.in To change the settings for XML Import file size: 1. Using a text editor, open the tp_import_export.properties file, which can be found in <install dir>/properties in your Application installation. 2. To change the settings for XML Import file size, modify the size of the maxImportUpload parameter. 3. Using a text editor, open the tp_import_export.properties.in file, which can be found in <install dir>/properties in your Application installation. 4. To change the settings for XML Import file size, modify the size of the maxImportUpload parameter. 5. Once you complete the edits, execute <install_dir>/bin/setupfiles.sh and then stop and restart Application to verify the changes take effect.
137
3. If you are translating from XML, from the Create a new data format using this syntax list, select XML and click Customize. If you are translating from another format, select that format and continue to the next screen. 4. In the New XML Wizard, select the Customization File Typethe type of file you want to use to create your XML layout, either DTD or XML schema. 5. Type the name of the DTD or XML schema, type the URL, or browse to the location of the DTD or XML schema, and click Next. 6. Select the root element. The DTD or schema does not explicitly define the root element, so you can select from all the elements defined in the DTD or all the top-level elements defined in the .XSD schema (elements subordinate to the schema element). By default, the wizard selects the first element it encounters. 7. Specify the maximum length for data elements. For a DTD, you can specify the maximum length of data elements because length is not defined in the DTD and is optional for elements declared in the XML schema. For an XML schema, the maximum length can be specified for some elements. You can specify a default field length for elements that do not have a specified field length.
138
8. If you want the map to contain code lists equivalent to the enumerations defined in the DTD or schema, select the Build code lists for enumerated attributes check box.
Note: The default for the Build code lists for enumerated attributes check box is cleared because using code lists may be redundant and thus your map is smaller and more efficient without them.
9. Click Next. 10. If you chose to import an XML schema, select the subelements you want to be included in the map, and click Next.
Note: The list displays the entire tree of elements and subelements for the root element you selected, hierarchically displayed using indentation. Attributes are not included in this list. The default is that all elements and subelements are selected. When you clear the box next to an element, all its subelements are automatically cleared. Similarly, when you select the box next to a child element, its parent elements are automatically selected. Selecting only the elements and subelements you need for your map reduces the size of the map and makes it more efficient.
11. If you are translating to XML, on the Output screen (from the Create a new data format using this syntax list), select XML and click Customize. 12. In the New XML Wizard, select the Customization File Typethe type of file you want to use to create your XML layout, either DTD or XML schema. 13. Type the name of the DTD or XML schema, type the URL, or browse to the location of the DTD or XML schema, and click Next.
Note: When using the file:// protocol to reference a DTD, if you are unsure of your FTP connection (host name and FTP or Internet access) and the DTD is on the Application server, provide an absolute path in the reference by omitting the host name and leaving the following slash. For example, file://home/sterling/dtd/test.dtd. If you are sure of your FTP connection, then you can specify a host name.
If you are using an XML schema and the XML parser detects any errors, the messages are displayed in an error window. 14. Select the root element. The DTD or schema does not explicitly define the root element, so you can select from all the elements defined in the DTD or all the top-level elements defined in the .XSD schema (elements subordinate to the schema element). By default, the wizard selects the first element it encounters.
139
15. Specify the maximum length for data elements. For a DTD, you can specify the maximum length of data elements because length is not defined in the DTD and is optional for elements declared in the XML schema. For an XML schema, the maximum length can be specified for some elements. You can specify a default field length for elements that do not have a specified field length. 16. If you want the map to contain code lists equivalent to the enumerations defined in the DTD or schema, select the Build code lists for enumerated attributes check box.
Note: The default for the Build code lists for enumerated attributes check box is cleared because using code lists may be redundant and thus your map is smaller and more efficient without them.
17. Click Next. 18. If you chose to import an XML schema, select the subelements you want to be included in the map, and click Next.
Note: The list displays the entire tree of elements and subelements for the root element you selected, hierarchically displayed using indentation. Attributes are not included in this list. The default is that all elements and subelements are selected. When you clear the box next to an element, all its subelements are automatically cleared. Similarly, when you select the box next to a child element, its parent elements are automatically selected. Selecting only the elements and subelements you need for your map reduces the size of the map and makes it more efficient.
19. Click Finish. The XML Load Warnings dialog box opens if there are any errors. If the Map Editor made changes to the DTD to make it compliant with Application, it indicates the changes. Click OK. 20. Continue with the New Map Wizard as directed. When you click Finish, the Map Editor displays the new map in the Map Editor window.
Example
The following figure shows an example of an XML document:
<?xml version="1.0" encoding="UTF-8"?> <services> <service name="BPMetaDataInfoService" activestatus="1" systemservice="1"/> </services>
140
FIXML FpML IFX OFX TARGET2 TWIST ISO20022 SWIFTNet Funds SWIFTNet Trade Services SWIFTNet Exceptions and Investigations SWIFTNet Cash Reporting OAGi CIDX PIDX
Note: If the map you are creating contains greater than 20,000 objects, you will receive a message noting that this map contains a very large number of objects. For best performance, it is recommended that you consider whether any unnecessary objects in the map can be removed, do not expand the entire object treeexpand only the section of the tree you are currently mapping, consider using the Show links to or from the currently selected element option instead of the Show links to or from all visible elements option, and save the map using the.MAP file format (using the Save As function).
To create an XML layout from a preloaded standard: 1. From the Map Editor File menu, select New. 2. In the New Map Wizard, complete the questions on the first screen.
Note: To use XML schemas, the map type must be Sterling Integrator.
141
3. If you are translating from XML, from the Create a new format using this syntax list, select XML and click Customize. If you are translating from another format, select that format and continue to the next screen. 4. Type the name of the XML schema, type the URL, or browse to Map Editor\Samples\Schemas and the folder containing the schema type you would like to load), select the schema, and click Next. If you are using an XML schema and the XML parser detects any errors, the messages are displayed in an error window. 5. Select the root element. The schema does not explicitly define the root element, so you can select from all the top-level elements defined in the .XSD schema (elements subordinate to the schema element). By default, the wizard selects the first element it encounters. 6. Specify the maximum length for data elements. For an XML schema, the maximum length can be specified for some elements. You can specify a default field length for elements that do not have a specified field length. 7. If you want the map to contain code lists equivalent to the enumerations defined in the schema, select the Build code lists for enumerations check box.
Note: The default for the Build code lists for enumerations check box is cleared because using code lists may be redundant and thus your map is smaller and more efficient without them.
8. Click Next. 9. If you chose to import an XML schema, do not modify any of the subelements selected in the display. Click Next. 10. If you are translating to XML, on the Output screen (from the Create a new format using this syntax list), select XML and click Customize. 11. In the New XML Wizard, select the Customization File Typethe type of file you want to use to create your XML layout, either XML schema. 12. Type the name of the XML schema, type the URL, or browse to Map Editor\Samples\Schemas and the folder containing the schema type you would like to load), select the schema, and click Next. If you are using an XML schema and the XML parser detects any errors, the messages are displayed in an error window. 13. Select the root element. The schema does not explicitly define the root element, so you can select from all the top-level elements defined in the .XSD schema (elements subordinate to the schema element). By default, the wizard selects the first element it encounters. 14. Specify the maximum length for data elements. For an XML schema, the maximum length can be specified for some elements. You can specify a default field length for elements that do not have a specified field length.
142
15. If you want the map to contain code lists equivalent to the enumerations defined in the schema, select the Build code lists for enumerations check box.
Note: The default for the Build code lists for enumerations check box is cleared because using code lists may be redundant and thus your map is smaller and more efficient without them.
16. Click Next. 17. If you chose to import an XML schema, do not modify any of the subelements selected in the display. Click Next. 18. Click Finish. The XML Load Warnings dialog box opens if there are any errors. If the Map Editor made changes to the DTD to make it compliant with Application, it indicates the changes. Click OK. 19. Continue with the New Map Wizard as directed. When you click Finish, the Map Editor displays the new map in the Map Editor window.
To create a map using a Financial Services XML standard: 1. From the Map Editor File menu, select New. 2. In the New Map Wizard, complete the questions on the first screen.
Note: To use XML schemas, the map type must be Sterling Integrator.
3. If you are translating from a Financial Services XML standard, from the Create a new data format using this standard list, select one of the Financial Services XML standards and click Messages. If you are translating from another format, select that format and continue to the next screen.
143
4. Complete the Map Wizard by selecting the version of the standard, the desired message, the maximum length of the data elements, and whether to build codelists for enumerated attributes, and click Next. The default for the Build code lists for enumerated attributes check box is cleared because using code lists may be redundant and thus your map is smaller and more efficient without them. 5. Click Next. 6. If you chose to import an XML schema, do not modify any of the subelements selected in the display. This list is included for your information only. Click Next.
Note: For the OFX and IFX standards only, all elements except the root are not initially selected. The list includes all messages for the messages category selected. You must select the messages you want to use in the map.
7. Click Finish. 8. If you are translating to a Financial Services XML standard, on the Output screen (from the Create a new data format using this standard list), select one of the Financial Services XML standards and click Messages. If you are translating from another format, select that format and continue to the next screen. 9. Complete the Map Wizard by selecting the version of the standard, the desired message, the maximum length of the data elements, and whether to build codelists for enumerated attributes, and click Next. The default for the Build code lists for enumerated attributes check box is cleared because using code lists may be redundant and thus your map is smaller and more efficient without them. 10. Click Next. 11. If you chose to import an XML schema, do not modify any of the subelements selected in the display. This list is included for your information only. Click Next. 12. Click Finish. The XML Load Warnings dialog box opens if there are any errors. Click OK. 13. Continue with the New Map Wizard as directed. When you click Finish, the Map Editor displays the new map in the Map Editor window.
144
145
Note: The XML File object cannot be referenced by standard rules or links.
For information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see: Modifying XML File Properties on page 146 Creating an Entity on page 147 Regarding Decimal Points on page 147
146
System ID (if applicable) How the XML elements are output to the file 5. Do you want to specify an extended rule for the XML file? If Yes, select the Loop Extended Rules tab, define the rule, and continue with step 6. See Chapter 9, Using Extended Rules for more information about extended rules. If No, continue with step 6. 6. Click OK. The Map Editor saves your changes and closes the XML File Properties dialog box.
Creating an Entity
An entity is an object that represents a string of characters. To create an entity: 1. In the Map Editor, right-click the XML root element. From the shortcut menu, select Properties. 2. In the XML File Properties dialog box, click the Entities tab to access the entity options. 3. Click New. 4. In the Entity Properties dialog box, specify the properties as necessary. For information about properties, press F1 for Help or see Appendix C, Map Editor Properties.
Note: In the Tag tab, the tag must match the entity tag in the XML document. XML tags cannot contain spaces.
5. Click OK to save the entity and close the Entity Properties dialog box. 6. Click OK again to close the XML File Properties dialog box.
147
4. In the Decimal Point Character box, type the value you want Application to use as a decimal pointfor example, a comma (,). This resets the decimal point default to use what you specified instead of a period. 5. Click OK. 6. Save the map. 7. Compile the map. The decimal point setting is now correctly set to use your specification.
For information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see: Creating an Element on page 148 Inserting an Element from a Schema or DTD on page 149
Creating an Element
To create an element: 1. Right-click a map object and select either Create Sub or Insert from the shortcut menu. 2. From the shortcut menu, select Element. The Map Editor displays the XML Element Properties dialog box. 3. In the Name tab, specify the following: Unique element name Description (if applicable) Additional notes
148
4. If necessary, click the Tag tab and change the value in the Tag box.
Note: This value must match the element in the XML document. XML tags cannot contain spaces.
5. Select the Repeating tab to access the occurrence options. 6. Select either the Conditional or Mandatory option to specify whether the element is required in the map. 7. Select the appropriate repeating option for the element. 8. If you must specify the number of times the element can repeat (loop), type that number in the Maximum usage box. 9. Did you specify that the element repeats (loops)? If Yes, continue with step 11. If No, continue with step 12. 10. Do you want to specify an extended rule for this element? If Yes, click the Loop Extended Rules tab, define the rule, and continue with step 12. See Chapter 9, Using Extended Rules for more information about extended rules. If No, continue with step 12. 11. Click OK. The Map Editor saves the element and closes the XML Element Properties dialog box.
149
7. Click Finish to insert the element into your XML file format. The Map Editor displays the XML Element Properties dialog box so you can configure the element properties. If the inserted element is an abstract one, the displayed XML Element Properties dialog box enables you to provide a concrete element to replace the abstract one, by clearing the Defined as Abstract check box on the Tag tab (you must replace abstract elements with concrete elements by clearing this check box to avoid map compilation errors or, optionally, you can avoid the compilation errors by deactivating the abstract elements). For more information about abstract elements, see Abstract Elements and Application on page 137. For more information about deactivating map components, see Activating Map Components on page 75. 8. In the Name tab, specify the description (if applicable).
Note: The Additional notes box is populated automatically with the XML element annotation when you import an XML schema.
9. If necessary, click the Tag tab and change the value in the Tag box.
Note: This value must match the element in the XML document. XML tags cannot contain spaces.
10. If the element is an abstract type, select the Tag tab and clear the Defined as abstract check box. By clearing this check box, you change the abstract element to a concrete one. This check box must be cleared to enable the map to compile successfully (without compilation errors).
Note: Optionally, you can avoid compilation errors from abstract elements by deactivating the abstract elements. For more information about deactivating map components, see Activating Map Components on page 75.
11. Select the Repeating tab to access the occurrence options. 12. Select either the Conditional or Mandatory option to specify whether the element is required in the map. 13. Select the appropriate repeating option for the element. 14. If you must specify the number of times the element can repeat (loop), type that number in the Maximum usage box. 15. Did you specify that the element repeats (loops)? If Yes, continue with step 11. If No, continue with step 12. 16. Do you want to specify an extended rule for this element? If Yes, click the Loop Extended Rules tab, define the rule, and continue with step 12. For more information about extended rules, see Chapter 9, Using Extended Rules.
150
If No, continue with step 12. 17. Click OK. The Map Editor saves the element and closes the XML Element Properties dialog box.
For information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see Creating a Content Particle on page 151.
4. Click the Type tab to access the content particle type options. 5. Select the appropriate option to define what the child objects of the content particle represent. 6. Click the Repeating tab to access the occurrence options.
151
7. Select Conditional or Mandatory to specify whether the content particle is required in the map. 8. Select the appropriate repeating option for the content particle. 9. In the Maximum usage box, type the number of times the content particle can repeat (loop). 10. Did you specify that the content particle repeats (loops)? If Yes, continue with step 11. If No, continue with step 12. 11. Do you want to specify an extended rule for this content particle? If Yes, select the Loop Extended Rules tab, define the rule, and continue with step 12. See Chapter 9, Using Extended Rules for more information about extended rules. If No, continue with step 12. 12. Click OK. The Map Editor saves the content particle and closes the Content Particle Properties dialog box.
Managing Pcdata
A pcdata object contains character data in an XML document. Only one pcdata object can be defined per element or content particle. Application automatically names the pcdata object with the name of the parent element or content particle.
Note: When a pcdata has an operation performed against it (link, standard rule, or as an extended rule storage field), the Map Editor displays a red check mark over the pcdata icon.
Note: By default, the translator always trims white space from XML Pcdata fields during input. To control this behavior (to deactivate the trimming of Pcdata white space by the translator during input), add the line trimPcdata=false to the customer_overrides.properties file in the Properties directory.
For more information, see Creating a Pcdata on page 153. Whitespace can be trimmed from pcdata objects on both the input and output sides of the map. The default property value for the trim pcdata setting is Use trim setting from customer_overrides.properties for the input side of the map and Never trim whitespace from PCDATA on the output side of the map. For information about properties, press F1 for Help or see Appendix C, Map Editor Properties.
152
Managing Attributes
Creating a Pcdata
To create a pcdata: 1. Right-click a map object and select either Create Sub or Insert from the shortcut menu. 2. From the shortcut menu, select Pcdata. The Map Editor displays the Pcdata Properties dialog box. 3. In the Validation tab, specify the following: Whether the pcdata is required Minimum length Maximum length Type of data How the data is formatted 4. Do you want to specify an extended rule for this pcdata? If Yes, click the Extended Rule tab, define the rule, and continue with step 5. For more information about extended rules, see Chapter 9, Using Extended Rules. If No, continue with step 6. 5. Do you want to specify a standard rule for this pcdata? If Yes, click the Standard Rule tab, define the rule, and continue with step 6. For more information about standard rules, see Chapter 8, Using Standard Rules. If No, continue with step 6. 6. Click OK. The Map Editor saves the pcdata and closes the Pcdata Properties dialog box.
Managing Attributes
In Application, each attribute is contained in an attribute container. An element can only have one attribute container object, but the attribute container object can enclose many attribute objects.
Note: When an attribute has an operation performed against it (link, standard rule, or as an extended rule storage field), the Map Editor displays a red check mark over the attribute icon.
For information about properties, press F1 for Help or see Appendix C, Map Editor Properties. For more information, see:
153
Attribute Container Object on page 154 Attribute Object on page 154 Creating an Attribute on page 154
Attribute Object
The attribute object specifies information associated with an element that further defines the element.
Creating an Attribute
To create an attribute: 1. Right-click a map object and select either Create Sub or Insert from the shortcut menu. 2. From the shortcut menu, select Attribute. The Map Editor displays the Attribute Properties dialog box. 3. In the Name tab, specify the following: Unique attribute name Description (if applicable) Additional notes
Note: The Additional notes box is populated automatically with the XML attribute annotation when you import an XML schema.
4. If necessary, click the Tag tab and change the value in the Tag box.
Note: The value in the Tag box must match the attribute tag in the XML document. XML tags cannot contain spaces.
5. Click the Type tab to access the attribute type options. 6. In the Type tab, specify the following: Attribute type
154
Default usage of the attribute Default value (only if you selected Default Exists or Fixed)
Note: To use an enumerated attribute, you must also create a code list and use a code list standard rule with the attribute.
7. Click the Validation tab to access the validation options. 8. In the Validation tab, specify the following: Minimum length Maximum length Type of data How the data is formatted 9. Do you want to specify an extended rule for this attribute? If Yes, click the Extended Rule tab, define the rule, and continue with step 10. See the Chapter 9, Using Extended Rules for more information about extended rules. If No, continue with step 11. 10. Do you want to specify a standard rule for this attribute? If Yes, click the Standard Rule tab, define the rule, and continue with step 11. See the Chapter 9, Using Extended Rules for more information about extended rules. If No, continue with step 11. 11. Click OK. The Map Editor saves the attribute and closes the Attribute Properties dialog box.
155
Namespaces are not required. However, for documents that are transmitted outside of the organization or in large organizations where similar names might be used by different departments, they are invaluable. Here is an example of a namespace declaration for the element order:
<order xmlns=uuid.12345...67890 />
If a namespace is declared for an element, any subordinate elements or attributes inherit that namespace by default. However, a subordinate element or attribute can have a separate namespace defined for it. Here are examples of namespace declarations for an element and a subordinate element:
<order xmlns=uuid.12345...67890 > <number xmlns=uuid.09876...54321, /> </order>
If a namespace with prefixes is declared for an element, any subordinate elements or attributes inherit that namespace and the prefixes, as shown in this example:
<order xmlns:=uuid.1234567890 xmlns:aaa=uuid.09876...54321 > <aaa:number /> </order>
You can also write the namespace declaration without the prefix:
<order xmlns:=uuid.1234567890 > <number xmlns=uuid.09876...54321 /> </order>
For more information about XML namespaces, see the W3C document at www.w3.org/TR/1999/REC-xml-names-19990114/.
156
6. In the second box, type the namespace URI (for example, www.sterlingcommerce.com). 7. Repeat steps 4 through 6 for each namespace prefix required for the map. 8. Click OK to save the namespace information.
157
4. Click OK to save the namespace information. 5. If any of the elements also have the XML attribute created, define the namespace prefix and namespace URI for the element using the instructions for Defining a Namespace Prefix and URI on page 157.
Examples
In the following namespace declaration, the prefix is SCI and the namespace is www.sterlingcommerce.com:
<x xmlns:SCI=http://www.sterlingcommerce.com> </x>
In the following example of multiple namespace prefixes, one element defines two namespace prefixes, bk and isbn:
<bk:book xmlns:bk=urn:loc.gov:books> xmlns:isbn=urn:ISBN:0-111-22222-3> <bk:title>Numbers</bk:title> <isbn:number>0123456789</isbn:number> </bk:book>
158
Chapter 8
The Map Editor provides you with standard rules that you can apply to fields. Standard Rules give you access to functions that are necessary for mapping operations more complex than simple linking but less complex than extended rules. Standard Rules are mutually exclusive (you can use only one at a time on a field). For information about extended rules, see Chapter 9, Using Extended Rules.
Note: If a standard or extended rule is applied to a map component, this is visually represented in the Map Editor by an asterisk (*) on the map icon for that map component.
This section covers the following topics: Using the System Variable Standard Rule Using the Use Constant Standard Rule Using the Loop Count Standard Rule Using the Use Accumulator Standard Rule Using the Use Code Standard Rule Using the Select Standard Rule Using the Update Standard Rule
159
1. In the Map Editor, double-click an existing field or create a new one. The Field Properties dialog box opens. 2. Click the Standard Rule tab to access the standard rule options. 3. From the standard rule list, select Use System Variable. 4. From the system variable list, select Current date and time to map those variables to the field. 5. Click OK to save the standard rule.
160
Edit qualifier
161
2. In the Map Constants dialog box, do you want to create a new constant? If Yes, click New and continue with step 3. If No (you want to edit an existing constant), select the constant and click Edit and continue with step 3. The Edit Constant dialog box opens. 3. In the ID field, type the constant identifier. 4. From the Type list, select the category of the constant. 5. In the Value field, type the constant expression. 6. Click OK to add the constant.
Deleting Constants
To delete a constant: 1. From the Map Editor Edit menu, select Constants. 2. In the Map Constants dialog box, select the constant you want to delete. 3. Click Delete. The constant is removed without a warning message.
Mapping Constants
To map a constant in which you previously stored data using an extended rule: 1. In the Map Editor, double-click the field in which you want to use the constant. The Field Properties dialog box opens. 2. Click the Standard Rule tab to access the standard rule options. 3. From the standard rule list, select Use Constant. 4. From the constant list, select the constant that you want to use. 5. Click OK to load the data that was stored in the selected constant into the field.
Generating Qualifiers
A qualifier is a field that has a value expressed as a code that gives a specific meaning to the function of another field. A qualifying relationship is the interaction between a field and its qualifier. The function of the field changes depending on which code the qualifier contains. To generate a qualifier: 1. In the Map Editor, double-click the field you want to use to further define (qualify) another field. The Field Properties dialog box opens. 2. Click the Standard Rule tab to access standard rule options.
162
3. From the standard rule list, select Use Constant. 4. From the qualifiers list, select the field that this field qualifies. This list contains only the other active fields in the same record or segment as the qualifying field. 5. Click OK to generate the qualifying relationship between the two fields.
163
The accumulator has an start value of zero, unless you assign another value using the accum extended rule. For more information, see Chapter 9, Using Extended Rules. For more information, see: Standard Rule Tab: Use Accumulator on page 164 Counting Line Items on page 166 Calculating Hash Totals on page 167 Resetting and Calculating a Value Total on page 168
Accumulator Operations
For more information about the Edit Accumulator Entry dialog box, see Appendix C, Map Editor Properties. The following table lists the available accumulator operations and their functions:
Operation Increment primary Decrement primary Sum in primary Function Adds 1 (one) to the contents of the primary accumulator (Primary = Primary + 1). Subtracts 1 (one) from the contents of the primary accumulator (Primary = Primary - 1). Adds the numeric value (takes the positive or negative sign of the numbers into account) of the field to the contents of the primary accumulator (Primary = (+/-)Primary + (+/-)Field).
164
Function Adds the absolute value (does not take the positive or negative sign of the numbers into account) of the field to the contents of the primary accumulator (Primary + Field). Loads the contents of the field into the primary accumulator (Primary = Field). Loads the contents of the primary accumulator into the field (Field = Primary). Note: The field must be a numeric field to display the accumulator value.
Zero primary Multiply with primary Divide by primary Divide primary by field Modulo with primary
Sets the value of the primary accumulator to zero (Primary = 0). Multiplies the field with the contents of the primary accumulator, and stores the result in the primary accumulator (Primary = Primary * Field). Divides the field with the contents of the primary accumulator, and stores the result in the primary accumulator (Primary = Field / Primary). Divides the contents of the primary accumulator with the field, and stores the result in the primary accumulator (Primary = Primary / Field). Divides the contents of the field with the contents of the primary accumulator, and stores the remainder of that operation in the primary accumulator (Primary = Primary % Field). Divides the contents of the primary accumulator with the contents of the field, and stores the remainder of that operation in the primary accumulator (Primary = Field % Primary). Makes the contents of the primary accumulator negative (Primary = Primary * -1). The only way to subtract the primary accumulator from the field is to negate the primary accumulator and then use the sum in primary operation to add the negative primary accumulator to the field. Copies the contents of the primary accumulator to the Alternate Accum field. This overwrites the current contents of the Alternate Accum field (Alternate = Primary). Adds the contents of the primary accumulator to the contents of the Alternate Accum field, and stores the result in the primary accumulator (Primary = Primary + Alternate). Multiplies the contents of the primary accumulator with the contents of the Alternate Accum field, and stores the result in the primary accumulator (Primary = Primary * Alternate). Divides the contents of the primary accumulator with the contents of the Alternate Accum field, and stores the result in the primary accumulator (Primary = Primary / Alternate). Divides the contents of the primary accumulator with the contents of the Alternate Accum field, and stores the remainder of that operation in the primary accumulator (Primary = Primary % Alternate).
Negate primary
Move primary to alternate Add primary to alternate Multiply primary by alternate Divide primary by alternate Modulo primary with alternate
165
166
15. From the Primary Accumulator list, select 0. This accumulator currently contains the total number of line items. 16. From the First list, select Use primary. Use primary specifies that the current value of the accumulator is loaded into the Number of Line Items Total field. 17. In the Edit Accumulator dialog box, click OK to add the accumulator. 18. In the Field Properties dialog box, click OK to add the standard rule to the Number of Line Items Total field. The Number of Line Items Total field now contains the total number of line items in the purchase order.
167
13. Click New. The Edit Accumulator Entry dialog box opens to create a new calculation for this field. 14. From the Primary Accumulator list, select 1. This accumulator currently contains the total quantity. 15. From the First list, select Use primary. Use primary specifies that the current value of the accumulator is loaded into the Hash Total field. 16. In the Edit Accumulator dialog box, click OK to add the accumulator. 17. In the Field Properties dialog box, click OK to add the standard rule to the Hash Total field. The Hash Total field now contains the total quantity of the purchase order.
168
10. Double-click the field that contains the unit price for each line item. The Field Properties dialog box opens. 11. Click the Standard Rule tab to access the standard rule options. 12. From the standard rule list, select Use Accumulator. 13. Click New. The Edit Accumulator Entry dialog box opens to create a new calculation for this field. 14. From the Primary Accumulator list, select 2. 15. From the First list, select Multiply with primary. Multiply with primary specifies that the value of the Unit Price field is multiplied by the contents of the primary accumulator, and the result is stored in the primary accumulator for each iteration of the current group. 16. In the Edit Accumulator dialog box, click OK to add the accumulator. 17. In the Field Properties dialog box, click OK to add the standard rule to the Unit Price field.
Tip: If there is an extended price field in your file, you could load the total from the extended price calculation into that field. To do this, you must use an accumulator on the extended price field that specifies Use primary for accumulator 2.
169
7. In the Edit Accumulator dialog box, click OK to add the accumulator. 8. In the Field Properties dialog box, click OK to add the standard rule to the Unit Price field.
170
Code lists differ from the trading partner code lists used by the Select standard rule in that code lists are generally static and stored within the map file. If you need to attach a generic code list to a Application map, you have two options: Add the code list to the map, using the instructions in Defining or Modifying a Code List on page 171. Create a trading partner code list but do not specify the sender identity and receiver identity. Because the code list is generic, this ensures that it is global, as it applies to all partners. For more information, see: Standard Rule Tab: Use Code on page 171 Defining or Modifying a Code List on page 171 Deleting a Code List or Code List Entry on page 172 Importing a Code List on page 172 Exporting a Code List on page 173 Copying and Pasting Code Lists on page 173 Validating Data Against Code Lists on page 174 Mapping Code List Entry Descriptions on page 174
171
1. From the Map Editor Edit menu, select Code Lists. 2. In the Code Lists dialog box, do you want to create a new code list? If Yes, click New. If No (you want to edit a code list), select a code list and click Change. The Edit Code List dialog box opens. 3. In the Table ID box, type the name of the field for which this code list is used. 4. In the Description box, type the description of the field for which this code list is used. 5. Do you want to create a new code list entry? If Yes, click New and continue with step 6. If No (you want to edit a code list entry), select a code list entry and click Change and continue with step 6. The Edit Code List Entry dialog box opens. 6. In the Value box, type the value of the code list entry. 7. In the Description box, type a description of the code value. 8. Click OK to save the code list entry. 9. Repeat steps 5 - 8 to add more code list entries to the code list.
To delete a code list: 1. From the Map Editor Edit menu, select Code Lists. 2. In the Code Lists dialog box, select the code list you want to delete. 3. Click Delete to delete the code list. To delete a code list entry: 1. From the Map Editor Edit menu, select Code Lists. 2. In the Code Lists dialog box, select the code list from which you want to delete a code list entry and click Change. 3. In the Edit Code List Entry dialog box, select the code list entry and click Delete. 4. Click OK to save the code list.
172
1. From the Map Editor Edit menu, select Code Lists. 2. In the Code Lists dialog box, click Import. 3. In the Open dialog box, select the location of the code list. The default location is the Map Editor installation folder (the default location is Program Files\Sterling Commerce\Map Editor\Source Maps). The default file name extension for a code list is .cde. 4. Select the code list from the list and click Open.
173
174
Document Envelope Application selects the specified TRADACOMS envelope value definitions and assigns them to fields in the map. Trading Partner Code List by Receiver Code Application selects the receiver code in the trading partner code list specified in the Please enter the name of the code list to use box. Trading Partner Code List by Sender Code Application selects the sender code in the trading partner code list specified in the Please enter the name of the code list to use box. Process Data Application selects data from process data as specified in an XPath expression in the Please enter the XPath to evaluate box. Synonym Table by In Value Application selects the data from the field on which the standard rule operates and queries the synonym table. If the data from the field matches data in the selected synonym table column, the translator returns that entire row from the synonym table. This rule is not supported in Applicationthis function enables easier migration of maps from Gentran:Server for UNIX to Application by enabling you to view the rule in your maps. Synonym Table by Out Value Application selects the data from the field on which the standard rule operates and queries the synonym table. If the data from the field matches data in the selected synonym table column, the translator returns that entire row from the synonym table. This rule is not supported in Applicationthis function enables easier migration of maps from Gentran:Server for UNIX to Application by enabling you to view the rule in your maps. Transaction Register Application invokes the check against the specified data (held in memory in Field1 through Field 6) to determine if the data is duplicate. For more information, see: Document Envelope (Select Standard Rule) on page 175 Trading Partner Code List (Select Standard Rule) on page 176 Process Data (Select Standard Rule) on page 177 Synonym Table by In Value (Select Standard Rule) on page 178 Synonym Table by Out Value (Select Standard Rule) on page 179 Transaction Register (Select Standard Rule) on page 180 Mapping Trading Partner Code List Items on page 181 Unmapping Trading Partner Code List Items on page 182 Cross-Referencing with the Gentran:Server for UNIX Synonym Table on page 182 Checking for Duplicate Data on page 182 Changing the Transaction Register Table Purge Control on page 183
175
When the document envelope function is used, fields such as SenderID, ReceiverID, ControlNumber, and MessageType are extracted from the envelope definition. These values are then assigned to fields in the map and used to build the envelope segments according to the specified TRADACOMS enveloping map in the envelope definition. The following table describes the fields on the Standard Rule tab with the Select standard rule selected and Document Envelope selected from the Table and key (or group) list:
Field Table and key (or group) Parameter Raise compliance error Map from Description Document Envelope. Application selects the specified TRADACOMS envelope value definitions and assigns them to fields in the map. Type (exactly) the name of the parameter to select from the TRADACOMS document envelope. For compliance reasons, the field must contain one of the values from the document envelope (nothing else is valid for the field for which this standard rule is located). The value from the specified document envelope from which you want to map the contents. Note: Items are displayed in the map-from list only after you make a selection from the table and key list. Map to The field to which you want to map the document envelope value. Note: If you are working in the input side of the map, you can access all the fields in the current group. If you are working in the output side, you can access all the fields in the current record. A total of eight fields can be mapped using one Select standard rule. Entries are displayed in the map-to list after you select a table and key. These entries are activated after you select an entry in the map-from box.
176
The following table describes the fields on the Standard Rule tab with the Select standard rule selected and Trading Partner Code (List by Receiver Code or List by Sender Code) selected from the Table and key (or group) list:
Field Table and key (or group) Description Trading Partner Code List (by Receiver Code or by Sender Code). The table and key from which Application selects data. Valid values are: Trading Partner Code List by Receiver Code Application selects the receiver code in the trading partner code list specified in the following field. Trading Partner Code List by Sender Code Application selects the sender code in the trading partner code list specified in the following field. Code List Type (exactly) the name of the trading partner code list to use (the name of the one you created in the Application interface). For compliance reasons, the field must contain one of the codes from the specified trading partner code list (nothing else is valid for that field). For example, if a field is defined as containing only YES or NO, you can create a trading partner code list that contains only YES and NO. Then if you receive a MAYBE in that field, Application flags it as an error. Map from The code list entry from the specified code list from which you want to map the contents. Note: Items are displayed in the map-from list only after you make a selection from the table and key list. Map to The field to which you want to map the trading partner code list entries. Note: If you are working in the input side of the map, you can access all the fields in the current group. If you are working in the output side, you can access all the fields in the current record. A total of eight fields can be mapped using one Select standard rule. Entries are displayed in the map-to list after you select a table and key. These entries are activated after you select an entry in the map-from box.
177
The following table describes the fields on the Standard Rule tab with the Select standard rule selected and Process Data selected from the Table and key (or group) list:
Field Table and key (or group) Please enter the XPath to evaluate Description Process Data. Application selects data from process data as specified in an XPath expression in the following field. Type an XPath expression that identifies where in process data to access the data. Note: To access a field named trackingIdentifier found in ProcessData, the XPath would look like the following: trackingIdentifier/text() Raise compliance error Map from For compliance reasons, the field must contain one of the codes from process data (nothing else is valid for that field). The code list entry from the specified process data from which you want to map the contents. Note: Items are displayed in the map-from list only after you make a selection from the table and key list. Map to The field to which you want to map the data in process data. Note: If you are working in the input side of the map, you can access all the fields in the current group. If you are working in the output side, you can access all the fields in the current record. A total of eight fields can be mapped using one Select standard rule. Entries are displayed in the map-to list after you select a table and key. These entries are activated after you select an entry in the map-from box.
178
The following table describes the fields on the Standard Rule tab with the Select standard rule selected and Synonym Table by In Value selected from the Table and key (or group) list:
Field Table and key (or group) Description Synonym Table by In Value. Application selects the data from the field on which the standard rule operates and queries the synonym table. If the data from the field matches data in the selected synonym table column, the translator returns that entire row from the synonym table. The name of the table to query. For compliance reasons, the field must contain one of the values from the selected synonym table column (nothing else is valid for the field for which this standard rule is located). The table column for which you want to query (In or Out) or the table name (Name). Note: Items are displayed in the map-from list only after you make a selection from the table and key list. Map to The field to which you want to map the synonym table row that contains data that matches the data in the current map component (the map component on which the standard rule operates). Note: If you are working in the input side of the map, you can access all the fields in the current group. If you are working in the output side, you can access all the fields in the current record. A total of eight fields can be mapped using one Select standard rule. Entries are displayed in the map-to list after you select a table and key. These entries are activated after you select an entry in the map-from box.
179
The following table describes the fields on the Standard Rule tab with the Select standard rule selected and Synonym Table by Out Value selected from the Table and key (or group) list:
Field Table and key (or group) Description Synonym Table by Out Value. Application selects the data from the field on which the standard rule operates and queries the synonym table. If the data from the field matches data in the selected synonym table column, the translator returns that entire row from the synonym table. The name of the table to query. For compliance reasons, the field must contain one of the values from the selected synonym table column (nothing else is valid for the field for which this standard rule is located). The table column for which you want to query (In or Out) or the table name (Name). Note: Items are displayed in the map-from list only after you make a selection from the table and key list. Map to The field to which you want to map the synonym table row that contains data that matches the data in the current map component (the map component on which the standard rule operates). Note: If you are working in the input side of the map, you can access all the fields in the current group. If you are working in the output side, you can access all the fields in the current record. A total of eight fields can be mapped using one Select standard rule. Entries are displayed in the map-to list after you select a table and key. These entries are activated after you select an entry in the map-from box.
Then, using the Select standard rule Transaction Register function, you can invoke the check against the Transaction Register database table. If the data is validated as duplicate data, the translator notes the error in the translator report.
180
If there is no matching data already in the Transaction Register table, the content of Field1 through Field 6 is inserted as a row in the table.
Note: If the document translation does not succeed, the field information (for which you have specified the translator should verify whether it is duplicate) is not added to the Transaction Register database table.
The following table describes the fields on the Standard Rule tab with the Select standard rule selected and Transaction Register selected from the Table and key (or group) list:
Field Table and key (or group) Description Transaction Register. Application invokes the check against the specified data (held in memory in Field1 through Field 6) to determine if the data is duplicate. This value is not used for the Transaction Register function. This value is not used for the Transaction Register function. This value is not used for the Transaction Register function.
181
2. In the sub-table name box, type the exact name of the synonym table. 3. In the list on the lower left, select the column you want to query (select Out if you are using Synonym Table by In Value, select In if you are using Synonym Table by Out Value, or select Name if you want to return the database table name). 4. Click a field in the list on the lower right into which the row containing the matched data will be returned. 5. Repeat as necessary and click OK to add the standard rule.
3. Click OK to add the standard rule. 4. Repeat steps 1 through 3 to add as many Update standard rules as necessary. 5. Following the sequence of Update standard rules, select a map component and choose Select is as the standard rule.
182
6. Select Transaction Register is selected for the table and key to use.
Note: If the translator finds that the map component (for which the Update standard rule is in operation) contains data that is the same as that for which the matching Select standard rule is operating, it adds an error to the translator report noting the duplicate data.
4. After you complete the edit, execute <install_dir>/bin/setupfiles.sh and then stop and restart Application to verify the changes take effect.
Caution: If you edit the customer_overrides.properties.in file and setupfiles.sh / .cmd is subsequently executed for any reason, the changes you made will be lost. This is true for every properties file that has an .in version.
183
Transaction XREF
The first step in using the Document Extraction service is creating a translation map to define how a single document looks and where the translator will find the Sender ID, Application Sender ID, Receiver ID, Application Receiver ID, and Accepter Lookup Alias values. Defining how a document looks is defining where a document starts and ends, or where the next document begins; you define how a document looks with readblock and writeblock extended rules. See readblock on page 238 and writeblock on page 252 for more information about these extended rules. Then, if you are using an EDI or Positional map format, you can use the Update standard rule Document Extraction function to set the Sender ID, Application Sender ID, Receiver ID, Application Receiver ID, Accepter Lookup Alias, Receiver ID Qualifier (which supports qualifier lookups for EDI), and Sender ID Qualifier (which also supports qualifier lookups for EDI) values for each document. The Update standard rule updates the Document Extraction table with this information. You can also use the Document Extraction function to set the EDI Standard value (expected values are X12, EDIFACT, TRADACOMS, and CII). The following table describes the fields on the Standard Rule tab with the Update standard rule selected and Document Extraction selected from the Table (or group) list:
Field Table (or group) Description Specifies the Document Extraction function.
184
Description Column (or field) that Application updates with the contents of the current field. Valid values are SenderID, ReceiverID, AccepterLookupAlias, EDIStandard, ReceiverIdQualifier, SenderIdQualifier, AppSenderID, and AppReceiverID. Note: The AccepterLookupAlias value will not permit these special characters in the field: ! @ # % ^ * ( ) + ? , < > { } [ ] | ; " '
185
The following table describes the fields on the Standard Rule tab with the Update standard rule selected and Correlation Data selected from the Table (or group) list:
Field Table (or group) correlation parameter name Column (or field) Description Specifies the Correlation Data function. The unique name of the correlation name-value pair. Correlation Value.
Then, using the Select standard rule Transaction Register function, you can invoke the check against the Transaction Register database table. If the data is validated as duplicate data, the translator notes the error in the translator report. If there is no matching data already in the Transaction Register table, the content of Field1 through Field6 is inserted as a row in the table.
Note: If the document translation does not succeed, the field information (specified for duplicate verification) is not added to the Transaction Register database table.
The following table describes the fields on the Standard Rule tab with the Update standard rule selected and Transaction Register selected from the Table and key (or group) list:
Field Table (or group) Description Transaction Register. Application updates the selected field repository with the data from a specified field (in the Column (or field) list) so that other fields may be later validated against that data to prevent duplicate items. Column (or field) the translator will update with the information from the current map component. Valid values are Field1 through Field 6.
186
The following table describes the fields on the Standard Rule tab with the Update standard rule selected and Transaction XREF selected from the Table and key (or group) list:
Field Table (or group) Description Transaction XREF. Application cross-references the selected application data with the data from a specified transaction (in the Column (or field) list). Column (or field) the translator will update with the information from the current map component. Valid values are SenderID, ReceiverID, MessageType, Identifier.
187
188
27. From the column (or field) to update list, select EDIStandard. 28. Click OK to save the update rule.
3. Click OK to add the standard rule. 4. Repeat steps 1 through 3 to add as many Update standard rules as necessary. 5. Following the sequence of Update standard rules, select a map component and choose Select as the standard rule.
189
6. Select Transaction Register is selected for the table and key to use.
Note: If the translator finds that the map component (for which the Update standard rule is in operation) contains data that is the same as that for which the matching Select standard rule is operating, it adds an error to the translator report noting the duplicate data.
190
Chapter 9
You can use extended rules to define more complex translations than are available through the link function (simple mapping) and standard rules. You can use extended rules to define operations that are not possible using standard rules. This section covers the following topics: About Extended Rules About Extended Rule Processing Defining Extended Rules Extended Rule Keywords and Commands Common Statements and Examples Alphabetical Language Reference Select and Update Available Options
An extended rule consists of a declarations section followed by a statements section. The declarations section is required only if you use additional variables. The declarations section is where you declare the names and types of any variables you use either in the extended rule The statements section is where you define the actions that you want the extended rule to run. You must declare any variables that are not already defined as part of the input or output specification of the map before you use those variables in an extended rule. For more information, see:
191
Declarations Section
Variables consist of a name and a data type. Variable names can include alphanumeric characters and the colon (:) and underscore (_) characters. The first character in a variable name cannot be numeric. All variable names are case-sensitive.
Note: A declaration must be terminated with a semicolon (;). To improve readability, you typically include a blank line between the declaration and statements sections. The translator does not initialize any variables. After you declare a variable, initialize it to prevent unexpected mapping results.
192
Declare s as a 20-character string and initialize s string[20] s; s = ; Declare a as an array of 10 integers and initialize each occurrence integer x; x = 0; while x < 11 do a[x] = 0; Declare p as an array of 50 10-character strings and initialize each occurrence string[10] p[50]; integer x; x = 0; while x < 50 do p[x] = ;
Statements Section
The statements section defines the actual work performed by an extended rule. The section consists of a statement or a combination of statements (to perform more complex operations). A statement is a single operation that combines expressions, keywords, commands, operators, and symbols.
Note: A statement must be terminated with a semicolon (;).
An expression is a logical unit (for example, A = B or A + B) evaluated by Application. The statements section contains a sensible combination of expressions, keywords, commands, operators, and symbols. Each of these components is explained in detail in Extended Rule Keywords and Commands on page 198.
193
On Begin extended rules (defined in the Loop Extended Rules tab) apply until the conclusion of companion On End rules (also defined in the Loop Extended Rules tab).
Note: For looping records or groups, On Begin and On End rules process once for each occurrence of the loop, at the beginning and end of each loop respectively.
Field-level extended rules apply only for the duration of the field. An extended rule attached to the current map component depends on the type and state of the map component. For example, if a current group to which the rule is attached is subordinate to another group, the parent group is automatically in scope for the duration of the child group, and the current hierarchical structure is also in scope for the duration of the child by using an addressing method. For more information about syntax and addressing methods, see Symbol Syntax on page 201. An extended rule that is attached to a field applies only for the duration of the field. Field-level extended rules are always processed after standard rules. A variable is considered to be in scope if it was declared in the current rule, in the On Begin rule of a group that contains the current map component, or in the pre-session rule. The translator creates the data storage area for a map according to the structure of the input side (the source side) of the map. The data storage area (Internal Storage) is created in memory on the system performing the translation. Therefore, extended rules address the map according to the hierarchy of the input side. When you use extended rules, you must be careful to address the input side of the map so the translator can locate the map component that the rule accesses. On the output side of a map, extended rules can access only the current record and the input side of the map. However, from the input side of a map, extended rules can access the entire file structure. As long as you address the input side of a link, you can write to any field on the output side. For more information, see: Input Rule Processing on page 194 Output Rule Processing on page 195 Overview of Rule Processing on page 196
The translator processes rules on the input side of a map in the following sequence: 1. In the Map Editor, load the input definition. 2. Read the input file. 3. Determine whether data is present for the first/next group and then run the On Begin rule, if present. If data is not present, continue with the next group in the map hierarchy.
194 Map Editor Guide
4. Load each field in the group and run field-level rules in the following sequence: Run standard rules. Run extended rules. 5. At the end of the group, run the On End rule, if present. 6. Repeat steps 2 - 5 for each group in the input file.
195
196
4. Click Compile to compile the extended rule. Any warnings or errors are displayed in the Errors list.
Note: Double-click an error to instantly navigate to the line containing the error.
The Compile function gives you immediate feedback about the accuracy of your rule. The rule is compiled when you compile the entire map. 5. Correct any errors that were flagged and click Compile again. Repeat this process until no errors are generated. 6. Click OK to add the extended rule.
197
If Yes, select the On Begin option. If No (you want the rule to be run when that map component is finished processing), select the On End option. The Map Editor processes On End rules at the end of each loop occurrence, not at the end of all loops. You can define both an On Begin and an On End rule for a single map component. 3. Type the extended rule. For more information about rule syntax, see the Alphabetical Language Reference on page 214.
Note: Click Full Screen to enlarge the area available for typing the extended rule.
4. Click Compile to compile the extended rule. Any warnings or errors are displayed in the Errors list.
Note: Double-click an error to instantly navigate to the line containing the error.
The Compile function gives you immediate feedback about the accuracy of your rule. The rule is compiled when you compile the map. 5. Correct any errors that were flagged and click Compile again. Repeat this process until no errors are generated. 6. Click OK to add the extended rule.
Keywords
The Application execution control keywords are:
198
199
Operators
The following table lists the operators and their functions in extended rules:
Operator + * / = > < >= <= != ! Function Addition, concatenation Subtraction Multiplication Division Assignment, equality Greater-than Less-than Greater-than or equal to Less-than or equal to Not equal to Logical not
200
Symbols
Operations are performed on symbols. In Application, you can use the following symbols in extended rules: Variables Constants Map components/Internal storage Arrays Accumulators You can address existing map components and you can create additional instances of map components, as long as the map component is originally defined in internal storage. You can use symbols to create extra line items when one line item field is already defined in internal storage.
Symbol Syntax
You must address each type of symbol using the proper syntax. String Constant To address a string constant, enclose the constant value in quotes:
#fieldname = "HDR";
HDR is the constant value. Addressing or Creating a Field in Internal Storage To address a field or create a field in internal storage, within the scope of the current mapping action, the syntax is #FIELD_NAME:
#field_1 = 2;
201
Addressing or Creating a Repeating Field in Internal Storage To address a repeating field or create a repeating field in internal storage, within the scope of the current mapping action, the syntax is #FIELD_NAME[index]:
#field_1[3] = 2;
2 is a numeric constant value. For more information about using indexes in maps, see Appendix D, Using Indexes in the Map Editor and Translator. For more detailed information about using indexes with XML in the Map Editor, see Using Indexes in Common Mapper.doc from the Sterling Commerce Web site (www.sterlingcommerce.com and then select Customer Support>Support on Demand).
Note: Support on Demand requires a user name and password, so you must register if you have not completed this step already.
Addressing or Creating a Field in a Group To address a field within a group or create a field within a group in internal storage within the scope of the current hierarchy, the syntax is $GROUP.#FIELD_NAME. Addressing or Creating a Repeating Field in a Group To address a repeating field within a group or create a repeating field within a group in internal storage within the scope of the current hierarchy, the syntax is $GROUP.#FIELD_NAME[index]. For more information about using indexes in map, see Appendix D, Using Indexes in the Map Editor and Translator. For more detailed information about using indexes with XML in the Map Editor, see Using Indexes in Common Mapper.doc from the Sterling Commerce Web site (www.sterlingcommerce.com and then select Customer Support>Support on Demand).
Note: Support on Demand requires a user name and password, so you must register if you have not completed this step already.
Addressing or Creating a Group in Internal Storage To fully address a group in the entire internal storage area or create a group in internal storage, the syntax is $LOOP[index1][index2][index3] where the index entries indicate the hierarchical structure of the loop and enable you to address specific instances of a group:
$Group_C[3][2].#Field_2
You are specifying the second instance of Group_C within the third instance of Group_B.
202
Group A
Group B 1 2 3 Group C 1 2
For more information about using indexes in maps, see Appendix D, Using Indexes in the Map Editor and Translator. For more detailed information about using indexes with XML in the Map Editor, see Using Indexes in Common Mapper.doc from the Sterling Commerce Web site (www.sterlingcommerce.com and then select Customer Support > Support on Demand).
Note: Support on Demand requires a user name and password, so you must register if you have not completed this step already.
Addressing or Creating a Repeating Field in Internal Storage Addressing or creating a repeating field in internal storage is similar to how you address or create a group in internal storage; however, for a repeating field, you can specify an instance of the field:
$Group_C[3][2].#Field_2[5]
You are specifying the fifth instance of field two within the second instance of Group_C within the third instance of Group_B.
203
Addressing an Array To address an array (of any type), you address each field of the array individually. For example, if array_1 is an array (of integers) and is declared integer array_1[5], with variables 0 through 4, each field of the array is addressed individually:
array_1[0] array_1[1] array_1[2] array_1[3] array_1[4]
Accessing an Accumulator An accumulator can be accessed in the same manner as variables or internal storage. To assign a value to a specific accumulator (to write data into the accumulator), use the syntax accum(n), where n is the number (not the name) of the accumulator:
accum(2) = 5;
To assign the value of a field to equal a specific accumulator (to read data out of an accumulator), use the syntax accum(n), where n is the number (not the name) of the accumulator:
#field = accum(3)
Accessing Repeating Elements You can access a specific occurrence of a repeating element (for EDI data) and access a specific occurrence of a field within a repeating composite (for EDI data). This is the syntax for accessing a specific occurrence of a repeating field and a field within a repeating composite:
field_name[index_variable] = string; where: integer_variable= integer variable that indicates the specific occurrence of a repeating field or field within a repeating composite.
204
This is an example of accessing a specific occurrence of a repeating field and a field within a repeating composite.
string [32]strMsg; strMsg = "Test"; #f2[1] = strMsg; //access single repeating field #f3[1] = strMsg; //access a field within a repeating composite //The rule assigns a string value to 2 different fields, #f2 and #f3 -- #f2 is //a single repeating field that can loop up to 10 times and #f3 is a field //within a repeating composite where the composite can loop up to //10 times.
expression
keywords operator
symbols
205
Raise Compliance Error Function (cerror) Number of Errors Function (numerrors) Remove Field Value Function (empty) Existence of Data Function (exist) Count Function (count) Delete Function (delete) Data Block Functions (readblock, unreadblock, writeblock)
Assignment
The assignment statement is the most powerful and most often used extended rule statement. In its simplest form, it has the following syntax:
variable=expression
However, you can use this statement in more flexible and complex ways:
numeric_variable=numeric_expression numeric_field=numeric_expression string_variable=string_expression string_field=string_expression datetime_variable=datetime_expression datetime_field=datetime_expression
Numeric Expression
A numeric expression can consist of numbers, numeric fields, numeric variables, and numeric functions combined with the standard arithmetic operators.
String Expression
A string expression can consist of string constants, string fields, string variables, and string functions concatenated with the plus sign (+).
Datetime Expression
A datetime expression can consist of a datetime constant, datetime field, or datetime variable.
Examples
Here are some examples of assignment expressions:
a = 5; a = b + c;
s = "hello"; s = s + "world";
206
Datetime Expressions
Datetime expressions consist of a datetime variable and (optionally) datetime modifiers. If you are using the standard syntax, you can use datetime constants to write datetime expressions: Year/month/day Hour:minute:second Year/month/day/hour:minute:second You can also write datetime expressions using datetime fields, variables, or date and time functions.
Date Syntax
Date functions have the following syntax (month specified as 1 - 12):
datetime d; d = date(1995,4,6); d = date(1995,4,6,12,0); d = date("%y/%m/%d", "95/4/6");
The d = date("%y/%m/%d", "95/4/6"); format enables you to convert any string type into a datetime type by indicating a format mask ("%y/%m/%d") along with the string ("95/4/6") you want to convert. Use this function if you are using nonstandard syntax and must specify the syntax you are using. For more information about date syntax, see date on page 227. For example, if you want to add five days to a date in a field, you must: 1. Verify that you are using a standard rule that loads the current date into a field. For more information about loading a date into a field, see Using the System Variable Standard Rule on page 159. 2. Use the following extended rule logic to add five days to the date in that field:
#TheField = #TheField << days(5); //The field is called #TheField
<< Operator
You can use the << operator to modify your datetime variable by adding time increments. Valid modifiers are: years months weeks days
207
Time Syntax
Time functions have the following syntax:
d = time(12,0); d = time(12,0,59);
You can use the << operator to modify your datetime variable by adding time increments (seconds, minutes, years). For example:
datetime d; d=#Time_Field <<seconds(1); //This adds 1 second to the time field named Time_Field
Conditional Logic
The Map Editor uses conditional logic to test conditions and then, depending on the results of the test, perform various operations. Conditions can be nested to any level. Do not end conditions with a semicolon (;). This terminating syntax is necessary for statements only. Use the IF/THEN keywords to run one or more statements conditionally. The condition is typically a comparison, but it can be any expression that concludes with a numeric value.
208
Application interprets the value as either true or falsea zero value as false, and a nonzero value as true.
Note: If you include more than one statement in the body of an IF/THEN statement, you must surround the statements with the BEGIN/END keywords. If you use only a single statement, you can omit BEGIN and END.
The Map Editor evaluates the IF/THEN condition and, if it is true, runs all the statements that follow the THEN keyword. If the condition is false, it does not run any of the statements following THEN. Use the ELSE keyword with IF/THEN to define several blocks of statements, one of which is run. The Map Editor tests the first IF/THEN condition. If the condition is false, The Map Editor proceeds to test each sequential condition until it finds one that is true. The Map Editor runs the corresponding block of statements for the true condition. If none of the IF/THEN conditions are true, The Map Editor runs the statements following the ELSE keyword. For more information about using the if, then, and else functions, see if...then...else on page 232. Use this syntax:
IF condition THEN BEGIN statement1; statement2; END ELSE BEGIN statement3; statement4; END
You can also use the following string functions: left right mid strdate concat strstr trim
209
trimleft trimright
strdate
The strdate function converts a datetime type into a string using a format that you specify. This function enables you to include static characters such as a slash (/), which gives you access to full date support. For more information about the strdate function, see strdate on page 243. Use this syntax:
datetime d; string[8] s; strdate(d,"%y/%m/%d",s);
concat
The concat function concatenates a specified number of characters from one string onto the end of another string. For more information about the concat function, see concat on page 225. In the following example, five characters from string s2 are concatenated onto the end of string s1:
string[10] s1,s2; concat(s1,s2,5);
210
strstr
The strstr function finds a substring inside a string. This function returns the position of the first instance of the designated substring. If this function does not find the specified substring inside the string, it returns a value of -1. For more information about the strstr function, see strstr on page 245. Use this syntax:
integer d; d = strstr("hello", "el");
Numeric Functions
Application provides the following numeric functions, which enable you to convert one data type to another. len atoi aton ntoa
211
len
The len function counts and returns the number of characters in a string. For more information about the len function, see len on page 234. Here is an example of the syntax:
integer a; a = len("hello");
212
The following example returns the total iterations of the GROUPNAME group within the third iteration of the parent group:
count(GROUPNAME[3][*]);
213
This section uses the following programming guidelines: Keywords and commands are shown in all lowercase letters. Map components are shown in all uppercase letters.
214
Two slashes (//) introduce comments. This topic covers the following information: accum atoi aton begin break cerror collate concat continue count date delete empty end eof exist get if...then...else index left len messagebox mid ntoa numerrors occurrencetotal readblock resetoccurrencetotal right select set sort strdate strstr sum sumtotal trim trimleft trimright unreadblock update while...do writeblock
accum
The accum function is a numeric function that uses extended rule logic to reference an accumulator variable established in the accumulator standard rule.
215
Syntax
Use this syntax:
#numericfield = accum(number); where: numericfield = numeric field, the accum function references the accumulator, specified by its number
accum(accumulator_number) = numeric_value; where: the accumulator specified by accumulator_number is initialized with the numeric value given.
Examples
Examples of this function follow:
real c; c = accum(1); // c contains the value of accumulator one (1).
atoi
The atoi function is a numeric function that converts strings into integers. The numeric functions enable you to convert one data type to another.
Syntax
Use this syntax:
int = atoi(string); where: int = integer variable string = string variable
Example
An example of this function follows:
integer a; string[20] s; s = "5"; a = atoi(s); // "a" contains the value 5
216
aton
The aton function is a numeric function that converts strings into real numbers. The numeric functions enable you to convert one data type to another.
Syntax
Use this syntax:
real = aton(string); where: real = real number variable string = string variable
Example
An example of this function follows:
real b; string[20] s; s = "5.5"; b = aton(s); // "b" contains the value 5.5
begin
The begin function encloses a group of statements that form the body of an if/then/else statement or a while loop. You can use the if/then/else keywords to run one or more statements conditionally. If you include more than one statement in the body of an if/then statement, you must surround the statements with the begin/end keywords. If you use only a single statement, you can omit the begin and end.
Note: Do not end conditions with a semicolon (;). This terminating syntax is necessary for statements only.
Syntax
Use this syntax:
if condition then begin statement1; statement2; end
217
break
The break function terminates the execution of the nearest enclosing while loop, and passes control to the statement that follows the end keyword. This function is generally used in complex loops to terminate a loop before several statements have been run.
Example
An example of this function follows:
integer i; i = 0; while i<10 do begin i = i + 1; if (i = 8) then continue; if (i = 9) then break; end //As long as "i" has a value less than "10" the loop repeats. //If "i" has a value of "8", the loop continues. If "i" has a value //of "9" the loop terminates.
cerror
The cerror function raises a compliance error. You typically specify this function as an action to be performed if a condition is false. This function is valid on the input side of a map only. There is also an optional third parameter you can supplya string which is written to the translator report as part of the entry for the compliance error you are raising.
Syntax
Use this syntax:
cerror(100,$GROUPNAME[0][1][1].#FIELDNAME, "Extra error information can be supplied here");
Example
An example of this function follows:
cerror(100,$GROUPNAME[0][1][1].#FIELDNAME); //This raises compliance error 100 on the FIELDNAME field of the //specified instance of the GROUPNAME group
218
Compliance Codes
The following tables list compliance error codes: general messages first, then SQL, EDI, and XML specific messages. General Messages The following table lists compliance errors for general messages:
Message Number 12 13 14 15 19 20 21 25 100 101 102 110 111 112 113 120 121 122 123 140 142 143 170 171 300 Message Type Information Information Information Information Information Information Information Warning Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Error Message Generated StartTime EndTime BlocksRead BlocksWritten ExecutionTimeMillis TranslationObjectName TranslationIsLightweight BlockDataUnknown MandatoryDataMissing InsufficientRepeats TooManyRepeats IncorrectDataFormat DataNotMinLength DataExceedsMaxLength InvalidDate TooManyComponents TooManyCompositeElements UnsupportedDataType DataConversionError StandardRuleFailure StandardRuleUseCodeDataMissing StandardRuleDataConversionError ExtendedRuleFailure ExtendedRuleDataConversionError MandatoryBlockMissing
219
Message Generated MandatoryGroupMissing MaxUsageExceeded BlockProcessorInitializationFailure FieldProcessorInitializationFailure BlockSignature BlockCount Note: This message will only be written if you create the cerror extended rule at the field level. If you call the cerror extended rule at any other level in your map, it will not be written because it is only applicable at the field level.
10003
Information
BlockName Note: This message will only be written if you create the cerror extended rule at the field level. If you call the cerror extended rule at any other level in your map, it will not be written because it is only applicable at the field level.
10004
Information
FieldName Note: This message will only be written if you create the cerror extended rule at the field level. If you call the cerror extended rule at any other level in your map, it will not be written because it is only applicable at the field level.
10005 10006 10007 10008 10009 10010 10011 10012 10013 10014
Information Information Information Information Information Information Information Information Information Information
FieldData Exception GroupName FieldId FieldNumber Instance RuleType OnBeginRule OnEndRule RepeatCount
220
Message Generated BlockData BlockSignatureIDTag Note: This message will only be written if you create the cerror extended rule at the field level. If you call the cerror extended rule at any other level in your map, it will not be written because it is only applicable at the field level.
10017
Information
MapIterationCount Note: This message will only be written if you create the cerror extended rule at the field level. If you call the cerror extended rule at any other level in your map, it will not be written because it is only applicable at the field level.
10018
Information
AdditionalInformation
SQL Messages The following table lists compliance errors for SQL-specific messages:
Message Number 700 701 702 703 710 711 712 713 721 722 724 725 726 10700 10701 10702 10703 Message Type Error Error Error Error Error Error Error Error Error Error Information Information Information Information Information Information Information Message Generated SQLDataSourceOpenError SQLDataSourceRollback SQLDataSourceCommitError SQLDataSourceRollbackError SQLQueryOpenError SQLCommandError SQLCursorError SQLGetFieldError SQLOutputOperationError SQLPreparedStatementError SQLUpdateEffected0Rows SQLRetryingAsInsert SQLRetryingAsUpdate DataSourceName DataSourcePool QueryName SQLStatement
221
EDI Messages The following table lists compliance errors for EDI-specific messages:
Message Number 103 104 105 106 Message Type Information Information Information Information Message Generated IllegalRepeatingDelimiter IllegalSubElementDelimiter ElementPosition SubElementPosition
XML Messages The following table lists compliance errors for XML-specific messages:
Message Number 610 690 691 692 693 10060 10061 10062 10063 10064 10065 10066 Message Type Error Error Error Error Error Information Information Information Information Information Information Information Message Generated XMLParticleORGroupError XMLParserError XMLElementUnknown XMLPcDataUnknown XMLAttributeUnknown PublicId SystemId LineNumber ColumnNumber Message XMLTagName XMLNamespaceURI
The cerror function can also be used with SWIFTNet FIN to allow it to be called with only a code and description string (instead of code, field reference, option description string). You typically specify this function as an action to be performed if a condition is false. This function is valid on the input side of a map only. There is also an optional third parameter you can supplya string which is written to the translator report as part of the entry for the compliance error you are raising.
222
Syntax 1
cerror(code,$GROUPNAME[0][1][1].#FIELDNAME, "Optional string with error information can be supplied here");
Example 1
An example of this function in this syntax follows:
cerror(100,$GROUPNAME[0][1][1].#FIELDNAME); //This raises compliance error 100 on the FIELDNAME field of the //specified instance of the GROUPNAME group. There is no optional error text //given.
Syntax 2
cerror(code, "String with error information supplied here");
Example 2
An example of this function in this syntax follows:
cerror(100, Number not valid); //This raises compliance error 100 with error text Number not valid in the //translator report.
collate
The collate function is used to construct a hierarchical relationship between two groups that are not currently related hierarchically but which are instead related by foreign key fields. One of the groups is considered the master group and the other is considered the detail group. Instances of the detail group are matched against the master group and moved to a result group which must be a child of the master group. The result group must have an identical field structure to the detail group. The master and detail groups must both be sorted into the same order using the sort function prior to performing the collation. After the collate function is performed, the data in the detail group is no longer available because it has been moved to the result group."
Caution: This is an advanced function which requires understanding of how field data is accessed in translator storage and how indices are used to reference specific instances of groups.
In the command syntax, ordering is either the keyword ASC or DESC to indicate that the groups are sorted in ascending or descending order, respectively. If no ordering is given for
223
a particular field, ascending order is assumed. Any number of fields may be specified, but the number of master and detail fields specified must match.
Note: If the collated data is too large, you may receive an out of memory error.
Syntax
Use this syntax:
collate (MASTERGROUPNAME[iteration], MASTERFIELDNAME ordering, MASTERFIELDNAME ordering, , DETAILGROUPNAME[iteration], DETAILFIELDNAME, DETAILFIELDNAME, , RESULTGROUPNAME))
Example
An example of this function follows:
collate($POHeader, #PONumber, $PODetail, #POHeaderNumber, $PODetailResult);
Detailed Example
In this example, you need to process a flat file that contains information for Stores and Sales. All of the Stores information is listed first in the file, in no particular order, and all of the Sales information follows the Stores information, in no particular order. You need to sort the information and associate the Sales information to the appropriate Store information. The Stores and Sales records contain a common field: Stor_id. Map Layout The input side of the map contains two repeating groups that are children to the input level: Stores_Group and Sales_Group. The Stores_Group group contains a single occurring record for the Stores records in the input file, and the Sales_Group group contains a single occurring record for the Sales records in the input file. The Stores_Group is the Master group and the Sales_Group is the Detail Group when you write the Collate extended rule. Since the Stores_Group is the master group, the result group must be contained within this group. Therefore, the Stores_Group structure contains the single occurring record for the Stores records in the input file and a repeating Result_Group. The Result_Group contains a temporary Sales record that is an exact copy of the Sales_Record in the Sales_Group.
224
Collate Extended Rule To sort and collate the data, place the following rule on the Input On-End Extended Rules:
SORT($Stores_Group,#Stores_Stor_ID ASC); SORT($Sales_Group,#Sales_Stor_ID ASC); COLLATE ($Stores_Group, #Stores_Stor_ID ASC,$Sales_Group, #Sales_Stor_ID ASC,$ Result_Group);
Output File The following is an example of the output file after translation:
STORES7066 Barnum's 567 Pasadena Ave. Tustin CA 927892 SALES7066QA7442.3 1994-09-13 00:00:00 75 ON invoice PS20912 SALES7066A2976 1993-05-24 00:00:00 50 Net 30 PC88882 STORES7896 Fricative Bookshop 89 Madison St. Fremont CA 900192 SALES7896QQ2299 1993-10-28 00:00:00 15 Net 60 BU78322 SALES7896TQ456 1993-12-12 00:00:00 10 Net 60 MC22222 SALES7896X999 1993-02-21 00:00:00 35 ON invoice BU20752 STORES8042 Bookbeat 679 Carson St. Portland OR 890762 SALES8042423LL922 1994-09-14 00:00:00 15 ON invoice MC30212 SALES8042P723 1993-03-11 00:00:00 25 Net 30 BU11112 SALES8042423LL930 1994-09-14 00:00:00 10 ON invoice BU10322 SALES8042QA879.1 1993-05-22 00:00:00 30 Net 30 PC10352
concat
The concat function concatenates a specified number of characters from one string onto the end of another string.
225
Syntax
Use this syntax:
concat(string,string,num_char); where: string = string variable num_char = number of characters from the second string onto the end of the first string
Example
An example of this function follows:
string[10] s1,s2; concat(s1,s2,5); //Concatenate five characters from string "s2" onto the end of string //"s1"
continue
The continue function continues the execution of the innermost loop without processing the statements in the loop that follow the continue statement.
Example
An example of this function follows:
integer i; i = 0; while i<10 do begin i = i + 1; if (i = 8) then continue; if (i = 9) then break; end //As long as "i" has a value less than "10" the loop repeats. //If "i" has a value of "i", the loop continues. If "i" has a value //of "9" the loop terminates.
count
The count function counts and returns the number of iterations of a group.
Note: When a count extended rule is performed on an empty group, the value of -1 is returned from count($GROUPNAME[*]).
226
Example
An example of this function follows:
integer i; i = count($GROUPNAME[*]); //The [*] is a wildcard that counts the number of iterations of the //GROUPNAME group.
date
The date function converts a string type into a datetime type using a format that you specify. This function enables you to include static characters such as a slash (/), which gives you access to full date support.
Syntax
Use this syntax:
Datetime = date("format",string); where: datetime= datetime variable (month specified as 1-12) format = date format string = string variable
Example
An example of this function follows:
datetime d; d = date(1995,4,6); d = date(1995,4,6,12,0); d = date("%y/%m/%d","95/4/6"); d = date("%y/%m/%d",#strdate);
Format Specifiers
This table lists the format specifiers:
Format Specifier %8 Description ISO-8601 date format. Valid format is YYYYMMDDTHHMMSS.sssZ Note This date format cannot be combined with any other format specifier. %a %A Abbreviated weekday name. Full weekday name.
227
Format Specifier %b %B %d %H %I %j %m %M %S %U %w %W %y %Y %%
Description Abbreviated month name. Full month name. Day of the month as a decimal number (01 - 31). Hour in 24-hour format (00 - 23). Hour in 12-hour format (01 - 12). Day of the year as a decimal number (001 - 366). Month as a decimal number (01 - 12). Minute as a decimal number (00 - 59). Second as a decimal number (00 - 59) Week of the year as a decimal number, with Sunday as the first day of the week (00 - 51). Weekday as a decimal number (0 - 6, with Sunday as 0). Week of the year as a decimal number, with Monday as the first day of the week (00 - 51). Year without the century as a decimal number (00 - 99). Year with the century as a decimal number. Percent sign.
delete
The delete function deletes a specified occurrence of a group.
Syntax
Use this syntax:
delete($GROUP_NAME[N]); where [n] is the occurrence of the group that you want to delete.
Example
An example of this function follows:
delete($GROUPNAME[2]); //Deletes the second occurrence of the GROUPNAME group.
228
empty
The empty function sets the value of a field in internal storage to null. This function is not the same as setting the value of a field to a zero-length string (" ") or to zero.
Syntax
Use this syntax:
empty($GROUP_NAME[index][index][index]. #FIELD_NAME)
Example
An example of this function follows:
empty($GROUPNAME[0][1][1].#FIELDNAME); //Set the value of the specified instance of the FIELDNAME field to //null
end
The Map Editor uses conditional logic to test conditions and then, depending on the results of the test, perform different operations. Conditions can be nested to any level. Use begin and end to enclose a group of statements that form the body of an if/then/else statement or a while loop. You can use the if/then keywords to run one or more statements conditionally. If you include more than one statement in the body of an if/then loop, you must surround the statements with the begin/end keywords. If you use only a single statement, you can omit the begin and end.
Note: Do not end conditions with a semicolon (;). This terminating syntax is necessary for statements only.
Syntax
Use this syntax:
if condition then begin statement1; statement2; end
229
eof
The eof function explicitly checks whether the input file has reached the end of file condition. This function enables you to verify whether there is more data in the file. The eof function was implemented because the readblock function returns a zero (0) when the translator reaches the end of the input file and also when it encounters new line characters, and when you use the readblock function there is no way to differentiate between these two conditions. The eof function returns an integer, as defined in the following table:
Integer Returned by eof Function 1 0 Definition
Syntax
Use this syntax:
eof(0); //0 = input file, any other argument value results in a translator exception
Example
An example of this function follows:
integer end_of_input; end_of_input = eof(0); if end_of_input = 1 then MessageBox(end of input reached,0); else MessageBox(more input data,0);
exist
The exist function returns a nonzero (true) value if there is data in a specified field in internal storage. If there is not data in the specified field, this function returns a zero (false) value. This function is typically used as part of a condition.
230
Syntax
Use this syntax:
if exist($GROUP_NAME[index][index][index]. #FIELD_NAME) then
Example
An example of this function follows:
if exist($GROUPNAME[0][1][1].#FIELDNAME) then //Return a non-zero value if the condition is true (data is present in //the specified instance of the FIELDNAME field). A zero value is //returned if the condition is false (no data is present in the //specified instance of the FIELDNAME field).
get
The get function enables you to access individual components of a datetime variable. Valid datetime components are: years months days hours minutes seconds
Syntax
Use this syntax:
integer_variable = get datetime_component (datetime_variable); where: integer_variable = integer variable datetime_component = individual component of the datetime variable datetime_variable = datetime variable of which you want to access a component part
231
Example
An example of this function follows:
integer a; integer b; datetime d; a = get days (d); b = get hours (d); //Accesses the days from the datetime variable "d" and loads into //variable "a". Accesses the hours from the datetime variable "d" and //loads into variable "b".
if...then...else
The if, then, and else keywords enable the use of conditional logic. The Map Editor uses conditional logic to test conditions and then, depending on the results of the test, perform different operations. Conditions can be nested to any level. You can use the if/then keywords to run one or more statements conditionally. The condition is typically a comparison, but it can be any expression that concludes with a numeric value. The Map Editor interprets the value as either true or falsea zero value as false, and a nonzero value as true. The Map Editor evaluates the if/then condition and, if it is true, runs all the statements that follow the then keyword. If the condition is false, none of the statements following then are run. You can use the else keyword with if/then to define several blocks of statements, one of which is run. The Map Editor tests the first if/then condition. If the condition is false, The Map Editor tests each sequential condition until it finds one that is true. The Map Editor runs the corresponding block of statements for the true condition. If none of the if/then conditions are true, The Map Editor runs the statements following the else keyword. The begin function encloses a group of statements that form the body of an if/then/else statement. You can use the if/then/else keywords to run one or more statements conditionally. If you include more than one statement in the body of an if/then statement, you must surround the statements with the begin/end keywords. If you use only a single statement, you can omit the begin and end. For more information about the begin keyword, see begin on page 217. For more information about the end keyword, see end on page 229.
Note: Do not end conditions with a semicolon (;). This terminating syntax is necessary for statements only.
232
Example
An example of this function follows:
if condition then begin statement1; statement2; end else begin statement3; statement4; end
index
The index function enables you to determine which instance of a loop the translator is currently accessing. For more information about using indexes in maps, see Appendix D, Using Indexes in the Map Editor and Translator. For more detailed information about using indexes with XML in the Map Editor, see Using Indexes in Common Mapper.doc from the Sterling Commerce Web site (www.sterlingcommerce.com and then select Customer Support>Support on Demand).
Note: Support on Demand requires a user name and password, so you must register if you have not completed this step already.
Syntax
Use this syntax:
index(integer_variable); where: integer_variable = integer variable that indicates the hierarchical level for which you want to determine the loop count
233
Example
An example of this function follows:
index(1); //This extended rule is located on the ILD group in the following figure. //This determines the current loop count for the first level (ODD) in //the hierarchical structure.
left
The left function extracts a specified number of characters from the left side of a string variable or field and returns the result as a string.
Syntax
Use this syntax:
string_variable = left(string_variable,num_char) where: num_char = integer variable
Example
An example of this function follows:
string [25]name; string [5]temp_variable; name = "Acme Shipping Company" temp_variable = left(name,4); // "temp_variable" would contain "Acme"
len
The len function is a numeric function that counts and returns the number of characters in a string. The numeric functions enable you to convert one data type to another.
234
Syntax
Use this syntax:
number_char = len(string); where: num_char = integer variable
Example
An example of this function follows:
integer a; a = len("hello"); // "a" contains the value 5
messagebox
The messagebox function enables you to display a text message on the console of the application server. You can view the console output in the application server log file (that is, jboss.log, wl.log, and so forth). This function can serve as a troubleshooting tool. The messagebox function can be used on any field in your map.
Syntax
Use this syntax:
messagebox("message",0) where: message = message string messagebox(#fieldname,0); where: fieldname = name of the field in the map, displays a message with the string value
Note: You must include the zero in the syntax (as previously noted) for this function to work properly.
235
Example
An example of this function follows:
//syntax for a field named TribalFrog MessageBox("This is field TribalFrog",0); MessageBox (#TribalFrog,0); //The output text "This is the field TribalFrog" and the contents of the //#Tribal Frog field is displayed on the console //of the application server. You can view the console output in the //application server log file.
mid
The mid function extracts from a specified position in a string, either to the end of the string or for a specified number of characters, and returns the resultant string. This function is zero-based.
Syntax
Use this syntax:
string_variable = mid(string_variable,start_pos,num_char) where: start_pos = integer variable num_char = integer variable
Example
An example of this function follows:
string [25]name; string [10]temp_variable; name = "Acme Shipping Company" temp_variable = mid(name,5,8); //The map will read 8 characters in the string, starting with the character 6. // "temp_variable" will contain "Shipping"
ntoa
The ntoa function is a numeric function that converts real numbers into strings. The numeric functions enable you to convert one data type to another.
236
Syntax
Use this syntax:
ntoa(real,string); where: real = real number variable string = string variable
Example
An example of this function follows:
real b; string[20] s; b = 5.5; ntoa(b, s); // "s" contains "5.5"
numerrors
The numerrors function returns an integer which contains the current count of errors in the translation report (the count at the time the rule is executed). This function does not require any parameters.
Syntax
Use this syntax:
integer error_count; error_count = numerrors();
occurrencetotal
The occurrencetotal function allows an extended rule to check the total occurrences of a particular record thus far in the processing (this is a running total of the number of times the record has occurred at the specific point in time that the occurrencetotal rule is called). This function returns an integer value containing the number of occurrences of the specified record that have been processed.
Note: To reset OccurrenceTotal to zero so you can determine, for example, if a particular block occurred in the current iteration of a group, use the resetoccurrencetotal function. See resetoccurrencetotal on page 240.
237
Syntax
occurrencetotal(%recordname);
Example
An example of this function follows:
If occurrencetotal(%myRec) > 2 then
//This specifies that if the myRec record has occurred (been processed) more //than //twice, then the logic that follows this function will be performed by the //translator.
readblock
The readblock function reads a block of data (segment or record) from the input file and places it into the argument of a string variable.The readblock and writeblock functions are used in conjunction with each other to pass a block of data from the input file to the output file without compliance checking or testing for proper EDI syntax. Together, these functions provide a more efficient alternative of using wildcard segments, which are typically implemented in build and break maps. Readblock, writeblock, and unreadblock are supported only for positional and EDI files.
Note: The readblock function returns a zero (0) if it does not read any data. However, if readblock returns a zero value, you should not assume the translator has reached the end of the file. If the data file has a number of new lines embedded in it, the readblock function returns a zero for each new line. If you want to know for certain when the end of the file is reached, use the eof function.
Syntax
Use this syntax:
readblock(string_variable);
238
Example
An example of this function follows:
while readblock(temp_buffer) do begin if left(tem_buffer,3) = "IEA" then begin unreadblock(); break; end writeblock(temp_buffer); end //Read record from input file and place in temp_buffer. Look for //"IEA" record tag. If found, reset file pointer to where it was //before the "IEA" record was read. Write contents of temp_buffer to //output file.
The readblock and writeblock functions are also used in conjunction with the Document Extraction service, to specify the beginning and end of each document in a batch of documents, so that each document can be extracted individually. For more information about using the corollary Update standard rule to complete the document extraction, see Setting an Update Standard Rule as Part of Document Extraction on page 188.
239
Example
An example of this function follows:
string[250] buffer; string[3] match; integer match_len; integer eofInput; // set these next two variables match = "SUM"; // the tag of the last record in the document match_len = 3; // the length of the tag // read the block we're on and write it readblock(buffer); writeblock(buffer); eofInput = eof(0); // check if we are at the end of the input document // keep reading and writing records until the end of the document while !eofInput do begin if readblock(buffer) then begin writeblock(buffer); if left(buffer, match_len) = match then //write the document, not new lines and continues to process documents begin break; end end eofInput = eof(0); //set the value of eofInput to 0 because the end of file has been reached end
resetoccurrencetotal
The resetoccurrencetotal function allows you to reset OccurrenceTotal to zero so you can determine if a particular block occurred in the current iteration of a group, as opposed to learning how many times the translator has encountered a specified block in the course of processing the data on either the input or output side of a map.
Syntax
resetoccurrencetotal(%recordname);
240
Example
An example of this function follows:
resetoccurrencetotal(%myRec); //This specifies that the Occurrencetotal for the myRec record will be set to //zero.
right
The right function extracts a specified number of characters from the right side of a string variable or field.
Syntax
Use this syntax:
string_variable = right(string_variable,num_char) where: num_char = integer variable
Example
An example of this function follows:
string [25]name; string [10]temp_variable; name = "Acme Shipping Company" temp_variable = right(name,7); // "temp_variable" would contain "Company"
select
The select function enables information to be retrieved from Application. Only the tables and fields available in the Select standard rule are available for the select extended rule. In the command syntax, expression and receiverlist can be a string field, string variable, or string literal. It is important to note that the table and field names for the select extended rule are slightly different than those depicted in the standard rule. For a listing of these table and field names, see Select and Update Available Options on page 254.
Syntax
Use this syntax:
select fieldname into receiverlist from tablename where key = expression [and key = expression];
241
Example
An example of this function follows:
string[50] var; select xpathresult into var from processdata where xpath="example";
set
The set function enables you to define individual components of a datetime variable. Valid datetime components are: years months days hours minutes seconds
Syntax
Use this syntax:
set datetime_component (datetime_variable,integer_variable); where: datetime_component = individual component of the datetime variable datetime_variable = datetime variable of which you want to access a component part integer_variable = integer variable
Example
An example of this function follows:
integer a; integer b; datetime d; set days (d,a); set hours (d,a); //Defines the days of the datetime variable "d" from variable "a". //Defines the hours of the datetime variable "d" from variable "b".
242
sort
The sort function is used to sort the instances of a group in the translators internal storage by the values of one or more fields in the group.
Caution: This is an advanced function which requires understanding of how field data is accessed in translator storage and how indices are used to reference specific instances of groups.
In the command syntax, ordering is either the keyword ASC or DESC to indicate ascending or descending order, respectively. If no ordering is given for a particular field, ascending order is used. Any number of fields may be specified.
Note: If the sorted data is too large, you may receive an out of memory error.
Syntax
Use this syntax:
sort (GROUPNAME[iteration], FIELDNAME ordering, FIELDNAME ordering, )
Example
An example of this function follows:
sort($POHeader, #PONumber); sort($PODetail, #POHeaderNumber);
strdate
The strdate function converts a datetime type into a string using a format that you specify. This function enables you to include static characters such as a slash (/), which gives you access to full date support.
Syntax
Use this syntax:
strdate(datetime,"format",string); where: datetime datetime variable (month specified as 1-12) format date format string string variable
243
Example
An example of this function follows:
datetime d; string[8] s; strdate(d,"%y/%m/%d",s); //Converts a datetime variable into an eight character string in the //format "year/month/day".
Format Specifiers
The following table describes the format specifiers:
Format Specifier %a %A %b %B %d %H %I %j %m %M %S %U %w %W %y %Y %% Description Abbreviated weekday name. Full weekday name. Abbreviated month name. Full month name. Day of the month as a decimal number (01 - 31). Hour in 24-hour format (00 - 23). Hour in 12-hour format (01 - 12). Day of the year as a decimal number (001 - 366). Month as a decimal number (01 - 12). Minute as a decimal number (00 - 59). Second as a decimal number (00 - 59). Week of the year as a decimal number, with Sunday as the first day of the week (00 - 51). Weekday as a decimal number (0 - 6, with Sunday as 0). Week of the year as a decimal number, with Monday as the first day of the week (00 - 51). Year without the century as a decimal number (00 - 99). Year with the century as a decimal number. Percent sign.
244
strstr
The strstr function finds a substring inside a string. This function returns the position of the first instance of the specified substring within the specified string. If strstr does not find the specified substring in the string, it returns a value of -1. This function is zero-based.
Syntax
Use this syntax:
integer = strstr("string","substring"); where: integer = integer variable string = string substring = part of the string
Example 1
An example of this function follows:
integer d; d = strstr("mississippi","is"); //Finds the first instance of the substring "is" inside the string //"mississippi" and returns the position of that first substring. // d = 1 because this function is zero-based
Example 2
An example of this function that enables a purchase order number to be processed differently depending on its format (for example, if the third position of the purchase order number is numeric do X, and otherwise do Y) follows:
integer position; string [1] PONumChar2; PONumChar2=mid(#PONumber, 2, 1); position=strstr("0123456789", PONumChar2); //This function finds a substring within the string, so if the second //position of purchase order number not equal to -1 then it is numeric and X //should be executed, otherwise the second position is not numeric and Y //should be executed.
sum
The sum function is used (along with the sumtotal function) to maintain and validate the sum of a specified numeric field. This function is called with no parameters in the extended rule of the field for which you need to keep a running sum. Optionally, you can add a string parameterthe first character in the string indicates whether the value of the field is treated as a negative number before it is added to the running sum of the field. If the first character
245
of the string begins with N or n, the value from the field is treated as a negative and added to the sumtotal.
Syntax 1
sum();
Example 1
An example of this function follows:
sum(); //This maintains a running sum for the field on which the extended rule is //called.
Syntax 2
sum(nString);
Example 2
An example of this function follows:
sum(n); //This adds the value of the field as a negative number to the sumtotal to //maintains a running sum for the field on which the extended rule is called.
sumtotal
The sumtotal function is used (along with the sum function) to maintain and validate the sum of a specified numeric field. This function returns a real numeric value and is used to obtain the current sum of a specified field wherever the value is needed. For example, if want to verify the sum of a specific field (debitAmount), add the sum function to the extended rule of this field. Then, to access this running sum in a later field (debitTotal), use the sumtotal function on the debitTotal field.
Syntax
sumtotal(#fieldname);
246
Example
An example of this function follows:
sumtotal(debitTotal); //This returns the current sum of the field debitAmount (on which the sum //function was used, and returns the current sum of that field into the //debitTotal field.
trim
The trim function enables you to remove white space from both sides of a string by default. You can also specify a character for the trim function to remove before and after a string. If you want to remove a character, specify the character in the appropriate case (upper- or lowercase).
Syntax
Use this syntax:
string = trim(string_to_trim) or string = trim(string_to_trim, character_to_trim) where: string = string field that contains the end result string_to_trim = string field containing the value to be trimmed character_to_trim = character to trim from string (no empty spaces)
Examples
Use the following syntax to remove white space from both sides of the string:
string[25] s; s = " my String "; $Groupname[1].#Value = trim(s); //$Groupname[1].#Value now contains the value "my String"
247
Alternatively, you can also use the following syntax to remove a leading or trailing character:
string [25] s1; string [25] s2; s1 = "z"; s1 = "zzzStringzzz"; $Groupname[1].#Value = trim(s1,s2); //$Groupname[1].#Value now contains the value "String"
trimleft
The trimleft function enables you to remove white space from the left side of a string by default. You can also specify a character for the trimleft function to remove from the left side of a string. If you want to remove a character, specify the character in the appropriate case (upper- or lowercase).
Syntax
Use this syntax:
string = trimleft(string_to_trim) or string = trimleft(string_to_trim, character_to_trim) where: string = string field that contains the end result string_to_trim = string field containing the value to be trimmed character_to_trim = character to trim from string (no empty spaces)
Examples
Use the following syntax to remove white space from the left side of the string:
string [25] s; s = " my String "; $Groupname[1].#Value = trimleft(s); //$Groupname[1].#Value now contains the value "my String "
248
trimright
The trimright function enables you to remove white space from the right side of a string by default. You can also specify a character for the trimright function to remove from the right side of a string. If you want to remove a character, specify the character in the appropriate case (upper- or lowercase).
Syntax
Use this syntax:
string = trimright(string_to_trim) or string = trimright(string_to_trim, character_to_trim) where: string = string field that contains the end result string_to_trim = string field containing the value to be trimmed character_to_trim = character to trim from string (no empty spaces)
Examples
Use the following syntax to remove white space from the right of the string:
string [25] s; s = " my String "; $Groupname[1].#Value = trimright(s); //$Groupname[1].#Value now contains the value " my String"
249
unreadblock
The unreadblock function provides a method of moving the input file-pointer back one block (a block of data is equivalent to one EDI segment or one positional record). This function unreads the block of data that was just processed by the readblock function.
Note: The unreadblock function works only once and only for the most recent readblock. If you use unreadblock more than once, you will not be able to point to any earlier readblocks. Unreadblock must only be used in conjunction with the readblock function.
The unreadblock function is commonly used with the readblock and writeblock functions to pass blocks of data in bulk from the input file to the output file. This is useful for maps that are designed to envelope data. Unreadblock enables the translator to correctly track the number of bytes read and number of segments read during the translation process by moving the file-pointer back and decrementing the segment and byte counts accordingly. Readblock, writeblock, and unreadblock are supported only for positional and EDI files.
Syntax
Use this syntax:
unreadblock();
Example
An example of this function follows:
while readblock(temp_buffer) do begin if left(tem_buffer,3) = "IEA" then begin unreadblock(); break; end writeblock(temp_buffer); end //Read record from input file and place in temp_buffer. Look for //"IEA" record tag. If found, reset file pointer to where it was //before the "IEA" record was read. Write contents of temp_buffer to //output file.
250
update
The update function enables information in Application to be updated. This function is similar to the Update standard rule, except that it provides more flexibility. Only the tables and fields available in the Update standard rule are available for the update extended rule. The update function also enables you to update process data with a string, instead of using the messagebox function. For information about the messagebox function, see messagebox on page 235. In the command syntax, expression can be a string field, string variable, or string literal. It is important to note that the table and field names for the update extended rule are slightly different than those depicted in the standard rule. For a listing of these table and field names, see Select and Update Available Options on page 254.
Note: For the Transaction Register, the updates do not go directly to the database; they are kept in memory until the eventual select, and then they are checked against the database and inserted if necessary.
Syntax
Use this syntax:
update tablename set fieldname = expression [,fieldname =expression] where key = expression [and key = expression];
Note: If you are updating multiple fields, each field = expression term should be separated by a comma.
Example
An example of this function follows:
update processdata set xpathresult="hello world" where xpath="example";
251
while...do
The while...do function runs a statement repeatedly until the specified termination condition evaluates to zero. Application tests the terminating condition before each iteration of the loop, so a while loop runs zero or more times depending on the value of the termination expression. The begin function encloses a group of statements that form the body of a while...do loop. You can use the begin...end keywords to run one or more statements conditionally. If you include more than one statement in the body of a while...do loop, you must surround the statements with the begin...end keywords. If you use only a single statement, you can omit the begin and end. See begin on page 217 for more information about the begin keyword. See end on page 229 for more information about the end keyword.
Note: Do not end conditions with a semicolon (;). This terminating syntax is necessary for statements only.
Example
An example of this function follows:
integer i; while i < 10 do begin i = i + 1; if (i = 8) then continue; if (i = 9) then break; end //While "i" is less than ten, run the loop. If "i" is equal to or //greater than ten, terminate the loop.
writeblock
The writeblock function writes the data contained in the argument of a string variable to the output file. The readblock and writeblock functions are used together to pass a block of data from the input file to the output file without compliance checking or testing for proper EDI syntax. Together, these functions provide a more efficient alternative of using wildcard segments, which are typically implemented in build and break maps.
252
Readblock, writeblock, and unreadblock are supported only for positional and EDI files.
Syntax
Use this syntax:
writeblock(string_variable);
Example
An example of this function follows:
while readblock(temp_buffer) do begin if left(tem_buffer,3) = "IEA" then begin unreadblock(); break; end writeblock(tem_buffer); end //Read record from input file and place in temp_buffer. Look for //"IEA" record tag. If found, reset file pointer to where it was //before the "IEA" record was read. Write contents of temp_buffer to //output file.
The readblock and writeblock functions are also used in conjunction with the Document Extraction service, to specify the beginning and end of each document in a batch of documents, so that each document can be extracted individually. For more information about using the corollary Update standard rule to complete the document extraction, see Setting an Update Standard Rule as Part of Document Extraction on page 188.
253
Example
Another example of this function follows:
string[250] buffer; string[3] match; integer match_len; // set these next two variables match = "SUM"; // the tag of the last record in the document match_len = 3; // the length of the tag // read the block we're on and write it readblock(buffer); writeblock(buffer); // keep reading and writing records until the end of the document while readblock(buffer) do begin writeblock(buffer); if left(buffer, match_len) = match then begin break; end end
254
DESCRIPTION NAME (this is the list name of the codelist) RECEIVERCODE SENDERCODE TEXT1 TEXT2 TEXT3 TEXT4
Process Data
These are the field names that are available when using the select or update extended rules on Process Data:
Note: Refer to this table as PROCESSDATA.
XPATH XPATHRESULT
Correlation
These are the field names that are available when using the update extended rule on Correlations:
Note: Refer to this table as CORRELATIONDATA.
NAME VALUE
Document Extraction
These are the field names that are available when using the update extended rule with the Document Extraction service:
Note: Refer to this table as DOCUMENTEXTRACTION.
255
Envelope
These are the field names that are available when using the select extended rule on Document Envelopes with the Generic Envelope service:
Note: Refer to this table as ENVELOPE.
PARM VALUE
Transaction Register
These are the field names that are available when using the select or update extended rules with the Transaction Register:
Note: Refer to this table as TRANSACTIONREGISTER. The updates do not go directly to the database; they are kept in memory until the eventual select, and then they are checked against the database and inserted if necessary.
256
Chapter 10
Overview on page 257 Calling a Rule from an Extended Rule Library in a Map on page 258 Managing Extended Rule Libraries on page 259 Importing and Exporting Extended Rule Libraries on page 265
Overview
This section describes how to use the extended rule library and the properties of the dialog boxes that comprise its functionality. A rules library (used with SWIFTNet, Fedwire, and any other data format) contains a list of rules in a separate file outside of the Map Editor source. Map Editor stores the name of the library in its source file, so when you open a map the library is also loaded. Only the library extended rules referenced by a map are compiled into the compiled (.TXO) translation object. This enables you to create a library of extended rules and then add it to any other map, so you do not have to recreate those extended rules after the first time. You can use this functionality with any data format.
Note: The SWIFT extended rules library (SWIFT_2006.erl), which is automatically installed with Application (and checked in), contains all the extended rules necessary to carry out the business logic for SWIFT messages. Additionally, the Fedwire extended rules library (FEDWIRE_01.erl), is automatically installed with Application (and checked in), contains all the extended rules necessary to carry out the business logic for Fedwire messages. The Fedwire extended rules library contains ten rules and is used primarily in Expanded Format (OUTMSG).
The extended rule libraries are used when maps are compiled, not at runtime. This functionality minimizes the impact to users when, for example, SWIFT updates their messageswithout the rule library you would need to update the extended rules for each updated map (correlating to the updated messages), but using the extended rule library you just update the library and then use the library with all the applicable maps.
257
When you view the checked in libraries through the Extended Rule Library check in interface, you are also able to obtain a list of all the maps that use each library. The extended rules library can contain many rules. An extended rule consists of a declarations section followed by a statements section. The declarations section is required only if you use additional variables. The declarations section is where you declare the names and types of any variables you use either in the extended rule. The statements section is where you define the actions that you want the extended rule to run. You must declare any variables that are not already defined as part of the input or output specification of the map before you use those variables in an extended rule. For the extended rule libraries, any variables can be passed as parameters. Global variables can be referenced within a library function if the function has Text Substitution selected. However, we recommend that you do not use Text Substitution then you do not have a reusable library of functions. Rule libraries are versioned resources. When you create a new rule library you need to check it in to Application just like you need to check in maps. This also enables you to check out, version, and delete extended rule libraries. Furthermore, when you view the checked in libraries through the Extended Rule Library check in interface, you can also see all the maps that use each library. This is very important because it enables you to easily view a list of the maps that will need to be recompiled if you change an extended rule in a library (you would recompile all the maps that use that particular library). See Managing Extended Rule Libraries on page 259. Additionally, you can import and export extended rule libraries into Application using the Resource Manager. See Importing and Exporting Extended Rule Libraries on page 265. You can call an extended rule from a library in any extended rule in a map. The extended rule library functionality consists of the following dialog boxes: Rule Library Manager Rule Library Library Rule Add Parameter
In this syntax, library_name is the name of the extended rule library. For example, if the library is SWIFT_2006.erl, the library_name is SWIFT. And the rule_name is the name
258
of the rule that you defined in the Library Rule dialog box. There is no limit on the number of parameters you can use.
Note: You can have multiple rule libraries with the same name and different version numbers, but you can only use one rule library of the same name in a map (the last version of that rule library that was checked in to the system).
The syntax you use to call a rule with a return value set is:
integer i; i = call library_name.rule_name parameter1
Overview
When you create a new rule library you need to check it in to Application just like you need to check in maps. You can also check out, version, and delete extended rule libraries. When you view the checked in libraries through the Extended Rule Library check in interface, you are able to obtain a list of all the maps that use each library. This is very important because it enables you to easily view a list of the maps that will need to be recompiled if you change an extended rule in a library (you would recompile all the maps that use that particular library).
259
If you want to edit an extended rule library, you can check out an extended rule library and Application displays the .erl library version, which you can edit in the Map Editor (in the Rule Library Manager). To check an extended rule library in to Application: 1. From the Application Deployment menu, select Extended Rule Libraries. 2. In the Check-in section, click Go! 3. To check in an extended rule library (.erl), either type the path to the extended rule library in the External Rule Library filename box or click Browse, locate the extended rule library on your local disk, and click Open. The extended rule library name must not have spaces or apostrophes in it. 4. Click Next. 5. In the Check-in Comments field, type the appropriate comments and click Next. This field is required. Use the Check-in Comments field to note the purpose of the extended rule library or explain the changes made to it. 6. Review the settings for the extended rule library you are checking in and click Finish to apply your changes.
260
Source Manager
The Source Manager enables you to check out an extended rule library and check in a new version of an extended rule library. It also displays the following information about an extended rule library: Extended Rule Library name Extended Rule Library type Date the extended rule library was checked in User name of the person who checked in the extended rule library Comments about changes that have been made to the extended rule library
Version Manager
The Version Manager enables you to enable or disable a version of an extended rule library. If there are two or more versions of the extended rule library, you can select a default extended rule library. The Version Manager also displays the following information about an extended rule library: Extended Rule Library name Extended Rule Library type Date the extended rule library was checked in User name of the person who checked in the extended rule library Comments about changes that have been made to the extended rule library Whether the extended rule library is enabled
261
To check in a new version of an extended rule library to Application: 1. From the Application Deployment menu, select Extended Rule Libraries. 2. Find the extended rule library for which you want to check in a new version. 3. Next to the extended rule library for which you want to check in a new version, click source manager. 4. Next to Check in a new version of this external rule library, click Go! 5. To check in an extended rule library (.erl), either type the path to the extended rule library or click Browse, locate the extended rule library on your local disk, and click Open. 6. Type comments in the Check-in comments field and click Next. Use the Check-in comments field to note the purpose of the extended rule library or explain the changes made to it. This field is required. 7. Verify that the Selected Version is the version you want to be the default version and click Next. 8. Verify that the Release the lock on the file check box is selected to release the lock on the extended rule library. 9. Review the settings for the extended rule library you are checking in and click Finish to apply your changes. Application displays the message, Update completed successfully.
262
rule library, Application locks the extended rule library so that no one else can modify the extended rule library while you are editing it.
Note: You can also check out a read-only copy of an extended rule library, which does not lock the extended rule library in Application.
To check out a copy of an extended rule library from Application: 1. From the Application Deployment menu, select Extended Rule Libraries. 2. Find the extended rule library you want to check out. 3. Next to the extended rule library you want to check out, click source manager. 4. Next to the version you want to check out, click check-out. 5. In the message box that opens, click OK to lock the extended rule library or click Cancel to check out a read-only copy of the extended rule library (this does not lock the extended rule library). 6. To access the extended rule library immediately, select Open and click OK. Application opens the file in the Extended Rule Library Editor. Save the extended rule library in the Extended Rule Library Editor. This completes check out. Note: The first time you select Open, Application prompts you to select an application. Select Extended Rule Library or click Other and locate Extended Rule Libraryper.exe. Click OK. 7. To use the extended rule library later, select Save then click OK. Application prompts you to select a destination location. Browse to the location and click OK to save the file and complete check out.
263
264
Overview
The Application Import/Export feature now enables you to import and export extended rule libraries along with the other supported resource types. This means that you can configure an extended rule library on one system and then move or copy it to a different system, thereby avoiding having to recreate the extended rule library on each system. Even if you have libraries that are going to be slightly different from one system to another, you can export the libraries from one system and import them to a different system, and then make the necessary changes to the libraries on the second system.
265
3. On the Output Format Type page, indicate the type of format to export to, XML Document or Install Bundle, and then click Next. 4. On the Resource Group page, select Yes to indicate that you want to export resources according to a tag name and click Next. 5. From the list below your selection, select the previously created resource tag, and then click Next. 6. Indicate whether to export private certificates that are associated with the resource tag. 7. Click Finish to export the resource tag, including any private certificates, and create the export file. 8. When the message, The system update completed successfully displays, click View Export Report to see the export report. 9. Click Download Export data (.xml or .jar) to download the export file to a hard drive or disk.
Note: The extension shown in the parentheses depends on the type of file you chose to export to, either an XML document (.xml) or an installable bundle (.jar).
10. In the Save As dialog box, select the location to which to save the file, and click Save. 11. In the File Download dialog box, click Save.
266
If you chose to use the Advanced option on the Export Type page and if you are exporting all versions of the library, select Export All Versions (located below the Available box) and click Next. 9. If you selected more than one resource type in step 6., the next Resource Type page opens. Repeat steps 7. and 8. for each page the reflects the resources you select. 10. Click Finish to export the library and create the export file. 11. When the message, The system update completed successfully displays, click View Export Report to see the export report. 12. Click Download Export data (.xml or .jar) to download the export file to a hard drive or disk.
Note: The extension shown in the parentheses depends on the type of file you chose to export to, either an XML document (.xml) or an installable bundle (.jar).
13. In the File Download dialog box, click Save. 14. In the Save As dialog box, select the location to which to save the file, and click Save.
The standard import: Replaces non-versioned records Appends to existing versioned resources Sets the default according to imported records Some important general information about importing resources: You must manually update imported resources that contain hard-coded, computer-specific information. For example, system paths in scripts must be manually changed to use the new path after importing resources to their new location.
267
During import, Application creates a backup file containing records as they existed prior to import. After you import the resources, you can download and preserve the backup file, which is named backup.xml by default.You can change the name of the backup file so that you do not overwrite an existing backup file. For both non-versioned and versioned resources, the import process creates a new record where none exists. If you are importing an extended rule library to an environment that already contains the same library, you have the option to update the existing library (selecting Yes for the Some objects being imported may exist in the system. Do you wish to update them? parameter) or to preserve the existing library (selecting No for the Some objects being imported may exist in the system. Do you wish to update them? parameter).
Note: Each option handles versioned and non-versioned resources differently.
For the update option, selecting Yes for the Some objects being imported may exist in the system. Do you wish to update them? parameter is the default option. Depending on whether you are working with versioned or non-versioned resources, different actions occur. If you are importing non-versioned extended rule libraries, the update option replaces the existing records. If you are importing versioned libraries, the update option appends to the list when versions already exist, incrementing by one, according to the starting point of the import system. For the preserve existing option (selecting No for the Some objects being imported may exist in the system. Do you wish to update them? parameter) depending on whether you are working with versioned or non-versioned resources, different actions occur. Non-versioned resources If a record (file containing the extended rule library or libraries) already exists, nothing is imported. The import process does not change existing records. For versioned resources The preserve existing option does not change any versions currently in the system, and adds only new versions.
268
5. Indicate whether you want to update objects that may already exist in Application with objects from the import (the default is Yes), and click Next. 6. On the Extended Rule Libraries screen, from the Available list, select each library that you want to import, move the resources to the To be imported list, and click Save when you have selected all the necessary libraries. If you select more than one resource type to import, you must repeat this step for each resource type.
Note: Some resources objects may require you to type the passphrase (created during export) before completing the import.
8. When the message, The system update completed successfully displays, click View Import Report to see the import report. 9. If errors occurred during import, next to Data which failed to Import, click Download to view the XML file containing the names of the objects that did not import.
Note: This option displays only when the import completed with errors.
10. To create a backup of the data as it existed prior to import, next to Data in SI before Import, click Download. 11. In the Save As dialog box, change the default filename, backup.xml, to a unique, meaningful name for this backup, and then click Save.
Caution: Completing this step is very important. If you do not download the backup file to a hard drive or disk, you will lose the backup for the data as it existed prior to import.
269
270
Chapter 11
A user exit is an extended rule that enables a map to temporarily exit translation and perform functions that Application does not perform during typical translation. This section covers the following topics: About User Exits Creating a User Exit Examples of User Exit Code
271
The Map Editor does not inspect Java classes to verify the correctness of method and property names during map compilation.
Caution: Extended rules cannot compare property or method results because property and method types are unknown prior to compilation. Also, extended rules cannot catch Java exceptions and Java methods called by extended rules cannot throw exceptions. To handle an exception, you must create a user exit containing a wrapper class that calls the real class and handles the exception. Also, the Java class needs a constructor with a string argument. For more information on using constructor with a string argument, see Creating an Object on page 274.
For more information, see: Long Keyword on page 272 Using Data Types on page 272 Location Within a Map on page 273
Long Keyword
The keyword long is supported after a parameter is passed to a user exit method. This keyword is used for integers only and indicates a 64-bit integer. This function is backward-compatible; the translator assumes that user exits used with versions of the Map Editor prior to the implementation of this functionality refer to 32-bit integers.
The Translation service automatically converts the extended rule data type to the Java data type and vice versa. As a result, even single-character strings are converted to a String object in java because the char datatype is not supported. If the conversion is not
272
completed, the extended rule is immediately terminated and the Translation service writes an error to the translator report.
Objects
Java objects use the data type object. Objects provide properties (data values that can be retrieved or updated) and methods (functions that can be invoked to return a result). The object must be declared and then created using the new command, passing the full class name of the object and any constructor parameters. Invoke an object's methods using the syntax:
object.method(parameters)
273
1. Start the Map Editor. 2. Open the map in which you want to apply a user exit. 3. Determine where the user exit will be located in the map (for example, session rules and other extended rules).
Note: When you apply a user exit to a map component, subordinate map components may also be able to run the same user exit.
4. Construct the user exit. See the following examples. For information about extended rules, see Chapter 9, Using Extended Rules.
Creating an Object
This sample code creates an instance of a Java object:
object ob; ob = new ("somepackage.SomeClass", "example"); //Creates an instance of the somePackage.SomeClass class, passing //"example" to the constructor.
274
This is a Java example of the constructor that the code creating an instance of a Java object (above) will call using reflection:
package somepackage;
public class SomeClass { public String someProperty; //this is the string property used in the user exit example /** * This is the constructor, that the user exit example * ob = new ("somepackage.SomeClass", "example"); * will call using reflection. The line is calling a SomeClass * constructor in the somepackage and giving it a string argument * therefore there the below constructor must be declared to * match that signature * * @param ex */ public SomeClass(String ex) { //this is the constructor needed //must catch all exceptions } /** * This is the method that matches the user exit example * result = ob.someMethod("parm1", 2); * will call using reflection. The line is calling someMethod * passing a String parameter and an integer parameter, and * expects an integer returned. * * @param parm1 * @param numparm * @return */ public int someMethod(String parm1, int numparm) { //this is the method needed for the user exit example //must catch all exceptions return 0; } }
275
Calling a Method
To call a method, use the syntax objectname.methodname(parameters). This sample code calls a method on a Java object and stores the result in a variable:
object ob; integer result; ob = new ("somepackage.SomeClass", "example"); result = ob.someMethod("parm1", 2); //Calls the someMethod method of ob, passing the string "parm1" and the //integer 2 as the method parameters. Stores the result of the method in //result (assumes the method returns an int).
276
Chapter 12
Managing Maps
This section covers the following topics: Checking In Maps Searching for Maps About Search Results Checking In Versions of Maps Checking Out Maps Enabling or Disabling Translation Objects and XML Encoder Objects Specifying Default Maps Importing and Exporting Maps Performance Tuning When Translating Very Large Files
277
Checking In Maps
To use maps in Application, you must first check them in from your client computer to Application. You can check in a map (.mxl or .map) alone. If you check in a translation object (.txo) or a compiled XML encoder object (.ltx), you must also check in the corresponding source map. Source maps are available in Application for research purposes. Also if you want to edit a map, you can check out any type of map and Application displays the .mxl or .map version, which you can edit in the Map Editor. Translation objects (.txo) and XML encoder objects (.ltx) can be used by the Application Translation service after the objects are checked in and activated. To check a map in to Application: 1. From the Application Deployment menu, select Maps. 2. In the Check-in section, click Go! 3. To check in a source map (.mxl or .map), either type the path to the map in the Map filename box or click Browse, locate the map on your local disk, and click Open. The map name must not have spaces or apostrophes in it. 4. To check in a translation object (.txo) or XML encoder object (.ltx), either type the path to the map in the Compiled Map filename box or click Browse, locate the map on your local disk, and click Open. The map name must not have spaces or apostrophes in it. 5. In the Check-in Comments field, type the appropriate comments and click Next. This field is required.
Tip: Use the Check-in Comments field to note the purpose of the map or explain the changes made to it.
6. If you are checking in a translation object (.txo) or XML encoder object (.ltx) and you do not want the map to be enabled, clear the Enable for Business Processes check box. For more information about enabling and disabling maps, see Enabling or Disabling Translation Objects and XML Encoder Objects on page 282. 7. Review the settings for the map you are checking in and click Finish to apply your changes.
278
2. In the Search section, type the name of the map. Case does not matter and you can type part of a name. Application returns a list of matches unless no maps meet the criteria you specified.
279
Source Manager
The Source Manager enables you to check out a map and check in a new version of a map. It also displays the following information about a map: Map name Map type Date the map was checked in User name of the person who checked in the map Comments about changes that have been made to the map
Version Manager
The Version Manager enables you to enable or disable a version of a map. If there are two or more versions of the map, you can select a default map. The Version Manager also displays the following information about a map: Map name Map type Date the map was checked in User name of the person who checked in the map Comments about changes that have been made to the map Whether the map is enabled
280
Before you can check in a version of a map, you must first check out the map from Application and you must select the appropriate check box (description follows) to maintain the lock on the map in Lock Manager.
Note: Maps may also be unlocked using the Lock Manager.
To check in a new version of a map to Application: 1. From the Application Deployment menu, select Maps. 2. Find the map for which you want to check in a new version. 3. Next to the map for which you want to check in a new version, click source manager. 4. Next to Check in a new version of this map, click Go! 5. To check in a source map (.mxl or .map), either type the path to the map or click Browse, locate the map on your local disk, and click Open. 6. To check in a translation object (.txo) or XML encoder object (.ltx), either type the path to the map or click Browse, locate the map on your local disk, and click Open. 7. Type comments in the Check-in comments field and click Next. Use the Check-in comments field to note the purpose of the map or explain the changes made to it. This field is required. 8. Verify that the Selected Version is the version you want to be the default version and click Next. 9. If you want the map to be available for business processes to use, verify that the Enable for Business Processes check box is selected. If you do not want the map to be available, clear the check box. 10. Verify that the Release the lock on the file check box is selected to release the lock on the map. 11. Review the settings for the map you are checking in and click Finish to apply your changes. Application displays the message, Update completed successfully.
281
You can check out only a source map (.mxl or .map). So, for example, you select a translation object to check out, you actually check out the corresponding source map for that translation object. To check out a copy of a map from Application: 1. From the Application Deployment menu, select Maps. 2. Find the map you want to check out. 3. Next to the map you want to check out, click source manager. 4. Next to the version you want to check out, click check-out. 5. In the message box that opens, click OK to lock the map or click Cancel to check out a read-only copy of the map (this does not lock the map). 6. To access the map immediately, select Open and click OK. Application opens the file in the Map Editor. Save the map in the Map Editor. This completes check out.
Note: The first time you select Open, Application prompts you to select an application. Select Mapper or click Other and locate Mapper.exe. Click OK.
7. To use the map later, select Save then click OK. Application prompts you to select a destination location. Browse to the location and click OK to save the file and complete check out.
282
5. Click Save. Application displays the message, Map status has been successfully updated.
283
To change the settings for XML Import file size, modify the size of the maxImportUpload parameter so in the following files: tp_import_export.properties tp_import_export.properties.in
284
Appendix A
Error Messages
Application error messages and informational messages are noted at the following times: In the Compile Errors dialog box when you compile the map In the Error section of the extended rules dialog box when you compile an extended rule containing errors before compiling the map When you commit an erroneous action in Application The informational messages are dependent on the context of the program, and are intended to be self-explanatory. The error messages are listed in this section, along with the actions you can take to correct the problem. This section covers the following topics: Compile Error Messages Map Editor Error Messages
Note: You can create a Translation Status report, which contains information about the translation of the document and any compliance errors.The errors are listed by those that occur on the input side of the map and those that occur on the output side of the map.
285
The compile error messages are listed by the four- or five-digit message number and the error message text. The error explanations cover the possible causes of the error and the actions that you can take (if appropriate) to correct the error.
Msg ID 1000 Message Text expected '.' Explanation/Resolution The rule does not have the required period (.) between a group name and a field name. Insert a period (.) between the group name and field name. 1001 no statement to compile The rule does not contain any statements. Add a statement or statements to the rule. 1002 unexpected end of program The rule was not complete. Finish the rule. 1003 expected ',' The rule does not have the required comma (,) between parameters. Insert a comma (,) between parameters. 1006 no statements to compile The body of an IF/ELSE or WHILE condition was empty. Complete the body of the unfinished condition. 1008 expected '#' The rule does not have the required number sign (#) before a field name. Insert a number sign (#) before the field name. 2000 group ... undefined The rule references a group that does not exist. Change the reference to an existing group or delete the reference. 2001 ... is not a member of ... The rule references a field that does not belong to the specified group. Change the reference to an existing field in the specified group. 2002 insufficient indexes to access group ... The rule does not give the full addressing for a group. Complete the addressing for the group.
286
Msg ID 2003
Explanation/Resolution The rule uses too many addresses for the group. Address the group correctly.
2004
The rule references an undefined variable. Define the variable in the declarations section.
2005
The rule could not be compiled because some expressions are too complex. Simplify the expressions and compile the rule again.
2008
The compiler was unable to determine the type of a field. Verify that a data type is selected for this field.
2009
The rule (probably pre- or post-session) references a local field, but is not associated with any group. Reference the field using the proper addressing.
2010
The rule references an output group using full addressing. This form of addressing is appropriate only for input groups. Reference the output group with the proper address.
2011
no field specified
The rule omits a field reference. Add the field reference to the rule.
2100
The rule uses array indexing for a variable that is not an array. Use the proper indexing for the variable.
2101
The rule uses an array variable without using the necessary array indexing. Add the necessary indexing to the array variable.
2102
The rule uses an invalid array index. Use the proper array index for the array variable.
287
Msg ID 2103
Explanation/Resolution The rule uses more than one wildcard index. Use only one wildcard index per rule.
2104
The rule does not specify a wildcard index when required. Add a wildcard index where necessary.
2200
expected a string
A required string or string variable is not supplied. Add the required string or string variable.
2201
string overflow
A string overflow occurred. Verify that the size of a destination string is equal to or greater than the source string.
array size expected in declaration of ... declaration of ... missing ']' string size expected string size missing ']' variable name expected ... already defined
Invalid array declaration. Invalid array declaration. Invalid string declaration. Invalid string declaration. Invalid variable declaration. Two variables with the same name are defined at the same scope. Rename one of the two variables.
expected an accumulator number, found ... ... is not a valid accumulator number expected a numeric expression, found ...
Invalid accumulator reference. Invalid accumulator reference. You specified something other than the expected numeric expression. Specify the correct numeric expression.
4001
You specified something other than the expected term. Specify the correct term.
288
Msg ID 4002
Explanation/Resolution You specified something other than the expected plus sign (+) or minus sign (-). Specify a plus sign (+) or minus sign (-).
4003
You specified something other than the expected asterisk (*) or slash (/). Specify an asterisk (*) or a slash (/).
4004
expected ')'
You specified something other than the expected right parenthesis ()). Specify a right parenthesis ()).
4005 4006
The numeric expression is invalid. You specified something other than the expected left parenthesis ((). Specify a left parenthesis (().
4007
The specified expression is of an incorrect type. Specify the correct type for the expression.
4008
You specified something other than the expected relational operator. Specify the correct relational operator.
4009
missing argument
4010
assignment expected
The assignment operator was omitted from an assignment statement. Add the correct assignment operator to the statement.
4011
Only one parameter was supplied for a binary operator. Supply a second parameter for the binary operator.
4100
289
Msg ID 4101
Explanation/Resolution A date modifier was required but not supplied. Specify a date modifier.
... is not a date THEN expected DO expected END expected IF expected FROM expected INTO expected END without BEGIN
The date expression is invalid. The compiler expected a THEN condition. The compiler expected a DO condition. The compiler expected an END condition. The compiler expected a IF condition. The compiler expected a FROM condition. The compiler expected an INTO condition. An END statement was found without a corresponding BEGIN statement. Insert a BEGIN statement in the correct location.
5018
Too many parameters were supplied for a function. Remove the unnecessary parameters.
5019
Too few parameters were supplied for a function. Add the necessary parameters.
20001
The specified field does not have a date format. Edit the field and select a date format.
20003
The standard rule for the specified field uses an invalid constant. Correct the standard rule or create the constant.
20004
The standard rule for the specified field uses an invalid code list. Correct the standard rule or create the code list.
20005
Field... :the qualifier field specified in a use constant standard rule is invalid
The standard rule for the specified field uses an invalid qualifier. Correct the standard rule.
290
Msg ID 20006
Message Text Field... :the field specified to store the code description in a use code standard rule is invalid
Explanation/Resolution The standard rule for the specified field designates an invalid field for the description. Correct the standard rule.
20007
The key field for the specified record uses an invalid constant. Correct the key field.
20008
The key field for the specified record uses an invalid code list. Correct the key field.
20030
The key field for the specified record is inactive. Activate the key field.
20700
only one binary data and one binary length field are permitted
You have more than one binary data and more than one binary length element in one segment. Remove the additional binary data and binary length elements from the segment.
20701
The binary length element must be sequenced before the binary data element in the segment so the translator expects that amount of data. Move the binary length element to before the binary data element.
20702
You marked a segment as binary, but did not include either a binary length element or a binary data element (or both). Add a binary length element and a binary data element to the segment.
20703
You tried to compile the map, but the specified group is empty. Activate at least one child object in the group.
20704
Element ..., Attribute ...: enumerated attribute declared without accompanying standard rule
The specified XML attribute is configured to use an enumeration, but no Use Code standard rule defines the permitted values. Define a Use Code standard rule for the specified attribute.
291
Msg ID 20705
Message Text Element ..., Attribute ...: code list used in enumerated attribute does not exist.
Explanation/Resolution The code list for the specified enumerated XML attribute does not exist. Define the code list.
20706
The specified default value is not in the code list for this XML attribute. Verify that the specified default value is in the code list.
20707
Codelist ..., Attribute ...: value used in enumerated attribute code list does not match XML NMTOKEN production
A value in the enumeration code list is not valid for XML. Verify that all the values specified in the code list are valid for an XML attribute. An XML character reference was not terminated properly. Correct the character reference.
20710
20711
20714
The default value is the wrong type for the attribute. Correct either the type of the attribute or the default value.
20715
The default value contains the invalid character (<). Correct the default value.
20746
Invalid group ordering sequence for group [group name]. Missing start or end Ordering Type.
The start or end ordering type was not set. Configure the start or end ordering type. For more information about ordering types, see Ordering Tab on page 338. The start or end ordering type was not set. Configure the start or end ordering type. For more information about ordering types, see Ordering Tab on page 338.
20747
Invalid segment/record ordering sequence for segment/record [segment or record name]. Missing start or end Ordering Type.
292
The column name [field name] contains an invalid character. The only allowed characters are 'a'-'z', 'A'-'Z', '0'-'9', '_' and ':'. [modified field name] will be used for generated field name.\
A data type is required. Element [XML element name] was defined as abstract, you need to replace abstract content with concrete content
A field must have a name that is unique within its parent group. The file that was specified was not found: [file name]. The folder that was specified was not found: [folder name].
293
Message Text A group must have a unique name. A group or record with a maximum usage of 1 cannot be split or promoted. The Import Wizard failed to import the selected items. A key field has been selected but no key value has been specified. A Memory Exception has occurred.
Explanation/Resolution You tried to give a group a name that is already used by another group or record. You attempted to split or promote a single-occurrence group or record. This is not a valid action. The file or files you selected for import could not be imported. You established a key field without specifying a key value. A system error occurred. Exit Application and restart the operating system.
You did not specify a name for an object. You entered an invalid filename to import. Enter the correct filename.
You entered an invalid folder to import. Enter the correct folder name.
A problem occurred while attempting to close loop .... This is probably because of incorrect standards. The product version was not selected.
An error occurred when reading from the standards. You did not indicate which product version was used to create the file you specified for import. Specify the product version used to create the file.
You tried to give a record a name that is already used by another group or record. A system error occurred. Exit Application and restart the operating system.
A serious error was encountered whilst accessing the clipboard and the action was abandoned. A system error was encountered while compiling the map.
Application ended a cut, copy, or paste operation because a serious error occurred. Perform the cut, copy, or paste operation again. While compiling a map, a system-related problem, such as lack of disk space, prevented the compile from completing. Close unnecessary applications to free disk space, reboot your computer (if necessary), and then recompile the map.
You did not specify the accumulator to be used in a Use Accumulator standard rule.
294
Message Text An invalid usage count has been entered. No actions have been chosen for this accumulator entry. No alternate accumulator has been selected.
Explanation/Resolution You entered an invalid usage count for a record or group. You selected an accumulator but did not specify any actions for it in a Use Accumulator standard rule. In a Use Accumulator standard rule, you attempted to create an accumulator entry that used an alternate accumulator, but did not specify which alternate accumulator must be used. You did not specify the characters permitted for a syntax token. You established a conditional relationship but did not specify the fields involved. You attempted to create more than six accumulator entries in a Use Accumulator standard rule. You attempted to create more than eight field mappings for a Select standard rule. A Select Transaction Register rule is not preceded by one or more Update Transaction Register standard rules. Modify the map so that a Select Transaction Register is preceded by one or more Update Transaction Register standard rules. The data from a Transaction Register standard rule is duplicate data. Investigate why duplicate transaction register data was encountered. You entered a constant identifier in the ID field that is already used in an existing constant. Type a unique constant identifier in the ID field.
No character ranges have been specified for this token. No fields have been used in this relationship. No more accumulator entries can be created.
No more field mappings can be created. Standard Rule Select Data Missing
Standard Rule Duplicate Transaction Register Error The constant ID must be unique.
The contents of the clipboard cannot be pasted into the translation object at this point.
Either the clipboard does not contain copied or cut data, or you are trying to paste XML information into a positional data format or paste positional data into an XML data format. You tried to delete a data format object. You entered an invalid maximum usage count. You entered an invalid number in the Split dialog box. The number to be split must be greater than zero and less than the maximum number of entries in the original. The map is not ready to be compiled.
The file format cannot be deleted. The Maximum Usage must be greater than zero and not less than the Minimum Usage. The number of entries to be split must be greater than zero and less than the maximum number of entries in the original. The map could not be compiled.
295
Explanation/Resolution You attempted to create a syntax token with the same token identifier as an existing syntax token. Type a unique token identifier in the Token field.
These fields cannot be linked because the input field is deeper than the output field. The translator would be unable to address the input field. This code already exists. You must use another code or delete the original code first. This field cannot be linked to another field.
You are attempting to create an invalid link. A valid link involves an Input field and an Output field that are at the same level. You attempted to add a code to a code list that already contained that code. Because of an unknown error, Application was unable to begin creating the link. You attempted to open (load) a file that is not a translation object. You entered an invalid Record Delimiter 1 on the Positional File Format Properties dialog box. You entered an invalid Record Delimiter 2 on the Positional File Format Properties dialog box. You entered an invalid decimal separator. You entered an invalid element delimiter. You entered an invalid pad character for a positional field. You entered an invalid release character. You entered an invalid subelement delimiter. You entered an invalid tag delimiter. You attempted to save the translation object without entering the description on the Map Details dialog box. Type the translation object description in the Description field on the Map Details dialog box. This description must be unique because Application uses it to identify the map.
This file is not a valid translation object. You have entered an invalid character or character code in Record Delimiter 1. You have entered an invalid character or character code in Record Delimiter 2. You have entered an invalid decimal separator or character code. You have entered an invalid element delimiter character or character code. You have entered an invalid Pad character or character code. You have entered an invalid release character or character code. You have entered an invalid sub-element delimiter character or character code. You have entered an invalid tag delimiter character or character code. You must type a description of the translation object.
296
Explanation/Resolution You did not type a valid token identifier in the Token field when creating or editing a syntax token. You did not specify a value for the constant in the Value field when creating or editing a syntax token. You did not specify a constant identifier for the constant in the ID field when creating or editing a syntax token. You attempted to save the translation object without entering the name of the author on the Map Details dialog box. You did not select a constant type from the Type list when creating or editing a constant.
You must type the name of the author of this translation object You must select a constant type.
297
298
Appendix B
This section contains information that is useful if you are migrating from Gentran:Server for Windows or Gentran:Server for UNIX to Application. This section covers the following topics: Opening a Gentran:Server for Windows or Gentran:Server for UNIX Map Map Conversion Utilities Extended Rules User Exits Select and Update Standard Rules NCPDP Standard Transaction Data File (TDF) ODBC (Open Database Connectivity) Differences Between the Application Translator and the Gentran:Server for Windows Translator
299
Gentran:Server for UNIX conversions, in which you can specify that simple links are converted), standard and extended rules, and conditional relationships. You can also translate Gentran:Server for iSeries, and Gentran:Basic for zSeries maps through the command line. For more information about how to use the map conversion utilities or convert maps from the command line, see Appendix F, Map Conversion.
Extended Rules
Application extended rule support differs slightly from that of Gentran:Server for Windows and Gentran:Server for UNIX. This section contains specific details about the differences and lists the extended rules that are not supported in Application.
Caution: If your map contains an incorrect or unsupported extended rule, the translator generates a compile error.
For more information, see: Wild Blocks on page 300 Readbyte and Writebyte on page 300 Fseek and Ftell on page 301 Other Unsupported Extended Rules on page 301
Wild Blocks
Wild blocks are records in a map that can match any data. They were used in Gentran:Server for Windows to provide pass-through functionality for early build and break maps. Wild blocks are not supported in Application because Readblock and Writeblock extended rules are much more efficient. If you have a map that uses wild blocks, replace them with Readblock and Writeblock extended rules. For more information about using these extended rules, see readblock on page 238 and writeblock on page 252.
300
Extended Rules
AUDITLOG
Gentran:Server for Windows Gentran:Server for Windows Gentran:Server for Windows Gentran:Server for Windows Gentran:Server for Windows Gentran:Server for Windows Gentran:Server for UNIX Gentran:Server for Windows and Gentran:Server for UNIX Gentran:Server for Windows and Gentran:Server for UNIX
301
Product this Rule was Supported In Gentran:Server for Windows and Gentran:Server for UNIX
Reason this Extended Rule is not Implemented in Application Not required in Application.
User Exits
This table contains a matrix of the varying levels of support for user exits across Sterling Commerce product offerings:
Product Gentran:Server for Windows Gentran:Server for UNIX Application User Exit Support Supports calling ActiveX Automation Servers using Microsoft Component Object Model (COM) technology. Supports calling C libraries through a fixed Application Program Interface (API). Supports calling Java objects using Java Reflection APIs.
For more information, see User Exit Migration Tip on page 302.
302
and Update standard rules, but their scope is to provide access to information in the Application system; these standard rules cannot provide access to a Gentran database.
Caution: The translator does not process any incorrect standard rules.
For more information about using the Select and Update standard rules in Application, see Using the Select Standard Rule on page 174 and Using the Update Standard Rule on page 183. For more information, see: Tracking Migration Tip on page 303 Trading Partner Code List Migration Tip on page 303 Document Name Migration Tip on page 303 Synonym Table by In Value on page 304 Synonym Table by Out Value on page 304
303
For more information about using the Select standard rule in Application, see Using the Select Standard Rule on page 174.
For more information about using the Select standard rule in Application, see Using the Select Standard Rule on page 174.
NCPDP Standard
NCPDP is the National Council of Prescription Drug Programs standard for the electronic exchange of documents. NCPDP is supported in the Gentran:Server for Windows and Gentran:Server for UNIX products but Application does not support the NCPDP standard.
304
Differences Between the Application Translator and the Gentran:Server for Windows Translator
There are inherent differences between the Application translator and the Gentran:Server for Windows translator. In both Application and Gentran:Server for Windows, you can specify a Record Length and/or Record Delimiters on the Positional File Properties dialog box (Record tab). The Record Length and Record Delimiters parameters notify the translator how many bytes should be read from the input stream to create one positional record. These parameters are not mutually exclusive. It is important to note that the Application and Gentran:Server for Windows translators may not treat the Record Length and Record Delimiters parameters in the same manner, depending on which parameters you specify. The following table describes the differences between the two translators and how they handle the Record Length and Record Delimiters parameters:
Parameter(s) specified on Positional Record Properties dialog box (Records tab) Record Length only How the Application translator handles the specified information How the Gentran:Server for Windows translator handles the specified information
The translator attempts to read Record Length bytes from the input stream and ignores any operating system default line separators, stopping only when it encounters the end of the input stream.
The translator attempts to read Record Length bytes from the input stream but stops if it encounters the operating system default line separators or the end of the input stream.
305
Parameter(s) specified on Positional Record Properties dialog box (Records tab) Record Length and Record Delimiters
How the Gentran:Server for Windows translator handles the specified information
The translator attempts to read up to the Record Length bytes from the input stream but stops if it encounters the specified Record Delimiters or the end of the input stream. The Record Delimiters take precedence over the Record Length parameter.
The translator attempts to read up to the Record Length bytes from the input stream but stops if it encounters the specified Record Delimiters or the end of the input stream. The Record Delimiters take precedence over the Record Length parameter. The translator continues to read from the input stream until it either encounters the Record Delimiters or the end of the input stream.
The translator continues to read from the input stream until it either encounters the Record Delimiters or the end of the input stream.
306
Appendix C
This section describes all of the properties for the map components of the data formats that Application supports, as well as the properties of other supporting dialog boxes. Each map component has a property dialog box, which consists of various tabs, which contain the properties. In this section, the properties are described in tables, arranged alphabetically by tab name. Data format properties information is also available in the Help. When you view a data format properties dialog box, press F1 for Help specific to the tab you are viewing.
307
308
309
Code List
The following table describes the properties on the Code List dialog box:
Property Table list Description Lists the table identifiers.
310
Colours
Description Accesses the Edit Code List dialog box, which enables you to create a new code list. Accesses the Edit Code List dialog box, which enables you to edit the selected code list. Deletes the selected code list. Accesses the Open dialog box, which enables you to import a code list. Accesses the Save As dialog box, which enables you to export the selected code list. Copies the selected code list. Pastes a previously copied code list in a map.
Colours
The following table describes the properties for the Colours dialog box dialog box:
Property Item Description The type of map entry that you for which you want to select colours. Valid values are: Group Record/Segment Composite Field/Element Attributes Sample text Foreground colour Background colour Enables you to further separate map entry items according to characteristics like active/inactive or mandatory/conditional. Displays the options you have selected. The colour in which the text of the map entry item will be displayed. The colour in which the background (highlighting) of the map entry item will be displayed.
311
Table Key
Clear
Conditions Tab
The following table describes the properties on the Field (or Element) Properties dialog box Condition tab:
Caution: The Map Editor enables you to edit these conditional relationships, but if you do, you will generate a compliance error. You must use this dialog box for viewing only.
Description Select the field connection condition from the type of relationship list. Valid values are: Paired/Multiple If any of the specified fields are present, all fields must be present. Required At least one of the specified fields must be present. Exclusion No more than one of the specified fields can be present. Conditional If the first Condition field is present, the rest of the fields must also be present. List Conditional If the first Condition field is present, at least one of the specified fields must also be present.
312
Confirmations Tab
Description Select the first field from the Condition field list. This is the field on which the conditional relationship depends if you chose Conditional or List Conditional from the Condition Code list and selected an indexing method from that list. All the fields in the translation object that are valid to be used in a condition at this point. The fields that you selected (by selecting a field or fields in the Available fields list and clicking the Add button) to be a part of the conditional relationship. Moves selected fields in the Available fields list to the Fields used in relationship list. The fields are included as a part of the conditional relationship. Moves selected fields in the Fields used in relationship list back to the Available Fields list. The fields are removed from the conditional relationship.
Remove
Confirmations Tab
The following table describes the properties for the Confirmations tab on the Preferences dialog box, which enables you to specify when you want confirmation messages displayed:
Property Confirm everything Description If selected, specifies that you want the system to backup the map prior to saving. The system will save a copy of the map with the same root name as the map, but with the file extension (.BAK). The backup copy will be stored in the same folder as the map. Note: The Backup before saving function is only available when you perform a Save function (not a Save As). Confirm when I Specifies individual confirmation messages by action performed. Note: These parameters are only available if the Confirm everything check box is cleared.
313
314
Property UID
Description User ID, if necessary. This UID is used during mapping. When the current map is used at run time, the UID is used. Complete if you use a DSN that requires a user ID to make a connection.
PWD
Password, if necessary. This PWD is used during mapping. When the current map is used at run time, the PWD is used. Complete if you use a DSN that requires a password to make a connection.
DATABASE User supplied name for this data source Connect to data source to build table schema and test SQL statements Use Transaction
Database name. How you want to refer to the data source name. Complete if you want this name to be different from the ODBC DSN. This name will be used to refer to the data source elsewhere in the map. Whether the Map Editor connects to this data source and uses the data source to create the database table schema, test the SQL queries, and generate a result set. Whether the translator performs all the operations on the data source in a transaction. If there is an error during translation, Application rolls the database back to a previous state that does not contain errors. The rollback occurs only if all of the following conditions apply: Use Translation is selected. You are using a local pool in Application. There were errors in the translator report. The no_rollback_on_validation_error BPML parameter is either not set or is set to FALSE. Note: If you are using a system pool have specified the no_rollback_on_validation_error BPML parameter with a value of Yes, then the translator performs a commit. Any SQL errors are reported in the translator report.
Accesses the Select Data Source dialog box, which enables you to create a data source or select one that was previously created. Clears the parameter boxes to enable you to add another data source. Tests the connection of the selected SQL data source.
315
Description Recreates the database schema for the selected data source if you specified Test Connection. After the Map Editor recreates the schema, it automatically checks all the objects in the file format that depend on that schema. If possible, the Map Editor also modifies the data type and validation information for those objects to match the new schema. Then, the Map Editor performs a consistency check and tries to fix those inconsistencies. If you do not select a data source or there are no data sources in the list, Application displays Update as Add. The Add option enables you to add a data source you previously created to the Currently Defined Data Sources list. See Checking Database Consistency on page 131 for more information about database consistency checking.
Remove
Deletes the selected data source from the list, invalidates it, and then clears all fields or records that reference the data source. You are prompted to remove the selected data source (from the list, not from the computer); click OK to do so.
Tag Delimiter
316
Description Default character that marks the end of each subelement. This box is active only if the Specify defaults check box is selected. Type either the character or the hexadecimal value in the correct box.
Default character that marks the start of a new repetition of an element or subelement. This box is active only if the Specify defaults check box is selected. Type either the character or the hexadecimal value in the correct box.
Release Character
Character that, when used before any defined delimiter, restores the character used for the delimiter to its original meaning. For example, if the plus sign (+) is the element delimiter and question mark (?) is the release character, when ?+ is a part of the data, Application reads the + as a part of the data instead of marking the end of the element. This box is active only if the Specify defaults check box is selected. Type either the character or the hexadecimal value in the correct box. If you are mapping delimited data and the setup outside the map does not enable you to specify the release character, type the value you expect in this box.
Decimal Separator
Character that indicates the decimal point in a numeric field, such as a period (.) or comma (,). This box is active only if the Specify defaults check box is selected.
Leading zeros are suppressed for all values greater than 1. Decimal Default suppression and padding of leading values less than 1 will retain a single leading zero (e.g., 000.25 --> zero on Numeric values 0.25). This is the default selection. This box is only active on the output side of the map for all EDI types. Suppress leading zero on Numeric R* format values (e.g., 0.25---> .25) Pad with leading zero on Numeric values (e.g., 25---> 000025) Always output trailing delimiters for fields with data Same as default behavior except leading zeros are also suppressed on elements that use an R-format numeric and whose value is less than 1. This box is only active on the output side of the map for all EDI types. Numeric values, regardless of format, are padded with leading zeros out to the maximum length of the field. This box is only active on the output side of the map for all EDI types. This is supported on the Output side of the map only, as a syntax-level option and field-level option (NACS uses it as a syntax-level option). If this option is selected, a trailing level option is always output after a field with data. For example, instead of 1234*abcd\, 1234*abcd*\ is output.
317
318
The following table describes the properties on the Edit Accumulator Entry dialog box. For the valid accumulator operations, see Accumulator Operations on page 164.
Property Primary Accumulator Description Primary accumulator. The following criteria apply: Before any calculations are performed on an accumulator, its content is zero (0). When you use an accumulator, a new accumulator is added to the end of this list. There is only one set of accumulators for each map. This means that accumulator 0, whether it is used in the Primary accumulator or Alternate Accum box, is the same accumulator with the same contents. If you assign calculations to accumulator 0 at the beginning of the map and then use accumulator 0 again later in the map, the content of that accumulator is the result of the earlier calculation. Any additional calculations you assign to that accumulator are performed on the contents resulting from an earlier calculation. Name First Descriptive alias that enables you to indicate what the accumulators you create are used for. First operation that is performed. The First box is active only after you select a primary accumulator. Before any calculations are performed on an accumulator, its content is zero (0). When you use an accumulator, a new accumulator is added to the end of this list. Second operation that is performed, after the first operation is completed. The Second box is active only after you select a First operation that does not involve the Alternate Accum operation. Third operation that is performed, after the second operation is complete. The Third box is active only after you select a Second operation. Fourth operation that is performed, after the third operation is complete. The Fourth box is active only after you select a Third operation. Alternate accumulator operation.
Second
319
Description Character that terminates the permitted token range in the End character box. For example, if the character range you want to define is B through D, type D in the End character box. You can also type hexadecimal character codes. Note: The End character can only be one character, upper- or lower-case alphabetics or numerics 1 - 9.
OK Cancel
Closes the Edit Character Ranges dialog box and saves changes. Closes the Edit Character Ranges dialog box without saving changes.
320
Edit Constant
The following table describes the properties on the Edit Code List Entry dialog box:
Property Value Description Description Value of the code list entry. Code list entry value description. The description is used if you specify (in the Store Fields list on the Field Properties dialog box) a field to which you want the code list entry description mapped.
Edit Constant
For more information about using constants, see Chapter 8, Using Standard Rules. The Edit Constant dialog box is accessed from the Map Constants dialog box. The following table describes the properties on the Edit Constant dialog box:
Property ID Description Constant identifier. The ID is typically a description of the field in which the constant is used. If you must refer to the constant in an extended rule, you must use the data from this field. Category of the constant. Valid values are: Integer Numeric constants that are a positive or negative natural (non-fraction) number or zero (0). Real Numeric constants that are a positive or negative integer with an explicit decimal point. String Alphanumeric constants. Value Constant expression. This is the value of the constant.
Type
321
Description Character range or ranges that you defined for this token. You can define more than one character range for each token. For example, you can define the token A as permitting the character range A - Z and the character range a - z. This indicates that token A permits upper-case and lower-case alphabetics only.
Closes the Edit Syntax Tokens dialog box and saves changes. Closes the Edit Syntax Tokens dialog box without saving changes. Accesses the Edit Character Range dialog box to enable you to create a new character range. Accesses the Edit Character Range dialog box to enable you to edit the selected character range. Deletes the selected character range. Note: The selected entry will be deleted without warning.
Encoding Tab (File Properties, Fedwire File Properties, and SWIFT Properties)
The following table describes the property of the Encoding tab for the File Properties dialog boxes (including SWIFT and Fedwire):
Property Encoding Description Specify the type of character encoding by choosing an encoding format from the list. Note: For SWIFT, encoding can be set but it is not necessary.
322
Entity Tab Entity Value Entity data. The translator inserts this data when it encounters the entity.
323
Compile
Files Tab
The following table describes the properties for the Files tab on the Preferences dialog box, which enables you to specify Application folder and backup options:
Property Backup maps to a .BAK file before saving Description If selected, specifies that you want the system to backup the map prior to saving. The system will save a copy of the map with the same root name as the map, but with the file extension (.BAK). The backup copy will be stored in the same folder as the map. Note: The Backup before saving function is only available when you perform a Save function (not a Save As). When browsing for maps, start in this folder When compiling a map, save to this folder Always use default folders when browsing for or compiling a map Specify a default folder to which you want to be directed when you browse for a map. Specify a default folder where the compiled maps will be stored. If selected, specifies that you want the system to always use the default folders you indicate instead of opening to the last accessed folder.
324
Font
Property Default folder for compiled maps Default folder for map test data files
Description Specify a default folder from which Map Editor will access compiled maps used in the Map Test process. Specify a default folder from which Map Editor will access data files used in the Map Test process.
Always use default folders If selected, specifies that you want the system to always use the when browsing map test files default folders you indicate for map test files instead of opening to the last accessed folder.
Font
The following table describes the properties for the Font dialog box dialog box:
Property Font Font Style Size Sample Script Description The list of the available fonts on your machine. The desired style of the selected font. The size of the selected font. Displays the options you have selected. The available language scripts for the selected font.
325
For SWIFTNet, key field matching in the translator is used to match by Qualifier for generic fields, and by the data content of 16R/16S ISO 15022 block tags.
Property Field Description Elements in the segment (or, for XML, contains all the attributes that are defined for this element). Select an element from the Field list that will or will not match the constant chosen from the Matching Rules section. This list helps you recognize an ambiguous segment definition. If the specified condition is not met, the segment does not conform to the definition, but processing still continues. Note: Key fields are intended to be used with string fields only. If you use a key field on a numeric field, the result is not guaranteed. Use constant/ Edit List of defined constants. The Map Editor matches the selected constant against the key field.For XML, indicates that the translator must match the element if the contents of the selected attribute match the literal constant selected from the list. If you must add or change a constant, click Edit to access the Map Constants dialog box. List of defined code lists. The Map Editor matches the selected code list against the key field. For XML, indicates that the translator must match the element if the contents of the selected attribute match the selected code list. If you must add or change a code list, click Edit to access the Code Lists dialog box. Use if you have specified a key field and a matching rule. Select this check box to specify when the segment will be matched, if the Field does not contain the value specified in the Matching rules section. If the specified condition is not met, the segment does not conform to the definition, and processing continues. Not used for SWIFT. The Matching Rules section is active only if you selected a map component from the Key Field list.
326
Description Field that the translator checks to verify whether the key field does or does not (depending on which you specify) match the constant, code list, or field value or values. Note: Key fields are intended to be used with string fields only. If you use a key field on a numeric field, the result is not guaranteed.
Constants Edit
List of defined constants. The translator matches the selected constant against the key field. To add or change a constant, click Edit to access the Map Constants dialog box. List of defined code lists. The translator matches the selected code list against the key field. To add or change a code list, click Edit to access the Code Lists dialog box. First key field and contains all the active fields from this record. Note: Key fields are intended to be used with string fields only. If you use a key field on a numeric field, the result is not guaranteed.
Key Field 1
Use Field 1
Specifies that the first key field must match the value in the field from an earlier record and contains all the active fields from the preceding records (not including this record). Second key field, if necessary, and contains all the active fields from this record. Note: Key fields are intended to be used with string fields only. If you use a key field on a numeric field, the result is not guaranteed.
Key Field 2
Use Field 2
Specifies that the second key field must match the value in the field from an earlier record and contains all the active fields from the preceding records (not including this record). Third key field, if necessary, and contains all the active fields from this record. Note: Key fields are intended to be used with string fields only. If you use a key field on a numeric field, the result is not guaranteed.
Key Field 3
Use Field 3
Specifies that the third key field must match the value in the field from an earlier record and contains all the active fields from the preceding records (not including this record).
327
For SWIFTNet, key field matching in the translator is used to match by Qualifier for generic fields, and by the data content of 16R/16S ISO 15022 block tags.
Property Field Description If you specify a key field, the translator generates an output record only if the specified field has data in it. Note: Key fields are intended to be used with string fields only. If you use a key field on a numeric field, the result is not guaranteed.
328
Links Tab
Property Errors
Description If you compiled this extended rule, any warnings or errors are displayed in the Errors list. Double-click an error to make the cursor go to the line containing the error. Saves the function and closes the dialog box. Compiles the extended rule. This function enables you to view compile errors for this rule prior to compiling the translation object. This function gives you immediate feedback about the accuracy of your rule. Double-click an error to immediately navigate to the line containing the error. Note: The rule is also compiled when you compile the map.
OK Compile
Cancels the function without saving changes. Enlarges the extended rule area to the size of your entire display to give you more room to see what you type (click the right button to return to normal display size).
Links Tab
The following table describes the properties for the Links tab on the Preferences dialog box, which enables you to specify how you want the mapping links (visual lines that connect two mapped items) displayed:
Property Show no links Show to or from the currently selected element Show links to or from all visible elements Description Do not visually display mapping links. Display only the mapping links for the currently selected map component (this option enables you to concentrate on the selected field and removes the confusion of viewing many links at once). Display all the mapping links.
329
Property On End
Description Extended rule to be run after the translator concludes processing the map object. The Map Editor processes On End rules at the end of each loop occurrence, not at the end of all loops. Maximizes the dialog box. Compiles the extended rule. This function enables you to view compile errors for this rule prior to compiling the translation object. This function gives you immediate feedback about the accuracy of your rule. Double-click an error to immediately navigate to the line containing the error. The rule is also compiled when you compile the map.
Defines the extended rule. Displays any errors generated when you clicked the Compile button to compile the extended rule. Double-click an error to make the cursor go to the line containing the error.
330
331
332
Map Constants
The following table describes the properties on the Map Constants dialog box:
Property ID ... Type ... Value Close New Edit Delete Description Lists the data for all constants currently defined in the translator. Exits the Map Constants dialog box. Accesses the Edit Constant dialog box, which enables you to create a new constant. Accesses the Edit Constant dialog box, which enables you to edit the selected constant. Removes the selected constant from the translator.
Map Details
The Map Details dialog box enables you to edit the details of the map, including the description and version information. This dialog box also enables you to instruct the translator to use the pad character and alignment settings of each string field when reading a positional file, to determine how to
333
trim pad characters from the string data. The following table describes the properties of the Map Details dialog box:
Property Author Description Description Person or department that created the map. Required. Unique description of the map. Required. The translator uses this description to identify the map. Some identifying characteristics that you can use are the trading partner that this map is used for, the standard, the version, or the type of transaction this map uses. For example, MWT X 3030 850 is the description of a map used with partner MWT, for an ANSI X12 version 003030 Purchase Order (850). Map Function Select the Sterling Integrator map type from the list. Required. The other map options are available to enable you to import maps from other Sterling Commerce products in order to convert them to Application maps. Note: If you are importing a map, you must change the map function to Sterling Integrator. System Use Configurable Trimming This option is not needed for a Sterling Integrator map type. Instructs the translator to use the pad character and alignment settings of each string field when reading a positional field to determine how to trim pad characters from the string data. If the alignment setting indicates that the data is aligned to the left of the field, then pad characters are trimmed from the right of the field. If the alignment setting indicates that the data is aligned to the right of the field, then pad characters are trimmed from the left of the field. If the alignment setting indicates that the field data is aligned in the center of the field, then pad characters are trimmed from both the left and right of the field. Default is center alignment. For example, use configurable trimming to preserve either trailing or leading spaces in positional data. Gentran:Server for Windows NT 2.x Compatible Rule Execution Major version/ Minor version Use this option only if you are using a map that was created with Gentran:Server for Windows NT 2.x and you need the rules to run exactly as they did in that product. Designate different versions of a map. The valid values for each box are in the range 0 - 255. These two boxes are available for your use only. Application does not use them. For example, if you type 5 in the Major version box and 45 in the Minor version box, the map version number is 5.45. Compiled on EDI Associations area Date that the map was compiled. The field is blank if the map has not been compiled. EDI information, if you selected Delimited EDI for the input, output, or both sides of the map. Note: Change these fields only if you want to change the EDI agency, version, transaction, or functional group of an existing map. You can copy and change an existing map.
334
Map Test
Property OK Cancel
Description Saves changes and exits the dialog box. Exits the dialog box without saving changes.
Map Test
The following table describes the properties on the Map Test dialog box:
Property Login Server and dashboard port Description Application server name and dashboard port in the format [Application server name]:[dashboard port]. The port number required for this parameter is not the base port for the install but rather the dashboard port. The dashboard URL and port are typically listed in the UNIX shell after Application is successfully started. This box cannot be left blank. Application user name that is used by the Map Editor to access the Map Test service. Application password that is used by the Map Editor to access the Map Test service. Note: The password is automatically saved for the duration of the current Map Editor session. For security, when the Map Editor is shut down, the password is removed from the Map Test dialog box and is not stored. Proxy Server and port Proxy server name and port for the client machine in the format [proxy server name]:[port]. Note: This parameter is only necessary if you are executing translation beyond a system firewall. Translation Object Browse Name of the compiled translation object. Browse enables you to select the translation object. This parameter is mandatory. Note: The path you supply must be valid and the translation object extension must be .txo Data File Browse Name of the data file you wish to use when translating data with the test map. Browse enables you to select the data file. Note: If you supply a path, it must be valid. Run Test Cancel Runs the map test. Cancels the map test.
335
Non-Transparent Mode
Name Tab
The following table describes properties on the Name tab:
Property Name Description Map component name. Note: Do not use spaces or hyphens (-) in the name. You can use the underscore (_) to separate words. Business Name Indicates what business data the map component contains. Depending on the map objects hierarchical level, this field may not be displayed. Note: Do not use spaces or hyphens (-) in the name. You can use the underscore (_) to separate words.
336
Namespace Tab
Description Description of the map component. When you import an XML schema, the annotation attached to each XML map component is saved in this box. For non-XML map components, contains any user-defined comments.
Namespace Tab
The following table describes the properties on the XML File Properties dialog box Namespace tab:
Property Enable namespace support Use same namespace as parent element Use this namespace Define namespace prefixes New Edit Delete Description Enable XML namespaces in this side of the map. Use the namespace specified for the immediate parent element. Use an existing namespace in the field, which you type in the following field. Output side only. Click New and two fields display in this area. The first field is where you type the prefix. The second field is where you type the namespace. To edit a namespace prefix, click the line you want to edit and click Edit. To delete a namespace prefix, click the line you want to delete and click Delete.
337
Ordering Tab
The following table describes the properties on the Ordering tab (used on the Group Properties, Variable Length Delimited Data Record Properties, Positional Record Properties, SWIFT Record Properties, CHIPS Field Properties, FEDWIRE Field Properties, and EDI Segment Properties dialog boxes):
Property Normal Start random order Inside random order End random order Description Used for the input side of the map only. The order in which the group, segment, or record can occur. Not used for SWIFT. Note: If you are using a non-EDI syntax and wish to use this feature, you must manually set the ordering start/inside/end group and segment points and also set the associated Ordering Tag. Note: For SWIFTNet, use the random order feature to process ISO 15022 messages (MT 5xx), for which a defined set fieldtags/qualifiers can appear in any order. Ordering Tag Used to perform validation on the ordering types to ensure there is a start and end for every defined ordering sequence. The following caveats apply to this parameter: The Ordering Tag is populated automatically when reading EDI standards, including the HIPAA X12 transactions. For EDI syntaxes, the group Ordering Tag is populated with the group name (for example, if the group name is 100_NM1, then the Ordering Tag is populated with 100the underscore and any alphabetic characters are removed from the group name to generate the Ordering Tag). For EDI syntaxes, the segment Ordering Tag is populated with the segment name. For example, if the segment name is REF, the Ordering Tag is populated with REF. Or, if the segment name is REF:2, the Ordering Tag is populated with REF (the colon and any subsequent numbers are removed to generate the Ordering Tag). For SWIFT maps, this feature is automatically set. If you are using a non-EDI syntax and wish to use this feature, you must manually set the ordering start/inside/end group and segment points and also set the associated Ordering Tag. The Ordering Tag must be the same for a related sequence of groups or segments. The Ordering Tag is not valid for the XML syntax. This parameter is only enabled (and is mandatory) when you select Start random order, Inside random order, or End random order.
338
Output data is formatted without indentation. Type of character encoding by choosing an encoding format from the list.
339
Description Pad character that the translator uses for this field if the field value is less than the number of valid positions. A pad character holds the places that the field value does not occupy. For example, if a field is eight positions long and the field value is AAA (which is only three characters), you will need five placeholders to round out this eight-character field. If you use the ampersand (&) as the pad character, and left-align the field, the field will appear as AAA&&&&&.
Alignment
Whether the field is left-aligned, centered, or right-aligned in the valid number of characters.
340
341
Property Fields
Description Displays each field in the record, in sequence. The information that is displayed in this list is the field name, whether it is mandatory or conditional (M or C), the field type, the starting position, and the positional length of each field. Adds a new field to the record directly after the selected field. Note: You need to complete the Field Details for the new field.
New
Deletes the selected field. Activates the Auto Position function, in which the system automatically positions the fields in the record. The criteria used is that each field is positioned directly after the previous field and is of the length specified in the Maximum box on the Field Properties dialog. Click Yes to acknowledge the warning message that fields will be sequenced in order. Note: It is only valid to use the Auto Position function if you do not define a record Tag, and if you define every field in the record in the sequence that each field occurs.
342
343
Property Can not repeat Can repeat Can repeat, with a maximum usage Maximum usage
Description Element does not repeat (is a single instance). Not displayed if map component is an XML File. The element can repeat (loop) as many times as necessary. Not displayed if map component is an XML File. Element can repeat (loop) as many times as is designated in the Maximum usage box. Not displayed if map component is an XML File. Number of times the element can repeat (loop). Not displayed if map component is an XML File.
344
The following table describes the properties of the Rule Library dialog box:
Property Library Name Description The name of the library. This name will be the name of the library file stored outside Map Editor in the Sterling Commerce/Map Editor/Extended Rule Library directory with the .erl file extension appended. Note: You cannot use spaces or special characters. Author Description Version Rules Add Rule Modify Rule Delete Rule OK Cancel The name of the person who created the extended rule library. Description of the library. Version of the rules as they related to the standard. Lists the rules already defined, including the rule name and purpose. Accesses the Library Rule Dialog Box on page 328 so you can add a new rule. Accesses the Library Rule Dialog Box on page 328 for the selected rule so you can modify it. Deletes the selected rule. Saves the function and closes the dialog box. Cancels the function without saving changes.
Add Library
345
Description Deletes the selected library. Saves the function and closes the dialog box. Cancels the function without saving changes.
346
Property Wildcard
Description
Caution:
Use the wildcard function with caution because this segment will pass through the translator without being processed. In this instance, the translator treats the segment as one field, though the segment may contain many fields. For each wildcard segment, you must be sure that the first field is large enough to contain the entire segment (the accumulated length of all the fields in the segment). Define the length for the first field in the segment in the Max Length box on the Field Properties dialog box.
Floating Binary
This segment floats (does not have a fixed position in the transaction set). Select this check box if you want to flag this segment as containing binary data. When this option is selected, the Key Field and Wildcard functions are unavailable.
Caution:
For the ANSI X12 841 (Binary Document), the segment must be flagged as containing binary data.
Note: If you select Binary, you must define an element of data-type Bin Length and another element of data-type Bin Data. The Bin Length element must precede the Bin Data element. Alternate Tag An additional segment identification code tag. For example, the translator recognizes an EDI segment as:
<TAG>[Delimiter]<DATA>[Delimiter]<DATA>.<DATA>[Segment Terminator]
The alternate tag for each segment enables the translator to recognize that segment. Specify an alternate tag only if you selected Wildcard under Special Properties, to define a segment that will be recognized by the translator. This tag enables you to create loops that contains wildcard segments and is used as a breaking point for the translator (to break out of the loop to start processing again). This is useful during interchange breaking, when you want to process the beginning and end of a file, but not the middle. You might use wildcards if you have two of the same segments in your map (for example, N1), and you must differentiate the two segments. If one N1 segment will contain Bill To information and the other N1 segment will contain Ship To information, you can use wildcards to differentiate between the functions of the two segments.
347
If you select this check box and also select: Insert and a row already exists, the translator performs an update. Update and a row does not exist, then the translator performs an insert.
On failure, automatically switch selected operation and retry Inserts as Updates or Updates as Inserts
If selected, if the operation is not completed the translator will automatically switch the operation type (that is, update to insert or insert to update) and retry the operation. When the Delete option is selected, this check box is inactive because it does not apply to the delete operation.
348
Description List of database tables and views associated with the selected data source if a schema has been generated for the data source. Column information from the selected database table if a schema has been generated for the data source. The data type displayed is the translator data type of the column, not the database data type.
349
Description Specifies the value used at field-level configuration dialog boxes. The default is Use properties file setting. Valid choices are: Use properties file setting (specifies that the rule or rules specified in the customer_overrides.properties file is followedthis is the default) Dont allow/generate + prefix (specifies that regardless of whether the customer_overrides.properties file contains a rule or rules to allow the + prefix, the plus sign will not be used for the field) Allow/generate + prefix (specifies that even if the customer_overrides.properties file indicates that the + prefix is not allowed in maps, the rule or rules will be overridden and the plus sign will be used for the field)
Using the Select Standard Rule on page 174 Using the Update Standard Rule on page 183 Using the System Variable Standard Rule on page 159 Using the Use Constant Standard Rule on page 160 Using the Use Accumulator Standard Rule on page 163 Using the Loop Count Standard Rule on page 163 Using the Use Code Standard Rule on page 170
The following table describes the property for the Standard Rule tab:
Property Standard Rule Description A standard rule that will affect this field or element during processing. The rules are mutually exclusive. For property descriptions of each standard rule, see Chapter 8, Using Standard Rules.
350
Tag
351
Description The position in the record where the decimal separator occurs. The decimal separator indicates the decimal point in a numeric box, such as a period (.) or comma (,). This box is active only if the Use syntax record check box is selected.
Tag (Delimiter Position) The position in the record where the tag delimiter occurs. The tag delimiter is the character that determines the end of each segment tag. This box is active only if the Use syntax record check box is selected. Segment (Delimiter Position) Position in the record where the segment delimiter occurs. The segment delimiter is the character that determines the end of each segment. This box is active only if the Use syntax record check box is selected. Element (Delimiter Position) Position in the record where the element delimiter occurs. The element delimiter is the character that determines the end of each element. This box is active only if the Use syntax record check box is selected. Repeating Element (Delimiter Position) Position in the record where the repeating element occurs. The repeating element delimiter is the character that determines the start of a new repetition of an element or subelement. This box is active only if the Use syntax record check box is selected. Sub Element (Delimiter Position) Position in the record where the subelement delimiter occurs. The subelement delimiter is the character that determines the end of each subelement. Subelements are also known as component elements. This box is active only if the Use syntax record check box is selected.
Syntax Tokens
The following table describes the properties of the Syntax Tokens dialog box:
Property Token Description Value designated as the syntax token, for each existing Syntax Token. The Token contains a range of characters that, when applied to a field/element, dictate the way that field/element must be formatted. Allowed character ranges Close New Change Range of characters that are permitted for each existing Syntax Token. Closes the Syntax Tokens dialog box. Accesses the Edit Syntax Token dialog box to enable you to create a new syntax token. Accesses the Edit Syntax Token dialog box to enable you to edit the selected token.
352
Property Delete
Description Deletes the selected syntax token. Note: The selected entry will be deleted without warning.
DBCS
Accesses the DBCS dialog box. The DBCS button is only available if you are executing a double-byte version of Windows. This feature enables you to create double-byte syntax tokens.
The segment tag for each segment enables the translator to recognize that segment. Use the segment tag only if you specified Wildcard under Special Properties, to define a segment that the translator will recognize. This tag enables you to create loops that contains wildcard segments (segments that are not processed) and is used as a breaking point for the translator (to break out of the loop to start processing again). This is useful during interchange breaking, when you want to process the beginning and end of a file, but not the middle.
353
354
Tree Tab
The following table describes the properties for the Tree tab on the Preferences dialog box, which enables you to set global viewing options
Property These setting customize the look of the file format tree Colours Font Description Enable you to specify whether you want the group, record (segment), or field (element) descriptions displayed. Accesses the Colours dialog box to enable you to change colors for map components. Accesses the Font dialog box to enable you change fonts in the map.
355
Attribute is optional. If no value is set, the document is still considered valid. Attribute is required. If no value is set, the document is not valid.
356
Description Default value exists for this attribute. You must define the default value. If the incoming data does not contain a value for this attribute, the translator creates it with the default value. Default value of this attribute is fixed (cannot be changed). You must define the default value. If the incoming data does not match this value, the document is not valid.
357
Validation Tab
The following table describes the properties on the Validation tab for the Element Properties, Field Properties, Variable Length Delimited Data Fields, CII TFDs, XML Pcdata, XML Attributes, SWIFT Fields, and SQL Fields:
Property Mandatory field Description Select this check box to indicate that the map component is required. Note: For HIPAA, select this check box if the element is required (designated as R in the HIPAA standard) and leave the check box clear if the element is designated as situational (S). Minimum length Maximum length Data-type Minimum number of characters in the map component. Maximum number of characters of the map component. Type of data for this map component. Valid values are: String - Alphanumeric Number - Numeric, real, overpunched (not used for SWIFTNet), or packed (for Positional only) Date/time - Date or time Bin Data - binary data (only available if you select Binary on the Special tab of the EDI Segment Properties dialog box) Bin Length - length of binary data (only available if you select Binary on the Special tab of the EDI Segment Properties dialog box) Note: If you select Binary, you must define an element of data-type Bin Length and another element of data-type Bin Data. The Bin Length element must precede the Bin Data element. Data format How the data in the map component will be formatted. Depending on the data type you selected, you can either: For the String data-type, select a syntax token to denote that this map component must be formatted as the syntax token dictates. Note: Free Format indicates that any characters are acceptable in the field. The translator does not check the characters for compliance. For Number or Date/Time data-type, select the data format from a list. Data is Read/written as Raw Bytes Type of byte ordering: Little-endian byte ordering specifies that the least significant character is first. Intel and Windows use this order. Big-endian byte ordering specifies that the most significant character is first. UNIX and Java use this order. Note: Not used for SWIFTNet.
358
Validation Tab
Description How the Map Editor should handle the use and generation of a plus sign. By default, the Positive Number Format section will display the global option that you configured on the Standard Formats tab of the Preferences dialog (see Standard Formats Tab on page 349), and you can change the parameter to a setting that will only affect the map component you are currently accessing when the data-type of the map component is Number. Note: This parameter is not valid for SQL fields, packed decimal numeric fields, or SWIFTNet fields. This parameter is only enabled if the data-type of the map component is Number and the data format is not a packed decimal format. Valid choices are: Use properties file setting (specifies that the rule or rules configured in the customer_overrides.properties file should be followed for this map component) Dont allow/generate + prefix (specifies that regardless of whether the Preference dialog box (Standard Formats tab) or the customer_overrides.properties file contains a rule or rules to allow the + prefix, the plus sign will not be allowed for this map component) Allow/generate + prefix (specifies that regardless of whether the Preference dialog box (Standard Formats tab) or the customer_overrides.properties file indicates that the + prefix is not allowed in maps, the rule or rules will be overridden and the plus sign will be allowed to be used and generated for this map component when the data-type of the field is Number)
359
Version Tab
The following table describes the properties for the Version tab on the Preferences dialog box, which enables you to set a global option to specify when map version numbers are incremented:
Note: You can also set and increment the map version manually on the Map Details dialog box.
Note:
The auto-increment function updates the minor version number of the map on the Map Details dialog box, up to 255. If the minor version number exceeds 255, the system updates the minor version number to zero and increases the major version number.
Property Only when manually changed Ask whether to increment when saving a map Ask whether to increment when compiling a map Always increment when saving a map Always increment when compiling a map
Description The minor version number of the map is only updated when you do so manually on the Map Details dialog box. When you save a map, you are prompted with a message box asking whether you want to increment the minor version on the Map Details dialog box. When you compile a map, you are prompted with a message box asking whether you want to increment the minor version on the Map Details dialog box. When you save a map the minor version on the Map Details dialog box is incremented. When you compile a map the minor version on the Map Details dialog box is incremented.
360
Appendix D
This section contains detailed information about how to use extended rule indexes in the Map Editor and translator and uses detailed examples to illustrate the proper use of indexes. See Chapter 9, Using Extended Rules for more information about extended rules. This section covers the following topics: Introduction to Indexes Simple Example of Using Indexes Complex Example of Using Indexes Using Indexes with an XML File Format
Introduction to Indexes
To write valid extended rules, you must understand how to use indexes. Without indexes, it is possible that a rule which moves data from one field to another may result in lost data. An index is a number that is used within an extended rule only when referencing a field contained by a repeating record or group. This number is used to specify the exact occurrence (iteration) of the repeating group or record that you want the translator to access.
Note: When you use indexes in the Map Editor, you must always initialize them. The translator does not initialize any variables defined in a map.
361
An index is a valuable part of a Fully Qualified Reference format (FQR format). When you write an extended rule that references a field, you must clarify for the translator exactly which field you need it to access. The FQR format helps to remove ambiguity and enables the author of the extended rule to be extremely explicit about where the translator can find the field they are referencing. The following figure shows the FQR format:
$GroupName[index1][index2].#FieldName
The FQR format defines how a field must be referenced within an extended rule and provides three important pieces of information to the translator: 1. Group Name The name of the repeating map component that contains the field. In a nested group structure, this is the name of the innermost repeating group or record containing the field. 2. Index An index consists of a number enclosed in square brackets. The number represents the specific occurrence of data you want to access within the repeating group or record. If the field to be accessed is in a nested group structure, you must provide an index for each level of nesting. 3. Field Name The name of the field containing the data to be accessed. As an analogy, you can think of specifying an index in terms of choosing a floor number in an elevatorthere are many floors in a building, and the elevator does not know where you intend to go, unless you tell it by pushing the button for the appropriate floor number. In a similar way, you can think of a repeating record as a building with many floorseach floor is a different occurrence of data in that repeating record. The translator must be informed which occurrence of the record to access to retrieve the appropriate data in the same way you must indicate which floor you intend to visit to an elevator. The index is analogous to the floor number. For example, you create a map to process inbound orders and you want to write an extended rule to save the shipping address into a string variable. This map uses a field named CompanyAddress, which is contained by a repeating record named CompanyInfo that can repeat up to ten times. You know that the third occurrence of the CompanyInfo record always contains the shipping address for the parts order. Therefore, the extended rule you write using the FQR format follows:
string [64] strAddress; strAddress = $CompanyInfo[3].#CompanyAddress;
362
Introduction to Indexes
Sometimes it is appropriate to use an Abbreviated Reference Format (ABR format) when accessing a field: #FieldName
1
The ABR format defines how a field must be referenced within an extended rule and provides only one piece of information to the translator:
Field Name The name of the field containing the data to be accessed.
The ABR format consists of a field name only. The ABR format must only be used when you write an extended rule at the field level that references a field within the current record. An example of an extended rule using the ABR format follows:
#TempAddress = #CompanyAddress;
The following table lists many scenarios in which you would use an extended rule to reference a field, and notes whether the FQR format must be used in that particular situation:
Rule Level Field Field Record Record Group Group Session Map Object Referencing current field or another field within the current record Referencing a field outside the current record Referencing a field within the current record Referencing a field outside the current record Referencing a field within the current group Referencing a field outside the current group Referencing a field anywhere in the map Use FQR Format No Yes No Yes Yes Yes Yes
363
Background Information
The translator works in the most efficient manner possible. When the translator is processing the Output side of the map and encounters a repeating structure (record or group) that does not contain any data, it detects no further data for that repeating structure and moves on to the next map component. If the translator did not function in this manner, it would have to read through the maximum number of loops permitted for that repeating structure, which would lengthen the time necessary to process maps. When the translator is processing a map, it creates a data storage area based on the structure of the Input side of the map (the source side of the map), because the Input side of the map is processed first. Therefore, extended rules address the map based on the hierarchy of the Input side. When the end of the Input structure is reached, the translator processes the Output side of the map. When you use extended rules, you must be careful to always address the Input side of the map so the translator can locate the map object that the rule accesses. From the Input side of a map, you have access to the entire file structure. From the Output side of a map, extended rules only have access to the current record (on the Output side) and the entire Input side of the map.
364
In the map, you have created a temporary input repeating segment (TEMP_NTE) to receive the notes for only those segments that have a qualifier of Y in the NTE01 (0363) element. Then you add a simple link from the Notes element in the TEMP_NTE segment to the repeating Output record (Notes), as displayed in the following figure:
After running translation, the output file contains the following data for the Notes segment:
Notes Must include this line in the output file
There is only one segment that contains the required data, but the input file contains three segments that must be written to the Output file. The Output file only contains one segment because the extended rule did not make use of an index to track which specific occurrence of the temporary segment to write the data.
Arrays
A repeating structure is represented internally (in the translator) as an array. An array groups a number of items into a larger unit. The items in an array are accessed by an index number. When you place data into an array, you use an index to make sure that each consecutive occurrence of an array is populated, and thus there will never be an instance of the array that does not contain data, and this prevents data loss.
365
Translation
The following is a step-by-step explanation of how the translator processed the map using the preceding rule. 1. The translator initiates the Input side of the map. a. The first NTE segment is processed.
Note: The translator reads the first occurrence of the NTE segment. The rule finds the qualifier Y in the NTE01 element, so it maps the contents of the NTE02 element to the first occurrence of the TEMP_NTE segment.
2. The translator initiates the Output side of the map. a. The translator processes the first occurrence of the TEMP_NTE segment to verify whether there is any data to be linked across to the Output side of map.
Note: The first occurrence of the TEMP_NTE segment contains data, so the translator passes that data across to the Output segment.
366
b. The translator processes the second occurrence of the TEMP_NTE segment to verify whether there is any data to be linked across.
Note: There is no data in the second occurrence of the TEMP_NTE segment, so the translator is finished processing the TEMP_NTE segment and moves to the next segment to process it.
The following table is an example of the array the translator would create for the TEMP_NTE segment using the extended rule that does not use indexes:
Occurrence 1 2 3 4 5 Must include this line in the output file. Must include this line in the output file. Data Generated Must include this line in the output file.
The following table demonstrates that an extended rule must use an index so that the data is written to each occurrence of the array, consecutively:
Occurrence 1 2 3 Data Generated Must include this line in the output file. Must include this line in the output file. Must include this line in the output file.
367
In the preceding extended rule, nte_cnt is the index, and it was declared and initialized on the Input On Begin extended rule, using the following declaration and initialization rule:
Integer nte_cnt; nte_cnt = 1;
The index is declared on the Input (file format) level because it must be available to be used on the NTE segment. You cannot declare the index on the NTE segment itself, because that would cause the translator to re-declare the index each time an NTE segment is received. By declaring it on the Input level, the index is ready for use and in scope for the entire Input side of the map. The rule adds one to the index each time the If statement condition is met, so it does not create empty occurrences of the TEMP_NTE segment. When the map is processed with the preceding rule, the correct output is received.
368
e. The fifth NTE segment is processed as follows: The nte_cnt index is currently set to 3. The rule found the qualifier Y in the NTE01. The value in the nte_cnt index is 3, so the data is written to the third occurrence of the TEMP_NTE segment. The index is then incremented by one.
2. The translator initiates the output side of the map. a. The translator processes the first occurrence of the TEMP_NTE segment to verify whether there is any data to be linked across to the Output side of map.
Note: The first occurrence of the TEMP_NTE segment contains data, so the translator passes that data across to the Output segment.
b. The translator processes the second occurrence of the TEMP_NTE segment to verify whether there is any data to be linked across to the Output side of map.
Note: The second occurrence of the TEMP_NTE segment contains data, so the translator passes that data across to the Output segment.
c. The translator processes the third occurrence of the TEMP_NTE segment to verify whether there is any data to be linked across to the Output side of map.
Note: The third occurrence of the TEMP_NTE segment contains data, so the translator passes that data across to the Output segment.
d. The translator processes the fourth occurrence of the TEMP_NTE segment to verify whether there is any data to be linked across to the Output side of map.
Note: The fourth occurrence of the TEMP_NTE segment does not contain data, so the translator is finished processing the TEMP_NTE segment.
369
Following is a sample of the repeating structure that you receive in the input file:
IT1*1*****SH*Service is Requested SLN*1**O SAC*S**AB**0****EA*0***Service**Service SAC*S**AB**500.00****EA*20***Service**Service SAC*S**AB**0****EA*23***Service**Service SAC*S**AB**121.11****EA*10***Service**Service SLN*2**O SAC*S**AB**0****EA*50***Service**Service SAC*S**AB**250****EA*2***Service**Service IT1*2*****SH*Service is Requested SLN*1**O SAC*S**AB**0****EA*24***Service SAC*S**AB**45.67****EA*200***Service SAC*S**AB**0****EA*78***Service**Service SAC*S**AB**222.74****EA*103.789***Service
On the Input side of the map, you have created a temporary repeating segment (TEMP_SAC) to receive the SAC information for those segments where the Price is not equal to zero, and you have linked the TEMP_SAC segment to the Output side of the map. Now, you want the translator to create the following array:
Loop Hierarchical Structure First IT1, First SLN, First TEMP_SAC First IT1, First SLN, Second TEMP_SAC First IT1, Second SLN, First TEMP_SAC Second IT1, First SLN, First TEMP_SAC Occurrence 1,1,1 1,1,2 1,2,1 2,1,1 Data SAC*S**AB**500.00****EA*20***Service**Service SAC*S**AB**121.11****EA*10***Service**Service SAC*S**AB**250****EA*2***Service**Service SAC*S**AB**45.67****EA*200***Service SAC*S**AB**222.74****EA*103.789***Service
370
371
Now, after the translator runs, the Output file contains no data from the SAC segment, but there are five valid SAC segments in the input file. The reason the Output file does not contain the SAC segment information is because the extended rule did not make use of indexes to track the specific occurrence of the TEMP_SAC segment to which it must write the data.
Arrays
A repeating structure is represented internally (in the translator) as an array. An array groups a number of items into a larger unit. The items in an array are accessed by an index number. When you place data into an array, you use an index to make sure that each consecutive occurrence of an array is populated, and thus there will never be an instance of the array that does not contain data, and this prevents data loss.
Translation
The following is a step-by-step explanation of how the translator processed the map using the preceding rule: 1. The translator initiates the Input side of the map. 2. The first IT1 segment is processed. a. The first SLN segment is processed. b. The first SAC segment is processed as follows: The If statement is evaluated false because the value in the SAC05 element is equal to zero. The translator is on the first occurrence of the SAC segment, so it does not write any data to the first occurrence of the TEMP_SAC segment.
372
c. The second SAC segment is processed as follows: The If statement is evaluated to true because the value in the SAC05 is equal to 500.00 (more than zero). The translator is on the second occurrence of the SAC segment, so it writes the contents of the SAC segment to the second occurrence of the TEMP_SAC segment. The If statement is evaluated false because the value in the SAC05 element is equal to zero. The translator is on the third occurrence of the SAC segment, so it does not write any data to the third occurrence of the TEMP_SAC segment. The If statement is evaluated to true because the value in the SAC05 is equal to 112.11. The translator is on the fourth occurrence of the SAC segment, so it writes the contents of the SAC segment to the fourth occurrence of the TEMP_SAC segment.
f.
The second SLN segment is processed. The If statement is evaluated false because the value in the SAC05 element is equal to zero. The translator is on the first occurrence of the SAC segment, so it does not write any data to the first occurrence of the TEMP_SAC segment. The If statement is evaluated to true because the value in the SAC05 is equal to 250. The translator is on the second occurrence of the SAC segment, so it writes the contents of the SAC segment to the second occurrence of the TEMP_SAC segment.
3. The second IT1 segment is processed. a. The first SLN segment is processed. b. The first SAC segment is processed as follows: The If statement is evaluated false because the value in the SAC05 element is equal to zero. The translator is on the first occurrence of the SAC segment, so it does not write any data to the first occurrence of the TEMP_SAC segment. The If statement is evaluated to true because the value in the SAC05 is equal to 45.67. The translator is on the second occurrence of the SAC segment, so it writes the contents of the SAC segment to the second occurrence of the TEMP_SAC segment.
373
d. The third SAC segment is processed as follows: The If statement is evaluated false because the value in the SAC05 element is equal to zero. The translator is on the third occurrence of the SAC segment, so it does not write any data to the third occurrence of the TEMP_SAC segment. The If statement is evaluated to true because the value in the SAC05 is equal to 222.74. The translator is on the fourth occurrence of the SAC segment, so it writes the contents of the SAC segment to the fourth occurrence of the TEMP_SAC segment.
4. The translator initiates the Output side of the map. 5. The translator processes the first occurrence of the TEMP_SAC segment in the first SLN group of the first IT1 group to verify whether there is any data to be linked across to the Output side of the map. There is no data in the first occurrence of the TEMP_SAC segment so the translator is finished processing the TEMP_SAC segment and moves on to the next segment. 6. The translator processes the first occurrence of the TEMP_SAC segment in the second SLN group of the first IT1 group to verify whether there is any data to be linked across to the Output side of the map. There is no data in the first occurrence of the TEMP_SAC segment so the translator is finished processing the TEMP_SAC segment and moves on to the next segment. 7. The translator processes the first occurrence of the TEMP_SAC segment in the first SLN group of the second IT1 group to verify whether there is any data to be linked across to the Output side of the map. There is no data in the first occurrence of the TEMP_SAC segment so the translator is finished processing the TEMP_SAC segment and moves on to the next segment. The following table is an example of the array the translator will create for the TEMP_SAC segment using the extended rule that does not use indexes:
Loop Hierarchical Structure First IT1, First SLN, First TEMP_SAC First IT1, First SLN, Second TEMP_SAC First IT1, First SLN, Third TEMP_SAC First IT1, First SLN, Fourth TEMP_SAC First IT1, Second SLN, First TEMP_SAC Occurrence 1,1,1 1,1,2 1,1,3 1,1,4 1,2,1 SAC*S**AB**121.11****EA*10***Service**Service SAC*S**AB**500.00****EA*20***Service**Service Data
374
Loop Hierarchical Structure First IT1, Second SLN, Second TEMP_SAC Second IT1, First SLN, First TEMP_SAC Second IT1, First SLN, Second TEMP_SAC Second IT1, First SLN, Third TEMP_SAC Second IT1, First SLN, Fourth TEMP_SAC
Data SAC*S**AB**250****EA*2***Service**Service
SAC*S**AB**45.67****EA*200***Service
SAC*S**AB**222.74****EA*103.789***Service
However, when you compile the preceding extended rule, you receive the following error for several lines of the rule: insufficient indexes to access group TEMP_SAC:4. You receive this error because the TEMP_SAC segment is a child to the SLN group, and the SLN group is a child to the IT1 group, and thus you need an index for each group. In this case, because the IT1 and SLN groups are repeating groups, the rule cannot use an index of 1 to reference them, as noted in the following incorrect example:
$TEMP_SAC:4[1][1][Z].#0248:4 = #0248:3;
Using an index of 1 in this instance will only enable the translator to access the first occurrence of the IT1 and SLN groups. We need the indexes for the IT1 group and the SLN group to keep track of which occurrence the translator is currently processing for both groups.
375
The following example contains the extended rule, which has been modified to use an index for each group (IT1, SLN, and TEMP_SAC):
IF #0610:2 != 0 THEN BEGIN $TEMP_SAC:4[X][Y][Z].#0248:4 = #0248:3; $TEMP_SAC:4[X][Y][Z].#1300:4 = #1300:3; $TEMP_SAC:4[X][Y][Z].#0559:10 = #0559:9; $TEMP_SAC:4[X][Y][Z].#1301:3 = #1301:2; $TEMP_SAC:4[X][Y][Z].#0610:7 = #0610:2; $TEMP_SAC:4[X][Y][Z].#0378:3 = #0378:2; $TEMP_SAC:4[X][Y][Z].#0332:3 = #0332:2; $TEMP_SAC:4[X][Y][Z].#0118:3 = #0118:2; $TEMP_SAC:4[X][Y][Z].#0355:61 = #0355:54536; $TEMP_SAC:4[X][Y][Z].#0380:15 = #0380:84; $TEMP_SAC:4[X][Y][Z].#0380:30 = #0380:168; $TEMP_SAC:4[X][Y][Z].#0331:3 = #0331:2; $TEMP_SAC:4[X][Y][Z].#0127:29 = #0127:571; $TEMP_SAC:4[X][Y][Z].#0770:3 = #0770:2; $TEMP_SAC:4[X][Y][Z].#0352:24 = #0352:19; Z = Z + 1; END
You have also placed an On End extended rule on the SLN group to add 1 to the Y index. The Y index must be incremented to account for when the translator receives a new SLN group. For example:
Y = Y + 1;
The extended rule on the On End of the SAC segment adds 1 to the Z index only when the If statement is evaluated as true, so it is not creating empty occurrences of the TEMP_SAC segment.
However, when you process the map with the preceding rule, you still do not receive the correct output. This time you do receive data from the SAC segment, but you only receive the first two SAC segments in which the SAC05 element does not equal zero (that is, in which the If statement is evaluated as true).
376
The following table is an example of the array the translator will create for the TEMP_SAC segment using the index configuration described previously:
Loop Hierarchical Structure First IT1, First SLN, First TEMP_SAC First IT1, First SLN, Second TEMP_SAC First IT1, Second SLN, First TEMP_SAC Second IT1, First SLN, First TEMP_SAC Occurrence 1,1,1 1,1,2 1,2,3 2,3,4 Data SAC*S**AB**500.00****EA*20***Service**Service SAC*S**AB**121.11****EA*10***Service**Service SAC*S**AB**250****EA*2***Service**Service SAC*S**AB**45.67****EA*200***Service SAC*S**AB**222.74****EA*103.789***Service
b. The translator processes the second occurrence of the TEMP_SAC segment in the first SLN group of the first IT1 group to verify whether there is any data to be linked across to the Output side of the map. The second occurrence of the TEMP_SAC segment does contain data, so the translator links this information to the Output side. The extended rule wrote the data to the proper occurrence in the array (1,1,2), as noted in the preceding table.
c. The translator processes the third occurrence of the TEMP_SAC segment in the first SLN group of the first IT1 group to verify whether there is any data to be linked across to the Output side of the map. The third occurrence of the TEMP_SAC segment does not contain data, so the translator is finished processing the TEMP_SAC segment for this iteration of the SLN group.
377
d. The translator processes the first occurrence of the TEMP_SAC segment in the second SLN group of the first IT1 group to verify whether there is any data to be linked across to the Output side of the map. The first occurrence of the TEMP_SAC segment does not contain data, so the translator is finished processing the TEMP_SAC segment for this iteration of the SLN group. The extended rule wrote the data to the improper occurrence in the array (1,2,3), as noted in the preceding table, which is why the translator did not find the data (because it was looking for the data in occurrence 1,2,1).
e. The translator processes the first occurrence of the TEMP_SAC segment in the first SLN group of the second IT1 group to verify whether there is any data to be linked across to the Output side of the map. The first occurrence of the TEMP_SAC segment does not contain data, so the translator is finished processing the TEMP_SAC segment for this iteration of the SLN group. The extended rule again wrote the data to the improper occurrence in the array (2,3,5), as noted in the preceding table, which is why the translator did not find the data (because it was looking for the data in occurrence 2,1,1).
After running translation with the modified map, only two occurrences of the SAC segment were received, rather than the expected five segment, because the indexes for the SLN group and the TEMP_SAC group were not reset on their parent structure.
Note: When you are working with nested structures and using indexes to map data to temporary structures, the child indexes must be reset to 1 on the start of their parent structure.
In reviewing the array built by the translator in the table on page 377, we can see that a missing occurrence of data happened when the translator wrote the third iteration of data to the TEMP_SAC segment. When the If statement found the third SAC segment, which did not have a value of zero in the SAC05, the data was written to the third occurrence of the TEMP_SAC segment (in the second occurrence of the SLN segment in the first occurrence of the IT1 segment). This is the missing occurrence of data. The next section explains how to use complete indexes so there are no occurrences of missing data in the map.
The TEMP_SAC segment is a child to the SLN segment, so you must reset the Z index to 1 on the On Begin of the SLN group. For example:
Z = 1;
378
The SLN group is a child to the IT1 group, so you must reset the Y index to 1 on the On Begin of the IT1 group. For example:
Y = 1;
The index used for the IT1 group does not need to be reset, because the IT1 group is the first parent in the nesting of groups. If you did reset the index for the IT1 group, the rule on the SAC segment would overwrite data already written to the TEMP_SAC segment.
Creating the Array
The following table describes how the translator will create the array after you added the rules to reset the Y and Z indexes:
Loop Hierarchical Structure First IT1, First SLN, First TEMP_SAC First IT1, First SLN, Second TEMP_SAC First IT1, Second SLN, First TEMP_SAC Second IT1, First SLN, First TEMP_SAC Occurrence 1,1,1 1,1,2 1,2,1 2,1,1 Data SAC*S**AB**500.00****EA*20***Service**Service SAC*S**AB**121.11****EA*10***Service**Service SAC*S**AB**250****EA*2***Service**Service SAC*S**AB**45.67****EA*200***Service SAC*S**AB**222.74****EA*103.789***Service
Now you are properly using indexes in the map, and when translation is run, the information from all five SAC segments is received in the Output file, as expected.
For more information, see Example of Using Indexes with XML File Format on page 379.
379
In the map, you created a temporary input repeating structure (Temp_LineItem) to receive the information for only those iterations of the LineItem element in which the QuantityShipped value is greater than zero. Also, you linked elements in the Temp_LineItem element structure to the appropriate Output segment.
Map Setup
You must declare an index because Temp_LineItem is a repeating structure, and the map must write the data consecutively to the repeating iterations of Temp_LineItem to verify that no data is missed when the Output segment is created during translation.
For the Input Level (PETTEST_INVOICE) On-Begin extended rules, you declared and initialized an index, as the following example indicates:
Integer X; X = 1;
380
Also, you added the following an On-End extended rule for the LineItem element:
If $QuantityShipped.#QuantityShipped > 0 Then Begin $Temp_LineNum[X].#Temp_LineNum = $AssignedIdentification.#AssignedIdentification; $Temp_Shipped[X].#Temp_Shipped = $QuantityShipped.#QuantityShipped; $Temp_Ordered[X].#Temp_Ordered = $QuantityOrdered.#QuantityOrdered; $Temp_UOM[X].#Temp_UOM = $UOM.#UOM; $Temp_UnitPrice[X].#Temp_UnitPrice = $UnitPrice.#UnitPrice; $Temp_ProductCode[X].#Temp_ProductCode = $ProductCode.#ProductCode; $Temp_UPCCode[X].#Temp_UPCCode = $UPCCode.#UPCCode; $Temp_Description[X].#Temp_Description = $ItemDescription.#ItemDescription; $Temp_TermsType[X].#Temp_TermsType = $TermsTypeCode.#TermsTypeCode; $Temp_TermsDis[X].#Temp_TermsDis = $TermsDiscountPercent.#TermsDiscountPercent; X = X + 1; End
After you compile this extended rule, you receive the following compilation errors:
381
So, to assign the value of the elements in the LineItem elements to the temporary elements in the Temp_LineItem element, you need to use four indexes for each assignment statement in this rule, as indicated in the following example:
2 3
So, you now know that you need four indexes for each assignment statement in the rule, but not all the elements and content particles in this hierarchical structure repeat, and thus you will need to address the non-repeating elements and content particles separately, as noted in the subsequent topic.
How to Use an Index for Elements and Content Particles that Do Not Repeat
The content particles and elements that do not repeat must use an index of [1], because there is only one occurrence of each of these structures. However, when supplying an index for each content particle and element in the hierarchical structure to the element being referenced, the index list of the rule can become quite lengthy.
Caution: It is very important that you verify the indexes are in the correct order when you write the rule, or you will not receive the correct output.
382
Now that you established the number of indexes that are needed, you can apply the entire rule, as indicated in the following example:
If $QuantityShipped.#QuantityShipped > 0 Then Begin $Temp_LineNum[1][X][1][1].#Temp_LineNum = $AssignedIdentification.#AssignedIdentification; $Temp_Shipped[1][X][1][1].#Temp_Shipped = $QuantityShipped.#QuantityShipped; $Temp_Ordered[1][X][1][1].#Temp_Ordered = $QuantityOrdered.#QuantityOrdered; $Temp_UOM[1][X][1][1].#Temp_UOM = $UOM.#UOM; $Temp_UnitPrice[1][X][1][1].#Temp_UnitPrice = $UnitPrice.#UnitPrice; $Temp_ProductCode[1][X][1][1].#Temp_ProductCode = $ProductCode.#ProductCode; $Temp_UPCCode[1][X][1][1].#Temp_UPCCode = $UPCCode.#UPCCode; $Temp_Description[1][X][1][1].#Temp_Description = $ItemDescription.#ItemDescription; $Temp_TermsType[1][X][1][1].#Temp_TermsType = $TermsTypeCode.#TermsTypeCode; $Temp_TermsDisc[1][X][1][1].#Temp_TermsDis = $TermsDiscountPercent.#TermsDiscountPercent; X = X + 1; End
If you review the sample data file for the preceding scenario in Sample: Repeating Structure Received for XML Inbound Scenario on page 385, you will note that the third, fourth, and seventh occurrences of the LineItem element contain a value of zero for the QuantityShipped. This is important because if the extended rule you create does not contain indexes, when the translator reads the third occurrence of the array and determines it does not contain data, it assumes the remaining occurrences of the array are empty, and thus the translator concludes that its processing of the DET Output segment is complete and any data that is present in the remaining occurrences of the array is not mapped to the output side of the map.
383
The following table is an example of the array that the translator creates for the Temp_LineItem element using the extended rule with the index:
Occ Temp _ Temp _ Temp _ Temp LineNum Shipped Ordered _ UOM Temp _ Unit Price 100 Temp _ Temp _ Product UPCCode Code Temp _ Description Temp _ Terms Type XX Temp _ Terms Dis 0
00001
100
100
EA
32166
1236547894
This is the 1st item description This is the 2nd item description This is the 3rd item description This is the 4th item description
00002
50
100
EA
25.5
12354
321321123
10
00003
EA
500
33245
2222222222 22 987654321
10
00004
250
250
EA
0.5
77511
10
Note: The Occ column indicates in which occurrence of the array the data is stored, and the remaining column headings indicate each temporary element in the Temp_LineItem structure.
The following is the output file you receive after translating the map:
This time you received the proper output because the extended rule wrote the necessary information down to the Temp_LineItem structure consecutively. This prevented missing occurrences of data in the array. If the extended rule did not use indexes, the third, fourth, and seventh occurrences of the array would be empty. This would cause the Output file to contain only the first two occurrences of the DET segment on the output side of the map, because when the translator reads the third occurrence of the array and determines it does not contain data, it assumes the remaining occurrences of the array are empty. Thus, the translator concludes that its processing of the DET segment is complete and any data that is present in the remaining occurrences of the array is not mapped to the output side of the map.
384
385
<LineItem> <AssignedIdentification>00005</AssignedIdentification> <QuantityShipped>5</QuantityShipped> <QuantityOrdered>5</QuantityOrdered> <UOM>EA</UOM> <UnitPrice>500.00</UnitPrice> <ProductCode>33245</ProductCode> <UPCCode>222222222222</UPCCode> <ItemDescription>THIS IS THE 5TH ITEM DESCRIPTION</ItemDescription> <TermsTypeCode>10</TermsTypeCode> <TermsDiscountPercent>0</TermsDiscountPercent> </LineItem> <LineItem> <AssignedIdentification>00006</AssignedIdentification> <QuantityShipped>250</QuantityShipped> <QuantityOrdered>250</QuantityOrdered> <UOM>EA</UOM> <UnitPrice>0.50</UnitPrice> <ProductCode>77511</ProductCode> <UPCCode>987654321</UPCCode> <ItemDescription>THIS IS THE 6TH ITEM DESCRIPTION</ItemDescription> <TermsTypeCode>10</TermsTypeCode> <TermsDiscountPercent>0</TermsDiscountPercent> </LineItem> <LineItem> <AssignedIdentification>00007</AssignedIdentification> <QuantityShipped>0</QuantityShipped> <QuantityOrdered>175</QuantityOrdered> <UOM>EA</UOM> <UnitPrice>69.99</UnitPrice> <ProductCode>22887</ProductCode> <UPCCode>123456789</UPCCode> <ItemDescription>THIS IS THE 7TH ITEM DESCRIPTION</ItemDescription> <TermsTypeCode>10</TermsTypeCode> <TermsDiscountPercent>0</TermsDiscountPercent> </LineItem>
386
Appendix E
This section contains detailed information about how to use accumulators in the Hierarchical Level (HL) segment, as well as how to set up the accumulators. For more information about accumulators, see Chapter 8, Using Standard Rules. This section covers the following topics:
Introduction to Using Accumulators in the HL Segment Example of Using Accumulators in the HL Segment
387
Order HL Segment on page 394 Pack HL Segment on page 396 Item HL Segment on page 397 CTT Segment on page 399 Visual Representation of the Hierarchical Levels on page 400 Sample EDI File on page 400
Scenario
In this scenario, we assume that no other accumulators are used anywhere else in the 856 map, and we will reference accumulators 0, 1, 2, 3using a specific accumulator for each HL Level:
Accumulator 0 is used on all HL segments to populate the HL01 value Accumulator 1 is used on the Order HL segment to populate the HL02 value Accumulator 2 is used on the Pack HL segment to populate the HL02 value Accumulator 3 is used on the Item HL segment to populate the HL02 value
The HL01 element (Hierarchical ID Number) identifies the HL segment numerically in the EDI document. The field starts at one and increments by one for each subsequent HL segment that is created. The accumulator 0 is used for the HL01 element. Each HL segment (Shipment, Order, Pack, and Item) uses the same accumulator for the HL01 element, and the map increments the accumulator and then uses the accumulator for each HL01 element. The HL02 element (Hierarchical Parent ID) identifies the Parent HL segment to which the current HL segment belongs. The accumulator 1 is used for the HL02 in the Order HL segment, and this element is not populated in the Shipment HL segment because it is the first HL segment in the document. The HL03 element (Hierarchical Level Code) indicates the level of the HL segment (Shipment, Order, Pack or Item) by using a code. S indicates the Shipment Level, O indicates the Order level, P indicates the Pack level, and I indicates the Item level. The map uses constants to populate this element. For each HL, except for the innermost nested HL (which is Item in this scenario), the map also moves the value contained in accumulator 0, located on the HL01 element, into the accumulator that is used for the HL02 element in the next HL segment.
388
For example, the standard rule on the HL01 element in the Shipment HL segment increments accumulator 0 by one and places that value in the HL01 element. Then, the rule moves that same value into accumulator 1 for use on the HL02 element in the Order HL segment.
389
The map structure now has the original HL group that contains a child HL group. The following figure demonstrates how the map looks after you complete these steps (the child HL group is selected):
Repeat this process for each HL level that is needed, remembering to paste each new HL group as a child of the previously pasted HL group.
390
Activate the necessary groups and segments needed for each HL group after you create the necessary structure.
Note: If the hierarchical levels (that is, shipment, order, and so forth) are singly occurring groups, the option Promote records to parent (on the Looping tab of the Group Properties dialog box), which is only available for singly occurring groups, can be selected. This option causes the translator to treat the records as if they are one level higher in the hierarchy. Only select this option if your input structure is at the same hierarchical level as the output structure. For more information about descriptions of dialog box components, see Appendix C, Map Editor Properties.
391
8. In the Edit Accumulator dialog box, click OK to add the accumulator. 9. In the Element Properties dialog box, click OK to add the standard rule to the element. 10. Complete the preceding steps for each accumulator you are using. For step 5, select the next sequential accumulator (that is, if you have already used accumulator 0 the next accumulator is 1). The following figure shows what the Standard Rule should look like after all accumulators are initialized:
Shipment HL Segment
Now you must create the accumulators for the elements in the Shipment HL segment.
392
3. From the standard rule list, select Use Accumulator. 4. Click New. The Edit Accumulator Entry dialog box opens to create a new calculation for this field. 5. From the Primary Accumulator list, select 0. This is the accumulate that you created in step 5 in Initializing the Accumulators on page 391. 6. From the First list, select Increment primary. Increment primary is the first operation performed. The value in the accumulator increments by one for each iteration of the current group. 7. From the Second list, select Use primary. Use primary is the second operation performed, after the first operation is completed. The current value of the accumulator is loaded into the Assigned Identification field. 8. In the Edit Accumulator dialog box, click OK to add the accumulator. 9. Click New. The Edit Accumulator Entry dialog box opens to create a new calculation for this field. 10. From the Primary Accumulator list, again select 0. 11. From the First list, select Move primary to alternate. 12. From the Alternate Accum list, select 1.
393
13. In the Edit Accumulator dialog box, click OK to add the accumulator. The Element Properties dialog box should look like the following figure:
14. In the Element Properties dialog box, click OK to add the standard rule to the Line Items field.
Order HL Segment
Now you must create the accumulators for the elements in the Order HL segment.
394
395
7. In the Edit Accumulator dialog box, click OK to add the accumulator. 8. In the Element Properties dialog box, click OK to add the standard rule to the Line Items field.
Pack HL Segment
Now you must create the accumulators for the elements in the Pack HL segment.
396
13. In the Edit Accumulator dialog box, click OK to add the accumulator. 14. In the Element Properties dialog box, click OK to add the standard rule to the Line Items field.
Item HL Segment
Now you must create the accumulators for the elements in the Pack HL segment.
397
2. Click the Standard Rule tab to access the standard rule options. 3. From the standard rule list, select Use Accumulator. 4. Click New. The Edit Accumulator Entry dialog box opens to create a new calculation for this field. 5. From the Primary Accumulator list, select 0. 6. From the First list, select Increment primary. 7. From the Second list, select Use primary. 8. In the Edit Accumulator dialog box, click OK to add the accumulator. 9. In the Element Properties dialog box, click OK to add the standard rule to the Line Items field.
398
CTT Segment
The CTT01 must be populated with the total number of HL segments created in the document. To populate this element in the map, use the accumulator 0 because it already contains the total number of HL segments.
399
Shipment 1
Order 1
Order 2
Pack 1
Pack 2
Pack 3
Pack 1
Item 1
Item 2
Item 3
Item 1
Item 2
Item 3
Shipment 1 Order 1 Pack 1 Item 1 Pack 2 Item 1 Pack 3 Item 1 Order 1 Pack 1 Item 1 Item 2 Item 3
400
DTM*086*20020115~ N1*SH*Sterling Commerce~ N3*4600 Lakehurst Ct~ N4*Dublin*OH*43016*USA~ HL*3*2*P~ PO4*1*****30*LB***15*10*3*IN~ HL*4*3*I~ LIN**IN*NOTEBOOK #2*LT*NONE*SN*SYS8-1475~ SN1**1*EA~ PID*F****System 8000 Notebook, 32MB RAM~ REF*SI*005865238~ REF*OQ*1254123-C~ HL*5*2*P~ PO4*1*****30*LB***15*10*3*IN~ HL*6*5*I~ LIN**IN*EXCEL~ SN1**6*EA~ PID*F****Software~ REF*SI*58794312558~ REF*OQ*SOFT3256~ HL*7*2*P~ PO4*1*****30*LB***15*10*3*IN~ HL*8*7*I~ SN1**2*EA~ PID*F****600 dpi Laser Printer~ REF*SI*05987642341~ REF*OQ*1254123-A~ HL*9*1*O~ PRF*987654351~ REF*OQ*EAS1008~ REF*SI*55522214521~ DTM*086*20020115~ N1*SH*Sterling Commerce~ N3*4600 Lakehurst Ct~ N4*Dublin*OH*43016*USA~ HL*10*9*P~
401
PO4*2*****300*LB***15*10*3*IN~ HL*11*10*I~ SN1**3*EA~ PID*F****Software~ REF*SI*2222333645~ REF*OQ*SOFT3256~ HL*12*10*I~ SN1**3*EA~ PID*F****Monitor 20 in., 1600x1200, .28~ REF*SI*0000001019~ REF*OQ*MON5421~ HL*13*10*I~ SN1**3*EA~ PID*F****Keyboard~ REF*SI*0000001019~ REF*OQ*KEY548795~ REF*SI*0000001019~ CTT*13~
402
Appendix F
Map Conversion
This section contains detailed information about how to use the Application map conversion utilities. This section covers the following topics:
About Map Conversion Converting Gentran:Server for UNIX Maps to Application Converting Gentran:Server for iSeries Maps to Application Converting Gentran:Basic for zSeries Maps to Application Converting Maps Using the Command Line
403
You can also convert Gentran:Server for iSeries and Gentran:Basic for zSeries maps using the command line. To use the command line conversion switches, see Converting Maps Using the Command Line on page 407. During the conversion, map object names are automatically converted to valid entries for the Map Editor (that is, alphanumeric, colon character, and underscore character), and spaces and CRLF characters are not allowed. All characters except CRLF are allowed when a description for a map object is converted.
For other tips about migrating from Gentran:Server for UNIX to Application, see Appendix B, Map Editor Migration Information. To convert Gentran:Server for UNIX maps: 1. Select File > Import > Gentran:Server for UNIX Maps and click Next. 2. Type the name of the Gentran:Server for UNIX Visual Mapper .map or .vmp map that you want to convert (or click Browse to locate the map or maps), and click Next.
Note: If you are converting a map created using Gentran:Server for UNIX version 5.1, 5.2, or 5.3, select a .vmp file. If you are converting a map created using Gentran:Server for UNIX version 6.1, select a .map file.
Tip:
3. Type the name of the destination folder where you would like the converted map to be written (or click Browse to locate the destination folder), and click Next. 4. If you do not want the Map Editor to import the map links, clear the Create links within imported maps check box.
Note: Only simple links are converted.
5. If you do not want the newly converted map to be automatically opened in the Map Editor, clear the Open imported maps in Map Editor check box. 6. Click Finish. The utility converts the specified map and (if designated) opens the map in Application. If the file name already exists in the specified directory, the Map Editor renames the file with a numeral appended to the name, and saves the file. For
404
example, if ORDER.map already exists in the specified directory, Map Editor renames the imported file ORDER1.map, or if ORDER1.map already exists in the directory, Map Editor renames the map ORDER2.map. 7. Add the necessary map links, standard rules, extended rules, conditional relationships, and user exits to the converted map. For more information about adding additional map links, see Creating Simple Links on page 61. For more information about adding standard rules, see Chapter 8, Using Standard Rules. For more information about adding extended rules, see Chapter 9, Using Extended Rules. For more information about adding conditional relationships, see Defining and Modifying Relational Conditions on page 80. For more information about adding user exits, see Chapter 11, Using User Exits.
To convert Gentran:Server for iSeries maps: 1. In Gentran:Server for iSeries, prepare the Gentran:Server for iSeries application and map files you want to convert by performing the steps listed in Gentran:Server for iSeries on page 410. 2. After you copy the files to your machine, select File > Import > Gentran:Server iSeries Maps and click Next. 3. Type the source folder name of the folder where the exported iSeries maps are located (or click Browse to locate the source folder), and click Next. 4. Type the destination folder name of the destination folder where you would like the converted maps to be written (or click Browse to locate the destination folder), and click Next. 5. Select the maps you want to import and click Next. By default, all maps in the source folder are selected.
405
6. If you do not want the newly converted map or maps to be automatically opened in the Map Editor, clear the Open imported maps in Map Editor check box. 7. Click Finish. The utility converts the maps in the specified folder and (if designated) opens the maps in Application. The Map Editor creates two copies of each imported map, one for receiving (renamed with an R appended to the file name) and one for sending (renamed with a S appended the file name). For example, if you import a file named INVOICE, the Map Editor creates one map named INVOICER (for receiving) and another named INVOICES (for sending). 8. Add the necessary map links, standard rules, extended rules, conditional relationships, and user exits to the converted maps. For more information about adding map links, see Creating Simple Links on page 61. For more information about adding standard rules, see Chapter 8, Using Standard Rules. For more information about adding extended rules, see Chapter 9, Using Extended Rules. For more information about adding conditional relationships, see Defining and Modifying Relational Conditions on page 80. For more information about adding user exits, see Chapter 11, Using User Exits.
To convert Gentran:Basic for zSeries maps: 1. In Gentran:Basic for zSeries, export the maps you want to convert to a single folder. For information about exporting maps, see Converting Maps Using the Command Line on page 407. 2. Select File > Import > Gentran:Basic zSeries Maps and click Next. 3. From the Product Version list, select the zSeries product version used to create and export the maps. 4. Type the source folder name of the folder where the exported zSeries maps are located (or click Browse to locate the source folder), and click Next. 5. Type the destination folder name of the destination folder where you would like the converted maps to be written (or click Browse to locate the destination folder), and click Next. 6. Select the maps you want to import and click Next. By default, all maps in the source folder are selected.
406
7. If you do not want the newly converted map to be automatically opened in the Map Editor, clear the Open imported maps in Map Editor check box. 8. Click Finish. The utility converts the maps in the specified folder and (if designated) opens the maps in Application. The Map Editor creates two copies of each imported map, one for receiving (renamed with an R appended to the file name) and one for sending (renamed with a S appended the file name). For example, if you import a file named INVOICE, the Map Editor creates one map named INVOICER (for receiving) and another named INVOICES (for sending). 9. Add the necessary map links, standard rules, extended rules, conditional relationships, and user exits to the converted maps. For more information about adding map links, see Creating Simple Links on page 61. For more information about adding standard rules, see Chapter 8, Using Standard Rules. For more information about adding extended rules, see Chapter 9, Using Extended Rules. For more information about adding conditional relationships, see Defining and Modifying Relational Conditions on page 80. For more information about adding user exits, see Chapter 11, Using User Exits.
A very specific set of steps must be followed to create these files on the Gentran:Basic for zSeries and Gentran: Server for iSeries systems. For information about how to create these files, see Creating the zSeries and iSeries Map Files on page 408. The topics in this section are:
Creating the zSeries and iSeries Map Files
407
Syntax Examples
If you are migrating your maps and applications from a Gentran:Basic 6.0 environment to a Application environment, you must run utility programs to clean up filler space in these
408
mapping files in order successfully transfer the files to your Windows computer and run the Application map conversion process. The first step to converting your maps and application structures to a Application format is to copy your VSAM transaction map and application files to a sequential format. If you are running Gentran:Basic 6.0, you can run the two jobs provided. These jobs copy the necessary files to a sequential format and also initialize all filler areas within the records of these files.
Job - INMAP60
Job INMAP60 executes program EBDINIM. This program reads the VSAM transaction mapping files, initializes all filler space in the records, and writes out sequential versions of the transaction mapping files. These sequential transaction mapping files should be used to transfer to your Windows computer for the Application mapping conversion process. You must specify whether you want all your transaction maps initialized at one time or if you want to select a specific map or a set of maps (a range of maps based on the range of keys in the mapping files). Please review the comments in the INMAP60 JCL to determine how to initialize all transaction maps or a selection of transaction maps.
Job - INAPP60
Job INAPP60 executes program EBDINIA. This program reads in the VSAM application files, initializes all filler space in the records, and writes out sequential versions of the application files. These sequential application files should be used to transfer to your Windows computer for the Application mapping conversion process. You must specify whether you want all your application definitions initialized at one time or if you want to select a specific application or a set of application definitions (a range of applications based on the range of keys in the application files). Please review the comments in the INAPP60 JCL to determine how to initialize all applications definitions or a selection of application definitions. To create the map files for Gentran:Basic for zSeries version 6.0:
Note: The JCL/programs to run INMAP60 and INAPP60 are not part of the Gentran:Basic product. Contact Gentran:Basic customer support to receive these programs.
1. Run INAPP60. 2. Use ASCII mode to FTP the sequential files generated by INAPP60 from the mainframe to your Windows computer. These files must be named as follows: APPHDR.izm APPRCT.izm APPFLD.izm APPTLR.izm 3. Run INMAP60. 4. Use ASCII mode to FTP the sequential files generated by INMAP60 from the mainframe to your Windows computer. These files must be named as follows:
409
If the library already exists, key the following command instead and then press ENTER:
CLRLIB CNVTGIS
3. Create a save file in the library specified above by typing CRTSAVF FILE(CNVTGIS/CNVTGIS) 4. Copy the save file from the <installdir> to the newly created save file, using the following commands:
CPYFRMSTMF FROMSTMF('<installdir>/cnvtgis.savf') TOMBR('/QSYS.LIB/CNVTGIS.LIB/CNVTGIS.FILE') MBROPT(*REPLACE)
5. Restore the conversion objects with the following command: RSTLIB SAVLIB(CNVTGIS) DEV(*SAVF) SAVF(CNVTGIS/CNVTGIS) 6. Add the CNVTGIS library to your library list with the following command: ADDLIBLE CNVTGIS 7. Run the copy utility to prepare your files for the conversion; to do so, type CPYTOGIS and press F4. 8. Type the parameters and press Enter. Press F1 on any parameter to access further information for that parameter. 9. After the CPYTOGIS is completed, copy the APPFLD, APPHDR, APPRCT, APPTLR, TRNELE, TRNHDR, TRNSEG files from the IFS directory keyed on the CPYTOGIS command to a folder on your machine.
410
10. Once the files are copied, rename the 7 files so that they have an IZM file extension. For example, rename APPFLD to APPFLD.izm (with the .izm extension).
Syntax
From the command line, use this syntax to convert maps from the command line:
MAPPER.EXE -m version mapLocation [SingleMapName[S|R]] Values for iSeries and zSeries: version Enter the version of Gentran in which the maps were created. Valid values for zSeries are 6.0 and 6.1. Valid value for iSeries is 3.0, 3.1, 3.2, or 3.3. mapLocation Enter the full path to the directory on Windows where the Gentran zSeries or iSeries maps reside. The path should include a wildcard for the file name. The directory should only contain the maps to be converted and no other files.
[SingleMapName] Name of a single map you wish to convert. [S|R] Value for UNIX only: -U Direction of map ('S'=Send, 'R'=Recv)
UNIX conversion, followed by a fully qualified file path or by a file path and *.vmp or *.map.
Examples
This is an example in which one zSeries map only is converted. The translation name is TDANA001DV and the direction is Receive.
mapper.exe -m 6.1 c:\mfmaps\*.izm TDANA100DVR
This is an example in which all of the maps in the specified directory are converted:
mapper.exe -m 6.1 c:\mfmaps\*.izm
411
412
Appendix G
Overview
Application allows you to select a COBOL copybook file layout (in ASCII text) as input to the Map Editor for the positional side of a map. The conversion of COBOL copybook is accomplished using the third-party open source tool CB2XML (Copy-Book-to-XML), which is a COBOL copybook to XML converter. CB2XML accepts a COBOL copybook file layout as input and returns an XML file as output, and the Map Editor then converts the intermediate XML file to the positional format.
Note: The Map Editor does not convert any programming or data manipulations (equivalent to the Application standard and extended rules); just the file layout.
413
The audience using this software should be familiar with Application, their operating system, and the use of COBOL copybooks.
Note: This documentation is not intended to explain COBOL or COBOL copybooks.
You must have a Java Runtime Environment version 1.4.2_06 installed on the same machine as Map Editor. You can download the 1.4.2_06 version of JRE from:
http://java.sun.com/products/archive/
If you do not have JRE version 1.4.2_06 installed on the same machine as Map Editor, you will receive a message instructing you to install JRE version 1.4.2_06 and try the COBOL copybook conversion again. The message you receive if you do not have either installed is:
Error: Required JRE version 1.4.2_06 was not found. Please install the proper version. Note: The Java JDK contains the correct version of JRE. However, if you install only JRE, it will use less disk space than installing JDK.
You must have the Microsoft XML Core Services (MSXML) 4.0 installed on the same machine as Map Editor. You can download this version of MSXML from:
http://www.microsoft.com/downloads/details.aspx?FamilyID=3144B7 2B-B4F2-46DA-B4B6-C5D7485F2B42&displaylang=en
If you do not have Microsoft XML Core Services (MSXML) 4.0 installed, you will receive a message instructing you to install MSXML 4.0 on the same machine as Map Editor and try the COBOL copybook conversion again.
The CB2XML tool is installed (by default, unless you specify another location) in the following subfolder along with the necessary files when you install the Map Editor on your machine: Program Files\Sterling Commerce\Map Editor\3rdParty\cb2xml
Note: The cb2xml child directories are set by the Application install and cannot be changed.
When the conversion of the COBOL copybook is complete and Map Editor has created the positional side of your map, it leaves behind the intermediate XML file (using the same name of your COBOL copybook with the extension .XML appended) in the same folder as the source file. You can view this XML file in Internet Explorer.
Note: You can use this intermediate XML file to create a schema, if you wish, or you can just delete it if you have no use for it.
414
Overview
The description of data in a COBOL copybook contains hierarchical levels. To preserve these levels, the Map Editor converts the top levels into groups. Additionally, records are created when necessary to preserve the necessary map component hierarchy. If a record is created to contain a field, the Map Editor uses the field name and appends the suffix _record to use as the name of the generated record. This concept is illustrated in the diagram below:
Field
Record
Field
Field
Record
Field
When possible, comments from the COBOL copybook are added to the Additional Notes section of the Name tab of the applicable map component Properties dialog box (this may be Group, Positional Record, or Field Properties).
415
This diagram illustrates an example of an Additional Notes section that contains a comment from the original copybook:
Note: The maximum length allowed for any Map Editor Description is 71 characters. To configure CB2XML to allow characters to be converted from COBOL to XML beyond this character limit in the COBOL source file, you need to create a cb2xml.properties file. See Creating a CB2XML.properties File if Descriptions Exceed the Maximum Length on page 422.
You are notified during the Map Wizard conversion of the COBOL copybook if redefine statements are present in the copybook file. REDEFINE is a COBOL term indicating that the parameter is redefining data space. Additionally, this information is added to the Description section of the Name tab of the applicable map component Properties dialog box (this may be Group, Positional Record, or Field Properties). When a map component is redefined, the description *REDEFINED* is added to the map component. When a map component redefines another map component, the description REDEFINES: [NAME_OF_MAP_COMPONENT] is added to the map component. This
416
Overview
diagram illustrates an example of what redefined map components would look like in a map:
Note: The maximum length allowed for any Map Editor Description is 71 characters. To configure CB2XML to allow characters to be converted from COBOL to XML beyond this character limit in the COBOL source file, you need to create a cb2xml.properties file. See Creating a CB2XML.properties File if Descriptions Exceed the Maximum Length on page 422.
In general, the Map Editor converts COBOL copybook data types to Map Editor data types as described in this table:
COBOL Copybook Data Type Packed decimal number String Implied decimal number Real decimal number Signed zone decimal number Computation-3 Map Editor Data Type Packed decimal number String Implied decimal number Real decimal number Overpunched number Packed decimal number
However, the supported data types in the Map Editor are string, number, and date/time (the formats that are supported for positional file formats). See Formatting Data in Fields for a complete description of these data formats. Therefore, if an unsupported data format is present in the copybook file (such as the COMP format), the Map Editor converts it to the string format and indicates this in the Description and Additional Notes section of the Name tab of the applicable map component Properties dialog box (this may be Group, Positional Record, or Field Properties). This diagram illustrates
417
an example of Description and Additional Notes sections that contain information about an unsupported data format from the original copybook:
Note: The maximum length allowed for any Map Editor Description is 71 characters. To configure CB2XML to allow characters to be converted from COBOL to XML beyond this character limit in the COBOL source file, you need to create a cb2xml.properties file. See Creating a CB2XML.properties File if Descriptions Exceed the Maximum Length on page 422.
The following are examples of formats that may appear in a COBOL copybook that are not supported in Application:
Computational (COMP) Computational-4 (COMP-4) Binary Index Pointer Computational-1 (COMP-1) Computational-2 (COMP-2)
418
Exponential numerics
Note: Any fields in the COBOL copybook that use Computational-3 (COMP-3) format are automatically converted to the appropriate Application number (packed decimal) format.
The Map Editor only needs the record layout of your copybook file. The Map Editor only converts the copybook file layout and does not convert any standard or extended rules. The input accepted by Map Editor is a complete COBOL copybook file layout in ASCII text. Any dashes in the COBOL copybook are converted to underscores by the Map Editor. You must follow the rules of COBOL (that is, your copybook must not contain errors or Application will be unable to parse it correctly).
Task Number 1
Description of Task
Completed
Ensure that you have a complete COBOL copybook and have downloaded the copybook from your system (via FTP) to the machine on which Map Editor is installed. Note: The Map Editor only processes the record layout of the copybook file, so you should only provide the record layout.
2 3
Create a map using a COBOL copybook. See Creating a Map Using a COBOL Copybook on page 420. If you have unsupported data formats or REDEFINES in your copybook, their description by Map Editor may exceed the limit allowed. If this occurs, you need to create a file named cb2xml.properties. See Creating a CB2XML.properties File if Descriptions Exceed the Maximum Length on page 422. Set record tags for each record on the Positional Record Properties dialog box, delete the accompanying field, and run Auto Position on the fields in each record. Map redefined components, using conditions or other mapping operations. Select the appropriate data format for map components from the COBOL copybook that were in an unsupported format and were automatically converted to the string format. Create any other necessary standard rules, extended rules, and links. Check the format of the completed map to ensure that it mirrors your COBOL copybook.
4 5 6 7 8
419
To create a map: 1. From the Map Editor File menu, select New. 2. In the New Map wizard, answer the following questions and then click Next. What kind of map are you creating? Accept the default, Sterling Integrator.
Caution: Always accept the Sterling Integrator default when you are using the Application product. Note: The other map options enable you to import maps from other Sterling Commerce products in order to convert them to Sterling Integrator-type maps.
What is the name of the map? Type the unique name of the map. The Map Editor adds the default .mxl extension. What is your name? Type your name if it differs from the user name prompted by the New Map wizard. The New Map wizard displays Input Format fields. You must complete the format of the input side of the map. This is the format of the data that is translated by Application. 3. In the Input Format window, specify how you want to define the data format by selecting one of the following: Create a new data format using this syntax Select a format. If you are converting a COBOL copybook for the input side of the map, select the Positional format and click Customize. Load the data format from a saved definition Type the path and file name of the saved definition (.ddf or .ifd extension). Click Browse to display the Open File Definition dialog box.
Note: During the conversion process, if the wizard encounters any REDEFINE statements, you are notified that redefine statements are present in the converted copybook file. Additionally, you are notified if the wizard encounters any unsupported data types (such as exponential numbers or binary data).
420
4. If you are converting a COBOL copybook for the input side of the map, select the name of the COBOL copybook file (using Browse) or type a URL pointing to the file and click Next. 5. Click Finish. 6. In the Output Format window, specify how you want to define the data format by selecting one of the following: Create a new data format using this syntax Select a format. If you are converting a COBOL copybook for the output side of the map, select the Positional format and click Customize. Load the data format from a saved definition Type the path and file name of the saved definition (.ddf or .ifd extension). Click Browse to display the Open File Definition dialog box.
Note: During the conversion process, if the wizard encounters any REDEFINE statements, you are notified that redefine statements are present in the converted copybook file. Additionally, you are notified if the wizard encounters any unsupported data types (such as exponential numbers or binary data).
7. If you are converting a COBOL copybook for the output side of the map, select the name of the COBOL copybook file (using Browse) or type a URL pointing to the file and click Next. 8. Click Finish. 9. Click Finish to create the map. The map opens in the Map Editor window.
Note: If the map contains REDEFINE statements, a message box is displayed noting that the REDEFINES statements present in the file, [filename], are converted but will require manual attention when the new map wizard is complete.
10. In the Map Editor, select File > Save to save the map. Do not use spaces or apostrophes in the map name. To save a map as a .map file, select File > Save As and then select Source Maps (*.map) from the Save as type list.
421
Create any other necessary standard rules, extended rules, and links. See Creating Simple Links, Using Standard Rules, and Using Extended Rules. Check the format of the completed map to ensure that it mirrors your COBOL copybook.
To create a cb2xml.properties file: 1. Using a text editor, create a file named cb2xml.properties. 2. Save this file in the same directory as the COBOL copybook file that you will convert and import. 3. Add the following contents to the properties file:
column.start=6 column.end=XX
Note: Change XX to specify to CB2XML how wide the lines are that it is converting from copybook source to XML.
4. Save the cb2xml.properties file in the same directory where the COBOL copybook source file you want to convert is located.
422
To complete the tasks necessary on each record on the positional side of your map: 1. In the Map Editor, right-click the first positional record. From the shortcut menu, select Edit Fields. The Positional Field Editor dialog box opens. 2. Note the name, start position (Start), and length (Len) of the field in this record that currently contains the record tag, and click OK. 3. Right-click the first positional record again. From the shortcut menu, select Properties. The Positional Record dialog box opens. 4. Select the Tag tab to access the tag options. 5. In the Tag box, type the record tag (for example, __ABC). This is the name of original field that you noted in step 2. 6. In the Position box, type the start position of the record tag. This is the start position that you noted in step 2. 7. In the Length box, type the length of the record tag. This is the length that you noted in step 2. 8. Click OK to close the Positional Record Properties dialog box. 9. Right-click the first positional record again, and from the shortcut menu select Edit Fields. The Positional Field Editor dialog box opens. 10. Click Auto Position. Auto Position automatically calculates the start position in the record of each field, using the criteria that each field is positioned directly after the previous field and is of the length specified in the Max Length box. Click Yes to acknowledge the warning message that fields are sequenced in order.
Note: The Auto Position function is valid only if you define a record tag and if you define every field in the record in the sequence that each field occurs. It is generally recommended that you run Auto Position, but there are circumstances in which it is not recommended. For example, if you have a record that starts at position 155 and contains 5 fields of 5 characters each, if you run Auto Position on this record it will reset the starting position of the first field from 155 to 1.
423
11. Click OK to close the Positional Field Editor dialog box. 12. Repeat steps 1 through 11 for each record on the positional side of your map.
424
Index
A
abbreviated reference format 363 abstract element and product 137 definition 135 accum function, extended rule 164, 215 accumulator operations add primary to alternate 165 decrement primary 164 divide by primary 165 divide primary by alternate 165 divide primary by field 165 hash sum in primary 165 increment primary 164 load primary 165 modulo primary with alternate 165 modulo with field 165 modulo with primary 165 move primary to alternate 165 multiply primary by alternate 165 multiply with primary 165 negate primary 165 sum in primary 164 use primary 165 zero primary 165 accumulators, using 163 activation of map components 75 add primary to alternate, Use Accumulator standard rule 165 alphabetical language reference accum 215 atoi 212, 216 aton 212, 217 begin 217 break 218 cerror 212, 218 collate 223 concat 210, 225 continue 226 count 213, 226 date 227 delete 213, 228 do 252 else 232 empty 213, 229 end 229 eof 230 exist 213, 230 get 208, 231 if 232 index 233 left 210, 234 len 212, 234 messagebox 235 mid 210, 236 ntoa 212, 236 numerrors 237 occurrencetotal 237 readblock 214, 238 resetoccurrencetotal 240 right 210, 241 select 241 set 208, 242 sort 243 strdate 210, 243 strstr 211, 245 sum 245 sumtotal 246 then 232 trim 211, 247 trimleft 211, 248 trimright 211, 249 unreadblock 214, 250 update 251 while 252 writeblock 214, 252 array 365, 372 array, extended rules 192 assignment statement datetime expression 206 numeric expression 206
425
Index
string expression 206 atoi function, extended rule 212, 216 aton function, extended rule 212, 217 attribute container object 135, 154 creating 154 managing 153 object 154 attribute container, definition 135 auto get next cursor, SQL 125 auto get next row, SQL 123 Auto Position function definition 96, 423 using 94, 96, 423 Auto Trim function 79 auto-incrementing maps, customizing 29
data attributes 109 encoding default 109 importing maps from Gentran:Server for Windows 110 preserving leading spaces 110 specifying character sets 109 CII data format control tags 107 creating layout from standard 107 encoding 109 format of message 106 loop 108 mapping to positional data format 110 overview 105 CII documents, mapping 105 CII File root element 106 code list copying and pasting 173 defining 171 definition 170 deleting 172 exporting 173 importing 172 mapping code item descriptions 174 mapping entry descriptions 174 trading partner 176 validating 174 codes, using 170 collate function, extended rule 223 Colours function, Map Editor 28 command line list of numeric map types 66 using to change map type 65 using to compile maps 64 using to save maps 65 compatible rule execution 37 compile error messages 285 Compile function 63 compiled map 17 compiling maps in Map Editor 63 using the command line 64 compiling, XML encoder object 67
B
begin function, extended rule 217 binary data segments example 84 using 84 break function, extended rule 218 Business Processes, enabling maps for 278, 281
C
cerror function, extended rule 212, 218 character encoding, definition 109 character range 41 Check Database Consistency function 131 checking in map versions 262, 280 maps 278 translation object 278 XML encoder object 278 checking out maps 262, 281 translation object 263, 281 XML encoder object 263, 281 CII
426
Index
compliance error codes EDI data format 222 general 219 SQL data format 221 XML data format 222 compliance errors, raising 171, 174, 176, 177, 178, 179, 180, 1 81 composite 73 concat function, extended rule 210, 225 conditional logic 208 conditions, relational 80 constants creating and editing 161 deleting 162 mapping 162 qualifiers, generating 162 using 160 content particle creating 151 definition 135 continue function, extended rule 226 control tags, use in CII 107 conversion command line 407 Gentran:Server maps 404, 405, 406 Copy function, Map Editor 38 correlation data 185 correlation data, Update standard rule 185 Correlation service 185 correlation, available field names 255 count function, extended rule 213, 226 counting loops 163 cross-reference adding to a map 182 synonym table 182 cursor operation record, definition 115 cursor operation records, managing 122 Cut function, Map Editor 38
D
data attributes, CII, relating to Map Editor data types 109 data definition format (DDF) exporting 36 importing 35 requirements 35 using 34 data field type date/time 58 number 45 string 41 data format EDI 19 overview 18 positional 19 properties 307 SQL 20, 113 variable-length-delimited 19, 101 XML 20, 133 data source creating 119 modifying 119 data type array 192 datetime 192 integer 192 object 273 relating to CII data attributes 109 string 192 user exits 272 data, formatting in fields 41 date/time type 58 number type 45 string type 41 database checking consistency in SQL 131 generating fields for SQL, input record 127 generating fields for SQL, output record 127 date format eight-character dates 30 setting default 30 six-character dates 30 date function, extended rule 227
427
Index
date, extended rule syntax 207 date/time type 58 datetime definition 192 strdate extended rule 243 datetime expression 207 datetime expression, assignment statement 206 DBCS how product processes 94 syntax token 44 using in CII 110 deactivation of map components 75 decimal point changing the default 93, 147 use of comma 93, 147 declarations section, extended rule 192 decrement primary, Use Accumulator standard rule 164 default maps, specifying 263, 283 delete function, extended rule 213, 228 delete statement, SQL 115, 125 delimiters 78 delimiters, EDI changing 78 verifying 78 disabling maps 282 display of Map Editor, customizing 26 divide by primary, Use Accumulator standard rule 165 divide primary by alternate, Use Accumulator standard rule 165 divide primary by field, Use Accumulator standard rule 165 do function, extended rule 252 document envelope definition 175 using 175 Document Envelope service available field names 256 document extraction 184, 188 available field names 255 Document Extraction service 184
document extraction, Update standard rule 184 document name, migration tip 303 DTD, format to reference 139 duplicate data, checking for 182 duplicate fields, transaction register 180, 186, 187
E
EDI data format auto trim 79 creating layout from EDI standard 74 delimiters 78 overview 71 verifying delimiters 79 EDI delimiters changing 78 verifying 78 EDI documents, mapping 71 EDI file defining 19 promoting 39 EDI root element 72 EDI standard, using to create map 74 EDI version, update 76 EDI, relational conditions 80 element definition 74, 134 repeating 74 else function, extended rule 232 empty function, extended rule 213, 229 enabling maps 282 encoding, CII data format 109 end function, extended rule 229 entity, XML 146 eof function, extended rule 230 Equalize function, Map Editor 30 equalizing map sides 30 error messages compile 285 compliance 219 Map Editor 293
428
Index
exist function, extended rule 213, 230 export, map 265, 283 exporting resource tags 265 resources 265, 266 expression 193 extended rule alphabetical language reference 214 commands and functions 199, 214 compatible execution with Gentran:Server for Windows 37 conditional logic 208 data types supported 192 datetime expression 207 declarations section 192 defining 196 defining a map component rule 197 field level 194 fseek migration information 301 ftell migration information 301 keywords 198 migration information 300 On Begin 194 operators 200 pre-session 193 processing 193 processing diagram 196 readbyte migration information 300 session 197 statements section 193 string conditions and functions 209 symbols 201 unsupported 301 wild blocks 300 writebyte migration information 300
format specifiers, strdate, extended rule 244 fseek, migration information 301 ftell, migration information 301 fully qualified reference format 362
G
Generate Fields function use in Input Records, SQL 127 use in Output Records, SQL 127 Generate UBFI function 86 Generic Envelope service available field names 256 Gentran:Server for Windows, compatible rule execution 37 map type changed to Sterling Integrator using the command line 65 maps, compiled using the command line 65 maps, saved using the command line 65 migration information 299 TFD, using 110 UNIX maps, using the command line 66 Windows, changing the map function 37 Windows, importing CII maps 110 Windows, importing maps from 36 Windows, using DBCS 94 Windows, using record delimiters 93 Gentran:Server for UNIX synonym table by in value 178 synonym table by out value 179 Gentran:Server maps, converting 404, 405, 406 get function, extended rule 208, 231 global colors, customizing 28 global confirmations, customizing 30 global display options, customizing 27 global fonts, customizing 28 group definition 72, 90, 102, 106, 114 promoting 39
F
field definition 102, 116 positional 90 field-level extended rule 194 file setting default 31 files setting default 31
H
hash sum in primary, Use Accumulator standard rule 165
429
Index
hash total, calculating 167 hierarchical levels (HL) examples of use 387 introduction to 387 using in maps 387
L
leading spaces, preserving in CII 110 left function, extended rule 210, 234 len function, extended rule 212, 234
I
if function, extended rule 232 import, map 265, 283 importing resource tag 268 resources 267 standard imports 267 increment primary, Use Accumulator standard rule 164 index function, extended rule 233 index, array 365, 372 indexes abbreviated reference format 363 example of using 364, 369 fully qualified reference format 362 introduction to 361 using in the Map Editor and Translator 361 input record creating fields in 128 definition 115 key field matching 123 input record, SQL 123 input rule processing 194 insert statement, SQL 115, 125 installation, Map Editor 21 integer 192 Integrator File Definition (IFD) exporting 36 importing 35 using 34
Lightweight Translation Object error message 219 use of 67 line items, counting 166 link display, customizing 29 link, creating 61 linking rules 61 load primary, Use Accumulator standard rule 165 lock, on a map 262, 281 Loop Count standard rule 163 loop end (LE) segment defining for input 82 defining for output 83 loop end segment, using 81 loop start (LS) segment defining for input 81 defining for output 83 loop start segment, using 81 loop, multi-detail 108
M
map auto-incrementing version number 29 building 25 changing map type 36 checking in 278 checking in version 262, 280 checking out 262, 281 compiling 63 creating 31 customizing confirmations 30 editing map details 36 enabling or disabling 282 equalizing 30 exporting 265, 283 importing 265, 283 importing positional 92
J
Java object 273
K
key fields, use in SQL 123
430
Index
link, creating 61 links, customizing display 29 locating 260, 279 locking 262, 281 migration information 300 search by name 260, 279 search from list 261, 279 searching 260, 279 setting default dates 30 source map in Map Editor 17 specifying default 263, 283 Sterling Integrator map type 17 unlocking 262, 280 map components activating 75 adding 37 defining properties 37 temporary storage 24 map conversion about 403 Gentran:Server maps 404, 405, 406 using the command line 407 Map Editor Auto Position function 94, 96, 423 basics 15 Check Database Consistency function 131 Colours function 28 Compile function 63 Copy function 38 creating a map 31 customizing display 26 Cut function 38 error messages 293 Generate Fields function 127 Generate UBFI function 86 importing CII maps from Gentran:Server for Windows 110 installing 21 mapping report 68 navigation 22 overview 21 Paste function 38 uninstalling 22 Use Configurable Trimming function 110 map function, changing to Sterling Integrator 37 map type changing 36
list of numeric types 66 Sterling Integrator 17 Sterling Integrator type 17 using the command line 65 Map Wizard how it processes the variable-length-delimited data format 102 using 31 Mapper.exe 263, 282 mapping building a map 25 CII documents 105 data formats translated 18 EDI documents 71 editing map details 36 positional documents 89 promoting map objects 39 simple 61 splitting map objects 39 SQL documents 113 variable-length-delimited documents 101 XML documents 133 mapping report, printing 68 mapping, preparation and analysis analyzing documents 24 mapping information 24 preparing to map 23 temporary storage 24 maps command line conversion 407 messagebox function, extended rule 235 messages compile error 285 compliance error 219 Map Editor 293 method, user exits 276 mid function, extended rule 210, 236 migrating from Gentran:Server for UNIX 299 from Gentran:Server for Windows 299 migration information document name 303 fseek 301 ftell 301 introductory information 299
431
Index
NCPDP standard 304 ODBC 305 readbyte 300 Select standard rule 302 tracking tip 303 trading partner code list tip 303 transaction data file (TDF) 305 unsupported extended rules 301 Update standard rule 302 user exit 302 wild blocks 300 writebyte 300 modulo primary with alternate, Use Accumulator standard rule 165 modulo with field, Use Accumulator standard rule 165 modulo with primary, Use Accumulator standard rule 165 move primary to alternate, Use Accumulator standard rule 165 multi-detail configuring 108 configuring key fields for headers 108 loop 108 use in CII 108 use in TFDs 108 multiply primary by alternate, Use Accumulator standard rule 165 multiply with primary, Use Accumulator standard rule 165
O
object variable, user exits 274 object, user exits 274 occurrencetotal function, extended rule 237 ODBC, migration information 305 On Begin extended rule 194 operators, extended rule 200 output record creating fields in 129 definition 115 output records, SQL 125 output rule processing 195
P
Paste function, Map Editor 38 pcdata creating 152 definition 135 managing 152 positional data format, defining 89 positional documents, mapping 89 Positional Field Editor, using to create fields 94 positional file format, definition 19 positional maps, importing from Gentran:Server for UNIX 92 positional maps, importing from Gentran:Server for Windows 92 positional root element 90 prefixes, namespace 156 preloaded standards creating a map 141 pre-session extended rule 193 process data 185 available field names 255 definition 177 promoting map objects 39 properties, data format 307 property value, user exits 275
N
namespaces prefixes 156 URL with information 156 use in XML 155 using in the XML file 157 NCPDP standard, migration information 304 negate primary, Use Accumulator standard rule 165 ntoa function, extended rule 212, 236 number type 45 numeric expression, assignment statement 206 numeric functions, extended rule 211 numerrors function, extended rule 237
432
Index
Q
qualifier generating 162 standard rule 162 query, SQL 120 quote handling 103
for map from list 261, 279 for maps 260, 279 for translation object 260, 279 for XML encoder object 260, 279 results 261, 280 segment definition 72 promoting 39
R
raise compliance error 176, 177, 178, 179, 180, 181 raise compliance error, Use Code standard rule 171 readblock function, extended rule 184, 214, 238 readbyte, migration information 300 record definition 102 positional 90 record delimiters, resetting 93 record tag, defining on a positional record 94 red check mark purpose 128 relational conditions 80 repeating element 74 requirements, installing the Map Editor 21 resetoccurrencetotal function, extended rule 240 resource importing 267 resource tag exporting 265 right function, extended rule 210, 241 root element CII file 106 EDI 72 positional 90 SQL 114 XML 134
select function, extended rule 241 Select standard rule document envelope 175 migration information 302 process data 177 synonym table by in value 178 synonym table by out value 179 trading partner code list 176 transaction register 180, 186, 187 using 174 select, available options 254 session rule, defining 197 set function, extended rule 208, 242 Shift-JIS, default CII encoding 109 sort function, extended rule 243 Source Manager interface 261, 280 splitting map objects 39 SQL components 114 cursor operation records, managing 122 data format 113 data source creation 119 data source, modifying 119 delete statement 115, 125 fields, creating in input records 128 fields, creating in output records 128, 129 input records, managing 123 insert statement 115, 125 map objects, creating 118 mapping considerations 116 output records, managing 125 query 120 SQL File Format, managing 118 statement records, managing 120 update statement 115, 125 SQL data format auto get next cursor 125
S
Save function, using the command line 65 search for map by name 260, 279
433
Index
auto get next row 123 checking database consistency 131 creating fields 128 definition 20 generating database fields 127 overview 113 SQL documents, mapping 113 SQL Manager about 116 SQL root element 114 standard imports 267 standard rule Loop Count 163 Select 174 System Variable 159 Update 183 Use Accumulator 163 Use Code 170 Use Constant 160 using 159 standard version update to another 76 statement record definition 115 managing 120 Test SQL function 121 statements section, extended rule 193 strdate function, extended rule 210, 243 strdate, format specifiers 244 string conditions and functions, extended rule 209 expression, assignment statement 206 supported data type 192 type 41 strstr function, extended rule 211, 245 sum function, extended rule 245 sum in primary, Use Accumulator standard rule 164 sumtotal function, extended rule 246 symbols extended rule 201 syntax examples 201 synonym table by in value definition 178
using 178 synonym table by out value definition 179 using 179 syntax token Asian languages 44 character range 41, 45 definition 41 deleting 45 double-byte character set (DBCS) 44 using in CII 110 Western European languages 42 System Variable standard rule 159
T
TDF, migration information 305 temporary fields creating 97 when to use 97 where to use 97 temporary records caveats that apply to 97 creating 97 when to use 97 where to use 97 temporary storage map components, using 24 Test Connection function, using in SQL to test data sources 120 Test SQL function, using to test statement records 121 TFD properties 108 tags 108 types 108 then function, extended rule 232 time, extended rule syntax 208 tracking, migration tip 303 trading partner code list available field names 254 definition 176 mapping 181 migration tip 303 unmapping 182 using 176
434
Index
transaction data file (TDF) 23, 89 transaction data file (TDF), migration information 305 transaction register available field names 256 checking for duplicate data 182 duplicate fields 180, 186, 187 Select standard rule 180 update standard rule 186, 187 transfer form data (TFD), definition 106 translation object checking in 278 checking out 263, 281 definition 17 searching 260, 279 use in product 17 translator differences between the translator and the Gentran:Server for Windows translator 305 translator, how it processes maps 364 trim function, extended rule 211, 247 trimleft function, extended rule 211, 248 trimright function, extended rule 211, 249 type of data field date/time 58 number 45 string 41
process data 185 using 183 update statement, SQL 115, 125 update, available options 254 update, EDI version 76 URL for XML Parser 136 information about XML namespaces 156 Use Accumulator standard rule calculating a value total 168 calculating hash totals 167 calculating sums 166 definition 163 Use Code standard rule mapping code list entry descriptions 174 raise compliance error 171 using 170 Use Configurable Trimming function 110 Use Constant standard rule 160 use primary, Use Accumulator standard rule 165 user exit creating 273 data types 272 definition 271 examples 274 method, calling 276 migration information 302 object variable, defining 274 object, creating 274 overview 271 property value, getting 275 property value, setting 276 where to locate 273
U
UBFI, generating 86 Uniform Resource Indicator (URI) 155 Uniform Resource Locator (URL) 155 Uniform Resource Name (URN) 155 uninstalling the Map Editor 22 universal batch file interface (UBFI), generating in Sterling Integrator 86 unreadblock function, extended rule 214, 250 update function, extended rule 251 Update standard rule correlation data 185 document extraction 184, 188 migration information 302
V
value total calculating 168 resetting 168 variable, using system 159 variable-length-delimited data format creating 102 definition 19 guidelines 101 overview 101
435
Index
variable-length-delimited documents mapping 101 quote handling 103 root element 102 Version Manager, Sterling Integrator interface 261, 280 version, checking in a new map 262, 280
overview 133 XML document object model (DOM) 177 XML documents, mapping 133 XML element, managing 148 XML encoder object checking in 278 checking out 263, 281 compiling 67 definition 18 Lightweight Translation Object 67 searching 260, 279 XML File, managing 146 XML root element 134 XPath 177, 178, 185
W
while function, extended rule 252 wild blocks, migration information 300 wildcard segments 238, 252 writeblock extended rule 184 writeblock function, extended rule 214, 252 writebyte, migration information 300
Z
zero primary, Use Accumulator standard rule 165
X
Xerces URL to obtain parser 136 XML parser 136 XML attribute, managing 153 considerations 135 content particle, creating 151 creating a layout from a DTD 138 creating a layout from a preloaded standard creating a layout from a preloaded standard 141 creating a layout from schema 138 element, creating 148 entity 146 file object 146 file properties, modifying 146 map objects, creating 145 namespace prefixes 156 namespaces 155 namespaces, using 157 parser, URL to obtain 136 pcdata, managing 152 schema features not supported 136 schema features supported 136 Sterling Integrator implementation of 133 support for XML schemas 136 XML data format definition 20
436