| 1 | DDGF3 ;SFISC/MKO-Block Viewer Page ;02:49 PM  12 Oct 1994
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;Variables used:
 | 
|---|
| 5 |  ;  DDGFBV      = flag indicating we're on block viewer page
 | 
|---|
| 6 |  ;  DDGFORIG(B) = original $Y^original $X for all blocks that were
 | 
|---|
| 7 |  ;                  selected, since they were potentially moved
 | 
|---|
| 8 |  ;  DDGFEBV     = flag that can be set to exit block viewer page
 | 
|---|
| 9 |  ;                  after a block has been selected
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  N DDGFE
 | 
|---|
| 12 |  S DDGFE=0,DDGFBV=1 K DDGFORIG,DDGFEBV
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  D PAINT,RC(DY,DX)
 | 
|---|
| 15 |  F  S Y=$$READ W:$T(@Y)="" $C(7) D:$T(@Y)]"" @Y D:$D(DDGFMSG) MSG^DDGF() Q:DDGFE!$G(DDGFEBV)
 | 
|---|
| 16 |  D CLEANUP
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | LNU I DY>$P(DDGFLIM,U) D RC(DY-1,DX)
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 | LND I DY<$P(DDGFLIM,U,3) D RC(DY+1,DX)
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 | CHR I DX<$P(DDGFLIM,U,4) D RC(DY,DX+1)
 | 
|---|
| 24 |  Q
 | 
|---|
| 25 | CHL I DX>$P(DDGFLIM,U,2) D RC(DY,DX-1)
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 | ELR N Y,X
 | 
|---|
| 28 |  S Y=DY,X=DX
 | 
|---|
| 29 |  F  D  Q:Y=""!(X]"")
 | 
|---|
| 30 |  . S X=$O(@DDGFREF@("BKRC",DDGFWIDB,Y,X))
 | 
|---|
| 31 |  . S:X="" Y=$O(@DDGFREF@("BKRC",DDGFWIDB,Y))
 | 
|---|
| 32 |  D:X]"" RC(Y,X)
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 | ELL N Y,X
 | 
|---|
| 35 |  S Y=DY,X=DX
 | 
|---|
| 36 |  F  D  Q:Y=""!(X]"")
 | 
|---|
| 37 |  . S X=$O(@DDGFREF@("BKRC",DDGFWIDB,Y,X),-1)
 | 
|---|
| 38 |  . S:X="" Y=$O(@DDGFREF@("BKRC",DDGFWIDB,Y),-1)
 | 
|---|
| 39 |  D:X]"" RC(Y,X)
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 | TBR I DX<$P(DDGFLIM,U,4) D
 | 
