Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DDW2

DDW2.m

Go to the documentation of this file.
  1. DDW2 ;SFISC/MKO-SETTINGS, MODES ;11:32 AM 25 Aug 2000 [ 04/02/2003 8:25 AM ]
  1. ;;22.0;VA FileMan;**1001**;APR 1, 2003
  1. ;;22.0;VA FileMan;**18**;Mar 30, 1999
  1. ;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ;
  1. TSET N DDWX
  1. S DDWX=$E(DDWRUL,DDWC)
  1. S DDWX=$S(DDWX="T":"=",DDWX="=":"T",1:DDWX)
  1. S $E(DDWRUL,DDWC)=DDWX
  1. I DDWC'=DDWLMAR,DDWC'=DDWRMAR D
  1. . D CUP(DDWMR+1,DDWC-DDWOFS) W DDWX
  1. . D POS(DDWRW,DDWC)
  1. Q
  1. ;
  1. TSALL ;Prompt for tab stops
  1. N DDWHLP,DDWANS,DDWCOD
  1. S DDWHLP(1)=" Specify in which column(s) you want to set tab stops. To set individual"
  1. S DDWHLP(2)=" tab stops, type a series of numbers separated by commas, for example:"
  1. S DDWHLP(3)=" 4,7,15,20. To set tab stops at repeated intervals after the last stop,"
  1. S DDWHLP(4)=" or column 1, type the interval as +n, for example: 10,20,+5."
  1. D ASK^DDWG(5,"Columns in which to set tab stops: ",30,$G(DDWTAB),"D TSALLVAL^DDW2",.DDWHLP,.DDWANS,.DDWCOD)
  1. ;
  1. Q:DDWCOD="TO"!(DDWANS=U)!(DDWANS=DDWTAB)
  1. S DDWTAB=DDWANS
  1. S DDWRUL=$$RULER(DDWTAB)
  1. D RULER^DDW3,POS(DDWRW,DDWC)
  1. Q
  1. ;
  1. TSALLVAL ;Validate tab stops
  1. K DDWERR
  1. S:DDWX="@" DDWX=""
  1. I DDWX?1."^"!($P($G(DDWCOD),U)="TO") S DDWX=U Q
  1. I $TR(DDWX,"+,")?.E1.APC.E D
  1. . S DDWERR=" Response can contain only commas (,), plus signs (+), and numbers."
  1. Q
  1. ;
  1. RULER(TAB) ;Return the ruler with tab stops
  1. N C,INT,LAST,POS,RUL
  1. S RUL=$TR($J("",255)," ","=")
  1. ;
  1. ;Process each comma piece in tab
  1. S LAST=1
  1. F C=1:1:$L(TAB,",") D
  1. . S POS=$P(TAB,",",C) Q:POS'?.1"+"1.3N
  1. . I $E(POS)="+" D
  1. .. S INT=+$E(POS,2,999)
  1. .. F POS=LAST+INT:INT:255 S $E(RUL,POS)="T"
  1. . E S:POS<256 $E(RUL,POS)="T",LAST=POS
  1. Q RUL
  1. ;
  1. LSET I 'DDWRAP D ERR("Margins cannot be set when wrap is off") Q
  1. I DDWC>231 D ERR("Left margin cannot be set beyond column 231") Q
  1. I DDWC'<DDWRMAR D ERR("Left margin must be left of right margin") Q
  1. I DDWLMAR-DDWOFS'<1,DDWLMAR-DDWOFS'>IOM D
  1. . D CUP(DDWMR+1,DDWLMAR-DDWOFS) W $E(DDWRUL,DDWLMAR)
  1. D CUP(DDWMR+1,DDWC-DDWOFS) W "<" D POS(DDWRW,DDWC)
  1. S DDWLMAR=DDWC
  1. Q
  1. ;
  1. RSET I 'DDWRAP D ERR("Margins cannot be set when wrap is off") Q
  1. I DDWC>245 D ERR("Right margin cannot be set beyond column 245") Q
  1. I DDWC'>DDWLMAR D ERR("Right margin must be right of left margin") Q
  1. I DDWRMAR-DDWOFS'<1,DDWRMAR-DDWOFS'>IOM D
  1. . D CUP(DDWMR+1,DDWRMAR-DDWOFS) W $E(DDWRUL,DDWRMAR)
  1. D CUP(DDWMR+1,DDWC-DDWOFS) W ">" D POS(DDWRW,DDWC)
  1. S DDWRMAR=DDWC
  1. Q
  1. ;
  1. WRAPM S DDWRAP=DDWRAP+1#2
  1. D CUP(0,3) W $S(DDWRAP:"[ WRAP ]",1:"========")
  1. I 'DDWRAP D
  1. . S DDWLMAR(1)=DDWLMAR,DDWLMAR=1
  1. . S DDWRMAR(1)=DDWRMAR,DDWRMAR=245
  1. E D
  1. . S DDWLMAR=DDWLMAR(1) K DDWLMAR(1)
  1. . S DDWRMAR=DDWRMAR(1) K DDWRMAR(1)
  1. D RULER^DDW3,POS(DDWRW,DDWC)
  1. Q
  1. ;
  1. REPLM S DDWREP=DDWREP+1#2
  1. D CUP(0,13) W $S(DDWREP:"[ REPLACE ]",1:"[ INSERT ]=")
  1. D POS(DDWRW,DDWC)
  1. Q
  1. ;
  1. STAT S DDWSTAT=DDWSTAT+1#2
  1. I DDWSTAT S DDWTO=1
  1. E D
  1. . D CUP(DDWMR+2,1)
  1. . W $P(DDGLCLR,DDGLDEL) D POS(DDWRW,DDWC)
  1. . S DDWTO=DTIME
  1. . K DDWTC
  1. Q
  1. ;
  1. CUP(Y,X) ;Cursor positioning
  1. S DY=IOTM+Y-2,DX=X-1 X IOXY
  1. Q
  1. ;
  1. POS(R,C,F) ;Pos cursor based on char pos C
  1. N DDWX
  1. S:$G(C)="E" C=$L($G(DDWL(R)))+1
  1. S:$G(F)["N" DDWN=$G(DDWL(R))
  1. S:$G(F)["R" DDWRW=R,DDWC=C
  1. ;
  1. S DDWX=C-DDWOFS
  1. I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
  1. S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
  1. Q
  1. ;
  1. SCR(C) ;Return screen number
  1. Q C-$P(DDWOFS,U,2)-1\$P(DDWOFS,U,3)+1
  1. ;
  1. ERR(DDWX) ;Error
  1. W $C(7)
  1. D MSG^DDW(DDWX) H 2 D MSG^DDW()
  1. F R *DDWX:0 E Q
  1. D POS(DDWRW,DDWC)
  1. Q