KLASHOW ;GLRISC/PDW SLIDE SHOW FOR CLASSMAN ;DEC 18,1990@13:54:58
;;1.0;2.01
S U="^",X="T",%DT="",IOP=$I D ^%DT S DT=Y D ^%ZIS K X,Y,%DT S X=125 X ^%ZOSF("RM")
S DIC="^%ZIS(2,",DIC(0)="AQMZ",DIC("S")="I $P(^(0),U,1)[""C-""",DIC("B")=$S($D(IOST):IOST,1:"C-VT100") D ^DIC I Y'>0 W !,"Sorry, you must have a subtype !",! Q
K DIC S IOP="HOME;"_Y(0,0) D ^%ZIS S FF=IOF S X=125 X ^%ZOSF("RM")
S VN=$P(^%ZIS(2,IOST("0"),5),"^",5),VR=$P(^%ZIS(2,IOST("0"),5),"^",4)
S:VN="" VN="""""" S:VR="" VR=""""""
S KLSLDIC="^KLAS(1200.1,"
; --- lookup presentation ---
S DIC=KLSLDIC,DIC(0)="AEQ",DIC("A")=" Which presentation do you want: " D ^DIC G:Y<0 STOP
S DIE=DIC,DA=+Y,DR="11" D ^DIE
S NIEN=DA,SEQ=@(KLSLDIC_NIEN_",""S"")"),KLSLDIC=KLSLDIC_NIEN_",1,"
K X,Y,DIC
; --- set up sequence ---
F I=0:1 S SEQ(I)=$P(SEQ,":",I) Q:I>0&(SEQ(I)="") S LFR=I ; SET UP SEQUENCE
; --- get first frame ---
S TV=0,X=SEQ(1),FR=0,DIC=KLSLDIC,KLSLNF=SEQ(1)
D SEL ;**NEW CODE
Q:'$D(FR) ;**NEW CODE
A S DIC(0)="ZN" D ^DIC G:Y<0 ERROR
; --- get frame parameters ---
S KLSLCF=$P(Y(0),U,1),KLSLTY=$P(Y(0),U,2),KLSLNF=SEQ(FR+1),KLSLPF=SEQ(FR-1),KLSLIN=+$P(Y(0),U,5)
S:KLSLTY="" KLSLTY="N"
S BUILD=$S(KLSLTY["L":1,1:0)
; --- set frame type ---
S KLSLDIC=DIC_+Y_",""W"","
; --- display frame ---
B U IO(0) W @FF X ^%ZOSF("EOFF") D FIX1 S I1=0 F I=0:0 S I1=$N(@(KLSLDIC_I1_")")) Q:(I1=-1)!(I1'?.N) S KLSLLI=@(KLSLDIC_I1_",0)") D LINE D:BUILD B1
G NEXT
B1 ;R X:600 S X=$A(X) Q:X=94 D:X=63 HELP2 G:X=63 B1 S:(X=88)!(X=120) BUILD=0 Q
R X:DTIME S X=$E(X) D:X="?" HELP2 G:X="?" B1 S:X="" X="F" S:"^Qq"[X BUILD=0 Q
NEXT ; --- find out what is next ---
S DX=69 W *13 X "F IN=1:1:DX W "" """
LINE1 R A:DTIME S A=$E(A) D:A="?" HELP G LINE1:A="?" G:"Ff +"[A FWD G:"Bb-"[A BACK G:"^EeQq"[A END G:"Jj"[A JMP S:"Rr"[A X=SEQ(FR) G:$T A W *7 G NEXT
; --- subroutines ---
LINE ; line subroutine
I KLSLTY["N" D LP W ! Q:I1#23 W ?40 R X:DTIME S X=$E(X) S:X="" X=" " D:"?"[X HELP1 G:"?"[X LINE S I1=$S("-BbRr"[X:I1-46,"Xx^"[X:I1+9999,1:I1) S:I1<0 I1=0 W:"-"[X !,"**********MOVING BACKWARD**********",! W *13 Q
D LP
W !," ",!
JJJ I '(I1#11) W ?40 R X:DTIME S X=$E(X) S:X="" X="F" D:"?"[X HELP1 G:"?"[X JJJ S I1=$S("-Bb"[X:I1-46,"Qq^"[X:I1+9999,1:I1) S:I1<0 I1=0 W:"-Bb"[X !,"**********MOVING BACKWARD**********",! W *13
Q
LP ; PRINT LINE
F K=1:1:$L(KLSLLI) S X=$E(KLSLLI,K) D FIX W ""
Q
FIX I X="~" S TV=(TV+1)#2 W @$S(TV:"@VR",1:"@VN")
E W X
W:KLSLTY["E" " "
Q
JMP X ^%ZOSF("EON") W !,*13 S DX=66 X "F IN=1:1:DX W "" """ R "to:",X:DTIME S:X="" X=FR+1 G:$E(X)="^" END
I X>0,X<(LFR+1) S FR=X,X=SEQ(X) G A
I X'="?" W *7 G SEL
SEL F I=1:1:LFR W !,?10,I W ?15,$P(@(DIC_SEQ(I)_",0)"),U,1) W:I=FR " *"
G JMP
FWD G:KLSLNF="" END S X=KLSLNF S FR=FR+1 G A
BACK W:KLSLPF="" *7 G:KLSLPF="" NEXT S X=KLSLPF S FR=FR-1 G A
END W @FF S DX=33 X "F IN=1:1:DX W "" """ W "T H E E N D" W !!! X ^%ZOSF("EON")
STOP K VT,VN,VR,KLSLDIC,KLSLCF,KLSLTY,KLSLNF,KLSLPF,KLSLIN,KLSLLI,I,I1,J,A,X,DIE,DA,DR,DIC,IOP,FF,SEQ,NIEN,LFR,TV,FR,BUILD,DX,K,INQ,DA,Y,KLI,KLN,KLP S X=IOM X ^%ZOSF("RM") Q
ERROR W !!,"ERROR" Q
HELP W !!,"OPTIONS FOR THIS COMMAND",!!
W "TO ADVANCE TO NEXT SLIDE: <RET> ",!!
W "TO MOVE BACKWARD ONE SLIDE: <->, <B>, -OR- <b>",!!
W "TO REPEAT CURRENT SLIDE: <R>, -OR- <r>",!!
W "TO JUMP TO ANOTHER SLIDE: <J>, -OR- <j>",!!
W "TO QUIT: <^>, <Q>, -OR- <q>",!!
W ?79 Q
HELP1 W !,"<->, <B> or <b> Backs Up 48 Lines",!,"<Q>, <q> or <^> Goes to end of slide",! Q
;
HELP2 W !," (^), <Q>, or <q> -- WILL STOP LINE-BY-LINE MODE",!! Q
FIX1 ;W "SLIDE NAME: ",$P(Y,U,2),?50,"NUMBER: ",FR,! H 2 W @FF Q ; OLD LINE
;W "SLIDE NAME: ",$P(Y,U,2),?50,"NUMBER: ",FR,! H 2 W ! Q ; NEW LINE
TEST ; TEST VALIDITY OF SEQUENCE
X S KLP=0 F KLC=1:1 S KLP=$F(X,":",KLP) Q:KLP=0
F KLI=1:1:KLC S KLN=$P(X,":",KLI) D TX
K KLP,KLN,KLC
Q
TX I (KLN'?.N)!(KLN<1) S X=""
E S:'$D(@("^KLAS(1200.1,"_DA_",1,"_KLN_")")) X=""
Q
KLASHOW ;GLRISC/PDW SLIDE SHOW FOR CLASSMAN ;DEC 18,1990@13:54:58
+1 ;;1.0;2.01
+2 SET U="^"
SET X="T"
SET %DT=""
SET IOP=$IO
DO ^%DT
SET DT=Y
DO ^%ZIS
KILL X,Y,%DT
SET X=125
XECUTE ^%ZOSF("RM")
+3 SET DIC="^%ZIS(2,"
SET DIC(0)="AQMZ"
SET DIC("S")="I $P(^(0),U,1)[""C-"""
SET DIC("B")=$SELECT($DATA(IOST):IOST,1:"C-VT100")
DO ^DIC
IF Y'>0
WRITE !,"Sorry, you must have a subtype !",!
QUIT
+4 KILL DIC
SET IOP="HOME;"_Y(0,0)
DO ^%ZIS
SET FF=IOF
SET X=125
XECUTE ^%ZOSF("RM")
+5 SET VN=$PIECE(^%ZIS(2,IOST("0"),5),"^",5)
SET VR=$PIECE(^%ZIS(2,IOST("0"),5),"^",4)
+6 IF VN=""
SET VN=""""""
IF VR=""
SET VR=""""""
+7 SET KLSLDIC="^KLAS(1200.1,"
+8 ; --- lookup presentation ---
+9 SET DIC=KLSLDIC
SET DIC(0)="AEQ"
SET DIC("A")=" Which presentation do you want: "
DO ^DIC
IF Y<0
GOTO STOP
+10 SET DIE=DIC
SET DA=+Y
SET DR="11"
DO ^DIE
+11 SET NIEN=DA
SET SEQ=@(KLSLDIC_NIEN_",""S"")")
SET KLSLDIC=KLSLDIC_NIEN_",1,"
+12 KILL X,Y,DIC
+13 ; --- set up sequence ---
+14 ; SET UP SEQUENCE
FOR I=0:1
SET SEQ(I)=$PIECE(SEQ,":",I)
IF I>0&(SEQ(I)="")
QUIT
SET LFR=I
+15 ; --- get first frame ---
+16 SET TV=0
SET X=SEQ(1)
SET FR=0
SET DIC=KLSLDIC
SET KLSLNF=SEQ(1)
+17 ;**NEW CODE
DO SEL
+18 ;**NEW CODE
IF '$DATA(FR)
QUIT
A SET DIC(0)="ZN"
DO ^DIC
IF Y<0
GOTO ERROR
+1 ; --- get frame parameters ---
+2 SET KLSLCF=$PIECE(Y(0),U,1)
SET KLSLTY=$PIECE(Y(0),U,2)
SET KLSLNF=SEQ(FR+1)
SET KLSLPF=SEQ(FR-1)
SET KLSLIN=+$PIECE(Y(0),U,5)
+3 IF KLSLTY=""
SET KLSLTY="N"
+4 SET BUILD=$SELECT(KLSLTY["L":1,1:0)
+5 ; --- set frame type ---
+6 SET KLSLDIC=DIC_+Y_",""W"","
+7 ; --- display frame ---
B USE IO(0)
WRITE @FF
XECUTE ^%ZOSF("EOFF")
DO FIX1
SET I1=0
FOR I=0:0