-
Notifications
You must be signed in to change notification settings - Fork 8
/
conditionalprocessing.htm
83 lines (82 loc) · 8.39 KB
/
conditionalprocessing.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
<!DOCTYPE HTML>
<html id="hs-topic-p">
<!-- saved from url=(0025)http://www.helpsmith.com/ -->
<head>
<title>Conditional Processing</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.8 (Build 23.1026)" />
<link type="text/css" rel="stylesheet" href="../css/topics/style.css" />
<script type="text/javascript" src="../js/jquery-3.7.1.min.js"></script>
<style type="text/css" media="screen">
html {
height: 100%;
}
body {
margin: 0;
}
</style>
<script type="text/javascript" src="../js/settings.js?d3532453"></script>
<script type="text/javascript" src="../js/core.min.js?adb9c364"></script>
<script type="text/javascript" src="../js/topic.min.js?adb9c364"></script>
<script type="text/javascript">
var topicContext = 3420;
</script>
<!-- Web Help Topic -->
<!-- HTML Help (CHM) Topic -->
</head>
<body class="nsa-wrapper">
<div id="nsa-box" class="nsa-content0">
<h1 class="hd0"><span class="ts0">Conditional Processing</span></h1>
</div>
<div id="sa-box">
<div id="content-box" class="sa-content0">
<p> </p>
<p><span class="ts2">Conditional processing blocks provide the ability to include or exclude parts of a template file based on the presence or absence of identifiers that can be defined using the </span><a href="commandlinereference.htm#option_define" class="hs2">-define</a><span class="ts2"> command line option. Unlike expression tokens the evaluation of conditional processing expressions a does not change based on the current context within a template file, rather it remains consistent throughout the entire code generation job.</span></p>
<p><span class="ts2"> </span></p>
<p><span class="ts2">Conditional processing is based on identifiers that can be defined on the command line. For example:</span></p>
<p><span class="ts2"> </span></p>
<p class="ps12"><span class="ts3">codegen -s CUSTOMER -t FILEIO_CLASS </span><span class="ts16">-define ATTACH_IO_HOOKS</span><span class="ts3"> -r</span></p>
<p><span class="ts2"> </span></p>
<p><span class="ts2">And is used to include or exclude parts of the code in a template file by evaluating the presence or absence of the identifier via special </span><span class="ts3"><IF DEFINED_</span><span class="ts17">identifier</span><span class="ts3">></span><span class="ts2"> and </span><span class="ts3"><IF NOT_DEFINED_</span><span class="ts17">identifier</span><span class="ts3">></span><span class="ts2"> tokens. For example:</span></p>
<p><span class="ts2"> </span></p>
<p class="ps12"><span class="ts3">(IO_OPEN_UPD),</span></p>
<p class="ps12"><span class="ts3">begin</span></p>
<p class="ps12"> <span class="ts3">open(a_channel=0,u:i,"<FILE_NAME>") [ERR=openError]</span></p>
<p class="ps12"> <span class="ts16"><IF DEFINED_ATTACH_IO_HOOKS></span></p>
<p class="ps12"> <span class="ts3">new <StructureName>Hooks(a_channel)</span></p>
<p class="ps12"> <span class="ts16"></IF></span></p>
<p class="ps12"><span class="ts3">end</span></p>
<p> </p>
<p><span class="ts2">There are two types of conditional processing block:</span></p>
<p><span class="ts2"> </span></p>
<p class="ps1"><span class="ts2">Multi-line conditional processing blocks cause one or more lines of code to be included or excluded based on the presence or absence of the defined identifier and occur when the opening and closing conditional tags appear on separate lines in a template file. They delimit one or more entire lines of template code, like this:</span></p>
<p class="ps9"><span class="ts16"><IF [NOT_]DEFINED_</span><span class="ts18">identifier</span><span class="ts16">></span><br /><span class="ts3">code</span><br /><span class="ts16"></IF></span></p>
<p class="ps1"><span class="ts2">In-line conditional processing blocks cause part of a line to be included or excluded and occur when the opening and closing conditional tags appear on the same line in a template file. They delimit part of a line of template code, like this:</span></p>
<p class="ps9"><span class="ts3">[code] </span><span class="ts16"><IF [NOT_]DEFINED_</span><span class="ts18">identifier</span><span class="ts16">></span><span class="ts3"> code </span><span class="ts16"></IF></span><span class="ts3"> [code]</span></p>
<h2 class="hd1"><span class="ts1">Conditional Processing Block Else Clauses</span></h2>
<p class="ps1"><span class="ts2">Else clauses are supported in multi-line conditional processing blocks, like this:</span></p>
<p class="ps9"><span class="ts16"><IF [NOT_]DEFINED_</span><span class="ts18">identifier</span><span class="ts16">></span><br /><span class="ts3">code</span><br /><span class="ts16"><ELSE></span><br /><span class="ts3">code</span><br /><span class="ts16"></IF></span></p>
<p class="ps1"><span class="ts2">And in in-line conditional processing blocks, like this:</span></p>
<p class="ps9"><span class="ts3">[code] </span><span class="ts16"><IF [NOT_]DEFINED_</span><span class="ts18">identifier</span><span class="ts16">></span><span class="ts3"> code </span><span class="ts16"><ELSE></span><span class="ts3"> code </span><span class="ts16"></IF></span><span class="ts3"> [code]</span></p>
<h2 class="hd1"><span class="ts1">Nesting Conditional Processing Blocks</span></h2>
<p class="ps1"><span class="ts2">Multi-line conditional processing blocks may be nested within one another. For example:</span></p>
<p class="ps9"><span class="ts16"><IF DEFINED_</span><span class="ts18">identifier1</span><span class="ts16">></span><br /><span class="ts3">[code]</span><br /><span class="ts16"><IF DEFINED_</span><span class="ts18">identifier2</span><span class="ts16">></span><br /><span class="ts3">code</span><br /><span class="ts16"></IF></span><br /><span class="ts3">[code]</span><br /><span class="ts16"></IF></span></p>
<p class="ps1"><span class="ts2">In-line conditional processing blocks may be nested within multi-line conditional processing blocks.</span></p>
<p class="ps9"><span class="ts16"><IF DEFINED_</span><span class="ts18">identifier1</span><span class="ts16">></span><br /><span class="ts3">[code]</span><br /><span class="ts3">[code] </span><span class="ts16"><IF DEFINED_</span><span class="ts18">identifier2</span><span class="ts16">> </span><span class="ts3">code </span><span class="ts16"></IF></span><span class="ts3"> [code]</span><br /><span class="ts3">[code]</span><br /><span class="ts16"></IF></span></p>
<p class="ps1"><span class="ts2">Multiple in-line conditional processing blocks may be used within the same line:</span></p>
<p class="ps9"><span class="ts3">[code] </span><span class="ts16"><IF DEFINED_</span><span class="ts18">identifier1</span><span class="ts16">></span><span class="ts3"> code </span><span class="ts16"></IF></span><span class="ts3"> [code] </span><span class="ts16"><IF DEFINED_</span><span class="ts18">identifier2</span><span class="ts16">></span><span class="ts3"> code </span><span class="ts16"></IF></span><span class="ts3"> [code]</span></p>
<p class="ps1"><span class="ts2">In-line conditional processing blocks may be nested within one another:</span></p>
<p class="ps9"><span class="ts3">[code] </span><span class="ts16"><IF DEFINED_</span><span class="ts18">identifier1</span><span class="ts16">></span><span class="ts3"> [code] </span><span class="ts16"><IF DEFINED_</span><span class="ts18">identifier2</span><span class="ts16">></span><span class="ts3"> code </span><span class="ts16"></IF></IF></span><span class="ts3"> [code]</span></p>
<p class="ps1"><span class="ts2"> </span></p>
<p><span class="ts2"> </span></p>
<p><span class="ts2"> </span></p>
<div class="hr-wrapper">
<hr class="hline1" />
</div>
<p class="ps8"><span class="ts10">Copyright © 2021 Synergex International, Inc.</span></p>
</div>
</div>
</body>
</html>