Skip to content

Commit 1883240

Browse files
committed
Added new field loop expansion tokens <FIELD_SQLDBTYPE>, <FIELD_SQLDBTYPE_PRECISION> and <FIELD_SQLDBTYPE_SIZE>, and expression tokens <IF SQLDBTYPE_PRECISION> and <IF SQLDBTYPE_SIZE>.
1 parent aa2711b commit 1883240

File tree

136 files changed

+4519
-4374
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+4519
-4374
lines changed

CodeGenEngine/ExpressionEvaluators/ExpressionEvaluatorFieldLoop.dbl

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@ namespace CodeGen.Engine
246246
fieldLoopExpressionEvaluators.Add("REVERSE", evaluateFieldReverse)
247247
fieldLoopExpressionEvaluators.Add("SELECTIONS", evaluateFieldSelections)
248248
fieldLoopExpressionEvaluators.Add("SELWND", evaluateFieldSelWnd)
249+
fieldLoopExpressionEvaluators.Add("SQLDBTYPE_SIZE", evaluateFieldPositionDbTypeSize)
250+
fieldLoopExpressionEvaluators.Add("SQLDBTYPE_PRECISION", evaluateFieldPositionDbTypePrecision)
249251
fieldLoopExpressionEvaluators.Add("STRUCTFIELD", evaluateFieldStructField)
250252
fieldLoopExpressionEvaluators.Add("TEXTBOX", evaluateFieldTextBox)
251253
fieldLoopExpressionEvaluators.Add("TIME", evaluateFieldTime)
@@ -1277,6 +1279,36 @@ namespace CodeGen.Engine
12771279
mreturn EvaluateFieldLoopExpression(tkn, template, loops, doEvaluate)
12781280
endmethod
12791281

1282+
private static method evaluateFieldPositionDbTypeSize, boolean
1283+
tkn, @Token
1284+
template, @FileNode
1285+
loops, @IEnumerable<LoopNode>
1286+
endparams
1287+
proc
1288+
lambda doEvaluate(str, field, index)
1289+
begin
1290+
using (a)(field.SqlType) select
1291+
(.eq."CHAR",.eq."DECIMAL",.eq."VARCHAR"),
1292+
mreturn true
1293+
endusing
1294+
mreturn false
1295+
end
1296+
mreturn EvaluateFieldLoopExpression(tkn, template, loops, doEvaluate)
1297+
endmethod
1298+
1299+
private static method evaluateFieldPositionDbTypePrecision, boolean
1300+
tkn, @Token
1301+
template, @FileNode
1302+
loops, @IEnumerable<LoopNode>
1303+
endparams
1304+
proc
1305+
lambda doEvaluate(str, field, index)
1306+
begin
1307+
mreturn (field.SqlType.StartsWith("DECIMAL") && field.SqlType.Contains(","))
1308+
end
1309+
mreturn EvaluateFieldLoopExpression(tkn, template, loops, doEvaluate)
1310+
endmethod
1311+
12801312
private static method evaluateFieldFormat, boolean
12811313
tkn, @Token
12821314
template, @FileNode
@@ -1304,8 +1336,8 @@ namespace CodeGen.Engine
13041336
endparams
13051337
proc
13061338
lambda doEvaluate(str, field, index)
1307-
& field.GroupType != RpsFieldGroup.No
1308-
& && String.IsNullOrWhiteSpace(field.GroupStructure)
1339+
& field.GroupType != RpsFieldGroup.No
1340+
& && String.IsNullOrWhiteSpace(field.GroupStructure)
13091341
mreturn EvaluateFieldLoopExpression(tkn, template, loops, doEvaluate)
13101342
endmethod
13111343