|---|
| 42 |  . D RC(DY,$S(DX+5'<$P(DDGFLIM,U,4):$P(DDGFLIM,U,4),1:DX+5))
 | 
|---|
| 43 |  E  I DY<$P(DDGFLIM,U,3) D RC(DY+1,$P(DDGFLIM,U,2))
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 | TBL I DX>$P(DDGFLIM,U,2) D
 | 
|---|
| 46 |  . D RC(DY,$S(DX-5'>$P(DDGFLIM,U,2):$P(DDGFLIM,U,2),1:DX-5))
 | 
|---|
| 47 |  E  I DY>$P(DDGFLIM,U) D RC(DY-1,$P(DDGFLIM,U,4))
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | SCT I DY>$P(DDGFLIM,U) D RC($P(DDGFLIM,U),DX)
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 | SCB I DY<$P(DDGFLIM,U,3) D RC($P(DDGFLIM,U,3),DX)
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | SCR I DX<$P(DDGFLIM,U,4) D RC(DY,$P(DDGFLIM,U,4))
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | SCL I DX>$P(DDGFLIM,U,2) D RC(DY,$P(DDGFLIM,U,2))
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | SELECT ;
 | 
|---|
| 59 |  Q:'$D(@DDGFREF@("BKRC",DDGFWIDB,DY))
 | 
|---|
| 60 |  G SELECT^DDGFBSEL
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 | SAVE ;Save data
 | 
|---|
| 63 |  G SAVE^DDGFSV
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 | BKADD ;Add a new block
 | 
|---|
| 66 |  G ADD^DDGFBK
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 | HBKADD ;Add a header block
 | 
|---|
| 69 |  G ADD^DDGFHBK
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | HELP ;Invoke help screens
 | 
|---|
| 72 |  D ^DDGFH,REFRESH^DDGF,RC(DY,DX)
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 | TO W $C(7)
 | 
|---|
| 76 | QUIT ;
 | 
|---|
| 77 | EXIT ;
 | 
|---|
| 78 | VIEW S DDGFE=1
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 | CLEANUP ;
 | 
|---|
| 81 |  S DDGFDY=DY,DDGFDX=DX
 | 
|---|
| 82 |  D CLOSE^DDGLIBW(DDGFWIDB,1)
 | 
|---|
| 83 |  I $D(DDGFORIG) D
 | 
|---|
| 84 |  . N A
 | 
|---|
| 85 |  . S A=$$AREA^DDGLIBW(DDGFWID)
 | 
|---|
| 86 |  . D DESTROY^DDGLIBW(DDGFWID,1)
 | 
|---|
| 87 |  . D CREATE^DDGLIBW(DDGFWID,A,$P(@DDGFREF@("F",DDGFPG),U,3)]"")
 | 
|---|
| 88 |  . D BLK^DDGFUPDB(.DDGFORIG)
 | 
|---|
| 89 |  E  D OPEN^DDGLIBW(DDGFWID)
 | 
|---|
| 90 |  S DY=IOSL-6,DX=46 X IOXY W $J("",13)
 | 
|---|
| 91 |  S DY=IOSL-1,DX=0 X IOXY W $P(DDGLCLR,DDGLDEL)_$P(DDGLVID,DDGLDEL)_"<PF1>Q=Quit  <PF1>E=Exit  <PF1>S=Save  <PF1>V=Block Viewer  <PF1>H=Help"_$P(DDGLVID,DDGLDEL,10)
 | 
|---|
| 92 |  D RC(DDGFDY,DDGFDX)
 | 
|---|
| 93 |  K DDGFDY,DDGFDX,DDGFBV,DDGFEBV,DDGFORIG
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 | PAINT ;Paint block displayer window
 | 
|---|
| 97 |  N B,C,S,DY,DX
 | 
|---|
| 98 |  D CLOSE^DDGLIBW(DDGFWID,1)
 | 
|---|
| 99 |  S DY=IOSL-6,DX=46 X IOXY W "BLOCK VIEWER"
 | 
|---|
| 100 |  S DY=IOSL-1,DX=0 X IOXY W $P(DDGLCLR,DDGLDEL)_$P(DDGLVID,DDGLDEL)_"<PF1>V=Main Screen  <PF1>H=Help"_$P(DDGLVID,DDGLDEL,10)
 | 
|---|
| 101 |  I $$EXIST^DDGLIBW(DDGFWIDB) D FOCUS^DDGLIBW(DDGFWIDB) Q
 | 
|---|
| 102 |  D CREATE^DDGLIBW(DDGFWIDB,$P(DDGFLIM,U,1,2)_U_($P(DDGFLIM,U,3)-$P(DDGFLIM,U,1)+1)_U_($P(DDGFLIM,U,4)-$P(DDGFLIM,U,2)+1),$P(@DDGFREF@("F",DDGFPG),U,3)]"")
 | 
|---|
| 103 |  S B="" F  S B=$O(@DDGFREF@("F",DDGFPG,B)) Q:B=""  D
 | 
|---|
| 104 |  . S C=@DDGFREF@("F",DDGFPG,B)
 | 
|---|
| 105 |  . S S=$P(C,U,4)
 | 
|---|
| 106 |  . S:$P(C,U,3)'<IOM S=$E(S,1,IOM-$P(C,U,2)-1)
 | 
|---|
| 107 |  . D WRITE^DDGLIBW(DDGFWIDB,S,$P(C,U)-$P(DDGFLIM,U),$P(C,U,2)-$P(DDGFLIM,U,2))
 | 
|---|
| 108 |  Q
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 | RC(DDGFY,DDGFX) ;Update status line, reset DX and DY, move cursor
 | 
|---|
| 111 |  N S
 | 
|---|
| 112 |  I DDGFR D
 | 
|---|
| 113 |  . S DY=IOSL-6,DX=IOM-9,S="R"_(DDGFY+1)_",C"_(DDGFX+1)
 | 
|---|
| 114 |  . X IOXY W S_$J("",7-$L(S))
 | 
|---|
| 115 |  S DY=DDGFY,DX=DDGFX X IOXY
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 | READ() N S,Y
 | 
|---|
| 119 |  F  R *Y:DTIME D C Q:Y'=-1
 | 
|---|
| 120 |  Q Y
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 | C I Y<0 S Y="TO" Q
 | 
|---|
| 123 |  S S=""
 | 
|---|
| 124 | C1 S S=S_$C(Y)
 | 
|---|
| 125 |  I DDGF("IN")'[(U_S) D  I Y=-1 W $C(7) Q
 | 
|---|
| 126 |  . I $C(Y)'?1L S Y=-1 Q
 | 
|---|
| 127 |  . S S=$E(S,1,$L(S)-1)_$C(Y-32) S:DDGF("IN")'[(U_S_U) Y=-1
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 |  I DDGF("IN")[(U_S_U),S'=$C(27) S Y=$P(DDGF("OUT"),U,$L($P(DDGF("IN"),U_S_U),U)) Q
 | 
|---|
| 130 |  R *Y:5 G:Y'=-1 C1 W $C(7)
 | 
|---|
| 131 |  Q
 | 
|---|