cQZSTART ; User login routine ;%ZSTART; [ 06/27/01 10:50 AM ]
G YZ
;
T1 ;Terminal ; Job ;
T2 ;At this moment, nobody is allowed to work.;
T3 ;Your session will be disconnected now!;
;
SYSTEM ; Any code here is run just once when Cache starts.
S QUIET=1 D Message("Data-M defined Startup Started")
S $ZT="SYSTEME^"_$T(+0)
S %nspc=$zu(5) ; remember current namespace
D SWNS,STUSSD("STU"),MASTER,START^cQSTART
K ^cPRINT,^cIPRINT,^cJOB,^HULP(boot),^HULP("FAX"),^HULP("SORT"),^DAMBA("%1"),^EABA("%1")
N I S I="" F S I=$O(^TEMP(I)) Q:I="" K ^(I)
N I S I="" F S I=$O(^cLOG(0,"MEMO",I)) Q:I="" K ^(I)
I $D(^cLOG(boot,"STU"))#10,+$P(^cLOG(boot,"STU"),"\"),$L($P(^cLOG(boot,"STU"),"\",2)) S $ZT="STUR^"_$T(+0) X $P(^("STU"),"\",2) S $ZT=""
STUR I $D(^$R("cQCTK1")) J ^cQCTK1
D LOGIN^cQ6("Y")
ZN %nspc ; switch back to where you came from
S QUIET=1 D Message("Data-M defined Startup Ended")
SYSTEMZ Q
;
SYSTEME S QUIET=1 D Message("Data-M defined Startup Error"_$ZE)
Q
;
LOGIN ; Any code here is run when a user logs onto Cache.
S %nspc=$zu(5) ; remember current namespace
ZN "%SYS" S SHUTDOWN=$$%swstat^SWSET(16,0) ;Shutdown in progress switch
ZN %nspc ; switch back to where you came from
I SHUTDOWN Q ;shutdown switch is set
D SWNS S NBN=$$NBN,P=$S(cs="DATAM1":9000,1:1000),O=P
I NBN'="?",'$D(^cQSYS(0,"FIXED","NBN",NBN)) D
. S O=P F S O=$O(^cQSYS(0,"DDB",O)) Q:O=""!(O-P>1) S P=O
. S P=P+1,^cQSYS(0,"DDB",P)="TELN,,"_NBN_",",^cQSYS(0,"FIXED","NBN",NBN)=P
I NBN="?" D
. S IP=$$IP I IP'="?",'$D(^cQSYS(0,"FIXED","IP",IP)) D
.. S O=P F S O=$O(^cQSYS(0,"DDB",O)) Q:O=""!(O-P>1) S P=O
.. S P=P+1,^cQSYS(0,"DDB",P)="TELN,"_IP_",,",^cQSYS(0,"FIXED","IP",IP)=P
D MASTER,QQM I $D(^cLOG(boot,"LOGIN","QT")) S QT=$TR(^("QT"),"N")
D QT S io=$$IO
I '$D(^cLOG(boot,"DEV",io))#10 S ^cLOG(boot,"DEV",io)="ZC"
I $D(^cLOG(boot,"LOGIN",io))#10 H:'^(io) G LS
CY I $D(^$R("cQQ")) B 0 U 0 R "",*K:2 U 0 I K=25 W "." R K:9 W !!!!!!!!!!!!!!!!!!!!!!!! D DATE G CY:DD_DM_DJ#$H'=K K D ^cQQ,MASTER,QQM,QT S io=$$IO
;
LS D ALLN(.N) S N="" F S N=$O(N(N)) Q:N="" K ^|N|TEMPS(boot,$J)
S io=$G(io,$$IO)
I $D(^cLOG(boot,"LOGIN",io))#10 D I $L(K) S K="G "_K X K
. S A=^cLOG(boot,"LOGIN",io),K=$P(A,"\",2) Q:'$L(K)
. S B=$P(A,"\",3) I $L(B),$ZU(90,10,B) ZN B
. I '$D(^$R($P(K,"^",2))) S K="" Q
LOGINZ Q
;
JOB ; Any code here is run when a process is started via JOB command.
JOBZ Q
;
CALLIN ; Any code here is run when a process is started via CALLIN interface.
CALLINZ Q
;
YZ Q
;
Message(Msg) ;
n (QUIET,Msg)
s $ZT="MessageE"
i QUIET=0 w !,$ztime($p($h,",",2))_" "_Msg
i $zu(9,"",Msg)
MessageE q
;
DATE S %H=1+$H,%J=%H\1461,%R=%H#1461,DJ=%J*4+1841+(%R\365),DD=%R#365,DM=1 I %R=1460 S DD=365,DJ=DJ-1
F %J=31,(%R>1154)+28,31,30,31,30,31,31,30,31,30 Q:%J'
1) S P=O
.. S P=P+1,^cQSYS(0,"DDB",P)="TELN,,"_NBN_",",^cQSYS(0,"FIXED","NBN",NBN)=P
. I NBN="?" D
.. S IP=$$IP I IP'="?",'$D(^cQSYS(0,"FIXED","IP",IP)) D
... S O=P F S O=$O(^cQSYS(0,"DDB",O)) Q:O=""!(O-P>1) S P=O
... S P=P+1,^cQSYS(0,"DDB",P)="TELN,"_IP_",,",^cQSYS(0,"FIXED","IP",IP)=P
IOSZ Q K
;
IP(I) N DDB,JOB,K,R,%v D MASTER
S I=$G(I,$I) S:I="" I=$I S JOB=$$ZJOB(I)
I JOB,$D(^cJOB(JOB,boot,"job","IP")),^("IP")'="??" Q ^("IP")
S K=$P($P($I,":"),"|",3) I $L(K),K?3(1.3N1".")1.3N Q K
Q "?"
;
NBN(I) N DDB,JOB,K,R,%v D MASTER
S I=$G(I,$I) S:I="" I=$I S JOB=$$ZJOB(I)
I JOB,$D(^cJOB(JOB,boot,"job","NBN")),^("NBN")'="??" Q ^("NBN")
S K=$P($P(I,":"),"|",3) S:K["~" K=$P(K,"~",2) I $L(K),K'?3(1.3N1".")1.3N Q $$TOUPPER^cQ9($P(K,"."))
Q "?"
;
MAC(I) N NBN,IP,JOB,K,R,%v D MASTER
S I=$G(I,$I) S:I="" I=$I S JOB=$$ZJOB(I)
I JOB,$D(^cJOB(JOB,boot,"job","MAC")),^("MAC")'="??" Q ^("MAC")
Q "?"
;
QT S QT=$G(QT,""),QTU=$S($L(QT):$F("FDE",QT),1:1) D MASTER
Q
;
ER S %=$ZE I $ZV'["MSM" S %ZTRAP="ER^"_$T(+0)
I $D(^$R("cA400")) D ^cA400
I $ZV["MSM" ZQ
I $ZV'["MSM" ZQ 1 I $ZT'="" G @$ZT
Q
;
;Some modules from cQ6
;
QQM D MASTER N QL,QU,K,L,%logctk
I $D(^cLOG(boot,"Q",cs)) D
. S Q=$P(^(cs),"\"),QM=0,QT=$P($G(@("^"_Q_"BA(39)")),"\",2)
. S:QT="N" QT="" S QTU=$S($L(QT):$F("FDE",QT),1:1)
I $D(^$R("^cA604")) D ^cA604
Q
;
;Some modules from cQ9
;
CONFIG() ;
Q 0
;
TOUPPER(X) ;Convert string to uppercase
Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
;
;Some modules from cQ14
;
ZJOB(I) N J S J=$J
ZJOBZ Q J
;
BGJOB(J) ;Background job ??
Q 0
;
;Some modules from cQ13
;
SWNS N I,NSPC
ZN "%SYS" S NSPC=$G(^cLOG(0,"NAMESPACE",0)) I $ZU(90,10,NSPC) ZN NSPC
D MASTER S io=$G(io,$$IOS)
F I=io,0 S NSPC=$G(^cLOG(boot,"NAMESPACE",I)) Q:$L(NSPC)
I $L(NSPC),$ZU(90,10,NSPC) ZN NSPC D MASTER S io=$G(io,$$IOS)
SWNSZ Q
;
STUSSD(X) ;Add entry to ^cLOG(boot,"STUSSD")
N LOG S X=$G(X,"???"),LOG="^cLOG(boot,""STUSSD"")"
D DATE,TIME,MASTER,CLEAN(LOG,45)
S @LOG@($P($H,","),$P($H,",",2))=X_"\"_DD_"."_DM_"."_DJ_"\"_TD_"\"_$H
I X="STU",$D(^$R("cANEM0")) S $ZT="STUSSDZ^"_$T(+0) D S $ZT=""
. N I,J,L S (I,J)="",L=0
. F S I=$O(@LOG@(I),-1) Q:I=""!(L>2) D
.. F S J=$O(@LOG@(I,J),-1) Q:J=""!(L>2) D
... S L=L+1 I L=2,$P(^(J),"\")=X D D1001^cANEM0($T(+0),"STUSSD")
STUSSDZ Q
;
CLEAN(LOG,X) ;Clean-up entry in LOG
N I,DAG,UUR S (DAG,UUR)="",X=$G(X,45)
F I=2:1 S DAG=$O(@LOG@(DAG),-1) Q:DAG="" D
. F I=I-1:1 S UUR=$O(@LOG@(DAG,UUR),-1) Q:UUR="" I I>X K ^(UUR)
Q
;
IN(UCI) zn UCI Q
;
ALLN(S) ; get all namespaces for same roepnaam into S
K S N I,K,L,SYS
D MASTER^cQ5,NSPC^cQ21(.SYS,1) S (K,L)=""
F S K=$O(SYS(K)) Q:K="" D
. I $TR(K,"0123456789")'=$TR(cs,"0123456789") K SYS(K)
. I $TR(K,"0123456789")=$TR(cs,"0123456789") S L=L_$P(K,$TR(cs,"0123456789"),2)_" "
S:$E(L,$L(L))=" " $E(L,$L(L))=""
F I=1:1:$L(L," ") S S($TR(cs,"0123456789")_$P(L," ",I))=""
Q L
;
ZZ ; 24.08.01 - 9 u 19 * Cache-r3.1.8