-
Notifications
You must be signed in to change notification settings - Fork 8
/
fieldloops.htm
113 lines (112 loc) · 14.2 KB
/
fieldloops.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
<!DOCTYPE HTML>
<html id="hs-topic-p">
<!-- saved from url=(0025)http://www.helpsmith.com/ -->
<head>
<title>Field Loops</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 = 150;
</script>
<!-- Web Help Topic -->
<!-- HTML Help (CHM) Topic -->
</head>
<body>
<div id="non-scrolling-area">
<h1 class="hd0"><span class="ts0">Field Loops</span></h1>
</div>
<div id="container">
<div id="content-background">
<div id="content">
<p> </p>
<p class="ps1"><span class="ts2">A field loop is a </span><a href="templatefiles.htm" class="hs2">template file</a><span class="ts2"> construct which allows you to iterate through the collection of fields that CodeGen has information about. These field definitions can come from one of two places:</span></p>
<p class="ps6"><span style="font-size: 14pt; line-height: 0; vertical-align: middle; color: Black">•</span><span style="display: inline-block; width: 18px"></span><span class="ts2">If you are generating code based on information obtained form a repository structure, the field collection is based on the fields which are defined in that repository structure.</span></p>
<p class="ps6"><span style="font-size: 14pt; line-height: 0; vertical-align: middle; color: Black">•</span><span style="display: inline-block; width: 18px"></span><span class="ts2">If you are generating code based on the definition of a UI Toolkit input window (defined in a window script file), the field collection is determined by the fields defined in that input window. Of course these fields may in turn refer to a repository structure.</span></p>
<p class="ps6"><span style="font-size: 14pt; line-height: 0; vertical-align: middle; color: Black">•</span><span style="display: inline-block; width: 18px"></span><span class="ts2">If you are generating code based on information obtained from a Synergy Method Catalog, and you are currently processing a structure parameter, the field collection is based on the fields which are defined in the repository structure associated with the current parameter.</span></p>
<p><span class="ts2"> </span></p>
<p class="ps1"><span class="ts2">Field loops are delimited by a matching pair of </span><span class="ts4"><FIELD_LOOP></span><span class="ts2"> and </span><span class="ts4"></FIELD_LOOP></span><span class="ts2"> tags that surround the template code to be inserted for each field. The code between the opening and closing tags of a field loop is repeated for each field in the structure being processed.</span></p>
<p class="ps0"><span style="font-size: 14pt; line-height: 0; vertical-align: middle; color: Black">•</span><span style="display: inline-block; width: 18px"></span><a href="fieldloopexpansiontokens.htm" class="hs2">Field Loop Expansion Tokens</a></p>
<p class="ps0"><span style="font-size: 14pt; line-height: 0; vertical-align: middle; color: Black">•</span><span style="display: inline-block; width: 18px"></span><a href="fieldloopexpressiontokens.htm" class="hs2">Field Loop Expression Tokens</a></p>
<p class="ps1"><span class="ts2">Field loops may be defined within </span><a href="structureloops.htm" class="hs2">structure loops</a><span class="ts3"> and </span><a href="parameterloops.htm" class="hs2">parameter loops</a><span class="ts2">, but may not be declared within any other loop construct.</span></p>
<p class="ps1"><span class="ts2">CodeGen processes array fields as multiple individual fields. Normally CodeGen does not process overlay fields, or fields marked “Excluded by Language”.</span></p>
<p class="ps1"><span class="ts2">There are two types of field loops, called multi-line field loops, and in-line field loops.</span></p>
<h2 class="hd1"><span class="ts1">Multi-Line Field Loops</span></h2>
<p class="ps1"><span class="ts2">Multi-line field loops occur when the opening and closing field loop tags appear on separate lines in a template file, and delimit one or more entire lines of template code, like this:</span></p>
<p class="ps9"><span class="ts3">[code]</span></p>
<p class="ps9"><span class="ts4"><FIELD_LOOP></span><br /><span class="ts4">code</span><br /><span class="ts4"></FIELD_LOOP></span></p>
<p class="ps9"><span class="ts3">[code]</span></p>
<p class="ps1"><span class="ts2">Multi-line field loops generate one or more lines of output code for each field that is processed.</span></p>
<h2 class="hd1"><span class="ts1">In-Line Field Loops</span></h2>
<p class="ps1"><span class="ts2">In-line field loops exist when the opening and closing field loop tags appear on the same line in a template file, and delimit part of a line of template code, like this:</span></p>
<p class="ps9"><span class="ts3">[code] </span><span class="ts4"><FIELD_LOOP> code </FIELD_LOOP></span><span class="ts3"> [code]</span></p>
<p class="ps1"><span class="ts2">In-line field loops generate code into the current output line.</span></p>
<h2 class="hd1"><span class="ts1">Field Loop Example 1 (Multi-Line)</span></h2>
<p class="ps1"><span class="ts2">The following template file code:</span></p>
<p class="ps12"><span class="ts3">sql = "CREATE TABLE <STRUCTURE_NAME> ("</span><br /><span class="ts4"><FIELD_LOOP></span><br /><span class="ts3">& + "<FIELD_SQLNAME> <FIELD_SQLTYPE><IF REQUIRED> NOT NULL</IF><,>"</span><br /><span class="ts4"></FIELD_LOOP></span><br /><span class="ts3">& + ")"</span></p>
<p><span class="ts3"> </span></p>
<p class="ps1"><span class="ts2">could produce output like this:</span></p>
<p class="ps12"><span class="ts3">sql = "CREATE TABLE PROJECT ("</span><br /><span class="ts3">& + "SYNERGYGRFA VARCHAR(22),"</span><br /><span class="ts3">& + "PROJECT_ID DECIMAL(8) NOT NULL,"</span><br /><span class="ts3">& + "CUSTOMER_ID VARCHAR(10) NOT NULL,"</span><br /><span class="ts3">& + "CONTRACT_ID VARCHAR(10) NOT NULL,"</span><br /><span class="ts3">& + "CONTRACT_PROJECT_ID DECIMAL(3) NOT NULL,"</span><br /><span class="ts3">& + "DESCRIPTION VARCHAR(60) NOT NULL,"</span><br /><span class="ts3">& + "START_DATE DATETIME NOT NULL,"</span><br /><span class="ts3">& + "END_DATE DATETIME,"</span><br /><span class="ts3">& + "CURRENT_STATUS DECIMAL(2) NOT NULL,"</span><br /><span class="ts3">& + "STATUS_DATE DATETIME NOT NULL,"</span><br /><span class="ts3">& + "LEAD_CONSULTANT VARCHAR(15) NOT NULL,"</span><br /><span class="ts3">& + "COORDINATOR VARCHAR(15) NOT NULL,"</span><br /><span class="ts3">& + "APPROVED_BY_FIRST DECIMAL(3) NOT NULL,"</span><br /><span class="ts3">& + "APPROVED_BY_LAST DECIMAL(3) NOT NULL,"</span><br /><span class="ts3">& + "APPROVED_DATE DATETIME NOT NULL,"</span><br /><span class="ts3">& + "APPROVAL_LOCATION DECIMAL(2) NOT NULL,"</span><br /><span class="ts3">& + "WORK_LOCATION_ID DECIMAL(2),"</span><br /><span class="ts3">& + "CREATED_BY VARCHAR(15) NOT NULL,"</span><br /><span class="ts3">& + "CREATED_DATE DATETIME NOT NULL,"</span><br /><span class="ts3">& + "MODIFIED_BY VARCHAR(15),"</span><br /><span class="ts3">& + "MODIFIED_DATE DATETIME,"</span><br /><span class="ts3">& + "TEXT VARCHAR(700),"</span><br /><span class="ts3">& + "REPLICATION_KEY VARCHAR(20)"</span><br /><span class="ts3">& + ")"</span></p>
<p><span class="ts3"> </span></p>
<h2 class="hd1"><span class="ts1">Field Loop Example 2 (Multi-Line and In-Line)</span></h2>
<p class="ps1"><span class="ts2">The following template file code:</span></p>
<p class="ps12"><span class="ts3">sql = "INSERT INTO <STRUCTURE_NAME> ("</span><br /><span class="ts4"><FIELD_LOOP></span><br /><span class="ts3">& + "<FIELD_SQLNAME><,>"</span><br /><span class="ts4"></FIELD_LOOP></span><br /><span class="ts3">& + ") VALUES(</span><span class="ts4"><FIELD_LOOP></span><span class="ts3">:<FIELD#LOGICAL><,></span><span class="ts4"></FIELD_LOOP></span><span class="ts3">)"</span><br /> </p>
<p class="ps1"><span class="ts2">Could produce output like this:</span></p>
<p class="ps12"><span class="ts3">sql = "INSERT INTO PROJECT ("</span><br /><span class="ts3">& + "SYNERGYGRFA,"</span><br /><span class="ts3">& + "PROJECT_ID,"</span><br /><span class="ts3">& + "CUSTOMER_ID,"</span><br /><span class="ts3">& + "CONTRACT_ID,"</span><br /><span class="ts3">& + "CONTRACT_PROJECT_ID,"</span><br /><span class="ts3">& + "DESCRIPTION,"</span><br /><span class="ts3">& + "START_DATE,"</span><br /><span class="ts3">& + "END_DATE,"</span><br /><span class="ts3">& + "CURRENT_STATUS,"</span><br /><span class="ts3">& + "STATUS_DATE,"</span><br /><span class="ts3">& + "LEAD_CONSULTANT,"</span><br /><span class="ts3">& + "COORDINATOR,"</span><br /><span class="ts3">& + "APPROVED_BY_FIRST,"</span><br /><span class="ts3">& + "APPROVED_BY_LAST,"</span><br /><span class="ts3">& + "APPROVED_DATE,"</span><br /><span class="ts3">& + "APPROVAL_LOCATION,"</span><br /><span class="ts3">& + "WORK_LOCATION_ID,"</span><br /><span class="ts3">& + "CREATED_BY,"</span><br /><span class="ts3">& + "CREATED_DATE,"</span><br /><span class="ts3">& + "MODIFIED_BY,"</span><br /><span class="ts3">& + "MODIFIED_DATE,"</span><br /><span class="ts3">& + "TEXT,"</span><br /><span class="ts3">& + "REPLICATION_KEY"</span><br /><span class="ts3">& + ") VALUES(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,:22,:23)"</span></p>
<p><span class="ts3"> </span></p>
<h2 class="hd1"><span class="ts1">Field Loop Example 3</span></h2>
<p class="ps1"><span class="ts2">The following template code:</span></p>
<p class="ps12"><span class="ts3">#region Private fields (storage for properties)</span></p>
<p class="ps12"><span class="ts4"><FIELD_LOOP></span><br /><span class="ts3">private <FIELD_CSTYPE> p_<Field_Sqlname>;</span><br /><span class="ts4"></FIELD_LOOP></span></p>
<p class="ps12"><span class="ts3">#endregion</span><br /> </p>
<p class="ps1"><span class="ts2">Could produce code like this:</span></p>
<p class="ps12"><span class="ts3">#region Private fields (storage for properties)</span></p>
<p class="ps12"><span class="ts3">private string p_Synergygrfa;</span><br /><span class="ts3">private int p_Project_Id;</span><br /><span class="ts3">private string p_Customer_Id;</span><br /><span class="ts3">private string p_Contract_Id;</span><br /><span class="ts3">private int p_Contract_Project_Id;</span><br /><span class="ts3">private string p_Description;</span><br /><span class="ts3">private DateTime p_Start_Date;</span><br /><span class="ts3">private DateTime p_End_Date;</span><br /><span class="ts3">private int p_Current_Status;</span><br /><span class="ts3">private DateTime p_Status_Date;</span><br /><span class="ts3">private string p_Lead_Consultant;</span><br /><span class="ts3">private string p_Coordinator;</span><br /><span class="ts3">private int p_Approved_By_First;</span><br /><span class="ts3">private int p_Approved_By_Last;</span><br /><span class="ts3">private DateTime p_Approved_Date;</span><br /><span class="ts3">private int p_Approval_Location;</span><br /><span class="ts3">private int p_Work_Location_Id;</span><br /><span class="ts3">private string p_Created_By;</span><br /><span class="ts3">private DateTime p_Created_Date;</span><br /><span class="ts3">private string p_Modified_By;</span><br /><span class="ts3">private DateTime p_Modified_Date;</span><br /><span class="ts3">private string p_Text;</span><br /><span class="ts3">private string p_Replication_Key;</span></p>
<p class="ps12"><span class="ts3">#endregion</span></p>
<p><span class="ts3"> </span></p>
<h2 class="hd1"><span class="ts1">Video</span></h2>
<p class="ps1"><span class="ts2">Here's the </span><a href="https://www.youtube.com/watch?v=2urNYutdxcs&list=PLq0aGk6nTIVvbmOwjlCu6bZeY6esBCjI-&index=5" target="_blank" class="hs2">Introduction to Field Loops</a><span class="ts13"> </span><span class="ts2">video. Make sure you select a high-definition version of the video, by default YouTube tends to play the lowest resolution which can look pretty awful!</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>