@@ -1316,8 +1348,8 @@ namespace CodeGen.Engine
13161348
endparams
13171349
proc
13181350
lambda doEvaluate(str, field, index)
1319-
& field.GroupType != RpsFieldGroup.No
1320-
& && !String.IsNullOrWhiteSpace(field.GroupStructure)
1351+
& field.GroupType != RpsFieldGroup.No
1352+
& && !String.IsNullOrWhiteSpace(field.GroupStructure)
13211353
mreturn EvaluateFieldLoopExpression(tkn, template, loops, doEvaluate)
13221354
endmethod
13231355

CodeGenEngine/ExpressionEvaluators/ExpressionEvaluatorKeySegmentLoop.dbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ namespace CodeGen.Engine
231231
keySegmentLoopExpressionEvaluators.Add("REVERSE", evaluateFieldReverse)
232232
keySegmentLoopExpressionEvaluators.Add("SELECTIONS", evaluateFieldSelections)
233233
keySegmentLoopExpressionEvaluators.Add("SELWND", evaluateFieldSelWnd)
234+
keySegmentLoopExpressionEvaluators.Add("SQLDBTYPE_SIZE", evaluateFieldPositionDbTypeSize)
235+
keySegmentLoopExpressionEvaluators.Add("SQLDBTYPE_PRECISION", evaluateFieldPositionDbTypePrecision)
234236
keySegmentLoopExpressionEvaluators.Add("STRUCTFIELD", evaluateFieldStructField)
235237
keySegmentLoopExpressionEvaluators.Add("TEXTBOX", evaluateFieldTextBox)
236238
keySegmentLoopExpressionEvaluators.Add("TIME", evaluateFieldTime)

CodeGenEngine/TokenExpanders/TokenExpanderFieldLoop.dbl

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,14 @@
4040
;;
4141
;; *****************************************************************************
4242

43+
import CodeGen.Engine
44+
import CodeGen.RepositoryAPI
4345
import System
4446
import System.Collections.Generic
4547
import System.Linq
4648
import System.Text
49+
import System.Text.RegularExpressions
4750
import System.Threading.Tasks
48-
import CodeGen.Engine
49-
import CodeGen.RepositoryAPI
5051

5152
.array 0
5253

@@ -163,6 +164,8 @@ namespace CodeGen.Engine
163164
fieldLoopTokenExpanders.Add("FIELD_SQL_ALTNAME", expandFieldSqlAltname)
164165
fieldLoopTokenExpanders.Add("FIELD_SQLNAME", expandFieldSqlName)
165166
fieldLoopTokenExpanders.Add("FIELD_SQLDBTYPE", expandFieldSqlDbType)
167+
fieldLoopTokenExpanders.Add("FIELD_SQLDBTYPE_SIZE", expandFieldSqlDbTypeSize)
168+
fieldLoopTokenExpanders.Add("FIELD_SQLDBTYPE_PRECISION", expandFieldSqlDbTypePrecision)
166169
fieldLoopTokenExpanders.Add("FIELD_SQLTYPE", expandFieldSqlType)
167170
fieldLoopTokenExpanders.Add("FIELD_TEMPLATE", expandFieldTemplate)
168171
fieldLoopTokenExpanders.Add("FIELD_TKSCRIPT", expandFieldTkScript)
@@ -1961,6 +1964,72 @@ namespace CodeGen.Engine
19611964
mreturn ExpandFieldLoopToken(tkn, template, loops, doExpand)
19621965
endmethod
19631966

