Login
`
Templates, Tools and Utilities
|
||
Icetips Article
Back to article list
Search Articles
Add Comment
Printer friendly
Direct link
Templates: Create memory record for a file 1998-12-27 -- Roberto Artigas Jr. Newsgroups: TopSpeed.Topic.Templates
Editors note: Please note that some lines may wrap in the template code.
Heavenes -
If you are using the ABC DLL Toolkit from Jim Katz you are probably aware
that there are File DLL's and Code DLL's and each different dictionaries is
in a different DLL's.
So if you run into having to write a record that belongs to a different
dictionary in a different DLL you will need to pass the record with the data
fields needed to be written.
Here is a template that will generate a memory record format and key areas
for each file. Each file will be in it's own source file that can be
included.
This template is a starting point. Modify to taste. Mileage may vary.
Enjoy!
Roberto Artigas Jr
ascend@netten.net
#!====================================================================
#!====================================================================
#!====================================================================
#UTILITY (GenerateRecords, 'Generate Record Groups'), WIZARD
#!====================================================================
#SHEET
#TAB ('Generate Records Groups')
#DISPLAY ('This wizard will generate group definitions of the contents
of your current dictionary.'), AT(90, 8, 235, 24)
#DISPLAY ('To specify how you want the report constructed, click on the
Next button.'), AT(90)
#ENDTAB
#TAB ('Dictionary Print Wizard - Reported Files'), FINISH(1)
#DISPLAY ('You can report on each file in your dictionary, or you can
select individual files to report on.'), AT(90, 8, 235, 24)
#PROMPT ('Report on all files in my dictionary.', CHECK),
%DictionaryReportUseAllFiles, DEFAULT(1), AT(90,, 180)
#ENDTAB
#TAB ('Dictionary Print Wizard - Select Reported Files'),
WHERE(~%DictionaryReportUseAllFiles), FINISH(1)
#PROMPT ('File Selection', FROM (%File)),
%DictionaryReportFileSelection, INLINE, SELECTION('File Selection'), AT(90,
8, 235)
#ENDTAB
#TAB ('Dictionary Print Wizard - Finally...')
#DISPLAY ('This concludes the dictionary Group Generate wizard.'),
AT(90, 8, 235, 24)
#DISPLAY ('Click on the Finish button to generate Groups.'), AT(90, 82,
235, 24)
#ENDTAB
#ENDSHEET
#COMMENT(45)
#DECLARE (%ReportedFiles),UNIQUE
#DECLARE (%Groups), MULTI
#DECLARE (%ValueConstruct)
#DECLARE (%TheKeyId)
#DECLARE (%TheKeyNo,LONG)
#IF (%DictionaryReportUseAllFiles)
#FOR (%File)
#ADD (%ReportedFiles, %File)
#ENDFOR
#ELSE
#FOR (%DictionaryReportFileSelection)
#ADD (%ReportedFiles, %DictionaryReportFileSelection)
#ENDFOR
#ENDIF
#DECLARE (%OutputFile)
#FOR (%ReportedFiles)
#FIX (%File, %ReportedFiles)
#SET (%OutputFile,%FILE&'.GRP')
#MESSAGE('File Group Definition: ' & %OutputFile, 2)
#CREATE (%OutputFile)
!BOF
!
! File: %OutputFile
! Purpose: Generated File Records as Groups
! Author: GenerateRecords Template
! Narative: This template is used to pass records structures
! back and forth between DLL's when the files
! are not shared. Since file definitions are not
! available, data has to be passed in areas.
!
#IF (%FileType = 'ALIAS')
! Name: %File(An alias for %AliasFile)
#ELSE
! Name: %File
#ENDIF
! Prefix: %FilePrefix
#IF (%FileDescription)
! Description: %FileDescription
#ENDIF
#IF (%FileName)
! Filename: %FileName
#ENDIF
!
!-Keys-
#SUSPEND
#FOR (%Key)
! %[27]KeyID %|
#FOR (%KeyField)
#FIX (%Field, %KeyField)
#IF (INSTANCE(%KeyField) = 1)
%FieldID(%KeyFieldSequence)
#ELSE
!%[29]Null%FieldID(%KeyFieldSequence)
#ENDIF
#ENDFOR
#ENDFOR
#RESUME
!-Keys-
#SUSPEND
#SET(%TheKeyNo,0)
#FOR (%Key)
#FOR (%KeyField)
#FIX (%Field, %KeyField)
#IF (INSTANCE(%KeyField) = 1)
#!SET(%TheKeyId,SUB(%KeyID,1,INSTRING('_',%KeyID,1,1)-1))
#SET(%TheKeyId,'Key'&%TheKeyNo)
%FilePrefix:mKey:%KeyID GROUP,TYPE,BINDABLE,PRE(m%FilePrefix:%TheKeyId)
%FieldStruct #
Today is November 21, 2024, 3:34 am This article has been viewed 35217 times. Google search has resulted in 14 hits on this article since January 25, 2004.
|
|