Login
`
Templates, Tools and Utilities
|
||
Add a comment to an Icetips ArticlePlease add your comments to this article.
Please note that you must provide both a name and a valid email address in order
for us to publish your comment. Comments are moderated and are not visible until they have been approved. Spam is never approved!
Back to article list Search Articles Add Comment Printer friendly Direct link Par2: Template to print procedures in a project/project tree 2001-03-02 -- Roberto Artigas Jr. #!--------------------------------------------------------------------
#UTILITY(PrintProcNames,'Print Procedure Names')
#!--------------------------------------------------------------------
#! Created By: Roberto Artigas Jr
#! Changes By: Roberto Artigas Jr
#! 1999.01.31: Modifications based on user submited template
#ATSTART
#ENDAT
#!--------------------------------------------------------------------
#ATEND
#ENDAT
#!--------------------------------------------------------------------
#TAB ('Print Procedure Names')
#PROMPT('View "'& %Application & '.pls' &'" after
generation',CHECK),%Viewit,DEFAULT(1),AT(10)
#PROMPT('Print "'& %Application & '.pls' &'" after
generation',CHECK),%PrintQET,DEFAULT(0),AT(10)
#ENABLE(%PRINTQET=1)
#ENABLE(%VIEWIT <> 1)
#PROMPT('Delete "'& %Application & '.pls' &'" after
printing',Check),%KillFile,AT(10)
#ENDENABLE
#ENDENABLE
#ENDTAB
#DISPLAY('Click OK to create "'& %Application & '.pls' &'"')
#CREATE(%Application & '.pls')
#MESSAGE(%Application & '.pls',2)
#DECLARE(%PDate)
#DECLARE(%PTime)
#SET(%PDate,FORMAT(TODAY(),@D02))
#SET(%PTime,FORMAT(CLOCK(),@T06))
List of Procedures (INTERNAL USE) Printed: %PDate - %PTime
=====================================================================
Program: %Application
#SET(%PDate,FORMAT(%ProgramDateChanged,@D02))
#SET(%PTime,FORMAT(%ProgramTimeChanged,@T06))
Date/Time: %PDate - %PTime
#DECLARE(%StatProcList),UNIQUE
#FOR(%Procedure)
#ADD(%StatProcList,%Procedure)
#ENDFOR
Procedure Template Description
Returns Export Prototype
==========================================================
#DECLARE(%Return,STRING)
#DECLARE(%Proto,STRING)
#DECLARE(%Descr,STRING)
#DECLARE(%Temple,STRING)
#DECLARE(%Export,STRING)
#DECLARE(%Position,LONG)
#DECLARE(%LDescr,STRING)
#DECLARE(%LDBeg,LONG)
#DECLARE(%LDEnd,LONG)
#DECLARE(%LDCnt,LONG)
#DECLARE(%LDaSP,LONG)
#DECLARE(%LDaCR,LONG)
#DECLARE(%LDaLF,LONG)
#FOR(%StatProcList)
#FIX(%Procedure,%StatProcList)
#IF(CLIP(%ProcedureDescription)='')
#SET(%Descr,'[No Description]')
#ELSE
#SET(%Descr,%ProcedureDescription)
#ENDIF
#IF(CLIP(%ProcedureReturnType)='')
#SET(%Return,'[No Return]')
#ELSE
#SET(%Position,INSTRING(',NAME',%ProcedureReturnType,1,1))
#IF(%Position)
#SET(%Return,SUB(%ProcedureReturnType,1,%Position-1))
#ELSE
#SET(%Return,%ProcedureReturnType)
#ENDIF
#ENDIF
#IF(CLIP(%Prototype)='')
#SET(%Proto,'[No Prototype]')
#ELSE
#SET(%Position,INSTRING('),',%Prototype,1,1))
#IF(%Position)
#SET(%Proto,SUB(%Prototype,1,%Position))
#ELSE
#SET(%Proto,%Prototype)
#ENDIF
#ENDIF
#IF(%ProcedureExported)
#SET(%Export,'Export')
#ELSE
#SET(%Export,'')
#ENDIF
#SET(%Temple,%ProcedureTemplate)
#MESSAGE('Procedure: ' & %Procedure, 2)
%[25]Procedure %[10]Temple %[40]Descr
%[25]Return %[10]Export %[40]Proto
#INSERT(%PrintLDescr)
#ENDFOR
==========================================================
==========================================================
#CLOSE(%Application & '.pls')
#IF(%PRINTQET=1)
#PRINT(%Application & '.pls', %Application & '.pls - Procedures')
#ENDIF
#IF(%Viewit=1)
#RUN('Write ' & %Application & '.pls')
#ENDIF
#IF(%KillFile=1)
#REMOVE(%Application & '.pls')
#ENDIF
#!
#GROUP(%PrintLDescr)
#IF (%ProcedureLongDescription)
%[15]Null ---- Long Description -----
#IF(LEN(CLIP(%ProcedureLongDescription)) < 60)
%ProcedureLongDescription
#ELSE
#SET(%LDBeg,1)
#SET(%LDEnd,60)
#SET(%LDCnt,0)
#SET(%LDaSP,0)
#SET(%LDaCR,0)
#SET(%LDaLF,0)
#LOOP UNTIL(%LDBeg>LEN(CLIP(%ProcedureLongDescription)))
#SET(%LDescr,SUB(%ProcedureLongDescription,%LDBeg,%LDEnd))
#SET(%LDaCR,INSTRING('<13>',%LDescr,1,1))
#IF (%LDaCR)
#IF(%LDaCR < %LDEnd)
#SET(%LDEnd,%LDaCR)
#ENDIF
#ENDIF
#SET(%LDaLF,INSTRING('<10>',%LDescr,1,1))
#IF (%LDaLF)
#IF(%LDaLF < %LDEnd)
#SET(%LDEnd,%LDaLF)
#ENDIF
#ENDIF
#LOOP FOR(%LDCnt,1,60)
#IF(SUB(%LDescr,%LDCnt,1)=' ')
#SET(%LDaSp,%LDCnt)
#ENDIF
#ENDLOOP
#IF(%LDaSP < %LDEnd)
#IF (%LDaCR)
#ELSIF(%LDaLF)
#ELSE
#SET(%LDEnd,%LDaSP)
#ENDIF
#ENDIF
#SET(%LDescr,SUB(%ProcedureLongDescription,%LDBeg,%LDEnd))
%LDescr
#SET(%LDBeg,%LDBeg+%LDEnd)
#IF(%LDaCR)
#SET(%LDBeg,%LDBeg+1)
#END
#! #IF(%LDaLF)
#! #SET(%LDBeg,%LDBeg+1)
#! #END
#SET(%LDEnd,60)
#ENDLOOP
#ENDIF
#ENDIF
#!
#!--------------------------------------------------------------------
#!--------------------------------------------------------------------
#!--------------------------------------------------------------------
#UTILITY(PrintProcTree,'Print Procedure Tree')
#!--------------------------------------------------------------------
#! Note: Does NOT handle Procedure Recursion
#! Created By: ?
#!
#ATSTART
#ENDAT
#!--------------------------------------------------------------------
#ATEND
#ENDAT
#!--------------------------------------------------------------------
#TAB ('Print Procedure Tree')
#PROMPT('Print AppProc.Txt after it is
generated',CHECK),%PrintQET,DEFAULT(1),AT(10)
#PROMPT('View AppProc.Txt after generation',CHECK),%Viewit,DEFAULT(1),AT(10)
#ENABLE(%PRINTQET=1)
#ENABLE(%VIEWIT <> 1)
#PROMPT('Delete AppProc.Txt After Printing',Check),%KillFile,AT(10)
#ENDENABLE
#ENDENABLE
#ENDTAB
#DISPLAY('Click OK to create AppProc.Txt')
#CREATE('AppProc.Txt')
#MESSAGE('Creating AppProc.Txt',2)
Print Procedure Tree
======================================
(PROGRAMMER INTERNAL USE ONLY)
======================================
======================================
Program: %Application
Dictionary: %DictionaryFile
#INSERT(%DisplayTree,%FirstProcedure,'',' ')
Global Variables
======================================
#FOR(%GlobalData)
%[25]GlobalData %GlobalDataStatement
#ENDFOR
======================================
======================================
#CLOSE('AppProc.Txt')
#IF(%PRINTQET=1)
#PRINT('AppProc.Txt','Procedure Names')
#ENDIF
#IF(%Viewit=1)
#RUN('Write AppProc.Txt')
#ENDIF
#IF(%KillFile=1)
#REMOVE('AppProc.Txt')
#ENDIF
#!
#GROUP(%DisplayTree,%ThisProc,%Level,%NextIndent)
#FIX(%Procedure,%ThisProc)
%Level+-%ThisProc (%ProcedureTemplate) %ProcedureDescription
#FOR(%ProcedureCalled)
#IF(INSTANCE(%ProcedureCalled)=ITEMS(%ProcedureCalled))
#INSERT(%DisplayTree,%ProcedureCalled,%Level&%NextIndent,' ')
#ELSE
#INSERT(%DisplayTree,%ProcedureCalled,%Level&%NextIndent,'|')
#ENDIF
#ENDFOR
#!
Today is November 21, 2024, 7:03 am This article has been viewed 35260 times.
|
|