Login
`
Templates, Tools and Utilities
|
||
Icetips Article
Back to article list
Search Articles
Add Comment
Printer friendly
Direct link
Templates: Template to write templates 1999-02-25 -- Vince Sorensen Newsgroups: TopSpeed.Topic.Templates
Editors note: Please note that some lines may wrap in the template code.
#TEMPLATE (SmartPrintUtilities, 'The Smart Print Utilities')
#!*****************************************************************************
#! Version: 1.5
#!
#! Author: George Petrov
#! Dated : 11.05.1996
#! e-Mail: George.Petrov@Princen-IT.nl or 100276,2655 at CompuServe
#!
#!
#!*****************************************************************************
#UTILITY(GenerateTemplates, 'Generate Template code from All Embeds'),WIZARD
#!*****************************************************************************
#!
#SHEET
#TAB('Template Generation Wizard')
#IMAGE('PRINTDCT.BMP')
#DISPLAY('This wizard will generate a full functional template from the contents of your current
application.'),AT(90,8,235,24)
#DISPLAY('To specify how the template must be generated, click on the Next button.'),AT(90)
#ENDTAB
#TAB('Template Generation Wizard - Output File'),FINISH(1)
#IMAGE('PRINTDCT.BMP')
#PROMPT('What name do you want the template file to have?',OPTION),%WhatName,AT(90,8,235,70)
#PROMPT('Use the application name, with a .TPL extension.',RADIO),AT(100,,224)
#PROMPT('Let me supply my own file name.',RADIO),AT(100)
#ENABLE(%WhatName = 'Let me supply my own file name.')
#PROMPT('Please enter the name of the template file to be
generated.',@S100),%NewName,AT(100,52,215),PROMPTAT(100,40,215)
#ENDENABLE
#ENDTAB
#TAB('Template Generation Wizard - Procedures to be used'),FINISH(1)
#IMAGE('PRINTDCT.BMP')
#DISPLAY('You can generate template from all procedures in your application, or you can select
individual procedures.'),AT(90,8,235,24)
#PROMPT('Generate templates from all my
procedures.',CHECK),%TemplateUseAllProcedures,AT(90,,180),DEFAULT(1)
#DISPLAY('')
#PROMPT('Generate template code from global embeds.',
CHECK),%TemplateUseGlobal,AT(90,,180),DEFAULT(1)
#ENDTAB
#TAB('Template Generation Wizard - Select Procedures'),WHERE(NOT %TemplateUseAllProcedures),FINISH(1)
#IMAGE('PRINTDCT.BMP')
#PROMPT('Procedure
Selection',FROM(%Procedure)),%TemplateUseProcedureSelection,INLINE,SELECTION('Procedure
Selection'),AT(90,8,235)
#ENDTAB
#TAB('Template Generation Wizard - Finally...')
#IMAGE('PRINTDCT.BMP')
#DISPLAY('This concludes the template generation wizard.'),AT(90,8,235,24)
#DISPLAY('Click on the Finish button to generate the template file.'),AT(90,82,235,24)
#ENDTAB
#ENDSHEET
#!
#DECLARE(%SaveToFile)
#!
#IF(%WhatName = 'Use the application name, with a .TPL extension.')
#SET(%SaveToFile,%Application & '.TPL')
#ELSE
#SET(%SaveToFile,%NewName)
#ENDIF
#!
#! Template Variables
#!
#DECLARE(%ASCIIFileRecord)
#DECLARE(%InstancePrefix)
#DECLARE(%InstanceQueue),MULTI
#DECLARE(%TempDescription)
#DECLARE(%Today)
#DECLARE(%AutoTemplateName)
#DECLARE(%ConstructAT)
#DECLARE(%PreviousAT)
#DECLARE(%GenerateTemplate)
#DECLARE(%ReqGlobalExtension)
#DECLARE(%SkipProcedure)
#!
#! Initialization
#!
#SET(%GenerateTemplate,%True)
#SET(%Today,FORMAT(TODAY(),@D1))
#SET(%AutoTemplateName, %Application & '_Template')
#!
#CREATE(%SaveToFile)
#MESSAGE(%Application,0)
%#TEMPLATE (%AutoTemplateName, 'Generated %Application Template')
%#!*****************************************************************************
%#! Version: 1.0
%#!
%#! Author: ...
%#! Dated : %Today
%#!
%#! NOTE: Auto-generated template code based on %Application
%#!
%#!*****************************************************************************
%#!
#FOR(%Module)
#SUSPEND
#CREATE(%Application & '.$$$')
#MESSAGE('Module: ' & %Module,1)
#EXPORT(%Module)
#CLOSE(%Application & '.$$$')
#OPEN(%Application & '.$$$'),READ
#IF(%ModuleBase = %Application AND %TemplateUseGlobal)
%#!
%#!*****************************************************************************
%#EXTENSION(%Application,'Global Extension for
%Application'),APPLICATION
%#!*****************************************************************************
%#!
#ENDIF
#IF(NOT %TemplateUseGlobal)
#SET(%SkipProcedure,%True)
#ENDIF
#LOOP
#READ(%ASCIIFileRecord)
#IF(%ASCIIFileRecord = %EOF OR %ASCIIFileRecord = '[END]')
#BREAK
#ELSIF(%ASCIIFileRecord = '[PROCEDURE]')
#READ(%ASCIIFileRecord)
#FIX(%Procedure,SUB(%ASCIIFileRecord,6,LEN(%ASCIIFileRecord)-5))
#SET(%SkipProcedure,%False)
#IF(NOT %TemplateUseAllProcedures)
#FIX(%TemplateUseProcedureSelection,%Procedure)
#IF(NOT %TemplateUseProcedureSelection)
#SET(%SkipProcedure,%True)
#ENDIF
#ENDIF
#IF(NOT %SkipProcedure)
#MESSAGE('Exporting Embeds: ' & %Procedure,2)
#! Check for description
#SET(%TempDescription,%ProcedureDescription)
#IF(%TempDescription <> '')
#SET(%TempDescription,'Procedure Extension: ' & %TempDescription)
#ELSE
#SET(%TempDescription,'Procedure Extension for ' & %Procedure)
#ENDIF
#IF(%TemplateUseGlobal)
#SET(%ReqGlobalExtension,',REQ(' & %Application & ')')
#ELSE
#SET(%ReqGlobalExtension,'')
#ENDIF
#?%#!
#?%#!*****************************************************************************
#?%#EXTENSION(%Procedure,'%TempDescription'),PROCEDURE
%ReqGlobalExtension
#?%#!*****************************************************************************
#?%#!
#ENDIF
#ELSIF(%ASCIIFileRecord = '[EMBED]')
#FREE(%InstanceQueue)
#INSERT(%GetSection,%False)
#ENDIF
#ENDLOOP
#CLOSE(%Application & '.$$$'),READ
#RESUME
#ENDFOR
#CLOSE
#REMOVE(%Application & '.$$$')
#!
#!=============================================================================
#GROUP(%TplGetDefinitionSection)
#SUSPEND
#LOOP
#READ(%ASCIIFileRecord)
#CASE(%ASCIIFileRecord)
#OF('[END]')
#BREAK
#OF('[SOURCE]')
#IF(%SkipProcedure)
#CYCLE
#ENDIF
#!OROF('[PROCEDURE]')
#!OROF('[GROUP]')
#SET(%ConstructAT,'#AT(')
#FOR(%InstanceQueue)
#CASE(SUB(LEFT(%InstanceQueue),1,5))
#OF('EMBED')
#SET(%ConstructAT,%ConstructAT &
SUB(LEFT(CLIP(%InstanceQueue)),7,LEN(LEFT(CLIP(%InstanceQueue)))-6))
#OF('WHEN ')
#SET(%ConstructAT,%ConstructAT & ',' &
SUB(LEFT(CLIP(%InstanceQueue)),6,LEN(LEFT(CLIP(%InstanceQueue)))-5))
#ENDCASE
#ENDFOR
#SET(%ConstructAT,%ConstructAT & ')')
#IF(%PreviousAT <> %ConstructAT)
%#!
%#!=============================================================================
#?%ConstructAT
%#!-----------------------------------------------------------------------------
%#!
#ENDIF
#SET(%PreviousAT,%ConstructAT)
#ENDCASE
#IF(%SkipProcedure)
#CYCLE
#ENDIF
#IF(SUB(%ASCIIFileRecord,1,1) <> '[')
#CASE(%ASCIIFileRecord)
#OF('PROPERTY:BEGIN')
#OF('PROPERTY:END')
#ELSE
#IF(SUB(%ASCIIFileRecord,1,8) <> 'PRIORITY')
%ASCIIFileRecord
#ELSE
! *** %ASCIIFileRecord ***
#ENDIF
#ENDCASE
#ENDIF
#ENDLOOP
#?%#ENDAT
#RESUME
#!
#!=============================================================================
#!
#!*****************************************************************************
#UTILITY(PrintAllEmbeds, 'Print All Embeds'),WIZARD
#!*****************************************************************************
#!
#SHEET
#TAB('Print All Embeds Wizard')
#IMAGE('PRINTDCT.BMP')
#DISPLAY('This wizard will dump all your Embeds to a file and optionaly print it.'),AT(90,8,235,24)
#DISPLAY('To specify what exactly you want to be printed, click on the Next button.'),AT(90)
#ENDTAB
#TAB('Print All Embeds Wizard - Output File'),FINISH(1)
#IMAGE('PRINTDCT.BMP')
#PROMPT('What name do you want embeds file to have?',OPTION),%WhatName,AT(90,8,235,70)
#PROMPT('Use the application name, with a .EMB extension.',RADIO),AT(100,,224)
#PROMPT('Let me supply my own file name.',RADIO),AT(100)
#ENABLE(%WhatName = 'Let me supply my own file name.')
#PROMPT('Please enter the name of the embeds
file.',@S100),%NewName,AT(100,52,215),PROMPTAT(100,40,215)
#ENDENABLE
#ENDTAB
#TAB('Print All Embeds Wizard - Procedures to be used'),FINISH(1)
#IMAGE('PRINTDCT.BMP')
#DISPLAY('You can dump the embeds from all procedures in your application, or you can select
individual procedures.'),AT(90,8,235,24)
#PROMPT('Dump embeds from all my
procedures.',CHECK),%TemplateUseAllProcedures,AT(90,,180),DEFAULT(1)
#DISPLAY('')
#PROMPT('Dump global embeds code.', CHECK),%TemplateUseGlobal,AT(90,,180),DEFAULT(1)
#ENDTAB
#TAB('Print All Embeds Wizard - Select Procedures'),WHERE(NOT %TemplateUseAllProcedures),FINISH(1)
#IMAGE('PRINTDCT.BMP')
#PROMPT('Procedure
Selection',FROM(%Procedure)),%TemplateUseProcedureSelection,INLINE,SELECTION('Procedure
Selection'),AT(90,8,235)
#ENDTAB
#TAB('Print All Embeds Wizard - Print Options')
#IMAGE('PRINTDCT.BMP')
#DISPLAY('')
#PROMPT('Print the file after generation',CHECK),%DirectPrint,DEFAULT(0),AT(90,,180)
#DISPLAY('')
#PROMPT('Put every procedure on a new page',CHECK),%ProcedureNewPage,DEFAULT(1),AT(90,,180)
#ENDTAB
#TAB('Print All Embeds Wizard - Finally...')
#IMAGE('PRINTDCT.BMP')
#DISPLAY('This concludes the embeds print wizard.'),AT(90,8,235,24)
#DISPLAY('Click on the Finish button to generate the template file.'),AT(90,82,235,24)
#ENDTAB
#ENDSHEET
#!
#DECLARE(%SaveToFile)
#!
#IF(%WhatName = 'Use the application name, with a .EMB extension.')
#SET(%SaveToFile,%Application & '.EMB')
#ELSE
#SET(%SaveToFile,%NewName)
#ENDIF
#!
#! Template Variables
#!
#DECLARE(%ASCIIFileRecord)
#DECLARE(%InstancePrefix)
#DECLARE(%InstanceQueue),MULTI
#DECLARE(%FormFeed)
#DECLARE(%TempDescription)
#DECLARE(%GenerateTemplate)
#DECLARE(%SkipProcedure)
#!
#! Initialization
#!
#SET(%FormFeed,'<12>')
#SET(%GenerateTemplate,%False)
#!
#CREATE(%SaveToFile)
#MESSAGE(%Application,0)
Embeds for %Application
#FOR(%Module)
#SUSPEND
#CREATE(%Application & '.$$$')
#MESSAGE('Module: ' & %Module,1)
#EXPORT(%Module)
#CLOSE(%Application & '.$$$')
#OPEN(%Application & '.$$$'),READ
#IF(%ModuleBase = %Application AND %TemplateUseGlobal)
#?!*****************************************************************************
#?! MODULE: %Module - %ModuleTemplate
#?!*****************************************************************************
#ENDIF
#IF(NOT %TemplateUseGlobal)
#SET(%SkipProcedure,%True)
#ENDIF
#LOOP
#READ(%ASCIIFileRecord)
#IF(%ASCIIFileRecord = %EOF OR %ASCIIFileRecord = '[END]')
#BREAK
#ELSIF(%ASCIIFileRecord = '[PROCEDURE]')
#READ(%ASCIIFileRecord)
#FIX(%Procedure,SUB(%ASCIIFileRecord,6,LEN(%ASCIIFileRecord)-5))
#SET(%SkipProcedure,%False)
#IF(NOT %TemplateUseAllProcedures)
#FIX(%TemplateUseProcedureSelection,%Procedure)
#IF(NOT %TemplateUseProcedureSelection)
#SET(%SkipProcedure,%True)
#ENDIF
#ENDIF
#IF(NOT %SkipProcedure)
#MESSAGE('Exporting Embeds: ' & %Procedure,2)
#! Check for decription
#SET(%TempDescription,%ProcedureDescription)
#IF(%TempDescription <> '')
#SET(%TempDescription,'- ' & %TempDescription)
#ENDIF
#?!*****************************************************************************
#?! PROCEDURE: %Procedure (%ProcedureTemplate) %TempDescription
#?!*****************************************************************************
#?
#ENDIF
#ELSIF(%ASCIIFileRecord = '[EMBED]')
#FREE(%InstanceQueue)
#INSERT(%GetSection,%False)
#ENDIF
#ENDLOOP
#CLOSE(%Application & '.$$$'),READ
#IF(%ProcedureNewPage)
#?%FormFeed
#ENDIF
#RESUME
#ENDFOR
#CLOSE
#REMOVE(%Application & '.$$$')
#IF(%DirectPrint)
#PRINT(%SaveToFile,'All Embeds for ' & %Application)
#ENDIF
#!=============================================================================
#GROUP(%GetSection,%AddToEmbedTree)
#READ(%ASCIIFileRecord)
#ADD(%InstanceQueue,%ASCIIFileRecord)
#INSERT(%LoopSections,%AddToEmbedTree)
#!=============================================================================
#GROUP(%GetDefinitionSection)
#LOOP
#READ(%ASCIIFileRecord)
#CASE(%ASCIIFileRecord)
#OF('[END]')
#BREAK
#OF('[SOURCE]')
#OROF('[PROCEDURE]')
#OROF('[GROUP]')
#IF(%SkipProcedure)
#CYCLE
#ENDIF
!=============================================================================
#SET(%InstancePrefix,'')
#FOR(%InstanceQueue)
%InstancePrefix %InstanceQueue
#SET(%InstancePrefix,%InstancePrefix & ' ')
#ENDFOR
!-----------------------------------------------------------------------------
#ENDCASE
#IF(%SkipProcedure)
#CYCLE
#ENDIF
%ASCIIFileRecord
#ENDLOOP
#!=============================================================================
#GROUP(%LoopSections,%DeleteInstance)
#LOOP
#READ(%ASCIIFileRecord)
#IF(%ASCIIFileRecord = %EOF)
#BREAK
#ENDIF
#CASE(%ASCIIFileRecord)
#OF('[END]')
#IF(%DeleteInstance AND ITEMS(%InstanceQueue) >= 1)
#DELETE(%InstanceQueue,ITEMS(%InstanceQueue))
#ENDIF
#BREAK
#OF('[INSTANCES]')
#INSERT(%GetSection,%True)
#OF('[DEFINITION]')
#IF(%GenerateTemplate)
#INSERT(%TplGetDefinitionSection)
#ELSE
#INSERT(%GetDefinitionSection)
#ENDIF
#ELSE
#IF(SUB(%ASCIIFileRecord,1,6) = 'EMBED ')
#IF(ITEMS(%InstanceQueue) >= 1)
#DELETE(%InstanceQueue,ITEMS(%InstanceQueue))
#ENDIF
#ADD(%InstanceQueue,%ASCIIFileRecord)
#SET(%DeleteInstance,%False)
#ELSIF(SUB(%ASCIIFileRecord,1,5) = 'WHEN ')
#IF(ITEMS(%InstanceQueue) >= 1)
#DELETE(%InstanceQueue,ITEMS(%InstanceQueue))
#ENDIF
#ADD(%InstanceQueue,%ASCIIFileRecord)
#SET(%DeleteInstance,%True)
#ENDIF
#ENDCASE
#ENDLOOP
#!
#!*****************************************************************************
#UTILITY(PrintAllHelpID, 'Print All Help ID''s')
#!*****************************************************************************
#!
#DISPLAY('This Utility will dump all your Help ID''s to a file.')
#DISPLAY('')
#PROMPT('Save to File:',SAVEDIALOG('Pick File','Help ID''s|*.HID')),%SaveToFile
#PREPARE
#SET(%SaveToFile,%Application & '.HID')
#ENDPREPARE
#DISPLAY('')
#PROMPT('Print the file after generation',CHECK),%DirectPrint,DEFAULT(0),AT(10)
#DISPLAY('')
#PROMPT('Put every procedure on a new page',CHECK),%ProcedureNewPage,DEFAULT(1),AT(10)
#PROMPT('Print each control even if there is no HELP ID',CHECK),%PrintAllControls,DEFAULT(1),AT(10)
#PROMPT('Print CONTROL''s Type',CHECK),%PrintType,DEFAULT(1),AT(20)
#PROMPT('Print CONTROL''s Message',CHECK),%PrintMessage,DEFAULT(1),AT(20)
#PROMPT('Print CONTROL''s ToolTip',CHECK),%PrintToolTip,DEFAULT(1),AT(20)
#DECLARE(%FormFeed)
#DECLARE(%HlpIndent)
#DECLARE(%HCounter)
#DECLARE(%ControlHelpID)
#DECLARE(%ControlMessage)
#DECLARE(%ControlToolTip)
#!
#SET(%FormFeed,'<12>')
#CREATE(%SaveToFile)
#MESSAGE(%Application,0)
Help ID's: for %Application
#FOR(%Procedure)
#MESSAGE('Exporting Help ID''s: ' & %Procedure,2)
#SUSPEND
#?
#?!*****************************************************************************
#?%Procedure (%ProcedureTemplate)
#?!*****************************************************************************
#?
#FOR(%Control)
#SET(%ControlHelpID,EXTRACT(%ControlStatement,'HLP',1))
#SET(%ControlMessage,EXTRACT(%ControlStatement,'MSG',1))
#SET(%ControlToolTip,EXTRACT(%ControlStatement,'TIP',1))
#IF(%ControlHelpID <> '' OR %PrintAllControls)
#! There is HelpID
#SET(%HlpIndent,'')
#LOOP,FOR(%HCounter,0,%ControlIndent)
#SET(%HlpIndent,%HlpIndent & ' ')
#ENDLOOP
#IF(%PrintType)
%HlpIndent %ControlType: %Control
#ELSE
%HlpIndent %Control
#ENDIF
#IF(%PrintMessage)
%HlpIndent MSG: %ControlMessage
#ENDIF
#IF(%PrintToolTip)
%HlpIndent TIP: %ControlToolTip
#ENDIF
%HlpIndent HLP: %ControlHelpID
#ENDIF
#ENDFOR
#IF(%ProcedureNewPage)
#?%FormFeed
#ENDIF
#RESUME
#ENDFOR
#CLOSE
#IF(%DirectPrint)
#PRINT(%SaveToFile,'All Help ID''s for ' & %Application)
#ENDIF
#!
#!*****************************************************************************
#UTILITY(PrintProcedureTree, 'Print Procedure Tree')
#!*****************************************************************************
#!
#DISPLAY('This Utility will generate the procedure tree to a text file.')
#DISPLAY('')
#PROMPT('Save to File:',SAVEDIALOG('Pick File','Procedure Tree|*.PTR')),%SaveToFile
#PREPARE
#SET(%SaveToFile,%Application & '.PTR')
#ENDPREPARE
#DISPLAY('')
#PROMPT('Print the file after generation',CHECK),%DirectPrint,DEFAULT(0),AT(10)
#DISPLAY('')
#PROMPT('Does not print already expanded procedures',CHECK),%NoPrintExpandedProc,DEFAULT(1),AT(10)
#PREPARE
#IF(%NoPrintExpandedProc = 1)
#SET(%ProcedureNewPage,0)
#ENDIF
#ENDPREPARE
#ENABLE(%NoPrintExpandedProc = 0)
#PROMPT('Put every procedure tree on a new page',CHECK),%ProcedureNewPage,DEFAULT(1),AT(20)
#ENDENABLE
#PROMPT('Use Graphics',CHECK),%UseGraphics,DEFAULT(1),AT(10)
#ENABLE(%UseGraphics = 1)
#PROMPT('Use ASCII graphical characters',CHECK),%ASCIIGraph,DEFAULT(1),AT(20)
#ENDENABLE
#INSERT(%ASCIICheck)
#DECLARE(%ProcedureExpanded,%Procedure)
#DECLARE(%FormFeed)
#SET(%FormFeed,'<12>')
#CREATE(%SaveToFile)
#MESSAGE(%Application,0)
Procedure Tree for %Application
#FOR(%Procedure),WHERE(ITEMS(%ProcedureCalled) > 0 AND (%ProcedureExpanded = %False OR NOT
%NoPrintExpandedProc))
#MESSAGE('Generating: ' & %Procedure,2)
#INSERT(%PrintProcedure,%Procedure,'',' ')
#IF(%ProcedureNewPage)
%FormFeed
#ENDIF
#ENDFOR
#CLOSE
#IF(%DirectPrint)
#PRINT(%SaveToFile,'Procedure Tree for ' & %Application)
#ENDIF
#!
#GROUP(%PrintProcedure,%ProcedureToPrint,%ProcedureIndent,%NextIndent)
#DECLARE(%ProcSeparator)
#FIX(%Procedure,%ProcedureToPrint)
#SET(%ProcedureExpanded, %True)
#IF(CLIP(%NextIndent) = '')
#SET(%ProcSeparator,%CharBL & %CharMin)
#ELSE
#SET(%ProcSeparator,%CharTL & %CharMin)
#ENDIF
#IF(LEN(%ProcedureIndent) = 0)
#SET(%ProcSeparator,'*' & %CharMin)
#ENDIF
#IF(%ProcedureDescription)
%ProcedureIndent %ProcSeparator %ProcedureToPrint (%ProcedureTemplate)
- %ProcedureDescription
#ELSE
%ProcedureIndent %ProcSeparator %ProcedureToPrint (%ProcedureTemplate)
#ENDIF
#FOR(%ProcedureCalled)
#IF(%Procedure)
#IF(INSTANCE(%ProcedureCalled) = ITEMS(%ProcedureCalled))
#INSERT(%PrintProcedure,%ProcedureCalled,%ProcedureIndent & %NextIndent, ' ')
#ELSE
#INSERT(%PrintProcedure,%ProcedureCalled,%ProcedureIndent & %NextIndent, ' ' & %CharPipe & ' ')
#ENDIF
#ENDIF
#ENDFOR
#!
#GROUP(%ASCIICheck)
#DECLARE(%CharTL)
#DECLARE(%CharMin)
#DECLARE(%CharBL)
#DECLARE(%CharPipe)
#!
#IF(%UseGraphics)
#IF(%ASCIIGraph)
#SET(%CharTL, 'Ã')
#SET(%CharMin, 'Ä')
#SET(%CharBL, 'À')
#SET(%CharPipe,'³')
#ELSE
#SET(%CharTL, '+')
#SET(%CharMin, '-')
#SET(%CharBL, '+')
#SET(%CharPipe,'|')
#ENDIF
#ELSE
#SET(%CharTL, ' ')
#SET(%CharMin, ' ')
#SET(%CharBL, ' ')
#SET(%CharPipe,' ')
#ENDIF
#!
#!*****************************************************************************
#UTILITY(PrintFileRelationsTree, 'Print File Relations Tree')
#!*****************************************************************************
#!
#DISPLAY('This Utility will generate the file relations tree to a text file.')
#DISPLAY('')
#PROMPT('Save to File:',SAVEDIALOG('Pick File','File Relations Tree|*.FTR')),%SaveToFile
#PREPARE
#SET(%SaveToFile,%Application & '.FTR')
#ENDPREPARE
#DISPLAY('')
#PROMPT('Print the file after generation',CHECK),%DirectPrint,DEFAULT(0),AT(10)
#DISPLAY('')
#PROMPT('Does not print already expanded files',CHECK),%NoPrintExpandedFile,DEFAULT(1),AT(10)
#PREPARE
#IF(%NoPrintExpandedFile = 1)
#SET(%FileNewPage,0)
#ENDIF
#ENDPREPARE
#ENABLE(%NoPrintExpandedFile = 0)
#PROMPT('Put every file relations tree on a new page',CHECK),%FileNewPage,DEFAULT(1),AT(20)
#ENDENABLE
#PROMPT('Use Graphics',CHECK),%UseGraphics,DEFAULT(1),AT(10)
#ENABLE(%UseGraphics = 1)
#PROMPT('Use ASCII graphical characters',CHECK),%ASCIIGraph,DEFAULT(1),AT(20)
#ENDENABLE
#INSERT(%ASCIICheck)
#DECLARE(%FileExpanded,%File)
#DECLARE(%FormFeed)
#SET(%FormFeed,'<12>')
#CREATE(%SaveToFile)
#MESSAGE(%Application,0)
File Relations Tree for %Application, dictionary %DictionaryFile
#FOR(%File),WHERE(ITEMS(%Relation) > 0 AND (%FileExpanded = %False OR NOT %NoPrintExpandedFile))
#MESSAGE('Generating: ' & %File,2)
#INSERT(%PrintFile,%File,'',' ')
#IF(%FileNewPage)
%FormFeed
#ENDIF
#ENDFOR
#CLOSE
#IF(%DirectPrint)
#PRINT(%SaveToFile,'File Relations Tree for ' & %Application & ', dictionary ' & %DictionaryFile)
#ENDIF
#!
#GROUP(%PrintFile,%FileToPrint,%FileIndent,%NextIndent)
#DECLARE(%FileSeparator)
#DECLARE(%LastFile)
#DECLARE(%FileCounter)
#DECLARE(%SaveRelation)
#FIX(%File,%FileToPrint)
#SET(%FileExpanded, %True)
#IF(CLIP(%NextIndent) = '')
#SET(%FileSeparator,%CharBL & %CharMin)
#ELSE
#SET(%FileSeparator,%CharTL & %CharMin)
#ENDIF
#IF(LEN(%FileIndent) = 0)
#SET(%FileSeparator,'*' & %CharMin)
#ENDIF
#IF(%FileDescription)
%FileIndent %FileSeparator %FileToPrint - %FileDescription
#ELSE
%FileIndent %FileSeparator %FileToPrint
#ENDIF
#FOR(%Relation),WHERE(%FileRelationType = '1:MANY')
#IF(%File)
#SET(%SaveRelation,INSTANCE(%Relation))
#SET(%LastFile,%True)
#LOOP,FOR(%FileCounter,INSTANCE(%Relation)+1,ITEMS(%Relation))
#SELECT(%Relation,%FileCounter)
#IF(%FileRelationType = '1:MANY')
#SET(%LastFile,%False)
#BREAK
#ENDIF
#ENDLOOP
#SELECT(%Relation,%SaveRelation)
#IF(%LastFile)
#INSERT(%PrintFile,%Relation,%FileIndent & %NextIndent, ' ')
#ELSE
#INSERT(%PrintFile,%Relation,%FileIndent & %NextIndent, ' ' &
%CharPipe & ' ')
#ENDIF
#ENDIF
#ENDFOR
#!
Today is November 21, 2024, 3:30 am This article has been viewed 35264 times. Google search has resulted in 47 hits on this article since January 25, 2004.
|
|