@@ -70,6 +70,10 @@ namespace CodeGen.Engine
7070 fieldLoopTokenExpanders.Add("FIELD_COL", expandFieldColumn)
7171 fieldLoopTokenExpanders.Add("FIELD_CSDEFAULT", expandFieldCsDefault)
7272 fieldLoopTokenExpanders.Add("FIELD_CSTYPE", expandFieldCsType)
73+ fieldLoopTokenExpanders.Add("FIELD_CUSTOM_DBL_TYPE", expandFieldCustomDblType)
74+ fieldLoopTokenExpanders.Add("FIELD_CUSTOM_SQL_TYPE", expandFieldCustomSqlType)
75+ fieldLoopTokenExpanders.Add("FIELD_CUSTOM_CONVERT_FUNCTION", expandFieldCustomConvertFunction)
76+ fieldLoopTokenExpanders.Add("FIELD_CUSTOM_STRING_FUNCTION", expandFieldCustomStringFunction)
7377 fieldLoopTokenExpanders.Add("FIELD_CSCONVERT", expandFieldCsConvert)
7478 fieldLoopTokenExpanders.Add("FIELD_DEFAULT", expandFieldDefault)
7579 fieldLoopTokenExpanders.Add("FIELD_DESC", expandFieldDescription)
@@ -328,6 +332,126 @@ namespace CodeGen.Engine
328332 mreturn ExpandFieldLoopToken(tkn, template, loops, doExpand)
329333 endmethod
330334
335+ private static method expandFieldCustomDblType, string
336+ tkn, @Token
337+ template, @FileNode
338+ loops, @IEnumerable<LoopNode>
339+ endparams
340+ proc
341+ lambda doExpand(str, field)
342+ begin
343+ data stringToTest, string
344+
345+ if (field.LongDescription.Contains("CUSTOM_DBL_TYPE=")) then
346+ stringToTest = field.LongDescription
347+ else if (field.UserText.Contains("CUSTOM_DBL_TYPE="))
348+ stringToTest = field.UserText
349+
350+ if (!String.IsNullOrWhiteSpace(stringToTest))
351+ begin
352+ data startPos = stringToTest.IndexOf("CUSTOM_DBL_TYPE=")
353+ data semiPos, int, -1
354+ if (startPos!=-1)
355+ semiPos = stringToTest.IndexOf(";",startPos)
356+ if ((startPos!=-1) && (semiPos!=-1) && (semiPos>(startPos+16)))
357+ mreturn stringToTest.Substring(startPos+16,semiPos-startPos-16)
358+ end
359+
360+ mreturn expandFieldSpec(tkn, template, loops)
361+ end
362+ mreturn ExpandFieldLoopToken(tkn, template, loops, doExpand)
363+ endmethod
364+
365+ private static method expandFieldCustomSqlType, string
366+ tkn, @Token
367+ template, @FileNode
368+ loops, @IEnumerable<LoopNode>
369+ endparams
370+ proc
371+ lambda doExpand(str, field)
372+ begin
373+ data stringToTest, string
374+
375+ if (field.LongDescription.Contains("CUSTOM_SQL_TYPE=")) then
376+ stringToTest = field.LongDescription
377+ else if (field.UserText.Contains("CUSTOM_SQL_TYPE="))
378+ stringToTest = field.UserText
379+
380+ if (!String.IsNullOrWhiteSpace(stringToTest))
381+ begin
382+ data startPos = stringToTest.IndexOf("CUSTOM_SQL_TYPE=")
383+ data semiPos, int, -1
384+ if (startPos!=-1)
385+ semiPos = stringToTest.IndexOf(";",startPos)
386+ if ((startPos!=-1) && (semiPos!=-1) && (semiPos>(startPos+16)))
387+ mreturn stringToTest.Substring(startPos+16,semiPos-startPos-16)
388+ end
389+
390+ mreturn expandFieldSqlType(tkn, template, loops)
391+ end
392+ mreturn ExpandFieldLoopToken(tkn, template, loops, doExpand)
393+ endmethod
394+
395+ private static method expandFieldCustomConvertFunction, string
396+ tkn, @Token
397+ template, @FileNode
398+ loops, @IEnumerable<LoopNode>
399+ endparams
400+ proc
401+ lambda doExpand(str, field)
402+ begin
403+ data stringToTest, string
404+
405+ if (field.LongDescription.Contains("CUSTOM_CONVERT_FUNCTION=")) then
406+ stringToTest = field.LongDescription
407+ else if (field.UserText.Contains("CUSTOM_CONVERT_FUNCTION="))
408+ stringToTest = field.UserText
409+
410+ if (!String.IsNullOrWhiteSpace(stringToTest))
411+ begin
412+ data startPos = stringToTest.IndexOf("CUSTOM_CONVERT_FUNCTION=")
413+ data semiPos, int, -1
414+ if (startPos!=-1)
415+ semiPos = stringToTest.IndexOf(";",startPos)
416+ if ((startPos!=-1) && (semiPos!=-1) && (semiPos>(startPos+24)))
417+ mreturn stringToTest.Substring(startPos+24,semiPos-startPos-24)
418+ end
419+
420+ mreturn ""
421+ end
422+ mreturn ExpandFieldLoopToken(tkn, template, loops, doExpand)
423+ endmethod
424+
425+ private static method expandFieldCustomStringFunction, string
426+ tkn, @Token
427+ template, @FileNode
428+ loops, @IEnumerable<LoopNode>
429+ endparams
430+ proc
431+ lambda doExpand(str, field)
432+ begin
433+ data stringToTest, string
434+
435+ if (field.LongDescription.Contains("CUSTOM_STRING_FUNCTION=")) then
436+ stringToTest = field.LongDescription
437+ else if (field.UserText.Contains("CUSTOM_STRING_FUNCTION="))
438+ stringToTest = field.UserText
439+
440+ if (!String.IsNullOrWhiteSpace(stringToTest))
441+ begin
442+ data startPos = stringToTest.IndexOf("CUSTOM_STRING_FUNCTION=")
443+ data semiPos, int, -1
444+ if (startPos!=-1)
445+ semiPos = stringToTest.IndexOf(";",startPos)
446+ if ((startPos!=-1) && (semiPos!=-1) && (semiPos>(startPos+23)))
447+ mreturn stringToTest.Substring(startPos+23,semiPos-startPos-23)
448+ end
449+
450+ mreturn ""
451+ end
452+ mreturn ExpandFieldLoopToken(tkn, template, loops, doExpand)
453+ endmethod
454+
331455 private static method expandFieldCsConvert, string
332456 tkn, @Token
333457 template, @FileNode
0 commit comments