The $INCLUDE & SET.COMMON are just standard in the programs so that is why
they are there.

As for using only cataloged programs, our programs are stored by module and
within that module there can be 3 different BP files.

Eg: AR Module:
File 1: SS.ARBP
File 2: ARUFO
File 3: ARPROGS

So I am not sure where the program sits. With a cataloged program I can file
this from the VOC that is all.
If everything was in say BP, it would have been much easier.

Regards
Bjorn

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Bob Woodward
Sent: 23 February 2005 07:01
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Subroutine utility

Thanks, Bjorn.

There doesn't seem to be a need for the System Builder $INCLUDE or the call
to SET.COMMON as long as the AM entries are changed to @AM.  I'm curious,
though, as to why you would write it to only run on cataloged programs.
Like you said, it can be modified to suit our needs but I was just
wondering.

BobW


> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:owner-u2- 
> [EMAIL PROTECTED] On Behalf Of Bjorn Behr
> Sent: Wednesday, February 23, 2005 12:22 AM
> To: u2-users@listserver.u2ug.org
> Subject: RE: [U2] Subroutine utility
> 
> Here is one I wrote a whle back, when I needed it.
> 
> It currently looks for any call statements and explodes them and
displays
> it
> in a tree structure..
> Of course, to can be modified to suit your needs.
> 
> Regards
> Bjorn
> 
> Program Start:
> 
> PROGRAM GET.CALL
> * -------------------------------------------------------------------
*
> * AUTHOR : Bjorn Behr (BJB)
*
> * DATE   : 14/05/03
*
> * DESC   : Program to display all Call Routines in the Requested
*
> *        : Program
*
> * -------------------------------------------------------------------
*
> * No   Date     Who  Description
*
> * --   ----     ---  -----------
*
> * H00  14/05/03 BJB  Original Code
*
> * ===================================================================
*
>       PROMPT ""
> $INCLUDE SBINCLUDE COMMON
>       CALL SET.COMMON
>       GOSUB Initialization
>       GOSUB GetCalls
>       GOSUB DisplayCalls
> ExitOnError:
>       RETURN
> * ===================================================================
*
> * SUBROUTINES - Start
*
> * -------------------------------------------------------------------
*
> Initialization:
>       DIM RecordArray(250)
>       DIM OrigArray(250)
>       DIM RowNumber(250)
> * Open Files
>       OPEN "MD" TO MD ELSE STOP 201,"MD"
>       OPEN "NOTES" TO SCalls ELSE STOP 201,"NOTES"
> *  Variables
> ** Get Depth number
>       DepthNo = 250
>       LOOP
>          CRT @(-1)
>          CRT @(10,12):"How far do you want to explode 'Calls' [1-250]
: ":
>          INPUT DepthNo
>          IF (DepthNo = "") THEN DepthNo = 250
>       UNTIL (DepthNo > 0) AND (DepthNo < 251)
>       REPEAT
> ** Ask if you want to see DISP's or not
>       DispAns = ""
>       LOOP
>          CRT @(10,13):"Do you want to see DISP Calls [Y/N] : ":
>          INPUT DispAns, 1
>          DispAns = UPCASE(DispAns)
>       UNTIL (DispAns = "Y") OR (DispAns = "N")
>       REPEAT
> ** Ask if you want to see INPX or not
>       InpxAns = ""
>       LOOP
>          CRT @(10,14):"Do you want to see INPX Calls [Y/N] : ":
>          INPUT InpxAns, 1
>          InpxAns = UPCASE(InpxAns)
>       UNTIL (InpxAns = "Y") OR (InpxAns = "N")
>       REPEAT
> ** Ask if you want to see Comments or not
>       CommentAns = ""
>       LOOP
>          CRT @(10,15):"Do you want to see Comments   [Y/N] : ":
>          INPUT CommentAns, 1
>          CommentAns = UPCASE(CommentAns)
>       UNTIL (CommentAns = "Y") OR (CommentAns = "N") DO
>       REPEAT
> *
>       ProgramArray = ""
>       CallArray = ""
>       Blink = " | "
>       FileArray = ""
>       ArrayCounter = 1
>       RowCounter = ""
>       ProgramName = OCONV(@SENTENCE,"G1 1")
>       Extras = OCONV(@SENTENCE,"G2 1")
>       CallArray<-1> = "Call Statement Listing for
> ":@(-13):ProgramName:@(-14)
>       ProgramArray<1,ArrayCounter> = ProgramName
>       SearchString = "CALL"
>       CRT @(-1)
>       CRT "Selecting Records!":
>       StringLength = LEN(SearchString) -1
>       LineString = ""
>       LineLength = ""
>       RETURN
> * -------------------------------------------------------------------
*
> * Get Calls
*
> * =========
*
> * 1. Read the Program from the program file
*
> * 2. Loop through Program looking for CALL
*
> * 3. Place Calls into an array
*
> * 4. Look for which file the program belongs in
*
> * -------------------------------------------------------------------
*
> GetCalls:
> * Look for File
>       ProgramName = ProgramArray<1,ArrayCounter>
>       READ MDRec FROM MD,ProgramName THEN
>          MDLine2 = MDRec<2>
>          Delims = DCOUNT(MDLine2,"\")
>          IF (Delims > 1) THEN
>             ObjTable = FIELD(MDLine2,"/",2)
>          END ELSE
>             ObjTable = FIELD(MDLine2,"/",3)
>          END
>          SrcTable = ObjTable[1,LEN(ObjTable)-2]
>          SrcTable = TRIM(SrcTable)
>          OPEN SrcTable TO File ELSE
>             CallArray<-1> = "!! NB !! - File ":SrcTable:" not found"
>             ArrayCounter += -1
>             RETURN
>          END
>       END
>       FileArray<1,ArrayCounter> = SrcTable
> * 1. Read File
>       READ Rec FROM File,ProgramName ELSE
>          CallArray<-1> = "!! NB !! :- ":ProgramName:" not a valid
program
> in
> ":FileArray<1,ArrayCounter>
>       END
>       CRT @(0,2):@(-4):"Record Depth : ":ArrayCounter
>       IF (ArrayCounter = 250) THEN
>          Write CallArray ON MD,"BJORN.TEST"
>       END
>       RecordArray(ArrayCounter) = Rec
> * 2. Loop through program looking for call
>       RowCounter<ArrayCounter> = DCOUNT(RecordArray(ArrayCounter),AM)
>       FOR RowNumber(ArrayCounter) = 1 TO RowCounter<ArrayCounter>
>          LineString =
RecordArray(ArrayCounter)<RowNumber(ArrayCounter)>
>          LineLength = LEN(LineString)
>          CallFound = 0
>          FOR CharCounter = 1 TO (LineLength - StringLength) UNTIL
> (CallFound)
>             Pos1 = CharCounter
>             Pos2 = CharCounter + StringLength
>             CheckString = TRIM(LineString[Pos1,Pos2])
>             IF CheckString = SearchString THEN
> * 3. Display Calls
> * ---->>> Original Code <<<----
> *      SpaceCount = (ArrayCounter - 1) * 3
> *      CallArray<-1> =
SPACE(SpaceCount):RowNumber(ArrayCounter)"R%4":":
> ":TRIM(LineString[1,LineLength])
> * Extract File Name And Check For DISP / INPX
>                CheckProgram = TRIM(LineString)
>                IF (TRIM(LineString[1,1]) # "*") THEN
>                   CheckProgram = OCONV(CheckProgram,"G1 1")
>                END ELSE
>                   CheckProgram = OCONV(CheckProgram,"G2 1")
>                END
>                CheckProgram = OCONV(CheckProgram,"G(1")
>                CheckProgram = OCONV(CheckProgram,"G;1")
>                SaveLine = "Y"
>                IF (CheckProgram = "DISP") AND (DispAns = "N") THEN
>                   SaveLine = "N"
>                END
>                IF (SaveLine = "Y") THEN
>                   IF (CheckProgram = "INPX") ANd (InpxAns = "N") THEN
>                      SaveLine = "N"
>                   END
>                END
>                IF (SaveLine = "Y") THEN
>                   IF (LineString[1,1] = "*") AND (CommentAns = "N")
THEN
>                      SaveLine = "N"
>                   END
>                END
>                IF (SaveLine = "Y") THEN
> * ====>>> Modified Code <<<====     An attempt at lining up subrs
>                   SpaceCount = (ArrayCounter - 1)
>                   CallLine = STR(Blink, SpaceCount)
>                   CallLine := RowNumber(ArrayCounter)"R%4":": "
>                   CallLine := TRIM(LineString[1,LineLength])
>                   CallArray<-1> = CallLine
> * ===<<< End of Modification >>>=== *
>                   CallFound = 1
> * Check for comments
>                   IF (LineString[1,1] # "*") THEN
>                      NewProgram = TRIM(LineString)
>                      NewProgram = OCONV(NewProgram,"G1 1")
>                      NewProgram = OCONV(NewProgram,"G(1")
>                      NewProgram = OCONV(NewProgram,"G;1")
>                      ArrayCounter += 1
>                      ProgramArray<1,ArrayCounter> = NewProgram
>                      OrigProgram = ProgramArray<1,ArrayCounter-1>
>                      IF (NewProgram # OrigProgram) AND (ArrayCounter
<=
> DepthNo) THEN
>                         GOSUB GetCalls
>                      END ELSE
>                         ArrayCounter += -1
>                      END
>                   END
>                END
>             END
>          NEXT CharCounter
> NextLoop:
>       Next RowNumber(ArrayCounter)
>       ArrayCounter += -1
>       RETURN
> * -------------------------------------------------------------------
*
> * DisplayCalls
*
> * ============
*
> * 1. Set Counters to 0
*
> * 2. Display Calls with looping functionality
*
> * -------------------------------------------------------------------
*
> DisplayCalls:
> * 1. Set Counters
>       RowCounter1 = 1
>       RowCounter2 = 0
>       TryNumber = 0
>       InputAns = ""
>       MaxCalls = DCOUNT(CallArray,AM)
>       LOOP
>          IF NOT(TryNumber) THEN
>             TryNumber = 1
>             RowCounter1 = 1
>          END ELSE
>             CRT @(0,23):"[F]orwards, [B]ack, [T]op, [E]nd, [P]rint,
[Q]uit
> :
> ":
>             IF (Extras # "") THEN
>                DATA Extras
>                Extras = ""
>             END
>             INPUT InputAns, 1
>          END
>          InputAns = UPCASE(InputAns)
>       UNTIL (InputAns = "Q") DO
>          BEGIN CASE
>             CASE InputAns = "F"
>                RowCounter1 += 20
>                IF (RowCounter1 > MaxCalls) THEN
>                   RowCounter1 = MaxCalls
>                END
>             CASE InputAns = "B"
>                RowCounter1 += -20
>                IF (RowCounter1 < 1) THEN
>                   RowCounter1 = 1
>                END
>             CASE InputAns = "T"
>                RowCounter1 = 1
>             CASE InputAns = "E"
>                RowCounter1 = MaxCalls
>             CASE InputAns = "P"
>                PRINTER ON
>                PRINT "Call Listing for ":ProgramArray<1,1>:" - Printed
by
> ":SB.USERCODE
>                FOR J_MaxCalls = 2 TO MaxCalls
>                   PRINT CallArray<J_MaxCalls>
>                NEXT J_MaxCalls
>                PRINTER CLOSE
>                PRINTER OFF
>             CASE InputAns = "S"
>                WRITE CallArray ON SCalls,ProgramArray<1,1>
>             CASE 1
>          END CASE
>          CRT @(-1)
> * Setup RowCounter2
>          RowCounter2 = RowCounter1 + 20
>          IF (RowCounter2 > MaxCalls) THEN
>             RowCounter2 = MaxCalls
>             RowCounter1 = RowCounter2 - 20
>             IF (RowCounter1 < 1) THEN RowCounter1 = 1
>          END
> * 2. Display Calls
>          FOR J_RowCounter = RowCounter1 TO RowCounter2
>             CRT CallArray<J_RowCounter>
>          NEXT J_RowCounter
>       REPEAT
>       RETURN
> * ------------------------- END OF PROGRAM ---------------------------
*
> END
> 
> Program End:
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Horn, John
> Sent: 23 February 2005 12:41
> To: U2 Mailing List (E-mail)
> Cc: Roberts, Robert
> Subject: [U2] Subroutine utility
> 
> Have any of you every seen or heard of a utility that would take a
Pick
> program and identify what programs were called by that program and 
> continue to transverse down those programs until all programs were 
> identified?
> 
>   - John M. Horn
>     IT Technical Expert
>     HealthLink, Inc.
>     314-989-6050
>     [EMAIL PROTECTED]
> -------
> u2-users mailing list
> u2-users@listserver.u2ug.org
> To unsubscribe please visit http://listserver.u2ug.org/
> -------
> u2-users mailing list
> u2-users@listserver.u2ug.org
> To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to