Once the datasets and indexes have been written to disk you must declare the files in order to use them in the example ECL code in the rest of the articles. These declarations are contained in the DeclareData.ECL file. To make them available to the rest of the example code you simply need to IMPORT it. Therefore, at the beginning of each example you will find this line of code:
IMPORT $;
This IMPORTs all the files in the ProgrammersGuide folder (including the DeclareData MODULE structure definition). Referencing anything from DeclareData is done by prepending $.DeclareData to the name of the EXPORT definition you need to use, like this:
MyFile := $.DeclareData.Person.File; //rename $DeclareData.Person.File to MyFile to make //subsequent code simpler
Here is some of the code contained in the DeclareData.ECL file:
EXPORT DeclareData := MODULE EXPORT Layout_Person := RECORD UNSIGNED3 PersonID; STRING15 FirstName; STRING25 LastName; STRING1 MiddleInitial; STRING1 Gender; STRING42 Street; STRING20 City; STRING2 State; STRING5 Zip; END; EXPORT Layout_Accounts := RECORD STRING20 Account; STRING8 OpenDate; STRING2 IndustryCode; STRING1 AcctType; STRING1 AcctRate; UNSIGNED1 Code1; UNSIGNED1 Code2; UNSIGNED4 HighCredit; UNSIGNED4 Balance; END; EXPORT Layout_Accounts_Link := RECORD UNSIGNED3 PersonID; Layout_Accounts; END; SHARED Layout_Combined := RECORD,MAXLENGTH(1000) Layout_Person; DATASET(Layout_Accounts) Accounts; END; EXPORT Person := MODULE EXPORT File := DATASET('~PROGGUIDE::EXAMPLEDATA::People',Layout_Person, THOR); EXPORT FilePlus := DATASET('~PROGGUIDE::EXAMPLEDATA::People', {Layout_Person,UNSIGNED8 RecPos{virtual(fileposition)}}, THOR); END; EXPORT Accounts := DATASET('~PROGGUIDE::EXAMPLEDATA::Accounts', {Layout_Accounts_Link, UNSIGNED8 RecPos{virtual(fileposition)}}, THOR); EXPORT PersonAccounts:= DATASET('~PROGGUIDE::EXAMPLEDATA::PeopleAccts', {Layout_Combined, UNSIGNED8 RecPos{virtual(fileposition)}}, THOR); EXPORT IDX_Person_PersonID := INDEX(Person, {PersonID,RecPos}, '~PROGGUIDE::EXAMPLEDATA::KEYS::People.PersonID'); EXPORT IDX_Accounts_PersonID := INDEX(Accounts, {PersonID,RecPos}, '~PROGGUIDE::EXAMPLEDATA::KEYS::Accounts.PersonID'); EXPORT IDX_PersonAccounts_PersonID := INDEX(PersonAccounts, {PersonID,RecPos}, '~PROGGUIDE::EXAMPLEDATA::KEYS::PeopleAccts.PersonID'); END;
By using a MODULE structure as a container, all the DATASET and INDEX declarations are in a single attribute editor window. This makes maintenance and update simple while allowing complete access to them all.