MUMPS mode

 
1
 ; Lloyd Milligan
2
 ; 03-30-2015
3
 ;
4
 ; MUMPS support for Code Mirror - Excerpts below from routine ^XUS
5
 ;
6
CHECKAV(X1) ;Check A/V code return DUZ or Zero. (Called from XUSRB)
7
 N %,%1,X,Y,IEN,DA,DIK
8
 S IEN=0
9
 ;Start CCOW
10
 I $E(X1,1,7)="~~TOK~~" D  Q:IEN>0 IEN
11
 . I $E(X1,8,9)="~1" S IEN=$$CHKASH^XUSRB4($E(X1,8,255))
12
 . I $E(X1,8,9)="~2" S IEN=$$CHKCCOW^XUSRB4($E(X1,8,255))
13
 . Q
14
 ;End CCOW
15
 S X1=$$UP(X1) S:X1[":" XUTT=1,X1=$TR(X1,":")
16
 S X=$P(X1,";") Q:X="^" -1 S:XUF %1="Access: "_X
17
 Q:X'?1.20ANP 0
18
 S X=$$EN^XUSHSH(X) I '$D(^VA(200,"A",X)) D LBAV Q 0
19
 S %1="",IEN=$O(^VA(200,"A",X,0)),XUF(.3)=IEN D USER(IEN)
20
 S X=$P(X1,";",2) S:XUF %1="Verify: "_X S X=$$EN^XUSHSH(X)
21
 I $P(XUSER(1),"^",2)'=X D LBAV Q 0
22
 I $G(XUFAC(1)) S DIK="^XUSEC(4,",DA=XUFAC(1) D ^DIK
23
 Q IEN
24
 ;
25
 ; Spell out commands
26
 ;
27
SET2() ;EF. Return error code (also called from XUSRB)
28
 NEW %,X
29
 SET XUNOW=$$HTFM^XLFDT($H),DT=$P(XUNOW,".")
30
 KILL DUZ,XUSER
31
 SET (DUZ,DUZ(2))=0,(DUZ(0),DUZ("AG"),XUSER(0),XUSER(1),XUTT,%UCI)=""
32
 SET %=$$INHIBIT^XUSRB() IF %>0 QUIT %
33
 SET X=$G(^%ZIS(1,XUDEV,"XUS")),XU1=$G(^(1))
34
 IF $L(X) FOR I=1:1:15 IF $L($P(X,U,I)) SET $P(XOPT,U,I)=$P(X,U,I)
35
 SET DTIME=600
36
 IF '$P(XOPT,U,11),$D(^%ZIS(1,XUDEV,90)),^(90)>2800000,^(90)'>DT QUIT 8
37
 QUIT 0
38
 ;
39
 ; Spell out commands and functions
40
 ;
41
 IF $PIECE(XUSER(0),U,11),$PIECE(XUSER(0),U,11)'>DT QUIT 11 ;Terminated
42
 IF $DATA(DUZ("ASH")) QUIT 0 ;If auto handle, Allow to sign-on p434
43
 IF $PIECE(XUSER(0),U,7) QUIT 5 ;Disuser flag set
44
 IF '$LENGTH($PIECE(XUSER(1),U,2)) QUIT 21 ;p419, p434
45
 Q 0
46
 ;
47