- XUSRB5 ;SFISC/STAFF - FATKAT and KAJEE support ;09/08/2005
- ;;8.0;KERNEL;**361**;Jul 10, 1995;Build 1
- Q
- ;All this code is run under an APPLICATION PROXY user.
- FATKAAT1(RET,AVCODE,CLIENTIP) ;Get division list via proxy
- ;Use AVcode to find user, Return data from VALIDAV plus DIVGET
- N DUZ ;Protect caller
- N %,X,CCOW,IEN,XUCI,XQVOL,XUVOL,XUTEXT,DIV
- S CLIENTIP=$G(CLIENTIP,$G(IO("IP"))) S:'$L(CLIENTIP) CLIENTIP="127.0.0.1" ;Use loopback if don't have real one.
- D XUVOL^XUS
- D VALIDAV(AVCODE,.DIV,CLIENTIP) ;DIVGET is done in here
- S %=RET(5)+6,CCOW=$D(DUZ("CCOW"))
- Q:'RET(0)
- I CCOW D Q
- . S RET(%+1)=1,RET(%+2)=DUZ(2)_"^"_$$NS^XUAF4(DUZ(2))_"^1"
- . Q
- I 'CCOW F X=0:1:DIV D
- . S RET(%+X)=DIV(X)
- K DUZ("CCOW")
- Q
- ;
- DIVGET(XUDIV,IEN) ;Get Division data
- N %,X
- S XUDIV=0,%=$$CHKDIV^XUS1(.XUDIV) ;Get users div.
- I 'XUDIV,(%>0)&($P(%,U,2)'>0) D
- . S DUZ(2)=+% ;Set users default div.
- . S XUDIV=1,XUDIV(1)=DUZ(2)_"^"_$$NS^XUAF4(DUZ(2))_"^1"
- I 'XUDIV,'% D
- . S DUZ(2)=+$$KSP^XUPARAM("INST")
- . S XUDIV=1,XUDIV(1)=DUZ(2)_"^"_$$NS^XUAF4(DUZ(2))_"^1"
- ;
- S %=0 D S RESULT(0)=XUDIV
- . ;RET(%) is divison array eg. ien;station name;station#
- . F S %=$O(XUDIV(%)) Q:(%'>0) D
- .. S XUDIV(%)=$P(XUDIV(%),U,1,3)_U_(+$P(XUDIV(%),U,4))
- S XUDIV(0)=XUDIV
- Q
- ;
- VALIDAV(AVCODE,DIV,CLIP) ;Check a users access
- ;Return R(0)=DUZ, R(1)=(0=OK, 1,2...=Can't sign-on for some reason)
- ; R(2)=verify needs changing, R(3)=Message, R(4)=0, R(5)=msg cnt, R(5+n)
- ; R(R(5)+6)=# div user must select from, R(R(5)+6+n)=div
- ;
- N X,XUSER,XUF,XUNOW,XUDEV,XUM,XUMSG,%1,VCCH
- S U="^",RET(0)=0,RET(1)=0,RET(2)=0,RET(3)="",RET(4)=0,RET(5)=0
- S XUF=$G(XUF,0),XUM=0,XUMSG=0,XUDEV=0
- S DUZ=0,DUZ(0)="",VCCH=0 D NOW
- D XOPT^XUS
- S XUMSG=$$INHIBIT^XUSRB() I XUMSG S XUM=1 G VAX ;Logon inhibited
- ;3 Strikes, Put J2EE server IP in as Terminal server.
- I $$LKCHECK^XUSTZIP($G(CLIP)) S XUMSG=7 G VAX ;IP locked
- ;Only allow A/V, CCOW sign-on code
- I $L(AVCODE) S DUZ=$$CHECKAV^XUS($$DECRYP^XUSRB1(AVCODE))
- D DIVGET(.DIV) ;Get DIV now
- I DUZ'>0 S XUM=1,XUMSG=4 D H 2 G VAX ;Bad AV code
- . S X=$$FAIL^XUS3(CLIP) ;Check Lockout
- S XUMSG=$$UVALID^XUS() G:XUMSG VAX ;Check User
- S VCCH=$$VCVALID^XUSRB() ;Check VC
- I DUZ>0 S XUMSG=$$POST(1)
- I XUMSG>0 S DUZ=0,VCCH=0 ;If can't sign-on, don't tell need to change VC
- I 'XUMSG,VCCH S XUMSG=12 ;Need to change VC
- VAX S:XUMSG>0 DUZ=0 ;Can't sign-on, Clear DUZ.
- S RET(0)=DUZ,RET(1)=XUM,RET(2)=VCCH,RET(3)=$S(XUMSG:$$TXT^XUS3(XUMSG),1:""),RET(4)=0
- Q
- ;
- CVC(RET,XU1) ;change VC, Return 0 = success
- N XU2,XU3,XU4 S DUZ=$G(DUZ),RET(0)=99,XU4=$$STATE^XWBSEC("XUS DUZ") S:(DUZ=0)&(XU4>0) DUZ=XU4 Q:DUZ'>0
- S U="^",XU2=$P(XU1,U,2),XU3=$P(XU1,U,3),XU1=$P(XU1,U)
- S XU1=$$DECRYP^XUSRB1(XU1),XU2=$$DECRYP^XUSRB1(XU2),XU3=$$DECRYP^XUSRB1(XU3)
- S XU3=$$BRCVC^XUS2(XU1,XU2),RET(0)=+XU3,RET(1)=$P(XU3,U,2,9)
- I XU3>0 S DUZ=0 ;Clean-up if not changed.
- I 'XU3,XU4 D KILL^XWBSEC("XUS DUZ"),POST2
- Q
- ;
- POST(CVC) ;Finish setup partition, I CVC don't log yet
- N X,XUM,XUDIV
- I '$D(XUSER(0)),DUZ D USER^XUS(DUZ)
- S XUM=$$USER Q:XUM>0 XUM ;User can't sign on for some reason.
- S RET(5)=0 ;The next line sends the post sign-on msg
- F %=1:1 Q:'$D(XUTEXT(%)) S RET(5+%)=$E(XUTEXT(%),2,256),RET(5)=%
- I '$$SHOWPOST^XUSRB S RET(5)=0 ;This line stops the send/display of the msg.
- D:'$G(CVC) POST2
- Q 0
- ;
- POST2 D:'$D(XUNOW) NOW
- D DUZ^XUS1A,SAVE^XUS1,LOG^XUS1,ABT^XQ12
- D KILL^XWBSEC("XUS XOPT"),CLRFAC^XUS3($G(IO("IP"))) ;p265
- K XUTEXT,XOPT,XUEON,XUEOFF,XUTT,XUDEV,XUSER
- Q
- ;
- NOW ;
- S U="^",XUNOW=$$NOW^XLFDT(),DT=$P(XUNOW,".")
- Q
- USER() ;
- N %B,%E,%T,I1,X1,X2
- K XUTEXT
- S XUTEXT=0,DUZ(2)=$G(DUZ(2),0)
- F I=0:0 S I=$O(^XTV(8989.3,1,"POST",I)) Q:I'>0 D SET("!"_$G(^(I,0)))
- D SET("!"),XOPT^XUS
- S %H=$P($H,",",2)
- D SET("!Good "_$S(%H<43200:"morning ",%H<61200:"afternoon ",1:"evening ")_$S($P(XUSER(1),U,4)]"":$P(XUSER(1),U,4),1:$P(XUSER(0),U,1)))
- S I1=$G(^VA(200,DUZ,1.1)),X=(+I1_"0000")
- I X D SET("! You last signed on "_$S(X\1=DT:"today",X\1+1=DT:"yesterday",1:$$FMTE^XLFDT(X,"1D"))_" at "_$E(X,9,10)_":"_$E(X,11,12))
- I $P(I1,"^",2) S I=$P(I1,"^",2) D SET("!There "_$S(I>1:"were ",1:"was ")_I_" unsuccessful attempt"_$S(I>1:"s",1:"")_" since you last signed on.")
- I $P(XUSER(0),U,12),$$PH(%H,$P(XUSER(0),U,12)) Q 17 ;Time frame
- I +$P(XOPT,U,15) S %=$P(XOPT,U,15)-($H-XUSER(1)) I %<6,%>0 D SET("! Your Verify code will expire in "_%_" days")
- ;Report new Mail
- N XUXM S %=$$NU^XMGAPI4(1,1,"XUXM") I $G(XUXM) F %=0:0 S %=$O(XUXM(%)) Q:%'>0 D SET("!"_XUXM(%))
- ;S:$P(XOPT,"^",5) XUTT=1 S DTIME=$P(XOPT,U,10)
- ;Check Multiple Sign-on allowed, X1 signed on flag, X2 0=No,1=Yes,2=1IP
- ;S X1=$P($G(^VA(200,DUZ,1.1)),U,3),X2=$P(XOPT,U,4)
- ;I 'X2,X1 Q 9 ;Multi Sign-on not allowed
- ;I X2=2 D Q:%B>0 %B ;Only from one IP
- ;. S %B=0 I '$D(IO("IP")) S:X1 %B=9 Q ;Can't tell IP,
- ;. S X1=$$COUNT(DUZ,IO("IP")),%B=$S(X1<0:9,(X1+1)>$P(XOPT,U,19):9,1:0)
- USX ;S $P(^VA(200,DUZ,1.1),U,3)=1
- ;Call XQOR to handle SIGN-ON protocall.
- ;N XUSER,XUSQUIT ;Protect ourself.
- ;S DIC="^DIC(19,",X="XU USER SIGN-ON",XUSQUIT=0
- ;D EN^XQOR
- Q 0 ;If protocol set XUSQUIT will stop sign-on.
- ;
- SET(V) ;Set into XUTEXT(XUTEXT), Also Called from XU USER SIGN-ON protocol.
- S XUTEXT=$G(XUTEXT)+1,XUTEXT(XUTEXT)=V
- Q
- ;
- PH(%T,%R) ;Check Prohibited time for R/S
- N MSG S MSG=$$PROHIBIT(%T,%R)
- I MSG S XUM(0)=$P(MSG,U,2) Q 1
- D SET("!"),SET("! "_$$EZBLD^DIALOG(30810.62)_" "_$P(MSG,U,2))
- Q 0
- ;
- PROHIBIT(%T,%R) ;See if a prohibited time, (Time from $H, restrict range)
- N XMSG,%B,%E
- S %T=%T\60#60+(%T\3600*100),%B=$P(%R,"-",1),%E=$P(%R,"-",2)
- S XMSG=$P($$FMTE^XLFDT(DT_"."_%B,"2P")," ",2,3)_" "_$$EZBLD^DIALOG(30810.61)_" "_$P($$FMTE^XLFDT(DT_"."_%E,"2P")," ",2,3)
- I $S(%E'<%B:%T'>%E&(%T'<%B),1:%T>%B!(%T<%E)) Q "1^"_XMSG ;No
- Q "0^"_XMSG
- ;
- SET1(FLAG) ;Setup for FATKAAT
- N %
- S U="^"
- D XUVOL^XUS,XOPT^XUS
- S XUDEV=0,XUIOP=""
- D GETFAC^XUS3($G(IO("IP")))
- S %=$P(XOPT,U,14)
- Q
- SET2() ;EF. Return error code
- N %,X
- S XUNOW=$$HTFM^XLFDT($H),DT=$P(XUNOW,".")
- K DUZ,XUSER
- S (DUZ,DUZ(2))=0,(DUZ(0),DUZ("AG"),XUSER(0),XUSER(1),XUTT,%UCI)=""
- S %=$$INHIBIT^XUSRB() I %>0 Q %
- S DTIME=600
- I '$P(XOPT,U,11),$D(^%ZIS(1,XUDEV,90)),^(90)>2800000,^(90)'>DT Q 8
- I $D(XRT0) S XRTN="XUS" D T1^%ZOSV
- Q 0
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXUSRB5 6338 printed Feb 18, 2025@23:39:24 Page 2
- XUSRB5 ;SFISC/STAFF - FATKAT and KAJEE support ;09/08/2005
- +1 ;;8.0;KERNEL;**361**;Jul 10, 1995;Build 1
- +2 QUIT
- +3 ;All this code is run under an APPLICATION PROXY user.
- FATKAAT1(RET,AVCODE,CLIENTIP) ;Get division list via proxy
- +1 ;Use AVcode to find user, Return data from VALIDAV plus DIVGET
- +2 ;Protect caller
- NEW DUZ
- +3 NEW %,X,CCOW,IEN,XUCI,XQVOL,XUVOL,XUTEXT,DIV
- +4 ;Use loopback if don't have real one.
- SET CLIENTIP=$GET(CLIENTIP,$GET(IO("IP")))
- if '$LENGTH(CLIENTIP)
- SET CLIENTIP="127.0.0.1"
- +5 DO XUVOL^XUS
- +6 ;DIVGET is done in here
- DO VALIDAV(AVCODE,.DIV,CLIENTIP)
- +7 SET %=RET(5)+6
- SET CCOW=$DATA(DUZ("CCOW"))
- +8 if 'RET(0)
- QUIT
- +9 IF CCOW
- Begin DoDot:1
- +10 SET RET(%+1)=1
- SET RET(%+2)=DUZ(2)_"^"_$$NS^XUAF4(DUZ(2))_"^1"
- +11 QUIT
- End DoDot:1
- QUIT
- +12 IF 'CCOW
- FOR X=0:1:DIV
- Begin DoDot:1
- +13 SET RET(%+X)=DIV(X)
- End DoDot:1
- +14 KILL DUZ("CCOW")
- +15 QUIT
- +16 ;
- DIVGET(XUDIV,IEN) ;Get Division data
- +1 NEW %,X
- +2 ;Get users div.
- SET XUDIV=0
- SET %=$$CHKDIV^XUS1(.XUDIV)
- +3 IF 'XUDIV
- IF (%>0)&($PIECE(%,U,2)'>0)
- Begin DoDot:1
- +4 ;Set users default div.
- SET DUZ(2)=+%
- +5 SET XUDIV=1
- SET XUDIV(1)=DUZ(2)_"^"_$$NS^XUAF4(DUZ(2))_"^1"
- End DoDot:1
- +6 IF 'XUDIV
- IF '%
- Begin DoDot:1
- +7 SET DUZ(2)=+$$KSP^XUPARAM("INST")
- +8 SET XUDIV=1
- SET XUDIV(1)=DUZ(2)_"^"_$$NS^XUAF4(DUZ(2))_"^1"
- End DoDot:1
- +9 ;
- +10 SET %=0
- Begin DoDot:1
- +11 ;RET(%) is divison array eg. ien;station name;station#
- +12 FOR
- SET %=$ORDER(XUDIV(%))
- if (%'>0)
- QUIT
- Begin DoDot:2
- +13 SET XUDIV(%)=$PIECE(XUDIV(%),U,1,3)_U_(+$PIECE(XUDIV(%),U,4))
- End DoDot:2
- End DoDot:1
- SET RESULT(0)=XUDIV
- +14 SET XUDIV(0)=XUDIV
- +15 QUIT
- +16 ;
- VALIDAV(AVCODE,DIV,CLIP) ;Check a users access
- +1 ;Return R(0)=DUZ, R(1)=(0=OK, 1,2...=Can't sign-on for some reason)
- +2 ; R(2)=verify needs changing, R(3)=Message, R(4)=0, R(5)=msg cnt, R(5+n)
- +3 ; R(R(5)+6)=# div user must select from, R(R(5)+6+n)=div
- +4 ;
- +5 NEW X,XUSER,XUF,XUNOW,XUDEV,XUM,XUMSG,%1,VCCH
- +6 SET U="^"
- SET RET(0)=0
- SET RET(1)=0
- SET RET(2)=0
- SET RET(3)=""
- SET RET(4)=0
- SET RET(5)=0
- +7 SET XUF=$GET(XUF,0)
- SET XUM=0
- SET XUMSG=0
- SET XUDEV=0
- +8 SET DUZ=0
- SET DUZ(0)=""
- SET VCCH=0
- DO NOW
- +9 DO XOPT^XUS
- +10 ;Logon inhibited
- SET XUMSG=$$INHIBIT^XUSRB()
- IF XUMSG
- SET XUM=1
- GOTO VAX
- +11 ;3 Strikes, Put J2EE server IP in as Terminal server.
- +12 ;IP locked
- IF $$LKCHECK^XUSTZIP($GET(CLIP))
- SET XUMSG=7
- GOTO VAX
- +13 ;Only allow A/V, CCOW sign-on code
- +14 IF $LENGTH(AVCODE)
- SET DUZ=$$CHECKAV^XUS($$DECRYP^XUSRB1(AVCODE))
- +15 ;Get DIV now
- DO DIVGET(.DIV)
- +16 ;Bad AV code
- IF DUZ'>0
- SET XUM=1
- SET XUMSG=4
- Begin DoDot:1
- +17 ;Check Lockout
- SET X=$$FAIL^XUS3(CLIP)
- End DoDot:1
- HANG 2
- GOTO VAX
- +18 ;Check User
- SET XUMSG=$$UVALID^XUS()
- if XUMSG
- GOTO VAX
- +19 ;Check VC
- SET VCCH=$$VCVALID^XUSRB()
- +20 IF DUZ>0
- SET XUMSG=$$POST(1)
- +21 ;If can't sign-on, don't tell need to change VC
- IF XUMSG>0
- SET DUZ=0
- SET VCCH=0
- +22 ;Need to change VC
- IF 'XUMSG
- IF VCCH
- SET XUMSG=12
- VAX ;Can't sign-on, Clear DUZ.
- if XUMSG>0
- SET DUZ=0
- +1 SET RET(0)=DUZ
- SET RET(1)=XUM
- SET RET(2)=VCCH
- SET RET(3)=$SELECT(XUMSG:$$TXT^XUS3(XUMSG),1:"")
- SET RET(4)=0
- +2 QUIT
- +3 ;
- CVC(RET,XU1) ;change VC, Return 0 = success
- +1 NEW XU2,XU3,XU4
- SET DUZ=$GET(DUZ)
- SET RET(0)=99
- SET XU4=$$STATE^XWBSEC("XUS DUZ")
- if (DUZ=0)&(XU4>0)
- SET DUZ=XU4
- if DUZ'>0
- QUIT
- +2 SET U="^"
- SET XU2=$PIECE(XU1,U,2)
- SET XU3=$PIECE(XU1,U,3)
- SET XU1=$PIECE(XU1,U)
- +3 SET XU1=$$DECRYP^XUSRB1(XU1)
- SET XU2=$$DECRYP^XUSRB1(XU2)
- SET XU3=$$DECRYP^XUSRB1(XU3)
- +4 SET XU3=$$BRCVC^XUS2(XU1,XU2)
- SET RET(0)=+XU3
- SET RET(1)=$PIECE(XU3,U,2,9)
- +5 ;Clean-up if not changed.
- IF XU3>0
- SET DUZ=0
- +6 IF 'XU3
- IF XU4
- DO KILL^XWBSEC("XUS DUZ")
- DO POST2
- +7 QUIT
- +8 ;
- POST(CVC) ;Finish setup partition, I CVC don't log yet
- +1 NEW X,XUM,XUDIV
- +2 IF '$DATA(XUSER(0))
- IF DUZ
- DO USER^XUS(DUZ)
- +3 ;User can't sign on for some reason.
- SET XUM=$$USER
- if XUM>0
- QUIT XUM
- +4 ;The next line sends the post sign-on msg
- SET RET(5)=0
- +5 FOR %=1:1
- if '$DATA(XUTEXT(%))
- QUIT
- SET RET(5+%)=$EXTRACT(XUTEXT(%),2,256)
- SET RET(5)=%
- +6 ;This line stops the send/display of the msg.
- IF '$$SHOWPOST^XUSRB
- SET RET(5)=0
- +7 if '$GET(CVC)
- DO POST2
- +8 QUIT 0
- +9 ;
- POST2 if '$DATA(XUNOW)
- DO NOW
- +1 DO DUZ^XUS1A
- DO SAVE^XUS1
- DO LOG^XUS1
- DO ABT^XQ12
- +2 ;p265
- DO KILL^XWBSEC("XUS XOPT")
- DO CLRFAC^XUS3($GET(IO("IP")))
- +3 KILL XUTEXT,XOPT,XUEON,XUEOFF,XUTT,XUDEV,XUSER
- +4 QUIT
- +5 ;
- NOW ;
- +1 SET U="^"
- SET XUNOW=$$NOW^XLFDT()
- SET DT=$PIECE(XUNOW,".")
- +2 QUIT
- USER() ;
- +1 NEW %B,%E,%T,I1,X1,X2
- +2 KILL XUTEXT
- +3 SET XUTEXT=0
- SET DUZ(2)=$GET(DUZ(2),0)
- +4 FOR I=0:0
- SET I=$ORDER(^XTV(8989.3,1,"POST",I))
- if I'>0
- QUIT
- DO SET("!"_$GET(^(I,0)))
- +5 DO SET("!")
- DO XOPT^XUS
- +6 SET %H=$PIECE($HOROLOG,",",2)
- +7 DO SET("!Good "_$SELECT(%H<43200:"morning ",%H<61200:"afternoon ",1:"evening ")_$SELECT($PIECE(XUSER(1),U,4)]"":$PIECE(XUSER(1),U,4),1:$PIECE(XUSER(0),U,1)))
- +8 SET I1=$GET(^VA(200,DUZ,1.1))
- SET X=(+I1_"0000")
- +9 IF X
- DO SET("! You last signed on "_$SELECT(X\1=DT:"today",X\1+1=DT:"yesterday",1:$$FMTE^XLFDT(X,"1D"))_" at "_$EXTRACT(X,9,10)_":"_$EXTRACT(X,11,12))
- +10 IF $PIECE(I1,"^",2)
- SET I=$PIECE(I1,"^",2)
- DO SET("!There "_$SELECT(I>1:"were ",1:"was ")_I_" unsuccessful attempt"_$SELECT(I>1:"s",1:"")_" since you last signed on.")
- +11 ;Time frame
- IF $PIECE(XUSER(0),U,12)
- IF $$PH(%H,$PIECE(XUSER(0),U,12))
- QUIT 17
- +12 IF +$PIECE(XOPT,U,15)
- SET %=$PIECE(XOPT,U,15)-($HOROLOG-XUSER(1))
- IF %<6
- IF %>0
- DO SET("! Your Verify code will expire in "_%_" days")
- +13 ;Report new Mail
- +14 NEW XUXM
- SET %=$$NU^XMGAPI4(1,1,"XUXM")
- IF $GET(XUXM)
- FOR %=0:0
- SET %=$ORDER(XUXM(%))
- if %'>0
- QUIT
- DO SET("!"_XUXM(%))
- +15 ;S:$P(XOPT,"^",5) XUTT=1 S DTIME=$P(XOPT,U,10)
- +16 ;Check Multiple Sign-on allowed, X1 signed on flag, X2 0=No,1=Yes,2=1IP
- +17 ;S X1=$P($G(^VA(200,DUZ,1.1)),U,3),X2=$P(XOPT,U,4)
- +18 ;I 'X2,X1 Q 9 ;Multi Sign-on not allowed
- +19 ;I X2=2 D Q:%B>0 %B ;Only from one IP
- +20 ;. S %B=0 I '$D(IO("IP")) S:X1 %B=9 Q ;Can't tell IP,
- +21 ;. S X1=$$COUNT(DUZ,IO("IP")),%B=$S(X1<0:9,(X1+1)>$P(XOPT,U,19):9,1:0)
- USX ;S $P(^VA(200,DUZ,1.1),U,3)=1
- +1 ;Call XQOR to handle SIGN-ON protocall.
- +2 ;N XUSER,XUSQUIT ;Protect ourself.
- +3 ;S DIC="^DIC(19,",X="XU USER SIGN-ON",XUSQUIT=0
- +4 ;D EN^XQOR
- +5 ;If protocol set XUSQUIT will stop sign-on.
- QUIT 0
- +6 ;
- SET(V) ;Set into XUTEXT(XUTEXT), Also Called from XU USER SIGN-ON protocol.
- +1 SET XUTEXT=$GET(XUTEXT)+1
- SET XUTEXT(XUTEXT)=V
- +2 QUIT
- +3 ;
- PH(%T,%R) ;Check Prohibited time for R/S
- +1 NEW MSG
- SET MSG=$$PROHIBIT(%T,%R)
- +2 IF MSG
- SET XUM(0)=$PIECE(MSG,U,2)
- QUIT 1
- +3 DO SET("!")
- DO SET("! "_$$EZBLD^DIALOG(30810.62)_" "_$PIECE(MSG,U,2))
- +4 QUIT 0
- +5 ;
- PROHIBIT(%T,%R) ;See if a prohibited time, (Time from $H, restrict range)
- +1 NEW XMSG,%B,%E
- +2 SET %T=%T\60#60+(%T\3600*100)
- SET %B=$PIECE(%R,"-",1)
- SET %E=$PIECE(%R,"-",2)
- +3 SET XMSG=$PIECE($$FMTE^XLFDT(DT_"."_%B,"2P")," ",2,3)_" "_$$EZBLD^DIALOG(30810.61)_" "_$PIECE($$FMTE^XLFDT(DT_"."_%E,"2P")," ",2,3)
- +4 ;No
- IF $SELECT(%E'<%B:%T'>%E&(%T'<%B),1:%T>%B!(%T<%E))
- QUIT "1^"_XMSG
- +5 QUIT "0^"_XMSG
- +6 ;
- SET1(FLAG) ;Setup for FATKAAT
- +1 NEW %
- +2 SET U="^"
- +3 DO XUVOL^XUS
- DO XOPT^XUS
- +4 SET XUDEV=0
- SET XUIOP=""
- +5 DO GETFAC^XUS3($GET(IO("IP")))
- +6 SET %=$PIECE(XOPT,U,14)
- +7 QUIT
- SET2() ;EF. Return error code
- +1 NEW %,X
- +2 SET XUNOW=$$HTFM^XLFDT($HOROLOG)
- SET DT=$PIECE(XUNOW,".")
- +3 KILL DUZ,XUSER
- +4 SET (DUZ,DUZ(2))=0
- SET (DUZ(0),DUZ("AG"),XUSER(0),XUSER(1),XUTT,%UCI)=""
- +5 SET %=$$INHIBIT^XUSRB()
- IF %>0
- QUIT %
- +6 SET DTIME=600
- +7 IF '$PIECE(XOPT,U,11)
- IF $DATA(^%ZIS(1,XUDEV,90))
- IF ^(90)>2800000
- IF ^(90)'>DT
- QUIT 8
- +8 IF $DATA(XRT0)
- SET XRTN="XUS"
- DO T1^%ZOSV
- +9 QUIT 0
- +10 ;