<?xml version="1.0" encoding="utf-8"?>
<ManualTopic ID="/baanerp/tt/EnterpriseStudio/onlinemanual/libraries" xml:lang="en" TopicType="Overview">
	<Header>
		<Title xmlns:HTML="http://www.w3.org/TR/REC-html40">Libraries</Title>
		<Keyword ContextSensitive="No"><Level1>
                                    Infor ERP LN Development Tools
                                 </Level1>
			<Level2>library</Level2>
		</Keyword>
		<Keyword ContextSensitive="No"><Level1>
                                    Infor ERP LN Development Tools
                                 </Level1>
			<Level2>DLL</Level2>
		</Keyword>
	</Header>
	<GeneralSection><Paragraph class="Default">A library, also called Dynamic Link Library (DLL), provides application specific functions that can be used throughout the system, by many sessions.</Paragraph>
		<Paragraph class="Default">A library is a script that is stored in a separate component. The library is compiled independently of the program scripts that use it.</Paragraph>
		<Paragraph class="Default">Libraries are loaded at runtime by sessions that use them: when a session needs to access a library, the library is loaded and the relevant routine is executed.</Paragraph>
	</GeneralSection>
	<GeneralSection><SectionTitle>To create libraries</SectionTitle>
		<Paragraph class="Default">You can create and edit libraries in the <GUIRef href="" role="manual">Program Scripts / Libraries (ttadv2530m000)</GUIRef> session.</Paragraph>
		<Paragraph class="Default">Libraries are a type of program script. The program script code should start with “dll” and the script type should be “General Library”. This helps categorize the scripts into their general use.</Paragraph>
		<Note><SectionTitle>
                                    Note
                                 </SectionTitle>
			<List><ListIntro>You edit and compile a library the same way that you edit and compile a program script. When you create a function in a library, you should consider these differences:</ListIntro>
				<ListItem>When you name the function, precede the function name with the library name.</ListItem>
				<ListItem>Functions are declared as EXTERN.</ListItem>
				<ListItem>The DllUsage / EndDllUsage block is used to communicate how the library function can be used. This text will be displayed when you generate the library documentation or perform a bic_info on the resulting object file.</ListItem>
			</List>
		</Note>
		<Paragraph class="Default">For more information, refer to "Dynamic-link libraries" in the "3GL Language Features" section in the <DocRef>ERP LN 6.1 Programmer's Guide</DocRef>.</Paragraph>
	</GeneralSection>
	<GeneralSection><SectionTitle>User Exit DLLs</SectionTitle>
		<Paragraph class="Default">
                                 ERP LN supports the use of User Exit DLLs. Customers can implement User Exit DLLs to create extra business logic, without having to change the standard ERP LN software. The business logic in a User Exit DLL is automatically executed before and after the standard 'before' and 'after' handling of save and delete actions. In this way, you can conditionally publish data changes to the outside world.</Paragraph>
		<List><ListIntro>A User Exit DLL (UEDLL) contains specific hooks, such as the following:</ListIntro>
			<ListItem><Code>ue.after.after.destroy.object()</Code>
			</ListItem>
			<ListItem><Code>ue.after.before.save.object()</Code>.</ListItem>
		</List>
		<Paragraph class="Default">In these hooks, you define the extra business logic to be executed. The hooks are executed just before and after the corresponding defined standard sections/hooks of the UI script and/or DAL script.</Paragraph>
		<Paragraph class="Default">For more information, refer to the <DocRef>ERP LN 6.1 Programmer's Guide</DocRef>
		</Paragraph>
		<Note><SectionTitle>
                                    Note
                                 </SectionTitle>
			<Paragraph class="Default">The business logic in a User Exit DLL should not change the standard functionality of the ERP LN software; for example, these DLLs are only intended for integration purposes, or to perform extra steps.</Paragraph>
		</Note>
	</GeneralSection>
</ManualTopic>
