<?xml version="1.0" encoding="utf-8"?>
<ManualTopic ID="/baanerp/tl/onlinemanual/vsc_overview" xml:lang="en">
	<Header>
		<Title xmlns:HTML="http://www.w3.org/TR/REC-html40">VSC overview</Title>
		<Keyword ContextSensitive="No"><Level1>VSC</Level1>
			<Level2>overview</Level2>
		</Keyword>
	</Header>
	<GeneralSection><Paragraph class="Default"><Link href="/baanerp/tl/glossary/glossary#000100" role="glossary" Update="No">VSC</Link> (Verify Software Components) is used to perform a quality check on the software components, which are developed or changed in Infor ERP LN.</Paragraph>
		<List><ListIntro>You can use VSC to:</ListIntro>
			<ListItem>Check whether software development is done according to the Infor ERP LN coding and programming standards.</ListItem>
			<ListItem>Search for inconsistency in the tools dictionary.</ListItem>
			<ListItem>Search for suspicious constructions.</ListItem>
			<ListItem>Search for constructions the compiler will let through. For example: <List><ListItem>(Dynamic) function implementation.</ListItem>
					<ListItem>A message code is used in a script or library, but the message is expired or not present.</ListItem>
				</List>
			</ListItem>
		</List>
		<Paragraph class="Default">You can run VSC manually. VSC can also start automatically each time a software component is checked in.</Paragraph>
		<Paragraph class="Default">It is recommended to use VSC on a regular basis during the development stage of the Infor ERP LN software products. In this way runtime errors, performance issues, and missing or expired labels, messages, and questions can be solved in an earlier phase. As a result, the workload of the software engineers is reduced.</Paragraph>
		<Figure space-and-orientation="indented-estimated"><HTML:IMG height="317" width="698" SRC="../images/tr_graph_vsc_overview1.gif" path="/enterpriseserver/tools/tl/onlinemanual" btb-count="1" btb-count2="1" btb-image-name="tr_graph_vsc_overview1.gif" btb-source-path="C:\SVN\docnl\Technology\EnterpriseServer~8.5\EnterpriseServer" btb-image-path="/enterpriseserver/tools/tl/images/tr_graph_vsc_overview1.gif" ID="IDAAOCAC" alt="[...]" xmlns:HTML="http://www.w3.org/TR/REC-html40"/><FigCaption>Verify Software Components (VSC)</FigCaption>
		</Figure>
		<Paragraph class="Default">Based on the specified checks that are carried out in VSC, a list of <Link href="/baanerp/tl/glossary/glossary#000102" role="glossary" Update="No">warnings</Link> is generated to be handled. Per warning you can decide to accept the warning, or to solve the problem. If you accept a warning, the warning is removed from the "to handle" list. To solve the problem, you must edit the software component and subsequently run VSC again.</Paragraph>
		<Paragraph class="Default">Some errors can block the check-in process. If a blocking error occurs, you must accept the corresponding warning before you can continue the check-in of the involved software component. If you do not or cannot accept the warning, you must solve the problem and run VSC again, before you can check-in the component.</Paragraph>
		<Paragraph class="Default">To perform quality checks, VSC applies various <Link href="/baanerp/tl/glossary/glossary#000101" role="glossary" Update="No">rules</Link>, which are based on the official Infor ERP LN design principles, such as the Software Programming Standards (SPS), Software Coding Standards (SCS), and performance guidelines. For more information on the rules applied by VSC, refer to <Link href="#rules" role="internal">Rules</Link>.</Paragraph>
		<Note><SectionTitle>
                                 Note
                              </SectionTitle>
			<Paragraph class="Default">The rules in the VSC software are built according to the specifications in the <Link href="/baanerp/tl/glossary/glossary#000106" role="glossary">rule database</Link>. This is a database that the ERP LN development department uses to store information about existing and future rules.</Paragraph>
		</Note>
	</GeneralSection>
	<GeneralSection><SectionTitle>Components checked by VSC</SectionTitle>
		<List><ListIntro>VSC checks the following software components:</ListIntro>
			<ListItem>Messages</ListItem>
			<ListItem>Questions</ListItem>
			<ListItem>Sessions</ListItem>
			<ListItem>Domains</ListItem>
			<ListItem>Tables</ListItem>
			<ListItem>Menus</ListItem>
			<ListItem>Forms</ListItem>
			<ListItem>Scripts (all types)</ListItem>
			<ListItem>Reports</ListItem>
		</List>
		<Note><SectionTitle>
                                 Note
                              </SectionTitle>
			<Paragraph class="Default">During the verification of software components such as sessions, forms and reports, VSC automatically checks the corresponding labels.</Paragraph>
			<Paragraph class="Default">VSC does not check “includes” and “help texts”.</Paragraph>
		</Note>
	</GeneralSection>
	<GeneralSection ID="rules"><SectionTitle>Rules</SectionTitle>
		<List><ListIntro>To perform quality checks, VSC applies various rules that are based on:</ListIntro>
			<ListItem>The Infor ERP LN Software Coding Standards (SCS) - a set of standards that define how each software component type must be coded. For example: the coding standard for dynamic sessions is <Emphasis>pp mmm s f xx o y cc</Emphasis>. where: <List><ListItem>pp - package code</ListItem>
					<ListItem>mmm - module code</ListItem>
					<ListItem>s - submodule code</ListItem>
					<ListItem>f - function code</ListItem>
					<ListItem>xx - sequence number</ListItem>
					<ListItem>o - type of process</ListItem>
					<ListItem>y - session sequence number; if more than one session is present for the same main table, this sequence number can be used to define the different sessions, starting with 0</ListItem>
					<ListItem>cc - customization type</ListItem>
				</List>
			</ListItem>
			<ListItem>The Infor ERP LN Software Programming Standards (SPS) - a set of standards that define how engineers must write scripts and libraries. These standards make it possible to: <List><ListItem>Share good programming practices</ListItem>
					<ListItem>Provide standard programming solutions and style</ListItem>
					<ListItem>Manage complexity</ListItem>
					<ListItem>Write code that is easier to understand (especially for other developers)</ListItem>
				</List>
			</ListItem>
			<ListItem>The Infor ERP LN Performance Guide - a set of guidelines for optimizing the performance of the Infor ERP LN software.</ListItem>
			<ListItem>Practice</ListItem>
			<ListItem>Dynamic tests</ListItem>
		</List>
		<List><ListIntro>Some examples of rules are:</ListIntro>
			<ListItem>A message called in a script, should not be expired.</ListItem>
			<ListItem>A function used in a form command, must exist in the session's UI script.</ListItem>
			<ListItem>A DALHOOKERROR must be followed by a dal.set.error.message().</ListItem>
			<ListItem>A business method called in a UI script, must exist in the DAL.</ListItem>
			<ListItem>A query that performs an update must have a 'with retry' clause.</ListItem>
			<ListItem>The number of parameters in a message call must match the number of parameters in the message description.</ListItem>
			<ListItem>A question must have a default answer.</ListItem>
			<ListItem>The length of the session description label in a form command must fit on a button.</ListItem>
			<ListItem>Field specific buttons in a form must have bind type 'field'.</ListItem>
		</List>
		<Paragraph class="Default">VSC checks wether the software components match the rules. For each problem/conflict, a warning is generated.</Paragraph>
	</GeneralSection>
	<GeneralSection><SectionTitle>Verification code</SectionTitle>
		<Paragraph class="Default">The warnings generated by VSC are logged 'under' a certain verification code.</Paragraph>
		<Paragraph class="Default">A verification code identifies the selection of checks that will be performed, and also determines the package combinations whose components you can check.</Paragraph>
		<List><ListIntro>Each verification code is linked to:</ListIntro>
			<ListItem>One or more package combinations.</ListItem>
			<ListItem>One or more <Link href="/baanerp/tl/glossary/glossary#000104" role="glossary" Update="No">verification filters</Link>. These filters define the checks that will be performed by VSC.</ListItem>
		</List>
		<Figure space-and-orientation="indented-estimated"><FigIntro>See the following figure for an example:</FigIntro>
			<HTML:IMG height="365" width="570" SRC="../images/tr_graph_vsc_overview2.gif" path="/enterpriseserver/tools/tl/onlinemanual" btb-count="1" btb-count2="1" btb-image-name="tr_graph_vsc_overview2.gif" btb-source-path="C:\SVN\docnl\Technology\EnterpriseServer~8.5\EnterpriseServer" btb-image-path="/enterpriseserver/tools/tl/images/tr_graph_vsc_overview2.gif" ID="IDAROCAC" alt="[...]" xmlns:HTML="http://www.w3.org/TR/REC-html40"/><FigCaption>Sample verification code</FigCaption>
		</Figure>
		<Note><SectionTitle>
                                 Note
                              </SectionTitle>
			<Paragraph class="Default">Multiple package combinations can be linked to the same verification code. However, each package combination can be linked to only one verification code.</Paragraph>
		</Note>
		<Paragraph class="Default">When you run VSC, components of a single package combination are checked. When you run VSC via the <Link href="/baanerp/tl/vsc/tlvsc3400m000" role="session">Verify Software Components (tlvsc3400m000)</Link> session, you must first specify the desired verification code, and subsequently select one of the package combinations that are linked to that verification code. As a result, VSC checks the components in the selected package combination, using the checks defined in the filters that are linked to the selected verification code.</Paragraph>
		<ExampleSection><SectionTitle>
                                 Example
                              </SectionTitle>
			<Paragraph class="Default">You run VSC via the <GUIRef href="/baanerp/tl/vsc/tlvsc3400m000" role="session">Verify Software Components (tlvsc3400m000)</GUIRef> session. You specify verification code B61a and package combination B61asy05. As a result, all filters defined for verification code B61a (see the previous figure) will be used to verify software components in package combination B61asy05.</Paragraph>
		</ExampleSection>
		<Paragraph class="Default">Depending on the verification code properties and the verification filter properties, VSC can start automatically when a software engineer checks in a component. At any stage in the development process, an engineer can also start VSC manually, via a shortcut menu command. In these situations, VSC verifies the component using the checks that are defined in the verification filters of the verification code to which the engineer's package combinations is linked.</Paragraph>
		<ExampleSection><SectionTitle>
                                 Example
                              </SectionTitle>
			<Paragraph class="Default">A software engineer, who is linked to package combination B61asy05, checks in a software component. VSC starts automatically.</Paragraph>
			<Paragraph class="Default">Package combination B61asy05 is linked to verification code B61a. Therefore VSC checks the component, using the checks defined in the verification filters of B61a. See the previous figure.</Paragraph>
		</ExampleSection>
	</GeneralSection>
	<GeneralSection><SectionTitle>Verification filter</SectionTitle>
		<Paragraph class="Default">Each verification code is linked to one or more verification filters, which define the checks that will be performed by VSC.</Paragraph>
		<Paragraph class="Default">Usually a <Link href="/baanerp/tl/glossary/glossary#000103" role="glossary">verification code</Link> is linked to one generic verification filter, and one or more specific verification filters.</Paragraph>
		<GeneralSection><SectionTitle>Generic verification filter</SectionTitle>
			<List><ListIntro>The generic filter defines the checks that are executed to verify all software components in all packages. Depending on the filter settings, the checks in the generic filter can generate two types of warnings:</ListIntro>
				<ListItem>"Filtered to Handle" warnings. You must handle these warnings immediately. You must either solve or accept these filtered warnings.</ListItem>
				<ListItem>"Non-filtered" warnings that you do not have to handle immediately.</ListItem>
			</List>
			<Note><SectionTitle>
                                    Note
                                 </SectionTitle>
				<Paragraph class="Default">The generic filter that is generated during the installation of VSC generates only "Filtered to Handle" warnings.</Paragraph>
			</Note>
		</GeneralSection>
		<GeneralSection><SectionTitle>Specific verification filters</SectionTitle>
			<List><ListIntro>Specific filters are used to reduce the number of "FiItered to Handle" warnings for a specific package, module or VRC. Each specific filter is derived from the generic filter, and therefore executes exactly the same checks as the generic filter. In a specific filter, you can indicate for each check whether you want to generate:</ListIntro>
				<ListItem>"FiItered to Handle" warnings that you must handle immediately, or</ListItem>
				<ListItem>"Non-filtered" warnings that you do not have to handle immediately.</ListItem>
			</List>
			<Paragraph class="Default">Note: you cannot disable checks, or add extra checks in a specific filter. If you select a check, which is not present in the generic filter, VSC ignores this check.</Paragraph>
		</GeneralSection>
		<ExampleSection><SectionTitle>
                                 Example
                              </SectionTitle>
			<List><ListIntro>VSC uses the verification filters that are displayed in the previous figure. As a result of this:</ListIntro>
				<ListItem>For components in the tc package, the specific "tc" filter is used.</ListItem>
				<ListItem>For components in the tdpur module, the specific "tdpur" filter is used.</ListItem>
				<ListItem>And so on.</ListItem>
			</List>
		</ExampleSection>
		<List><ListIntro>For each verification filter the following properties are defined:</ListIntro>
			<ListItem>Priority Filter: determines the type of warnings ("FiItered to Handle" or "Non-filtered") that VSC must generate for the various error types, and whether these warnings can be accepted, or must be blocked.</ListItem>
			<ListItem>Category Filter: determines the type of warnings ("FiItered to Handle" or "Non-filtered") that VSC must generate for the various types of checks ("General" checks, "Tools Consistency" checks , "Application Logic" checks, and so on).</ListItem>
			<ListItem>Per component type: the checks that must be performed. For example: for forms, you can perform checks on standard options, specific options, buttons, various form field options, and so on. For tables, you can perform checks on table fields, indices, reference fields, messages, and so on.</ListItem>
		</List>
		<Note><SectionTitle>
                                 Note
                              </SectionTitle>
			<Paragraph class="Default">You can enable one or more <Link href="/baanerp/tl/glossary/glossary#000105" role="glossary" Update="No">source analyze codes</Link> for a verification filter.</Paragraph>
			<Paragraph class="Default">Source Analyze Codes perform user-defined checks on scripts such as UI scripts, DLLs and DALs. Each Source Analyze Code is linked to a search pattern that consists of start expressions, end expressions and search expressions. For more information, refer to <Link href="/baanerp/tl/onlinemanual/vsc_source_analyze_codes" role="manual">Source Analyze Codes</Link>.</Paragraph>
		</Note>
	</GeneralSection>
	<GeneralSection ID="warnings"><SectionTitle>Warnings</SectionTitle>
		<List><ListIntro>VSC generates warnings as a result of the checks that are defined for the verification filters. Depending on the filter settings, VSC generates:</ListIntro>
			<ListItem>"Filtered to Handle" warnings. You must handle these warnings immediately. You must either solve or accept these filtered warnings.</ListItem>
			<ListItem>'Non-filtered' warnings that you do not have to handle immediately.</ListItem>
		</List>
		<Figure space-and-orientation="indented-estimated"><HTML:IMG height="442" width="451" SRC="../images/tr_graph_vsc_overview3.gif" path="/enterpriseserver/tools/tl/onlinemanual" btb-count="1" btb-count2="1" btb-image-name="tr_graph_vsc_overview3.gif" btb-source-path="C:\SVN\docnl\Technology\EnterpriseServer~8.5\EnterpriseServer" btb-image-path="/enterpriseserver/tools/tl/images/tr_graph_vsc_overview3.gif" ID="IDACPCAC" alt="[...]" xmlns:HTML="http://www.w3.org/TR/REC-html40"/><FigCaption>Warnings generated by VSC</FigCaption>
		</Figure>
		<List><ListIntro>Each warning has various attributes, such as:</ListIntro>
			<ListItem>Verification code.</ListItem>
			<ListItem>Component Type.</ListItem>
			<ListItem>Component, subcomponent and line number where the error occurs.</ListItem>
			<ListItem>Priority: high, normal, suspicious, or low.</ListItem>
			<ListItem>Category: General, Tools Consistency, Application Design, Application Logic, Standards, Text, Performance, Integration, Runtime, or Export.</ListItem>
			<ListItem>Message ID and message text.</ListItem>
		</List>
		<Paragraph class="Default">For more information, refer to the online help of the <Link href="/baanerp/tl/vsc/tlvsc3500m000" role="session">Warnings (tlvsc3500m000)</Link> session.</Paragraph>
		<ExampleSection><SectionTitle>
                                 Example
                              </SectionTitle>
			<Paragraph class="Default">The table below shows 2 sample warnings.</Paragraph>
			<TABLE border="1" borderstyle="default" space-and-orientation="indented-estimated"><TBODY><TR><TH width="107" align="left" rowspan="1" colspan="1">Component Type</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">Script</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">Report</TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">Package</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">tt</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">tt</TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">Module</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">adv</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">adv</TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">Component</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">2461</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">343001001</TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">Sub Comp.</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">group.1:init.group:</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">Page No.</TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">Line No.</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">117</TD>
						<TD width="245" align="left" rowspan="1" colspan="1"></TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">Priority</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">Normal</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">Suspicious</TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">Category</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">Application Logic</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">Export</TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">MsID</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">5003</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">152</TD>
					</TR>
					<TR><TH width="107" align="left" rowspan="1" colspan="1">Message</TH>
						<TD width="245" align="left" rowspan="1" colspan="1">db functions are not allowed anymore =&gt; Replace by query or queries</TD>
						<TD width="245" align="left" rowspan="1" colspan="1">Label not found or wrong label used : 'Page no.' should be 'ttgen.page'</TD>
					</TR>
				</TBODY>
			</TABLE>
		</ExampleSection>
		<Paragraph class="Default">You can handle the generated warnings via the Infor ERP LN Application Studio or via the <GUIRef href="/baanerp/tl/vsc/tlvsc3500m000" role="session">Warnings (tlvsc3500m000)</GUIRef> session. For more information, refer to <Link href="/baanerp/tl/onlinemanual/vsc_to_handle_warnings" role="manual">To handle warnings</Link>.</Paragraph>
	</GeneralSection>
	<GeneralSection><SectionTitle>Menu structure</SectionTitle>
		<Paragraph class="Default">The VSC sessions are located under the following menu path on the ERP LN server: <GUIRef href="" role="manual">Tools / Application Development / Utilities / Verify Software Components</GUIRef>.</Paragraph>
		<List><ListIntro>The sessions are grouped in the following menus:</ListIntro>
			<ListItem><GUIRef href="" role="manual">End Users</GUIRef>. Contains sessions to verify software components and to view, print and handle the generated warnings.</ListItem>
			<ListItem><GUIRef href="" role="manual">Administrators</GUIRef>. Contains the following sub menus: <List><ListItem><GUIRef href="" role="manual">Verification Codes</GUIRef>. Contains sessions to configure VSC.</ListItem>
					<ListItem><GUIRef href="" role="manual">Warnings</GUIRef>. Contains sessions to copy, move, or delete the generated warnings.</ListItem>
					<ListItem><GUIRef href="" role="manual">Import/Export</GUIRef>. Contains sessions to transfer VSC data to another development environment.</ListItem>
					<ListItem><GUIRef href="" role="manual">Miscellaneous</GUIRef>. contains miscellaneous administrative sessions.</ListItem>
				</List>
			</ListItem>
		</List>
		<Figure space-and-orientation="indented-estimated"><HTML:IMG height="521" width="454" SRC="../images/nt_screen_vsc_overview4..gif" path="/enterpriseserver/tools/tl/onlinemanual" btb-count="1" btb-count2="1" btb-image-name="nt_screen_vsc_overview4..gif" btb-source-path="C:\SVN\docnl\Technology\EnterpriseServer~8.5\EnterpriseServer" btb-image-path="/enterpriseserver/tools/tl/images/nt_screen_vsc_overview4..gif" ID="IDAXICAC" alt="[...]" xmlns:HTML="http://www.w3.org/TR/REC-html40"/><FigCaption>VSC menu structure</FigCaption>
		</Figure>
		<Paragraph class="Default">For details on these sessions, refer to the session help.</Paragraph>
		<Note><SectionTitle>
                                 Note
                              </SectionTitle>
			<List><ListItem>The sessions in the <GUIRef href="" role="manual">Verification Codes</GUIRef>, <GUIRef href="" role="manual">Warnings</GUIRef> and <GUIRef href="" role="manual">Import/Export</GUIRef> menus are password protected. Each time you start one of these sessions, VSC prompts you for the VSC password. The application administrator can change this password in the <GUIRef href="/baanerp/tl/vsc/tlvsc0291s000" role="session">Change Password VSC (tlvsc0291s000)</GUIRef> session.</ListItem>
				<ListItem>The sessions in the <GUIRef href="" role="manual">End Users</GUIRef> and <GUIRef href="" role="manual">Miscellaneous</GUIRef> menus are not password protected.</ListItem>
			</List>
		</Note>
	</GeneralSection>
	<RelatedTopics><SectionTitle>
                              Related topics
                           </SectionTitle>
		<RelTopic><Link href="/baanerp/tl/onlinemanual/vsc_to_configure_vsc" role="manual">To configure VSC</Link>
		</RelTopic>
		<RelTopic><Link href="/baanerp/tl/onlinemanual/vsc_to_run_vsc" role="manual">To run VSC</Link>
		</RelTopic>
		<RelTopic><Link href="/baanerp/tl/onlinemanual/vsc_misc_admin_tasks" role="manual">Miscellaneous VSC Administrator Tasks</Link>
		</RelTopic>
	</RelatedTopics>
</ManualTopic>