1967+
private static method expandFieldSqlDbTypeSize, string
1968+
tkn, @Token
1969+
template, @FileNode
1970+
loops, @IEnumerable<LoopNode>
1971+
endparams
1972+
proc
1973+
lambda doExpand(str, field)
1974+
begin
1975+
using (a)(field.SqlType) select
1976+
(.eq."CHAR",.eq."DECIMAL",.eq."VARCHAR"),
1977+
begin
1978+
data result, @Tuple<int,int>, ExtractLengthAndPrecision(field.SqlType)
1979+
mreturn result.Item1.ToString()
1980+
end
1981+
endusing
1982+
mreturn "-1"
1983+
end
1984+
mreturn ExpandFieldLoopToken(tkn, template, loops, doExpand)
1985+
endmethod
1986+
1987+
private static method expandFieldSqlDbTypePrecision, string
1988+
tkn, @Token
1989+
template, @FileNode
1990+
loops, @IEnumerable<LoopNode>
1991+
endparams
1992+
proc
1993+
lambda doExpand(str, field)
1994+
begin
1995+
if (field.SqlType.StartsWith("DECIMAL"))
1996+
begin
1997+
if (field.SqlType.Contains(",")) then
1998+
begin
1999+
data result, @Tuple<int,int>, ExtractLengthAndPrecision(field.SqlType)
2000+
mreturn result.Item2.ToString()
2001+
end
2002+
else
2003+
mreturn "0"
2004+
end
2005+
mreturn String.Empty
2006+
end
2007+
mreturn ExpandFieldLoopToken(tkn, template, loops, doExpand)
2008+
endmethod
2009+
2010+
2011+
private static method ExtractLengthAndPrecision, @Tuple<int,int>
2012+
required in stringToParse, string
2013+
proc
2014+
data length = 0
2015+
data precision = 0
2016+
2017+
data result = Regex.Match(stringToParse, "\((\d+)(?:,(\d+))?\)")
2018+
2019+
if (result.Success)
2020+
begin
2021+
length = int.Parse(result.Groups[1].Value)
2022+
2023+
if (result.Groups[2].Success)
2024+
precision = int.Parse(result.Groups[2].Value)
2025+
2026+
mreturn Tuple.Create(length, precision)
2027+
end
2028+
2029+
mreturn Tuple.Create(length,precision)
2030+
2031+
endmethod
2032+
19642033
private static method expandFieldSqlType, string
19652034
tkn, @Token
19662035
template, @FileNode

