-
Notifications
You must be signed in to change notification settings - Fork 8
/
customdatatypemappings.htm
196 lines (195 loc) · 13.7 KB
/
customdatatypemappings.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<!DOCTYPE HTML>
<html id="hs-topic-p">
<!-- saved from url=(0025)http://www.helpsmith.com/ -->
<head>
<title>Custom Data Type Mappings</title>
<meta charset="windows-1252" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="generator" content="HelpSmith 9.4 (Build 22.705)" />
<style type="text/css" media="screen">
html {
overflow: hidden;
margin: 0;
padding: 0;
height: 100%;
}
body {
overflow: hidden;
margin: 0;
padding: 0;
height: 100%;
}
#non-scrolling-area {
padding: 0 10px 0 10px;
background-color: #5e5f5f;
}
#container {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
#content {
padding: 0 10px 5px 10px;
}
</style>
<link type="text/css" rel="stylesheet" href="../css/topics/style.css" />
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../js/nsa.js?0a86901a"></script>
<script type="text/javascript" src="../js/settings.js?f55a7ab4"></script>
<script type="text/javascript" src="../js/core.min.js?0a86901a"></script>
<script type="text/javascript" src="../js/topic.min.js?0a86901a"></script>
<script type="text/javascript">
var topicContext = 2220;
</script>
<!-- Web Help Topic -->
<!-- HTML Help (CHM) Topic -->
</head>
<body>
<div id="non-scrolling-area">
<h1 class="hd0"><span class="ts0">Custom Data Type Mappings</span></h1>
</div>
<div id="container">
<div id="content-background">
<div id="content">
<p> </p>
<p class="ps1"><span class="ts2">CodeGen includes several field loop tokens that emit, based on the Synergy data type of a field, an appropriate data type for use in various other languages. These tokens are </span><a href="fieldloopexpansiontokens.htm#FIELD_CSTYPE" class="hs2"><FIELD_CSTYPE></a><span class="ts2">, </span><a href="fieldloopexpansiontokens.htm#FIELD_OCTYPE" class="hs2"><FIELD_OCTYPE></a><span class="ts2">, </span><a href="fieldloopexpansiontokens.htm#FIELD_SNTYPE" class="hs2"><FIELD_SNTYPE></a><span class="ts2">, </span><a href="fieldloopexpansiontokens.htm#FIELD_SQLTYPE" class="hs2"><FIELD_SQLTYPE></a><span class="ts2"> and </span><a href="fieldloopexpansiontokens.htm#FIELD_VBTYPE" class="hs2"><FIELD_VBTYPE></a><span class="ts2">.</span></p>
<p class="ps1"><span class="ts2">The data type mappings used by these tokens are hard coded to suitable default values within CodeGen. These default values generally follow the same rules that xfNetLink has always used when converting traditional Synergy types into .NET and Java types, and should work well in most scenarios. However if the defaults don't work in a particular scenario then it is possible to customize the values by specifying the data type mappings that you wish to use in an XML file.</span></p>
<p class="ps1"><span class="ts2">The XML file must be defined in a specific way, and an example file called DataMappingsExample.xml is provided when you install or build CodeGen.</span></p>
<p class="ps1"><span class="ts2">Within the XML file there are several main sections that correspond to the various languages that CodeGen supports:</span></p>
<div class="block0">
<table class="tbl0">
<tr class="row0">
<td class="cell38">
<p class="ps1"><span class="ts5">Language</span></p>
</td>
<td class="cell39">
<p class="ps1"><span class="ts5">Field Loop Token</span></p>
</td>
<td class="cell40">
<p class="ps1"><span class="ts5">XML File Section</span></p>
</td>
</tr>
<tr class="row0">
<td class="cell38">
<p class="ps1"><span class="ts2">C#</span></p>
</td>
<td class="cell39">
<p class="ps1"><a href="fieldloopexpansiontokens.htm#FIELD_CSTYPE" class="hs0"><FIELD_CSTYPE></a></p>
</td>
<td class="cell40">
<p class="ps1"><span class="ts3"><CSharp></span></p>
</td>
</tr>
<tr class="row0">
<td class="cell38">
<p class="ps1"><span class="ts2">Objective C</span></p>
</td>
<td class="cell39">
<p class="ps1"><a href="fieldloopexpansiontokens.htm#FIELD_OCTYPE" class="hs2"><FIELD_OCTYPE></a></p>
</td>
<td class="cell40">
<p class="ps1"><span class="ts3"><ObjectiveC></span></p>
</td>
</tr>
<tr class="row0">
<td class="cell38">
<p class="ps1"><span class="ts2">Synergy .NET</span></p>
</td>
<td class="cell39">
<p class="ps1"><a href="fieldloopexpansiontokens.htm#FIELD_SNTYPE" class="hs2"><FIELD_SNTYPE></a></p>
</td>
<td class="cell40">
<p class="ps1"><span class="ts3"><SynergyDotNet></span></p>
</td>
</tr>
<tr class="row0">
<td class="cell38">
<p class="ps1"><span class="ts2">SQL</span></p>
</td>
<td class="cell39">
<p class="ps1"><a href="fieldloopexpansiontokens.htm#FIELD_SQLTYPE" class="hs2"><FIELD_SQLTYPE></a></p>
</td>
<td class="cell40">
<p class="ps1"><span class="ts3"><SQL></span></p>
</td>
</tr>
<tr class="row0">
<td class="cell41">
<p><span class="ts2">TypeScript</span></p>
<p><span class="ts2"> </span></p>
</td>
<td class="cell42">
<p><a href="fieldloopexpansiontokens.htm#FIELD_SQLTYPE" class="hs2"><FIELD_TSLTYPE></a></p>
</td>
<td class="cell43">
<p><span class="ts2"><TypeScript></span></p>
</td>
</tr>
<tr class="row0">
<td class="cell38">
<p class="ps1"><span class="ts2">Visual Basic</span></p>
</td>
<td class="cell39">
<p class="ps1"><a href="fieldloopexpansiontokens.htm#FIELD_VBTYPE" class="hs2"><FIELD_VBTYPE></a></p>
</td>
<td class="cell40">
<p class="ps1"><span class="ts3"><VisualBasic></span></p>
</td>
</tr>
</table>
</div>
<p class="ps1"><span class="ts2">Within each of these main sections there are data type mappings for each of the field types that CodeGen supports. For example, the default mappings for C# look like this:</span></p>
<p class="ps1"><span class="ts3"><?xml version='1.0'?></span><br /><span class="ts3"><DataMappings></span><br /><span class="ts3"> <CSharp></span><br /><span class="ts3"> <Alpha>string</Alpha></span><br /><span class="ts3"> <AlphaBinary>string</AlphaBinary></span><br /><span class="ts3"> <UserAlpha>string</UserAlpha></span><br /><span class="ts3"> <UserNumeric>string</UserNumeric></span><br /><span class="ts3"> <UserDate>string</UserDate></span><br /><span class="ts3"> <UserTimeStamp>string</UserTimeStamp></span><br /><span class="ts3"> <DateYYYYMMDD>DateTime</DateYYYYMMDD></span><br /><span class="ts3"> <DateYYMMDD>DateTime</DateYYMMDD></span><br /><span class="ts3"> <DateYYYYJJJ>DateTime</DateYYYYJJJ></span><br /><span class="ts3"> <DateYYJJJ>DateTime</DateYYJJJ></span><br /><span class="ts3"> <DateYYYYPP>string</DateYYYYPP></span><br /><span class="ts3"> <DateYYPP>string</DateYYPP></span><br /><span class="ts3"> <NullableDateYYYYMMDD>DateTime?</NullableDateYYYYMMDD></span><br /><span class="ts3"> <NullableDateYYMMDD>DateTime?</NullableDateYYMMDD></span><br /><span class="ts3"> <NullableDateYYYYJJJ>DateTime?</NullableDateYYYYJJJ></span><br /><span class="ts3"> <NullableDateYYJJJ>DateTime?</NullableDateYYJJJ></span><br /><span class="ts3"> <TimeHHMMSS>DateTime</TimeHHMMSS></span><br /><span class="ts3"> <TimeHHMM>DateTime</TimeHHMM></span><br /><span class="ts3"> <NullableTimeHHMMSS>DateTime?</NullableTimeHHMMSS></span><br /><span class="ts3"> <NullableTimeHHMM>DateTime?</NullableTimeHHMM></span><br /><span class="ts3"> <ImpliedDecimal>decimal</ImpliedDecimal></span><br /><span class="ts3"> <SmallDecimal>int</SmallDecimal></span><br /><span class="ts3"> <LargeDecimal>long</LargeDecimal></span><br /><span class="ts3"> <VeryLargeDecimal>decimal</VeryLargeDecimal></span><br /><span class="ts3"> <Integer1>int</Integer1></span><br /><span class="ts3"> <Integer2>int</Integer2></span><br /><span class="ts3"> <Integer4>int</Integer4></span><br /><span class="ts3"> <Integer8>long</Integer8></span><br /><span class="ts3"> <Boolean>bool</Boolean></span><br /><span class="ts3"> <Enum>int</Enum></span><br /><span class="ts3"> <Binary>char(l)</Binary></span><br /><span class="ts3"> <StructField>String</StructField></span><br /><span class="ts3"> <AutoSequence>long</AutoSequence></span><br /><span class="ts3"> <AutoTime>long</AutoTime></span><br /><span class="ts3"> </CSharp></span><br /><span class="ts3"></DataMappings></span></p>
<p class="ps1"><span class="ts2">Note that </span><span class="ts3"><SmallDecimal></span><span class="ts2"> is used for D1-8 fields, </span><span class="ts3"><LargeDecimal></span><span class="ts2"> is used for D9-18, and </span><span class="ts3"><VeryLargeDecimal></span><span class="ts2"> is used for D19-28.</span></p>
<p class="ps1"><span class="ts2">In some data mappings you may need to specify the length of a variable (e.g. the Alpha data type for SQL), or length and precision (e.g. the ImpliedDecimal data type for SQL). To support this requirement CodeGen will search for and replace the following specific patterns of characters within data mapping values defined in your XML file:</span></p>
<div class="block0">
<table class="tbl0">
<tr class="row0">
<td class="cell5">
<p class="ps1"><span class="ts5">Pattern of Characters</span></p>
</td>
<td class="cell44">
<p class="ps1"><span class="ts5">Replaced With</span></p>
</td>
</tr>
<tr class="row0">
<td class="cell5">
<p class="ps1"><span class="ts2">(l)</span></p>
</td>
<td class="cell45">
<p class="ps1"><span class="ts2">The length if the field in parentheses. E.g. (10)</span></p>
</td>
</tr>
<tr class="row0">
<td class="cell5">
<p class="ps1"><span class="ts2">(l.p)</span></p>
</td>
<td class="cell45">
<p class="ps1"><span class="ts2">The length and precision of the field, separated by a period, in parentheses. E.g. (10.2)</span></p>
</td>
</tr>
<tr class="row0">
<td class="cell5">
<p class="ps1"><span class="ts2">(l,p)</span></p>
</td>
<td class="cell45">
<p class="ps1"><span class="ts2">The length and precision of the field, separated by a comma, in parentheses. E.g. (10,2)</span></p>
</td>
</tr>
</table>
</div>
<p class="ps1"><span class="ts2">You only need to specify the parts of the XML file that correspond to the specific data mappings that you wish to change. For example, if all you want to do is make the <FIELD_CSTYPE> token insert the TimeSpan data type for D8 and D6 date fields (YYYYMMDD and YYMMDD) then you would configure your data mappings file like this:</span></p>
<p class="ps1"><span class="ts3"><?xml version='1.0'?></span><br /><span class="ts3"><DataMappings></span><br /><span class="ts3"> <CSharp></span><br /><span class="ts3"> <TimeHHMMSS>TimeSpan</TimeHHMMSS></span><br /><span class="ts3"> <TimeHHMM>TimeSpan</TimeHHMM></span><br /><span class="ts3"> </CSharp></span><br /><span class="ts3"></DataMappings></span></p>
<p class="ps1"><span class="ts2">Once you have configured your custom data mappings file you tell CodeGen to use it by using the -</span><span class="ts5">cdm</span><span class="ts2"> command line option, or if you are using the CodeGenerator API via the </span><span class="ts5">CodeGenTaskSet.DataMappingsFile</span><span class="ts2"> property.</span></p>
<p class="ps1"><span class="ts2"> </span></p>
<p><span class="ts2"> </span></p>
<p><span class="ts2"> </span></p>
<div>
<hr class="hline1" />
</div>
<p class="ps8"><span class="ts10">Copyright © 2021 Synergex International, Inc.</span></p>
</div>
</div>
</div>
</body>
</html>