- XTFCE1 ;SF-ISC.SEA/JLI - DISPLAY FLOWCHARTS BY ENTRY POINT ;12/7/95 14:49
- ;;7.3;TOOLKIT;**8**;Apr 25, 1995
- W @IOF
- S XTZX1="",XTSLINE=0,XTREF=0,XT="",XTZX1="" F Z=0:0 S Z=$O(^TMP($J,XTLEV,"FC",Z)) D:Z'>0 WAIT Q:+Z'=Z!(XT=U) I Z>0 S XTZX=$O(^TMP($J,XTLEV,"FC",Z,"")) D LIST Q:XT=U
- Q
- ;
- LIST ;
- S N=60,X=^TMP($J,XTLEV,"FC",Z,XTZX) F XTZA=0:0 S Y=$E(X,1,4) Q:Y'=" "&(Y'="....") S X=$E(X,5,$L(X)),N=N-10 S:N<1 N=1
- I $E(X,1)="{"!($E(X,1)="[") S XTL=$E(X,3,$L(X)-2) I '$D(^TMP($J,XTLEV,"C",$P(XTL,"("))) S XTREF=XTREF+1,^($P(XTL,"("),XTREF)="",^TMP($J,XTLEV,"X",XTREF)=$P(XTL,"(")
- S:'$D(LN) LN=N D:LN<N CLOSE K NX F NX=N:10:60 S:'$D(NX(NX+10)) NX(NX)="" S:NX<60 NX(NX+20)=""
- I XTZX1'="PROC "!(XTZX'="PROC ") W ! I LN'=N!(XTZX1'="GOTO "&(XTZX1'="QUIT ")) F NX=0:0 S NX=$O(NX(NX)) Q:NX="" W ?NX,"|"
- S LN=N,N=$S(XTZX="LABEL":N-$L(X),1:N-($L(X)\2))
- D:$Y+5+(XTREF+1\2)>IOSL WAIT Q:XT=U W !,?N,X S XTZX1=XTZX
- F NX=0:0 S NX=$O(NX(NX)) Q:NX="" I $X<(NX-1) W ?NX,"|"
- Q
- ;
- WAIT ; Skip to top of next page
- F K=1:1:4 Q:($Y+4+(XTREF+1\2))'<IOSL W !
- I XTREF>0 W !,"The following references may be selected for expansion..."
- I XTREF>0 F JK=1:1:(XTREF+1\2) W !?5,$J(JK,2),". ",^TMP($J,XTLEV,"X",JK) S JL=JK+(XTREF+1\2) I JL'>XTREF W ?30,$J(JL,2),". ",^(JL)
- I XTREF>0 W !?16,"Select LINE^ROUTINE to expand (1 to ",XTREF," ) or"
- I 1 S XT="" R:IOST["C-" !?16,"Press RETURN to continue, '^' to halt: ",XT:DTIME S:'$T XT=U
- I XT>0&(XT'>XTREF) S XTSLINE(XTLEV)=XTSLINE,XTZX1(XTLEV)=XTZX1,XTLINE=^TMP($J,XTLEV,"X",+XT),XTROU=$P(XTLINE,U,2),XTLINE=$P(XTLINE,U,1),XTLEV=XTLEV+1
- I XT>0&(XT'>XTREF) D NODE^XTFCE S XTLINE=XTLINE(XTLEV),XTROU=XTROU(XTLEV),Z=XTSLINE(XTLEV),XTZX1=XTZX1(XTLEV)
- S XTZX1=XTZX1,XTSLINE=Z W @IOF
- S XTREF=0 K ^TMP($J,XTLEV,"C"),^("X")
- Q
- ;
- CLOSE ; Close previous nesting level
- S IX1=$S(LN>1:LN,1:0),IX2=IX1+19 S:XTZX1="GOTO "!(XTZX1="QUIT ") IX1=IX1+10 W ! W:IX1'>LN ?IX1,"|" W:IX1>LN ?IX1 F IX3=0:0 Q:($X'<(IX2+1)) W "_"
- W "|" F NX=-1:0 S NX=$O(NX(NX)) Q:NX="" I $X<(NX-1) W ?NX,"|"
- S LN=$S(LN>1:LN,1:0)+10 I LN<N S XTZX1=" " G CLOSE
- S LN=LN-1
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXTFCE1 2110 printed Mar 13, 2025@21:45:59 Page 2
- XTFCE1 ;SF-ISC.SEA/JLI - DISPLAY FLOWCHARTS BY ENTRY POINT ;12/7/95 14:49
- +1 ;;7.3;TOOLKIT;**8**;Apr 25, 1995
- +2 WRITE @IOF
- +3 SET XTZX1=""
- SET XTSLINE=0
- SET XTREF=0
- SET XT=""
- SET XTZX1=""
- FOR Z=0:0
- SET Z=$ORDER(^TMP($JOB,XTLEV,"FC",Z))
- if Z'>0
- DO WAIT
- if +Z'=Z!(XT=U)
- QUIT
- IF Z>0
- SET XTZX=$ORDER(^TMP($JOB,XTLEV,"FC",Z,""))
- DO LIST
- if XT=U
- QUIT
- +4 QUIT
- +5 ;
- LIST ;
- +1 SET N=60
- SET X=^TMP($JOB,XTLEV,"FC",Z,XTZX)
- FOR XTZA=0:0
- SET Y=$EXTRACT(X,1,4)
- if Y'=" "&(Y'="....")
- QUIT
- SET X=$EXTRACT(X,5,$LENGTH(X))
- SET N=N-10
- if N<1
- SET N=1
- +2 IF $EXTRACT(X,1)="{"!($EXTRACT(X,1)="[")
- SET XTL=$EXTRACT(X,3,$LENGTH(X)-2)
- IF '$DATA(^TMP($JOB,XTLEV,"C",$PIECE(XTL,"(")))
- SET XTREF=XTREF+1
- SET ^($PIECE(XTL,"("),XTREF)=""
- SET ^TMP($JOB,XTLEV,"X",XTREF)=$PIECE(XTL,"(")
- +3 if '$DATA(LN)
- SET LN=N
- if LN<N
- DO CLOSE
- KILL NX
- FOR NX=N:10:60
- if '$DATA(NX(NX+10))
- SET NX(NX)=""
- if NX<60
- SET NX(NX+20)=""
- +4 IF XTZX1'="PROC "!(XTZX'="PROC ")
- WRITE !
- IF LN'=N!(XTZX1'="GOTO "&(XTZX1'="QUIT "))
- FOR NX=0:0
- SET NX=$ORDER(NX(NX))
- if NX=""
- QUIT
- WRITE ?NX,"|"
- +5 SET LN=N
- SET N=$SELECT(XTZX="LABEL":N-$LENGTH(X),1:N-($LENGTH(X)\2))
- +6 if $Y+5+(XTREF+1\2)>IOSL
- DO WAIT
- if XT=U
- QUIT
- WRITE !,?N,X
- SET XTZX1=XTZX
- +7 FOR NX=0:0
- SET NX=$ORDER(NX(NX))
- if NX=""
- QUIT
- IF $X<(NX-1)
- WRITE ?NX,"|"
- +8 QUIT
- +9 ;
- WAIT ; Skip to top of next page
- +1 FOR K=1:1:4
- if ($Y+4+(XTREF+1\2))'<IOSL
- QUIT
- WRITE !
- +2 IF XTREF>0
- WRITE !,"The following references may be selected for expansion..."
- +3 IF XTREF>0
- FOR JK=1:1:(XTREF+1\2)
- WRITE !?5,$JUSTIFY(JK,2),". ",^TMP($JOB,XTLEV,"X",JK)
- SET JL=JK+(XTREF+1\2)
- IF JL'>XTREF
- WRITE ?30,$JUSTIFY(JL,2),". ",^(JL)
- +4 IF XTREF>0
- WRITE !?16,"Select LINE^ROUTINE to expand (1 to ",XTREF," ) or"
- +5 IF 1
- SET XT=""
- if IOST["C-"
- READ !?16,"Press RETURN to continue, '^' to halt: ",XT:DTIME
- if '$TEST
- SET XT=U
- +6 IF XT>0&(XT'>XTREF)
- SET XTSLINE(XTLEV)=XTSLINE
- SET XTZX1(XTLEV)=XTZX1
- SET XTLINE=^TMP($JOB,XTLEV,"X",+XT)
- SET XTROU=$PIECE(XTLINE,U,2)
- SET XTLINE=$PIECE(XTLINE,U,1)
- SET XTLEV=XTLEV+1
- +7 IF XT>0&(XT'>XTREF)
- DO NODE^XTFCE
- SET XTLINE=XTLINE(XTLEV)
- SET XTROU=XTROU(XTLEV)
- SET Z=XTSLINE(XTLEV)
- SET XTZX1=XTZX1(XTLEV)
- +8 SET XTZX1=XTZX1
- SET XTSLINE=Z
- WRITE @IOF
- +9 SET XTREF=0
- KILL ^TMP($JOB,XTLEV,"C"),^("X")
- +10 QUIT
- +11 ;
- CLOSE ; Close previous nesting level
- +1 SET IX1=$SELECT(LN>1:LN,1:0)
- SET IX2=IX1+19
- if XTZX1="GOTO "!(XTZX1="QUIT ")
- SET IX1=IX1+10
- WRITE !
- if IX1'>LN
- WRITE ?IX1,"|"
- if IX1>LN
- WRITE ?IX1
- FOR IX3=0:0
- if ($X'<(IX2+1))
- QUIT
- WRITE "_"
- +2 WRITE "|"
- FOR NX=-1:0
- SET NX=$ORDER(NX(NX))
- if NX=""
- QUIT
- IF $X<(NX-1)
- WRITE ?NX,"|"
- +3 SET LN=$SELECT(LN>1:LN,1:0)+10
- IF LN<N
- SET XTZX1=" "
- GOTO CLOSE
- +4 SET LN=LN-1
- +5 QUIT