First, we need to create some logical files to put into a SuperFile.
The following filenames for the new sub-files are declared in the DeclareData MODULE structure:
EXPORT BaseFile := '~PROGGUIDE::SUPERFILE::Base'; EXPORT SubFile1 := '~PROGGUIDE::SUPERFILE::People1'; EXPORT SubFile2 := '~PROGGUIDE::SUPERFILE::People2'; EXPORT SubFile3 := '~PROGGUIDE::SUPERFILE::People3'; EXPORT SubFile4 := '~PROGGUIDE::SUPERFILE::People4'; EXPORT SubFile5 := '~PROGGUIDE::SUPERFILE::People5'; EXPORT SubFile6 := '~PROGGUIDE::SUPERFILE::People6';
The following code (in SuperFile1.ECL) creates the files that we'll use to build SuperFiles:
IMPORT $; IMPORT Std; s1 := $.DeclareData.Person.File(firstname[1] = 'A'); s2 := $.DeclareData.Person.File(firstname[1] BETWEEN 'B' AND 'C'); s3 := $.DeclareData.Person.File(firstname[1] BETWEEN 'D' AND 'J'); s4 := $.DeclareData.Person.File(firstname[1] BETWEEN 'K' AND 'N'); s5 := $.DeclareData.Person.File(firstname[1] BETWEEN 'O' AND 'R'); s6 := $.DeclareData.Person.File(firstname[1] BETWEEN 'S' AND 'Z'); Rec := $.DeclareData.Layout_Person; IF(~Std.File.FileExists($.DeclareData.SubFile1), OUTPUT(s1,,$.DeclareData.SubFile1)); IF(~Std.File.FileExists($.DeclareData.SubFile2), OUTPUT(s2,,$.DeclareData.SubFile2)); IF(~Std.File.FileExists($.DeclareData.SubFile3), OUTPUT(s3,,$.DeclareData.SubFile3)); IF(~Std.File.FileExists($.DeclareData.SubFile4), OUTPUT(s4,,$.DeclareData.SubFile4)); IF(~Std.File.FileExists($.DeclareData.SubFile5), OUTPUT(s5,,$.DeclareData.SubFile5)); IF(~Std.File.FileExists($.DeclareData.SubFile6), OUTPUT(s6,,$.DeclareData.SubFile6));
This code takes data from the ProgGuide.Person.File dataset (created by the code in GenData.ECL and declared in the ProgGuide MODULE structure attribute in the Default module) and writes six separate discrete samples to their own logical files, but only if they do not already exist. We'll use these logical files to build some SuperFiles.