CodeGenEngine/Tokenizer.dbl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,8 @@ namespace CodeGen.Engine
400400
& { makeTokenMeta_AllVariants("FIELD_NET_ALTNAME", TokenType.FieldLoop, TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop, true) },
401401
& { makeTokenMeta_AllVariants("FIELD_SQL_ALTNAME", TokenType.FieldLoop, TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop, true) },
402402
& { new TokenMeta() {Name = "FIELD_SQLDBTYPE", TypeOfToken = TokenType.FieldLoop, IsPaired = false, Validity = TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop, RequiresRepository = true} },
403+
& { new TokenMeta() {Name = "FIELD_SQLDBTYPE_SIZE", TypeOfToken = TokenType.FieldLoop, IsPaired = false, Validity = TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop, RequiresRepository = true} },
404+
& { new TokenMeta() {Name = "FIELD_SQLDBTYPE_PRECISION", TypeOfToken = TokenType.FieldLoop, IsPaired = false, Validity = TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop, RequiresRepository = true} },
403405
& { new TokenMeta() {Name = "FIELD_SQLTYPE", TypeOfToken = TokenType.FieldLoop, IsPaired = false, Validity = TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop, RequiresRepository = true} },
404406
& { new TokenMeta() {Name = "FIELD_TEMPLATE", TypeOfToken = TokenType.FieldLoop, IsPaired = false, Validity = TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop, RequiresRepository = true} },
405407
& { new TokenMeta() {Name = "FIELD_TKSCRIPT", TypeOfToken = TokenType.FieldLoop, IsPaired = false, Validity = TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop, RequiresRepository = true} },
@@ -1065,6 +1067,8 @@ namespace CodeGen.Engine
10651067
expressions.Add("SELWND", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
10661068
expressions.Add("SINGLE_SEGMENT", TokenValidity.KeyLoop)
10671069
expressions.Add("SINGLE_TAG", TokenValidity.TagLoop)
1070+
expressions.Add("SQLDBTYPE_SIZE", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
1071+
expressions.Add("SQLDBTYPE_PRECISION", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
10681072
expressions.Add("STATICRFA", TokenValidity.FileLoop)
10691073
expressions.Add("STORED_GRFA", TokenValidity.FileLoop)
10701074
expressions.Add("STRING", TokenValidity.MethodLoop | TokenValidity.ParameterLoop)

Documentation/CodeGen.chm

184 Bytes
Binary file not shown.

Documentation/CodeGen.hsmx

250 Bytes
Binary file not shown.

docs/css/topics.css

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -183,81 +183,81 @@ a[name],a[id] {
183183
font-family: 'Segoe UI';
184184
}
185185
.ts4 {
186+
font-family: 'Courier New';
187+
color: Blue;
188+
}
189+
.ts5 {
186190
font-family: 'Segoe UI';
187191
font-size: 12pt;
188192
}
189-
.ts5 {
193+
.ts6 {
190194
font-family: 'Courier New';
191195
}
192-
.ts6 {
196+
.ts7 {
193197
font-family: 'Courier New';
194198
font-weight: bold;
195199
}
196-
.ts7 {
200+
.ts8 {
197201
font-family: 'Segoe UI';
198202
font-weight: bold;
199203
}
200-
.ts8 {
204+
.ts9 {
201205
font-family: 'Segoe UI';
202206
font-style: italic;
203207
}
204-
.ts9 {
208+
.ts10 {
205209
font-family: 'Courier New';
206210
}
207-
.ts10 {
211+
.ts11 {
208212
font-family: 'Segoe UI';
209213
font-size: 13pt;
210214
font-weight: bold;
211215
}
212-
.ts11 {
216+
.ts12 {
213217
font-family: 'Segoe UI';
214218
}
215-
.ts12 {
219+
.ts13 {
216220
font-family: 'Courier New';
217221
font-size: 12pt;
218222
font-weight: bold;
219223
}
220-
.ts13 {
224+
.ts14 {
221225
font-family: 'Courier New';
222226
font-size: 12pt;
223227
}
224-
.ts14 {
228+
.ts15 {
225229
font-family: 'Courier New';
226230
font-size: 12pt;
227231
font-weight: bold;
228232
color: Green;
229233
}
230-
.ts15 {
234+
.ts16 {
231235
font-family: 'Courier New';
232236
font-size: 12pt;
233237
color: Red;
234238
}
235-
.ts16 {
239+
.ts17 {
236240
font-family: 'Courier New';
237241
font-size: 12pt;
238242
color: Blue;
239243
}
240-
.ts17 {
244+
.ts18 {
241245
font-family: 'Courier New';
242246
font-size: 12pt;
243247
background-color: Yellow;
244248
}
245-
.ts18 {
249+
.ts19 {
246250
font-family: 'Courier New';
247251
font-size: 12pt;
248252
font-weight: bold;
249253
color: Green;
250254
background-color: Yellow;
251255
}
252-
.ts19 {
256+
.ts20 {
253257
font-family: 'Courier New';
254258
font-weight: bold;
255259
color: Green;
256260
}
257-
.ts20 {
258-
font-family: 'Courier New';
259-
color: Blue;
260-
}
261261
.ts21 {
262262
font-family: 'Courier New';
263263
color: Red;

docs/data/search.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

docs/index.htm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
77
<meta name="viewport" content="width=device-width, initial-scale=1" />
88
<meta name="generator" content="HelpSmith 10.1 (Build 24.1202)" />
9-
<link type="text/css" rel="stylesheet" href="css/apr.css?cb49c508" />
10-
<link type="text/css" rel="stylesheet" href="css/app.css?cb49c508" />
9+
<link type="text/css" rel="stylesheet" href="css/apr.css?a60db89d" />
10+
<link type="text/css" rel="stylesheet" href="css/app.css?a60db89d" />
1111
<script src="js/jquery-3.7.1.min.js"></script>
1212
<script src="js/app.min.js?b1fab730"></script>
1313
<!-- Web Help IndexPage -->

0 commit comments

Comments
 (0)